【问题标题】:need an alternative to the provider pattern需要提供者模式的替代方案
【发布时间】:2009-01-27 19:18:35
【问题描述】:

我正在维护一个 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 中的条目会很好,因为它开始变大了。

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

【问题讨论】:

    标签: design-patterns provider


    【解决方案1】:

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

    通常,您会为您拥有的每种类型的提供者创建接口。使用接口,您可以轻松地分解您的提供者,但这对您来说是有意义的。

    一旦你有了接口,你可以简单地在你需要的时候向容器请求该接口的实现,容器会为你实例化一个提供者。

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      我相信您基本上可以使用任何允许配置的 IOC(其中大多数)来做到这一点。

      我要做的方式是在代码中配置 AutoFac 以使用“已知”实现,但允许可选的“配置覆盖”。因此,如果我们曾经“转售”一个应用程序并且有人需要不同的实现,他们可以配置它。

      在我的博客文章中阅读更多信息 - 希望该博客也能获得一些关于它的好消息:http://healthedev.blogspot.com/2011/12/making-custom-built-applications.html

      【讨论】:

        猜你喜欢
        • 2015-05-19
        • 2011-07-07
        • 2010-11-02
        • 1970-01-01
        • 1970-01-01
        • 2019-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多