关于SOA

今天被一位兄台问起什么是SOA,虽然知道这个名词,但还是很老实的说不了解。既然不了解,那就再去尝试了解一下。SOA是针对企业架构(EA)或者整个IT系统网络。Webservice只是一个工具去把这些服务连接起来。另一个重要的工具是message,或者说的牛x一点 – message-oriented middleware,面向消息的中间件。message体现在哪里呢?

举个简单的例子,平时在写程序的时候常常说方法调用,这方法调用有两种形式,主动和被动。主动调用很简单就是A.call(B),这种调用很常见,但是有一个问题 – 它是同步调用,也就是在这个调用过程中程序不能做其他事情,直到调用结束。另一种被动调用,有点像是事件监听响应的意思(设计模式里的观察者),调用形式如: A.notifyListeners->[queue]->B.onEvent,或者也说异步调用,解决常见的并发问题。

那么webservice就用来定义一个统一的接口,主要是主动调用,而message queue则是用来被动调用时发送消息。SOA的目标(猜得):所有的应用系统都被设计为对外提供服务的一个个节点,节点之间要么通过主动调用发布消息(webservice),要么通过message queue发送相应来自其他节点的消息。

SOA是从整个IT系统网络的角度去考虑分布式系统的整合,重用,优化。另一点要提到,通常的应用系统之间的webservice调用都是无状态,因为“有没有状态”不是SOA要解决的问题,而是工作流来解决的吧(也是猜得)!

面向服务架构SOA(Service-Oriented
Architecture)是一种架构模型和一套设计方法学,其目的是最大限度地重用应用程序中立型的服务以提高IT适应性和效率。它可以根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署、组合和使用。服务层是SOA的基础,可以直接被应用调用,从而有效控制系统中与软件代理交互的人为依赖性。
SOA的关键是“服务”的概念,W3C将服务定义为:“服务提供者完成一组工作,为服务使用者交付所需的最终结果。最终结果通常会使使用者的状态发生变化,但也可能使提供者的状态改变,或者双方都产生变化”。

Comments are closed.