需要替代提供者模式

时间:2009-01-27 19:18:35

标签: design-patterns provider

我正在维护一个Web应用程序,该应用程序利用如下所述的提供程序模式,以进行配置。

http://msdn.microsoft.com/en-us/library/ms972319.aspx
http://msdn.microsoft.com/en-us/library/ms972370.aspx

一切都运行良好,但随着我们为应用程序添加功能,我们发现我们的提供商已经成为几个不属于一起的不同功能的混搭。我们正在考虑拆分配置提供程序,以便使用其他类似的功能组织类似的功能。我们这样做是因为我们的原始提供者现在拥有一些不需要由某些模块实现的功能。在实现提供程序时,我们不想仅仅在函数上抛出NotImplementedException,而是根本不包含它们。

我们意识到我们可以使用上面的MSDN方法创建多个提供程序,但是多个提供程序只会在web.config中创建更多条目。最小化web.config中的条目会很好,因为它开始变大。

有没有人找到另一种方法来实现提供者模型?

3 个答案:

答案 0 :(得分:2)

您可以查看使用控制反转(IoC)容器(Google“Castle Windsor”,或StructureMap,或AutoFac,或NInject或Microsoft Unity)。使用IoC,您可以在配置文件中或应用程序的开头配置“提供程序”。

通常,您将为您拥有的每种类型的提供程序创建接口。使用接口可以轻松分解您的提供商,但这对您来说很有意义。

一旦你有了接口,你可以在需要时简单地向容器询问该接口的实现,并且容器将负责为你实例化一个提供者。

答案 1 :(得分:0)

答案 2 :(得分:0)

我相信你基本上可以使用任何允许配置的IOC(大部分都是这样)。

我要这样做的方法是在代码中配置AutoFac以使用“已知”实现,但允许可选的“配置覆盖”。因此,如果我们“在售”某个应用程序而某人需要不同的实现,他们就可以配置它。

在我的博客文章中阅读更多内容 - 希望博客也能得到一些好的评论:http://healthedev.blogspot.com/2011/12/making-custom-built-applications.html