十一、EnterpriseFrameWork框架的分层与系统业务的结合
上章详细讲了EnterpriseFrameWork框架中的每个分层,这都是从技术层面来说明,也就是我们知道怎么来建一个控制器或一个业务对象,但开发过程中应该建一个什么样的控制器或业务对象了?本章的主要内容是说明根据系统业务、客户需求如何来设计合理的控制器和业务对象。
文件要点:
1.粗略介绍系统分析设计过程
2.框架分层结构怎么结合业务
大概介绍一下我对开发一个系统的分析设计过程吧,决定开发某个系统后,肯定是先了解系统相关业务内容,根据自己的见识这个应该属于哪一类的系统,是类似进销、还是收费系统或其他,也在网上也找找有没有类似业务的系统;这些在开发一个系统前都是很值得参考与分析的资料;这样你心里也有了个底,自己团队能不能做出来,要花多长时间、多大资源才能完成;心里有底后就可以三板斧完成整个系统分析设计过程,
第一,根据客户需求,结合业务场景画出一些业务活动图、用例、实体等
第二,接着根据经验或理解了设计出界面原型和数据库结构
第三,然后针对关键性系统问题进行领域分析得到领域对象模型
这样系统的分析设计已初步完成,然后就是把设计转化为代码,以后随着对业务的深入理解而进行不然迭代提升;而且个人觉得用例图与领域模型可以很好的帮助自己在业务方面的理解;
再看下面几个问题在修改代码的时候经常碰到,
1)修改一处联动性功能问题,往往一串代码文件,因为把实现代码分散在多个代码文件中而没有放在一个文件中;
2)修改一个关键性系统问题,往往会修改多个模块的代码才能彻底解决,因为你并没有把解决这个问题的代码封装成业务对象;
解决这两个问题就是我们的代码的分布一定要与实际业务要对应;让我们可以快速找到需要修改的代码并花最小代价完成修改;
用例:是描叙在逻辑上相对完整的功能流程;
领域模型:专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系;
我们把用例和领域模型换成纵向和横向两个角度来看上面两个问题,一个联动性很强的功能问题都对应着某个用例,而关键性系统问题都应该进行领域分析得出领域对象模型;所以把修改内容控制在一个用例中或一个领域对象模型中,就很容易控制和实行;与功能问题密切相关的不就是界面与Controller控制器,而与系统级问题相关的不就是ObjectModel业务对象;
Controller与ObjectModel没有包含或被包含的关系,两者完全是平级的;一个Controller可以调用多个Object,而一个Object同样可能被多个Controller调用;为什么这么对应,也是方便更容易的理解代码,保持代码阅读的连贯性;如果在代码设计过程中没有一个指导性思想,是很容易混淆代码文件的,如:纠结的是一个类或方法不知道放在哪更合适,就跟给多个控件或变量起名一样困难;
由此在项目中使用框架的过程中,反过来再看之前的系统业务分析与设计得出:框架中的Controller对应业务中的用例,ObjectModel对应业务中的领域对象模型;见下图

