我应该在'main'方法中编码什么?

时间:2014-01-08 19:52:45

标签: .net dependency-injection initialization composition compositionroot

也许这是一个过于宽泛的问题,但我仍然希望听到什么是最佳做法以及什么被认为是“正确的”。我没有找到类似的主题,可能是由于它的通用性,因此难以搜索。

这一切都始于我们采用Windows服务项目并为其添加了另一项服务。以前,主要方法是我们考虑的组合根,我们的Io​​C容器注册代码,app.config读取和类似的方法在主要方法中以一种或另一种形式。在组装了所需的依赖项后,我们通过调用容器上的Resolve并运行它来创建服务。

当我们创建另一个继承自ServiceBase的类时,我们注意到将main作为组合根再也没有意义,因为多个服务可能完全不同,因此需要不同的初始化代码。

我在mather上发现的唯一启发性帖子是this one from Mark Seemann,其中他声明OnStart将是聚合根(在特定情况下)。

一般来说,选择合适的组合根时最好的方法是什么?我是否应该将此窗口服务方案视为异常值,并且只是将代码视为不同,同时将主方法保留为其他项目类型组合根,或者是否存在在所有上下文中都有效的更通用的方法?

也许服务需要非常不同的设置这一事实表明它们应该在多个独立项目中分开,其中main将再次用作组合根?

我们通常使用.Net,但这也可能适用于许多其他编程语言。

1 个答案:

答案 0 :(得分:0)

最好将Main()方法视为操作系统所需的一个钩子 - 这应该是它唯一的责任。应尽可能少的代码,只有开始实际应用程序所需的最低限度 - 它根本不应成为任何概念性考虑的一部分。

相关问题