.net - 什么时候层应该作为单独的部署单元来实现?

标签 .net design-patterns data-access-layer layer

在设计应用程序时,应该在什么时候将各个层(例如表示层、业务逻辑层和数据访问层)分离到不同的程序集中?

最佳答案

如果您想以一种您可以选择的方式提供您的产品,您将主要在不同的库中分发类,而某些最终用户将无法访问整个项目的类。

考虑客户端-服务器应用程序。如果您有云计算场景,为什么要将服务器类分发给您的客户?您更愿意分发打包在与服务器无关的程序集中的表示和服务客户​​端类。这也是一种很好的安全做法。

在程序集中分离的另一个好处是避免将大型程序集加载到应用程序域 (AppDomain)。例如,如果您的程序的使用不需要图像处理加类,但也许每天的单个操作需要图像处理类,那么您将节省处理时间 - 将大型程序集加载到应用程序域时 - 和内存因为您的应用程序不需要包含所有内容的程序集,而且最终,您的应用程序使用的内存更少。

从架构的角度来看,在组件中分离会强制实现良好实践,这要归功于您会意识到不要混合层,因为例如,您不应该在表示组件中需要业务组件,所以,没有人可以直接从用户界面访问业务逻辑。

最后,在部署方面,您可以节省时间,因为您可以使用特定程序集更新模块化应用程序,简化上传过程或自动更新过程,因为下载时间减少,节省网络流量。

关于.net - 什么时候层应该作为单独的部署单元来实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5027362/

相关文章:

c# - 制作 DAL 的最佳方法是什么?

c# - 使用 TCP 发送和接收纯文本

.net - 根据分辨率调整表单/控件大小的最佳方法?

.net - 如何使用 SignalR 将事件从 Web Api 项目广播到不同应用程序池上的 MVC 应用程序

c++ 回调 - 虚函数的编译时替代方案

c++ - 我的组件需要访问者吗?

c# - 如何访问动态对象上名为 "base"的属性

c# - 解耦命令(模式)从接收者发送类?

c# - 在 NHibernate 中制作数据访问方法的最佳方法是什么?

c# - 为什么要避免动态 SQL 查询?有什么建议可以删除那里的坏部分并使用这些吗?