全面解读SOA思想-让程序服务化、多元化

    注明:本帖作为学习之帖,难免有误解!

先来段百度百科的介绍:

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

  SOA的目标在于让IT系统变得更有弹性,以便更灵活、更快地响应不断改变的企业业务需求,解决软件领域一直以来存在的“如何重用软件功能”问题。采用SOA来构建信息平台,无疑是未来的发展方向。
  SOA的5大基本特征为软件功能重用提供了解决的办法。
①服务之间通过简单、精确定义的接口进行通信,不涉及底层编程接口和通信模型。
②粗粒度性:粗粒度服务提供一项特定的业务功能,采用粗粒度服务接口的优点在于使用者和服务层之间不必再进行多次的往复,一次往复就足够了。
③松耦合性:松耦合性要求SOA架构中的不同服务之间应该保持一种松耦合 的关系,也就是应该保持一种相对独立无依赖的关系。这样的好处有两点,首先是具有灵活性,其次当组成整个应用程序的服务内部结构和实现逐步地发生变化时, 系统可以继续地独立存在。而紧耦合意味着应用程序的不同组件之间的接口与其功能和结构是紧密相连的,因而当需要对部分或整个应用程序进行某种形式的更改时 这种结构就显得非常脆弱。
④位置透明性:位置透明性要求SOA系统中的所有服务对于其调用者来说都是位置透明的,也就是说,每个服务的调用者只需要知道想要调用的是哪一个服务,但并不需要知道所调用服务的物理位置在哪。
⑤协议无关性:协议无关性要求每一个服务都可以通过不同的协议来调用。
  另外,在许多传统的IT系统的内在部分采用的是硬连接,这种结构很难让企 业快速响应市场的变化,而SOA能够重复利用企业现有的资源,可以减轻企业运营成本,提升资源的使用效率,并且减轻企业维护人员的工作量,减少潜在的风险 以及管理费用。在业务方面和IT方面带来许多优势:
①服务给精确的业务流程带来灵活性;
②使用服务来改善客户服务,而不必担心底层复杂的IT基础架构;
③可以迅速创建新的业务流程和复杂的应用程序,以适应市场变化;
④借助安全、易管理的集成环境,成为响应能力更强的IT组织;
⑤通过使用预装的、可重复使用的服务构建模块,缩短开发和部署周期;
⑥通过使用服务来降低复杂性和维护成本;
⑦是增强而不是替换现有的IT系统。
 
来张图,这样更好理解点
 
来自于某站点的资源 :

  OASIS(一个SOA标准组织)给予出的SOA定义“SOA是一个范式,用于组织和利用可能处于不同所有权范围控制下的分布式系统。”

维基百科给出的SOA定义“面向服务的体系结构(Service-oriented architecture)是构造分布式系统的应用程序的方法。它将应用程序功能作为服务发送给最终用户或者其他服务。它采用开放标准、与软件资源进行交互并采用表示的标准方式。”。

要准确全面理解SOA,首先必须理解SOA的核心要素:

 

SOA的目标就是实现灵活可变的IT系统。要达到灵活性,通过三个途径来解决:标准化封装、复用、松耦合可编排。 

互操作(标准化封装)、复用、松耦合等SOA技术的内在机制,也是中间件技术和产品的本质特征。

 

标准化封装(互操作性)

传 统软件架构,因为封装的技术和平台依赖性,一直没有彻底解决互操作问题。互联网前所未有的开放性意味着各节点可能采用不同的组件、平台技术,对技术细节进 行了私有化的约束,构件模型和架构没有统一标准,从而导致架构平台自身在组件描述、发布、发现、调用、互操作协议及数据传输等方面呈现出巨大的异构性。各 种不良技术约束的结果是软件系统跨互联网进行交互变得困难重重,最终导致了跨企业/部门的业务集成和重组难以灵活快速的进行。

在软件的互操作方面,传统中间件只是实现了访问互操作,即通过标准化的API实现了同类系统之间的调用互操作,而连接互操作还是依赖于特定的访问协议,如JAVA使用RMI,CORBA使用IIOP等。而SOA通过标准的、支持Internet、与操作系统无关的SOAP协议实现了连接互操作。而且,服务的封装是采用XML协议,具有自解析和自定义的特性,这样,基于SOA的中间件还可以实现语义互操作。

SOA要实现互操作,就是通过一系列的标准族,来实现访问、连接和语义等各种层面的互操作。

 

个人总结:

  SOA在互联网与日俱进的今天得到了广泛应用。

  单举特列说,今天的APP应用、各大开放平台提供的服务(接口服务)、各大电商平台提供的接入服务等,具体如安卓/IOS应用,

微信公众,各大云平台服务,云服务器等。

  总之,我理解为能够提供专一服务/多服务的网络数据,通过这些单一服务,能够再次组装成一个完整的不同应用。举一个简单

例子:SOA服务商A提供轮胎,B提供车架,C提供其它零件,那么D服务商可以根据自己的需要和爱好组装各种不同的车子。

  不知道我的理解准确不,哈哈。组件化开发应用服务,让应用管理更方便,更新更省心,开发更便捷。

  下面说说我深刻的理解:

  AB:开发短信服务1.0.0版本。

  ABC:开发邮件系统1.0.0版本。

  ABCD:开发XX商城系统,通过hppt://open.sms.xxx.cn/send调用【AB】的短信服务,轻松完成了手机号验证;又通过http://open.mail.xxx.cn/send

  调用了【ABC】的邮件系统完成了用户的密码找回。哈哈,时间和效率比【ABCD】一个人开发划算很多,而且在技术上也大大降低了风险和难度。

 

  情景2:

  AB:更新短信服务2.0.0,同时推出了邮件系统1.0.0 。

  ABC:更新邮件系统2.0.0,同时推出了云盘存储服务1.0.0 。

  ABCD:更新商城,调用【AB】的升级版短信服务,也调用【ABC】的升级版邮件系统,为了节省自身服务器空间,接通了【ABC】的云存储服务。自己同时还

  开发了商城的部分新应用。

 

  这样AB有更加专业的短信服务平台,ABC对邮件系统精益求精,ABCD的商城应用在多服务支持下稳定、安全的运行着。不仅时间上节省,费用自然也节省,最大的

  好处就是技术上更为成熟、精进。当然,这是最大的好处。那么,坏处也同样存在,就是一旦AB短信服务停止或终止服务,会影响到ABCD的商城正常运作;相比ABC,

  就要承担更大的风险,如果ABC一旦终止服务,那么就严重影响了商城运作甚至瘫痪。所以,有利有弊,不过像这样的服务提供商不止一家,可以有个备用,以防万一。

 

  慢慢地,开发久了,觉着程序只是开发的一部分,数据和数据结构才是应用的核心部分。有句话说得好:一个完整的应用是20%的开发加上80%的维护。高级

  程序员都是用命令或脚本维护应用的。

转载于:https://www.cnblogs.com/rick168/articles/5957968.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值