EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

萧闫子 发表于 2014-1-10 14:36:41

[设计模式] AgileEAS.NET平台开发实例-药店系统-BLL层分析

介绍      上篇我们分析了AgileEAS.NET平台的DAL层的设计与相关的使用说明分析,本篇我们来分析下业务逻辑层/服务层的设计与分析,并且分析下如何抽离单独的业务逻辑
层,分离出单独的分布式访问服务支持。我们主要是分析如何设计出严格的基于现有DAL层之上的BLL->服务层>UI层这样的分层设计模式,本系列中的药店系统则采用的分层
方式是DAL->BLL层->UI层,下面我们来分析下这2种的不同的实现方案及代码的组织,并且分析关于分布式服务支持的写法和内部的实现原理分析。
大纲         1、DAL->BLL层->服务层->UI层。
         2、DAL->BLL层->UI层。
         3、AgileEAS.NET平台的分布式访问支持的契约分析。
DAL->BLL层->服务层->UI层         我们先来看看大家比较关系的将业务层与服务层职责相分类的实现方案。
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351249407.png
         通过上图我们知道这个分层架构中每层的职责,那么下面我们将会对每层的职责进行一个严格的划分和设计说明:
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351256276.png
         既然DAL层我们不添加任何的内容,那么我们把跟该实体相关的业务逻辑添加到BLL层,下面我们来看看。
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351253178.png
         有了相关的业务逻辑层我们就可以在服务层完成一些业务逻辑流程的组织:可以理解成服务层就是通过外观模式来控制业务逻辑流程的外观层。
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351265620.png
         综上所述,服务层就相当于一个业务逻辑流程的粗粒度的接口,当然我们在服务层与业务逻辑层之间通过DTO来传输数据。
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351267191.png
         关于上述架构的组织,我会在后续的案例场景中单独的写出一些使用该架构的案例结合AigleEAS.NET来完成。
DAL->BLL层->UI层         本节来分析下,我们之间通过BLL层来完成相关业务逻辑及业务流程的组织,例如上篇讲述的关于药品出库操作时的业务流程管理。
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351277997.png
         上图中描述了业务逻辑层的职责:
         我们来看看药品出库操作时的相关业务逻辑层业务:
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/20110401135127439.png
         2、我们看到了每个业务逻辑中的写法与平时我们的写法差别不大,下面我们来解析下内部的具体实现原理和使用分析:
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351282881.png
          3、上面我们还没有查看如何使用事务来执行批量操作呢?这也是该AgileEAS.NET平台的亮点之一,通过委托来执行事务,很方便的书写批量的事务操作。
          http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351296403.png
         4、下面我们来看看具体的调用事务执行的函数定义与委托定义:
         函数的委托定义:
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351297765.png包含自定义参数
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351308812.png不包含自定义参数
      5、调用事务执行方法定义:
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351307633.png
         6、通过上面我们就知道了委托事务的执行思路了,可以参考着自己实现一遍,当然可能还有更好的解决方案,不过我觉得这样的写法,写起来比较不错。
AgileEAS.NET平台的分布式访问支持          本节我们来分析下AgileEAS.NET平台实现分布式访问的原理解析,当然具体的实现,我这里可能也给不出具体的实现代码。
          目前平台主要是支持如下几种格式的分布式访问:
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351319760.png
         下面我们来一步步分析分布式访问的内部实现原理
          1、下面我们来分析下这个服务IOC容器的内容:
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351316662.png
          2、查看服务组件基类的相关定义:
         http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351328025.png该类只是定义一个契约,满足该契约的类都可以支持分布式服务。
          3、查看“SessionObject的内部定义”
          http://images.cnblogs.com/cnblogs_com/hegezhou_hot/201104/201104011351324055.png
         4、通过上面我们知道,AgileEAS.NET平台使用MarshalByRefObject来支持分布式访问,所以下面我们只需要实现好业务逻辑层中的业务逻辑即可。关于具体的使用及
分布式服务的配置,会在后面的应用部署模块中详细的阐述如何部署分布式访问。
总结      本篇也是分析了关于分布式访问的实现方案和原理进行了分析,关于具体的配置和如何使用分布式服务等,后续会在模块的应用部署及配置的环节中详细的阐述,当然
由于本人的水平有限,或者是对AgileEAS.NET的研究程度不深刻,所以部分讲述的不清楚或者不明白,还请大家批评指出。

zpklfruV 发表于 2014-5-19 14:41:36

路过!!!
不发表意见……

页: [1]
查看完整版本: [设计模式] AgileEAS.NET平台开发实例-药店系统-BLL层分析