跨平台应用程序框架的制作方法

文档序号:6360786阅读:196来源:国知局
专利名称:跨平台应用程序框架的制作方法
跨平台应用程序框架相关申请本申请以美国公司ITR Group, Inc.(在除了美国之外的所有国家指定的申请人)以及美国公民Nathan J. Clevenger (仅在美国为指定的申请人)名义作为PCT国际专利申请在2010年4月15日提交,且要求在2010年4月15日提交的美国专利申请序列号61/324,672的优先权。
背景技术
在现今社会,日益复杂的移动计算设备已变得无处不在。此等移动计算设备不再只是具有打电话或收发短信的功能,而是在如今能够执行全面的软件应用程序。用于移动计算设备的软件应用程序可提供各种各样的用途。例如,用于移动计算设备的一些软件应用程序是简单视频游戏。在另一个示例中,用于移动计算设备的一些软件应用程序支持企 业的销售或库存过程。不同类型的移动计算设备具有不同操作系统以及能力。例如,一些移动电话使用ANDROID 操作系统,且其他移动电话使用IPHONE 操作系统。在另一个示例中,一些移动计算设备支持丰富、色彩饱满的图形用户界面,而其他移动计算设备仅提供简单的基于文本的界面。因为不同类型的移动计算设备具有不同操作系统以及能力,所以如果开发者想要开发用于不同类型的移动计算设备的软件应用程序,那么就需要开发用于不同类型的移动计算设备中的每一个的软件应用程序的单独版本。例如,开发者需要开发用于IPH0\K 移动电话的软件应用程序版本以及用于BLACKBERRY 移动电话的另一种软件应用程序版本。开发用于不同类型的移动计算设备的软件应用程序的不同版本可能会是昂贵且耗时的过程。

发明内容
部分地通过编译业务逻辑源代码来产生一个计算机可读指令集。当在由设备提供的平台上本机地执行时,该计算机可读指令集提供应用程序。部分地通过编译相同业务逻辑源代码来产生另一个计算机可读指令集。当在由另一个设备提供的另一个平台上本机地执行时,该另一个计算机可读指令集提供相同应用程序。该业务逻辑源代码不含有对任何平台特定的代码。此外,该业务逻辑源代码定义该应用程序的所有应用程序特定功能性。


