N级问题

时间:2012-04-10 21:44:21

标签: architecture

在典型的N-Tier应用程序中,我对层级的理解如下:

DAL - 与db交互的代码 BLL - 业务规则(这与DAL有何不同?它是否称为DAL?什么是BLL类示例?)

表示层

此外,“服务层”在哪里进入所有这些?

1 个答案:

答案 0 :(得分:2)

好吧,让我们从DAL开始吧。 当你写BLL时,它可以让你忘记DB的所有问题。那就是:DAL负责插入,选择,更新,删除操作,处理事务,执行存储过程等。 你如何在现实生活中使用它?假设你的数据库中有一个表TBL1。在DAL中,您将创建一个名为Tbl1Adapter的类。使用伪方法CreateRecord,GetRecord(id),UpdateRecord(id,newData),DeleteRecord(Id)。你的BLL会调用这种方法。但是Tbl1Adapter类会在里面做DB工作。它将调用存储过程或将SQL命令发送到DB或将使用一些棘手的DB驱动程序来满足您对BLL的愿望:)除了DAL并不仅仅意味着数据库,它可能用于处理带有输入设备的ASCII文件,别的。 该层提供数据。

接下来是BLL: BLL就是关于处理数据的。它从DAL获取数据,并将数据提供给DAL以保存它。但所有带数据的操作都出现在BLL中:数字成倍增加,条件(IF ... THEN ...)fullfiled,其他一些火箭科学逻辑被执行......所以BLL是你应用程序的核心。 这一层是你应用程序的大脑。

表示层: 这个是最容易理解的,也是非常有趣的。这完全取决于您的应用程序如何呈现其工作结果。它可能是带有数据网格和按钮的Windows窗体,它可能是一个网页,它可能是一些很酷的音频界面。 此图层是应用程序的一个面:用户(或其他系统)获取数据的眼睛和耳朵,以及向用户(或其他系统)提供数据的口。

嗯,服务层有点棘手。 通常它是一些其他应用程序的API。假设我有一个可以乘以数字的网络服务。它被称为MegaBrain :) 你有一个应用程序,它从用户那里获取两个数字。但是,不是在您的应用程序中实现BLL,而是决定使用我的MegaBrain服务 - 给他这些数字并取回结果。 所以服务层是......好吧,我不知道如何用两个词来形容它。服务层让你的应用程序使用另一个应用程序的BLL。它类似于DAL,但数据访问层仅存储和提供数据,而服务层对输入数据执行一些操作并产生一些结果(返回乘法结果或打开电视;)