【问题标题】:IOC with MVC and WCFIOC 与 MVC 和 WCF
【发布时间】:2011-11-18 23:56:28
【问题描述】:

我对 IOC 容器的概念相当了解,但是在理解如何在我的应用程序上下文中使用它时有点困难。

我正在构建一个应用程序,该应用程序将具有 MVC Web 前端以及用于构建外部应用程序的 WCF 服务。

我的问题是,我是否必须为两者设置一个 IOC,例如 Windsor,还是有办法设置它们以便它们共享同一个容器?

【问题讨论】:

  • 您是将 WCF 服务部署为独立的可执行文件还是 IIS 可部署?
  • 以防万一,这里有一篇关于如何在 WCF 中启用 DI 的文章:stackoverflow.com/questions/2042609/…
  • 谢谢马克。我在 Stack Overflow 上看到您是 DI 主题最活跃的参与者之一。会拿一本你的书!

标签: asp.net-mvc wcf inversion-of-control


【解决方案1】:

我假设 MVC 应用程序和 WCF 服务是独立的应用程序。也就是说,它们是一个单独的代码库,托管在单独的 IIS 站点等中。如果是这种情况,那么您可能需要单独的容器,除非您执行诸如将容器放在 WCF 和 MVC 的共享程序集中这样的操作应用参考。只有当两个应用程序都具有相同的依赖项时,这才是真正的优势。

【讨论】:

  • 正确,但以防万一这不是很明显,我想补充一点,即使一个共享容器 定义,仍然会有两个单独的 实例 - 每个应用程序中都有一个。所以底线是共享容器定义应该非常罕见发生。
  • 好电话,有两个实例这一事实很重要。
【解决方案2】:

根据站点和服务的大小,您可能在两个项目中都有 IOC,但它们不能真正共享同一个容器。将 IOC 添加到 MVC 相当简单,但添加到 WCF 则相当棘手。如果您想将 IOC 添加到您的 WCF 服务,我建议使用类似 CommonServiceFactory 的东西,它会为您处理所有的管道。设置起来可能有点棘手,因为它依赖于 CommonServiceLibrary 抽象,而不是 Windsor 本身——但是一旦你开始滚动它就真的很容易使用。

【讨论】:

  • 今晚我将尝试整理一些示例代码,展示如何使用两个独立的 IOC 容器设置 MVC 应用程序和 WCF 服务。这有点涉及,但我认为看到一个可编译的项目真的会帮助你。我会相应地更新我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
  • 2011-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多