0

我是 3 层架构的新手,因为它由 UI、BAL 和 DAL 层组成。所以我在 DAL 中编写所有数据库代码,我已经在 BAL 中声明了变量,我已经在 UI 中调用了这些方法,但这是是正确的编码方式??我的 BAL 在做什么?业务层的主要目的是什么?谁能解释我,谢谢。

 //In my BAL



public class ProfileMasterBLL
{
    public int UserId { get; set; }
    public string FormFiledBy { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

}

//在我的用户界面中

 ProfileMasterBLL pmBLL = new ProfileMasterBLL();
        pmBLL.FirstName = TextBox1.Text;
        pmBLL.LastName = TextBox2.Text;



//In my DAL 

insert() 方法

那么我该如何调用 ProfileMasterBLL.insert() 呢?正如我在 DAL 中所写的那样。

4

3 回答 3

1

业务层用作 UI 和 DAL 之间的中间人。它用于您的应用程序将包含的任何或所有业务逻辑。例如,在会计应用程序中,您可能希望在将数据发送到数据库层之前对数据执行一些计算和检查,您可以在业务层中执行此操作。

您的 UI 可以执行以下操作:

//establish person object
//pass in some salary with it to BL
BL.CalcPay(somePerson, someSalary);

然后在你的 BL 中:

//inside of BL
//if its a CEO they are lucky, they get paid twice as much
 decimal toGive = someSalary;
if(somePerson.IsCEO)
 toGive = toGive * 2; //CEO gets paid more :(

//now call DAL
DAL.CalcPay(somePerson, toGive)

然后在你的 DAL 中:

//inside of DAL
//perform some update by calling for instance a sproc
using(SQL....)
{
}

不是最好的例子,但它应该明白这一点,很多时候你的 BL 什么都不做,只是将方法调用交给 DAL。仅仅因为它是 BL 并不意味着它必须有某种与之相关的检查。所以你最终可能会做这样的事情:

//inside UI
string s = BL.GetSomeString();

//inside BL
return DAL.GetSomeSomeString();

//inside DAL
return someString;
于 2012-08-02T14:30:44.863 回答
0

业务层的作用是执行业务规则,例如验证您的实体,在实体上执行业务规则,在实体上执行业务功能。

通常你有两个选择。

在存储过程中实现业务逻辑

或者

在业务层中实现业务逻辑

于 2012-08-02T14:31:53.673 回答
0

业务层的存在是为了提供一个放置业务逻辑的地方。数据访问逻辑应该只对数据库进行创建、检索、更新和删除 (CRUD) 操作。表示层应该只有决定用户如何与系统交互的逻辑。

例如,如果您在 UI 中单击“添加用户”,这可能会调用业务层中的 BAL.AddUser() 方法,然后该方法会调用多个数据层方法,例如 DAL.AddUser() 以插入用户,然后DAL.AddUserToGroup() 将新用户放入默认组。

于 2012-08-02T14:35:11.120 回答