幸福框架:模块化开发

什么是模块

模块 = 后台逻辑(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。

 

你可能感兴趣的:(模块化)