Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何组织企业级复合应用程序(CAG)_C#_.net_Visual Studio 2010_Prism_Cag - Fatal编程技术网

C# 如何组织企业级复合应用程序(CAG)

C# 如何组织企业级复合应用程序(CAG),c#,.net,visual-studio-2010,prism,cag,C#,.net,Visual Studio 2010,Prism,Cag,CAG文档中的所有QuickStart和RI示例都很好,但我缺少更多的企业级示例 假设我们有40多个模块,每个模块包含一个代理、Facade、PresentationModel、Model和view。每个模块还调用特定于模块的WCF服务,该服务将托管在IIS或独立控制台主机中。我们的方法是将UI模块、服务模块和相关测试包含到一个解决方案中,以便它们可以与其他模块分开开发和测试 我的问题是,当服务位于单独的模块中时,应该如何托管服务,以及当我按F5时,如何实际运行单独的模块和其余的应用程序模块。这

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

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


我的问题是,当服务位于单独的模块中时,应该如何托管服务,以及当我按F5时,如何实际运行单独的模块和其余的应用程序模块。这方面有没有最好的做法?我想以前已经做过了?

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


每个服务都可以配置为在不同的端口或目标上运行,但我感觉可能您的问题源于服务的体系结构,您可能会从跨模块共享的公共服务项目中受益

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

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

我们创建“模块”的第一个目标是缩短开发和持续测试的周转时间,因此,我们希望拥有能够独立开发和测试的垂直产品。今天,在开发过程中,我们不使用IIS托管,但这可能是未来的发展方向。然后,每当我想要构建和运行解决方案时,解决方案并不真正负责启动新的“控制台主机”,而是将文件部署到IIS指向的文件夹中。