由于本章的内容没有什么具体的代码和实例,都是一些形而上的见解,所以难免会有个人的局限性,但是说的都是在实际项目中的经验和领悟;这些东西个人觉得讲解一些个人经历来进行引导性思考,比摆出一套完整的理论应该更合适;比如系统分析师或系统设计师,不可能通过学习两本大牛的书籍就能成为的,而是不断在项目中通过你的经验累积磨练而成的,一个系统设计师把自己的方法与套路交给你,而你也不是学会了就能够成为一个系统设计师的;既然这样那还不如讲讲个人经历,讲讲走到每个阶段的心情与感悟,这样可能会更容易产生共鸣;
十一、EnterpriseFrameWork框架的分层与系统业务的结合的更多相关文章
- 十、EnterpriseFrameWork框架的分层架构及意义(控制器、业务对象、实体、Dao之间关系)
本章内容主要包括两个方面,一.是框架分层(控制器.业务对象.实体.Dao)的详细说明,二.是对比常用三层结构的区别和优势: 本文要点: 1.框架中的各个分层详细说明 2.对比常用三层结构的区别和优势 ...
- 十八、【开源】EnterpriseFrameWork框架核心类库之Winform控制器
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WinContro ...
- 十七、EnterpriseFrameWork框架核心类库之Web控制器
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WebContro ...
- 美团分布式服务通信框架及服务治理系统OCTO
一.什么是OCTO 定义: OCTO是美团的分布式服务通信框架及服务治理系统,属于公司级基础设施,目前尚未开源. 目标: 为公司所有业务提供统一的服务通信框架,使业务具备良好的服务运营能力,轻松实现 ...
- 一、EnterpriseFrameWork框架总体介绍
EnterpriseFrameWork框架是自己在工作之余的得意之作,经过了几年时间的不断重构,现在终于有了现在的样子:刚开始只是为了方便开发WEB系统,随着项目越做越多,新的功能也就不断补充进去,补 ...
- 六、EnterpriseFrameWork框架基础功能之权限管理
回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理. ...
- 十六、【适合中小企业的.Net轻量级开源框架】EnterpriseFrameWork框架核心类库之单点登录SSO
回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U 单点登录(Single Sign ...
- 十二、EnterpriseFrameWork框架核心类库之与EntLib结合
从本章开始对框架的讲叙开始进入核心类库的讲解,前面都是对框架外在功能讲解,让人有个整体的概念,知道包含哪些功能与对系统开发有什么帮助.以后多章都是讲解核心类库的,讲解的方式基本按照代码的目录结构,这样 ...
- 基于SSH框架的网上书店系统开发的质量属性
基于SSH框架的网上书店系统开发的质量属性 对于我的基于SSH框架的网上书店系统的开发要实现的质量属性有可用性.可修改性.性能.安全性.易用性和可测试性. 1.对于可用性方面的战术: 可用性(Avai ...
随机推荐
- AngularJS快速入门指南06:过滤器
thead>tr>th, table.reference>tbody>tr>th, table.reference>tfoot>tr>th, table ...
- 【系统移植】Android系统移植
$ . .. Device . SimulatorWhich would you like] Build type choices are. release . debugWhich ...
- How to use AKBusGpsParser
step 01: sudo easy_install AKBusGpsParser step02: Let's see a sample #!/usr/bin/python #coding:UTF-8 ...
- paip.提升性能---协程“微线程”的使用.
paip.提升性能---协程的使用. 近乎无限并发的"微线程" 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:h ...
- paip.信用卡账单处理系统功能vO22
paip.信用卡账单处理系统功能vO22 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/att ...
- paip.Java Annotation注解的作用and 使用
paip.Java Annotation注解的作用and 使用 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog. ...
- MongoDB学习笔记——索引管理
索引 索引能够提升查询的效率.没有索引,MongoDB必须扫描集合中的所有文档,才能找到匹配查询语句的文档. 索引是一种特殊的数据结构,将一小块数据集保存为容易遍历的形式.索引能够存储某种特殊字段或字 ...
- 店商互联(北京)科技发展有限公司DS365.com
店商互联(DS365)是目前北京最为知名的社区便超O2O平台服务商,店商互联(DS365)通过自主研发的移动订货配送与网络营销服务平台,以移动互联网和大数据为技术支撑,为社区超市实体店提供手机订货.物 ...
- android: UriMatcher的用法
ContentProvider是Android四大组件之一,网上也有不少关于它的文章,基本用法都可以查到,但关于UriMatcher在其中的作用,文章中都有例子,但我觉得还没有说清楚. 先说为什么用U ...
- RFID 读写器 Reader Writer Cloner
RFID读写器的工作原理 RFID的数据采集以读写器为主导,RFID读写器是一种通过无线通信,实现对标签识别和内存数据的读出和写入操作的装置. 读写器又称为阅读器或读头(Reader).查询器(Int ...