上一篇博文中提到了“紧耦合”的现象,如何解决?SOA,采用面向服务的体系架构。
一、What?
SOA=Service-oriented Architecture面向服务的体系结构
SOA是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。
我个人更加倾向于这样的一种解释:SOA是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。
所以,SOA是什么?SOA不是一种语言,也不是一种具体的技术而是一种软件系统架构。
二、How?
SOA的最主要的应用场合在于解决在Internet环境下的不同商业应用之间的业务集成问题。
SOA的3个基本特征:独立的功能实体,大数据量低频率访问,基于文本的消息传递。
1.独立的功能实体:SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列(MessageQueue),冗余部署(Redundant
Deployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。SOA在这一点上大大提高了软件的稳定性,尤其是基于Internet之上的。
2.大数据量低频率访问:在Internet的环境下,通过客户端和服务器来回很多次函数调用给系统的响应速度和稳定性带来的很大的影响,而且往往这些因素是决定整个系统是否能正常工作的一个关键决定因素。因此SOA系统推荐采用大数据量的方式一次性进行信息交换。
3.基于文本的消息传递:在Internet环境下,不同语言,不同平台对数据、甚至是一些基本数据类型定义不同,给不同的服务之间传递对象带来的很大困难。由于基于文本的消息本身是不包含任何处理逻辑和数据类型的,因此服务间只传递文本,对数据的处理依赖于接收端的方式可以帮忙绕过兼容性这个的大泥坑。
此外,对于一个服务来说,Internet与局域网最大的一个区别就是在Internet上的版本管理极其困难,传统软件采用的升级方式在这种松散的分布式环境中几乎无法进行。采用基于文本的消息传递方式,数据处理端可以只选择性的处理自己理解的那部分数据,而忽略其它的数据,从而得到的非常理想的兼容性。
三、Why?
IT企业的现状:不同种类的操作系统,应用软件,系统软件和应用基础结构(applicationinfrastructure)相互交织。
对SOA的需要来源于需要使业务IT系统变得更加灵活,以适应业务中的改变。通过允许强定义的关系和依然灵活的特定实现,IT系统既可以利用现有系统的功能,又可以准备在以后做一些改变来满足它们之间交互的需要。
SOA凭借其松耦合的特性,使得企业可以按照模块化的方式来添加新服务或更新现有服务,以解决新的业务需要,提供选择从而可以通过不同的渠道提供服务,并可以把企业现有的或已有的应用作为服务,从而保护了现有的IT基础建设投资。
四、SO VS OO
说到这里,可能有人会想到面向对象。而且面向服务和面向对象看起来都差不多啊,都能够解决紧耦合的问题,so,我将会在下一篇博文中,与大家分享面向对象与面向服务的关系,期待与大家的交流!