zoukankan      html  css  js  c++  java
  • 幸福框架:模块化开发

    什么是模块

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

  • 相关阅读:
    Open-Drain与Push-Pull【转】
    1.Linux电源管理-休眠与唤醒【转】
    MII、RMII、GMII接口的详细介绍【转】
    MII与RMII接口的区别【转】
    SPI总线协议及SPI时序图详解【转】
    Suspend to RAM和Suspend to Idle分析,以及在HiKey上性能对比【转】
    C实战:项目构建Make,Automake,CMake【转】
    Linux 下的dd命令使用详解(摘录)【转】
    PHP数组常用函数
    Linux收藏
  • 原文地址:https://www.cnblogs.com/happyframework/p/3142276.html
Copyright © 2011-2022 走看看