Blame view

泰额版/Food Labeling Management Code/Yi.Doc.Md/02.框架功能模块教程/01.模块化.md 1.88 KB
59e51671   “wangming”   1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
  ## 简介
  通常,在Asp.NetCore中,**容器组装**过程 与 **管道模型组装** 过程 会将启动类文件变的非常长,同时也需要明确各个模块的依赖关系
  例如:
  我们需要仓储的功能,但是仓储的实现需要依赖Sqlsugar
  
  ***老的引入写法***
  ``` cs
  service.AddUow();
  service.AddSqlsugar();
  ......
  var app=service.Build();
  app.UseSqlsugar();
  ......
  ```
  这个文件会变得非常长,同时如果有顺序依赖关系的模块,还需按顺序组装
  例如:
  在Asp.NetCore,我们只有先鉴权才能进行授权操作
  当模块越来越多,我们维护起来将越来越困难,所以引入了模块化功能
  
  ## 使用
  每一个类库都可以有自己的模块化文件,我们通常命名为类库全名+Module
  例如:`Yi.Template.Application`的模块类叫做`YiTemplateApplicationModule`
  
  另外,该模块类实现`AbpModule`基类
  ConfigureServices:用来配置容器服务
  OnApplicationInitialization:管道模型组装后执行
  
  Abp内置`DependsOn`特性标签,可进行维护各个模块之间的依赖关系
  
  ## 完整例子
  创建模块化文件:
  ``` cs
  using Volo.Abp.Caching;
  using Volo.Abp.Domain;
  using Volo.Abp.Modularity;
  using Yi.Abp.Domain.Shared;
  using Yi.Framework.Bbs.Domain;
  using Yi.Framework.Mapster;
  using Yi.Framework.Rbac.Domain;
  
  namespace Yi.Abp.Domain
  {
      [DependsOn(
          typeof(YiAbpDomainSharedModule),
         
  
          typeof(YiFrameworkRbacDomainModule),
          typeof(YiFrameworkBbsDomainModule),
  
          typeof(YiFrameworkMapsterModule),
          typeof(AbpDddDomainModule),
          typeof(AbpCachingModule)
          )]
      public class YiAbpDomainModule : AbpModule
      {
          public virtual void ConfigureServices(ServiceConfigurationContext context)
          {
          }
  
          public virtual void OnPreApplicationInitialization(ApplicationInitializationContext context)
          {
          }
      }
  }
  ```