CN101453491B - 建立组件应用程序的方法和设备 - Google Patents

建立组件应用程序的方法和设备 Download PDF

Info

Publication number
CN101453491B
CN101453491B CN2009100013373A CN200910001337A CN101453491B CN 101453491 B CN101453491 B CN 101453491B CN 2009100013373 A CN2009100013373 A CN 2009100013373A CN 200910001337 A CN200910001337 A CN 200910001337A CN 101453491 B CN101453491 B CN 101453491B
Authority
CN
China
Prior art keywords
equipment
component
data
message
definition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CN2009100013373A
Other languages
English (en)
Other versions
CN101453491A (zh
Inventor
迈克尔·申菲尔德
比埃拉·比布尔
布伦杜沙·L·弗里奇
布赖恩·R·戈林
罗伯特·克兰
卡缅·B·维塔诺夫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BlackBerry Ltd
Original Assignee
Research in Motion Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Research in Motion Ltd filed Critical Research in Motion Ltd
Publication of CN101453491A publication Critical patent/CN101453491A/zh
Application granted granted Critical
Publication of CN101453491B publication Critical patent/CN101453491B/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)

Abstract

提供了一种建立无线组件应用程序的系统和方法。在移动通信设备上执行组件应用程序,该移动通信设备通过一个无线网络和互联网与Web服务通信。该组件应用程序包括数据组件、显示组件,以及消息组件,这些组件以XML代码写成。该组件应用程序还包括工作流组件,能够被写成ECMAScript的一个子集中,并且被嵌入在XML代码中。

Description

