用SOA构架更好的移动应用服务

日期: 2009-04-23 翻译:袁发明 来源:TechTarget中国 英文

  多信道时代的到来

  除非你还生活在原始社会,否则你肯定不会不知道现在的网络电话影响力有多大。而网络电话的成功将移动服务推上了舞台。作为第一种确确实实地将传统电话与网络结合到一起的的手段,它标志着多信道时代的到来。

  虽然说移动网络刚刚成为焦点,不过实际上”移动应用”已经伴随我们很长时间,比如电话银行,或者短信查询预付费余额等。

  听起来不太对?这是因为从便捷性与可用性的角度来说,以往的电话应用只发挥了微不足道的作用。比如,当你访问eBay的时候,是否经常被提示”请注意,我们的定单选项可能已经改变”?你来到Amazon,是不是需要打开五层菜单才能看到自己的定单已经发货?

  随着向以用户为中心的转变,网络应用已经产生了新的标准:根据用户、参数、以往的操作以及即时定制进行动态调整,确保能够产生良好的用户体验,让用户愿意再次惠顾。

  在这篇文章里,我们将探讨如何构建新型应用,把网络的成功扩展到所有电话信道中。利用最新的工具和技术,这一切可能要比你预想的简单得多。

  移动应用的需求

  虽然电话信道中的移动网站、话音和文本各方面之间有很大的不同,但是它们实际上还是有相当多的共同之处。移动应用中的用户有着具体的目标。他们不是停滞于过去,而是要完成一项既定的任务。他们可能要跟踪一个订单、支付账款,或者查询一部电影的播放时间。其中有人通过短信来实现这些目标,也有人会去浏览网站,或者播打800电话。但是不管通过哪种途径,他们的目的无非是用最有效的方式来完成他们的任务。

  应用程序应该以这种”效率”为最优先,因为它不仅牵涉到用户的操作,还涉及呈现的方式。电话信道的低带宽也要纳入考虑范围之内,在此基础上做出能实现最佳用户体验的方案。W3C标准为此提供了很好的建议。

  开发人员还要面对用户需求的另一面:他们需要有效率构建和维护可以在多信道中使用并保持一致性的应用。

  应用开发最重要的一部分是用户与系统之间的主要通路,即”对话流”。正像我们前面提到的一样,移动应用的目标是让用户能够有效地完成他们的任务。他们通常要通过一系统的步骤来收集信息(比如一定量的金钱和收款人),然后执行一个操作(比如转账)。虽然在语音信道里的确定信息可能会在网络信道中以单选按键的形成呈现,但是这个流程在各个信道基本上是大同小异的。开发团队必须在一个与信道无关的环境下进行开发,并且在构建对话流的时候要以其共性为中心。有了这样的环境,还必须以有效的方式选择性地根据信道和用户进行调整,从而实现用户所期望的合适且能够满足需求的体验。

  与此相同,各个信道也都要集成与后端系统的通信。因为这是最需要自定义代码的地方,需要保证其与SOA框架的流畅交互。

  最后还需要与补充性工具的互通,从而满足单独信道的需求,比如音频文件或语音识别语法管理。

  移动应用的标准架构

  VoiceXML等标准的成功使得之前分离的交互语音应答系统(IVR)和网络这两个世界融合到了一起。这样不仅用户可以从更好的应用中获得方便,连开发人员的生活都变得安逸了,因为统一的架构在为他们提供了更好的灵活性、扩展性和互通性的同时,还提供了更快的周转时间。

  当前的多信道电话应用的标准架构主要由以下几个部分构成:

    · 基于Eclipse框架的统一的服务创建环境

  · 基于电话应用服务器的统一的服务运行环境

  · 基于面向服务架构(SOA)的统一的后端设备

  在本文下面的部分中我们将主要讨论服务创建环境,分析其为什么能帮助开发人员给用户提供更好的体验。

  用Eclipse+SOA构架移动应用服务

  Eclipse提供了一个开放框架将所有最优工具整合成强有力的集成平台。因此开发人员不必再为选择一个整体式的IDE而采取种种折中措施,他们可以从一系列开源和商业组件中挑选最合适的组件。这些组件以插件的形式融入到Eclipse架构,从而实现彼此之间的无缝交互。

  在构建多信道电话应用的时候,这种方法的优势尤为明显,因为可以根据各个信道不同的技术需求作为最佳的选择。更妙的是,这些工具大部分都可以免费下载到,比如下面我们就有一个很好的例子。

  VoiceObjects Developer Edition即是一个综合性的多信道框架的优秀示例,它可以为语音、视频、文本和网络信道提供综合支持。它包括一个图形界面IDE和用于一键测试及部署的嵌入式电话应用服务器。应用程序是使用面向对象的方法通过一系列主要组件模拟用户交互和后端集成与应用逻辑进行构建的。而拖曳式的图形用户界面使快速原型开发和对象重用更为便捷。

  个性化调整是通过”层”的概念实现的,而这个层同时也包括了像多语言或多外观等方面。在各个电话信道上都可以进行集成测试与调试,包括可以显示(各种手机上的)文本和网络的电话模拟器。如果要端对端地测试语音程序,可以下载整套的IVR软件比如Voxeo的Prophecy,也可以使用寄存式IVR比如Tellme。

  如果你的开发重点是语音信道,那么你可以使用Eclipse Voice Tools Project。这种应用设计和Microsoft Visio类似,是从一套基本的可配置的构建模块开始的,使用的是box-and-arrows 方式。应用逻辑通过定制JavaScript代码进行定义。在测试方面,可以将应用封装成WAR文件并手动部署到一系列可选的网络应用服务器上,比如Tomcat。

  在语音应用开发中语法也是一个很重要的方面。用户可能会说”我的账单有点问题”或者”转账五百美元”等,因此必须对这些语句进行建模,这样语音识别引擎才能成功地对其进行辨别。Nu Echo的NuGram IDE为有效地管理这种语法提供了一套工具。诸如自动完成和即时验证等功能可以为构建语法规则提供有效帮助。在测试和调整的时候,可以对样本用户的发音方式进行解析,从而分析其语法的覆盖范围并保证正确的语义解释。

  不管应用运行于哪种信道,对后端系统的访问都是关键的一部分。在Eclipse系统中,有几种框架可以用来解决这个任务。其中两个比较重要的是网络工具箱(WTP)和SOA工具箱(STP)。

  对于简单或即时性的任务来说,通常会选择JavaServer Pages(JSP)作为解决方案,其优势是较低的管理费用和对静态及动态页面的直接支持。WTP提供了种类繁多的各种用于支持开发、测试和部署的功能。

  对于较复杂和偏向于重用性的任务来说,网络服务是一种较好的方式。STP包含了广泛的功能,包括SOA中从业务过程建模和服务编排到代码生成、部署、测试及文档的方方面面。

  而Eclipse插件只是这诸多可自由选择的工具中的一部分。越来越多的开源项目和商业开发标志着Eclipse平台已经在开发团体中获得了主导地位。

  Eclipse工作平台其自身便是优秀的工具集自不用说,仅仅各种插件(如上所述)即可带来流畅的互通性:你可以在检查并调整一个语音识别语法的同时查看对应于用户输入的对话流;你可以在使用简单的拖曳方式调整应用逻辑的同时编写连接到后端的网络服务代码。可以说有史以来开发人员第一次可以真正地同时掌握应用的各个方面而不必在不同的IDE之间切换或为选择某个独立的环境而做出各种妥协了。

  移动应用的新时代

  移动应用还将继续发展下去。

  用户需要获取越来越多的的信息并进行交互,而且他们希望这些操作能与以往同样便捷——不管是拨打800电话、发送短信或是访问一个移动网站。这给开发人员带来的挑战便是要实现可以根据用户需要和期望动态进行调整的多信道电话应用。

  IVR与因特网技术的融合使得我们可以把从网络中学到的东西应用到所有的电话信道中:利用以应用服务器为中心的多层架构。通过网络服务和SOA统一对后端系统的访问。

  在IDE方面,Eclipse框架具有丰富的且仍在不断充实的各种互通的插件,为开发人员提供了大量可选的功能套装。这样就可以满足多信道应用开发的各个方面的需求–并且不是孤立地,而是以彼此相通、彼此协调的方式。

  还有同样重要的一点,即这些Eclipse插件中的大部分都可以通过免费下载得到,这使得开发人员不仅可以自由选择,还能分别对各种工具的优势进行评估。

  现在,要实现一个新点子已经无比简单。灵活且可扩展的设备已经就位,能够实现创新的工具也唾手可得。

  可以说,更优秀的移动应用的时代马上就要降临。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

相关推荐

  • 既熟悉又陌生的开源项目

    Eclipse基金会已成立整整10年了。目前这个开源组织拥有众多项目,其中就包含了最为出名的Java IDE Eclipse以及Mylyn。本文,我们将给您介绍10个已经“掀起波澜”的Eclipse项目。

  • Eclipse中隐藏的5个非常有用的功能

    Eclipse就是一头野兽,它也是一套设备,神秘但更具威力。有些人称它为一个持续变形机。另一些人则称它是一个变异体。

  • 推荐五个提高Java开发效率的工具

    Java已经越来越受程序的重视,俗话说磨刀不误砍柴工,好的工具可以提高Java开发效率,这些工具你都了解吗?

  • Java程序员应该知道的十个调试技巧

    任何一种编程语言都离来开调试这一环节,调试可以帮助识别和解决应用程序缺陷,那么做为java程序呗,你知道在Eclipse中怎样进行调试吗?