日期:2014-05-18  浏览次数:20841 次

哪位高手讲讲三层架构我在网上找了好多资料还是看不懂
所以这些时间是不够的,如果要问我这个时间要多少,也就是说到了2年多去了。具体时间也说不好

重点理解不过来的是,数据层与业务层是怎么对接的,业务层与表示层又是怎么对接的。

------解决方案--------------------
函数调用啊,

比如用户登陆,在点击登陆按钮后就是UI层,在这里得到用户输入的用户名密码,然后调用处理层的处理函数,进行处理,如果数据没有格式上的问题就向数据层要数据,再进行比较,如果没问题就返给表示层

代码贴点吧
UI层的登陆按钮后的代码,得到数据传给处理层,并接受来自处理层的异常,处理层如果发现数据有问题就报异常给UI层
 private void loginButton_Click(object sender, EventArgs e)
{
UserManagerBLL manager = new UserManagerBLL();
try
{
this.User = manager.LoginSys(this.userNameTextBox.Text, this.passwordTextBox.Text);
this.DialogResult = DialogResult.OK;
}
catch (VerifyInputException vex)
{
if (vex.FieldName == "UserID")
this.userNameTextBox.Focus();
else if (vex.FieldName == "Password")
this.passwordTextBox.Focus();

this.toolStripStatusLabel1.Text = "录入错误:" + vex.Message;
}
catch (BllException bex)
{
this.userNameTextBox.Focus();
this.toolStripStatusLabel1.Text = "系统提示:" + bex.Message;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "软件执行错误!");
}
}
处理层代码,在这里处理表示层发来的数据,如果数据格式不对,就报异常给表示层,
 public User LoginSys(string userID, string password)
{
verifyInput("UserID", userID, 1, 20, "用户名录入错误!");
verifyInput("Password", password, 1, 20, "密码录入错误!");

UserDal dal = new UserDal();
User user = dal.GetEntity(userID);

if (user == null || user.Password.Trim() != password.Trim())
throw new BllException(BllExceptionType.PasswordError, "用户名或密码错误!");
return user;
}

数据层的方法一样,写法应该很多,看你具体怎么写了,我理解的所谓三层就是一种设计的理念,是一种分层的结构,主要还是为了代码的低耦合,为以后扩展和维护代码提供方便,
------解决方案--------------------
使用接口对接哦。
------解决方案--------------------
基本上,如果你能够把关于业务的大部分核心工作共用于通讯结构完全不同的项目中,例如一个是asp.net的而另外一个是winform的,或者一个是实现大规模市场零食的另外一个是实现税务审计的,总之是差别天壤之别的项目可以通用一个业务层,那么这就肯定是(至少是)三层的了。这就是集中在表现层的设计跟集中在业务控制逻辑层的设计——前端设计师关注的设计跟管理控制人员关注的设计——已经经过实践、相对脱离开了。
------解决方案--------------------
刚做项目头两年就算了,不用太纠结这个了。这不是你要想的。