范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

业务系统组件化开发概述和技术架构设计

  作者:人月神话,新浪博客同名
  简介:多年SOA规划建设,私有云PaaS平台架构设计经验,长期从事一线项目实践
  今天介绍下组件化开发方面的内容,在前面我讲解微服务的时候就已经谈到,实际上微服务本身就是传统的业务系统组件化开发的一个升级。懂得基础的组件化开发和技术架构设计是也是过渡到当前主流的微服务架构思想的基础。组件化开发概述
  在这里先介绍和说明下基于组件化开发带来的优势。
  首先,原有到系统级的粗粒度控制细化到了组件级别的细粒度控制,一个复杂系统的构建就是组件最终集成后的一个结果。每个组件都自己独立的版本,组件可以独立编译、独立打包和部署;
  其次,产品组件化后可以真正实现完整意义上的按组件进行产品配置和销售,用户可以选择购买哪些组件,组件之间可以灵活的进行组装。另外,包括诸如配置管理、开发、测试、打包、发布完全控制到组件层面,会带来其它很多好处,如果一个组件进行小版本升级,提供给外部的接口没有任何变动,其它组件完全可以不用做任何测试。
  组件化开发思路在SOA之前已经有成熟的组件化开发方法,只是在SOA出现后,SOA咨询、需求分析、设计实现方法论进一步融入到组件化开发中。各种底层基础技术框架的发展和完善,为组件化开发提供了根据完整的支持,推动组件化开发的发展,特别是在B/S架构下的组件化开发。
  回到软件生命周期,我们再来阐述下组件化开发的核心思路和逻辑。
  业务建模和业务组件阶段
  流程驱动IT以及SOA思想的进一步融合,再次改变原有的组件开发重点关注技术组件层面的问题。业务建模阶段重点包括了业务架构和数据架构,其导入点仍然是端到端流程分析为主线导入。业务架构分析重点就是形成业务组件,也可以叫业务模块。
  在这里重点还是业务组件的形成,要知道业务组件来源于流程分析和流程分解。业务组件本身就是高度内聚的多个业务功能的一个集合,业务组件之间本身就是松耦合,业务组件通过交互和集成可以完成一个更大的端到端流程。业务组件的识别仍然回归传统的流程分析加面向结构下面的CRUD矩阵分析等方法来分析高内聚性。矩阵分析包括了业务功能和业务数据之间的CRUD关系,也包括了业务功能和业务功能之间本身的关联和依赖性分析。
  对于粗粒度的数据建模我们把它划归到业务建模阶段,该阶段的数据建模偏概念模型,后续在设计阶段再转化到物理模型和数据实体组件。同时该阶段的数据建模需要梳理出业务和流程中核心的基础主数据和核心业务单据,分析业务单据关联映射关系,协助前面谈到的CRUD矩阵分析。
  在这个阶段最终需要输出的涉及到组件层面的产出物包括软件系统的业务组件,每个业务组件包含的业务功能或叫业务用例。整个业务系统中的业务实体,业务实体关系图等。
  软件需求阶段
  在这个阶段不做详细的说明,但是我们仍然需要理顺整个关系,即首先形成业务组件,业务组件是大的业务模块。业务组件下面有业务用例,这里的业务用例通过进一步的需求分析和开发,将业务用例转换为系统用例,然后对每一个系统用例进行详细的描述。业务流程-》业务组件-》系统用例是一个从上向下,逐层展开的一个分析过程。
  在传统的用例建模中,我们没太关注用例之间的交互,而将其延后到设计和实现阶段去完成。现在来看该工作需要提前,即从全系统来看,首先完成对业务组件之间交互的描述,对交互点和交互场景进行详细说明。在细化进入到一个业务组件内部后,需要对系统用例之间的相互调用进行描述。
  对于数据层面则在软件需求阶段进一步细化,从概念模型阶段过渡到逻辑模型阶段,进一步细化业务功能为系统操作,分析系统操作和数据对象之间的关系。
  系统建模和技术组件阶段
  这个阶段即传统的架构设计阶段,我们仍然是组件化开发的一个重点,这里的系统建模和架构设计重点都变化为功能性架构。但是前面业务建模阶段已经有前期的积累。如果是业务建模阶段是系统分析的话,那么系统建模阶段是系统设计。
  系统建模阶段第一个重点是要实现从业务组件到技术组件的细化。在前述对SOA的分析中我们提到业务组件、服务组件和技术组件。在这里我们只谈业务组件和技术组件,并弱化服务组件的概念。首先,进入了架构分层后,一个业务组件可能需要拆分为多个技术组件,包括数据层组件、逻辑层组件、UI层组件、数据实体组件等。其次,在该阶段我们会引入很多的纯技术层面的组件,这些技术层面组件和业务完全无关而和平台非功能性架构有关,如安全、异常、日志等相关组件等。
  业务组件本身符合高内聚性,转换到技术组件后仍然需要符合高内聚性,技术组件之间其一不允许出现相互交叉调用;其二整个调用关系应该是从上层往下层调用。纵向看是UI组件->逻辑层组件->数据层组件调用关系;而横向看则是同层之间的各个技术组件之间存在相互调用关系。按照组件最大化复用原则,优先考虑UI组件复用,其次考虑逻辑层复用,最后才考虑数据层复用。
  根据前面分析可以很明显的看到在系统建模阶段关于组件分析和设计的几个重点内容:其一是业务组件转换为技术组件,并按层分解;其二是根据业务交互,用例交互分析组件之间的调用关系。这些调用关系就是组件间的接口,通过业务和流程分析的方法来找到接口,转到相关组件的接口设计上,组件之间的调用只能通过接口,组件内部完全黑盒;其三是数据建模和设计,将前面数据建模分析内容转换为数据实体组件,数据实体组件只含数据实体,实现控制类和实体类的分离。这样数据实体类容易变化为下层可以被多个逻辑层技术组件引用的组件。
  这个阶段在传统的架构设计文档上,可以看到需要输出的内容包括了业务组件->技术组件的对应清单,组件调用关系和依赖关系图,组件接口设计文档和接口清单,可复用组件抽取和分析,组件包视图和部署视图,整个应用系统的组件化后的产品结构视图和配置项清单等。
  实现阶段
  实现阶段我们关注的问题是一个技术平台或框架支持组件化开发、测试和部署。传统的B/S架构开发我们比较难以解决的问题是UI层内容的独立打包和部署,而当前在新的微服务架构和前后端分离开发框架下,已经可以完全做到前端和后端单独打包和部署。
  可以单独对组件进行自动化的单元测试,当某个组件有变化的时候,可以单独对变化的组件进行版本升级,单独对变化组件进行部署。整个产品的版本由应用系统管理到里面的每个组件,这些都将是发生变化的点。业务架构设计
  业务架构设计是定义和识别业务组件的基础。对于业务架构的设计需要遵循企业架构方法论中业务流程分析思路,借鉴IBM的CBM组件化的业务模型建模思路。
  业务架构是一个纯粹意义上的业务概念,只关心具体的业务域和业务功能。业务架构可以看做由多个高内聚、低耦合的业务组件构成,因此在业务架构完成后基本就确定了业务组件的划分方法和粒度等问题。
  业务组件的划分需要和业务架构图对应,可以将业务架构图中的每个业务模块识别和定义为一个业务组件,也可以根据高内聚、低耦合准则将多个业务模块合并为一个业务组件。以采购管理业务域为例,经过前期的流程分析和业务交互矩阵分析,得出如下的业务架构图:
  进一步基于业务高内聚的思想,可以将采购管理业务划分为招投标管理、采购管理、基础数据管理、采购绩效分析等多个业务组件并指导后续的组件设计和开发。
  比如我们基于价值链已经看到供应链跨越流程,那么我们可以对供应链流程进行梳理。
  梳理完后你会发现,输出的职能带流程图中的大阶段刚好就是你业务架构里面的业务域或业务单元。或者流程图中的业务活动刚好就是你业务架构分解到最底层的业务功能模块。
  即当我们流程分析到最底层后,我们就可以抽象输出一个最底层的业务架构图。比如对应供应链和采购管理,我们可以输出到最底层的业务架构图或业务组件图。
  逻辑架构设计
  对于应用层的逻辑架构仍然参考平台+服务+应用分层的思路,对于新平台架构下应用必须结合平台层和服务能力才能组装成为一个传统的完整应用。对于应用层而言,其中仍然分为数据层、业务逻辑层和展现层的三层架构模式:
  数据层
  数据层主要包括了对于主数据等共享数据的访问和读取,也包括了对业务组件模块自己私有数据的CRUD操作。数据层可以直接调用DaaS服务层能力操作底层数据库,也可以直接调用封装后的领域数据服务能力查询和访问数据。
  业务逻辑层
  业务逻辑层和传统业务逻辑层最大的区别是体现了SOA服务化的思想。即对于业务流程和功能的业务实现是通过平台层提供的技术服务和业务服务能力进行组合和组装实现的。这既可以通过传统的代码开发和服务调用来实现,也可以通过类似BPEL设计和建模工具等可视化的进行灵活配置和实现。
  前端展现层
  展现层主要是各种前端和界面实现技术,包括了JSP,HTML和现在主流的VUE, React框架等。展现层通过调用逻辑层的服务能力进行数据的存取和业务规则的实现,同时也包括了界面集成技术实现多个业务组件的界面集成。技术架构设计
  对于应用技术架构设计,主要还是参考传统的分层架构模式,结合SOA和组件化思想进行调整,其中重点是业务逻辑层和Web层两方面的内容的细化:
  业务逻辑层
  业务逻辑层本质是提供业务服务能力的服务组件层,其中包括了数据访问层,内部的技术组件,内部的服务接入软总线,外部的服务代理实现服务接入和服务发布。业务逻辑层最终的业务能力将以内部软总线的方式提供给Web层使用。
  Web容器层和界面展现
  该层的重点是实现标准的MVC模式。对于来自前端界面应用的请求信息先经过控制器处理后转给模型处理再进行视图层面输出,以实现界面显示和数据处理的分离。如通过Java的Struts框架来实现标准的MVC模式等。集成架构设计
  业务组件以 Web 服务的方式提供接口,通过企业服务总线连接。业务组件内部为了实现高可复用性和高效性,采用基于 OSGi 内部软总线标准进行构建模块,实现内部模块之间的松耦合。即在业务组件内部基于 OSGi 标准进行模块化设计,将业务组件进一步分解为松耦合的模块(Bundle),使得业务组件本身更加灵活。
  基于 OSGi 标准,业务组件内部的模块通过一个具有动态加载类功能的微内核连接,统一管理各个模块。为了便于管理,将不同模块之间的类接口采用服务注册的方式进行管理,具有类动态加载功能的微内核和类接口管理组成类总线(JCB)的基本功能;为了更好的实现重用,有些模块是共用的,比如数据访问模块、日志管理模块等。
  服务软总线
  实现一个业务组件内部的服务注册、调用和服务管理,一般采用比较轻量的如OSGi标准来实现。软总线机制可以保证业务组件内部的进一步松耦合设计。
  注:在当前微服务架构下,我们看到实际上组件之间的接口集成,已经不再需要类似OSGI这种内部软总线,而是直接采用去中心化的服务注册中心来完成集成工作。
  服务组件和技术组件
  服务组件是业务组件中唯一和外部进行交互的接口组件,包括了服务消费和服务调用均在服务组件完成。技术组件为服务组件的具体实现,内部功能的业务规则实现等。
  服务代理
  服务代理包括了服务消费代理和服务发布代理。业务组件本身要消费外部的服务,包括技术服务、流程服务和其它业务组件提供的业务服务,这些通过服务消费代理来完成。同时业务组件本身也需要向外部其它业务组件提供可复用的业务服务能力,因此需要将内部的服务接口进一步通过服务发布代理,发布为外部可访问的业务服务并注册到外部ESB服务总线上。组件间整体框架集成
  业务组件本身就是一个能够提供独立业务价值能力的小应用系统。组件的集成包括了组件的纵向集成和横向集成。组件的纵向集成即和PaaS平台技术服务能力的集成,通过集成后形成一个完整的应用。横向集成则是流程驱动的业务组件之间通过业务服务的横向协同和集成,通过横向集成加上和外层应用框架和门户的集成后,多个业务组件将构成传统的完整业务系统。
  应用框架集成
  在企业私有云PaaS平台的建设过程中,虽然基于平台+应用和SOA组件化架构思想真正实现了高复用和对业务的灵活应变能力,但是一个传统完整的业务系统已经被分解到了平台,服务和应用多个层面的技术组件,业务组件和服务中。因此这些分散的组件如何最终集成和还原为一个传统意义上完整的业务系统将成为应用集成必须考虑的重点内容。
  结合实践经验,最好方式是通过门户+外层应用框架来实现总体的集成,具体参考:
  以上图为例来看一个完整的业务系统。除了白色部分外,其余的组成部分都应该是有平台层统一规划建设和提供。应用外层框架和组件动态装载是重新还原一个传统意义上的业务系统的集成。应用外层框架首先是需要和门户进行集成,实现基本的统一认证和单点登录;其次是读取系统管理的基本参数和配置信息,实现外层界面和菜单资源等的装载和初始化;最后是根据应用配置文件灵活的对PaaS平台层的技术组件(系统管理,流程引擎),应用层的业务组件进行动态装载。
  应用外层UI界面框架需要基于可重用,可配置的思想独立开发,该框架是一个包括了菜单描述文件,页面描述文件,工具栏描述文件,页面布局描述文件组成一个基本的页面框架,具体说明如下。
  欢迎关注@人月聊IT 分享SOA,微服务,DevOps平台规划和建设。

