2010-04-14 57 views
1

我对表达3层体系结构的不同可能性感到困惑。3层体系结构分层和术语混杂

Data-Access-Layer 
Business-Layer 
Presentation Layer (User Interface) 

Database (aka Backend) 
Business-Layer 
Presentation Layer (User Interface) 

为什么你可以跳过在第一方法的数据库?两者都使用数据库! 数据库是否属于分层?

什么是错,什么是正确的?

有人能澄清这一点吗?

回答

3
Data-Access-Layer 
Business-Layer 
Presentation Layer (User Interface) 

数据访问层不一定是一个数据库。它可能是一个XML文件。它可能是一个RSS提要。它可能是一个外部应用程序。它可能是任何你喜欢的东西,将数据导入你的应用程序。

所以这是真的:

[Data-Source] 
Data-Access-Layer 
Business-Layer 
Presentation Layer (User Interface) 

其中[Data-Source]是数据库,XML,RSS,什么...我更愿意认为该数据源本身作为一个司机,而不是一个层。

此方法的灵活性允许您在不触及应用程序的其余部分的情况下更换数据源。因此,如果您开始使用XML文件作为后端数据,然后您想要将其更改为数据库,则只需触摸DAL层 - 只要它仍然获得,DAL层的其余部分就不会在意数据格式相同。

+0

术语数据源是interssting。对我而言,这个术语表示数据库没有逻辑。这个假设是正确的吗? 什么时候我的数据库包含整个业务逻辑?我是否还有业务层? – Rookian 2010-04-14 12:01:18

+0

您会发现很多关于将业务逻辑放入数据库是否“正确”的讨论。如果您决定将数据库服务器从MS SQL更改为MySQL,会怎样?突然你必须重写你的业务逻辑。如果您完全删除数据库并使用XML,那该怎么办?你的逻辑消失了。此外,如果您的业务逻辑在数据库中毫无意义,那么您将在两个地方维护业务逻辑 - 一个糟糕的主意。其他时候,业务逻辑只能在数据库的上下文中运行。你必须根据你的具体情况来定制抽象 – 2010-04-14 12:05:56

+0

http://en.wikipedia.org/wiki/Business_logic从两个角度提供文章。 – 2010-04-14 12:09:58

0

你认为你的dal可能不会使用一个数据库它可以使用一个XML文件?

第一种方法是使用更抽象的概念,即3层图层。

每层中的东西取决于层的实现。 Yuo可能会发现你在GUI/DB/BizLogic的'程序'之间混合了你的图层,但是在抽象中你仍然保留了这些图层。

数据访问层
业务层
表示层(用户界面)

考虑到上述可能WIRTE连接到你的数据库的代码。那是DAL还是逻辑?

我会认为你正在写代码来访问数据的DAL。

0

表示层
这是应用程序的最高级别。表示层显示与诸如浏览商品,购买和购物车内容等服务有关的信息。它通过将结果输出到网络中的浏览器/客户端层和所有其他层来与其他层进行通信。
应用层(业务逻辑/逻辑层/数据访问层/中间层)
逻辑层从表示层抽出,并作为其自己的层,通过执行详细处理来控制应用程序的功能。
数据层
该层由数据库服务器组成。这里存储和检索信息。该层保持数据中立,并且独立于应用程序服务器或业务逻辑。为数据提供自己的层也提高了可伸缩性和性能。

参见下面的更多细节:
http://en.wikipedia.org/wiki/Multitier_architecture

0

微软的模式和实践小组有一个很好的architecture guide,经历了这个问题的所有变化。它稍微专注于.NET,但非常适用于任何环境。强烈推荐。