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

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 515|回复: 1
打印 上一主题 下一主题

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

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12396

社区QQ达人

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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

1

主题

716

帖子

1133

积分

BIM项目负责人

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

积分
1133
2F
发表于 2014-5-19 14:41:36 | 只看该作者
路过!!! 不发表意见……
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-9-28 10:18

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表