企业 SOA 设计(2)–组件化产品开发平台

平台整体结构

在产品开发过程中,为了达到业务级别的较大粒度重用,我们需要把纵向把业务进行拆分,以业务组件的形式进行开发,并最终把多个开发完成的业务组件进行组合,形成最终的软件产品。

按照组件化开发的产品,是基于一个公共的产品开发平台来建立的。由平台来提供所有的底层设施。平台包括技术平台和业务平台两个层面。在技术层面上,平台提供了一系列的类库、框架、组件、工具,以及为业务组件化提供相应的技术支撑。在业务层面上,业务平台中积累了大量的封装完善的业务组件,以及一些常用的业务控件,以供开发新产品时进行选配。同时,平台还为整个软件过程提供一系列的其它支持,例如工具、设计器、管理界面等。

下图,是平台的整体结构图:

Untitled

图中罗列了大部分的关键组成部分,细节本篇不述。

 

组件集成平台

对于一个独立的业务,我们可以将其封装为一个独立的业务组件,并最终放到组件库中。业务组件之间,则以服务、事件两种形式进行交互。要支持这种模式的交互,技术平台还需要提供几个技术框架:插件平台、服务容器、事件总线。

下图是组件集成架构:

Untitl2ed

  • 技术平台提供事件总线、轻量级服务总线。
  • 组件内部以领域驱动的模式开发,以领域实体框架作为基础框架。组件内、组件间,也都是面向领域实体来进行交互。
  • 组件向外部的其它组件提供组件事件、组件服务。外部组件也只能直接调用组件提供的服务,或者监听组件的事件。
  • 组件还提供了一些可重用的 UI、一些可直接使用的分布式服务。
  • 整个应用系统在组合多个业务组件后,再开发一些特定的功能、UI 就可以完成一个完整的系统了。

 

产品构成

下图是一个完整产品的组件构成图:

image

由于我们的产品开发平台必须要支持 721 客户化定制,所以同一个业务组件还对应不同的业务通用级别进行划分:Organization Common 表示组织架构组件最通用的部分,Org Part1 表示组织架构组件的可选包。而 Customiztion 则可以对引用的业务组件做深入的定制和扩展,而不需修改引用组件的代码。

可以看到,对于整个产品来说,在引用了业务组件库中的一些业务组件后,就可以组成了产品的基础功能。Customer App Component 中是应用系统在组件的功能基础上需要再做的工作:完成产品的额外功能,并通过平台接口为一些组件做相关定制。

 

组件内部架构

对于单个的业务组件,其内部的架构依然采用领域驱动的分层架构:

Single Biz Component

图虽大,但并不复杂,就是领域驱动的经典分层:Distribute(DTO 接口层)、Application(应用层/领域逻辑层)、Repository(仓库)、Domain(领域实体)。

重点在于 Domain 包,它不但包括领域实体,还包括了组件事件、组件服务接口,这些都是领域的核心。

位于底层的技术平台,提供一系列支持:IOC/AOP、属性扩展框架、领域实体框架、721定制化框架、数据库生成框架等……

 

结尾

其实,组件化架构设计中,最为复杂是分析出一个封装完好的组件,所要面向的使用者是哪些,这些使用者分别对组件有哪些需求,而这个架构如何满足这一系列需求。例如,我们在设计过程中,对这些方面进行了分析:组件自身的发展需求、组件中各组成部分的可扩展性、组件间的交互需求、系统集成需求、项目组定制化需求、系统外交互需求、易用性。

 

欢迎感兴趣的朋友交流。

来源:https://yq.aliyun.com/articles/38543


智能推荐

SOA

