系统的启动过程需要管理,常见的任务有:

  • 初始化需要Ioc容器。
  • 初始化全局配置。
  • 通知模块执行初始化工作。

在ASP.NET MVC中可以这样用:

Code Snippet
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Http;
  6. using System.Web.Mvc;
  7. using System.Web.Routing;
  8. using System.Threading;
  9.  
  10. using Happy.Bootstrap;
  11. using Happy.Infrastructure.Unity;
  12.  
  13. namespace Happy.Web.Mvc.Host
  14. {
  15.     // Note: For instructions on enabling IIS6 or IIS7 classic mode,
  16.     // visit http://go.microsoft.com/?LinkId=9394801
  17.     public class MvcApplication : System.Web.HttpApplication
  18.     {
  19.         protected void Application_Start()
  20.         {
  21.             /****************************************启动过程配置****************************************/
  22.  
  23.             BootstrapService
  24.              .Current
  25.              .IntegrateWithUnity() //使用Unity作为Ioc容器。
  26.              .UseRegisterServiceByConventionPlug() //使用按照约定注册服务插件,会自动帮你执行注册。
  27.                 .UseEventSubscriberRegister() //注册所有的EventListener。
  28.                 .UseUnitOfWorkRegister() //注册所有的UnitOfWork。
  29.                 .Done() //完成配置。
  30.              .IntegrateWithMvc() //和Mvc进行集成,使用Ioc实例化Controller。
  31.              .IntegrateWithExtJs() //和ExtJs进行集成。
  32.              .Start(); //启动。
  33.  
  34.             /****************************************启动过程配置****************************************/
  35.  
  36.             AreaRegistration.RegisterAllAreas();
  37.  
  38.             WebApiConfig.Register(GlobalConfiguration.Configuration);
  39.             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
  40.             RouteConfig.RegisterRoutes(RouteTable.Routes);
  41.         }
  42.     }
  43. }

 

在Start()方法执行后,会通知加载的模块执行初始化工作,这个过程需要这些模块的配合,配合非常简单,只要在对应的模块中加一个Attribute就行了,代码如下:

Code Snippet
  1. [assembly: Happy.Bootstrap.ParticipateInBootstrap]

 

监听程序可以有多个,只要实现指定的接口就行了,代码如下:

Code Snippet
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.IO;
  7.  
  8. using Common.Logging;
  9.  
  10. using Happy.Bootstrap;
  11.  
  12. namespace Happy.Example.Bootstrap
  13. {
  14.      internal sealed class BootstrapListener : IBootstrapListener
  15.     {
  16.          public void Start(IBootstrapService bootstrapService)
  17.         {
  18.              LogManager.GetCurrentClassLogger().Info("程序启动后,会执行此处的代码。");
  19.         }
  20.     }
  21. }

 

启动程序后,就可以看到日志输出了。

Last edited Jul 5, 2013 at 9:28 AM by happyframework, version 8

Comments

No comments yet.