我的工具集之业务层
继上一篇”Db层”的贴子之后,我们再来聊聊业务层.这个老掉牙的话题,只稍微聊聊就好了,即使深挖三尺,也就那个样子.
额,还是说些正经的,它的作用是承上(Db层)启下(UI层).结束了?嗯,结束了!从Db取数据部分交给Db层处理,展示数据部分交给UI层处理,其他的部分,就可以交给业务层了.唉,它其实也挺累的啊,一个人打两份工,没事还要无偿加个班.而且经常背负着骂名,有问题一般先找业务层,谁让它看不见,摸不着呢,唉,真背!
至于业务层分几层,就是仁者见仁,智者见智的事情了,不要在这里钻牛角尖,你把业务层再分5层,只要有道理,好用也没关系的.
这里只说下它的特别点,其他部分大家看代码就好了.
1.针对不同的软件开发方式,各创建一项目文件与之对应,如WebForm和WinForm,当然还会有个Base基础做为公用类库使用.如图-1所示.这是为以后开发其他类型的软件做准备的,比如开发WPF,SL之类的.
图-1
2.Base公用类库中,类库根据接口定义,由逐个类分别实现.在BaseService中继承常用接口.哪些不常用的方法,使用时直接ILogHelper item_loghelper = LogHelper.CreateInstance();这样调用即可.如图-2所示
图-2
图-3
BaseSerivce写好后,则WebForm 和WinForm的方式就可以直接继承它,然后在此基础上扩展它本身的类库了.
3.在这套”类库”中,有一个概念要说下:”数据域”.在以前的管理软件中,开发的最小单位应该是页面,这里面的最小单位是数据域,也就是说,数据域是被页面所使用,或者说包含其中.
一个页面可能会有多个数据域.举个例子,一个单据页面,有工具栏,tab控件(包括5个面板).那么这个页面就会有5个数据域,每个数据域负责加载一个面板数据.当然,收集数据也要用到数据域.而工具栏的数据,也是通过数据域获取的.
再举个例子,一个列表页面,如图-4所示.包括工具栏,检索栏(包括两个按钮)和网格控件
图-4
使用数据域的方式,如图-5所示.工具栏的项目存储也是通过数据域的方式存储的,调用时只需传入一个参数即可.其他的按钮,右键菜单之类的都是如此.
如何形容”数据域”这个概念呢?或者说我为何要使用它呢?简单说,就是在页面级别上再细化一层,更加灵活咯.
图-5
4.BaseEntity这个类是实体类的祖先.在此类库中所有实体类均需继承此类,它无非是封装了一个常用的方法.如反射方式取值和赋值等.如图-6所示.它继承了一个接口
图-6
5.还有另外一个接口,就是纯业务层的接口祖先,如图-7所示.业务层中最容易变化的部分就此登场了.它是啥作用呢?就是管理类软件中,真正的行业业务.这部分东西可以脱离于软件本身存在,而这部分东东,是非常容易变化的,为啥呢?i.客户对它本身的需求不清楚.ii.我们对客户的需求不清楚.这下好了,两边都不清楚的事情,一块做的后果,大家懂的,不说了.我们看看接口定义完是如何使用的?如图-8所示
图-7
图-8
文章导航
代码地址
http://u.115.com/file/e60sh8gj#
Navi.Kernel.Service.Base.rar
提取码:e60sh8gj