面向服务的体系结构(service-oriented architecture,SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。 这种具有中立的接口定义(没有强制绑定到特定的实现上)的特...

基于 SOA 的组件化业务基础平台

前言 业务基础平台是业务逻辑应用和基础架构平台之间的一个中间层,解决 “应用软件的业务描述和操作系统平台、软件基础架构平台之间的交互与管理问题”。很多国内软件厂商,很难在操作系统平台和软件基础架构平台上有所作为,因此国内众多的软件厂商纷纷推出自己的业务基础平台,把业务基础平台看作自己的核心技术。当前比较流行的业务基础平台大多都是基于早期的技术架构,虽然经过了多年的发展,但是...

SOA与服务化框架

面向服务的架构 特点 (1)基于服务思想,以服务为中心来管理项目 (2)系统间调用通过ESB来实现 优点 (1)重复代码进行了抽取,系统更容易维护性和扩展 (2)通过ESB进行系统调用,减少开发项目难度 缺点 (1)系统与服务界限模糊,不容易抽取 (2)ESB作为系统之间间桥梁,调用繁多不利于维护 微服务架构 特点 (1)系统的服务层完全独立出来,有利于资源的重复利用,提高开发效率 (2)微服务之...

京东的SOA化实践

平时在京东买东西时,不知道大家有没有留意过京东的网址变化。 京东的首页,如下图,网址是jd.com。 然后,我们打开京东的类目页,如下图,网址是list.jd.com。 当我们点击一个具体的商品后,如下图,网址是item.jd.com。 经过上面的分析,我们发现,京东网站各个页面的网址,并不是同一个。也就是说,整个京东网站,在后台其实已经拆分为一个一个的小网站,共同为用户服务。可以看出,京东已经进...

10 个 SOA 设计模式

这 10 个 SOA 设计模式是如此之重要,其应用是如此之广泛,以至于它们都有些显而易见了。 1. 服务无关 服务无关实现对多种业务通用的逻辑。将服务无关的逻辑分离成离散的服务以方便服务的重用和整合。 原则:复用,服务整合 2. 服务无关的声明 服务无关的服务应该显式声明它们是服务无关的。这样对于后续的设计者和架构者来说能够清楚哪些服务是被设计用来进行重复使用的。 原则:复用,服务整合 3. 服务...

猜你喜欢

SOA入门的例子,(一)设计SOA组合

 打开JDEVLOPER,点击New Application       第二步  next     3,先用个空的为例    finish ,接下来     看,包含三个部分,分别是  Exposed Services,components ,extenrnal referen...

SOA与REST用REST构建企业级SOA解决方案

SOA与REST用REST构建企业级SOA解决方案 ISBN: 978-7-11533194-6 推荐指数: ★★☆☆☆ 作者:[美] Thomas Erl , Benjamin Carlyle, Cesare Pautasso, Raj Balasubramanian 译者:马国耀 申健 刘蕊 阅读时间: 2021-03-13 页数: 354 这本书别人的, 看着标题拿来就读, 收获不是很多. ...

随机森林介绍

随机森林是一种重要的基于Bagging的集成学习方法,可以用来做分类或者回归等问题,其基本思想就是构建多棵决策树,形成一个森林,然后用这些决策树共同决策输出类别是什么。   随机森林的生成流程大致如下:   1)从样本集中通过重采样的方式产生n个样本;   2)假设样本特征数目为d,对n个样本选择d中的k个特征,用建立决策树的方法来获得最佳分割点;   3)重复m次,产生m棵决策树;   4)多数...

UE4_关卡变体集(Variant Management)的使用

  变体管理器 是虚幻编辑器中的特殊UI面板,可用于设置关卡中Actor的多个不同配置。每个配置都称为 变体。有点像给关卡做了一些配置,每种配置下有不同的效果,比如:配置1:场景中有车模型无船模型、配置2:场景中有船模型无车模型(可以随意在多个配置中切换) 关卡变体集、变体集、变体关系: 关卡变体集由变体集组成 变体集由变体组成 关卡变体集——...

vue中映射store中的数据和方法--双向绑定

mapState和mapMutations的写法:        组件使用store中的数据和方法,实现双向绑定 1.:value=“inputValue” 对应的是v-model的写法,绑定的是store中的数据; 2.通过@input事件触发changeInputValue,e.target.value,调动mutation中的对...

问答精选

Git and CMake project structure, external libraries and packages

I'm relatively inexperienced with CMake projects and also with Git. If I use external libraries, e.g. in my case JsonCpp and OpenVR, is it a bad approach to place the packages/libraries inside my proj...

How to display result a mysql query in node.js

I'm trying to display the result of my query using res.end but i can't since i'm new to Node.js,Here's part of my code where the user enters the username and password in a form in an html file and i w...

Multiple if Statements within a function in an Object?

Hi i need to check if an Object can have 0 or 1 for two parameters which are R1 and R2 - it's like directions from Obj A to Obj B - Where 1 means Obj A can access Obj B and 0 means Obj A cannot access...

