C# IoC Windows服务体系结构
我传统上是一个SQL的家伙。我有很多C#经验,但这些都是工具或定制项目 我现在的任务是编写一个应用程序,该应用程序执行以下操作C# IoC Windows服务体系结构,c#,architecture,inversion-of-control,autofac,C#,Architecture,Inversion Of Control,Autofac,我传统上是一个SQL的家伙。我有很多C#经验,但这些都是工具或定制项目 我现在的任务是编写一个应用程序,该应用程序执行以下操作 作为windows服务运行 监视文件,并在文件到达时将其加载到数据库 监视数据库中新加载的文件 对这些文件执行一些复杂的解析(包括聚合db记录) 需要额外的接口(查询解析数据的网站等) 必须支持多种文件类型,必须支持多种解析器 所以,这是我第一次进入国际奥委会,我正在尽我最大的努力做正确的事情。我正在使用Autofac,对这些概念非常熟悉。我的问题是理解复合根,当可
- 作为windows服务运行
- 监视文件,并在文件到达时将其加载到数据库
- 监视数据库中新加载的文件
- 对这些文件执行一些复杂的解析(包括聚合db记录)
- 需要额外的接口(查询解析数据的网站等)
- 必须支持多种文件类型,必须支持多种解析器
有什么建议吗?我离把我的C#打包到SSIS进行文件加载,然后在SSIS中破解一些讨厌的解析器代码还有这么远(很小的距离)。请帮助一个C#学习者。我已经意识到,我可以新建一组加载器类,将它们放入字典并将其传递给构造函数。这让我可以按名字要求一个加载器 听起来好像你在试图用容器构造应用程序中的每一个实体——节约使用DI,并且只在你需要可替代行为的地方使用,在适当的地方使用简单的“新”并没有什么错
另一个建议是使用接口标记自定义文件加载器,例如IFileLoader,运行所有加载的程序集并(使用反射)检测实现的加载器。然后,将所有装入器组装成一个责任链,这样,如果一个装入器不能处理所讨论的文件类型,它就会将责任传递给下一个装入器。这样,就很容易添加新的加载程序,并且文件监视部分与加载部分明显分离。COR模式不是必须的,功能当然可以通过一个简单的循环来提供。以下是我对新手应该如何开始的看法 开始写你的课程。对其他类的所有依赖都在构造函数中获取 由于除了在构建对象时,您从未在任何其他点创建类以获取实例,因此它将使您的程序看起来类似于以下内容:
static void Main(..) {
var s1 = ...;
var s2 = ...;
var sn = ... SN(s1, s2, ..);
sn.Wait();
}
现在你可以替换所有。。。在您的容器中注册。您根本不使用工厂类;IoC容器是您的工厂。然后替换根初始化:
var sn = container.Resolve<SN>();
var sn=container.Resolve();
现在您正在使用IoC。不要用字典。我认为你已经太聪明了。