请注意,本站并不支持低于IE8的浏览器,为了获得最佳效果,请下载最新的浏览器,推荐下载 Chrome浏览器
欢迎光临。交流群:166852192

源码学习


Orchard源码分析(1):Orchard架构

源码分析应该做到庖丁解牛,而不是以管窥豹或瞎子摸象。所以先对Orchard架构有个整体的了解,以及对一些基本概念有所认识。创建一个基于Web的CMS(内容管理系统)不同于创建一个普通的Web应用程序:它更像是建立一个应用程序容器。 这样一个系统,必须拥有优秀的开放性、可扩展性。但是作为一个可扩展系统,它可能会面临应用程序可用性的挑战:在系统中的核心模块与未知的未来模块的组合,包括用户界面级别的整合 …

Orchard源码分析(2):Orchard.Web.MvcApplication类(Global)

概述分析一个的ASP.NET项目源码,首先可以浏览其项目结构,了解项目之间的依赖关系,可以大致一窥项目的全貌。其次可以浏览Web.config和Global.asax文件,可以找到应用程序的入口。本文主要分析Orchard项目的Global.asax文件,而真正的分析入口点在Global.asax的CodeBehind文件Global.asax.cs中,即Orchard.Web. …

Orchard源码分析(3):Orchard.WarmupStarter程序集

概述Orchard.WarmupStarter程序集包含三个类:WarmupUtility、WarmupHttpModule和Starter<T>。该程序集主要为Orchard应用启动初始化服务。一、WarmupUtility类该类是一个静态工具类,包含一个静态只读字段WarmupFilesPath,以及三个方法EncodeUrl、ToUrlString和DoBeginRequest。1、 …

Orchard源码分析(4):Orchard.Environment.OrchardStarter类

概述OrchardStarter类是个静态类,主要作用是配置Autofac容器以及创建IOrchardHost(DefaultOrchardHost)对象,分别对应CreateHost和CreateHostContainer这两个静态方法。一、CreateHost方法CreateHost方法接受一个委托参数,返回一个IOrchardHost(Orchard宿主)型实例:    public  …

Orchard源码分析(4.1):Orchard.Environment.CollectionOrderModule类

CollectionOrderModule类是一个Autofac模块(Module,将一系列组件和相关的功能包装在一起),而非Orchard模块。其作用是保证多个注册到容器的组件能按FIFO(First In First Out)的顺序提取。下面举例说明:1、创建ICustomerService接口:    public interface ICustomerService { }  2、创建两个 …

Orchard源码分析(4.2):Orchard.Logging.LoggingModule类

与CollectionOrderModule一样,LoggingModule也是一个Autofac模块。它以属性注入的方式给需要日志服务的对象设置Logger。 如果一个类有ILogger型的公共可写实例属性(忽略索引),Autofac容器在解析(Resolve)该类的时候,将注入一个ILogging实现类的实例。Orchard默认会注入一个CastleLogger对象。当然Orchard也允许一 …

Orchard源码分析(4.3):Orchard.Events.EventsModule类(Event Bus)

概述采用Event Bus模式(事件总线),可以使观察者模式中的观察者和被观察者实现解耦。在.Net 中使用观察者模式,可以使用事件(委托)和接口(类)。Orchard Event Bus使用的是接口的形式,这样方便将“观察者”注册到Autofac容器中。EventsModule模块是构成Orchard Event Bus的一部分。这里先分开分析Orchard Event Bus涉及的类型和知识点 …

Orchard源码分析(4.4):Orchard.Caching.CacheModule类

概述CacheModule也是一个Autofac模块。一、CacheModule类CacheModule将DefaultCacheManager注册为ICacheManager:     public class CacheModule : Module {         protected override void Load( ContainerBuilder builder) {      …

Orchard源码分析(5.1):Host初始化(IOrchardHost.Initialize方法)

概述Orchard作为一个可扩展的CMS系统,需要在初始化或运行时加载一些模块(Modules)或主题(Themes),这些模块或主题统称扩展(Extensions)。在初始化过程中会对扩展进行设置:DefaultOrchardHost.SetupExtensions方法。当添加新的扩展、删除扩展、修改扩展源码后,需要通知扩展加载器(Extension Loader)重新加载或完成一些清理工作,所 …

Orchard源码分析(5.2):BeginRequest事件处理(DefaultOrchardHost.BeginRequest方法)

BeginRequest事件处理的作用是确保所有Shell已经加载,或者在扩展有变化的时候重新加载。         void IOrchardHost .BeginRequest() {            Logger.Debug( BeginRequest);            BeginRequest();        }          protected virtual  …

Orchard源码分析(5.3):EndRequest事件处理(DefaultOrchardHost.EndRequest方法)

EndRequest事件处理的作用是处理完处理引擎(ProcessingEngine)中的任务(Task)。        void IOrchardHost .EndRequest() {            Logger.Debug( EndRequest);            EndRequest();        }           protected virtual  …

Orchard源码分析(6):Shell相关

概述在Orchard中,提出子站点(Tenant)的概念,目的是为了增加站点密度,即一个应用程序域可以有多个子站点。Shell是子站点(Tenant)级的单例,换句话说Shell代表了子站点。对比来看,Host是应用程序域级的单例,代表了Orchard应用程序。本文将分析Shell相关的各种类型。一、获取ShellSettings在DefaultOrchardHost类的 …

Orchard源码(Application_Start)异步委托调用

ASP.NET 接收到对应用程序中任何资源的第一个请求时,名为ApplicationManager 的类会创建一个应用程序域。应用程序域为全局变量提供应用程序隔离,并允许单独卸载每个应用程序。- 在应用程序域中,将为名为 HostingEnvironment 的类创建一个实例,该实例提供对有关应用程序的信息(如存储该应用程序的文件夹的名称)的访问- 为每个请求创建asp.net核心对象。 …


作者原创内容不容易,如果觉得内容不错,请点击右侧“打赏”,赏俩给作者花花,也算是对作者付出的肯定,也可以鼓励作者原创更多更好内容。
更多详情欢迎到QQ群 166852192 交流。