上课中讲到了SOA架构设计,自己在课下决定总结一下对于SOA架构的理解以及应用。

  先总结一下SOA的定义,SOA是面向服务架构,它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。

SOA是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。SOA可以看作是B/S模型、XML标准通用标记语言的子集)/Web Service技术之后的自然延伸。
SOA将能够帮助软件工程师们站在一个新的高度理解企业级架构中的各种组件的开发、部署形式,它将帮助企业系统架构者以更迅速、更可靠、更具重用性架构整个业务系统。较之以往,以SOA架构的系统能够更加从容地面对业务的急剧变化。
Soa系统是一种企业通用性架构。经过了解到SOA架构之后,会发现,基本上企业的ERP都是这种开发。
  SOA案例架构分析浅谈-LMLPHP

从图中可以看出,企业中的erp使用的SOA架构的比例越来越多

在SOA的实施具有几个鲜明的基本特征。实施SOA的关键目标是实现企业IT资产的最大化作用。要实现这一目标,就要在实施SOA的过程中牢记以下特征:
1、可从企业外部访问
2、随时可用
3、粗粒度的服务接口分级
4、松散耦合
5、可重用的服务
6、服务接口设计管理
7、标准化的服务接口
8、支持各种消息模式
9、精确定义的服务契约

SOA案例架构分析浅谈-LMLPHP

下面来说一说为什么需要SOA进行系统的架构

1、需求拉动方面,主要来自于两种信息化的困境。一个是“信息孤岛”造成基于系统之间互联互通的整合需求;另一个是业务的变化所导致对IT灵活性,以适应变化的需求。

目前国内外基本情况类似,经过30年 的信息化建设,许多企业和政府部门都在不同时期、应用不同技术、与不同的厂商合作,建设了不同规模的应用系统,造成了信息化不是没有系统,而是信息孤岛太 多的问题,而且不是没有数据,而是信息不一致,难以整合。因此,互连互通是当前信息化中的核心问题和核心需求。顺便说一句,那些认为中国企业的信息化起步 晚,历史负担少,可以快速部署全新SOA,可以运用推倒重来的策略是不了解中国企业信息化,自我想当然的结果。事实上,我国信息化无论是金融、电信、电力等大行业,还是中小工商企业,“孤岛现象”还是非常严重,遗留系统的整合不一定就少,而且我国软件供应商的系统普遍架构能力比较弱,整合难度一点也不低。

这种互联互通需求,既包括企业内的各种应用系统之间的集成,也包括集团企业总部与下属企业、企业与上下游伙伴之间的业务协同。

  企业方面,在之前的传统的开发中,各个的子系统之间没有关联,进行一项业务的过程也是异常的繁琐,经过SOA架构之后,加强子系统之间的横向联系,完善单点登录的流程。

2、技术的推动:软件出现最早是用于科学计算,然后是计算机辅助设计、辅助制造等等工业应用。在企业管理领域大规模应用后,业务需求不断的变化、系统不断增加、流程更复杂、系统越来越不堪重负,出现了需求交付方面的重大挑战,以至于人们用“软件危机”来描述软件工业所面临的困境。

软件技术发展过程中,一直在寻求解决四个基本问题的方法:质量问题、效率问题、互操作问题、柔性构造问题。这些问题今天依然困扰着软件行业。

造成这个局面的原因是异构性和标准规范的滞后。

  • 屏蔽异构性

异构性表现在计算机的软硬件之间的异构性,包括硬件(CPU和指令集、硬件结构、驱动程序等),操作系统(不同操作系统的API和开发环境)、数据库(不同的存储和访问格式)等等。长期以来,高级语言依赖于特定的编译器和操作系统API来编程,而他们是不兼容的,因此软件必须依赖于开发和运行的环境。

造成异构的原因源自市场竞争、技术升级以及保护投资等因素。希望屏蔽异构平台的差异性问题是促成中间件发展的驱动力之一。而支持SOA架构的中间件平台,已经在很大程度上屏蔽了系统环境的差异性,提供了一致的计算环境。

  • 实现互操作

因为异构性,产生的结果是软件依赖于计算环境,使得各种不同软件之间在不同平台之间不能移植,或者移植非常困难。而且,因为网络协议和通信机制的不同,这些系统之间还不能有效地相互集成。

造成互操作性不好的原因,主要是标准的滞后。解决软件之间的互操作性问题也是促成中间件发展的驱动力之一。而SOA技术从一开始就强调了标准的重要性,包括中间件平台的实现上都是基于全球共同的标准来实现。

  • 共性凝练和复用

软件应用领域越来越多,相同领域的应用系统之间许多基础功能和结构是有相似性的,每次开发系统都从零开始绝对不是一种好的方法,也是对质量和效率的很大的伤害。

尽可能多地凝练共性并复用以提高软件开发效率和质量,通过中间件通过提供简单、一致、集成的开发和运行环境,简化分布式系统的设计、编程和管理,这也是SOA发展的重要推动力。

软件技术发展内容,包括更好的程序设计语言、更好的平台和软件开发技术,如面向对象、组件开发、面向服务等等。而这方面,在技术上逐渐发展的成果大部分都凝聚在今天的SOA解决方案之中。
05-27 18:15