【发布时间】:2012-04-10 21:44:20
【问题描述】:
在一个典型的 N-Tier 应用中,我对层级的理解如下:
DAL - 与 db 交互的代码 BLL - 业务规则(这与 DAL 有何不同?它是否调用 DAL?什么是示例 BLL 类?)
表示层
另外,“服务层”在哪里出现?
【问题讨论】:
标签: architecture
在一个典型的 N-Tier 应用中,我对层级的理解如下:
DAL - 与 db 交互的代码 BLL - 业务规则(这与 DAL 有何不同?它是否调用 DAL?什么是示例 BLL 类?)
表示层
另外,“服务层”在哪里出现?
【问题讨论】:
标签: architecture
好吧,让我们从 DAL 开始。 它可以让您在编写 BLL 时忘记 DB 的所有问题。即:DAL 负责插入、选择、更新、删除操作,负责事务,执行存储过程等。 你如何在现实生活中使用它?假设您的数据库中有一个表 TBL1 。在 DAL 中创建一个名为 Tbl1Adapter 的类。使用虚拟方法 CreateRecord、GetRecord(id)、UpdateRecord(id, newData)、DeleteRecord(Id)。您的 BLL 将调用此方法。但是 Tbl1Adapter 类会在里面做数据库工作。它将调用存储过程或将 SQL 命令发送到 DB 或将使用一些棘手的 DB 驱动程序来满足您对 BLL 的要求 :) 除了 DAL 不仅意味着数据库,它还可以用于处理 ASCII 文件、输入设备、别的东西。 该层提供数据。
接下来是 BLL: BLL 就是处理您的数据。它从 DAL 获取数据,并将数据提供给 DAL 以保存它。但是所有对数据的操作都出现在 BLL 中:数字相乘,条件 (IF...THEN...) 已满,其他一些火箭科学逻辑被执行......所以 BLL 是您应用程序的核心。 这一层是您的应用程序的大脑。
表示层: 这是最容易理解并且开发起来非常有趣的一种。这完全取决于您的应用程序如何呈现其工作结果。它可能是一个带有数据网格和按钮的窗体,它可能是一个网页,它可能是一些很酷的音频界面。 这一层是您应用程序的一面:眼睛和耳朵从用户(或其他系统)获取数据,嘴巴向用户(或其他系统)提供数据。
嗯,服务层有点棘手。 它通常是其他应用程序的 API。假设我有一个可以乘以数字的网络服务。它被称为 MegaBrain :) 您有一个应用程序,它从用户那里获取两个数字。但是,您决定使用我的 MegaBrain 的服务,而不是在您的应用程序中实现 BLL - 给他这些数字并取回结果。 所以服务层是……嗯,我不知道怎么用两个词来形容。服务层让您的应用程序使用另一个应用程序的 BLL。它类似于 DAL,但数据访问层只存储和提供数据,而服务层对输入数据执行一些操作并产生一些结果(返回乘法结果或打开电视;)
【讨论】: