简单工厂模式.抽象工厂模式和适配器模式 依赖倒置原则也叫依赖倒转原则,Dependence Inversion Principle,对抽象进行编程,不要对实现进行编程. A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象. B.抽象不应该依赖于具体,具体应该依赖于抽象. 面相对象设计将就高内聚.低耦合,高内聚指功能相关性很强的紧密的结合在一起,遵守单一职责原则:耦合是指不同模块或不同层次代码的联系程度,耦合性越低,模块独立性越强,耦合性越高,模块独立性越弱,高耦合的软件,往往修改一处…
本地化与国际化 基本上相关代码都在在Orchard.Framework.Localization中. T("english")是如何调用到WebViewPage.cs中的Localizer T的. 1.LocalizationModule:Autofac.Module 此类主要完成属性注入功能 通过Override Load(ContanerBuilder builder)来注册Text与Itext类,使在每次调用或加载时,新建一个Text对象. 通过AttachTocomponent…
参考: http://www.orchardch.com/Blog/20120830071458 1. host.Initialize(); private static IOrchardHost HostInitialization(HttpApplication application) { var host = OrchardStarter.CreateHost(MvcSingletons); host.Initialize(); // initialize shells to speed…
2014年5月26日 10:26:31 晴 ASP.NET 接收到对应用程序中任何资源的第一个请求时,名为ApplicationManager 的类会创建一个应用程序域.应用程序域为全局变量提供应用程序隔离,并允许单独卸载每个应用程序. 在应用程序域中,将为名为 HostingEnvironment 的类创建一个实例,该实例提供对有关应用程序的信息(如存储该应用程序的文件夹的名称)的访问 为每个请求创建asp.net核心对象.Httpcontext ,HttpRequest, HttpRespo…
概述 Host 是应用程序域级的单例,代表了Orchard应用程序.其处理应用程序生命周期中的初始化.BeginRequest事件.EndRequest事件等. 可以简单理解为HttpApplication的功能转移到了Host身上.从源码角度上看,Host对应的是实现了IOrchardHost接口的 DefaultOrchardHost类. 回顾一下之前对Orchard.Web.MvcApplication类的分析.在Orchard启动时,会创建一个DefaultOrchardHost对象:…
1. Eureka源码探索(一)-客户端服务端的启动和负载均衡 1.1. 服务端 1.1.1. 找起始点 目前唯一知道的,就是启动Eureka服务需要添加注解@EnableEurekaServer,但是暂时找不到它被使用的地方 看日志,明显有打印discovery client,服务端同时也用作客户端,因为它可以相互注册,以下是自动配置类 知道了客户端有自动配置类,可以想象服务端也应该有,找到相应的包,发现果然有 1.1.2. 服务初始化 启动初始化 接下来是个发布订阅方法,发布对象继承了Spr…
Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱,虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻底的.这篇文章将通过分析golang的源代码来讲解协程的实现原理. 这个系列分析的golang源代码是Google官方的实现的1.9.2版本, 不适用于其他版本和gccgo等其他实现,运行环境是Ubuntu 16.04 LTS 64bit. 核心概念 要理解协程的实现, 首先需要了解go中的三个非常重…
Golang从1.5开始引入了三色GC, 经过多次改进, 当前的1.9版本的GC停顿时间已经可以做到极短.停顿时间的减少意味着"最大响应时间"的缩短, 这也让go更适合编写网络服务程序.这篇文章将通过分析golang的源代码来讲解go中的三色GC的实现原理. 这个系列分析的golang源代码是Google官方的实现的1.9.2版本, 不适用于其他版本和gccgo等其他实现,运行环境是Ubuntu 16.04 LTS 64bit.首先会讲解基础概念, 然后讲解分配器, 再讲解收集器的实现…
GO可以说是近几年最热门的新兴语言之一了, 一般人看到分布式和大数据就会想到GO,这个系列的文章会通过研究golang的源代码来分析内部的实现原理,和CoreCLR不同的是, golang的源代码已经被很多人研究过了, 我将会着重研究他们未提到过的部分. 另一点和CoreCLR不同的是, golang的源代码非常易懂, 注释也非常的丰富,很明显Google的工程师在写代码的时候有考虑其他人会去看这份代码. 尽管代码非常易懂, 研究它们还是需要实际运行和调试才能得到更好的理解,这个系列分析的gol…
概述 关于ASP.NET MVC中路由有两个基本核心作用,一是通过Http请求中的Url参数等信息获取路由数据(RouteData),路由数据包含了area.controller.action的名称等信息.只有获取了匹配的路由数据,才有可能转入ASP.NET MVC管道:二是根据由规则生成Url,比如要根据某些数据生成View上显示的链接.   Orchard对路由进行扩展主要基于如下原因: (1).路由定义在各个模块中.在Orchard应用程序初始化时将分散在各个模块的路由定义收集起来统一注册…