传參数与传实体、返回实体与返表——三层架构登录实例

       用三层做窗口登录实例,与曾经做的《机房收费系统》相比,除了引入分层的理念外,最大的改观就是数据的传递由传參升级成了传实体,而查询数据库的返回结果也有了返回实体与返表的选择

传參数与传实体

       窗口登录实例的的UI层是接收用户操作的最外层,数据经它转交给BLL层,如今先看下我们用以往传參数的方式,来编写的登录buttonclick事件

 传參数与传实体、返回实体与返表——三层架构登录实例_第1张图片

       通过參数传递乍看起来清晰易读,可是这种程序耦合度太高,会为以后的数据变动和维护埋下隐患。比如,须要传递的数据添加了一个IDuser=mgr.SelectUserLogin(userName,password)行代码就要修改一次,如果再添加一个Level呢?难道需求每变动一次,就要修改一次代码吗?如今须要传递的參数才几个,如果做大一点的系统,面对十几二十个參数,每一个用到它的地方都要改,这样不累也会被烦死的。

       为了解决问题,实体对象应运而生,它把这些变化都封装到了一个类中,样例修改例如以下

传參数与传实体、返回实体与返表——三层架构登录实例_第2张图片

       传实体的方式非常好的攻克了这种安全隐患,所以在三层架构中尽管各个层次的程序集仅仅是引用实体,可是它的作用不可小觑。

返回实体与返回DataTable

       在上边我们使用了传实体的方式来避免传參数带来的安全隐患,那么数据到达最底层DAL后将以什么形式返回呢?在这里又出现了两种方式:返回实体or返回表,以下是返回实体的情况

传參数与传实体、返回实体与返表——三层架构登录实例_第3张图片

       DAL层须要对数据库进行查询和读取操作,上述样例在DAL层用了返回实体的方式来获取数据处理的结果。在这里实体的来源是DataTable进行属性的反射后得到的,但反射本身并不高效。使用实体,是为了符合分层规范而且能够使程序更加的面向对象,而DataTable性能好且更灵活,所以对于获取的数据量不大而且不须要对数据做太多处理的情况,返回实体应该是比較好的选择,反之则用DataTable。
 

你可能感兴趣的:(架构)