Windows服务使用Windsor容器
程序员文章站
2022-07-11 07:52:17
该文章是系列文章 "基于.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()
上一篇: 宠物医院的急救
推荐阅读
-
C#使用windows服务发送邮件
-
使用西部数码网站管理助手在Windows的服务器上建站的教程
-
使用Nginx搭建图片服务器(windows环境下)
-
使用Topshelf组件构建简单的Windows服务
-
PHP5.5在windows安装使用memcached服务端的方法
-
使用instsrv.exe+srvany.exe将应用程序安装为windows服务的方法
-
使用Topshelf开发Windows服务、记录日志
-
使用C#创建windows服务续之使用Topshelf优化Windows服务
-
本地Windows与服务器Windows间使用远程桌面连接的方法
-
使用PowerShell操作Windows服务的命令小结