Design patterns 创建n层应用程序

Design patterns 创建n层应用程序,design-patterns,n-tier-architecture,Design Patterns,N Tier Architecture,我不熟悉设计模式。我想学习构建三层体系结构。我已经搜索过了,但在某些方面感到困惑。在本文中,作者添加了另一个层,名为业务对象层。在我看来,将数据从一层传输到另一层是非常有用的。由于这一层只包括业务对象,我们可以将这一层的引用添加到其他层,这不会违反规则 但是其他一些文章,他们正在使用DTO。使用这种方法,我们必须在DAL和BAL之间转换数据 我认为使用业务对象层更合理、更容易,我看不出使用它有任何缺点 请帮我找到一个稳定的解决方案。谢谢,因为您在整个应用程序中全局使用业务对象,拥有自己的层是可行

我不熟悉设计模式。我想学习构建三层体系结构。我已经搜索过了,但在某些方面感到困惑。在本文中,作者添加了另一个层,名为业务对象层。在我看来,将数据从一层传输到另一层是非常有用的。由于这一层只包括业务对象,我们可以将这一层的引用添加到其他层,这不会违反规则

但是其他一些文章,他们正在使用DTO。使用这种方法,我们必须在DAL和BAL之间转换数据

我认为使用业务对象层更合理、更容易,我看不出使用它有任何缺点


请帮我找到一个稳定的解决方案。谢谢

,因为您在整个应用程序中全局使用业务对象,拥有自己的层是可行的。因为业务对象不是特定于实现的,所以它们不应该将您与任何外部依赖项紧密耦合。这是假设您没有使用数据访问技术,例如Linq to Sql,在这种技术中,对象上需要特定于Sql的代码

然而,在过去的几年里,我已经转向了“洋葱建筑”的设计。我将业务对象(实体)和接口保存在核心项目中。我将所有业务代码和特定于实现的代码添加到服务项目,最后是标准UI项目。UI和服务项目都只知道核心。我的所有服务都实现了核心中的一个接口,我的UI代码是根据核心接口编写的,而不是服务的具体实现。通过这种方式,我的UI和我的服务完全解耦,彼此不了解。这个模式也可以扩展到包括其他项目(我使用基础设施来处理横切问题,比如日志记录)

不过,对于n层方法,我认为业务对象层是不错的。您还可以将某种本机数据记录(C#中的DataTable等)返回到业务层,将对象保留在其中,并包含一个接受本机数据类型的构造函数