图I是图示用于开发且分配应用程序的示例系统的框图;图2是图示用于分配应用程序的系统的示例性替代实施例的框图;图3是图示用于分配应用程序的系统的另一个示例性替代实施例的框图;图4是图示用于产生应用程序的计算机可读指令的示例系统的框图;图5是图不不例应用程序开发过程的流程图;图6是图示示例软件系统的框图7是图示用于使用基于客户端的部署技术来开发且分配应用程序的示例系统的框图;图8是图示用于执行使用基于客户端的部署技术的应用程序的示例系统的框图;图9是图示用于使用基于服务器的部署技术来开发且分配应用程序的示例系统的框图;图10是图示用于执行使用基于服务器的部署技术的应用程序的示例系统的框图;图11是图示用于开发且分配使用客户端壳部署技术的应用程序的示例系统的框图;图12是图示用于执行使用客户端壳部署技术的应用程序的示例系统的框图;·图13是图示用于开发且分配混合应用程序的示例系统的框图;图14是图示用于执行混合应用程序的示例系统的框图;图15是图示容器模块的示例操作的流程图;图16是图示应用程序模块的示例导航操作的流程图;图17是图示示例计算设备的框图。
具体实施例方式图I是图示用于开发且分配应用程序的示例系统100的框图。在图I的示例中,开发者102开发应用程序。应用程序是用于向用户提供特定功能性的程序。开发者102可开发提供各种功能性的应用程序。例如,开发者102可开发用以显示最畅销书的列表的应用程序。在另一个示例中,开发者102可开发帮助用户订购机器零件的应用程序。系统100包括一组计算设备104A至104N (统称为“计算设备104”)。在附图中,元件之间的椭圆表示为清楚起见从这些图省略一个或一个以上类似元件。包括字母A至N的参考符号并非想要指示元件的最小或最大数目。计算设备是处理数据的设备。计算设备的示例类型包括移动设备,诸如电话、智能手机、功能手机、平板计算机、上网本、笔记本型计算机、携带型游戏机、个人媒体播放器,以及车载计算机。移动设备一般是设计成用手携带的计算设备。不同移动设备提供不同类型的平台。计算设备的示例类型又包括台式计算机、家用或商用电器、电视机顶盒、数字视频记录器设备、电视、游戏控制台、竞赛机、销售点计算机、电子库存管理设备、工业计算设备、服务器计算机,以及处理数据的其他类型的设备。在图I的示例中,该组计算设备104包括智能手机、功能手机、台式计算机,以及膝上型计算机。其他实施例可包括其他类型的计算设备。不同的计算设备104提供不同平台。平台是应用程序可在上面运行的框架。平台的示例类型包括来自Microsoft Corp.的WINDOWS PHONE 7 操作系统、来自AppleInc.的108 橾作系统、来自Google Inc.的ANDROID 操作系统、来自Microsoft Corp.的WINDOWS 7⑤操作系统、Telnet框架,以及应用程序可在上面运行的其他类型的框架。开发者102使用开发者计算系统106开发应用程序,使得应用程序的各个版本能够在由计算设备104提供的平台上运行。术语“计算系统”囊括包含一个或一个以上计算设备的系统。开发者计算系统106提供开发环境108来帮助开发者102开发应用程序。为了帮助开发者102开发应用程序,开发环境108提供帮助开发者102准备用于应用程序的源代码的工具。例如,开发环境108可提供帮助开发者102准备用于应用程序的源代码的文本编辑工具以及测试工具。另外,开发环境108产生多个程序包112A至112N (统称为“程序包112”)。程序包112可对应于同一个应用程序,每个程序包被编译成在不同平台上执行或与不同平台相关联。程序包112含有不同计算机可读指令集。不同程序包112之一中的指令可在与程序包112相关联的平台上本机地执行。例如,程序包112A可含有第一平台可本机地执行的指令,且程序包112N可含有第二平台可本机地执行的指令。程序包112中的指令的执行使应用程序被提供给用户。在一些实施例中,程序包112的集合又可包括用于在同一个平台或其他平台上执行或与同一个平台或其他平台相关联的不同应用程序。
开发环境108通过编译源代码集来产生程序包112。每个源代码集包括业务逻辑源代码110以及不同的平台特定源代码集111。换句话说,开发者102使用业务逻辑源代码110以及平台特定源代码集111来产生程序包112。通过编译业务逻辑源代码110和不同平台特定源代码集111之一,开发环境108产生用于不同平台的不同计算机可执行指令集。业务逻辑源代码110实质上定义应用程序的对应用程序特定的所有功能性。例如,业务逻辑源代码110可定义产生或检索将要由应用程序显示的数据的功能性。在一些实施例中,业务逻辑源代码110定义对应用程序特定的所有功能性。在其他实施例中,业务逻辑源代码110外部的少量代码定义或影响对应用程序特定的功能性。例如,在此等实施例中,业务逻辑源代码110外部的小于一百行代码定义对应用程序特定的功能性。业务逻辑源代码110基本上没有对任何平台特定的代码。在一些实施例中,业务逻辑源代码110可不包括对任何平台特定的代码或功能代码。例如,在一些实施例中,业务逻辑源代码110不包括对ANDROID*平台、WINDOWS PHONE7 平台或任何其他平台的API特定的代码。在另一个示例中,业务逻辑源代码110不包括取决于哪个平台正运行应用程序而按条件执行的代码。在又一个示例中,业务逻辑源代码110不包括取决于应用程序正在哪个平台上运行而使应用程序呈现不同内容或具有不同导航结构的代码。在其他实施例中,业务逻辑源代码110可包括对平台特定的少量代码。例如,在一些实施例中,业务逻辑源代码110包括对具体平台特定的小于二十行代码。平台特定源代码集111含有帮助应用程序在特定平台上操作的代码。平台特定代码集111与不同平台相关联。平台特定代码集111基本上没有定义对应用程序特定的功能性的代码。在一些实施例中,平台特定代码集111不包括定义对具体应用程序特定的功能性的任何代码。例如,在一些实施例中,平台特定代码集111可不包括定义特定应用程序的用户界面中的内容的代码、定义用户如何通过应用程序导航的代码,或仅针对特定地识别的应用程序执行的代码块。在一些实施例中,平台特定代码集111包括定义或影响对具体应用程序特定的功能性的少量代码。例如,在一些实施例中,平台特定代码集111中的每一个包括定义对具体应用程序特定的功能性的小于二十行代码。因为平台特定代码集111基本上没有定义对应用程序特定的功能性的代码,所以开发者102和/或其他开发者可在许多应用程序中再使用平台特定代码集111,而无需进行对平台特定代码集111的任何,或至少基本的,修改。例如,开发者102可开发用于额外应用程序的业务逻辑源代码。在这个示例中,开发者102可接着使用用于额外应用程序的业务逻辑源代码连同先前使用的平台特定源代码集,来产生适用于在不同平台上执行的计算机可执行指令集。在一些实施例中,开发者102可能需要修改少于二十行代码来适应供应用程序使用的平台特定代码111。此外,在一些实施例中,开发者102可能仅需要注释代码、移除代码注释,或修改参数值以便适应供应用程序使用的平台特定代码111。在各种实施例中,开发者102可以以各种方式获得平台特定代码集111。例如,开发者102可从一个或一个以上外部方获得平台特定代码集111。在这个示例中,一个或一个以上外部方可包括与开发者102分开的供应商、零售商、顾问、其他开发者,或其他实体,或开发者102所属于的组织。此外,在这个示例中,开发者102可以事项或服务价值交换方式(诸如货币支付)从一个或一个以上外部方获得平台特定代码集111。此外,在这个示例中,开发者计算系统106可从由一个或一个以上外部方提供的数据存储系统下载或以其他 方式复制平台特定代码集111。在另一个示例中,开发者102可编写平台特定代码集111。在一些实施例中,平台特定代码集111可在软件即服务(software-as-a-service, SaaS)基础上可得。在一些实施例中,程序包112包括从平台特定代码集111编译的计算机可执行指令。例如,如果程序包112A与给定平台相关联,那么程序包112A可包括从与给定平台相关联的平台特定代码集111中的一个编译的计算机可执行指令。在开发环境108产生程序包112之后,程序包112存储在数据存储系统114中。各种实施例以各种方式来实施数据存储系统114。例如,一些实施例将数据存储系统114实施为文件系统。在另一个示例中,数据存储系统114可被实施为关系数据库。计算设备104从数据存储系统114获得程序包112。在各种实施例中,计算设备104以各种方式从数据存储系统114获得程序包112。例如,计算设备104可通过将请求发送给服务器(未图示)来获得一个适当的程序包112,服务器从数据存储系统114检索程序包112且将程序包112发送给计算设备104。在另一个示例中,计算设备可执行将程序包112从数据存储系统114推出到一个或多个计算设备104的分配过程。使用开发者计算系统106或如在本文中以其他方式揭示而开发的应用程序可使用若干个不同系统来分配。例如,图2图示在用于分配应用程序的许多可能系统中用于分配应用程序的系统的示例性替代实施例的框图。在图2的示例中,如上文结合图I的示例所描述,应用程序分配系统200包括数据存储系统114以及计算设备104。为了获得程序包112,计算设备104经由网络202与应用程序商店204通信。网络202可包含各种类型的网络。例如,网络202可包含因特网、局域网、校园网或另一种类型的网络。 应用程序商店204是用于软件应用程序的电子商城。例如,应用程序商店204可以是 AppleInc.的 APP ST()RER ,Google, Inc.的 Android Markets Micro soft Corp.的 WindowsPhoneMarketplace、Research In Motion Ltd.的 APP 〗M)RLDP、Amazon, com、或另一个用于软件应用程序的电子商城。在一些实施例中,应用程序商店204的所有者或操作员可拥有或操作数据存储系统114。在其他实施例中,应用程序商店204以及数据存储系统114由不同实体拥有和/或操作。计算设备104的用户可使用计算设备104通过应用程序商店204购买应用程序。当计算设备104中的一个的用户购买应用程序时,应用程序商店204检索程序包112中的一个且将该程序包传输给该计算设备。在一些例子中,计算设备104的用户可从不同应用程序商店购买与不同平台相关联的程序包112中的一个。图3是图示用于分配应用程序的系统的另一个示例性替代实施例的框图。在图3的示例中,应用程序分配系统300包括数据存储系统114。数据存储系统114存储程序包112。为了获得程序包112,计算设备104经由网络202与分配系统302通信。分配系统302执行将程序包112自动地分配给计算设备104的过程。换句话说,分配系统302将程序包112推出到计算设备104。例如,计算设备104可与组织相关联,程序包112A可与第一平台相关联,且程序包112N可与第二、不同平台相关联。在这个示例中,分配系统302可与计算设备104通信,以判定计算设备104中的哪一个提供第一平台且计算设备104中的哪一个提供第二平台。在这个示例中,分配系统302将程序包112A推出到提供第一平台的计算设备104,且将程序包112N推出到提供第二平台的计算设备104。为了 确保正确软件安装在企业的计算设备上,在组织设置中执行此自动分配过程可能会有用。图4是图示用于产生应用程序的计算机可读指令的示例系统400的框图。如图4的示例中所图示,编译器应用程序402产生程序包112。在不同实施例中,程序包112可以是或可不是存档格式。在一些实施例中,编译器应用程序402是开发环境108的部分。在其他实施例中,编译器应用程序402与开发环境108分开。通过编译业务逻辑源代码110以及平台特定源代码集111中的一或多个,编译器应用程序402产生程序包112。如上文所提及,业务逻辑源代码110定义对应用程序特定的应用程序的功能性。业务逻辑源代码110不包括对任何给定平台特定的代码。平台特定源代码集111含有帮助应用程序在特定平台上操作的代码。平台特定源代码集111是对具体平台特定的。如图4的示例中所图示,业务逻辑源代码110包含应用程序源代码404以及层源代码406。应用程序源代码404以及层源代码406定义应用程序特定功能性,且基本上没有对任何给定平台特定的代码。应用程序源代码404定义应用程序初始化操作以及导航操作。层源代码406定义一个或一个以上层类。平台特定源代码集111包括容器源代码集408A至408N (统称为“容器源代码集408”)以及绑定源代码集410A至410N (统称为“绑定源代码集410”)。容器源代码集408定义初始化应用程序的平台特定初始化操作。绑定源代码集410定义层输出操作,层输出操作产生可由不同平台使用的输出数据,以利用不同平台特有的用户界面功能来呈现层。容器源代码集408中的每一个含有对不同平台特定的代码。绑定源代码集410中的每一个含有对不同平台特定的代码。绑定源代码集410基本上没有定义对任何具体应用程序特定的功能性的代码。在各种实施例中,层源代码406、应用程序源代码404、容器源代码集408以及绑定源代码集410以各种高级编程语言编写。例如,在一些实施例中,层源代码406、应用程序源代码404、容器源代码集408和/或绑定源代码集410以C#编程语言、Ob jective C编程语目、C编程语目、C++编程语目、Java编程语目或另一种类型的闻级编程语目编写。因为层源代码406、应用程序源代码404、容器源代码集408以及绑定源代码集410以高级编程语言编写,所以源代码中的语法错误可在编译时间被检测到而不是在执行时间被检测到。因为语法错误在编译时间被检测到而不是在执行时间被检测到,所以运行程序包112的计算设备可为更可靠的,这是因为此等计算设备不太可能由于此等语法错误而崩溃或挂起。此夕卜,因为程序包112包含已编译的高级编程语言代码,所以与程序包含有解释性编程语言代码相比,应用程序可更有效地执行。因此,通过执行已编译的代码而不是解释性代码,运行程序包112的计算设备可更快速地且更可靠地操作。在一些例子中,多个不同平台可与同一容器源代码集408和/或同一绑定源代码集410相关联。例如,]PHONfc 以及IPADW两者可与同一容器源代码集408和/或同一绑定源代码集410相关联。在一些例子中,单个平台可与多个容器源代码集408或多个绑定源代码集410相关联。容器源代码集408和/或绑定源代码集410中的每一个可存储在不同文件中。图5是图示示例应用程序开发过程500的流程图。开发者102执行应用程序开发过程500来开发可在多个平台上操作的应用程序。换句话说,开发者102使用应用程序开发过程500来开发跨平台应用程序。为了创建应用程序,开发者102识别将要包括在应用程序中的层(502)。层包含由·应用程序作为单元呈现给应用程序的用户的内容集合。层可含有各种各样的内容。例如,应用程序的层可含有书的大纲、电视节目表一览、体育比分、视频剪辑、应用程序的主菜单,以及由应用程序作为单元呈现给应用程序的用户的其他内容集合。因为层中的内容作为单元呈现,所以没有必要执行导航操作来查看层中的额外内容。导航操作是改变当前由应用程序呈现给用户的层的操作。例如,在一些平台中,用户可能需要上下滑动鼠标滚轮来查看层中的额外内容,但将不需要导航离开层来查看额外内容。不同平台可以以不同方式呈现同一层。例如,Telnet平台可在层中将书名列表呈现为表示书名的一系列纯文本字符串。在这个示例中,互动语音响应(IVR)平台可通过输出书名的讲话声音来呈现同一书名列表。此外,在这个示例中,IPHONE 平台可将同一书名列表呈现为表示书名的具丰富格式的文本字符串列表。应用程序中的每一层与不同层统一资源标识符(URI)相关联。例如,应用程序中的第一层含有含书的大纲的文本区域,且应用程序中的第二层含有含另一本书的大纲的文本区域。在这个示例中,第一层可与层URI “http://www. example, com/applicationl/layerl bookID=32,,相关联,且第二层可与层 URI “http://www. example.com/applicationl/layerl bookID=525” 相关联。层包含一个或一个以上内容元素。内容元素包含将要由应用程序呈现给用户的结构化内容集合。各种内容元素以不同方式结构化内容集合。内容元素的示例类型包括列表、列表数据项、菜单、菜单项、图像、文本块、文本输入区域、地理地图、面板等等。不同平台可以以不同方式呈现相同内容元素。例如,ΙΡ1Κ \Ε>=平台可将菜单呈现为与菜单中的每个菜单项相关联的可选择图形元素列表。在这个示例中,Telnet系统可将同一菜单呈现为与菜单中的每个菜单项相关联的文本字符串列表。列表中的每个文本字符串与一个号码相关联。在这个示例中,Telnet系统又显示询问用户输入所需菜单项的号码的提示。层的内容元素可包括导航元素。导航元素是在由用户选择时使应用程序导航到应用程序的另一个层的内容元素。每个导航元素指定在用户选择导航元素时应用程序导航到的层的层URI。如同其他类型的内容元素,不同平台可以以不同方式呈现导航元素。例如,在一些实施例中,web浏览器平台将导航元素呈现为超链接。在这个示例中,IPHONE 平台可将同一导航元素呈现为图形控制。在一些可能实施例中,应用程序的层包括主页层。应用程序的主页层是应用程序的如下层,即在使用应用程序的情况下应用程序的用户默认地使用来开始工作的层。在各种应用程序中,主页层含有各种类型的内容。例如,在一些应用程序中,主页层表现得像应用程序的主菜单,且包含使用户能够导航到应用程序的各种其他层的导航元素。在其他应用程序中,主页层是用于应用程序的初始屏幕。在开发者102识别将要包括在应用程序中的层之后,开发者102开发层源代码406(504)。选择性地,开发者102从已存在的层源代码库中选择层源代码406。就是说,层源代码406可在多个应用程序中再使用。层源代码406定义一个或一个以上层类。一般地,层类中的每一个是特征化类的成员(对象)的属性和/或服务集合的描述性工具。层类中的每一个对应于已识别层中的不同者。层模块是软件对象,其是层类的例子。层模块表示层。 由层源代码406定义的层类中的每一个含有加载操作。加载操作将数据加载到层模块中。加载操作可执行各种各样的活动来将内容加载到适当层模块中。例如,加载操作可使用菜单项填充菜单。在另一个示例中,加载操作可从网络或数据库检索数据且将数据填充到文本块中。不需要针对在不同平台上操作的应用程序的版本来开发或选择不同层源代码406。换句话说,层源代码406不是对任何平台特定的。因此,不管应用程序在哪个平台上操作,由层源代码406定义的加载操作将相同内容加载到层模块中。为了开发应用程序,开发者102还要开发应用程序源代码404 (506)。应用程序源代码404定义应用程序初始化操作以及导航操作。在执行时,应用程序初始化操作初始化导航图。导航图将层URI映射到层模块。在一些实施例中,应用程序源代码404自动地产生层URI。在其他实施例中,应用程序源代码404使用预定义的层URI。在应用程序接收导航请求时,导航操作使用导航图来从多个层模块中识别适当层模块。适当层模块与由导航请求指定的层URI相关联。接着调用适当层模块的加载操作来将内容加载到适当层模块中。导航请求是将应用程序从应用程序的一个层导航到应用程序的另一个层的请求。不需要开发者102针对在不同平台上操作的应用程序的版本来开发不同应用程序源代码404。而是将相同应用程序源代码404用于在不同平台上操作的应用程序的版本中。换句话说,应用程序源代码404不是对任何平台特定的。因此,不管应用程序在哪个平台上操作,由应用程序源代码404指定的导航操作使用层源代码的相同加载操作。应用程序的业务逻辑源代码110包含应用程序的应用程序源代码404以及层源代码406。业务逻辑源代码110不含有对任何平台特定的代码。此外,业务逻辑源代码110定义应用程序的对应用程序特定的所有功能性。换句话说,如由应用程序的用户感知的应用程序的功能性以不对任何平台特定的方式定义于业务逻辑源代码中。此外,为了开发应用程序,开发者102选择应用程序在上面操作的一个或一个以上平台(508)。例如,开发者102可选择与IPHONE 以及IPAD 相关联的平台。在另一个示例中,开发者102可选择与Telnet客户端相关联的平台。不同平台提供向用户呈现信息且从用户接收输入的不同应用程序编程接口(APIs)。
在选择应用程序在上面操作的平台之后,开发者102选择与选定平台相关联的绑定源代码集410(510)。在一些实施例中,开发者102获得预定义绑定源代码集的库。在此等实施例中,开发者102可从各种来源获得库。在各种实施例中,例如,开发者102可下载单项绑定、下载绑定集合、开发他或她自身的绑定以及相关联库,或从作为SaaS提供的库访问绑定。在使用中,开发者102可从存储在库中的绑定源代码集中选择与选定平台相关联的绑定源代码集410。例如,开发者102可以项或服务价值的交换形式从外部方获取库的副本和/或使用库的权利。库中的绑定源代码集可在应用程序的开发之前由开发者102或外部方添加到库。库中的绑定源代码集可在多个应用程序中以大体上相同形式再使用。例如,在一些实施例中,库中的绑定源代码集可在多个应用程序中以完全相同形式再使用。在其他实施例中,库中的绑定源代码集可在对绑定源代码集的微小改变(例如,小于二十行代码)之后在其他应用程序中再使用。
绑定源代码集410定义层输出操作,层输出操作产生可由不同平台使用的输出数据,以利用不同平台特有的用户界面功能呈现层。例如,绑定源代码集410A可定义层输出操作,层输出操作处理层模块利用IPHO\K 设备特有的用户界面功能来呈现层。在这个示例中,绑定源代码集410B可定义层输出操作,层输出操作处理相同层模块利用基于ANDROID. 的移动电话特有的用户界面功能来呈现层。接着,开发者102开发容器源代码集408(512)。容器源代码集408中的每一个对应于选定平台中的不同者。如本文档中其他地方详细地描述,容器源代码集408中的每一个定义初始化应用程序的初始化操作。在一些实施例中,开发者102从预先存在的容器源代码集的库获得容器源代码集408。这个库可以如本文中所论述的那样与开发者从库访问绑定的相同方式由开发者102、外部方或另一个实体开发、维护和/或扩展。在一些例子中,开发者102可以项或服务价值的交换形式从外部方接收库的副本和/或使用库的权利。在此等实施例中,开发者102通过修改库中预先存在的容器源代码集来开发容器源代码集408,使得容器源代码集408识别由应用程序的应用程序源代码404定义的应用程序类。因此,容器源代码集408对于应用程序以及选定平台中的单个平台是特定的。然而,容器源代码集408不定义使应用程序与其他应用程序区分开来的任何功能性。在本文中结合图15描述示例初始化操作。接着,开发者102选择用于应用程序的部署技术(514)。用于应用程序的部署技术管理应用程序中的各种模块在何处操作。结合图7至图14描述应用程序使用各种部署技术的开发、分配以及执行。在选择部署技术之后,一个或一个以上计算系统产生对应于选定平台的程序包112 (516)。程序包112中的每一个包含从用于应用程序的应用程序源代码404、用于应用程序的层源代码406、用于特定平台的容器源代码508以及用于特定平台的绑定源代码集510编译的计算机可读指令集。当由提供选定平台的一个适当设备本机地执行时,程序包112中的每一个中的指令提供相同应用程序。当在指令与平台之间没有中间软件需要执行指令时,指令在平台上本机地执行。例如,特殊插件或虚拟机无需在适当的选定平台上执行程序包中的指令。在开发程序包112之后,开发者102分配程序包112以供在计算设备104上安装以及使用(518)。在各种实施例中,以各种方式分配程序包112。例如,在一些实施例中,使用诸如Apple Inc.的APP STORE 的在线应用程序商店来分配程序包112。在其他实施例中,将程序包112直接分配给计算设备104。图6是图示应用程序600中的示例模块的框图。如图6的示例中所图示,应用程序600包含容器模块602、应用程序模块604、层模块606A至606N (统称为“层模块606”)以及绑定模块608。应用程序的应用程序源代码404定义应用程序模块604的功能性。层源代码406中的不同层类定义层模块606中的不同者的功能性。容器源代码集408中的一个定义容器模块602的功能性。绑定源代码集410中的一个定义绑定模块608的功能性。在应用程序600启动时,容器模块602开始执行。在容器模块602开始执行时,容器模块602执行初始化操作。初始化操作初始化应用程序。结合图15描述示例初始化操作。作为初始化操作的部分,容器模块602将初始导航请求提供给应用程序模块604。初始 导航请求指定指示应用程序的主页层的层URI。作为对接收导航请求的响应,应用程序模块604执行导航操作。在本文中结合图16描述示例导航操作。作为导航操作的部分,应用程序模块604使用导航图来识别适当层模块。适当层模块是与由导航请求指定的层URI相关联的层模块606中的一个。应用程序模块604接着将加载请求提供给适当层模块。加载请求是执行适当层模块的加载操作的请求。在适当层模块接收加载请求时,适当层模块执行加载操作。加载操作将内容加载到适当层模块中。各种实施例以各种方式来实施加载操作。例如,在一些实施例中,每个层模块包含一个或一个以上内容元素。加载操作通过将数据加载到层模块的内容元素中的一个或多个中来将数据加载到层模块中。例如,层模块可含有表示列表的内容元素。在该示例中,加载操作可通过从网站检索最畅销书的书名且将书名加载到列表中来将数据加载到层模块中。层模块606中的每一个可包括不同内容元素且可不同地实施加载操作。因此,不同内容加载到层模块606的不同者中。在适当层模块执行加载操作之后,适当层模块将加载完成事件提供给应用程序模块604。加载完成事件含有对适当层模块的参考。在从适当层模块接收加载完成事件之后,应用程序模块604产生加载完成事件。由应用程序模块604产生的加载完成事件指示适当层模块已完成加载内容。在一些部署技术中,加载完成事件含有层参考。层参考包含指向适当层模块的指针。在其他部署技术中,加载完成事件含有适当层模块的序列化版本。容器模块602侦听由应用程序模块604产生的加载完成事件。当容器模块602检测到由应用程序模块604产生的加载完成事件时,容器模块602将适当层模块的层参考或序列化版本提供给绑定模块608。当绑定模块608接收适当层模块的层参考或序列化版本时,绑定模块608在适当层模块上执行层输出操作。层输出操作产生可由平台使用的输出数据,以将适当层模块呈现为平台特有的一个或一个以上用户界面功能。如下文描述,不同绑定模块可通过在适当层模块上执行层输出操作来产生各种类型的输出数据。各种实施例以各种方式来实施层输出操作。例如,在一些实施例中,绑定源代码集410中的每一个定义内容输出操作。内容输出操作对应于不同类型的内容元素。例如,绑定源代码集410可包括用于列表的内容输出操作、用于列表数据项的内容输出操作、用于菜单的内容输出操作、用于菜单项的内容输出操作、用于图像的内容输出操作等等。用于不同平台的绑定源代码集410中的内容输出操作产生可由不同平台使用来呈现内容元素的输出数据。例如,绑定源代码集410A可定义产生输出数据的内容输出操作,1ΡΗΟ\Η 平台可使用该输出数据来呈现列表。在这个示例中,绑定源代码集410B可定义产生输出数据的内容输出操作,A\DROID 平台可使用该输出数据来呈现列表。当在适当层模块上执行层输出操作时,绑定模块608利用用于适当层模块中的内容元素中的每一个的输出操作。例如,如果适当层模块的内容元素包括列表以及图像,那么当在适当层模块上执行层输出操 作时,绑定模块608执行用于列表的输出操作以及用于图像的输出操作。以这个方式,层输出操作产生可用来将适当层模块的每个内容元素呈现为具体平台特有的一个或一个以上用户界面功能的输出数据。当用户选择应用程序中的层中的导航元素时,应用程序模块604接收导航请求。导航请求指定应用程序的另一个层的层URI。当应用程序模块604接收导航请求时,上文描述的过程针对该另一个层再发生。图7是图示用于使用基于客户端的部署技术来开发且分配应用程序的示例系统700的框图。当应用程序使用基于客户端的部署技术部署时,容器模块602、应用程序模块604、层模块606以及绑定模块608在客户端计算设备上操作。如图7的示例中所图示,系统700包含开发者计算系统106。开发者计算系统106包括编译器应用程序402。在基于客户端的部署技术中,编译器应用程序402产生程序包112,使得程序包112中的每一个包括定义应用程序模块604、层模块606、容器模块以及绑定模块的已编译的指令。程序包112适用于安装在提供不同平台的计算设备上。当使用基于客户端的部署技术部署应用程序时,将程序包112分配给计算设备104。为了便于解释,图7的示例仅图示触摸屏式智能手机以及功能手机。然而,在其他实施例中,计算设备104可以是各种各样不同类型的移动设备,诸如库存管理设备、移动电话、平板计算机、迷你笔记型计算机等等。此外,尽管仅示出移动设备,但应理解,在一些实施例中,在本文档中针对计算设备104描述的相同能力以及功能性可由诸如智能手机或平板计算机的移动设备或诸如台式计算机、服务器计算机等等的非移动设备执行。在将程序包112分配给计算设备104之后,计算设备104安装程序包112。在安装之后,计算设备104执行程序包112中的指令。图8是图示示例系统800的框图,示例系统800用于执行使用基于客户端的部署技术的应用程序。如图8的示例中所图示,系统800包含计算设备104A。尽管针对计算设备104A来描述图8的示例,但应理解,其它的计算设备104可利用类似系统来执行使用基于客户端的部署技术的应用程序。计算设备104A包含输入系统802以及输出系统804。输入系统802使计算设备104A能够接收来自计算设备104A的用户806的输入。在各种实施例中,输入系统802可以是使计算设备104A能够接收来自用户806的输入的各种不同类型的系统。例如,输入系统802可以是触摸屏、键盘、小键盘、指针设备(例如,鼠标、触摸板、轨迹球等)、按钮阵列、麦克风,或使计算设备104A能够接收来自用户806的输入的另一种类型的系统。输出系统804使计算设备104A能够将输出提供给用户806。在各种实施例中,输出系统804可以是将输出提供给用户的各种不同类型的系统。例如,输出系统804可以是图形屏幕(例如,监视器、LCD屏幕、LED屏幕等)、扬声器系统,或能够将输出提供给用户的另一种类型的系统。此外,在一些实施例中,输入系统802以及输出系统804实体上是同一系统。例如,输入系统802以及输出系统804可以是单个触摸屏。另外,计算设备104A提供操作系统808。操作系统808是管理计算设备104A的硬件资源且支持软件应用程序的操作的软件系统。在各种实施例中,操作系统808可以是各种不同类型的操作系统。例如,操作系统808可以是WINDOWS PHONE7 操作系统、WINDOWS7 操作系统、IPHOXEp操作系统、OSX 操作系统、来自惠普公司(Hewlett Packard Company)的觀BUSs操作系统、Linux操作系统、ANDROID 操作系统、来自Google, Inc.的CHROME 操作系统,或另一种类型的操作系统。如图8的示例中所图示,计算设备104A包含程序包112A。程序包112A中的指令由计算设备104A的处理单元的执行使计算设备104A提供容器模块602、应用程序模块604、层模块606以及绑定模块608。为了使用应用程序,用户806使用输入系统802来将启动命令提供给操作系统·808。作为响应,操作系统808将启动请求提供给容器模块602。在容器模块602接收启动请求之后,容器模块602、应用程序模块604、层模块606以及绑定模块608以上文结合图6的示例描述的方式运转。在基于客户端的部署中,当绑定模块608处理层模块时,绑定模块608输出用户界面命令。用户界面命令使输出系统804呈现由层模块表示的层。例如,用户界面命令可使输出系统804显不层,或可使输出系统804输出表不层的音频信号。图9是图示用于开发且分配使用基于服务器的部署技术的应用程序的示例系统900的框图。当应用程序使用基于服务器的部署技术部署时,容器模块602、应用程序模块604、层模块606以及绑定模块608在服务器系统902上操作。在将额外应用程序安装在计算设备104上是不可取的或不可能的情形中,基于服务器的部署技术可以是有用的。如图9的示例中所图示,系统900包含开发者计算系统106。系统900又包含计算设备104。为了便于解释,在图9的示例中仅图示触摸屏式智能手机以及功能手机。然而,在其他实施例中,计算设备104可由各种各样不同类型的计算设备取代,诸如台式计算机、移动电话、平板计算机等等。系统900还包含服务器系统902A至902N (统称为“服务器系统902”)。服务器系统902是计算机系统。服务器系统902可提供不同平台。例如,服务器系统902A可提供基于活动服务器页面(Active Server Page, ASP)的web服务器平台,服务器系统902B (未图示)可提供Telnet服务器平台,且服务器系统902N可提供基于PHP的web服务器平台。为了使用基于服务器的部署技术产生应用程序,编译器应用程序402产生程序包112。程序包中的每一个与不同平台相关联。编译器应用程序402通过编译应用程序的层源代码406、应用程序的应用程序源代码404、用于平台的容器源代码集408以及用于平台的绑定源代码集410来产生程序包112。程序包112中的每一个包括定义层模块606、应用程序模块604、容器模块以及绑定模块的已编译的指令。程序包112中的每一个适用于安装在提供与程序包相关联的平台的服务器系统902上。当使用基于服务器的部署技术部署应用程序时,将程序包112分配给服务器系统902且安装在服务器系统902上。在安装之后,服务器系统902执行程序包112中的指令以提供容器模块602、应用程序模块604、层模块606以及绑定模块608。计算设备104不包括对应用程序特定的硬件或软件。例如,计算设备104A可以是标准电话,且应用程序的IVR版本安装在服务器系统902A。在这个示例中,用户可通过使用计算设备104A来呼叫服务器系统902A而与应用程序互动。在另一个示例中,用户可使用计算设备104N上的通用客户端应用程序来与应用程序互动。通用客户端应用程序包括没有与特定基于服务器的应用程序关联的应用程序。例如,用户可使用计算设备104N上的web浏览器应用程序来与应用程序的web版本互动。在另一示例中,用户可使用计算设备104N上的Telnet客户端来与应用程序的Telnet版本互动。图10是图不不例系统1000的框图,不例系统1000用于执行使用基于服务器的部署技术的应用程序。如图10的示例中所图示,系统1000包含计算设备104A以及服务器系 统902A。尽管针对计算设备104A以及服务器系统902A来描述图5的示例,但应理解,其它的计算设备104以及服务器系统902可利用类似系统来执行使用基于服务器的部署技术的
应用程序。如同图8的示例中图示的计算设备104A,图10的示例中图示的计算设备104A包含输入系统802、输出系统804以及操作系统808。然而,取代包括程序包112A,图10的示例中图示的计算设备104A包含浏览器应用程序1002。在不同实施例中,浏览器应用程序1002可以是不同类型的web浏览器应用程序。例如,浏览器应用程序1002可以是来自Apple, Inc.的SAFARI web浏览器应用程序、来自Microsoft Corp.的 INTERNET EXPLORER-web 浏览器应用程序、来自 Mozilla Foundation的FIRhHft web浏览器应用程序、来自Google, Inc.的CHROME web浏览器应用程序,或另一个web浏览器应用程序。尽管在图10的示例中计算设备104A提供web浏览器应用程序,但应理解,在应用程序使用基于服务器的部署技术部署的一些例子中,计算设备104A提供其他类型的通用客户端应用程序来取代浏览器应用程序1002。例如,计算设备104A可提供telnet客户端来取代浏览器应用程序1002。此外,在应用程序使用基于服务器的部署技术部署的一些例子中,计算设备104A不提供通用客户端应用程序或操作系统。服务器系统902A提供容器模块602、应用程序模块604、层模块606以及绑定模块608。图10的示例中图示的容器模块602、应用程序模块604、层模块606以及绑定模块608以类似于图6的示例中图示的容器模块602、应用程序模块604、层模块606以及绑定模块608的方式操作。服务器系统902A还提供服务器应用程序1004。为了使用该应用程序,用户806使用输入系统802与浏览器应用程序1002互动。浏览器应用程序1002将web请求发送给服务器应用程序1004。web请求指定应用程序中的层的层URI。当服务器应用程序1004接收web请求时,服务器应用程序1004将导航请求提供给应用程序模块604。如先前所描述,应用程序模块604处理导航请求。随后,绑定模块608产生资源数据。资源数据表示由层URI指示的层。当服务器应用程序1004接收资源数据时,作为对web请求的响应,服务器应用程序1004将web响应发送给浏览器应用程序1002。web响应含有资源数据。当浏览器应用程序1002接收web响应时,浏览器应用程序1002使用输出系统804来向用户806呈现层。随后,用户806可选择层的导航元素。当用户806选择导航元素时,浏览器应用程序1002将另一个web请求发送给服务器应用程序1004。该另一个web请求指定应用程序中的另一个层的层URI。服务器应用程序1004以与先前web请求相同的方式处理这个web请求。图11是图示用于开发且分配使用客户端壳部署技术的应用程序的示例系统1100的框图。系统1100包含开发者计算系统106。另外,系统1100包含服务器系统902以及计算设备104。为了使用客户端壳部署技术产生应用程序,编译器应用程序402产生程序包112以及壳应用程序包1102A至1102N (统称为“壳应用程序包1102”)。程序包112中的每一个与不同平台相关联。壳应用程序包1102中的每一个与不同平台相关联。
编译器应用程序402通过编译层源代码406、应用程序源代码404、容器源代码集408以及绑定源代码集410来产生程序包112。程序包112中的每一个包括定义一个或一个以上层模块606、应用程序模块604、容器模块以及绑定模块的已编译的指令。程序包112中的每一个适用于安装在提供与程序包相关联的平台的服务器系统902上。壳应用程序包1102中的每一个包含当在提供与壳应用程序包相关联的平台的计算设备上执行时提供壳应用程序的指令。在编译器应用程序402创建程序包112之后,将程序包112分配给服务器系统902且将其安装在服务器系统902上。另外,壳应用程序包1102安装在计算设备104上。在壳应用程序包1102安装在计算设备104上之后,计算设备104执行使计算设备104提供壳应用程序的在壳应用程序包1102中的计算机可读指令。壳操作在计算设备104上本机地操作。从计算设备104的用户的角度来看,壳应用程序表现成执行应用程序的所有操作。然而,事实上,壳应用程序实际上将导航请求发送给服务器系统902,从服务器系统902接收序列化界面数据,且使用序列化界面数据来将应用程序的层呈现给用户。各种实施例以各种方式来格式化序列化界面数据。例如,可将序列化界面数据格式化为HTML数据、XML数据、图像数据,或以其他方式格式化的其他数据。在使应用程序的工作离开计算设备104完成,然而看起来应用程序是由计算设备104提供是有利的情形中,客户端壳部署技术可以是有用的。图12是图示用于执行使用客户端壳部署技术的应用程序的示例系统1200的框图。如图12的示例中所图示,系统1200包含计算设备104A以及服务器系统902A。尽管针对计算设备104A以及服务器系统902A来描述图12的示例,但应理解,其它的计算设备104以及服务器系统902可利用类似系统来执行使用客户端壳部署技术的应用程序。图12的示例中图示的计算设备104A类似于图8的示例中图示的计算设备104A。如同图8的示例中图示的计算设备104A,图12的示例中图示的计算设备104A提供输入系统802、输出系统804以及操作系统808。然而,计算设备104A提供壳应用程序1202来取代浏览器应用程序1002。执行壳应用程序包1102之一的指令使计算设备104A提供壳应用程序1202。此外,图12的示例中图示的服务器系统902A类似于图10的示例中图示的服务器系统902A。如同图10的示例中图示的服务器系统902A,图12的示例中图示的服务器系统902A提供容器模块602、应用程序模块604、层模块606以及绑定模块608。
为了使用应用程序,用户806使用输入系统802来命令操作系统808启动壳应用程序1202。在壳应用程序1202启动时,壳应用程序1202将初始导航请求提供给应用程序模块604。初始导航请求指定应用程序的主页层的层URI。如本文档中其他地方所描述,应用程序模块604处理导航请求。当绑定模块608处理层模块时,绑定模块608将序列化界面数据提供给壳应用程序1202。序列化界面数据表示由层URI指示的应用程序的层。当壳应用程序1202接收序列化界面数据时,壳应用程序1202使用输出系统804来将应用程序的层呈现给用户806。用户806可选择层的导航元素。当用户806选择层的导航元素时,壳应用程序将另一个导航请求提供给容器模块602。该另一个导航请求指定与导航元素相关联的层URI。图13是图示示例系统1300的框图,示例系统1300用于开发且分配使用混合部署技术的应用程序。当应用程序使用混合部署技术部署时,容器模块602以及绑定模块608在计算设备104上操作,而应用程序模块604以及层模块606在服务器系统902上操作。在平台特定代码在服务器系统上是不可取的情形中,混合部署技术可以是有用的。系统1300 包含开发者计算系统106。另外,系统1300包含服务器系统902以及计算设备104。为了使用混合部署技术产生应用程序,编译器应用程序402产生用于应用程序的服务器程序包1302。为了产生服务器程序包1302,编译器应用程序402编译用于应用程序的层源代码406以及应用程序源代码404。因此,服务器程序包1302包括定义一个或一个以上层模块606以及应用程序模块604的指令。服务器程序包1302适用于安装在由服务器系统902A提供的平台上。在编译器应用程序402产生服务器程序包1302之后,将服务器程序包1302分配给服务器系统902A且将其安装在服务器系统902A上。应理解,在其他实施例中,将服务器程序包1302分配给其它的服务器系统902且将其安装在其它的服务器系统902上。此外,为了使用混合部署技术产生应用程序,编译器应用程序402产生用于选定平台的客户端程序包1304A至1304N(统称为“客户端程序包1304”)。编译器应用程序402通过编译用于选定平台的容器源代码集408以及绑定源代码集410来产生客户端程序包1304。因此,客户端程序包1304包括定义容器模块602以及绑定模块608的指令。每一个客户端程序包1304中的指令适用于不同平台上的本机执行。在编译器应用程序402产生客户端程序包1304之后,将客户端程序包1304分配给计算设备104且将其安装在计算设备104上。图14是图示示例系统1400的框图,示例系统1400用于执行使用混合部署技术的应用程序。如图14的示例中所图示,系统1400包含计算设备104A以及服务器系统902A。尽管针对计算设备104A以及服务器系统902A来描述图14的示例,但应理解,其它的计算设备104以及服务器系统902可利用类似系统来执行使用混合部署技术的应用程序。图14的示例中图示的计算设备104A类似于图8的示例中图示的计算设备104A。如同图8的示例中图示的计算设备104A,图14的示例中图示的计算设备104A提供输入系统802、输出系统804以及操作系统808。然而,作为对程序包112A的替代,计算设备104A包含客户端程序包1304A。客户端程序包1304A提供应用程序的容器模块602以及绑定模块608,而不是应用程序的应用程序模块604或层模块606。此外,图14的示例中图示的服务器系统902A类似于图9的示例中图示的服务器系统902A。然而,图14的示例中图示的服务器系统902A包含服务器程序包1302。服务器程序包1302提供应用程序的应用程序模块604以及层模块606,而不是应用程序的容器模块602或绑定模块608。为了使用应用程序,用户806使用输入系统802来命令操作系统808启动该应用程序。当应用程序启动时,容器模块602向服务器系统902A处的应用程序模块604提供初始导航请求。初始导航请求指定应用程序的主页层的层URI。如本文档中其他地方所描述,应用程序模块604处理初始导航请求。随后,容器模块602接收来自应用程序模块604的加载完成事件。加载完成事件包含层模块的序列化版本。容器模块602将层模块的序列化版本提供给计算设备104A处的绑定模块608。绑定模块608接着处理层模块的序列化版本。当绑定模块608处理层模 块的序列化版本时,绑定模块608输出使操作系统808使用输出系统804向用户806显示层的用户界面命令。用户806可选择层的导航元素。当用户806选择层的导航元素时,操作系统808将另一个导航请求提供给容器模块602。该另一个导航请求指定与导航元素相关联的层URI。图15是图示容器模块602的示例初始化操作1500的流程图。图15的示例描述容器模块602、应用程序模块604、层模块606以及绑定模块608以特定方式实施的实施例。应理解,在其他实施例中,容器模块602、应用程序模块604、层模块606以及绑定模块608以其他方式实施。如图15的示例中所图示,当容器模块602的执行开始(1502)时,初始化操作1500开始。在各种实施例中,容器模块602的执行可在各个时间开始。例如,在一些实施例中,当操作系统808响应于来自用户806的输入而启动应用程序时,容器模块602的执行开始。在其他实施例中,当服务器应用程序1004在服务器系统902A处开始时,容器模块602的执行开始。在其他实施例中,当服务器系统902中的一个开始时,容器模块602的执行开始。在其他实施例中,当服务器系统902A首次接收针对容器模块602的web请求或导航请求时,容器模块602的执行开始。在容器模块602的执行开始之后,容器模块602初始化绑定模块608 (1504)。在一些实施例中,绑定模块608遵循工厂设计模式。在此等实施例中,容器模块602通过调用绑定模块608的静态初始化方法来初始化绑定模块608。当容器模块602初始化绑定模块时,不同绑定模块可执行不同动作。例如,一些绑定模块的初始化方法的调用使计算设备104A显示初始屏幕。在这个示例中,其他绑定模块的初始化方法的调用不使计算设备104A执行任何动作。接着,容器模块602产生事件侦听器(1506)。在图15的示例中,应用程序源代码404定义抽象应用程序类。抽象应用程序类定义应用程序初始化操作以及导航操作。事件侦听器侦听由抽象应用程序类产生的加载完成事件。如本文档中其他地方所提及,加载完成事件包含层参考。在开发者102选择基于客户端的部署技术、基于服务器的部署技术或壳应用程序部署技术的例子中,加载完成事件包括层参考,且事件侦听器将层参考提供给绑定模块608。在开发者102选择混合部署技术的例子中,加载完成事件含有层模块的序列化版本,且事件侦听器将层模块的序列化版本提供给绑定模块608。容器模块602接着实例化应用程序模块604( 1508)。应用程序模块604是应用程序源代码404中定义的应用程序类的例子。应用程序类扩展了抽象应用程序类。应用程序类重写由抽象应用程序类定义的应用程序初始化操作。每当实例化应用程序类时,就调用应用程序模块604的应用程序初始化操作。在执行时,应用程序模块604的应用程序初始化操作实例化层模块606。层模块606中的每一个是在层源代码406中定义的不同层类的例子。层类中的每一个扩展了抽象层类。抽象层类定义加载操作。层类中的每一个以不同方式实施加载操作。因此,层模块的加载操作具有不同行为。此外,在执行时,应用程序模块604的应用程序初始化操作产生将层URI映射到层模块的导航图。导航图是将层URI映射到层模块的软件对象。不同应用程序具有不同应用程序类。不同应用程序类实施不同应用程序初始化方法。因此, 不同应用程序可初始化不同导航图。应用程序初始化操作还初始化用于应用程序的样式。用于应用程序的样式可控制应用程序中文本的外观。在一些实施例中,样式又可针对内容元素的个别层或类型来初始化。下文是在一些实施例中使用的示例代码应用程序类
Li 丄rig System
权利要求
1.一种方法,其包含 输入业务逻辑源代码,所述业务逻辑源代码不含有对任何平台特定的大量代码,且所述业务逻辑源代码实质上定义对所述应用程序特定的应用程序的所有功能性; 编译与第一平台相关联的平台特定代码以及所述业务逻辑源代码,从而产生第一计算机可执行指令集,所述第一计算机可执行指令集的执行使提供所述第一平台的设备提供所述应用程序;以及 编译与第二平台相关联的平台特定代码以及所述业务逻辑源代码,从而产生第二计算机可执行指令集,所述第二计算机可执行指令集的执行使提供所述第二平台的设备提供所述应用程序。
2.—种方法,其包含 通过编译第一源代码集来产生第一计算机可执行指令集,所述第一源代码集包括业务 逻辑源代码,所述第一计算机可执行指令集适用于在第一平台上执行;以及 通过编译第二源代码集来产生第二计算机可执行指令集,所述第二源代码集包括所述业务逻辑源代码,所述第二计算机可执行指令集适用于在第二平台上执行,其中所述业务逻辑源代码基本上没有对所述第一平台特定的代码且基本上没有对所述第二平台特定的代码,其中所述业务逻辑源代码实质上定义所述应用程序的对所述应用程序特定的所有功能性。
3.根据权利要求2所述的方法, 其中产生所述第一计算机可执行指令集包含编译第一平台特定代码集,所述第一平台特定代码集是对所述第一平台特定的;且 其中产生所述第二计算机可执行指令集包含编译第二平台特定代码集,所述第二平台特定代码集是对所述第二平台特定的。
4.根据权利要求3所述的方法,其进一步包含从由外部方提供的数据存储系统复制所述第一平台特定代码集。
5.根据权利要求3所述的方法, 其中产生所述第一计算机可执行指令集包含编译层源代码,所述层源代码不含有对所述第一平台或所述第二平台特定的代码,所述层源代码定义层类,所述层类包含将内容加载到层模块中的加载操作,所述层模块是所述层类的例子; 其中产生所述第二计算机可执行指令集包含编译所述层源代码; 其中所述第一平台特定代码集定义如下操作,即当在所述第一平台上执行时,使用所述层模块产生可用来向用户呈现层的输出数据;且 其中所述第二平台特定代码集定义如下操作,即当在所述第二平台上执行时,使用所述层模块产生可用来向另一个用户呈现所述层的输出数据。
6.根据权利要求5所述的方法,其中所述应用程序具有层集,所述层中的每一个与层URI相关联;且其中产生所述第一计算机可执行指令集包含编译应用程序源代码,所述应用程序源代码不含有对所述第一平台或所述第二平台特定的代码,所述应用程序源代码定义应用程序模块的功能性,所述应用程序模块具有在接收导航请求时调用的导航操作,所述导航操作在由所述导航请求指定的层URI与所述层模块相关联时向所述层模块提供加载请求,所述加载请求包含执行所述层模块的所述加载操作的请求。
7.根据权利要求6所述的方法, 其中所述第一平台特定代码集定义第一绑定模块的功能性,所述第一绑定模块具有层输出操作,所述层输出操作处理层模块以产生输出数据,用于利用所述第一平台特有的用户界面功能来呈现层;且 其中所述第二平台特定代码集定义第二绑定模块的功能性,所述第二绑定模块具有不同层输出操作,所述不同层输出操作处理层模块以产生输出数据,用于利用所述第二平台特有的用户界面功能来呈现所述层。
8.根据权利要求7所述的方法,其中产生所述第一计算机可执行指令集包含产生第一程序包,所述第一程序包包含定义所述层模块、所述应用程序模块以及所述第一绑定模块的功能性的计算机可执行指令,所述第一程序包适用于安装在提供所述第一平台的计算设备上。
9.根据权利要求6所述的方法,其进一步包含产生包含计算机可执行指令的壳应用程序包,当所述计算机可执行指令在设备上执行时会使所述设备提供表现成执行所述应用程序操作的壳应用程序,所述壳应用程序实际上将导航请求发送给所述应用程序模块,且从所述第一绑定模块接收序列化界面数据,所述应用程序模块以及所述第一绑定模块在服务器系统处操作。
10.根据权利要求6所述的方法,其中产生所述指令集包含 产生客户端程序包,所述客户端程序包包含定义所述第一绑定模块的功能性的指令,所述客户端程序包适用于安装在提供所述第一平台的计算设备上;以及 产生服务器程序包,所述服务器程序包包含定义所述层模块以及所述应用程序模块的功能性的指令,所述服务器程序包适用于安装在服务器设备上。
11.根据权利要求2所述的方法,其进一步包含 将所述第一计算机可执行指令集分配给提供所述第一平台且能够执行所述第一计算机可执行指令集的设备;以及 将所述第二计算机可执行指令集分配给提供所述第二平台且能够执行所述第二计算机可执行指令集的设备。
12.根据权利要求11所述的方法, 其中分配所述第一计算机可执行指令集包含使所述第一计算机可执行指令集在应用程序商店可购买到;且 其中分配所述第二计算机可执行指令集包含使所述第二计算机可执行指令集在所述应用程序商店或另一个应用程序商店可购买到。
13.根据权利要求11所述的方法,其进一步包含 其中分配所述第一计算机可执行指令集包含将所述第一计算机可执行指令集推出到组织中提供所述第一平台的设备;且 其中分配所述第二计算机可执行指令集包含将所述第二计算机可执行指令集推出到所述组织中提供所述第二平台的设备。
14.根据权利要求2所述的方法,其中所述业务逻辑源代码不包括取决于哪个平台正运行所述应用程序而按条件执行的代码。
15.一种方法,其包含 从一个或一个以上外部方获得第一平台特定代码集以及第二平台特定代码集,所述第一平台特定代码集与第一平台相关联,所述第二平台特定代码集与第二平台相关联; 开发用于第一应用程序的业务逻辑源代码,所述业务逻辑源代码实质上定义所述第一应用程序的对所述第一应用程序特定的所有功能性,所述第一平台特定代码集以及所述第二平台特定代码集基本上没有对所述第一应用程序特定的代码; 使用一个或一个以上计算设备产生第一计算机可执行指令集以及第二计算机可执行指令集,其中所述一个或一个以上计算设备通过编译第一源代码集来产生所述第一计算机可执行指令集,所述第一源代码集包括所述业务逻辑源代码以及所述第一平台特定代码集;且 其中所述一个或一个以上计算设备通过编译第二源代码集来产生所述第二计算机可 执行指令集,所述第二源代码集包括所述业务逻辑源代码以及所述第二平台特定代码集。
16.根据权利要求15所述的方法,其进一步包含 开发用于第二应用程序的业务逻辑源代码;以及 使用用于所述第二应用程序的所述业务逻辑源代码、第一平台特定源代码集以及第二平台特定源代码集以产生适用于在所述第一平台以及所述第二平台上执行的计算机可执行指令集。
17.根据权利要求15所述的方法,其进一步包含 在第一设备上安装所述第一计算机可执行指令集,所述第一设备提供所述第一平台,所述第一计算机可执行指令集由所述第一设备的执行使所述第一设备仅使用所述第一平台特有的用户界面功能呈现所述第一应用程序的用户界面;以及 在第二设备上安装所述第二计算机可执行指令集,所述第二设备提供所述第二平台,所述第二计算机可执行指令集由所述第二设备的执行使所述第二设备仅使用所述第二平台特有的用户界面功能呈现所述第一应用程序的所述用户界面。
18.一种计算系统,其包含 一个或一个以上数据存储媒体,其存储 计算机可执行指令;以及 用于应用程序的业务逻辑源代码,所述业务逻辑源代码基本上没有对任何平台特定的源代码,所述业务逻辑源代码实质上定义所述应用程序的对所述应用程序特定的所有功能性;以及 处理单元,所述处理单元从所述一个或一个以上数据存储媒体读取所述指令且执行所述指令,所述指令由所述处理单元的执行使所述计算系统使用所述业务逻辑源代码产生多个程序包,所述程序包适用于在不同平台上执行,所述程序包在所述平台上的执行使提供所述平台的计算设备提供所述应用程序。
19.根据权利要求18所述的计算系统,其中所述不同平台包括由不同类型的移动设备提供的平台。
20.一种计算机可读数据存储媒体,其存储在由计算系统的处理单元执行时使所述计算系统进行以下动作的指令 通过编译与第一平台相关联的平台特定代码以及业务逻辑源代码来产生第一指令集,所述第一指令集的执行使提供所述第一平台的设备提供应用程序,所述业务逻辑源代码不含有对任何平台特定的大量代码,所述业务逻辑源代码实质上定义所述应用程序的对所述应用程序特定的所有功能性;以及 通过编译与第二平台相关联的平台特定代码以及业务逻辑源代码来产生第二指令集,所述第二指令集的执行使提供所述第二平台的设备提供所述应用程序。
21.根据权利要求20所述的计算机可读数据存储媒体, 其中所述业务逻辑源代码定义多个 层; 其中所述第一指令集的执行使提供所述第一平台的所述设备将内容加载到所述层中且使用所述第一平台特有的用户界面功能在所述层中显示所述内容;且 其中所述第二指令集的执行使提供所述第二平台的所述设备将所述内容加载到所述层中且使用所述第一平台特有的用户界面功能在所述层中显示所述内容。
全文摘要
通过编译应用程序特定源代码部分地产生一个指令集。当在由设备提供的平台上本机地执行时,该指令集提供应用程序。通过编译相同业务逻辑源代码部分地产生另一个指令集。当在由另一个设备提供的另一个平台上本机地执行时,该另一个指令集提供相同应用程序。该业务逻辑源代码基本上没有对任何平台特定的代码。此外,该业务逻辑源代码大体上定义该应用程序的所有应用程序特定功能性。
文档编号G06F3/00GK102971688SQ201180027455
公开日2013年3月13日 申请日期2011年4月15日 优先权日2010年4月15日
发明者N·J·克莱文杰 申请人:Itr集团有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1