.NET N层架构:如何处理Model对象?

Fun*_*nky 8 .net c# architecture n-layer

我正在使用ASP.NET Web表单C#从头开始创建解决方案.

我担心模型对象,因为我不想在每个层中创建重复的模型对象集.在3层体系结构中使用Model对象的最佳实践是什么Web Forms

我想到的结构如下:

  • UI
  • BLL
  • DAL
  • 模型

模型将包含可在层的每个部分中使用的所有模型.我认为这将是有用的,因为每个层都需要访问模型对象.例如:

  1. UI调用BLL中的方法传递填充数据的模型对象.
  2. BLL调用DAL中的方法传递保存在数据库中的对象等.

谢谢

Ada*_*rth 8

模型可能是您的图层的交叉问题,这是一种快速的方法.或者你可以为你的模型创建接口,这样你就可以简单地在BLL之类的东西中充实界面 - 这至少可以阻止它横切.

它还取决于您的模型是简单的数据容器(贫血域模型),还是包含行为,例如自我验证或跟踪变更本身的能力(富域模型).

您可以发现您的DAL实际上由两部分组成:样板 - 从不特定于与数据库通信的应用程序代码,以及特定于应用程序的填充模型代码.我们有这种情况.我们共享模型的接口,特定于应用程序的DAL代码可以使用此接口来推送和提取模型中的数据,但"真正的"DAL代码可以使用原始内容.


Wou*_*ort 5

在一个相对较小的应用程序中,您可以共享您的Domain Entities所有方式,Presentation layer但要注意这引入的耦合.

如果您的数据绑定,你除了类型的实体Customer与属性AddressStreetLine1StreetLine2属性,则所有的层紧密结合在一起,在一个层的变化可能会引起其他层的变化.

因此,您的决定应该基于项目的规模和您可以拥有的耦合量.

如果你选择低耦合设计,那么你BLL将使用你DAL来检索实体并使用这些实体来执行行为.然后BLL将使用Data Transfer Objects传递给你,Presentation layer所以你presentation layer和你之间没有联系Domain Model.


Dav*_*ras 1

看看我在这里的答案:/sf/answers/523205021/ \xc2\xa0这是我做事的常用方式并且效果很好,不仅适用于 MVC 和实体框架......事实上在 MVC 模型中可能是一种实体类型,它只具有较低层中定义的真实业务实体所包含的一些字段,这取决于您是否真的绝对需要 UI 级别中的所有字段,还是只需要一些字段来执行一些数据渲染和输入。 .\xc2\xa0

\n