早安打工人! 来把你的.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 的模块化的精简版,几乎一个摸样!
点进 源代码 之后,马上就看到了一个


它还说 Abp 为全国 .NET 打工人做了一件大好事。
因为在这个 Abp 当中,不仅可以快速开发做业务,同时也能看源码学习知识。
可以说从 Riven.Modular 身上,我们可以看到全国的.NET打工人都在进步的。
这就叫:
看源码学代码,我有知识我自豪!
好了亲爱的朋友们,欢乐的时光总是短暂的,又到时候讲拜拜了
如果觉得好用的话请 收藏 转发 star fork 一把梭 源码仓库
早安打工人! 来把你的.NET程序模块化吧的更多相关文章
- 物联网打工人必备:LiteOS Studio图形化调测能力
摘要:本文会给大家介绍下LiteOS Studio的调测的几个知识点,包括: 调测配置,监视变量,反汇编代码同步展示,数值进制切换,跨平台编译调测,Qemu模拟器调测,多核调测,远程设备调测等. 掌握 ...
- 基于webrtc的多人视频会话的demo运行程序
服务端程序: 该服务程序为windows平台下的程序,使用libevent书写,并集成了UDP的中转程序.(该服务器程序不能和客户端程序运行在同一台PC机电脑,不然服务器程序和客户端程序会抢占同一UD ...
- JavaSE 学习笔记07丨IO流
Chapter 13. IO流 13.1 File类 java.io.File类是文件(file)和目录(文件夹)(directory)路径名(path)的抽象表示,主要用于文件和目录的创建.查找和删 ...
- 如何0代码实现多人音视频通话?【内附源码/Demo】
3月15日新增"1860+1194",全国进入了抗疫关键时期.响应政策多地采取了社会面清零策略. 3月14日零点,深圳按下了暂停键. 应疫情防控要求,深圳全市暂停生产经营活动,严格 ...
- 一个IT人士的个人经历,给迷失方向的朋友
这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量.最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能 ...
- 一个IT人士的个人经历,给迷失方向的朋友(转)
作者: 果子狸 来源: WP开发者社区 发布时间: 2013-11-08 10:43 阅读: 50078 次 推荐: 494 原文链接 [收藏] 这些日子我一直在写一个实时操作系统内核 ...
- 为什么很多IT公司不喜欢进过培训机构的人呢?
转载原文链接:https://www.cnblogs.com/alex3714/p/9105765.html 这几天在知乎看到一个问题“为什么很多IT公司不喜欢进过培训机构的人呢?” 身为老男孩的教学 ...
- C# Winform开发以及控件开发的需要注意的,被人问怕了,都是基础常识
我是搞控件开发的,经常被人问,所以把一些问题记录了下来!如果有人再问,直接把地址丢给他看. 一. 经常会有人抱怨Winform界面闪烁,下面有几个方法可以尽可能的避免出现闪烁 1.控件的使用尽量以纯色 ...
- 如何选择JAVA培训机构,兼议什么样的人适合培训机构
首先,利益相关,本人就是培训机构创办者兼讲师,但这不妨碍我对此发表看法. 我们先来看什么样的人适合培训机构?要回答这个问题,需要先换个角度.这个角度就是,你学习一门语言的动机是什么?99%的人的回答是 ...
随机推荐
- 循序渐进VUE+Element 前端应用开发(21)--- 省市区县联动处理的组件使用
在很多应用中,往往都涉及到记录用户所在省份.城市.区县或者街道等信息,一般我们可以通过联动的Select或者类似的界面组件进行展示,或者使用Element中的el-cascader界面组件进行展示,而 ...
- 用c++获取随机数
计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子.(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535 ...
- php中Standard中配置选项,在TargetFrameworks环境下如何输出库存
在.NET Standard/.NET Core技术出现之前,编写一个类库项目(暂且称为基础通用类库PA)且需要支持不同 .NET Framework 版本,那么可行的办法就是创建多个不同版本的项目( ...
- CF1017G——The Tree
传送门:QAQQAQ 题意:给你一棵树,有三种操作,设所有点本来未感染 1:感染节点i,若i被二次感染,则感染i的儿子(若儿子也被感染,则感染孙子,直到到底或者感染了健康点) 2:使i子树全部健康 3 ...
- 关于C语言中的位运算符的学习即应用
一.运算符的种类和运算规则: & 与:全1则1,有0则0 | 或:有1则1,全0则0 ^ 异或:相同为0,不同为1 ~ 取反:~是一元运算符,用来对一 ...
- 如何优雅阻止view UI 的 Switch 切换?
一.官方文档提供的方法 个人觉得官方提供的方法有时候不能够满足现实需求,第二点是view UI版本必须是4.0.0版本及以上才能使用这个开关组件. 二.自定义方法解决 ①将开关禁用掉 加一个 dis ...
- 聚类之k-means附代码
import osimport sys as sys#reload(sys)#sys.setdefaultencoding('utf-8')from sklearn.cluster import KM ...
- 面试官问我redis数据类型,我回答了8种
面试官:小明呀,redis 有几种数据结构呀? 小明:8 种 面试官:那你说一下分别是什么? 小明:raw,int,ht,zipmap,linkedlist,ziplist,intset,skipli ...
- win10,安装 vmware 后没有虚拟网卡,导致虚拟机没有 ip
1.确认关闭windows firewall 服务,最保险的关闭时先把服务改为手动再关闭防止塔自动启动! 2.确认开启Device Install Service .Device Setup Ser ...
- leetcode 30day--2
202. Happy Number Write an algorithm to determine if a number n is "happy". A happy number ...