BAL在3层架构中的用途

时间:2012-08-02 14:27:25

标签: c# asp.net

我是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写的那样。

3 个答案:

答案 0 :(得分:1)

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

你的用户界面可以这样做:

//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;

答案 1 :(得分:0)

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

通常你有两个选择。

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

在业务层中实施业务逻辑

答案 2 :(得分:0)

存在业务层以提供放置业务逻辑的位置。数据访问逻辑除了对数据库创建,检索,更新和删除(CRUD)操作外什么也不做。表示层应该只有确定用户如何与系统交互的逻辑。

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