我正在使用EF - >存储库/ UnitOfWork - >服务 - > MVC 3分层方法,我只是想知道使用单独的程序集或组合程序集中的某些逻辑层有什么好处/缺点。
基本上我要问的是,如果你编写一个契约(接口)而不是一个实现,你可以在一个程序集中做到正确吗?
答案 0 :(得分:4)
使用装配体,您可以仅使用内置工具强制执行分层。
但是,您可以使用命名空间实现相同的效果。您只需要一个能够验证名称空间依赖关系的工具,例如NDepend。
接口与此讨论无关。它们提供编译时间分离。运行时依赖性仍然存在。只是静态不可见。
从构建性能的角度来看,通常更喜欢较少的程序集。它们有时也会妨碍(“检测到循环参考!”)。
答案 1 :(得分:2)
单独组件的另一个优点是更容易重用和交换组件。例如,如果您想为同一个应用程序创建一个WPF前端,您可以使用与MVC3项目相同的层,只需交换WPF应用程序的Web项目。将应用程序的明确区域分开,以便以后更容易更改它们,这是很有意义的。
答案 2 :(得分:1)
使用多个程序集意味着您可以通过内化某些接口和类来强制执行“隐藏”和“公共”接口,这样它们只能由同一程序集中的类使用 - 这意味着您可以使用辅助程序和扩展类来实现给定层,你不会只是说“草皮”并在不应该的地方使用它们。
这是一种强制执行方法的分层特性的方法,只使用命名空间等不能。