前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >早安打工人! 来把你的.NET程序模块化吧

早安打工人! 来把你的.NET程序模块化吧

作者头像
梁规晓
发布2020-12-02 14:31:41
7460
发布2020-12-02 14:31:41
举报
文章被收录于专栏:DotNet程序园DotNet程序园

嗨朋友们,大家好!

还记得我是谁吗?

对了!

我就是 .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 的模块化的精简版,几乎一个摸样!

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

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

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

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

这就叫:

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


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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet程序园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档