SOA知识集锦
所谓面向服务架构(SOA)是一种分布式应用系统的架构模式或者架构风格,他是一种技术思想而非框架。
SOA定义了一个松耦合的组件模型。在此模型中,不同的系统功能单元基于良好定义的,硬件平台、操作系统、编程语言无关的接口进行通信。
在标准化的SOA模型中,有三类基本组件:服务提供者、服务使用者、服务注册中心。
当前SOA架构较为成熟,有多种落地实现。例如W3C指定了一系列SOA相关的技术标准。在实际应用中,SOAP/RESTful风格的WebService是普通应用的SOA技术框架。
尽管SOA强调业务流程服务化这种高层目标,但是实际上SOA的主要应用停留在分布式调用上。
传统的Web Service以SOAP为主要载荷格式。可以实现不同应用程序和在不同系统平台上开发出来的应用程序之间通信。SOAP最初由微软公司开发,用于代替DCOM、CORBA等遗留技术。与RMI、DCOM、CORBA等技术最大的不同就是:SOAP以XML作为基本通信协议格式,从而避免了复杂的协议转换,相对的遗留技术通常基于私有的二进制格式协议。
基于SOAP的Web Service的关键是WSDL,它是一种自描述格式,对Web Service如何工作进行了详细的定义。从编程实现的角度来看,很多集成开发工具可以根据WSDL自动生成存根代码。
基于SOAP的Web Service的缺点也很明显,就是过于复杂笨重。它包含一系列的标准,包括WS-Addressing、WS-Policy、WS-Security、WS-Federation、WS-ReliableMessaging、WS-Coordination、WS-AtomicTransaction、 WS-RemotePortlets等等,这些标准中的某些部分在很多应用系统中并不需要,但是为了标准之间有效交互而引入的复杂性无法消除。近些年信息和网络技术飞速发展,业务需求和建设方案不停变更和重构,架构笨重的SOAP渐渐被很多大型应用特别是互联网应用抛弃。
包括SOAP在内的任何基于XML的技术都有一个特点,就是信息冗余,这是XML语言基于标签的语法风格决定的。这在网络带宽受限、稳定性差的环境下也是一个缺点,因为更长的协议报文需要消耗更多的带宽,也更可能因为网络中断而传输失败。
由于SOAP的复杂性,特别是难于在Web前端应用中使用,基于REST的Web Service在最近数年逐步流行。REST比SOAP轻量的多,SOAP需要生成XML以发起服务请求,REST则简单的使用HTTP协议访问一个URL。REST还支持各种HTTP 1.1方法,例如GET、POST、PUT、DELETE,这些方法恰恰对应了大部分信息系统中都广泛需要的增删改查应用逻辑。
使用REST时,服务应答也不需要使用XML格式,事实上,任何格式都是可以的,例如CSV、JSON、RSS,只要服务请求者和提供者都能识别这种格式即可。在开发B/S架构的分布式信息系统时,JSON格式的优势尤为显著,因为Web端可以直接识别并解析JSON格式。
Leave a Reply