建立组件应用程序的方法和设备
技术领域
本申请涉及无线通信,特别是涉及用于移动通信设备的软件。 
背景技术
当今使用的移动通信设备的数目不断增加,例如移动电话、具有无线通信能力的PDA、和双向寻呼机。运行在这些移动通信设备上的软件应用程序增加了它们的实用性。例如,一部移动电话可以包括检索针对一个城市范围的气候的应用程序,或一个PDA可以包括使得使用者选购杂货的应用程序。这些软件应用程序利用了这些设备的移动性及对于无线网络连接性的优点,以便向用户提供及时和有用的服务,而与该用户的所在位置无关。但是,由于移动通信设备的受限的资源以及把数据无线地提供至移动通信设备的复杂性,开发用于移动通信设备的软件应用程序依然是困难和耗时的任务。 
当前,移动通信设备被配置用于通过基于互联网的浏览器和/或本机应用程序与Web服务通信。浏览器具有能适于在跨平台基础上针对各种不同设备操作的优点,但缺点是从Web服务请求页面(HTML屏幕清晰度),这种缺点将妨碍包括在该屏幕中的数据的持续性。浏览器的另一缺点是该屏幕在运行时间呈现,这将可能导致资源紧张。本机应用程序具有的优点是针对移动设备的类型而专门开发,从而提供针对每一个运行时环境相对优化的应用程序。但是,本机应用程序具有的缺点是它不是独立的平台,因此需要开发同一个应用程序的多个版本,以及在规模上相对大,从而重耗了移动设备的存储器资源。而且,应用程序的开发人需要具有例如Java和C++的编程语言的经验来构建这些硬编码的本机应用程序。需要能运行在具有各种运行时环境的Web服务客户机上、又具有降低的移动设备资源消耗的应用程序。 
在此公开的系统和方法提供了一个基于组件的应用环境,以便克 服或至少在一定程度上减轻上述的缺点。 
发明内容
当前的应用程序不能适应于运行在具有各种运行时环境的客户机上,并且会不希望地消耗太多的移动设备的资源。浏览器是一个具有从一Web服务请求页面(HTML的屏幕清晰度)的一个缺点的应用程序,这种缺点妨碍了该屏幕中包括的数据的持续性。浏览器的另一缺点是该屏幕在运行时间呈现,这可能导致资源紧张。本机应用程序是当前应用程序的另一实例,具有的缺点是它不是独立的平台,从而需要开发同一个应用程序的多个版本,同时有相当大的规模,从而重负了移动设备的存储器资源。与当前应用程序相反,提供了一个建立无线组件应用程序及与无线组件应用程序进行通信的系统。该系统包括在移动通信设备上执行的组件应用程序,通过无线网络及互联网络与Web服务通信。该组件应用程序包括一个或多个数据组件、显示组件、和/或消息组件,这些组件应用程序以例如XML代码的结构化定义语言写成。该组件应用程序可以进一步包括工作流组件,该工作流组件包括一系列例如以ECMAScript子集写成的指令,并且在某些实施方案中可被嵌入在XML代码中。还提供了一种建立组件应用程序的方法。该方法包括步骤步骤:创建数据组件、创建显示组件、以及创建消息组件。该数据组件、显示组件和消息组件可在某些实施方案中以XML写成。本方法还包括步骤:利用工作流组件把该数据组件、显示组件和消息组件联系(tie)在一起,工作流组件写为例如ECMAScript的子集的编程语言中的一组指令。 
因此,本发明提供了一种经过网络由移动通信设备与Web服务进行交互的方法。本方法包括步骤:接收用于在Web服务和通信设备之间建立通信的一个请求网络消息;响应该请求网络消息发送包括多个组件的一个组件应用程序,第一组组件具有以结构化定义语言表示的描述符而第二组组件被表示成一系列指令,这些组件被配置用于通过通信设备的运行时环境进行提供,以便产生配置作为Web服务的Web客户机的该组件应用程序的一个可执行版本;其中该可执行版本的执行 提供经过网络在Web服务和通信设备之间的随后的信息交换。 
还公开了一种移动通信设备,被配置来使用包括多个组件的组件应用程序的可执行版本经过网络与Web服务进行交互。该设备包括:用于操作该移动设备的设备基础结构,该移动设备包括用于执行该可执行版本的处理器和相关存储器;耦合到该设备基础结构的用户接口,该设备基础结构具有被配置用于与该可执行版本通信的输入设备和输出设备;无线收发机,耦合到该设备基础结构并且被配置用于与该网络通信;以及一个运行时环境,用于协调该可执行版本的执行,用于把该设备配置作为Web服务的Web客户机,该运行时环境被配置用于与具有以结构化定义语言表示的描述符的第一组组件以及被表示成一系列指令的第二组组件进行交互;其中该可执行版本的执行提供经过网络在该Web服务和该通信设备之间的随后的信息交换。 
还公开了一种计算机程序产品,用于配置一个移动通信设备,以便使用包括多个组件的一个组件应用程序的可执行版本经过网络与Web服务进行交互。该计算机程序产品包括:一个计算机可读介质;存储在该计算机可读介质上的运行时环境模块,用于协调该可执行版本的执行,以便把该设备配置为Web服务的Web客户机,该运行时环境被配置用于与具有以结构化定义语言表示的描述符的第一组组件和被表示成一系列指令的第二组组件进行交互;其中该可执行版本的执行提供经过网络在该Web服务和该通信设备之间的随后的信息交换。 
还公开了一个服务器,配置来用于提供Web服务,以便经过网络与一个移动通信设备进行交互。该服务器包括:一个网络接口,用于接收一个请求网络消息,以便在Web服务和通信设备之间建立通信;耦合到该网络接口用于响应该请求网络消息进行发送的一个组件应用程序,该组件应用程序包括多个组件,第一组组件具有以一种结构化定义语言表示的描述符,而第二组组件被表示成一系列指令,这些组件被配置用于由该通信设备的运行时环境进行提供,以便产生把该设备配置作为Web服务的Web客户机的该组件应用程序的一个可执行版本;其中该可执行版本的执行提供经过网络在该Web服务和该通信设备之间的随后的信息交换。 
还提供了一种移动通信设备,被配置来使用包括多个组件的组件应用程序的可执行版本经过网络与Web服务进行交互。该设备包括:一个基础结构装置,用于操作该移动设备来执行该可执行版本;一个用户接口装置,耦合到被配置来用于与该可执行版本通信的基础结构装置;一个收发机装置,耦合到该设备基础结构并且被配置用于与该网络通信;以及一个运行时间装置,用于协调该可执行版本的执行,以便把该设备配置作为Web服务的Web客户机,该运行时间装置被配置用于与具有以结构化定义语言表示的描述符的第一组组件以及被表示成一系列指令的第二组组件交互;其中该可执行版本的执行提供经过网络在该Web服务和该通信设备之间的随后的信息交换。 
附图说明
在下面参考附图作出的详细描述中,这些和其它特点将变得显见,其中: 
图1是一个通信系统的框图; 
图2是图1的一个移动通信设备的框图; 
图3是图2的一个组件应用程序的方框图; 
图4是表示图3的一个示例组件应用程序的框图; 
图5是表示建立图3的无线组件应用程序的一个方法的流程图; 
图6是用于在图1的一个设备和Web服务之间进行通信的一个方法的流程图; 
图7示出实施图3的组件应用程序的一个示例方法; 
图8示出实施图3的组件应用程序的另一示例方法;以及 
图9是图2设备的另一示例的框图。 
具体实施方式
网络系统 
参考图1,网络系统10包括移动通信设备100,用于通过一个耦合的无线网络102和互联网络104与由Web服务器106提供的一个或者多个 Web服务交互。当与Web服务器106的Web服务通信时,设备100分别地发送与接收请求/响应消息105。通过使用消息标题信息形式的请求/响应消息105以及相关的数据内容,该设备100能操作为Web服务的Web客户机,例如从在线商户请求和接收产品报价和可得性。Web服务是一个系统的示例,通信设备100上的客户应用程序302(参见图2)通过无线网络102与互联网络104与该系统交互,以便把实用工具提供到移动通信设备100的用户。在通信设备100和Web服务之间发送的消息105能够穿越(traverse)一个消息映射服务(没示出),该消息映射服务在由设备100和Web服务使用的不同格式之间转换该消息105。 
为了满足适当的请求/响应消息105,Web服务器106通过各种协议(例如但不局限于HTTP和组件API)与一个应用服务器110通信,以便向曾经提供在该设备100上的客户应用程序302(参见图2)表明相关的商业逻辑(方法)。该应用服务器110也可以包括Web服务器106软件,使得该Web服务器106能够被考虑是该应用服务器110的一个子集。类似于调用关于一个对象的一种方法(或一个功能),设备100的应用程序302能够使用应用服务器110的商业逻辑。应该认识到,能够经由网络102、104通过该消息105把涉及应用服务器110的客户应用程序程序302直接下载/上载到设备100。应该进一步认识到,设备100可以通过网络102、104与一个或多个Web服务器106和相关的应用服务器110通信。还应该认识到,该设备100能够直接耦合到应用服务器110,从而按照期望旁路该Web服务器106。 
服务器环境 
参见图1,Web服务器106提供了在通信设备100上由客户应用程序302使用的信息消息105。另外或作为一种选择,Web服务器106可以接收并且使用由在该通信设备100上执行该客户应用程序302提供的信息消息105,或完成在通信设备100上执行的代表客户应用程序302的任务。Web服务可被定义为Web服务器106的一个软件服务,该Web服务可以实现使用注册在通用发现描述和集成(UDDI)中的Web服务描述语言(WSDL)表示的一个接口,并且能够通过经例如简单对象访问协议(SOAP)的适当协议在互联网络104上表述来与客户设备100通过消息 105通信。在某些实施方案中,SOAP是定义用于消息105的XML格式的一个规范,包括包装在SOAP单元中的一个良好形成的XML片段。SOAP的其它部分规定了如何把程序数据表示为XML以及如何使用SOAP实现远程过程调用(RPC)。这些可选的SOAP部分被用于实现RPC形式的应用程序,其中从该客户设备100发送包括一个可调用函数以及转到该函数的参数的SOAP请求消息105,并且该服务器106返回该响应消息105结果执行函数。SOAP还支持文件形式应用程序,其中该SOAP消息105是围绕XML文档的一个包装。SOAP的另一可选部分定义HTTP约束(即标题),其中某些SOAP实施方案支持MSMQ、MQ系列、SMTP或TCP/IP传输协议。另外,该Web服务可以使用其它公知通信协议、消息105格式,并且该接口可以用不同于上述的web服务语言来表达。因此,设备100的用户经过网络102、104利用由服务器106提供的服务。 
客户机环境 
参考图2,组件应用程序302是软件应用程序,如图3描述的那样,能够以例如可扩展标记语言(XML)和ECMAScript的一个子集写成。XML和ECMAScript是基于标准的语言,使得软件开发者以便携和独立平台的方式开发组件应用程序302。通过无线网络102无线发送该组件应用程序302,并且装入到设备基础结构204的存储器模块210中。另外,组件应用程序302可以经由一个串行连接、USB连接、或例如IR,802.11(x)和/或BluetoothTM的短程无线通信系统加载到该设备100上。一旦加载到移动通信设备100,则该组件应用程序302可由移动通信设备100上的组件框架结构执行,把组件应用程序302转换成本机代码,由该设备基础结构204中的处理器208执行该本机代码。另外,该组件应用程序302可被执行作为本机代码或由该移动通信设备100上的其它软件模块或操作系统编译,提供作为此后以数字206表示的一个本机运行时环境的组件框架结构206。 
再次参考图1和2,由设备100提供的客户机运行时环境206能够被配置来使设备100操作为Web服务的(Web服务器106的)Web客户机。设备100的客户机运行时环境206最好能够在设备100上生成、主控和执行 该客户应用程序302(其为组件应用程序的形式,参见图3)。另外,该客户机运行时环境206的具体功能可以包括但不局限于例如对于语言、协调存储器分配、连网、在I/O操作过程中的数据管理、在设备100的输出设备上谐调图形以及提供对定向分类和支持文件/库的核心对象的存取的支持。由设备100实施的运行时环境206的实例可以包括例如但不局限于由微软(Microsoft)公司提供的公用语言运行时间(CLR)和SunMicrosystems公司提供的Java运行时环境(JRE)。 
设备100的终端运行时环境206最好支持用于客户应用程序302的驻留可执行版本的下列基本功能,例如但不局限于: 
提供把消息105发送到通过网络102、104连接的该Web服务器106的Web服务的通信能力; 
在设备100的一个输入设备上由用户提供数据输入能力,以便提供给该Web服务器106的Web服务的输出消息105(到该服务的消息)的数据部分; 
提供用于Web服务的响应消息105(输入信息)的数据、或在该输出设备上的Web服务器106的不相关提示的数据显示或输出能力; 
提供数据存储器服务,以便在设备100的存储器模块210(参见图2)中保持本地客户机数据;以及 
提供用于脚本语言的执行环境,以便协调客户应用程序302的应用程序组件400,402、404、406(参见图3)的操作。 
因此,该本机客户机终端运行时环境206为客户应用程序302提供了接口,并且将接口提供给设备100的处理器208的功能和设备基础结构204的操作系统。该运行时环境206最好在设备100上提供一个受控的、安全的和稳定的环境,其中执行组件应用程序302。该运行时环境206提供该组件400、402、404、406的定义,以便创建具体针对通信设备100的每一各个设备基础结构20的实际Web客户机。 
通信设备 
参考图1和图2,该移动通信设备100是例如但不局限于移动电话、PDA、双向寻呼机和双模式通信设备(参见图9)。设备100包括一个网络连接接口,例如通过连接218耦合到设备基础结构204的一台无线收发 机200。在设备100的操作期间,该无线收发机200可连接到网络102、104,例如通过RF链路连接到无线网络102,使设备100能够通过网络102、104与外部系统(例如Web服务器106)彼此通信。该无线收发机200还帮助该设备100协调在客户应用程序302和服务器106、110之间的请求/响应消息105。网络102、104支持在连接到网络102、104的设备100和外部系统之间在请求/响应消息105中的数据发送。该网络102、104还可以支持对于在通信设备100和该网络102、104外部的设备之间的电话呼叫的语音通信。无线网络102能使用一种无线数据传输协议,例如但不局限于Data TAC、GPRS或CDMA。在无线网络102和互联网络104之间的连接包括一个互联网网关(没示出),使该消息105和相关数据内容能够在连接设备100和服务器106的Web服务之间流动。 
再次参考图2,设备100还具有通过连接222耦合到设备基础结构204的一个用户接口202,以便与用户(没示出)交互。用户接口202包括一个或者多个用户输入设备,例如但不局限于QWERTY键盘、辅助键盘、轨迹轮、输入笔、鼠标器、话筒,以及输出设备,例如LCD屏幕显示器和/或扬声器。如果该屏幕是触摸敏感的,则该显示器还可以用作通过设备基础结构204控制的用户输入设备。在运行时环境206中执行的客户应用程序302采用该请求/响应消息消息105时,设备100的用户采用该用户接口202来经过系统10(参见图1)协调该请求/响应消息消息105。 
再次参考图2,通过设备基础结构204启动移动通信设备100的操作。设备基础结构204包括一个计算机处理器208和该相关存储器模块210。通过执行由操作系统以及放置在存储器模块210中的客户应用程序302提供的相关指令,计算机处理器控制该网络接口200、用户接口202和通信设备100的运行时环境206的操作。应该进一步认识到,设备基础结构204可以包括耦合到处理器208的计算机可读存储介质212,用于把指令提供到处理器和/或将客户应用程序302加载/更新到该存储器模块210中。计算机可读介质212可以包括硬件和/或软件,例如只举例来说有磁盘、磁带、光可读介质,例如CD/DVD、ROMS以及存储卡。在每种情况下,该计算机可读介质212都可以采取小盘、软盘、盒带、硬盘驱动器、固态存储卡、或提供在存储器模块210中的RAM的形式。 应该指出,上述列出实例计算机可读介质212能被单独或组合使用。 
组件应用程序 
参考图3,组件应用程序302的框图包括数据组件400、显示组件402和消息组件404,这些组件通过与客户机运行时环境206的通信214由工作流组件406协调。该结构化定义语言可用于把组件400、402、404构造为一系列元数据记录,该元数据记录包括表示资源的具体属性的若干预定义单元,使得每一单元能够具有一个或多个值。每一元数据设计通常具有定义的特征,例如但不局限于:有限数量的单元,每一单元的名称,及每一单元的含意。示例的元数据设计包括例如但不局限于都柏林(Dublin)核心(DC)、英-美分类规则(AACR2)、政府信息定位服务(GILS)、编码档案描述(EAD)、IMS全球学术协会(IMS)、及澳大利亚政府定位服务(AGLS)。编码句法使得设备基础结构204(参见图2)处理组件400、402、404的元数据,并且编码方案包括例如但不局限于XML、HTML、XHTML、XSML、RDF、机读目录(MARC)及多用途互联网邮件扩展(MIME)。客户机运行时环境206对于该组件400、402、404的元数据描述符操作,以便提供该应用程序302的一个可执行版本。 
再次参考图4,数据组件400限定由组件应用程序302使用的数据实体。数据组件400可以描述的数据实体的示例有:订单、用户及金融交易。数据组件400定义为了描述该数据实体所要求的信息以及表达的信息格式。举例而言,该数据组件400可以定义例如但不局限于包括以下内容的订单:格式化为数字的订单的唯一标识符,被格式为字符串的项目列表,具有日期-时间格式的订单创建的时间,格式化为字符串的订单状态,以及下订单的用户,该订单被根据该数据组件400的另一定义而格式化。 
再次参考图4,该消息组件404定义由组件应用程序302使用的消息格式,以便与例如Web服务的外部系统通信。例如,该消息组件404之一可以描述例如但不局限于用于下订单的消息,该订单包括用于该订单的唯一标识符、订单的状态以及与订单相关的注释。 
再次参考图4,该显示组件402限定了当组件应用程序302由用户接口202显示时该组件应用程序302的外观及工作情况。显示组件402能够 规定GUI屏幕和控制,以及当用户使用该用户口202与该组件应用程序302交互时将被执行的动作。例如,该显示组件402可以限定屏幕、标号、编辑框、按钮和菜单,以及当用户键入一个编辑框或按下一个按钮时将要采取的动作。大多数Web服务消费者使用Web服务操作结果的可视显示,因此在能够显示用户接口屏幕的设备100上提供该运行时环境。 
参考图1和4,应该认识到在上述客户组件应用程序302定义主控模式中,该显示组件402可以根据客户机平台和设备100的环境改变。例如,某些情况下,Web服务用户不要求一个直观显示。该组件应用程序302的组件400、402、404、406的应用定义可以被主控在Web服务注册表中,作为平台-中性数据400、消息404、具有针对各种预定客户机运行时间的一组平台-专用显示组件402描述符的工作流406组件描述符的一个集束(参见图2)。当该发现或配置请求消息105被发出时,该客户机类型应该被规定作为这一请求消息105的一部分。为了在针对该通信设备100的不同客户机平台打包组件应用程序302的同时能够避免复制数据、消息及工作流元数据,应用程序定义可在该应用服务器110(例如)上被主控作为与显示组件402的不同组链接的平台-中性组件定义的一个集束。当用户作出发现或下载请求消息105时,该通信设备100、116的客户机运行时类型被确认并且配置适当的集束,由该Web服务器106经过网络102、104传递到设备100。对于那些Web服务用户来说,客户应用程序302将包含通过工作流组件406与数据组件400和消息组件404链接的显示组件402。 
再次参考图4,该组件应用程序302的工作流组件406限定了当将执行一个操作时发生的处理,例如由如上所述的显示组件402规定的一个操作、或当消息105(参见图1)从系统10到达时将被执行的一个动作。由工作流组件406定义显示、工作流及消息处理。该工作流组件406被写为编程语言或脚本语言(例如但不局限于ECMAScript脚本语言)的一系列指令,并且如所述的那样能够成被编译成本机代码并由运行时环境206执行。工作流组件406的一个示例可以是对数据赋值、管理屏幕或发送该消息105。当具有显示组件时,能够创建多个工作流定义,以便支持在设备100中变化的能力和特征。能够确定该适当的工作流定 义,并在该应用程序302的下载和提供之时发送。 
ECMA(欧洲计算机制造商联合会)脚本是一种标准的脚本语言,其中的脚本能够被称为由另一程序而不是由计算机处理器编译或执行的指令的序列。其它的脚本语言的示例有Perl、Rexx、VBScript、JavaScript以及Tcl/Tk。通常,脚本语言是指令性语言,用于管理、定制以及自动操作现有系统的设施,例如设备100。在这种系统中,已经可通过用户接口202(参见图2)得到有用的功能,并且该脚本语言是用于表明编制程序控制功能的一个机制。以此方式,设备100提供了完成该脚本语言能力的对象及设施的主机运行时环境。 
具体地说,EMCAScript是一个面向对象的编程语言,用于在该主机运行时环境中执行计算和管理计算的对象。ECMAScript能被用作一个网页脚本语言,提供一种机制,执行服务器106、110的计算,作为系统10的基于网页的客户服务器结构的一部分(参见图1)。ECMAScript提供用于各种的主机运行时环境的核心脚本能力,并且因此该核心脚本语言能被认为是对于若干具体主机运行时环境是操作平台中性。运行时环境206(参见图2)能够提供用于通信设备100的客户机方计算的ECMAScript主机运行时环境,例如但不局限于;表示框、菜单、弹出、对话框、文本区、定位点、帧、历史、cookies和输入/输出的对象。另外,运行时环境206的主机运行时环境提供把脚本代码附加到事件的一个装置,这些事件例如但不限于聚焦的改变、页面和图像加载、卸载、出错和异常中止、选择、形式提交、及鼠标动作。在使用ECMA脚本的实施方案中,出现在工作流组件406中的代码把用户接口单元与固定的和计算的文本及图像组合,并且对用户在该用户接口202上的交互作出反应。Web服务器106(参见图1)提供用于服务器一侧的计算的不同的主机环境,包括表示请求、客户和文件的对象,以及锁定和共享数据的机制。通过把客户机一侧和服务器一侧脚本一起使用,有可能在提供用于基于Web的组件应用程序302的一个定制用户接口202的同时,在客户通信设备100和服务器106、110之间分配计算。 
ECMAScript还定义一组内置的操作符,可以不是严格意义上的功能或方法。ECMAScript操作符比如但不局限地包括各种一元操作符、 相乘操作符、加法算符、逐位移位操作符、关系操作符、相等操作符、二进制按位算符、二进制逻辑操作符、赋值算符和逗点算符。但是ECMAScript句法类似于Java句法,ECMAScript句法被解限(relaxed),以便使其能被开发人员用作一种容易使用的脚本语言。例如,一个ECMAScript中的变量不要求申明其类型,也不是与属性相关的类型,并且不要求限定的函数在调用之前出现文字声明。应该认识到,在基于一个类别的面向对象的编程语言中,通常由实例携带状态、由类别携带方法,并且继承的只是结构和行为特点。在ECMAScript中,由对象携带该状态和方法,并且全部的继承结构、工作表现及状态。 
组件应用程序示例 
因此,参考图4,客户应用程序302能够被定义为一组平台中性的组件定义,指即对于数据组件400和消息组件404组件以及使用XML的显示组件402(或任何其它适当的结构化定义语言)。工作流组件406能够使用ECMAScript(或任何其它适当的平台中性脚本语言)定义。当该组件应用程序302的组件400、402、404、406组件被提供在通信设备100上时,客户机运行时环境206(参见图2)能够基于元定义来产生组件模板。利用一大类的终端运行时环境206,例如XML或ECMAScript的跨平台标准可用于定义应用程序组件元数据而不是预先构建该组件应用程序302。这种延迟的约束能够使得该组件应用程序302的普通应用程序的定义被运行于由各种不同通信设备100表示的各种终端系统环境206上。 
利用与下列文档类型定义(DTD)一致的限定组件,下面的示例示出了如何能够使用例如但不局限于XML的一个结构化定义语言以及例如但不局限于ECMAScript的操作平台中性脚本/编程语言来表示Web服务客户应用程序302的方式: 
<!ELEMENT wcApp(desc?,iconUrl?,res*,wcData*,wcMsg*,style*,wcScr*,wcFlow)> 
<!ATTLIST wcApp 
    name CDATA#REQUIRED 
    title CDATA#IMPLIED 
    vendor CDATA#IMPLIED 
    version CDATA#IMPLIED 
    transportKey CDATA#IMPLIED 
    installNotifURL CDATA#IMPLIED 
    registerURL CDATA#IMPLIED 
