我目前所在公司支持4个相关的Windows应用程序。对于每个应用程序,我们都有一个解决方案,每个解决方案包含50到100个项目。其中大约有40或50个项目是在一个或多个解决方案之间共享的。
为了让您有一个大致的了解,较大的解决方案有近90个项目,其中20个是UI项目(主应用程序、自定义控件项目、UI助手项目),另外20个是业务层项目,可能还有30或40个数据访问层项目以及其他的Windows服务项目和专业项目。
我一直觉得每个解决方案中的项目太多了。当然,我们谈论的是大型应用程序,但我不明白为什么许多项目不能合并。在我的上一家公司,我们实际上只有一个业务层项目、一个数据访问层项目和显然为每个Windows或Web应用程序建立的一个项目。
以下是由于项目数量过多而遇到的一些问题:
- 编译时间长。
- 通常应该是私有的类需要设置为公共类才能被同一层中其他项目访问。
- 我最近开始使用性能分析器Eqateq。试用版只允许对10个dll进行分析。我的情况显然使得使用该应用程序变得更加复杂。
- 跟踪项目之间的引用关系相当复杂。我确信有许多未使用的项目之间的引用。
相比之下,我没有发现这种情况的任何优势。
那么,我的问题是:
- 什么时候您会决定创建一个新项目而不是只是在当前项目中创建一个文件夹?
- 是否有任何我忽略的优势?
更新:
请记住,我并不是提议将所有内容放在一个单一的项目中。最少应该有一个数据访问层项目、一个业务逻辑层项目以及每个UI应用程序都应该有一个项目。我意识到即使对于大多数应用程序,这也是不切实际的。
我想说的是,如何定义程序集的“单一职责”的最佳实践?这是一个非常主观的问题,如果过于严格,会导致每个类都有一个程序集。更新2:
所有三个答案都提供了有价值的信息,但由于我只能选择一个,因此我选择 Doc 的答案,因为他评论了如何确定 DAL 项目的数量。 我还链接到其他相关信息的问题:这里和这里。 我也建议阅读这篇文章。