Center the sublist

Two problems: First: How can i center right under "List" both items named as class "one"? Second: How can i center right under "One" and "Two" Items1-3? I've tr...

javafx piechart can't add eventhandler

I've been trying to show percentage of the selected piechart slice. I have searched on Google and everyone is adding a new eventhandler with a mouse event. Whenever I try to implement the code I get t...

相关问题

  • SOA设计架构
  • 服务设计(WCF,ASMX,SOA)
  • 如何评估“企业”平台?
  • 你为什么要使产品SOA兼容?
  • SOA“启用”软件产品的示例?
  • SOA服务设计/身份验证
  • WCF对象设计 - OOP VS SOA
  • SOA服务组件的想法
  • 在Python的企业平台,设计建议
  • 测试SOA Java开发的框架和工具

相关文章

  • 企业 SOA 设计(1)–ESB 设计
  • 企业 SOA 设计(1)–ESB 设计
  • 企业集成平台与SOA架构
  • SOA 案例研究:SOA 设计
  • 【SOA】2.Service Oriented Architecture (SOA)
  • 项目SOA化
  • SOA服务化演变
  • SOA 开发基础 (上)
  • SOA 开发基础
  • 基于SOA组件化架构-组件化和平台化

热门文章

  • 深入浅出Zabbix 3.0 -- 第九章 数据可视化
  • 操作符/运算符
  • 信息系统开发与管理(一)
  • Java复习提纲
  • 命令模式
  • 图解HTTP-(简单的HTTP协议)
  • VSCode调试运行C#(小小白教程)
  • 系统分析与设计学习笔记(三)活动图与状态图
  • 程序员的蜕变之旅-健身
  • Linux权限操作管理

推荐文章

  • D9-Android自定义控件之动画篇1-ObjectAnimator
  • Eratosthenes集合筛选法求素数
  • TestCenter测试管理工具问题详解(6)
  • Python多进程和多线程(一):基础概念
  • android ndk的使用 jni
  • squid配置详解
  • 你需要了解深度学习和神经网络这项技术吗?(转)
  • (个人)太极拳学习系统创新实训第五周(二)
  • JSTL和EL
  • 被新来的同事吊打!他用Python完成了我半天的工作量,不用Excel了?

相关标签

  • SOA
  • 设计模式
  • 应用服务器
  • IBM
  • 企业应用
  • 中间件
  • soa
  • 软件架构
  • 汽车电子
  • 服务化

推荐问答

  • C# error handling (NaN)
  • Controller method not found while using link_to_action helper function
  • Iterate through two dataframes and create a dictionary one data frame that is a substring in strings found in the second dataframe (values)
  • How can I run a .bat file with parameter in NSIS installer
  • Why is the state not updating inside this react Hooks component?
  • Windows 10,CUDA 9,: CUDA driver version is insufficient for CUDA runtime version at ..\src\THC\THCG
  • Difference between 2 dates in seconds
  • Cannot pass lambda function as function reference?
  • Use Log4View to a folder with zipped logfiles
  • jQuery Ajax response 200, but cannot access the response data

玻璃钢生产厂家台湾不锈钢花盆哪家好海南玻璃钢花池制造南充玻璃钢花池遵义玻璃钢种植池批发四川商业美陈制造无锡玻璃钢花盆定做阳江玻璃钢摆件定做营口玻璃钢装饰工程公司泰安玻璃钢装饰工程厂鄂州玻璃钢座椅制造海东玻璃钢设备外壳厂晋城玻璃钢摆件厂淄博玻璃钢座椅加工赣州玻璃钢动物雕塑多少钱上海玻璃钢设备外壳制造镇江玻璃钢茶几加工河北玻璃钢坐凳厂家三亚玻璃钢家具厂家直销辽阳商场美陈厂揭阳玻璃钢机械外壳加工昌都玻璃钢花池制造西安玻璃钢树池坐凳定做山东玻璃钢雕塑批发临沂商场美陈制造淮安玻璃钢景观雕塑制作乌海玻璃钢医疗外壳多少钱襄阳玻璃钢座椅批发东莞玻璃钢设备外壳多少钱绍兴玻璃钢花坛多少钱铜陵玻璃钢产品生产厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化