我正在使用EF --> Repositories/UnitOfWork --> Services --> MVC 3分层方法,我只是想知道使用单独的程序集或在程序集中组合一些逻辑层的好处/缺点是什么。
基本上我问的是,如果你编程到一个契约(接口)而不是一个实现,你可以在一个单一的程序集中完成它,对吗?
发布于 2012-08-28 02:58:44
通过使用程序集,您可以仅使用内置工具来强制分层。
不过,使用名称空间也可以达到同样的效果。您只需要一个能够验证名称空间依赖关系的工具,比如NDepend。
接口与本讨论无关。它们提供编译时分离。运行时依赖项仍然存在。只是静态不可见。
从构建性能的角度来看,程序集越少越好。它们有时也会妨碍(“检测到循环引用!”)。
发布于 2012-08-28 03:10:02
独立组件的另一个优点是更容易重用和交换组件。例如,如果您希望为同一应用程序创建一个WPF前端,则可以使用与MVC3-project相同的层,只需将Web项目交换为WPF应用程序即可。将应用程序中明显不同的区域分开,以便在以后更容易地更改它们,这是很有意义的。
发布于 2012-08-28 03:03:55
使用多个程序集意味着您可以通过内部化某些接口和类来强制执行“隐藏”和“公共”接口,以便它们只能由同一程序集中的类使用-这意味着您可以为给定层提供帮助程序类和扩展类,而不是只说"sod it“并在不应该使用它们的地方使用它们。
这是一种强制执行方法的分层性质的方法,仅使用名称空间等无法做到这一点。
https://stackoverflow.com/questions/12147771
复制相似问题