为了延续内部改变的观念,IT 经理可能会发现,软件的新配置还可以以另外的一种方式加以使用,比如出租粘贴海报的地方以供广告之用。这里,新的业务提议是通过在新的设计中重用灵活的SOA模型得出的。这是来自SOA模型的新成果,并且还是一个新的机会,而这样的新机会在以前可能是不会有的。垂直改变也是可能的,在这种改变中,零售商从销售他们自己的服装完全转变到专门通过店中店模型出租地方。如果垂直改变完全从最底层开始的话,就会带来 SOA模型结构的显著改变,与之一起改变的还可能有新的系统、软件、流程以及关系。
在这种情况下,SOA 模型的好处是它从业务操作和流程的角度考虑问题,而不是从应用程序和编程的角度考虑问题,这使得业务管理可以根据业务的操作清楚地确定什么需要添加、修改或删除。然后可以将软件系统构造为适合业务处理的方式,而不是在许多现有的软件平台上常常看到的其他方式。
正如您可以看到的,在这里,改变和SOA系统适应改变的能力是最重要的部分。对于开发人员来说,这样的改变无论是在他们工作的范围之内还是在他们工作的范围之外都有可能发生,这取决于是否有改变需要知道接口是如何定义的,以及它们相互之间如何进行交互。与开发人员不同的是,架构师的作用就是决策对SOA 模型大的改变。这种分工,就是让开发人员集中精力于创建作为服务定义功能单元,而让架构师和建模人员集中精力于如何将这些单元适当地组织在一起。这种方式已经有十多年的历史了,通常用统一建模语言(Universal Modeling Language,UML),并且描述成模型驱动的体系结构(Model-Driven Architecture,MDA)。
构成SOA的技术是什么?
SOA本身应该是“如何将软件组织在一起”的抽象概念。它依赖于用 XML 和 Web 服务实现并以软件的形式存在的更加具体的观念和技术。此外,它还需要安全性、策略管理、可靠消息传递以及会计系统的支持,从而有效地工作。您还可以通过分布式事务处理和分布式软件状态管理来进一步地改善它。
SOA服务和Web服务之间的区别在于设计。SOA 概念并没有确切地定义服务具体如何交互,而仅仅定义了服务如何相互理解以及如何交互。其中的区别也就是定义如何执行流程的战略与如何执行流程的战术之间的区别。而另一方面,Web服务在需要交互的服务之间如何传递消息有具体的指导原则;从战术上实现SOA模型最常见的方式是通过HTTP传递的SOAP消息。因而,从本质上讲,Web 服务是实现SOA的具体方式之一。
尽管我们觉得 Web 服务是实现SOA最好的方式,但是SOA并不局限于Web服务。其他使用WSDL直接实现服务接口并且通过XML消息进行通信的协议也可以包括在SOA之中。正如在别处指出的,CORBA和 IBM的MQ系统通过使用能够处理WSDL的新特征也可以参与到SOA中来。如果两个服务需要交换数据,那么它们还会需要使用相同的消息传递协议,但是数据接口允许相同的信息交换。
既为了建立所有这些信息的适当控制,又为了应用安全性、策略、可靠性以及会计方面的要求,在SOA体系结构的框架中加入了一个新的软件对象。这个对象就是企业服务总线(Enterprise Service Bus,ESB),它使用许多可能的消息传递协议来负责适当的控制、流甚至还可能是服务之间所有消息的传输。虽然ESB并不是绝对必需的,但它却是在SOA中正确管理您的业务流程至关重要的组件。ESB本身可以是单个引擎,甚至还可以是由许多同级和下级ESB组成的分布式系统,这些 ESB一起工作,以保持SOA系统的运行。在概念上,它是从早期比如消息队列和分布式事务计算这些计算机科学概念所建立的存储转发机制发展而来的。
从开发人员的角度来说,他们使用的工具必须知道 SOA的能力,并允许开发人员有效地使用SOA对象。这将把设计SOA模型、开发服务和服务对象以及测试 SOA应用程序这些过程包括进来并组成一个整体。因而,开发人员的工作必须为面向服务的应用程序设计/开发(Service-Oriented Application Design/Development,SOAD)做好准备。
SOA与其他技术的关系如何?
SOA可以与许多其他技术结合在一起使用,然而,组件的封装和聚合在其中扮演着重要的角色。如前所述,SOA可以是一个简单对象、复杂对象、对象集合、包含许多对象的流程、包含其他流程的流程,甚至还可以是输出单一结果的应用程序的整体集合。在服务之外,它可以看作是单个实体,但是在其自身中,它可以具有任何级别的复杂性(如果必要的话)。出于性能方面的考虑,大多数SOA服务并没有下降到单一对象的粒度,并且更适合于大中型组件。
除了可能离不开XML和WSDL之外,SOA并不是特定于语言的。可以用任何编程语言来实现服务,只要这种编程语言可以生成服务并且可以与WSDL结合在一起使用就可以了。SOAP本身并不是绝对需要的,但它是通用的消息传递系统。因此,可以使用几乎任何一种编程语言和支持WSDL的平台来实现SOA中的成员服务。
文章来源于领测软件测试网 https://www.ltesting.net/