技术
分布式互联网架构背后的技术在过去几年内经历了几个阶段。初始架构包含有构件、服务器端脚本以及原生的Web技术,比如HTML与HTTP。中间件方面的进步,允许增加处理能力及事务控制。XML的出现引入了复杂的数据表达,实际上提供了经由互联网协议传输的东西。后来Web服务的可用性允许分布式互联网应用跨越专有平台的边界。
因为许多当前的分布式应用使用了XML与Web服务,有可能这些解决方案背后的技术与那些基于SOA的没有太大不同。虽然一个明显的区别在于当代SOA将有可能构建在XML数据表达与Web服务技术平台技术之上。除了互联网核心技术集和构件的使用,没有被传统的互联网应用所统治的技术。因此,XML与Web服务对于分布式互联网架构而言是可选的,但对于当代SOA不是。
安全
当应用逻辑散布于多个物理边界时,实现象鉴权与授权这样的基本安全措施变得更加困难。
在两层客户-服务器环境中,一个独有的服务器端连接可轻易实现用户论证及企业数据的传输安全。然而,当独立的连接被移除时,而且要跨越不同的物理层传播时,就需要新的安全方法。要确保信息的安全运输及用户凭证的识别、同时保留原始的安全语境,可用象委托和假冒这样传统的安全架构合成方法。加密也被加到其他广泛而开放的HTTP协议方面,可在Web服务器之外传送时受到保护。
SOA通过引入对安全如何组合以及对应用的大规模改变,从而远离了这个模型。由于严重依赖WS-安全框架所建立的扩展和概念,在SOA中所用的安全模型在通讯层面上强调安全逻辑的安置。SOAP消息提供的报送区块中可存入安全逻辑。那样,无论消息在何方,安全也就随之而至。这个方法需要个体自治和服务间的松散耦合,同时一个服务可完全维持在无状态的范围。
管理
维护基于构件的应用包括跟踪单个构件实例、本地及远程通信问题,监控服务器资源需求,当然,还有标准化的数据库管理任务。分布式互联网架构进一步引入了Web服务器,同时解决方案执行时还需要关注额外的物理环境。因为客户---不管本地的还是外部的组织---使用HTTP连接到这些解决方案,Web服务器就成为正式的第一接触点。因此它必须设计成可扩展的---这一需求已导致Web服务器机器资源池的创建。
企业级SOA典型地需要一个额外的运行时管理。通讯框架带来的问题(特别是工作在异步交换模式时)会比基于RPC的数据交换的问题更不易发现。这是因为关于消息如何交换,存在太多的变化。RPC通信一般需要一个来自初始构件的响应,表明成功还是失败。遇到一个失败条件,就会抛出一个异常。通讯框架的异常处理可能更复杂而更不健壮。尽管WS-*扩展被定位于更好地处理这些情形,仍需努力保持高度管理。
其他维护任务,象资源管理(类似于构件管理),同样需要。然而,为了更好地促进复用性及可组合性,对于企业构建大量的Web服务而言,管理基础设施的一个很有用部分是私有注册。UDDI是一个标准化的技术,用于标准化地注册接口,能够手工或程序化地访问发现服务描述。
3.4. 比较SOA与混合Web服务架构
在前一节中,我们提到最近的分布式互联网架构变化已如何成为混合Web服务。这一主题值得详细说明,因为它已经是(并预期继续是)SOA周围的混乱之源。
首先,传统架构内使用Web服务是完全合理的。由于许多编程语言都支持对Web服务的开发,他们可轻易地将其嵌入老的应用设计。并且,对于那些不支持Web服务定制开发的遗留环境,通常也可用适配器的方法来解决。
注意
尽管我们集中于分布式互联网架构,但并没有限制两层客户-服务器的应用使用Web服务。
Web服务作为构件包装器
Web服务在这个语境中的主要角色已引进了一个包含包装器服务的整合层,促成经由SOAP兼容的集成通道的同步通信(图4.7)。实际上,SOAP规范初始发布和第一代SOAP服务器都被特别设计用来复制使用消息的RPC风格的通信。
这些集成通道主要在集成结构中,被用以促进与其他应用或外部合作伙伴的通信。也被用于促成与其他(更多的面向服务)解决方案通信,还可利用第三方工具提供的Web服务。不管他们在传统架构中的使用或目的,关键是要澄清靠这种方式在分布式互联网架构中纳入Web服务不具备真正的SOA资格。这只是使用Web服务的分布式互联网架构。
并非是反映构件接口和用Web服务建立点对点连接,SOA提供了对于不同通讯模型的强健支持(基于同步和异步的交换)。另外,在SOA内的Web服务受制于特定的设计需求,象由面向服务原则提供的那些。这些和其他的特征都支持对和谐的松散耦合的追求。一旦实现,单个服务不再限于点对点通信;它能够适应任何的现在和未来的请求者。
SOA内部的Web服务
然而SOA在大小和品质方面会有所不同,SOA与其他架构在Web服务的使用方面有切实不同的特征。本书主要专注于探索这些特征。目前已经充分阐明:基本上,SOA构建于一组Web服务,它们被设计用于一个或多个电子商务流程的集体自动化(或者参与自动化的),SOA促进将这些服务组织成抽象企业自动化逻辑特定部分的特定层。
同样通过跨企业的标准SOA,出现了天然的协同性,超越了专有的应用平台。这考虑到先前不同的环境组成,以支持新的和进化的业务自动化过程。