我想你应该把你的解决方案分成逻辑层。
作为你把助手放在哪里的一部分。在最低级别之一上为它制定解决方案。
例子
农场软件。您需要跟踪您的动物、蔬菜。您需要一个用于喂养动物的模块和一个用于向消费市场销售动物和蔬菜的模块。
这可以分为以下解决方案
后端
- 销售模块:Everyting 用于销售您的产品
- 购买模块:为您的动物购买种子、食物、其他产品...
- Sheduler 模块:播种、收割、...的触发事件
- 预测模块:根据天气和市场价格预测收成数量,...
- ...
这些后端模块中的每一个都可以拥有自己的数据访问层、DTO、WCF 服务,......
此解决方案将仅包含业务逻辑、数据访问、...。并且可以有多个前端解决方案连接到这些后端解决方案。
前端
- ASP.NET MVC 应用程序:用于向消费者销售的网上商店
- WPF 应用程序:批准销售
- 其他 WPF 应用程序:购买东西。
- 移动应用程序:将事件发送到您的手机或其他东西。
- (另一种选择是将 2 个或更多后端解决方案连接到 1 个前端解决方案)
- ...
这对您的项目来说是一个很大的变化,这将产生影响。如果你不想改变它,请确保你认为这是真的。
多种解决方案将增加您的整体构建时间,并且每晚构建非常重要,这样每个开发人员都可以始终使用最新的二进制文件,而不必在他的本地计算机上构建所有解决方案。
请注意,您仍然可以在不同的解决方案中使用您的图层:
- 基础设施层
- 集成层(外部系统)
- 领域层
- 存储层
- 经理层
- 服务层
为了使这一切一起工作,不要弄乱二进制文件。您可以映射一个驱动器 IE X:您有一个文件夹二进制文件,每个解决方案都有一个文件夹。每个解决方案都复制构建后事件中的程序集。(编写此脚本,因此它适用于每台机器)
如果您有良好的网络基础设施,您也可以将其复制到服务器上。因此,当您在 TFS 中构建所有解决方案时,它可以将其复制到所有开发人员都可以访问的位置。
如果您在 TFS 中构建,请确保您的构建顺序正确,首先是最低层,最后是最高层。
但是当您拆分解决方案时,在解决方案中您可能不需要在每个解决方案中使用它们。
我最近读了一篇关于Onion Architecture的文章,也许你也可以看看。(它特定于 ASP.NET MVC)。
您还可以查看CQRS。