| |||
|
作者:Jürgen Kress、Berthold Maier、Hajo Normann、Danilo Schmeidel、Guido Schmutz、Bernd Trops、Clemens Utschig-Utschig、Torsten Winterberg
行业 SOA 文章系列的一部分
2013 年 10 月
摘要:随时随地 — 互联网时代的这个夙诺从未像今天这般重要。随着 iPhone 的发布,Apple 进行了大肆宣传。如今,许多人都在笔记本电脑上通过宽带和/或 WLAN 或 UMTS 上网。然而,这些设备仍然过大,过于笨拙,且每次使用都需要很长的启动时间。另一方面,在当今的经济形势下,几乎人手一部智能手机,这赋予了他们更大的移动性。
智能手机超级实用,其功能也日益强大。它们通常操作便捷、几乎随处可用,而且移动应用也变得越来越快、越来越便宜。应用商店无处不在,用户只需一次点击操作即可安装各种新功能。有句话说的好:“应用让生活更美好。”
内置传感器让一些全新的应用成为可能,例如 Google Maps 集成、基于位置的服务、增强现实技术等。内置摄像头正变得日益强大,而且经常充当人们的另一台便捷式相机。视频电话也变得日益普及 — 除了习以为常的 Skype 以外,苹果 Facetime 也开始迅速升温。创新速度之快令人惊讶。
游戏在应用中占据非常高的比例,排在其后的是个人用户感兴趣的信息系统。这些信息系统开始越来越多地使用移动设备中的内置功能。例如,系统通过 GPS 识别我的位置并且可通过个性化定位为我提供信息。系统还可以使用集成摄像头扫描条形码以及运行比价工具。过去难以想像的“星际旅行”技术现已(几乎)成为现实。我们很快就能将三录仪/通讯工具/平板电脑合并到一个设备中。越来越多的公司开始采用移动解决方案来加速流程、将外部合作伙伴更轻松地整合到流程中以及降低其流程成本。各种 B2C 服务已经开始应用于我们的生活中,例如通过手机订机票、跟踪包裹以及查询到货日期和营业时间。为了帮助您的公司优化这些功能,富有创意的想法必不可少:如何提高客户忠诚度?尽管 B2C 应用已经迅速普及并且可能是所有非游戏应用的核心业务,但 B2B 的发展却非常慢。此处的一个核心问题是,如何向业务合作伙伴提供额外服务?根据 Gartner 的报告,发展速度最快的领域包括基于位置的服务、社交网络、移动搜索、移动商务、移动现金、上下文感知的服务、目标识别、移动即时通信、移动电子邮件和移动视频。
移动应用开发可以采用多种全然不同的架构。将移动解决方案置入手机的方法也各不相同。其中一种方法是在移动设备上运行浏览器。移动应用是一个针对移动设备进行了优化的 Web 应用。对于企业软件开发人员来说,这是一种最简单的上手方法。控制仍然保留在中央应用中,用户不需要在移动设备上下载或更新软件,最重要的是,应用开发将采用与原来相同的方式。我们仍然沿用了“优秀的 Web 开发老方法”,只不过屏幕变小了。也可以直接在相关目标平台上创建原生应用。由于这需要针对多个平台分别开发组件,因而成本更高。鉴于此,一些临时解决方案已经开始出现,例如解释性运行时环境、交叉编译器或 MDA 方法。它们的目的都是通过一个统一的代码库为不同目标平台(PhoneGap、Titanium 等)生成应用。我们无法确定哪一种趋势将最终胜出。应用的概念正在迅速普及,例如,挂靠在 Mac 操作系统、Windows 8 以及各种新兴的应用市场中(Amazon 等)。相比之下,基于 Web 的解决方案则在可快速开发的“常规”界面上优势明显。它们不需要部署,也不需要选择分发平台。选择基于 Web 的解决方案还是原生应用始终由具体需求决定。解决方案是否需要收费?是否需要任何订阅模式?在这方面,Android 比 Apple 更加开放,这也是 Android 增长率如此之高的原因所在。许多目前无法想像的新用例都是这一趋势的驱动力。假设在一场车祸后发生以下场景。受害者打开智能手机上的保险应用,该应用会立即通过 GPS 定位事故发生地点,保险公司可以立即发送事故照片,并使用语音备忘录来记录关于事故的描述。随后,保险公司将准备处理索赔所需的一切文件。如何针对不同的智能手机平台开发这样一个尽可能通用的解决方案?必须评估不同方案,然后为客户实施最佳方案。
几乎每个平台都有自己专有的编程语言或开发环境。不过那些事最通用的方案呢?
Apple 在 iOS 上有自己的 Objective-C 语言,类似于 Microsoft 在 Windows Phone 8.x 上的 .NET,不过未来的发展趋势尚不明晰。根据市场分析的数据,Android 开源操作系统是当前发展最迅猛的平台(尚不明确这将如何反映在业务领域中)。Symbian 在功能机市场仍然占据主导地位,不过其重要性正日益下降。RIM (Blackberry) 在智能手机市场中也有一席之地。不过这两者都呈显著下滑的趋势。行业巨头 Google 推出了基于 Java 的 Android 平台,并继续在其发展过程中发挥重要作用。
几乎所有涉及商务的移动应用都需要通过某种后端来提供服务。Java 在这一领域得到了极其广泛的应用,并且可以充分发挥其优势,例如,为现有组件供应新端点活着实施适配器层。Java 还提供了超强的互操作性,因而在这一环境中大受欢迎。而且 Android 平台的客户端编程语言也是 Java。相比之下,JavaME 尽管在数百万功能机上得到了广泛应用,但未能得以立足。而且未来的 Micro Edition 可能也无法取得突破性的发展。Blackberry 平台也支持 Java 应用开发,Oracle 也支持通过 ADF Mobile 为各种移动设备开发 Java 应用(2012 年的全新版本)。SUN 推出的 JavaFX Mobile 已经寿终正寝,不过 Oracle 又再次推出了 JavaFX 2。最新的 HTML5 是移动开发领域中的一次巨大飞跃。这个最新版本的 HTML 中融入了众多增强,支持访问设备相关特性,例如摄像头、话筒、指南针、运动传感器和 GPS 功能等,此外还可以使用 JavaScript 和 CSS。如今,正是在这项技术的帮助下,跨平台解决方案才得以实现。历史:第一个 iPhone 应用是彻头彻尾的 Web 应用,这也体现了移动浏览器与生俱来的舒适性。封闭应用的概念在不久之后才开始应用。
目前,JavaScript 呈现复兴之势。JavaScript 过去主要用于“美化”网站,而不是一种“实际”的专业应用开发语言,因而在行业中的地位不高。然而,随着 HTML5 的高速发展,这一趋势发生了改变。JavaScript 正在成为一种应用开发和界面编程语言。事实上,JavaScript 对 Web 开发的重要性可以说相当于 Java 对后端企业计算的重要性。作为一门拥有 15 年历史的编程语言,JavaScript 具备诸多前沿的特征。只要实施得当,它完全可以与 Groovy 和 Ruby 等新兴语言媲美。作为一种动态类型、面向对象、采用基于原型的继承的脚本语言,JavaScript 为习惯于使用 Java 的开发人员提供了众多与众不同的特性。鉴于此,开发人员可能需要一些时间来熟悉这门语言,以及学习如何编写出色的 JavaScript 程序。开发人员越早掌握这门语言,效果越好。在服务器端,JavaScript 也更广泛地出现在 Node.js 之类的运行时环境中,专用于有效解决特定类别的问题,例如,应用必须支持众多竞争用户访问“慢资源”。开发人员越来越难以接触到很多工具的实际 JavaScript 代码,例如 Google Web Toolkit、CoffeeScript、ClojureScript 以及 Google Dart 等语言方法。然而,适当了解其基本原则仍然是必要的。
在企业环境中,任何移动解决方案(无论是应用还是 Web 形式的)几乎始终需要与后端通信。简单来说,移动前端仅为已经存在的应用提供更深层次的输出渠道。尽管从理论上说没错,但实际情况要复杂得多。由于框架条件发生了变化,例如小型、中型或大型屏幕,触摸屏、触笔或键盘操作,以及一些特殊限制(例如 JavaScript 上下文中的服务器通信),现有界面不能以 1:1 的比例传输至移动终端设备。一般来说,只有一些特定的新功能才需要修改服务端点。所有 SOA 原则均适用于此环境,包括松散耦合、组合、Facade 等,从而让后端中面向服务的思维方式充分发挥其价值。开发人员可以快速、灵活地实施新需求,无需对后端系统进行重大更改。
移动解决方案对我们架构有哪些改变?改变不多,至少不是直接的改变。从技术上说,REST 通信和 JSON 结构交换比 SOAP 服务和 XSD 更适合移动环境。移动用例的激增意味着在公司自己的面向服务的架构的投资可更加快速地助推长远收益。这个极具创新性的环境促进实现了大量业务相关的新应用案例,发展速度之快在几年之前还是无法想像的。SOA 环境的灵活性将发挥得淋漓尽致,因为开发人员可以非常快速地实施各种新功能。例如,如果现有后端“仅”支持 SOAP,而移动客户端需要通过 REST 进行连接,那么可以使用 ESB 作为一种简便易用的协议转换工具。
Web 应用的实际架构将发生根本性的改变。经典 Web 应用的常规模式(图 1)将不再适用,即,使用 MVC 模式定位服务器上的 PageflowController 来实现页面导航。与网站的交互将触发向 Web 服务器发送一个请求。此时,PageflowController 将确定下一个要显示的页面,然后服务器返回该页面以响应浏览器。相比之下,采用 Web 应用的客户端更加智能化。一般情况下,PageflowController 位于客户端中,通常用 JavaScript 实现。这通常被称作单页 Web 应用(图 2)。其命名源于这样一个事实:加载 HTML 页面时会同时加载整个 Web 应用(即单个 HTML 页面),然后仅显示其中的一部分。如果要显示其他页面,PageflowController 只需显示客户端所加载页面的其他部分即可。这就避开了客户端与服务器之间的请求响应周期。仅当通过 SOAP 或 REST 访问服务时,才需要通过此周期与后端通信。
移动解决方案是推动流程自动化解决方案发展的主要动力。在当前环境中,与移动应用相关的新技术方案尚未成熟。不过,随着流程开始支持接收移动人员的输入,吞吐速度得到大幅提升,各种新方案也开始涌现。其优势显而易见,包括不需要在纸上记笔记,以及可以在电影院中完整观看电影的同时进行审批。(本文不讨论这项技术对个人生活的影响。)这打开了广阔可能性的大门,尤其是移动设备开始采用各种新兴的传感器,包括地理定位、基于卡的信息、摄像头、条形码扫描器和动作剪影,这一切都有助于改善流程支持。“移动解决方案的可能用途”不计其数。针对 BPM,此处理解为流程自动化,市场上涌现了以下移动终端设备应用方案。
所有这些用例的最高主旨都是尽早、尽快或者干脆是更好地将用户整合到流程流中,从而提高业务效率。然而,“移动 BPM”并不意味着在移动设备上使用轻量化的流程引擎。
自适应流程 BPM 原则的策划者 Max J. Pucher 在其博客中探讨了移动应用发展可能会产生的问题。触发 Pucher 思考的事情是,一位幸运的企业家用很少的钱购买了一款优秀的应用。这位幸运的企业家并没有做错什么。不过,在这种成功效应的驱动下,越来越多廉价、快速的“小型”应用会不断开发出来,那么这会产生什么后果呢?从中期来看,一旦我们开始思考如何维护这种应用格局,形势就会由喜转悲。由于大量小型应用的 UI 多种多样,在缺乏适当配置的情况下,之前灵活、松散耦合的 SOA 后端需要紧密相连。随后,当流程发生变动时,调整工作将会举步维艰甚至无法开展,因为这可能需要由十个不同的服务提供商或自由职业者同时修改其应用。我们将这种情况称作维护“大量廉价应用”架构的噩梦,而这是应该避免的。如前所述,明智地应用 SOA 原则是一项明智的对策。
前端技术的未来肯定非 HTML5 莫属,从当前不断涌现的新发展和创新中可见一斑。单页 Web 应用等新兴的架构模式是架构工具箱中不可缺少的一员。然而,“移动 BPM”这个新词的创造没有任何意义,因为与其他输出渠道之间并没有任何技术上的区别。不过大量用例将从移动实施中受益;这样一来,移动解决方案将在 SOA 和 BPM 领域发挥尤为重要的作用。对 BPM 来说,移动用例将成为其发展的真正驱动力,因为规模较小的项目可以快速收回昂贵、复杂的中央处理引擎的投资成本。因此,移动解决方案环境将助力 IT 从成本中心转化为创造价值的业务推动者,从而通过技术创新创造新的商业机会。
孤立地看,可快速收回投资的移动解决方案的实际用例极其多样化。目标始终是尽一切可能发挥移动化的优势,进而优化现有流程或创建新流程。在创造核心价值的过程中,我们必须识别所有公司流程中可在移动支持之下发挥乘数效应的“杠杆点”。