蒋欣拍小舍得,因一把芹菜引起争论,却意外解锁芹菜新吃法靠谱的美食每天发布,欢迎大家关注九月小厨,感谢您的点赞,留言和转发,感谢大家支持!最近电视剧小舍得很火,因为这电视拍得有点太写实了,演到人们心里去了。主演蒋欣是一名非常有个性的演员张翰现场内涵刘涛蒋勤勤年纪大,秦海璐的解围方式很高级女性的年纪是个雷区,无论是男嘉宾,还是女嘉宾,最好不要cue到这一点,否则尴尬的就是自己!就拿妻子的浪漫旅行来说吧,这档节目最大的特点就是女明星多,上至团长,下至妻子,那都是清一色陶虹,徐峥的太太,我心目中永远的小龙女,金姐说她是聪明的女人哈喽,大家好,我是徐白。刚好看到一组陶虹姐的照片,所以正好跟大家聊聊陶虹姐。首先我们一起看一下陶虹姐这组黑白复古风的照片,我觉得特别的复古有感觉,里面的陶虹姐感觉回到了年轻的时候。吴京和易烊千玺先后宣布杀青,票房会超过40亿吗?可能非常大。长津湖是抗美援朝时的一次重要的战役,现在搬上屏幕应该会看的人比较多。战争剧还是很收欢迎的。好多战争题材的电影,电视剧都有很好的收视率,这次长津湖应该也会不错。还有近段时甘婷婷张天爱谁漂亮?两个人的美都各有千秋,个人认为张天爱更漂亮。相信大家认识甘婷婷,是看她所饰演的潘金莲,不得不说,甘婷婷将这个角色给演活了,她的美极具诱惑力,是那种让人看了就让人挪不开眼睛,从上到下那些曾陪伴我们度过童年的女神男神,如今都去哪了?还有那贯穿整个时代的台偶,又为何从辉煌,走向了没落?01横空出世偶像,自日本而始。台偶,自流星花园而始。横空出世的F4,打破了韩剧日剧的垄断,也打进了亚洲无数少女的心门。凤梨头的道影视剧用塑料头饰很廉价?看看当年的女神们,个个都是经典美人影视剧随着观众们的要求也在不断的提升质量,现在的大部分作品都开始走精细路线,任何一方面都要求精益求精,因为只有真正用心的作品才能在如今的市场上火起来!不过,用心不代表非要大价钱才能于和伟过生日直播,徐峥送礼物被挤出直播间,雷佳音连线28次成功5月4号,是演员于和伟老师的50岁生日,他今天在微博开直播庆祝生日,圈内好友徐峥特地手机连线庆祝,但是可能不擅长这直播刷礼物的这一套,两人直接蒙圈。在直播时,徐峥第一个做连麦嘉宾,刘德华30年不碰冰水,刘嘉玲更厉害,香港明星为什么那么耐老?大家都知道在娱乐圈里,明星们对自己的身材都还是很在意的,有时候他们为了拍戏适应角色,而不得不减肥或者增肥。如此一来,他们也便有了自己的减肥方法,像刘德华30年不碰冰水,刘嘉玲就更厉李易峰出门衣服穿反了,引来3。1亿围观,评论区变大型社死现场李易峰生日,又以喜欢的直播方式与粉丝互动庆生。接地气得到大排档吃烧烤开播,只是直播到一半时突然被提醒衣服穿反了!被提醒后,李易峰用手扯了扯衣领又扭头前后左右看了下,然后惊讶地瞪大眼王晶放话自己赔!熊孩子看追虎擒龙踢坏银幕,赔偿10万多导演包了5月5日,有网友发现电影追虎擒龙的导演王晶在社交平台发文表示要赔偿影院一块银幕的费用。细扒下来才知道,原来是五一期间,在一家影院,一对年轻父母带着孩子去影院观看了王晶执导的新片追虎
千古玦尘芜浣连累了景阳和景昭,景涧逃不掉原生家庭的宿命电视剧千古玦尘中芜浣以为自己魔力大涨,马上就要唯我独尊了。但凡是不听她命令的,都杀无赦,毫不手软。芜浣,一心想要改变自己的命运,想要主宰三界。最后下场凄凉。听她话的儿女,都被她连累扫黑风暴麦萌萌爱上了害死母亲的人,知道了真相她该怎么办电视剧扫黑风暴中麦萌萌是一个悲剧人物,年纪轻轻,长得好看,却已经被包养。沉浸在温柔乡的她,不去看母亲,却不知道母亲已经死了。我不知道,麦萌萌得知母亲死亡的真相,她会怎么样。我只觉得明星旧照到底多好看?杨幂张柏芝我爱了,也没躲过戴贝雷帽的沈腾明星之所以是明星,那是因为明星的美貌在人群中都是发光,如果不信,那说明你没看过明星的旧照,那么今天就和大家盘点下明星旧照有多好看?赵薇首先是赵薇,这一张照片应该是化妆师给她化妆时偷浓颜系女星有多好看?范冰冰热巴爱了,却没躲过精致如瓷娃娃的她大家都知道娱乐圈遍地是美女,只有美和更美。我还记得之前有女明星接受采访时,说过本来觉得自己校花长相很好看,没想到进入娱乐圈第一天就自卑了。想想也能理解,进入娱乐圈,范冰冰迪丽热巴和郑爽三位前任对她的态度就能看出她的恋爱状态,难怪父母疑似离婚郑爽,一个正义之士,以一己之力捅破了娱乐圈的天价天花板,更是刷新了普通人对娱乐圈的认知,你以为到这里就结束了?远远没有,郑爽之前在网络上挣的那些关注度终究有一天会反噬到她的身上。就小舍得欢欢对米桃校园凌霸多可怕,这三个人的教育就多可悲电视剧小舍得中欢欢欺负米桃,很多人都觉得米桃委屈,欢欢可恨,其实这是两个孩子的委屈。归根结底,是教育的失败。今天,我们就来聊聊欢欢为什么会欺负米桃?01hr欢欢和米桃都考了第一名,叛逆者林楠笙和朱怡贞从未放下过彼此,蓝心洁是独立女性电视剧叛逆者中朱怡贞和林楠笙终于见面了。他们有多思念对方,这次见面就有多虐心。林楠笙很难过,明明是自己人却不能说。朱怡贞表现的是恐惧和提防,但这些年,她从来都没有放下过对林楠笙的爱玉楼春孙俊豪的真心给过两个女人,但他却伤害了苏映雪电视剧玉楼春中孙俊豪爱过两个女人,前有灵儿,后有姚滴珠。但是,他却辜负了苏映雪,也伤害了她。苏映雪的悲剧,从嫁给他的那一刻,就开始了。今天,我们就来聊聊孙俊豪的感情。01hr孙俊豪陈情令魏无羡和江澄的渐行渐远,我看到了感情里现实的一面电视剧陈情令中我们都被魏无羡和蓝忘机的知己情所感动。但是,这样的感情可遇不可求。而魏无羡和江澄的感情,让我看到了友情里最现实的一面。他们的渐行渐远是注定的。今天,我们就来聊聊魏无羡莫小棋神预言应验赵丽颖感情变动张韶涵事业飞升贾乃亮离婚最近全网都快被赵丽颖刷屏了,赵丽颖现在贵为圈内的顶流花旦,影响力确实是不容小觑的。不过最关键的是赵丽颖这次的离婚消息来得太突然了,她不像杨幂这样拖泥带水好几年才官宣离婚。她的离婚离都挺好原著赵美兰才是最可怜的人,她有多可恨就有多可悲看完电视剧都挺好我一直不喜欢赵美兰,但看完原著,我才发现她是那个最可怜的人。她那样对苏明玉,是因为她的母亲也不爱她,她走了母亲的老路,而她的女儿,要比她幸运。今天,我们就来聊聊赵美