zoukankan      html  css  js  c++  java
  • 早安打工人! 来把你的.NET程序模块化吧

    嗨朋友们,大家好!

    还记得我是谁吗?

    对了!

    我就是 .NET 打工人 玩双截棍的熊猫

    今天呐,我特别要向 写框架 的朋友们,想要写框架 ** 的朋友们,已经有框架** 的朋友问声好!

    为什么呢?因为我在 二零二零年 写了一个小类库。

    众所周知,在.NET方面的开发框架 Abp (本文皆指 Abp VNEXT ) 有相当的知名度,下面我就跟大家讲一讲:

    使用 Abp 框架的时候,我们都知道它有模块化系统,很好用啊,但是要依赖 Volo.Abp,里面有很多多余的依赖,我说朋友们有没有更干净轻量的模块化实现啊?

    只听见下面有一个:我来!

    这个时候,我一看,朋友们,人群当中,钻出一个 Riven.Modular

    哇!

    他整个看起来就像是 Abp 的模块化,特别显眼,我一下就点了进去。


    我说你有什么 优点 呢?

    它说

    • 依赖少,只依赖于
      • Microsoft.Extensions.DependencyInjection 微软官方依赖注入库
      • Microsoft.Extensions.Configuration 微软官方配置库
      • JetBrains.Annotations JetBrains代码分析库
    • 兼容性强,基于 netstandard2.0 开发,支持
      • .net framework 4.6.1 或更高版本
      • .net core 2.1 或更高版本
    • 适用面广
      • asp.net core
      • winform
      • console

    我说怎么开始使用呢?

    它说

    // dotnet cli
    dotnet add package Riven.Modular
    
    // nuget package manager
    Install-Package Riven.Modular
    
    // 引入命名空间
    using Riven;
    using Riven.Modular;
    
    // 新建一个模块
    [DependsOn(
            typeof(依赖的其它模块))
            )]
    public class MyAppModule : AppModule
    {
            public override void OnPreConfigureServices(ServiceConfigurationContext context)
            {
                // 注册服务之前
            }
    
            public override void OnConfigureServices(ServiceConfigurationContext context)
            {
                // 注册服务
            }
    
            public override void OnPostConfigureServices(ServiceConfigurationContext context)
            {
                // 注册服务之后
            }
    
            public override void OnPreApplicationInitialization(ApplicationInitializationContext context)
            {
                // 应用初始化之前
            }
    
            public override void OnApplicationInitialization(ApplicationInitializationContext context)
            {
                // 应用初始化
            }
    
            public override void OnPostApplicationInitialization(ApplicationInitializationContext context)
            {
                // 应用初始化之后
            }
    
            public override void OnApplicationShutdown(ApplicationShutdownContext context)
            {
                // 应用停止
            }
    }
    
    
    // 在 asp.net core中使用
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.DependencyInjection;
    using Microsoft.Extensions.DependencyInjection.Extensions;
    
    using Riven;
    
    namespace 你的命名空间
    {
        public class Startup
        {
            public Startup(IConfiguration configuration)
            {
                Configuration = configuration;
            }
    
            public IConfiguration Configuration { get; }
    
    
            public void ConfigureServices(IServiceCollection services)
            {
    	        // 你的代码
    	        
                services.AddRivenModule<MyAppModule>(Configuration);
            }
    
            public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
                app.ApplicationServices.UseRivenModule();
    
    			// 你的代码
            }
        }
    }
    
    

    我说在 控制台 项目里怎么用啊?

    它说

    // dotnet cli
    dotnet add package Riven.Modular
    
    // nuget package manager
    Install-Package Riven.Modular
    
    // dotnet cli
    dotnet add Microsoft.Extensions.Configuration
    dotnet add Microsoft.Extensions.Configuration.Json
    dotnet add Microsoft.Extensions.DependencyInjection
    
    // nuget package manager
    Install-Package Microsoft.Extensions.Configuration
    Install-Package Microsoft.Extensions.Configuration.Json
    Install-Package Microsoft.Extensions.DependencyInjection
    
    using System;
    using Microsoft.Extensions.Configuration;
    using Microsoft.Extensions.DependencyInjection;
    using Riven;
    
    namespace 你的命名空间
    {
        class Program
        {
            static void Main(string[] args)
            {
            	// 你应用的配置
                var Configuration = GetAppConfiguration(); 
                
                //
                IServiceCollection services = new ServiceCollection();
                services.AddSingleton<IConfiguration>(Configuration);
                services.AddRivenModule<MyAppModule>(Configuration);
    
    			// 
                IServiceProvider serviceProvider = services.BuildServiceProvider();
                serviceProvider.UseRivenModule();
            }
    
    
            static IConfiguration GetAppConfiguration()
            {
                var configurationBuilder = new ConfigurationBuilder();
                return configurationBuilder
                        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                        .Build();
            }
        }
    }
    
    

    我当时说了一句,你这不就是 Abp 的模块化吗!

    它也说了一句,这就是Abp 的模块化的精简版,几乎一个摸样!

    点进 源代码 之后,马上就看到了一个

    image-20201126090843253

    image-20201126084249065

    它还说 Abp 为全国 .NET 打工人做了一件大好事。

    因为在这个 Abp 当中,不仅可以快速开发做业务,同时也能看源码学习知识。

    可以说从 Riven.Modular 身上,我们可以看到全国的.NET打工人都在进步的。

    这就叫:

    看源码学代码,我有知识我自豪!


    好了亲爱的朋友们,欢乐的时光总是短暂的,又到时候讲拜拜了

    如果觉得好用的话请 收藏 转发 star fork 一把梭 源码仓库

    C# 模块化 框架 ASP.NET CORE 模块化 框架 aspnet core 模块化 框架 .net core 模块化 框架
  • 相关阅读:
    Java——泛型、异常
    接口
    Classes
    Unit Tests
    Boundaries
    Error Handling
    Objects and Data Structures
    DB other operation
    Comments
    Functions
  • 原文地址:https://www.cnblogs.com/staneee/p/14040531.html
Copyright © 2011-2022 走看看