Windows服务使用Windsor容器
2024-09-30 02:59:37
该文章是系列文章 基于.NetCore和ABP框架如何让Windows服务执行Quartz定时作业 的其中一篇。
Windsor是ABP框架自带的IOC容器。
关于什么是IOC,你可以Bing或者Google一下,英文不错的话推荐看一看 https://www.tutorialsteacher.com/ioc。
更多关于Castle Windsor 可以阅读下列文章
- https://www.castleproject.org/projects/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,源码查看:https://github.com/volosoft/castle-windsor-ms-adapter
代码改自如何在控制台应用(.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()
最新文章
- Centos6.5 gitlab安装使用
- EasyUi 改变 selelct 的 下拉内容 div 的高度
- Sphinx 之 Coreseek、Sphinx-for-chinaese、Sphinx+Scws 评测
- springmvc自定义日期编辑器
- Java设计模式-抽象工厂模式(Abstract Factory )
- 找模式串[XDU1032]
- Microsoft.AlphaImageLoader滤镜讲解
- IOS5基础教程之一-----如何创建XCode项目
- Js 基本数据类型、引用数据类型
- Java -- Thread中start和run方法的区别
- Android - &;quot;cause failed to find target android-14&;quot; 问题
- jquery全选框的实现
- DOM Mutation Observer
- CF#462 div1 D:A Creative Cutout
- android smartbar适配
- pod 更新慢解决方案
- WebForm应用log4net记录错误日志——使用线程列队写入
- RabbitMQ简单应用の主题模式(topic)
- VS Code 插件
- rest_framework 之视图
热门文章
- the ACID properties of HBase
- Machine Learning in Action(6) AdaBoost算法
- ORA-02298: 无法验证 (PNET.POST_CLOB_FK) - 未找到父项关键字
- UVA1378 A Funny Stone Game —— SG博弈
- tableView滑动时cell消失
- AttributeError: module 'tensorflow' has no attribute 'sub'
- 【mysql】mysql innodb 配置详解
- Opencv— — Bias and Gain
- SDOI2017 Round1 Day2 题解
- slice 和 splice 区别