Orchard源码分析(5.2):BeginRequest事件处理(DefaultOrchardHost.BeginRequest方法)
2012-10-18 11:49
246 查看
BeginRequest事件处理的作用是确保所有Shell已经加载,或者在扩展有变化的时候重新加载。[align=left] void IOrchardHost .BeginRequest() {[/align][align=left] Logger.Debug( "BeginRequest");[/align][align=left] BeginRequest();[/align][align=left] }[/align][align=left] protected virtual void BeginRequest() {[/align][align=left] // Ensure all shell contexts are loaded, or need to be reloaded if[/align][align=left] // extensions have changed[/align][align=left] MonitorExtensions();[/align][align=left] BuildCurrent();[/align][align=left] StartUpdatedShells();[/align][align=left] }[/align][align=left][/align][align=left]通过对IOrchardHost.Initialize方法的分析对MonitorExtensions和BuildCurrent方法就不陌生了。这里主要关注一下StartUpdateShells方法:[/align][align=left] void StartUpdatedShells() {[/align][align=left] lock (_syncLock) {[/align][align=left] if (_tenantsToRestart.Any()) {[/align][align=left] foreach (var settings in _tenantsToRestart.Distinct().ToList()) {[/align][align=left] ActivateShell(settings);[/align][align=left] }[/align][align=left]
[/align][align=left] _tenantsToRestart = Enumerable.Empty<ShellSettings >();[/align][align=left] }[/align][align=left] }[/align][align=left] }[/align][align=left]_tenantsToRestart是一个ShellSettings的集合:[/align][align=left] private IEnumerable <ShellSettings> _tenantsToRestart;[/align][align=left] [/align][align=left]该 方法的作用是重新激活Shell。在Orchard中,提出子站点(Tenant)的概念,目的是为了增加站点密度,即一个应用程序域可以有多个子站点。 Shell是子站点(Tenant)级的单例,换句话说Shell代表了子站点。当某些对Orchard的配置改变,而这种改变只是针对某个或某些 Shell,没必要重新启动整个应用程序的时候,可以通过这种方式来重新激活Shell。举个形象点的例子,我们在Windows安装或更新应用程序的 后,有时候我们需要重启操作系统,而有的时候我们只需要重新启动应用程序就可以了。[/align][align=left][/align][align=left]关于Shell,我们有专门的篇幅来介绍,包括Shell是什么及其作用、更详细创建及激活操作分析。[/align][align=left]相关类型:[/align]Orchard.Environment.DefaultOrchardHost : IOrchardHost
[/align][align=left] _tenantsToRestart = Enumerable.Empty<ShellSettings >();[/align][align=left] }[/align][align=left] }[/align][align=left] }[/align][align=left]_tenantsToRestart是一个ShellSettings的集合:[/align][align=left] private IEnumerable <ShellSettings> _tenantsToRestart;[/align][align=left] [/align][align=left]该 方法的作用是重新激活Shell。在Orchard中,提出子站点(Tenant)的概念,目的是为了增加站点密度,即一个应用程序域可以有多个子站点。 Shell是子站点(Tenant)级的单例,换句话说Shell代表了子站点。当某些对Orchard的配置改变,而这种改变只是针对某个或某些 Shell,没必要重新启动整个应用程序的时候,可以通过这种方式来重新激活Shell。举个形象点的例子,我们在Windows安装或更新应用程序的 后,有时候我们需要重启操作系统,而有的时候我们只需要重新启动应用程序就可以了。[/align][align=left][/align][align=left]关于Shell,我们有专门的篇幅来介绍,包括Shell是什么及其作用、更详细创建及激活操作分析。[/align][align=left]相关类型:[/align]Orchard.Environment.DefaultOrchardHost : IOrchardHost
相关文章推荐
- Orchard源码分析(5.2):BeginRequest事件处理(DefaultOrchardHost.BeginRequest方法)
- Orchard源码分析(5.3):EndRequest事件处理(DefaultOrchardHost.EndRequest方法)
- Orchard源码分析(5.3):EndRequest事件处理(DefaultOrchardHost.EndRequest方法)
- Orchard源码分析(5.1):Host初始化(DefaultOrchardHost.Initialize方法)
- Orchard源码分析(5.1):Host初始化(DefaultOrchardHost.Initialize方法)
- 源码分析为什么requestDisallowInterceptTouchEvent(true)能阻止父View拦截事件
- monkey源码分析之事件注入方法变化(api16之后)
- Redis源码分析-基础功能(事件处理)
- Redis源码分析笔记5-事件处理组件AE
- Orchard源码分析(5):Host相关(Orchard.Environment.DefaultOrchardHost类)
- monkey源码分析之事件注入方法变化
- Redis学习——ae事件处理源码分析
- Afinal的IOC原理-通过注解方法是绑定UI和事件源码分析
- View事件处理源码分析
- EventBus源码分析(二):register方法保存事件的订阅者列表(2.4版本)
- EventBus源码分析(三):post方法发布事件【获取事件的所有订阅者,反射调用订阅者事件处理方法】(2.4版本)
- jQuery源码分析-10事件处理-Event-DOM-ready
- Android触摸事件分发处理机制详解与源码分析一(View篇)
- Tomcat源码分析(四)------ Request和Response处理的全过程 .
- jQuery 1.9.1源码分析系列(十)事件系统之主动触发事件和模拟冒泡处理