上章详细讲了EnterpriseFrameWork框架中的每个分层,这都是从技术层面来说明,也就是我们知道怎么来建一个控制器或一个业务对象,但开发过程中应该建一个什么样的控制器或业务对象了?本章的主要内容是说明根据系统业务、客户需求如何来设计合理的控制器和业务对象

文件要点:

1.粗略介绍系统分析设计过程

2.框架分层结构怎么结合业务

大概介绍一下我对开发一个系统的分析设计过程吧,决定开发某个系统后,肯定是先了解系统相关业务内容,根据自己的见识这个应该属于哪一类的系统,是类似进销、还是收费系统或其他,也在网上也找找有没有类似业务的系统;这些在开发一个系统前都是很值得参考与分析的资料;这样你心里也有了个底,自己团队能不能做出来,要花多长时间、多大资源才能完成;心里有底后就可以三板斧完成整个系统分析设计过程,

第一,根据客户需求,结合业务场景画出一些业务活动图、用例、实体等

      第二,接着根据经验或理解了设计出界面原型和数据库结构

      第三,然后针对关键性系统问题进行领域分析得到领域对象模型

这样系统的分析设计已初步完成,然后就是把设计转化为代码,以后随着对业务的深入理解而进行不然迭代提升;而且个人觉得用例图与领域模型可以很好的帮助自己在业务方面的理解;

再看下面几个问题在修改代码的时候经常碰到,

1)修改一处联动性功能问题,往往一串代码文件,因为把实现代码分散在多个代码文件中而没有放在一个文件中;

2)修改一个关键性系统问题,往往会修改多个模块的代码才能彻底解决,因为你并没有把解决这个问题的代码封装成业务对象;

解决这两个问题就是我们的代码的分布一定要与实际业务要对应;让我们可以快速找到需要修改的代码并花最小代价完成修改;

用例:是描叙在逻辑上相对完整的功能流程;

      领域模型:专注于分析问题领域本身,发掘重要的业务领域概念,并建立业务领域概念之间的关系;

我们把用例和领域模型换成纵向和横向两个角度来看上面两个问题,一个联动性很强的功能问题都对应着某个用例,而关键性系统问题都应该进行领域分析得出领域对象模型;所以把修改内容控制在一个用例中或一个领域对象模型中,就很容易控制和实行;与功能问题密切相关的不就是界面与Controller控制器,而与系统级问题相关的不就是ObjectModel业务对象;

Controller与ObjectModel没有包含或被包含的关系,两者完全是平级的;一个Controller可以调用多个Object,而一个Object同样可能被多个Controller调用;为什么这么对应,也是方便更容易的理解代码,保持代码阅读的连贯性;如果在代码设计过程中没有一个指导性思想,是很容易混淆代码文件的,如:纠结的是一个类或方法不知道放在哪更合适,就跟给多个控件或变量起名一样困难;

由此在项目中使用框架的过程中,反过来再看之前的系统业务分析与设计得出:框架中的Controller对应业务中的用例,ObjectModel对应业务中的领域对象模型;见下图

由于本章的内容没有什么具体的代码和实例,都是一些形而上的见解,所以难免会有个人的局限性,但是说的都是在实际项目中的经验和领悟;这些东西个人觉得讲解一些个人经历来进行引导性思考,比摆出一套完整的理论应该更合适;比如系统分析师或系统设计师,不可能通过学习两本大牛的书籍就能成为的,而是不断在项目中通过你的经验累积磨练而成的,一个系统设计师把自己的方法与套路交给你,而你也不是学会了就能够成为一个系统设计师的;既然这样那还不如讲讲个人经历,讲讲走到每个阶段的心情与感悟,这样可能会更容易产生共鸣;

