早安打工人! 來把你的.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 模塊化 框架


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM