在多站点环境中使用IoC容器

时间:2014-04-21 16:16:32

标签: sitecore ninject inversion-of-control unity-container castle-windsor

我正在为新项目设置架构。对于此项目,我们使用的是Sitecore 7 CMS。您可能知道,Sitecore支持多站点环境。这意味着1 IIS个实例可用于多个网站,因为Sitecore会将其解析为使用正确的代码和内容。

对于这个项目,我将有以下层次结构:

  • 核心(通用,站点非特定逻辑)
    • 网站A
    • 网站B

我们应该可以添加任意数量的网站。每个站点都有一个数据,业务和表示层。

我还想使用IoC容器,例如Castle WindsorNinjectUnity。我想要核心的通用容器/内核,然后我希望能够为特定站点注册类。因此,我为网站A注册的课程不应为网站B解析

Unity我想你可以使用儿童容器。当Sitecore上下文满足特定要求时,我没有找到强制应用程序使用子容器的好方法。

Ninject中,我发现了我非常喜欢的上下文绑定,命名范围和模块。我以为我用Contextual Bindings创建了一个NinjectModule,在解析时我会检查上下文。我没有找到一个很好的通用方法来做到这一点。

但是,经过数小时的谷歌搜索后,我没有找到一个很好的例子或教程,说明如何实现这一目标,以及如何以最佳方式完成。

目前我没有偏好我想使用哪个框架。

希望有人会为我的问题提供一些启示,以便我可以取得一些进展。 提前致谢

2 个答案:

答案 0 :(得分:2)

查看温莎的Handler Selectors。它们是多租户应用程序的一个很好的解决方案。此外,Mike Hadlow在多租户环境中有几个posts about using Handler Selectors

答案 1 :(得分:1)

我通过在Autofac中使用多租户来解决它:https://code.google.com/p/autofac/wiki/MultitenantIntegration