在一个典型的 N 层应用程序中,我对层的理解如下:
DAL - 与 db BLL 交互的代码 - 业务规则(这与 DAL 有何不同?它是否调用 DAL?什么是示例 BLL 类?)
表示层
另外,“服务层”在哪里出现?
在一个典型的 N 层应用程序中,我对层的理解如下:
DAL - 与 db BLL 交互的代码 - 业务规则(这与 DAL 有何不同?它是否调用 DAL?什么是示例 BLL 类?)
表示层
另外,“服务层”在哪里出现?
好吧,让我们从 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,但数据访问层仅存储和提供数据,而服务层对输入数据执行一些操作并产生一些结果(返回乘法结果或打开电视;)