软件测试SOA对于架构师的存在意义和价值[1] SOA构架
关键字:soa
[SOA是英文Service-Oriented Architecture,即服务导向架构的缩写。这个词汇最近一两年频频出现在各种技术期刊上。但是一直以来对于SOA到底是什么一直没有明确的回答;SOA有什么特点?适合用于解决哪些问题?与其他的技术有什么区别与联系?Web Service和SOA又是什么关系?SOA的出现对于软件架构设计有什么影响?本文将就上面提到的这些问题,尝试根据作者自己的理解给出SOA的定义;总结出SOA特有的三个基本特征;然后以HTTP协议为例对这些特征进行解释;最后简要的说明SOA对今后软件架构设计可能带来的影响]
SOA定义
下面是作者给SOA下的一个定义:SOA是指为了解决在Internet环境下业务集成的需要,通过连接能完成特定任务的独立功能实体实现的一种软件系统架构。从这个定义中我希望表达的前提有下面两点:
1)、软件系统架构:SOA不是一种语言,也不是一种具体的技术而是一种软件系统架构,它尝试给出在特定环境下推荐采用的一种架构,从这个角度上来说,它更像一种模式(Pattern)。因此它与很多已有的软件技术比如面向对象技术,是互补的而非互斥的。它们分别面向不同的应用场景,用来满足不同的特定需求。
2):SOA的使用范围:需求决定同时也限制功能。SOA并不是包治百病的万灵单,它最主要的应用场合在于解决在Internet环境下的不同商业应用之间的业务集成问题。在下面我们会详细讨论Internet的各种特点是如何决定了SOA的特点,这里我们只需要先简单回顾一下Internet环境区别于Intranet环境的几个特点:a)大量异构系统并存,计算机硬件工作方式不同,操作系统不同、编程语言也不同;b)大量、频繁的数据传输仍然速度缓慢并且不稳定;c)版本升级无法完成,我们根本就无法知道互联网上有哪些机器直接或者间接的使用某个服务。
基于上面的前提,下面就让我们一起看一下SOA的基本特征。
SOA三大基本特征
独立的功能实体
在Internet这样松散的使用环境中,任何访问请求都有可能出错,因此任何企图通过Internet进行控制的结构都会面临严重的稳定性问题。SOA非常强调架构中提供服务的功能实体的完全独立自主的能力。传统的组件技术,如.NET Remoting, EJB,COM或者CORBA,都需要有一个宿主(Host或者Server)来存放和管理这些功能实体;当这些宿主运行结束时这些组件的寿命也随之结束。这样当宿主本身或者其它功能部分出现问题的时候,在该宿主上运行的其它应用服务就会受到影响。
SOA架构中非常强调实体自我管理和恢复能力。常见的用来进行自我恢复的技术,比如事务处理(Transaction),消息队列(Message Queue),冗余部署(Redundant Deployment)和集群系统(Cluster)在SOA中都起到至关重要的作用。
大数据量低频率访问