移动对SOA的影响

iPhone等智能设备引发的app革命证明,移动宽带对大家访问和使用在线资源产生了深远影响。因此,询问移动宽带将如何从总体上影响应用开发,尤其是SOA就是合情合理的了。

将SOA作为移动影响的关注目标,其原因是:移动用户的在线使用是高度分化的。传统的计算机用户上网冲浪是为了寻找东西,而移动用户则是使用app。就结构而言,此类app是屏幕图标、部分可选的本地处理程序与URL之间的一个连接。在许多情况下,app与在线服务的映射是1:1的关系,这是SOA这种类型的服务组件化的目标。

RESTful Web服务的情况如何?

表面上看,似乎所有的移动应用都促进了SOA,但是这种说法过于简单化了。总的说来,互联网革命尤其是移动互联网应用,已经创立了一种给予表述性状态转移(REST)的“Web服务”模式,即所谓的RESTful接口。REST创立了一种从某种程度上与SOA类似,但是在别的地方又迥异的“即服务”模式。

RESTful接口代表无状态事件/响应处理。这意味着每个事件均在自己的上下文中进行处理;服务并不会去记住此前做了什么。这使得将RESTful服务扩充至互联网级别也很简单,但是被放置进逻辑序列的、涉及多服务的任务则需要其他东西来协调——一般是提出请求的设备。HTML页面就是调用RESTful接口的脚本。在SOA中,大多数实践者均认为无状态的要求是没那么严格的,SOA在服务总线或工作流引擎中也有一套隐含的协调模式—即将SOA组件与应用关联起来的消息交换,这种消息交换是通过结构化的方式将消息线程化来实现的。

RESTful接口也更加简单。在许多情况下,这些接口就是某些最小化数据结构的简单HTTP GET及POST消息交换,或者是XML格式的负载。如果有必要的话,通过HTTPS提供安全性。在SOA中,基于XML的Web服务描述语言(WSDL)、简单对象访问协议(SOAP)以及一系列的支持协议(“WS-标准系列”)提供了从中间处理到数据安全、用户身份管理等一切事务的支持。几乎没有多少Web开发者曾使用过WS—标准接口,大多数移动设备平台对此都不提供完全的支持。

开发安全的app

似乎移动应用趋势不仅仅偏爱RESTful接口,移动性也将市场朝着RESTful的方向推动。这有可能发生,但是有两股逆流将开发者推向相反的方向。第一股是对安全可靠app不断增长的需求;第二股趋势是朝着“代理流程”的转移。

随着NFC信贷管理及TV Everywhere之类的技术将移动服务转移到其他需要身份及权限确认的服务上,许多开发者发现他们创造了许多SOA/WS标准的功能,来增强RESTful接口。这么做不仅浪费,还创造了非标准的做法,限制了组件化的价值,而后者正是REST和SOA的推动力。与此同时,对往往令人困惑的SOA规范的简化(WSDL 2.0版),以及低端RESTful接口的功能需求也取得了进展。但是能力仍有很大的不足,许多开发者报告说WSDL 2.0的工具非常少,相对而言还很原始。

这就是为什么“代理流程”趋势如此重要的原因:它不要求SOA和REST走到一起,而是将它们从应用架构上分离。其基本原则是,随着移动任务变得越来越复杂,用设备来收集和处理可联合起来创建app的多RESTful服务已经变得不切实际。对于存储或CPU资源有限的小型设备来说,不仅数据处理会成为负担,而且移动连接往往也是按使用定价的,因此用户会看到费用告警而不知道原因。代理流程则是用户激活型软件组件,在云端运行,可在用户发起请求时访问。然后该流程会进行数据收集,然后在云端处理并返回结果给移动设备。

服务编排

此结构将从设备中把创建应用的服务编排分离,把多RESTful服务的设备处理变成一种编排或工作流。因而对代理流程的RESTful请求可以利用标准的SOA、SOAP或WS接口及工作流引擎来进行编排,然后结果以RESTful响应的方式返回给设备。此类结构会强调REST的定义,因为有人可能会提出代理流程现在变成有状态的了,但是从Web前端变成应用引擎的处理会略有不同,后者现在几乎是所有企业均已使用的一种模型。

无状态与SOA之争提出了可扩展性的问题,正是这个问题首先引发了RESTful的开发。Web证明了将客户端托管的多接口编排进app中的RESTful逻辑是可以扩展的。移动服务强调了出于成本及性能的原因采取该模型。问题是SOA或REST在移动时代中是否能找到平衡。