在单独的项目和单独的命名空间中组织代码

mar*_*ker 11 .net c# architecture

我在.net c#应用程序中工作,该应用程序包含2个客户端和服务器解决方案.在服务器端,有80多个项目用于分隔以下建筑图层,

  • 基础设施层
  • 集成层(外部系统)
  • 域层
  • 存储库层
  • 经理层
  • 服务层

此外,几乎每个层都有测试项目.现在,解决方案的构建时间需要2到3分钟,许多开发人员(包括我:))觉得我们需要解决这个问题.

因此,提出的解决方案是通过合并项目来减少项目数量.在我看来,这可能是一个很好的解决方案,可以最大限度地缩短构建时间,我们可以实现我们想要的目标.

提出的解决方案是我们将项目合并为3个区域,例如一个用于生产代码的库,一个用于测试代码的库,一个用于部署项目(WCF主机等)以及通过分隔命名空间在同一项目中逻辑划分的层.

但是,我担心的是

  1. 这些分离是否有利于可维护性?为每个命名空间appox提供更多类的hundread.
  2. 如果我们有共同的功能,如助手,我们把它们放在哪里?

有没有其他方法来分层解决方案?

Pre*_*hts 4

我想你应该将你的解决方案分成逻辑层。

作为你把助手放在哪里的一部分。在最低级别之一为其制定解决方案。

例子

农场软件。您需要跟踪您的动物和蔬菜。您需要一个用于喂养动物的模块和一个用于向消费市场销售动物和蔬菜的模块。

这可以分为以下解决方案

后端

  • 销售模块:销售产品的一切
  • 购买模块:购买种子、动物食物、其他产品……
  • 调度器模块:触发播种、收获等事件
  • 预测模块:根据天气和市场价格预测收获量……
  • ...

每个后端模块都可以有自己的数据访问层、DTO、WCF 服务……

该解决方案将仅包含业务逻辑、数据访问……。并且可以有多个前端解决方案连接到这些后端解决方案。

前端

  • ASP.NET MVC 应用程序:用于向消费者销售的网上商店
  • WPF 应用程序:批准销售
  • 其他 WPF 应用程序:买东西。
  • 移动应用程序:将事件发送到您的手机或其他设备上。
  • (另一种选择是将 2 个或更多后端解决方案连接到 1 个前端解决方案)
  • ...

这对您的项目来说是一个很大的变化,并且会产生影响。如果你不想改变它,请确保你认为这是真的。

多个解决方案将增加您的总体构建时间,并且每晚进行一次构建非常重要,这样每个开发人员都可以始终使用最新的二进制文件,而不必在本地计算机上构建所有解决方案。

请注意,您仍然可以在不同的解决方案中使用图层:

  • 基础设施层
  • 集成层(外部系统)
  • 领域层
  • 存储层
  • 管理层
  • 服务层

为了使这一切能够一起工作,并且不要被二进制文件弄乱。您可以映射驱动器 IE X:其中有一个文件夹二进制文件,其中有每个解决方案的文件夹。其中每个解决方案复制构建后事件中的程序集。(编写此脚本,以便它适用于每台机器)

如果您有良好的网络基础设施,也可以将其复制到服务器上。因此,当您在 TFS 中构建所有解决方案时,它可以将其复制到所有开发人员都可以访问的位置。

如果您在 TFS 中构建,请确保构建顺序正确,首先是最低层,最后是最高层。

但是,当您拆分解决方案时,您可能不需要在每个解决方案中都使用它们。

我最近读了一篇关于洋葱架构的文章,也许你也可以看看。(它特定于 ASP.NET MVC)。

您还可以查看CQRS