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

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

传参数与传实体

       窗体登录实例的的UI层是接收用户操作的最外层,数据经它转交给BLL层,现在先看下我们用以往传参数的方式,来编写的登录按钮click事件

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

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

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

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

       传实体的方式很好的解决了这样的安全隐患,所以在三层架构中虽然各个层次的程序集只是引用实体,但是它的作用不可小觑。

返回实体与返回DataTable

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

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

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

你可能感兴趣的:(【.NET】)