.NET项目体系结构 我有一个哲学问题,也需要考虑性能的影响。
我们正在设计一个新系统,其中包含许多相互不相关的子服务,但有些子服务可能会相互使用(我们使用unity来避免任何解耦) 我的主要问题是:.NET项目体系结构 我有一个哲学问题,也需要考虑性能的影响。,.net,design-patterns,architecture,oop,.net,Design Patterns,Architecture,Oop,我们正在设计一个新系统,其中包含许多相互不相关的子服务,但有些子服务可能会相互使用(我们使用unity来避免任何解耦) 我的主要问题是: 我们应该将它们分成单独的DLL,其中每个服务都有自己的DLL(如product.services.serie1.DLL、product.services.serie2.DLL等),还是应该将所有这些服务合并到一个单独的DLL中,并使用不同的名称空间来分隔它们。 就性能而言,两者有什么区别吗?另外,社区(和微软)认可的最“可接受”的标准是什么 感谢我个人,我
- 我们应该将它们分成单独的DLL,其中每个服务都有自己的DLL(如product.services.serie1.DLL、product.services.serie2.DLL等),还是应该将所有这些服务合并到一个单独的DLL中,并使用不同的名称空间来分隔它们。 就性能而言,两者有什么区别吗?另外,社区(和微软)认可的最“可接受”的标准是什么
感谢我个人,我会将它们划分为独立的DLL项目,以简化开发、测试和维护。当它们是独立的“服务”时,我更喜欢将它们划分为独立的项目和程序集 如果将所有内容放入单个程序集中,则希望使用任何服务的任何客户端都将自动加载整个程序集。通过分解它们,您可以在不同的客户端应用程序之间降低内存使用率,并且只根据需要加载内容。从技术上讲,加载一个程序集要比加载多个程序集快,但如果您在感知性能方面懒得加载程序集,则加载速度不会快
加载程序集后,性能应该相同。部署在这里是一个大问题。如果所有这些功能都部署在一台机器上,我建议使用一个.dll,使用不同的名称空间进行行为分离。单个.dll将避免将来出现许多与.dll之间兼容的问题,并大大简化部署和安装
保罗不要过早优化。我会分离名称空间,直到您需要将它们作为本地优化连接起来。我喜欢将大型系统开发为几个独立的程序集/DLL,以促进体系结构的存在。之后,如果需要,您可以在部署前将功能重新打包到单个程序集中。如果您的服务要一起使用,请将它们分组到同一程序集中。我见过加载了无数个dll的系统(以及其中包含无数个项目的解决方案)没有一个实例需要挑选一个程序集而不是其他程序集。这并不妨碍您在名称空间中进行解耦和合理的分离 就性能而言,加载的dll数量没有真正的影响(如果您保持理智,不去加载数千个dll),但是如果您坚持VS的默认行为,并且喜欢复制每个项目的bin/debug目录中的每个引用,那么在开发中的影响是巨大的。在中到大的解决方案(1000个类)上,构建过程将更长、更令人沮丧 将程序集视为部署单元。如果要一起部署,请将您的东西放在同一个程序集中
作为一个警告,如果一个项目拆分成太多的程序集,会多么令人沮丧,请查看NUnit发行版。超过30个不同的dll,有些您必须引用才能进行单元测试,有些您不需要,最后您会寻找您需要的类型 .NET程序集代表了一个物理工件,用于打包您永远不应该用于架构的东西。换句话说,使用尽可能少的程序集,最好只使用一个.NET程序集。我建议阅读如何在程序集、命名空间、层和组件中对代码进行分区
- (8页)
- (7页)