通过多层架构中的各层传递业务实体

Vah*_*eri 5 architecture entities business-logic-layer architectural-patterns

目前,我正在开发一个利用多层体系结构的项目,如Application Architecture Guide 2.0中所述,它具有5个层(DAL,BLL,Facade,表示层和公共层)。
在这里,我们有一个业务逻辑层,它由业务组件和业务实体(它们是使用O / R映射器生成的实体)组成,通常我们需要在表示层中使用该实体来绑定数据并将其呈现给用户,因此我们会对这些实体进行气泡处理直到其他层的Presentation层。

现在的问题是:
这是正确的方法吗?(据我的定义,如果我们应该共享这些内容,则应将它们放置在“公共层”中,以便可以在所有层中使用它们)。我们不应该将这些实体移到公共层吗?还是我们应该定义诸如数据传输对象(DTO)之类的东西,然后将它们传递给各层(当然这似乎是多余的)。

任何澄清将不胜感激。

gui*_*e31 3

适当分层的应用程序通常会使用 DTO 来防止业务实体被掺假和扭曲,以满足其他层的需求等。

但是,在非常小的应用程序中,您可以免除 DTO 映射的负担,并将业务实体一直传递到 UI。您可以将它们保留在 BLL 中,如果所有层都引用它,那就不会那么引人注目了。无论如何,它不再是真正的分层应用程序,因为您将架构压缩为一个大层。

Mark Seemann 有一篇关于这个问题的有趣博客文章