Windows服务使用Windsor容器
程序员文章站
2022-04-09 08:41:21
该文章是系列文章 "基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业" 的其中一篇。 Windsor是ABP框架自带的 "IOC容器" 。 关于什么是IOC,你可以Bing或者Google一下,英文不错的话推荐看一看 "https://www.tutorialstea ......
该文章是系列文章 基于.netcore和abp框架如何让windows服务执行quartz定时作业 的其中一篇。
windsor是abp框架自带的ioc容器。
关于什么是ioc,你可以bing或者google一下,英文不错的话推荐看一看 。
更多关于castle windsor 可以阅读下列文章
- https://github.com/castleproject/windsor/blob/master/docs/ioc.md
- https://github.com/castleproject/windsor/blob/master/docs/readme.md
现在比较常用的di组件可以访问awesome系列查看:
微软自带di替换为castle windsor
问题点在于abp框架使用的是castle windsor,而微软提供的官方容器是microsoft.extensions.dependencyinjection。
这就涉及到一个使用castle windsor替换microsoft.extensions.dependencyinjection的问题。
castle windsor提供了注册的方法,自己实现的话,可以通过循环访问微软自带di容器,将其一一注册到castle windsor容器。
也可以nuget引用一个包:castle.windsor.msdependencyinjection,源码查看:
代码改自如何在控制台应用(.net core)使用appsettings.json配置,需要再添加两个包
microsoft.extensions.hosting castle.windsor.msdependencyinjection
需要添加以下代码
public iconfiguration appconfiguration { get; set; } public override void preinitialize() { var host = new hostbuilder().configureappconfiguration((hostcontext, configapp) => { var hostingenvironment = hostcontext.hostingenvironment; appconfiguration = appconfigurations.get(hostingenvironment.contentrootpath, hostingenvironment.environmentname); }).configureservices((hostcontext, services) => { services.addsingleton(appconfiguration); windsorregistrationhelper.createserviceprovider(iocmanager.ioccontainer, services); }); host.build(); }
如何使用castle windsor
- 构造函数
- iocmanager.instance.ioccontainer.resolve()
上一篇: Java对象的序列化、反序列化
推荐阅读
-
C#使用windows服务发送邮件
-
使用C#创建Windows服务的实例代码
-
使用Topshelf组件构建简单的Windows服务
-
使用xp_cmdshell注销Windows登录用户(终端服务器超出最大连接数)
-
C#使用windows服务开启应用程序的方法
-
干掉windows无脑设定:“始终使用选择的程序打开这种文件”、“使用Web服务查找正确的程序”
-
使用C#调试Windows服务模板项目
-
在Windows上使用putty远程登录Linux服务器的简单教程
-
.net core3.0部署Linux服务器 使用Docker容器和Nginx反代理教程
-
使用 Topshelf 组件一步一步创建 Windows 服务 (2) 使用Quartz.net 调度