幸福框架:模塊化開發


什么是模塊

模塊 = 后台邏輯(DLL)+ 顯示邏輯(靜態資源)+ 數據庫 + 其它初始化邏輯。

如何識別模塊和通知模塊各種事件

識別模塊

1 [assembly: Happy.Bootstrap.ParticipateInBootstrap]

監聽啟動事件

 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 Happy.Bootstrap;
 9 
10 namespace Happy.Example
11 {
12     public sealed class BootstrapListener : IBootstrapListener
13     {
14         public void Start(IBootstrapService bootstrapService)
15         {
16             File.WriteAllText(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log.txt"), "模塊已經啟動");
17         }
18     }
19 }

如何安裝模塊

  • 手工安裝。
  • 模塊自己自動安裝。
  • 采用xml格式描述模塊,然后由安裝程序自動安裝。

這個是后話,先不介紹了。

宿主的啟動

 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.Web.Bootstrap;
12 using Happy.Event.Bootstrap;
13 using Happy.Domain.Bootstrap;
14 using Happy.Command.Bootstrap;
15 using Happy.Application.Bootstrap;
16 using Happy.Application;
17 using Happy.Application.PessimisticLock;
18 
19 namespace Happy.Web.Mvc.Host
20 {
21     // Note: For instructions on enabling IIS6 or IIS7 classic mode, 
22     // visit http://go.microsoft.com/?LinkId=9394801
23     public class MvcApplication : System.Web.HttpApplication
24     {
25         protected void Application_Start()
26         {
27             BootstrapService
28              .Current
29              .UseRegisterServiceByConventionPlug()
30                 .UseEventSubscriberRegister()
31                 .UseDomainLayerRegister(ServiceLifecycle.PerRequest)
32                 .UseCommandRegister()
33                 .UseApplicationLayerRegister()
34                 .Done()
35              .IntegrateWithMvc()
36              .IntegrateWithExtJs()
37              .Start();
38 
39             AreaRegistration.RegisterAllAreas();
40 
41             WebApiConfig.Register(GlobalConfiguration.Configuration);
42             FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
43             RouteConfig.RegisterRoutes(RouteTable.Routes);
44         }
45     }
46 }

宿主需要提供的服務

  • IOC容器服務。
  • 自動注冊服務。
  • 元數據管理服務。
  • 內置常用模塊:導航、權限和流程。

備注

模塊化開發會遇到很多問題,不過有些問題可以作為一個限制,比如可以這樣限制一下:一、同一個組件只允許一個版本;二、所有DLL都部署到bin中,否則你自己加載DLL和重寫ControllerFactory。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM