iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NETCoreZero模块系统讲解
  • 142
分享到

ASP.NETCoreZero模块系统讲解

2024-04-02 19:04:59 142人浏览 八月长安
摘要

简介 在abp中, 模板的定义就是一个类, 只需要继承 AbpModule, 该类可以通过nuget包搜索 ABP 安装。 下面演示在应用程序或类库中, 定义一个

简介

abp中, 模板的定义就是一个类, 只需要继承 AbpModule, 该类可以通过nuget包搜索 ABP 安装。

下面演示在应用程序或类库中, 定义一个模块:

 public class ApplicationModule : AbpModule
    {
        public override void Initialize()
        {
            iocManager.ReGISterAssemblyByConvention(typeof(ApplicationModule).GetAssembly());
        }
    }

说明: 关于IocManager.RegisterAssemblyByConvention的作用, 则是将当前程序集模块注册到容器当中, 作为一个模块, 常见的是暴露模块对应的服务,
而其中所有的服务, 都是按照声明周期而声明, 例如: ITransientDependency ,ISingletonDependency。

下面展示了IocManager.RegisterAssemblyByConvention 执行的部分细节:

public void RegisterAssembly(IConventionalRegistrationContext context)
{
            //Transient
            context.IocManager.IocContainer.Register(
                Classes.FromAssembly(context.Assembly)
                    .IncludeNonPublicTypes()
                    .BasedOn<ITransientDependency>()
                    .If(type => !type.GetTypeInfo().IsGenericTypeDefinition)
                    .WithService.Self()
                    .WithService.DefaultInterfaces()
                    .LifestyleTransient()
                );

            //Singleton
            context.IocManager.IocContainer.Register(
                Classes.FromAssembly(context.Assembly)
                    .IncludeNonPublicTypes()
                    .BasedOn<ISingletonDependency>()
                    .If(type => !type.GetTypeInfo().IsGenericTypeDefinition)
                    .WithService.Self()
                    .WithService.DefaultInterfaces()
                    .LifestyleSingleton()
                );

            //...
}

常见的方法

在AbpModule中, 定义了几组方法, 分别在应用程序模块加载的前后进行, 如下:

        public virtual void Initialize();
        public virtual void PostInitialize();
        public virtual void PreInitialize();
        public virtual void Shutdown();
  • Initialize : 通常, 这里用于注册程序集依赖选项
  • PostInitialize : 初始化最后调用
  • PreInitialize : 初始化之前调用
  • Shutdown : 当应用程序关闭时调用

模块依赖

通常来讲, 一个模块往往依赖与一个或者多个模块, 这里, 也涉及到了模块的加载生命周期。
假设: 模块A依赖于模块B, 那么意味着模块B会先于模块A初始化。

关于模块之间的依赖, 则可以通过特性的方式 DependsOn 为模块显示声明, 如下所示:

[DependsOn(typeof(BModule))]
public class AModule : AbpModule
{
    public override void Initialize()
    {
        //...
    }
}

模块加载

任何模块都依赖于启动模块进行加载, 这很常见, 例如机箱中的各个模块: 内存、硬盘、显卡、电源。 都需要通电的过程, 让他们进行整个启动过程。
Abp 则依赖于 AbpBootstrapper 来进行调用初始化, 可以通过 Initialize 方法加载。

 public static class ApplicationBootstrapper
    {
        public static AbpBootstrapper AbpBootstrapper { get; private set; }

       public static void Init(){
         //...
         AbpBootstrapper.Initialize();
       }
    }

同样, 模块也可以读取指定文件夹路径的方式进行加载模块, 如下所示:

services.AddAbp<MyStartupModule>(options =>
{
    options.PlugInSources.Add(new FolderPlugInSource(@"C:\MyPlugIns"));
});

or

services.AddAbp<MyStartupModule>(options =>
{
    options.PlugInSources.AddFolder(@"C:\MyPlugIns");
});

查看更多

到此这篇关于ASP.net core Zero模块系统的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: ASP.NETCoreZero模块系统讲解

本文链接: https://www.lsjlt.com/news/139212.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ASP.NETCoreZero模块系统讲解
    简介 在ABP中, 模板的定义就是一个类, 只需要继承 AbpModule, 该类可以通过nuget包搜索 ABP 安装。 下面演示在应用程序或类库中, 定义一个...
    99+
    2024-04-02
  • python模块讲解
    一、模块分类:1.标准库模块:python自带的,直接使用import可直接使用;2.第三方库:外部的使用,需要先下载(pip install module_name)3.程序自定义模块:自己定义的模块 二、模块调用(import)的流程1...
    99+
    2023-01-31
    模块 python
  • python paramiko模块讲解
    Windows下有很多非常好的SSH客户端,比如Putty。在Python的世界里,你可以使用原始套接字和一些加密函数创建自己的SSH客户端或服务端,但如果有现成的模块,为什么还要自己实现呢。使用Paramiko库中的PyCrypto能够让...
    99+
    2023-01-31
    模块 python paramiko
  • Python23 内置模块讲解
    模块的分类 参考博客http://www.cnblogs.com/alex3714/articles/5161349.html python中的模块分为三大类: 1.标准库(内置模块) 2.开源模块(第三方模块) 3.自定义模块(自己写...
    99+
    2023-01-31
    模块
  • python random模块的详细讲解
    1.random()方法random.random()方法返回的是[0,1)之间的浮点数 >>> import random c = random.random()print c 0.311067669783 ...
    99+
    2023-01-31
    模块 详细 python
  • Python常用时间模块讲解
    一、常用的时间格式1.时间戳格式,例如:t = 1523197272.9467547(s),单位为秒;2.结构化时间格式,例如:t=time.struct_time(tm_year=2018,tm_mon=4,tm_mday=8,tm_ho...
    99+
    2023-01-31
    模块 常用 时间
  • erp系统工资模块
    ERP系统工资模块是指企业通过引入一套专门用于管理人力资源的软件系统,来实现对员工薪资、绩效考核、福利待遇等方面的管理和控制。它不仅能够提高企业的管理水平和效率,还能够有效地改善员工的工作环境和福利待遇,从而提高员工的工作积极性和满意度。E...
    99+
    2024-01-19
    模块 工资 系统
  • NodeJs内置模块超详细讲解
    目录一、fs文件系统模块1、fs.readFile()读取文件2、fs.writeFile()写入文件3、fs路径问题二、path路径模块1、path.join()拼接路径2、pat...
    99+
    2023-01-10
    NodeJs内置模块 NodeJs内置模块介绍 NodeJs内置模块有哪些
  • Node.JS中的模块、exports和module讲解
    目录模块核心模块文件模块基本数据类型引用数据类型exports和module.exports的关系模块 分为两大类 核心模块 由node引擎提供的模块核心模块的标识就是模块的名字 v...
    99+
    2023-01-11
    node.js模块 exports和module node.js exports和module
  • 深入解析 node.js 操作系统模块:解锁系统掌控力
    模块概述 操作系统模块通过一系列方法和属性,提供了对操作系统功能的访问。其中包括: os.arch():返回操作系统的体系结构。 os.platform():返回操作系统的平台(如 Windows、Linux 或 macOS)。 os....
    99+
    2024-04-02
  • node.js文件系统模块和两个重要模块
    目录一、node.js文件系统模块node.jsfs文件系统读取文件写入文件二、node.js的两个重要模块path路径模块http模块一、node.js文件系统模块 node.js...
    99+
    2024-04-02
  • python系统信息模块psutil
        psutil模块能够获取系统运行的进程和系统利用率。包括:CPU,内存,磁盘,网络等信息。一般用于系统的监控,分析和限制系统资源和进程的管理。    首先下载安装psutil:wget https://pypi.python.org...
    99+
    2023-01-31
    模块 系统 信息
  • python的系统模块builtins快
    python是简单的一门语言,是因为里面存在了很多的模块使用,就好如linux中的也有理解命令的使用“man”、“help”,而python也有。用下面的命令查看>>> dir(__builtins__)>>&...
    99+
    2023-01-31
    模块 系统 python
  • Django权限系统auth模块用法解读
    目录认证系统auth auth模块User对象User新建用户认证用户修改密码登录退出登录只允许登录的用户访问GroupPermission检查用户权限管理用户权限自定义权...
    99+
    2023-05-12
    Django权限系统 Django auth模块 Django权限系统auth模块
  • python爬虫之request模块深入讲解
    目录一、概述二、安装和基本步骤使用三、http知识复习四、request请求模块的方法使用五,params和payload参数使用说明总结一、概述 在后期渗透测试中,经常会遇到需要向...
    99+
    2024-04-02
  • node.js 操作系统模块宝典:解锁系统无限可能
    Node.js 操作系统模块提供了丰富的功能,使开发者能够与底层操作系统进行交互,从而解锁系统无限潜能。从文件系统操作到进程管理,本指南将全面介绍 Node.js 操作系统模块的强大功能。 文件系统操作 fs 模块:文件系统模块支持广泛...
    99+
    2024-04-02
  • Python3 json模块之编码解码方法讲解
    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,这些特性使J...
    99+
    2024-04-02
  • Java 9 中的模块Module系统
    目录Java模块解决了什么问题简化类库真正的访问隔离什么是模块?模块的结构创建模块创建模块规则模块类型系统模块应用程序模块自动模块未命名模块模块描述符文件声明模块导出包定向导出包依赖...
    99+
    2024-04-02
  • Python文件系统模块pathlib库
    目录一、pathlib库官方定义二、pathlib秘籍1、 基本用法2、 基本属性3、 改变路径4、 拼接路径5、 测试路径6、 其他方法三、os和pathlib.Path的区别1、...
    99+
    2024-04-02
  • Python 常用系统模块整理
    Python中的常用的系统模块中部分函数等的整理 random: 随机数 sys: 系统相关 os: 系统相关的 subprocess: 执行新的进程 multiprocessing: 进程相关 threading: 线程相关 pick...
    99+
    2023-01-30
    模块 常用 系统
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作