<!ELEMENT desc(#PCDATA)> 
<!ELEMENT iconUrl(#PCDATA)> 
<!ELEMENT res(#PCDATA)> 
<!ATT LIST res 
    name CDATA#REQUIRED 
    url CDATA#REQUIRED 
    type(xml 
Figure G2009100013373D00131
image)sound)any)#REQUIRED 
    deferred(true false)″false″- 
Example Data Component 400
<!ELEMENT wcData(field+)> 
<!ATTLIST wcData 
    name CDATA#REQUIRED 
    persisted(true !false)″true″ 
<!ELEMENT dfield(#PCDATA)> 
<!ATTLIST dfield 
    name CDATA#REQUIRED 
    type(String 
Figure G2009100013373D00132
Number Boolean Date Any)″Any″ 
    array(true 
Figure G2009100013373D00133
false)″false″ 
    cmp(true false)″false″ 
    cmpName CDATA#IMPLIED 
    key(01)2)″0″ 
Example Message Component 404
<!ELEMENT wcMsg(mfield*)> 
<!ATT LISTwcMsg 
    name CDATA#REQUIRED 
    mapping CDATA#IMPLIED 
<!ATTLISTwcMsg 
    pblock CDATA#IMPLIED 
<!ELEMENT mfield(#PCDATA)> 
<!ATTLIST mfield 
    name CDATA#REQUIRED 
    type(String|Number|Boolean Date Array XML)#IMPLIED 
    mapping CDATA#IMPLIED 
Example Presentation Components 402
<!ELEMENT wcScr(layout?,menu?,refresh ?,event?)> 
<!ATTLISTwcScr 
    name CDATA#REQUIRED 
    title CDATA#IMPLIED 
    main(true false)″false″ 
    dialog(true 
Figure G2009100013373D00141
false)″false″ 
    param CDATA#IMPLIED 
<!ELEMENT style(font?)> 
<!ATTLIST style 
    name CDATA#REQUIRED 
    bgColor CDATA#IMPLIED 
<!ELEMENT font EMPTY> 
<!ATTLIST font 
    name CDATA#REQUIRED 
    color CDATA#IMPLIED 
    size CDATA#IMPLIED 
    bold(true  
Figure G2009100013373D00151
false)″false″ 
    italic(true false)″false″ 
    underline(true j false)″false″ 
<!ELEMENT refresh(msg+)> 
<!ELEMENT msg(#PCDATA)> 
<!ELEMENT layout(layout*,label*,separator*,edit*,image*,choice*,button*, 
textarea*)> 
<!ATTLIST layout 
    type(grid j flow{border 
Figure G2009100013373D00152
vertical)#REQUIRED 
    param CDATA#IMPLIED 
    placement CDATA#IMPLIED 
    style CDATA#IMPLIED 
<!ELEMENT menu(item*)> 
<!ELEMENT item(action,condition?)> 
<!ATTLIST item 
    name CDATA#REQUIRED 
    label CDATA#REQUiRED 
    shortcut CDATA#IMPLIED 
<!ELEMENT action EMPTY> 
<!ATTLIST action 
    screen CDATA#IMPLIED 
    pblock CDATA#IMPLIED 
    param  CDATA#IMPLIED 
    acceptChanges(true 
Figure G2009100013373D00161
false)″true″ 
<!ELEMENT condition EMPTY> 
<!ATTLIST condition 
    pblock CDATA#REQUIRED 
    param CDATA#IMPLIED 
    result(true false)″true″ 
<!ELEMENT event EMPTY> 
<!ATTLIST event 
    type(onlnit onClick onChange onFocusOut)″onlnit″ 
    pblock CDATA#IMPLIED 
    screen CDATA#IMPLIED 
    param CDATA#IMPLIED 
<!ELEMENT separator EMPTY> 
<!ELEMENT label(condition?,event?)> 
<!ATTLIST label 
    name CDATA#REQUIRED 
    value CDATA#REQUIRED 
    placement CDATA#IMPLIED 
    style CDATA#IMPLIED 
<!ELEMENT edit(condition?,event?)> 
<!ATTLIST edit 
    name CDATA#REQUIRED 
    value CDATA#IMPLIED 
    mapping CDATA#IMPLIED 
    type(char|number|date|pwd|phone|email)″char″ 
    readOnly(true|false)″false″ 
    placement CDATA#IMPLIED 
    style CDATA#IMPLIED 
<!ELEMENT textarea(condition?,event?)> 
<!ATTLIST textarea 
    name CDATA#REQUIRED 
    value CDATA#IMPLIED 
    mapping CDATA#IMPLIED 
    readOnly(true 
Figure G2009100013373D00171
false)″false″ 
    placement CDATA#IMPLIED 
    style CDATA#IMPLIED 
<!ELEMENT image(condition?,event?)> 
<!ATTLIST image 
    name CDATA#REQUIRED 
    resName CDATA#REQUIRED 
    placement CDATA#IMPLIED 
<!ELEMENT choice(condition?,event?,entry*)> 
<!ATTLIST choice 
    name CDATA#REQUIRED 
    value CDATA#IMPLIED 
    mapping CDATA#IMPLIED 
    type(singleList|multiList|dropdown|checkbox|radio)″singleList″ 
    readOnly(true false)″false″ 
    placement CDATA#IMPLIED 
    style CDATA#IMPLIED 
<!ELEMENT entry(#PCDATA)> 
<!ELEMENT button(condition?,event?)> 
<!ATTLIST button 
    name CDATA#REQUIRED 
    label CDATA#REQUIRED 
    image(true|false)″false″ 
    placement CDATA#IMPLIED 
    style CDATA#IMPLIED 
ExampleWorkflow Component 406
<!ELEMENTwcFlow(block+)> 
<!ELEMENTpblock(#PCDATA)> 
<!ATTLIST pblock 
    id CDATA#REQUIRED 
    param CDATA#IMPLIED 
如上给出的那样,XML单元限定了示例组件应用程序302,包括wcApp单元、wcData单元、wcMsg单元、wcSrc单元、和wcFlow单元。参考图3,wcApp元件是限定组件应用程序302的一个高等级单元。wcData单元限定该示例的数据组件400,包括一组命名的类型字段。wcMsg单元限定该示例的消息组件404,类似限定一组名称的类型字段。wcSrc单元限定该示例的显示组件402。该示例显示组件402是一个标记、分隔符、图像、按钮、编辑字段、文本区、单项选择表、多项选择表、下拉列表、复选框、单选按钮、或包括一组其它显示组件402的屏幕。 
参考上述示例组件应用程序302和图3,该wcFlow单元限定了示例工作流组件406。该XML单元的程序框(pblock)属性指定了嵌套在wcFlow单元中的一个程序框单元。每一个程序框单元都包括限定该组件应用程序302的工作流的一部分的脚本。该脚本以ECMAScript写成。 
为了定义组件应用程序302的工作表现,工作流组件406使用ECMAScript来参考和操作该数据组件400、该显示组件402和该消息组件404。工作流组件406也可以参考外部对象类型,允许对以组件应用程序302定义的组件执行操作。例如,一个wcMsg类型允许由消息组件404限定的消息被评估来确定是否已经提供了命令字段,并且确定是否被发到例如服务器106的Web服务的外部系统。wcData的类型确定了由数据组件400定义的数据实体的收集规模,并且允许删去数据实体。一个wcScr类型实现把显示组件402显示给用户。类似地,一个专用对话外部对象允许一个消息被在用户接口202上显示给用户(参见图2)。 
具有接口的示例组件应用程序302 
参考图1和4,示出了说明另一示例组件应用程序302的框图。包括在示例组件应用程序302中的显示组件402定义了一个登录屏幕500、一个专用屏幕502、一个传递信息屏幕504、一个订单列表屏幕508和订单状态屏幕506。这些屏幕将提供在通信设备100的用户接口202上(参见 图2)。该示例的组件应用程序302使得用户浏览一个比萨饼菜单、订单用于递送的一个比萨饼菜单并且浏览过去订单的细节。该用户首先被提供的是在用户接口202上的登录屏幕500。用户提供一个用户名和密码,并且随后按下登录按钮501。工作流组件406对照由服务器106的Web服务通过信息105提供的一个用户分布文件检验用户名和口令。如果用户成功登录,则显示专用屏幕502。从该专用屏幕502中,该用户能够选择菜单项来下订单或浏览订单状态,这将确定是否显示该递送信息屏幕504,或是否显示该订单列表屏幕508。该递送信息屏幕504使得该用户指定一个订单的细节。使用描述一个订单的数据组件400存储由用户提供的信息。 
用户随后选定一个菜单选项来发送订单,这将启动工作流组件406把由包括订单信息的相应消息组件404限定的该消息105送到服务器106上的该Web服务。订单列表屏幕508列出过去的订单,允许用户选定一个菜单项来浏览该一个或多个列出的订单的细节。在发送出一个订单或选择菜单项来浏览订单细节之后,根据由设备100接收以及随后由相关消息组件404、工作流组件406、显示组件402和数据组件400处理的响应消息105,显示订单状态屏幕506。订单状态屏幕506包含描述该用户已经制定的订单的信息,以及当选择时引起专用屏幕502被显示的一个菜单项。该消息组件404转送针对该消息105的输入和输出的所需数据。对应的数据组件400协调在设备100的存储器模块210(参见图2)中的数据的存储,用于随后由该显示组件402在用户接口上的显示。工作流组件406协调数据在数据组件400、显示组件402和消息组件404之间的变换。 
显示在图5中的示例组件应用程序302以如下的XML和mEScript表示,包括作为″wcData″的数据组件400、作为″wcMsg″的消息组件404、作为″wcScr″的显示组件402、以及作为″wcFlow″的工作流组件406,用于处理其它组件400、402、404: 
<IDOCTYPE wcApp SYSTEM″wcApp.dtd″> 
<wcApp name=″WirelessPiza″title=″Wireless Piza″vendor=″ARG″version=″0.9″> 
<desc>Order pizza from your wireless device.</desc> 
<iconUrl>http://www.example.com/wirelessPizzalcon.png</iconUrl> 
<wcData riame=″User″> 
       <dfield name=″name″type=″String″key=″1″/> 
       <dfield name=″passwordHash″type=″String″/> 
       <dfield name=″street″type=″String″/> 
       <dfield name=″city″type=″String″/> 
       <dfield name=″postal″type=″String″/> 
       <dfield name=″phone″type=″String″/> 
</wcData> 
<wcData name=″OrderStatus″> 
       <dfield name=″confNumber″type=″Number″key=″1″/> 
       <dfield name=″status″type=″String″/> 
       <dfield name=″datetime″type=″Date″/> 
</wcData> 
<wcData name=″Order″> 
       <dfield name=″orderld″type=″Number″key=″1″/> 
       <dfield name=″special″type=″String″/> 
       <dfield name=″user″cmp=″true″cmpName=″User″/> 
       <dfield name=″datetime″type=″Date″/> 
       <dfield name=″orderStatus″cmp=″true″cmpName=″OrderStatus″/> 
</wcData> 
<wcData name=″Special″> 
       <dfield name=″desc″key=″1″type″String″/> 
       <dfield name=″price″type=″Number″/> 
</wcData> 
<wcMsg name=″inAddSpecial″mapping=″Special″> 
</wcMsg> 
<wcMsg name=″inRemoveSpecial″pblock=″mhRemoveSpecial″> 
      <mfield name=″desc″mapping=″Special.desc″/> 
    </wcMsg> 
    <wcMsg name=″inOrderStatus″> 
           <mfield name=″orderld″mapping=″Order.orderld″/> 
           <mfield name=″status″mapping=″Order.orderStatus″/> 
    </wcMsg> 
    <wcMsg name=″inUserInfo″mapping=″User″> 
    </wcMsg> 
    <wcMsg name=″outOrder″> 
           <mfield name=″special″mapping=″Order.special″/> 
           <mfield name=″user″mapping=″Order.user″/> 
           <mfield name=″datetime″mapping=″Order.datetime′/> 
    </wcMsg> 
    <wcScr name=″scrSpecials″title=″Specials″main=″true″> 
              <layout type=″flow″> 
                                        <choice name=″slSpecials″value=″Special0.desc+′-.
    $′+Special0.price″type=″singleList″/> 
                           </layout> 
                           <menu> 
                                 <item name=″login″label=″Login″> 
                                           <action screen=″scrLogin″/> 
                                           <condition 
    pblock=″chLoggedin″result=″false″/> 
                                           </item><item name=″order″label=″Order″> 
                                                     <action 
    screen=″scrDelivery″param=″Application.authenticatedUser″/> 
                                                     <condition pblock=″chLoggedin″/> 
                                       </item> 
                                       <item name=″viewOrderStatus″label=″View Orders 
    Status″> 
                                                 <action screen=″scrOrdersList″/> 
                                               <condition pblock=″chLoggedin″/> 
                                    </item> 
                            </menu> 
                  </wcScr> 
                  <wcScr name=″scrLogin″dialog=″true″> 
                            <layout type=″vertical″> 
                                     <layout type=″flow″> 
                                                <label name=″lblUserName″value=″User 
    Name:′″/> 
                                                <edit name=″edUserName″type=″char″/> 
                                      </layout> 
                                      <layout type=″flow″> 
                                                 <label 
    name=″lblPassword″value=″Password:″/> 
                                                 <edit name=″edPassword″type=″pwd″/> 
                                       </layout> 
                                       <button name=″btnLogin″label=″Login″> 
                                                <event 
    type=″onClick″pblock=″ahLogin″param=″edUserName.vaXue″/> 
                                          </button> 
                                </layout> 
                    </wcScr> 
                    <wcScr name=″scrDelivery″title=″Please provide delivery 
    information″param=″User″> 
                             <layout type=″vertical″> 
                                       <layout type=″flow″> 
                                                 <label name=″lblStreet″value=″Street:″/> 
                                                 <edit name=″street″mapping=″User. 
    street″type=″char″/> 
                                       </layout> 
                                        <layout type=″flow″> 
                                                   <label name=″lblCity′value=″City:″/> 
                                                   <edit name=″city″mapping=″User.city″ 
    type=″char″/> 
                                        </layout> 
                                        <layout type=″flow″> 
                                                    <label 
    name=″lblPostalCode″value=″Postal code:″/> 
                                                    <edit name=″postalCode″mapping=″User. 
    postal″type=″char″/> 
                                         </layout> 
                                         <layout type=″flow″> 
                                                   <label 
    name=″lblPhone″value=″Telephone:″/> 
                                                   <edit name=″phone″mapping=″User. 
    phone″type=″phone″/> 
                                        </layout> 
                                        <layout type=″flow″> 
                                                  <label name=″lblDate″value=″Date of 
    delivery:″/> 
                                                  <edit name=″date″type=″date″/> 
                                      </layout> 
                           </layout> 
                           <menu> 
                                      <item name=″sendOrder″label=″Send Order″> 
                                                <action 
    pblock=″ahSendOrder″param=″User″/> 
                                       </item> 
                           </menu> 
               </wcScr> 
                <wcScr name=″scrOrderStatus″title=″Order status″param=″Order″> 
                        <layout type=″vertical″param=″%″> 
                                 <layout type=″flow″> 
                                          <label 
    name=″lblSpecialr″value=″Special:″/> 
                                    <label 
    name=″lblSpecialMapped″value=″OrderO.special″/> 
                                 </layout> 
                                 <layout type=″flow″> 
                                          <label 
    name=″lblConfNumber″value=″Confirmation number:″/> 
                                          <label name=″lblConfNumberMapped″ 
    value=″Order0.orderStatus.confNumber″/> 
                                </layout> 
                                <layout type=″flow″> 
                                         <label name=″lblStatus″value=″Status:″/> 
                                             <label 
    name=″lblStatusMapped″value=″Ordero.orderStatus.status″/> 
                                    </layout> 
                                    <layout type=″flow″> 
                                         <label name=″lblConfDate″value=″Date of 
    last status update:″/> 
                                             <label name=″lblConfDateMapped″ 
    value=″Order0.orderStatus.datetime″/> 
                                    </layout> 
                                    <separator/> 
                          </layout> 
                          <menu> 
                                    <item name=″continue″label=″Continue″> 
                                             <action screen=″scrSpecials″/> 
                                 </item> 
                      </menu> 
                      <refresh> 
                                 <msg>inOrderStatus</msg> 
                      </refresh> 
            </wcScr> 
            <wcScr name=″scrOrdersList″title=″Previous Orders″> 
                      <layout type=″vertical″> 
                                 <label name=″lbllnstructions″value=″Select one or 
more order:″/> 
                                 <choice name=″mlOrderList″value=″Order0. 
datetime+′-′+Orders.special″mapping=″Order0″type=″multiList″/> 
                      </layout> 
                      <menu> 
                                 <item name=″viewOrder″label=′View Order″> 
                                               <action 
screen=″scrOrderStatus″param=″mlOrderList.selected″/> 
                                 </item> 
                      </menu> 
            </wcScr> 
            <wcFlow> 
                      <pblock id=″chLoggedin″> 
                                    return Application.authenticatedUser!=null; 
                      </pblock> 
                      <pblock id=″ahLogin″param=″User.name″> 
                                    if(User.passwordHash==Util.md5 
(scrLogin.edPassword)){ 
                                             Application.authenticatedUser=User; 
                                             scrLogin.back();. 
                                    }else{ 
                           Dialog.display(″lnvalid login!″); 
                           } 
                  </pblock> 
                  <pblock id=″ahSendOrder″param=″User″> 
                             Order.orderld=Util.guid(); 
                             Order.special=scrSpecials.slSpecials.selected; 
                             Order.user=User; 
                             Order.datetime=scrDelivery.date; 
                             OrderStatus.confNumber=Util.guid(); 
                             OrderStatus.status=″Sent.Pending response.″; 
                             OrderStatus.date=UtiLcurrentDate(); 
                             Order.orderStatus=OrderStatus; 
                             outOrder.send(); 
                             scrOrderStatus.display(Order); 
                    </pblock> 
                    <pblock id=″mhRemoveSpecial″param=″inRemoveSpecial″> 
                             Special.desc=inRemoveSpecial.desc; 
                             Special.delete(); 
                    </pblock> 
          </wcFlow> 
</wcApp> 
图5是表示一个方法的流程图,该方法建立该无线组件应用程序302,用于随后的经过网络102、104对于设备100的通信。还参考图3,该方法以创建该数据组件400的步骤600为起点,定义例如用户和订单的数据实体。该方法以创建显示组件402的步骤602继续,用于定义诸如屏幕、按键、菜单和图像的用户接口单元。该方法以创建消息组件 402的步骤604继续,用于定义被发送到例如在服务器106(参见图1)上的Web服务的外部系统的消息格式。组件400、402、404被以结构化定义语言表示,例如但不局限于以基于XML的一个结构化定义语言表示。该方法以步骤606结束,尝试利用工作流组件406把数据组件400、显示组件402和消息组件404联系在一起,以便定义应用程序302的工作表现。该工作流组件406被写作一系列指令,例如但不局限于上述的ECMAScript。构建一个无线组件应用程序302的方法可以包括比图5所示步骤更少或更多的步骤。 
参见图1及图6,示出了设备100和Web服务器的Web服务之间的交互的操作800。Web服务接收该请求设备100开始与Web服务通信的请求消息105(802)。Web服务把要求的组件应用程序302的组件400、402、404、406(如果有任何一个)上载到设备100(804),以便支持在Web服务和设备100之间的随后的信息交换。该设备接收该发送的组件应用程序302,并且开始由该运行时环境206(参见图3)提供该组件400、402、404、406(806),以便通过产生该组件应用程序302的一个可执行版本而把该设备配置为Web服务的一个Web客户机。设备100的用户把数据输入到设备100的用户接口202参见图2)(808),用于随后发送到Web服务(810)作为用于接收Web服务操作的一个请求消息105。该Web服务处理该请求消息105,并发送包括数据的适当的响应消息105(812),用于随后在用户接口202上输出。设备100接收包含该数据的消息105(814),并且该组件应用程序302的可执行版本适当地把数据输出在用户接口202上。而且按照上述的那样,在设备100和Web服务之间执行数据交换(816),或结束该交换(818),并且该组件应用程序302的可执行版本被按照期望或保存在存储器210(参见图2)中或者从运行时环境206中删除。 
参考图1、3和7,例如当设备100接收包含消息数据的响应消息105(902)时,操作900示出该适当的工作流组件406根据该适当的消息组件404来编译该消息105的数据内容(904)。工作流组件406随即处理该数据内容(906),并且把该数据插入到相应的数据组件400中(910),用于随后在存储器模块210(参见图2)中的存储(912)。而且如果需要的 话,该工作流组件406还把数据插入到该适当的显示组件402中(908),用于随后在用户接口202(参见图2)上的显示(914)。 
参见图1、3和8,操作过程(1000)示出针对一个动作的数据输入(1002),例如按下一个按钮或选定一个菜单选项,用户通过该用户接口202(参见图2)在一个用户接口单元上执行这些动作(1003)。该相关的工作流组件406根据适当的显示组件404解释该输入数据(1004),并且创建由适当数据组件400限定的数据实体(1006)。工作流组件406随即以由用户提供的输入数据填充该数据组件400(1010),用于随后在该存储器模块210(参见图2)中的存储(1012)。而且,该工作流组件406还把该输入数据插入到该适当的消息组件404中(1008),用于随后以消息105把作为数据实体的该输入数据发送到Web服务信号输入105(1014),如由该消息组件404的定义。 
应该认识到,由于该组件应用程序302不使用全部编程语言、而是相反地使用例如比较浅显易学的XML和ECMAScript的基于标准的技术,所以使用上述方法创建的组件应用程序302,将能需要比硬编码应用程序更少的时间来创建。该方法能够产生其中该用户接口202和该数据的定义被分离的组件应用程序302。这种分离使得在该组件应用程序302中的任何组件400、402、404、406的修改而不影响及需要在该组件应用程序302中的其它组件400、402、404、406的实质改变,并因此可以有助于该组件应用程序302的维护,包括在设备100上的该组件应用程序302的修改和更新。 
图9是一个双模式移动通信设备710的框图,是图1和6的设备100的进一步的示例。该双模式移动通信设备710包括:收发机711、微处理器738、显示器722、闪速存储器724、RAM存储器726、辅助输入/输出(I/O)设备728、串行端口730、键盘732、扬声器734、话筒736、短程无线通信子系统740,并且还可包括其它设备子系统742。收发机711优选地包括:发送与接收天线716及718、接收器712、发射器714、一个或多个本机振荡器713及数字信号处理器720。在该闪速存储器724中,该双模式移动通信设备710最好包括能由微处理器738(和/或DSP720)执行的多个软件模块724A-724N,包括语音通信模块724A、数据 通信模块724B、和用于执行多个其它功能的多个其它操作模块724N。 
该双模式移动通信设备710最好是具有语音及数据通信能力的一个双向通信设备。因此该双模式移动通信设备710可以例如经过例如模拟或数字蜂窝网络的任何语音网络进行通信,并且还可以经过数据网络通信。图9中以通信塔719示出语音及数据网络。这些语音和数据网络可以是分离的通信网络,使用分离的基础结构,例如基站、网络控制器等,或可被集成为单一无线网络。 
该通信子系统711被用于与该语音和数据网络719通信,并且包括接收器712、发射器714、一个或多个本机振荡器713,并也可包括DSP720。该DSP 720被用于对发射器714和接收器712的信号接收和发送,并且也用来从发射器714接收控制信息以及把控制信息提供到接收器712。如果该语音和数据通信以单一频率出现,或是紧挨的频率设置,则可以与发射器714和接收器712结合使用单一本机振荡器713。另外,如果实现语音通信与对应的数据通信利用的是不同频率,则可用多个本机振荡器713产生对应于该语音和数据网络719的多个频率。虽然图9中描述的是两个天线716、718,但是双模式移动通信设备710能被以单个天线结构使用。经由在DSP 720和微处理器738之间的链路与通信模块711通信包括语音和数据信息的信息。通信子系统711的详细设计,例如频带、组件选择、功率电平等,取决于其中要操作双模式移动通信设备710的通信网络719。例如,想要操作在北美市场中的一个双模式移动通信设备710可以包括被设计来利用MobitexTM或DataTACTM移动数据通信网络工作的一个通信子系统711,并且也可以设计来利用例如AMPS、TDMA、CDMA、PCS等多种语音通信网络的任何之一操作;而想要使用在欧洲的设备710可以配置来利用通用无线分组服务(GPRS)数据通信网络和GSM语音通信网络来操作。其它类型的分离和集成的数据和语音网络也同样可以利用该双模式移动通信设备710。 
根据单一或几个网络719的类型,对于该双模式移动通信设备710的接入要求也可能变化。例如,在Mobitex和DataTAC数据网络中,使用与每一个设备相关的唯一标识号码把移动设备注册在网络上。但是在GPRS数据网络中,网络接入与用户或移动设备的使用者相关。GPRS 设备通常要求一个用户的标识模块(″SIM″),要求该模块来在一个GPRS网络上操作双模式移动通信设备。可以操作本地即非网络通信功能(如果有的话),无需该SIM,但除了任意法定要求的操作,例如911紧急呼叫之外,一个双模式移动通信设备将不能执行任何涉及经过数据网络719的通信功能。 
在完成任何要求的网络注册或激活处理过程之后,该双模式移动通信设备710可以随即经过网络719(或几个网络)发送和接收通信信号,包括语音和数据信号二者。由天线716从通信网络719接收的信号被路由到该接收器712,该接收器712提供信号放大、降频变换、滤波、信道选择等,并且还可以提供模拟数字转换。接收信号的模拟数字转换实现更复杂的通信功能,例如使用DSP 720执行的数字解调和解码。以一个类似的方式处理将被发送到网络719的信号,该处理包括由DSP720调制和编码,并且被随即提供到发射器714用于数模转换、上变频、滤波、放大,并且通过天线718发送到通信网络719(或几个网络)。虽然图9示出了单个收发机711既用于语音通信又用于数据通信,但是该双模式移动通信设备710有可能包括两个不同的收发机,第一收发机用于发送和接收语音信号,第二收发机用于发送和接收数据信号。 
除了处理该通信信号之外,该DSP 720还提供接收器和发射器的控制。例如,加到该接收器712和发射器714的通信信号的增益等级可以通过该DSP 720中执行的自动增益控制算法自适应地控制。其它收发机控制算法还可以在DSP 720中执行,以便提供收发机711的更复杂的控制。 
微处理器738最好管理和控制该双模式移动通信设备710的总体操作。许多类型的微处理器或微控制器能被使用于其中,或另外单一DSP720可用于执行微处理器738的功能。在收发机711中通过DSP 720执行包括至少数据和语音通信的低级通信。另外,例如语音通信应用程序724A的高级通信应用以及数据通信应用程序724B可被存储在闪速存储器724中供微处理器738执行。例如,该语音通信模块724A可以提供一个高级用户接口,可操作来经由该网络719在双模式移动通信设备710和多个其它语音设备之间发送与接收语音呼叫。类似地,该数据通 信模块724B可能提供可操作用于发送和接收数据的一个高级用户接口,例如经由网络719在该双模式移动通信设备710和多个其它数据设备之间发送和接收例如电子邮件消息、文件、管理器数据、短文本消息等数据。在该双模式移动通信设备710中,一个如上所述的组件框架结构206还可以被执行作为一个软件模块或应用程序,或结合到软件模块724A-724N之一中。 
微处理器738还与其它双模式移动通信设备子系统相互作用,例如显示器722、闪速存储器724、随机存取存储器(RAM)726、辅助输入/输出(I/O)子系统728、串行端口730、键盘732、扬声器734、话筒736、短程通信子系统740以及任何其它通常被指定为742的双模式移动通信设备子系统。 
图9所示的某些子系统执行通信相关的功能,而其它子系统可以提供执行驻留或在设备有关的功能。值得注意的是,例如键盘732和显示器722的某些子系统既可用于通信相关的功能,例如经过数据通信网输入用于发送的文本消息,又可用于设备驻留功能,例如计算机或任务列表或其他PDA类型的功能。 
由微处理器738使用的操作系统软件最好被存储在诸如闪速存储器724的一个持久存储器中。除了控制双模式移动通信设备710的全部低级功能的该操作系统之外,闪速存储器724可能包括多个高级软件应用程序或模块,例如语音通信模块724A、数据通信模块724B、管理器模块(没示出)或任何其它类型的软件模块724N。闪速存储器724还可包括为存储数据的文件系统。这些模块由微处理器738执行,并且提供在双模式移动通信设备的用户和移动设备之间的一种高级接口。这种接口通常包括通过显示器722提供的图形组件,以及通过辅助I/O728、键盘732、扬声器734和送话器736提供的输入/输出组件。该操作系统,具体地说是双模式移动通信设备软件应用程序或模块、或其部分,可以临时装入到例如RAM 726的一个易失性存储器中,用于更快地操作。而且,在将接收的通信信号永久地写入到设置在持久存储器724之前,接收的通信信号也可以被暂存到RAM 726。 
可被加载到双模式移动通信设备710上的一个示例性应用模块 724N是一种个人信息管理器(PIM)应用程序,提供例如日历事件、约定以及任务项的PDA功能。此模块724N也可以与管理电话呼叫、语音邮件等的语音通信模块724A交互,并且还可以与用于管理电子邮件通信以及其它数据传输的数据通信模块交互。另外,语音通信模块724A的和数据通信模块724B的全部功能都可被集成到该PIM模块中。 
该闪速存储器724最好提供一种文件系统提供,以便促进在双模式移动通信设备710上的PIM数据项的存储。该PIM应用程序最好包括通过该无线网络719发送和接收数据项的能力,或是本身或结合该语音和数据通信模块724A、724B进行数据项的发送和接收。PIM数据项最好是通过无线网络719与存储的或主机系统相关的一个对应组的数据无缝地集成、同步及更新,藉此创建与具体用户相关的用于数据项的镜像系统。 
该双模式移动通信设备710还可以通过在一个接口框中放置该双模式移动通信设备710而手动地与一个主系统同步,该接口框把该双模式移动通信设备710的串行端口730耦合到该主系统的串行端口。该串行端口730还可以被用于使得一个用户能够通过一个外部设备或软件应用程序设置优选项,或下载用于安装的其它应用模块724N。此有线下载路径可被用于把一个加密密钥加载到双模式移动通信设备710上,这是比通过无线网络719交换加密信息更安全的方法。 
另外,可通过网络719、辅助I/O子系统728、串行端口730、短程通信子系统740或任何其它适当的子系统742把应用模块724N加载到该双模式移动通信设备710上,并且由使用者安装在闪速存储器724或RAM 726中。在应用程序安装中的这种灵活性增加了双模式移动通信设备710的功能性,并且可以提供增强的在设备功能、通信相关功能或二者。例如,安全通信应用程序可以使得能够使用双模式移动通信设备710来执行电子商务功能和其它这种金融事务处理。 
当按照数据通信模式操作该双模式设备时,例如文本消息或下载的网页的一个接收信号将由收发机711处理并且提供到微处理器738,最好进一步处理该接收信号以便输出到显示器722,或也可以输出到一个辅助I/O设备728。虽然例如已知的DVORAK形式的完整字母数字键 盘的其它形式也可被使用,但是双模式移动通信设备710的用户还可以利用最好是以QWERTY形式排列的一个完成的字母数字键盘的键盘732组成例如电子邮件消息的数据项。利用多个辅助I/O设备728进一步增强对于双模式移动通信设备710的用户输入,该辅助I/O设备728可以包括指轮输入设备、触摸板、各种开关、摇动输入开关等。由该用户输入的组成数据项可被随后经过通信网络719由收发机711发送。 
当该双模式移动通信设备710以语音通信模式操作时,该双模式移动通信设备710的整个操作基本上类似于该数据模式,只是该接收信号最好被输出到扬声器734,并且用于发送的语音信号是由话筒736产生。另外,例如语音消息记录子系统的语音或音频I/O子系统也可被在该双模式移动通信设备710上执行。虽然最好是主要通过扬声器734实现语音或音频信号的输出,但是也可用显示器722提供主叫方的标识、语音呼叫的持续时间或其它语音呼叫相关信息的指示。例如,该微处理器738与语音通信模块和操作系统软件结合,可以检测一个输入语音呼叫的呼叫者识别信息,并且将该语音呼叫显示在显示器722上。 
双模式移动通信设备710还包括一个短程通信子系统740。例如,该短程通信子系统740可以包括一个红外设备和相关的电路与元件,或例如蓝牙模块或802.11模块的短程无线通信模块,以便提供与类似启动的系统和设备的通信。本领域的技术人员将理解到,″蓝牙″和802.11是指可从分别涉及无线个人域网和无线LAN的电气和电子工程师学会(IEEE)标准得到的多组规范。 
虽然本说明书的公开在此描绘了一个或者多个示例系统和方法,但在本领域中的人员将显见可知许多变化,并且这种变化是在本申请的范围之内。例如,虽然XML和ECMAScript的子集被使用于该提供的示例中,但是可用其它语言和语言的变型来定义组件应用程序。例如,建议的E4X标准脚本语言可被用于ECMAScript的位置。而且,除上述XML外的其它结构化定义语言能够包括例如但不局限于资源描述框架结构(RDF)、XSLT和XHTML。此外,虽然该组件应用程序被描述为在移动通信设备上执行的应用程序,但是组件应用程序也可以在例如无线配置的个人计算机的其他计算机系统上执行。 

Claims (17)

1.一种建立组件应用程序的方法,所述组件应用程序在设备上执行,以提供服务器和所述设备之间通过网络进行的通信,所述方法包括:
创建定义数据实体的数据组件;
创建定义用户接口单元的显示组件;
创建定义消息格式的消息组件,所述消息格式被发送给以所述服务器作为主机的服务;以及
使用工作流组件来将数据组件、显示组件和消息组件联系在一起,以定义组件应用程序在所述设备上执行时与所述服务器上的服务进行交互的行为。
2.如权利要求1所述的方法,还包括通过网络向所述设备发送组件应用程序。
3.如权利要求2所述的方法,其中,所述服务是web服务。
4.如权利要求3所述的方法,其中,所述设备是移动通信设备,所述网络是无线网络。
5.如权利要求1所述的方法,其中,所述数据实体是用于定义以下任一项的实体:用户、订单或金融交易。
6.如权利要求5所述的方法,其中,包括订单的数据实体定义了:格式化为数字的订单唯一标识符、格式化为字符串的项目列表、具有日期-时间格式的订单创建时间、格式化为字符串的订单状态以及下订单的用户。
7.如权利要求1所述的方法,其中,所述显示组件的用户接口单元定义了以下任一项:标记、分隔符、图像、按钮、编辑字段、文本区、单项选择表、多项选择表、下拉列表、复选框、单选按钮、或包括由所述组件应用程序提供的一组其它显示组件的屏幕。
8.如权利要求1所述的方法,其中,以结构化定义语言来定义所述数据组件、显示组件和消息组件。
9.如权利要求8所述的方法,其中,所述结构化定义语言是可扩展标记语言XML。
10.如权利要求9所述的方法,其中,将所述数据组件,显示组件和消息组件定义为一系列元数据记录,所述元数据记录包括表示资源的具体属性的若干预定义单元,使得每一单元能够具有一个或多个值。
11.如权利要求10所述的方法,其中,每一元数据设计具有定义的特征,包括有限数量的单元、每一单元的名称以及每一单元的含意。
12.如权利要求1所述的方法,其中,将所述工作流组件写为Web脚本语言中的一系列指令。
13.如权利要求12所述的方法,其中,所述工作流组件参考外部对象类型,所述外部对象类型允许对以组件应用程序定义的组件执行操作。
14.如权利要求12所述的方法,其中,所述Web脚本语言是欧洲计算机制造商联合会ECMAScript。
15.如权利要求14所述的方法,其中,所述设备的运行时环境提供了ECMAScript主机运行时环境。
16.如权利要求15所述的方法,其中,所述设备具有运行时环境,一旦接收到组件应用程序,所述运行时环境使用ECMAScript来产生组件应用程序的可执行版本。
17.一种建立组件应用程序的设备,所述组件应用程序在设备上执行,以提供服务器和所述设备之间通过网络进行的通信,所述设备包括:
创建定义数据实体的数据组件的装置;
创建定义用户接口单元的显示组件的装置;
创建定义消息格式的消息组件的装置,所述消息格式被发送给以所述服务器作为主机的服务;以及
使用工作流组件来将数据组件、显示组件和消息组件联系在一起,以定义组件应用程序在所述设备上执行时与所述服务器上的服务进行交互的行为的装置。
CN2009100013373A 2002-12-26 2003-12-24 建立组件应用程序的方法和设备 Expired - Lifetime CN101453491B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US43601102P 2002-12-26 2002-12-26
US60/436,011 2002-12-26
US50370603P 2003-09-17 2003-09-17
US60/503,706 2003-09-17

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CNB2003801099917A Division CN100456247C (zh) 2002-12-26 2003-12-24 用于建立无线组件应用的方法、移动通信装置和服务器

Publications (2)

Publication Number Publication Date
CN101453491A CN101453491A (zh) 2009-06-10
CN101453491B true CN101453491B (zh) 2012-07-18

Family

ID=36689399

Family Applications (3)

Application Number Title Priority Date Filing Date
CNB2003801099917A Expired - Lifetime CN100456247C (zh) 2002-12-26 2003-12-24 用于建立无线组件应用的方法、移动通信装置和服务器
CN200380109992.1A Expired - Lifetime CN1757015B (zh) 2002-12-26 2003-12-24 用于建立和执行平台-中性的普通服务客户应用程序的系统和方法
CN2009100013373A Expired - Lifetime CN101453491B (zh) 2002-12-26 2003-12-24 建立组件应用程序的方法和设备

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CNB2003801099917A Expired - Lifetime CN100456247C (zh) 2002-12-26 2003-12-24 用于建立无线组件应用的方法、移动通信装置和服务器
CN200380109992.1A Expired - Lifetime CN1757015B (zh) 2002-12-26 2003-12-24 用于建立和执行平台-中性的普通服务客户应用程序的系统和方法

Country Status (1)

Country Link
CN (3) CN100456247C (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10367896B2 (en) 2014-09-19 2019-07-30 Convida Wireless, Llc Service layer session migration and sharing
EP3486772A1 (en) * 2017-11-16 2019-05-22 Siemens Aktiengesellschaft Method for reciprocally integrating applications in an industrial program-control system
CN110020307B (zh) * 2017-11-30 2023-06-13 阿里巴巴集团控股有限公司 一种客户端视图的绘制方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000046723A2 (en) * 1999-02-03 2000-08-10 Onesoft Corporation Modular system and method for processing transactions
CN1271893C (zh) * 2001-11-27 2006-08-23 台达电子工业股份有限公司 具有功率与负载电流振幅因子修正功能的电子镇流器电路

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6266666B1 (en) * 1997-09-08 2001-07-24 Sybase, Inc. Component transaction server for developing and deploying transaction- intensive business applications
ES2318907T3 (es) * 1998-12-16 2009-05-01 NOKIA SIEMENS NETWORKS GMBH &amp; CO. KG Sistema de servicios en una red.
US6356933B2 (en) * 1999-09-07 2002-03-12 Citrix Systems, Inc. Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language
JP2002099340A (ja) * 2000-09-21 2002-04-05 Ec-One Inc コンポーネント・サービス・ネットワークシステム
US7171661B1 (en) * 2000-10-19 2007-01-30 International Business Machines Corporation Realtime configuration updates and software distribution to active client positions
EP1379963A4 (en) * 2001-03-19 2009-03-11 Microsoft Corp SYSTEM AND METHOD FOR MANAGING COMMUNICATIONS AND DATA EXCHANGE

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000046723A2 (en) * 1999-02-03 2000-08-10 Onesoft Corporation Modular system and method for processing transactions
CN1271893C (zh) * 2001-11-27 2006-08-23 台达电子工业股份有限公司 具有功率与负载电流振幅因子修正功能的电子镇流器电路

Also Published As

Publication number Publication date
CN1757015A (zh) 2006-04-05
CN1757014A (zh) 2006-04-05
CN1757015B (zh) 2010-11-10
CN100456247C (zh) 2009-01-28
CN101453491A (zh) 2009-06-10

Similar Documents

Publication Publication Date Title
CN1757216B (zh) 创建基于无线应用程序的组件并与之通信的系统和方法
KR100826147B1 (ko) 무선 컴포넌트 애플리케이션 구축 시스템 및 방법
US7555538B2 (en) System and method for building and execution of platform-neutral generic services&#39; client applications
CN101473675B (zh) 移动设备用户体验的虚拟化
CN1244064C (zh) 具有浏览器的通信终端及含有这样的终端的系统
CN101217734B (zh) 利用brew_url地址访问brew页面的方法及终端
CN101453491B (zh) 建立组件应用程序的方法和设备
CA2788562C (en) Method and apparatus for simplified user access to multiple browser transports in a mobile communication device
JP4260461B2 (ja) 赤外線通信システム、赤外線ゲートウエイ装置及び赤外線通信プログラム
KR20120032265A (ko) 모바일 브라우저 상에서 rss 문서 관리를 지원하기 위한 방법, 단말 장치, 서버 및 컴퓨터 판독 가능한 기록 매체

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20120718