嗨朋友们,大家好!

还记得我是谁吗?

对了!

我就是 .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 一把梭 源码仓库

早安打工人! 来把你的.NET程序模块化吧的更多相关文章

  1. 物联网打工人必备:LiteOS Studio图形化调测能力

    摘要:本文会给大家介绍下LiteOS Studio的调测的几个知识点,包括: 调测配置,监视变量,反汇编代码同步展示,数值进制切换,跨平台编译调测,Qemu模拟器调测,多核调测,远程设备调测等. 掌握 ...

  2. 基于webrtc的多人视频会话的demo运行程序

    服务端程序: 该服务程序为windows平台下的程序,使用libevent书写,并集成了UDP的中转程序.(该服务器程序不能和客户端程序运行在同一台PC机电脑,不然服务器程序和客户端程序会抢占同一UD ...

  3. JavaSE 学习笔记07丨IO流

    Chapter 13. IO流 13.1 File类 java.io.File类是文件(file)和目录(文件夹)(directory)路径名(path)的抽象表示,主要用于文件和目录的创建.查找和删 ...

  4. 如何0代码实现多人音视频通话?【内附源码/Demo】

    3月15日新增"1860+1194",全国进入了抗疫关键时期.响应政策多地采取了社会面清零策略. 3月14日零点,深圳按下了暂停键. 应疫情防控要求,深圳全市暂停生产经营活动,严格 ...

  5. 一个IT人士的个人经历,给迷失方向的朋友

    这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量.最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能 ...

  6. 一个IT人士的个人经历,给迷失方向的朋友(转)

    作者: 果子狸  来源: WP开发者社区  发布时间: 2013-11-08 10:43  阅读: 50078 次  推荐: 494   原文链接   [收藏] 这些日子我一直在写一个实时操作系统内核 ...

  7. 为什么很多IT公司不喜欢进过培训机构的人呢?

    转载原文链接:https://www.cnblogs.com/alex3714/p/9105765.html 这几天在知乎看到一个问题“为什么很多IT公司不喜欢进过培训机构的人呢?” 身为老男孩的教学 ...

  8. C# Winform开发以及控件开发的需要注意的,被人问怕了,都是基础常识

    我是搞控件开发的,经常被人问,所以把一些问题记录了下来!如果有人再问,直接把地址丢给他看. 一. 经常会有人抱怨Winform界面闪烁,下面有几个方法可以尽可能的避免出现闪烁 1.控件的使用尽量以纯色 ...

  9. 如何选择JAVA培训机构,兼议什么样的人适合培训机构

    首先,利益相关,本人就是培训机构创办者兼讲师,但这不妨碍我对此发表看法. 我们先来看什么样的人适合培训机构?要回答这个问题,需要先换个角度.这个角度就是,你学习一门语言的动机是什么?99%的人的回答是 ...

随机推荐

  1. Phoenix的一些问题

    date: 2020-09-10 13:50:00 updated: 2020-09-14 16:30:00 1. Phoenix索引 全局索引:适合读多写少的场景.写数据时因为索引表分布在不同数据节 ...

  2. MFiX做增量编译的时候不要删掉*.mod和*.inc文件

    其实之前发现了这个问题,但是没有记录,过了好久又忘了.具体问题是,在做增量编译的之前,都会习惯性地删除多余文件再编译,随手就把*.mod和*.inc这类中间文件也删了,结果修改完代码执行 make - ...

  3. css-2d,3d,过渡,动画

    css2d CSS3 转换可以对元素进行移动.缩放.转动.拉长或拉伸. 2D变换方法: translate()方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动 transform: ...

  4. P1360 [USACO07MAR]Gold Balanced Lineup G

    \(\mathbf{P1360}\) 题解 思路 设\(sum[t][i]\)为截至第t天第i项能力的提升总次数. 由题意可知一个时期为均衡时期\([t_1,t_2]\),当且仅当 \(\forall ...

  5. ArrayList扩容机制

    一.先从 ArrayList 的构造函数说起 ArrayList有三种方式来初始化,构造方法源码如下: 1 /** 2 * 默认初始容量大小 3 */ 4 private static final i ...

  6. 前端搭建本地服务器(Node)

    通过Node 去官网下载Node并安装.直通车:http://nodejs.cn/ 安装成功 打开cmd(命令提示符),输入'node-v'检查是否安装成功.下图是安装成功,显示的版本可能会不一样(没 ...

  7. 较详细的gdb入门教程

    本文主要介绍gdb的基础使用.若需了解一些技巧,请访问此篇博客:点这里 本篇教程适用于Windows,macOS及Linux,但由于Windows的自带终端很难用,所以体验可能不太好.Windows ...

  8. 【Kata Daily 190910】Who likes it?(谁点了赞?)

    题目: Description: You probably know the "like" system from Facebook and other pages. People ...

  9. python风格代码荟萃

    今天总结一下在python中常用的一些风格代码,这些可能大家都会用,但有时可能也会忘记,在这里总结,工大家参考~~~ 先点赞在看,养成习惯~~~ 标题遍历一个范围内的数字 for i in xrang ...

  10. Layui弹出层详解

    今天空了学习一下弹出层 还是一步步展示把 首先,layer可以独立使用,也可以通过Layui模块化使用.我个人一直是用的模块化的 所以下面素有的都是基于模块化的. 引入好相关文件就可以开始啦  今天放 ...