十一、EnterpriseFrameWork框架的分层与系统业务的结合的更多相关文章

  1. 十、EnterpriseFrameWork框架的分层架构及意义(控制器、业务对象、实体、Dao之间关系)

    本章内容主要包括两个方面,一.是框架分层(控制器.业务对象.实体.Dao)的详细说明,二.是对比常用三层结构的区别和优势: 本文要点: 1.框架中的各个分层详细说明 2.对比常用三层结构的区别和优势 ...

  2. 十八、【开源】EnterpriseFrameWork框架核心类库之Winform控制器

    回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WinContro ...

  3. 十七、EnterpriseFrameWork框架核心类库之Web控制器

    回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U EFW框架中的WebContro ...

  4. 美团分布式服务通信框架及服务治理系统OCTO

     一.什么是OCTO 定义: OCTO是美团的分布式服务通信框架及服务治理系统,属于公司级基础设施,目前尚未开源. 目标: 为公司所有业务提供统一的服务通信框架,使业务具备良好的服务运营能力,轻松实现 ...

  5. 一、EnterpriseFrameWork框架总体介绍

    EnterpriseFrameWork框架是自己在工作之余的得意之作,经过了几年时间的不断重构,现在终于有了现在的样子:刚开始只是为了方便开发WEB系统,随着项目越做越多,新的功能也就不断补充进去,补 ...

  6. 六、EnterpriseFrameWork框架基础功能之权限管理

    回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理. ...

  7. 十六、【适合中小企业的.Net轻量级开源框架】EnterpriseFrameWork框架核心类库之单点登录SSO

    回<[开源]EnterpriseFrameWork框架系列文章索引> EFW框架源代码下载:http://pan.baidu.com/s/1qWJjo3U 单点登录(Single Sign ...

  8. 十二、EnterpriseFrameWork框架核心类库之与EntLib结合

    从本章开始对框架的讲叙开始进入核心类库的讲解,前面都是对框架外在功能讲解,让人有个整体的概念,知道包含哪些功能与对系统开发有什么帮助.以后多章都是讲解核心类库的,讲解的方式基本按照代码的目录结构,这样 ...

  9. 基于SSH框架的网上书店系统开发的质量属性

    基于SSH框架的网上书店系统开发的质量属性 对于我的基于SSH框架的网上书店系统的开发要实现的质量属性有可用性.可修改性.性能.安全性.易用性和可测试性. 1.对于可用性方面的战术: 可用性(Avai ...

随机推荐

  1. [BTS] WCF-SAP adapter

    =================================== Exception has been thrown by the target of an invocation. (mscor ...

  2. Atitit. 异常的使用总结最佳实践java .net php Vo8f

    Atitit.java 异常的使用总结最佳实践 Vo8f 1. 为什么使用异常 1 2. 用throw抛出一个异常到catch子句中与通过函数调用传递一个参数两者基本相同. 2 3. S E H的主要 ...

  3. atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7

    atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7 1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传 ...

  4. 测量行业(RTK)相关的小知识总结

    RTK测量系统,一般需要先架设基准站(参考站),数据链模式外挂大电台(有天线大功率模式,理想范围方圆18公里以内).基准站通过收到卫星(多星)进行计算出当前的位置. 其中涉及到频率的设置,波特率,以及 ...

  5. plsql无法连接64位oracle数据库的解决方法(图文解说)

    oracle11g下载页面:http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html,找到适 ...

  6. wamp的配置

    web服务器的配置 wamp的简单配置:1.安装对应电脑位数的wamp(PHP集成开发环境) 2.修改wamp的语言为chinese 3.修改www文件夹中的index.php文件,使得http:// ...

  7. 關於imagick不得不說的一些事

    PHP建圖通常都用GD庫,因為是內置的不需要在服務器上額外安裝插件,所以用起來比較省心,但是如果你的程序主要的功能就是處理圖像,那麼就不建議用GD了,因為GD不但低效能而且能力也比較弱,佔用的系統資源 ...

  8. c++ const放置的位置

    标准中int const a 与 const int a 是完全等价的.正因为如此,会有很多各种不同的风格,同样的还有"*是跟类型还是变量?",比如char* p与 char *p ...

  9. 水星Mercury路由器端口映射设置图文方法

    在一些内网的环境里,你可能需要把自己的内网的WEB服务器或者其他应用服务器设置成通过互联网可以访问,但是在内网我们是通过路由器共享上网的,外网无法访问到我们的内部服务器.那么这就需要我们通过" ...

  10. NGUI 减少drawcall规则

    前置说明一: Unity中的drawcall定义: 每次引擎准备数据并通知GPU的过程称为一次Draw Call. Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎 ...