【问题标题】:How to organize Enterprise scale Composite Applications (CAG)如何组织企业级复合应用程序 (CAG)
【发布时间】:2010-06-03 07:19:28
【问题描述】:

CAG 文档中的所有快速入门和 RI 示例都很好,但我缺少更多企业级示例。

假设我们有 40 多个模块,每个模块都包含一个 Proxy、Facade、PresentationModel、Model 和 Views。每个模块还调用特定于模块的 WCF 服务,该服务将托管在 IIS 或独立控制台主机中。我们的方法是将 UI 模块、服务模块和相关测试包含在一个解决方案中,这样它们就可以与其他模块分开开发和测试。

我的问题是当服务位于单独的模块中时应该如何托管服务,以及当我按 F5 时如何实际运行单独的模块和其余的应用程序模块。对此有最佳做法吗?我猜它以前做过?

【问题讨论】:

    标签: c# .net visual-studio-2010 prism cag


    【解决方案1】:

    您当然可以将每个模块托管为服务点的应用程序或虚拟目录实例,但我想要说的是,您是否允许解决方案分区的开发“方便”决定您的服务的生产架构?我们通常基于层而不是模块分区来处理这个问题——换句话说,您将有一个带有域/模型的项目和一个带有服务的项目,然后每个“模块”都可以引用公共服务池。我想这取决于相互关联的模块的程度,有多少交叉通信等等。

    每个服务都可以配置为在不同的端口或目标上运行,但我再次感觉到您的问题可能源于服务的架构,您可能会受益于跨模块共享的通用服务项目。

    【讨论】:

    • 我们创建“模块”的第一目标是缩短开发和持续测试的周转时间,因此我们希望拥有可以独立开发和测试的垂直市场。今天,在开发过程中,我们没有使用 IIS 进行托管,但也许这就是前进的方向。然后解决方案并不真正负责每次我想构建和运行解决方案时启动一个新的“控制台主机”,只是将文件部署到 IIS 指向的文件夹。
    【解决方案2】:

    我们最终得到了一个相当简单的解决方案,我们将托管项目作为“启动”项目包含在解决方案中。该项目设置为不构建并具有模块的依赖项。

    所有服务 DLL:s 都输出到宿主项目动态加载它们的公共文件夹中,查找 ServiceContract 属性并启动宿主。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多