【发布时间】:2010-12-22 23:25:57
【问题描述】:
我有一个哲学问题,也需要考虑性能影响。
我们正在设计一个新系统,其中包含许多彼此不相关的子服务,但有些子服务可能会相互使用(我们使用统一来避免任何解耦)。
我的主要问题是:
- 我们是否应该将它们分解为单独的 DLL,其中每个服务都有自己的 dll(如 product.services.serice1.dll、product.services.serice2.dll 等),或者我们应该将所有这些服务整合到一个单独的DLL,具有不同的名称空间,将它们分开。 就性能而言,这两者有什么区别吗?另外,社区(和微软)认可的最“可接受”的标准是什么?
谢谢
【问题讨论】:
-
大家好,感谢您的所有意见;但是你们中没有人真正关注需要加载多个(超过 20 个)不同 dll 的效果,而不是单个大 dll。我想知道除了延迟加载的优势(我们暂时忽略部署困难)之外,是否存在加载大量 DLL 的风险?谢谢!
-
第一次访问时会加载 dll。因此,如果系统在启动时经历了一个初始化阶段,您可以调用 dll 来强制它们加载。这将避免“运行时”的性能滞后。 20 个 dll == dll 地狱。如果可能的话,我会合并。
-
它们只是具有不同的性能特征。加载一个大型程序集所需的总时间更少,但它同时发生,因此用户(或客户端系统,如果他们对时间敏感)更有可能感受到它。多组件方法需要更多的总时间来加载(如果您全部加载),但时间是分布的 - 因此每个加载事件不太可能产生重大影响。
标签: .net design-patterns architecture oop