CN1652079A - 用于向软件应用程序动态地添加特征的***和方法 - Google Patents
用于向软件应用程序动态地添加特征的***和方法 Download PDFInfo
- Publication number
- CN1652079A CN1652079A CNA2005100056667A CN200510005666A CN1652079A CN 1652079 A CN1652079 A CN 1652079A CN A2005100056667 A CNA2005100056667 A CN A2005100056667A CN 200510005666 A CN200510005666 A CN 200510005666A CN 1652079 A CN1652079 A CN 1652079A
- Authority
- CN
- China
- Prior art keywords
- application program
- user
- feature
- supplier
- application
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/54—Link editing before load time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
一种向软件应用程序动态地添加特征的方法、设备、***和计算机程序产品。使用一个用于向任何应用程序添加任何特征的一般不可改变的应用编程接口(API)的框架,来添加这些应用程序。
Description
技术领域
本发明涉及向设备添加软件应用程序特征。
背景技术
允许终端制造商创造应用程序驱动的电话机的终端软件产品是可获得的。可从芬兰诺基亚公司获得的60系列平台是一种能够被终端制造商许可的终端软件产品的例子。
期望使用终端软件产品制造电话机(或其它相似设备)的制造商将各种相关的应用程序包括到终端软件产品。制造商也能够包括已经由制造商定制的用户界面(UI)元件,以及添加新的应用程序或删除旧的应用程序。另外,购买这种电话机的用户可以在该电话机上安装第三方软件。
典型地,应用程序为在预定义外壳应用程序中对于终端用户而言可见的一个特征提供功能。应用程序菜单以及其它用户界面元件、例如软键按扭或者选择列表提供了每一特征可用的多组选择或数据。然而,制造商、终端用户以及第三方开发商并不能按照对于无缝终端用户经历来说看起来象是集成的方式用他们自己的特征容易地扩展终端软件产品应用程序。特征特定的菜单项(或者其它用户界面元件)不能看起来和工作起来好像它们就是终端软件产品应用程序的一部分。按照惯例,在电话机中增加新的特征意味着增加新的应用程序,这通常将导致许多执行同类事务并且不一定彼此一致的应用程序。
试图解决这些问题的现有尝试都已经失败了。例如,现有尝试包括为每个特征实现应用编程接口(API)。在这样的***中,为每个特征指定一个API。向需要这些特征的客户端应用程序提供对对应于该特征的API的依赖性。向客户端添加特征特定的UI元件。另外,能够添加特征特定的UI元件。解决上述问题的另一尝试包括预先添加特征特定的UI元件以及使用该等元件的运行时间变体。这样的***预先包含所有特征,并且取决于产品配置对特征进行激活/去激活。
然而,这些技术通常导致了软件结构中的静态依赖性,会产生电话机开发程序中的集成问题。
在任何软件开发(包括用于诸如上述那些终端软件产品之类的终端软件产品的编程)中,开发者创建软件结构,将需求映射到子***和部件,并且定义对于所创建的结构的功能性及非功能性软件需求。这些结构的关键部件是应用编程接口(API),它表示被称为调用程度的另一部件经由其利用或者调用另一被称为被调用程序的部件的接口。
为了向现有软件中添加一个功能,将一个新的部件通过被调用程序为其它方使用而提供的API集成到现有应用程序中。通常,API包括多组声明和定义,例如,常量声明、类型定义、类定义以及函数(过程)定义。每个函数定义有一个唯一的签名,它包括返回类型、函数名称以及函数变元列表。每个变元定义一段传递给函数或程序的数据。变元能够保持的数据类型可以是简单的,例如字符串、字节、整数、实数、双精度,或者可以是对结构或类定义的结构引用。
在软件开发中需要有标准的多用途API,它们在软件演变中是保持不改变的和足够通用的。开发者想把采用简单数据类型的通用的多用途函数、例如Int genericDoSomething(const char[]objectInformation)实现到这样的API中。然而,实现能够接受多种参数的通用函数是困难的。该函数可以被分成具有独立变体的几段。例如,函数可以被定义如下:
1)Int genericDoSomething(const char[]objectName);
2)Int genericDo Something(const char[]objectId);
2B)Int genericDoSomethingByName(const char[]objectName);
2C)Int genericDoSomethingById(const char[]objectId);
3)Int genericDoSomething(const char[]objectName,const char[]objectUrl);
4)Int genericDoSomething(const char[]objectName,const char[]objectID,char*objectUrl);
5)Int genericDoSomething(const char[]objectName,char[]outObjectInfo);
在所有这些版本中,被调用程序假定每个变元位置的含义或者语义。然而,该被调用程序必须信任调用程度,并且假定第一次输入的参数是正确的,被调用程序没有好的办法对之进行验证。上述选择1)和2)是不可能的,因为函数签名不是唯一的,并且编译器不能分辩函数调用。需要上述函数2B)和2C)来分辩函数调用。
当被调用程序把一个输入参数传递到其它函数时,它向前传送这种信任。在许多层函数调用之后,语义可能丢失,并且有变元被误解的风险。
如果向函数增加一个新的变元,则每次必须改变函数的签名。粗心的改变可能导致二进制或源兼容性破坏。例如,在上述3)和4)的情况中,增加了额外的objectID和objectUrl变元。在5)的情况中,如果被调用程序在输出变元outObjectInfo中返回数据,则调用程度将会面临和输入参数类似的问题。如果将输入变元持续地保存到一个文件中,则丢失变元的含义。如果将输入变元传递过进程边界,则丢失了变元的含义。
如上所述,使用特定的函数变体代替通用形式是可能的。能够向变元、例如“Int genericDoSomething(int objectInfoMeaning,const char[]objectInformation)”中添加语义信息。这适用于在同一次调用中传递的每个额外的变元(例如,“Int genericDoSomething(intobjectInfoMeaning1,const char[]objectInformation1,intobjectInfoMeaning2,const char[]objectInformation2);”。能够对上述结构进行简化(例如,“Int genericDoSomething(struct ObjectInfo1 info,struct ObjectInfo2 info)”)。这里,“struct ObjectInfo1”结构把信息保持作为成员数据。在这样的结构中,编译器检查变元的语义。
作为选择,能够使用类(例如,“Int genericDoSomething(ObjectInfo1 info,ObjectInfo2 info);”),其中Object1和Object2是自动保持语义信息的C++类。同样地,编译器检查变元的语义。然而,需要以类似的方式添加新的变元。另外,能够将genericDoSomething方法作为一个成员函数添加到Object1类中,以便获得object1.genericDo Something(Object2 &info)。
另一种已知技术(例如在Microsoft OLE2中)是使用能够保持几种数据表示的变体数据类型(参见下一部分)。但是这些已知技术仍然缺少语义信息。
为了通过相同的使用者(consumer)API把参数从一个使用者传递到一个或多个匹配的提供者,可以创建一个带有语义和数据信息的通用参数。例如,每个使用者然后可以检查语义含义以及数据类型,并且如果需要就可以进行必需的转换。参数应当是通用的,这是因为难以知道通过API传递何类数据。
因此,需要提供一种用于以受控的和动态的方式将特征添加到现有的一组应用程序中的机制。此外,甚至需要向现有的应用程序中添加特征以扩展终端软件产品应用程序的功能,另外,还需要有通用的函数变元。
发明内容
本发明针对向软件应用程序动态添加特征的方法、设备、***以及计算机程序。这些功能是使用一种用于向任意应用程序添加任意特征的一般不可改变的应用编程接口(API)的框架来添加的。
简而言之,一个示范性实施例涉及这样一种方法,它通过建立一个用于向任意应用程序添加任意特征的一般不可改变的应用编程接口(API)的框架,向软件应用程序动态地添加计算机软件特征。该方法包括:为一个指定预期用户界面元件的使用者应用程序提供使用者应用程序兴趣(interest)资源;将与使用者应用程序兴趣资源相对应的预期用户界面元件存储到一个文件中;将预期用户界面元件传递给一个应用程序互配(interworking)框架;将预期用户界面元件添加到与软件应用程序相关联的用户界面中。
另一个示范性实施例涉及这样一种设备,它向软件应用程序动态地添加特征,以便能够将由一个软件程序提供的任何特征添加到用于该设备的软件平台程序中。该设备包括一个新的使用者应用程序,它公布指示该新的使用者应用程序期望具有何特征的特征兴趣。该新的使用者应用程序基于特征兴趣为所需的用户界面特征提供具有兴趣占位符的用户界面资源。该设备还包括:多个具有特征和可用于特征的用户界面资源的提供者应用程序;以及一个应用程序互配框架,它为该新使用者应用程序和多个提供者应用程序提供一个接口,以便使特征兴趣与可从多个提供者应用程序中获得的特征之一相匹配。将与匹配的特征相对应的用户界面元件从多个提供者应用程序之一中添加到新使用者应用程序中。
另一个示范性实施例涉及一种用于向软件应用程序动态地添加特征的***。该***包括:一个使用者应用程序,它公布特征兴趣,并且基于特征兴趣标识需要的用户界面资源;一个提供者应用程序,它公布提供者性能,并且标识对于一个特征可用的用户界面资源;以及一个应用程序互配框架,它为使用者应用程序以及提供者应用程序提供一个接口,以便使特征兴趣和提供者性能相匹配,并且将用户界面元件从提供者应用程序中添加到使用者应用程序中。
另一示范性实施例涉及一种计算机程序产品,它具有用以实现以下功能的计算机代码:为指定预期用户界面元件的使用者应用程序提供使用者应用程序兴趣资源;将与使用者应用程序兴趣资源相对应的预期用户界面元件存储到一个文件中;将预期用户界面元件传递到一个应用程序互配框架;向用户界面添加预期用户界面元件。
对于本领域技术人员来说,通过阅读下面的附图、说细说明以及附加权利要求书,本发明的其它主要特性和优点将变得明显。
附图说明
下面将参照附图对示范性实施例加以说明。
图1是依据一个示范性实施例用于向软件应用程序动态地添加特征的软件结构的图形表示。
图2是依据一个示范性实施例的用户界面示例的图形表示。
图3是描述了依据一个示范性实施例用于向软件应用程序动态地添加特征的过程中的操作的流程图。
图4是依据一个示范性实施例的通用参数实现的图形表示。
图5是依据一个示范性实施例的设备的方框图。
具体实施方式
图1表示向软件应用程序动态地添加特征的软件结构。使用者应用程序12通过公布使用者兴趣16指示可从特征提供者14获得的、使用者应用程序12感兴趣的特征。使用者应用程序在使用者UI资源文件18中指定用户界面(UI)元件模板,并且特征提供者14在运行时把预期的UI元件添加到UI中。
在存在能够满足使用者应用程序12的公布兴趣的特征提供者14的情况下,特征提供者14在运行时将UI元件添加到UI中。此外,特征提供者14处理相关的业务逻辑。
以相同的特定格式表示使用者兴趣16和特征提供者14公布的提供者性能20。在一个示范性实施例中,这种格式包括:多用途互联网邮件扩展(MIME)或互联网数据、命令以及提供者接口。使用者兴趣16和提供者性能20能够包括为特征提供者14考虑了更灵活的解决方案的通配符模式。
在使用者应用程序12和特征提供者14之间的数据协议允许将参数从使用者传递到提供者和从提供者提供给使用者。数据协议可以是静态的,也可以在运行时进行协商。一个使用者应用程序12可以使用许多特征提供者,并且一个特征提供者14可以满足许多使用者的兴趣。特征提供者14也可以是其他提供者的使用者。使用者应用程序12和特征提供者14彼此之间是尽可能独立的。特征提供者14可以仅从只读存储器(ROM)中或者从用户数据区域(可安装的提供者)加载。
举例来说,下面表1所示的情况是使用参照图1描述的软件结构的例子。每个例子都有一个应用程序、一个使用者、一个兴趣以及一个提供者。
表1
应用程序 | 使用者 | 兴趣 | 提供者 |
编辑图像 | 图像浏览器,媒体画廊 | “编辑命令”+MIME类型(图像/jpeg) | 图像娱乐 |
“选择要发起的应用程序或功能” | 软键选择器,语音命令,插接板,活动桌面 | “选择命令”+MIME类型(应用程序对象) | 应用程序/应用程序管理器 |
“为文本中找到的项目提供命令选项” | 浏览器,消息传送,应用程序,日历,记事簿,...... | “编辑/查看命令”+项目(电话号码,电子邮件地址,URL,......) | 浏览器,电话,电话簿,SMS编辑器,MMS编辑器,电子邮件编辑器,...... |
获取新的图像、音频、文件 | MMS编辑器,媒体画廊 | “新命令”+MIME类型(图像/*,声音,视频,文件) | 摄像机,CamCorderMedia画廊 |
因此,如表1所示,应用程序“编辑图像”具有使用者应用程序“图像浏览器”和“媒体画廊”。此外,相应的使用者兴趣是“编辑命令”和MIME类型,并且相应的提供者是“图像娱乐(Image Fun)”。图2表示在编辑图像应用程序的情况中的用户界面。在用户界面34中,将新的图像娱乐特征36添加到用户界面32中的现有应用程序菜单中。以无缝的方式实现新特征36的添加。因此,对于用户而言,看上去该新特征正如图像浏览器应用程序的另一个特征一样。
再次参见图1,使用者应用程序12在使用者UI资源文件18中有一个标准UI元件。使用者UI资源文件18可以包括使用者兴趣。另外,独立的资源文件被用来创建共同兴趣的集合或共同兴趣“库”。能够将期望的兴趣(例如,菜单命令、设置页面)***到使用者UI资源文件18中的期望的UI元件中。
应用程序互配框架(AIWFW)22确保特征提供者14能够只在UI设计者定义UI元件的位置添加UI元件24。AIWFW 22在使用者应用程序12和特征提供者14之间建立连接。AIWFW 22通过使公布的使用者兴趣16和公布的提供者性能20相匹配来实现这一连接。这些连接可以是从使用者应用程序12对动态加载的提供者动态链接库(DLL)的纯动态链接库函数调用,或者它们能够具有从使用者进程到提供者进程的进程间通信(IPC)连接。在一个示范性实施例中,动态加载的DLL被用来避免进程间的过多的内容切换。
AIWFW 22实现两个API:一个便于使用者使用提供者的使用者API 26和一组实现提供者的提供者API 28。特征提供者14可以仅实现与其UI性能相匹配的API,例如基本接口、菜单服务接口、设置接口等。这组接口设置可以根据需要进行扩展。
在运行时,向AIWFW 22提供兴趣。基于数据协议,如果可行,则使用者应用程序12向特征提供者14提供可选的输入参数,并且希望返回输出参数。在大部分情况下输入参数和输出参数的默认格式便已足够。
每个特征提供者14实现提供者API 28的所支持的接口。AIWFW22为每个接口提供默认的实现方式。特征提供者14的第一个任务是把所需特征的UI元件、利如菜单项从一个提供者资源文件(PUI)30传递给使用者应用程序12中。第二个任务是处理与添加的元件相关的命令,这些指令以集成的方式出现在使用者资源文件18和本地使用者项目中。第三个任务是满足数据协议、利如默认协议。
特征提供者14使用任何现有的操作***API、UI工具等以有助于实现。AIWFW 22有助于容易地实现特征提供者,以便以特征提供者的形式完成现有的经过测试的软件。从安全性角度来说,可以支持“仅仅从只读存储器中加载(Load-only-from-ROM)”以将主要提供者限制为不可从用户数据区域中修补。
图3表示在向软件应用程序进程动态添加特征的示范性操作。取决于该实施例,可以执行额外的、较少的或者不同的操作。在操作40中,为一个使用者添加一个兴趣资源。兴趣资源描述了使用者应用程序期望何特征。
在操作42中,将兴趣中的用户界面(UI)元件提供给一个资源文件。菜单命令和设置页面是由资源文件的内容所规定的UI元件的例子。在操作44中,使用者应用编程接口(API)向AIWFW提供使用者兴趣。AIWFW是使用者和特征提供者之间的接口。在操作46中,特征提供者在运行时将需要的兴趣UI元件从AIWFW中添加到使用者应用程序UI中。
参照图1至图3描述的示范实施例在已经将电话机投放到市场中之后以集成的方式扩展应用程序。能够维持本地平台应用程序的UI一致性,同时规定可以进行UI元件添加的位置。整个平台变得更加有趣并且是可定制的。
因此,能够支持平台配置,同时基于特征提供者创建不同的销售组合。同时,本地应用程序可以接受以后由运营商或第三方开发商实现的提供者。
从软件结构的角度来讲,可以看到许多优点。例如,特征的维护和扩展更加容易。可以定制一个特征提供者,而且它以类似的方式影响所有感兴趣的使用者。因此,降低了开发成本。而且,结构上的静态依赖性能够被替换为动态依赖性。这使软件配置更加容易,例如,实现共同的内核映象和变化的映象概念。另外,由于基于特征的集成增加模型,示范性实施例允许用于电话机开发的更容易的设备集成。这应当节约集成负担和成本。此外,甚至能够在不改变使用者应用程序(编辑其代码)的情况下将新的特征添加到使用者应用程序中。这极大地减少了所需的测试工作。AIWFW实现了具有很多好的属性的面向对象的软件设计的打开/关闭原理。
利用示范性实施例,特征改变更加容易。制造商可以把需要的提供者选择到ROM中,并且使用者UI中的可见性/非可见性是一致的。此外,运营商和第三方开发者能够在以后增加他们自已的提供者,但是电话机制造商可以控制进行添加的位置。
图4表示依据一个示范性实施例的通用参数实现。在这个实现中,一个称为SemanticID的变量用来描述由用例需要的数据,例如FILENAME、URL、MESSAGEID、CONTACTID、IMAGEFILE、IMAGEDATA和IMAGEHANDLE。ID具有唯一的值。可以将密切相关的SemanticID集合在一起以形成备选表示组。例如,可以将上述的IMAGEFILE、IMAGEBUFFER、IMAGEDBHANDLE集合在一起以形成IMAGE。
一个称为VariantTypeId的变量用来表示基本数据类型,例如整数、日期/时间、唯一ID、字符串、实数,双精度和数据缓冲。TVariant可以保持所有由VariantTypeId指定的数据类型。一个通用参数GenericParam拥有下列数据属性:SemanticID、TVariant、SemanticIDGroup、ParameterStatus(它保持用于数据检查的状态代码)、以及其它用于该通用参数的工具(utility)成员、例如初始者应用程序UID、版本信息以及错误代码。可以包括用于GenericParam的外部和内部支持,以向流中进行写入,以及从流中构造其自身。流可以表示任何操作***流(存储器、文件、套接字(socket)、串行端口、IPC通道等),它能够是在移动设备内部或移动设备之间所用的通信兴趣。
定义了被称为GenericParamList的通用参数列表,它具有一个或更多GeneicParams。能够包括用于GenericParamList的外部和内部支持以向流中进行写入,以及从流中构造其自身。能够在每一个需要一致方式的函数中使用GenericParamList以传递变元:
Int genericDoSomething(GenericParamList inParams);
Int genericDoSomething(GenericParamList inParams,GenericParamList outParams)
举例来说,能够使用通用参数实现以在使用应用程序嵌入(进程内通信)的终端软件产品应用程序之间传递输入和输出变元。因此,不管调用堆栈有多深都可以理解参数的含义(语义)。该实现还能够在独立的终端软件产品应用程序之间传递输入和输出变元(进程到进程的通信)。因此,保留了变元的语义和来源。
此外,该通用参数实现能够在以上参照图1至图3所述的应用程序互配框架22内部传递变元。AIWFW 22可以利用通用参数来实现数据灵活的协议。例如,一条服务提供者命令可以执行如下:
void ExecuteServiceCmdL(
const TInt aCmdId,
const GenericParamList aInParamList,
GenericParamList aOutParamList);
作为另一个例子,能够将该通用参数实现用于语义相同数据的备选表示。例如,图像容器可以是文件、图像数据库的标识符、或者作为存储器缓存的图像数据。
下面参照图4,CGenericParamList类52包含多个(0..N)CGenericParam项54。每个CGenericParam项54包含TGenericParamID和TVariant,它们是CGenericParam类的一部分。CGenericParam类具有一个TVariantTypeID数据类型类和包含在一个TVariant类56中的多个数据值。CGenericParamList类52和CGenericParam类向包含在操作***中的一个流58进行写入。应用程序60使用数据工具(Utility)API 62创建CGenericParamList类52,在创建过程中数据工具API 62和数据工具64进行对接。
在创建CGenericParamList类52的示范性实施例中,定义了各种类,并且分配了标识符。例如,定义称为TGenericParamId的类以表示SemanticID。为这个类中使用的标识符分配适当的范围,并且使其是唯一的。定义称为TVariantTypeId的类以表示TVariantTypeId。为这个类中使用的标识符分配适当的值,并且使其是唯一的。也为操作***类型定义变量,例如TInt32、TUid、TTime、TDesC和HBufC。定义称为TVariant的类,它具有TVariantTypeId和以上述格式的实际数据。此外,将额外的工具属性定义为成员方法或CGenericParamList成员。
定义称为CGenericParam的类,它具有TGenericParamId数据成员(iSemanticId)、TVariant数据成员(iValue)和用于扩展的保留成员。为CGenericParam类提供外部方法和内部方法,以将其自身写入一个流中并且从流中构造其自身。为GenericParamList定义CGenericParamList类。也向列表类提供外部和内部支持。提供基本的迭代程序用于列出和访问CGenericParamList类。为这些类提供一个模块测试程序。
在备选实施例中,为CgenericParamList类提供了高级迭代方法以通过TGenericParamId和TVariantTypeId搜索列表。列表然后可以包含同一参数的备选表示。此外,能够将语义标识符组实现作为TGenericParamIds的范围。可以使用转换工具对语义标识符进行转换。
通用参数实现的示范性实施例使得能够创建通用服务API,它们允许处理几种变元而不需要改变函数签名。该实施例还允许在进程边界内部和外部在调用堆栈内进行与变元检查有关的语义检查。API的框架类型可以基于语义ID进行一致性、安全性等检查,或者甚至用另一个更适合的语义ID代替一个语义ID。
检查可以由SemanticID组成,并且如果需要,则可以将一个语义标识符转换成为另一个语义标识符。如果RAM消耗不成问题的话,则调用程序可以接受/创建用于相同数据的几个备选语义ID(例如IMAGEFILE、IMAGEDATA、IMAGEHANDLE)。变元可以基于额外的工具数据保持上下文信息。
如果使用输入/输出变元,则能够将CGenericParamList用作元数据以描述由被调用程序要求的数据协议。调用程序填入数据的TVariant部分作为实际的输入参数。可以将CGenericParamList保存到任何一种流中,并且它仍然保持语义有效。通用参数实现通过增加新的语义标识符、以及利用早先的实现保持二进制和数据性能,扩展了现有的API。
图5表示一个设备70,它具有中央处理单元(CPU)72、输入74、输出76、存储器78以及用户界面(UI)79。能够依据参照图1至图4所描述的示范性实施例利用新的特征对UI 79进行配置。CPU 72处理包含在应用程序互配框架中的指令,以便将使用者应用程序和提供者应用程序进行对接。设备70可以是电话机、是个人数字助理(PDA)、计算机或者其它任何设备。
该详细说明概括了用于向软件应用程序动态地添加特征的方法、设备、***以及计算机程序产品。在上述说明中,为了解释的目的,阐述了大量的具体细节以便提供对本发明的深入理解。然而,对于本领域技术人员来说,很明显没有这些具体细节也可以实行这些示范性实施例。在其它情况下,为了便于对示范性实施例进行说明,以方框图的形式显示结构和设备。
虽然图中所示和以上所述的示范性实施例是当前优选的,但是应当认识到仅仅通过举例提供了这些实施例。例如,其它实施例可能包括用于执行相同操作的不同技术。本发明不局限于特定的实施例,而是可以扩展到落在所附权利要求书的范围和实质当中的各种修改、组合和置换。
Claims (23)
1.一种用于通过建立一个用于向应用程序添加特征的应用编程接口的框架来向软件应用程序动态地添加计算机软件特征的方法,所述方法包括:
从应用程序互配框架请求一个与使用者应用程序的使用者兴趣相匹配的特征;
使用所述使用者兴趣和一个特征性能来标识一个提供者;
如果标识了所述提供者,则向所述使用者应用程序提供所述特征;以及
在所述使用者应用程序中应用所述特征。
2.如权利要求1所述的方法,进一步包括:在应用程序互配框架应用编程接口中使用通用参数。
3.如权利要求1所述的方法,其特征在于:所述应用程序互配框架将所述使用者应用程序和所述特征提供者进行对接。
4.如权利要求3所述的方法,其特征在于:所述应用程序互配框架使用动态链接库函数调用将所述使用者应用程序和所述特征提供者进行对接。
5.如权利要求1所述的方法,进一步包括:和所述特征一起添加一个特征用户界面元件。
6.如权利要求5所述的方法,其特征在于:所述特征用户界面元件包括菜单命令和设置页面或者其它用户界面元件。
7.如权利要求5所述的方法,其特征在于:所述应用程序互配框架实现两个应用编程接口,包括一个使用者应用编程接口和一组提供者应用编程接口,其中所述提供者应用编程接口和所述预期用户界面元件相匹配。
8.一种设备,用于向软件应用程序动态地添加特征以便能够将由软件程序提供的特征添加到用于所述设备的软件平台程序中,所述设备包括:
使用者应用程序,它公布表示所述使用者应用程序希望具有何特征的特征兴趣;
至少一个提供者应用程序,它具有至少一个可用的特征;以及
应用程序互配框架,它为所述使用者应用程序和所述提供者应用程序提供一个接口,以便使所述特征兴趣和可从所述提供者应用程序中获得的特征之一相匹配。
9.如权利要求8所述的设备,其特征在于:新的所述使用者应用程序是由终端制造商提供的应用程序。
10.权利要求8所述的设备,其特征在于:新的所述使用者应用程序是由第三方提供给所述设备的用户的应用程序。
11.如权利要求8所述的设备,其特征在于:新的所述使用者应用程序集成到所述设备当中,好像是用于所述设备的原始组软件应用程序的一部分。
12.如权利要求8所述的设备,其特征在于:在应用程序互配框架应用编程接口中使用通用参数。
13.如权利要求8所述的设备,其特征在于:新的所述使用者应用程序中的特征兴趣包括在将所述新的使用者应用程序引入到所述设备中之前在所述设备上不存在的菜单选项。
14.如权利要求8所述的设备,其特征在于:将与所述匹配的特征相对应的用户界面元件放置在兴趣占位符中。
15.如权利要求8所述的设备,其特征在于:所述使用者应用程序是一个新的使用者应用程序。
16.如权利要求8所述的设备,其特征在于:所述至少一个可用的特征是基于特征兴趣的用户界面特征。
17.一种用于向软件应用程序动态地添加特征的***,所述***包括:
使用者应用程序,它公布特征兴趣,并且基于所述特征兴趣标识用户界面资源;
提供者应用程序,它公布提供者性能,并且标识对于一个特征可用的用户界面资源;和
应用程序互配框架,为所述使用者应用程序和所述提供者应用程序提供一个接口,以便使所述特征兴趣和所述提供者性能相匹配,并且将用户界面元件从所述提供者应用程序中添加到所述使用者应用程序中。
18.如权利要求17所述的***,其特征在于:所述使用者应用程序使用应用编程接口和所述应用程序互配框架进行对接。
19.如权利要求17所述的***,其特征在于:所述使用者应用程序从其它提供者获得用户界面元件。
20.如权利要求17所述的***,其特征在于:所述用户设备是移动电话。
21.一种计算机程序产品,包括:
被配置用于执行以下操作的计算机代码:
为规定至少一个用户界面元件的使用者应用程序提供使用者应用程序兴趣资源;
将与所述使用者应用程序兴趣资源相对应的用户界面元件存储在一个文件中;
将所述用户界面元件传递给应用程序互配框架;以及
将所述用户界面元件添加到所述使用者用户界面中。
22.如权利要求21所述的计算机程序产品,进一步包括:用于生成一类通用参数的计算机代码。
23.如权利要求21所述的计算机程序产品,进一步包括:用于在应用程序互配框架内传递变元的计算机代码。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/762,051 | 2004-01-21 | ||
US10/762,051 US20050160414A1 (en) | 2004-01-21 | 2004-01-21 | System and method for dynamically adding features to software applications |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1652079A true CN1652079A (zh) | 2005-08-10 |
CN100367201C CN100367201C (zh) | 2008-02-06 |
Family
ID=34634584
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100056667A Expired - Fee Related CN100367201C (zh) | 2004-01-21 | 2005-01-21 | 用于向软件应用程序动态地添加特征的***和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20050160414A1 (zh) |
EP (1) | EP1557759A1 (zh) |
KR (1) | KR20050076719A (zh) |
CN (1) | CN100367201C (zh) |
WO (1) | WO2005081506A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102300066A (zh) * | 2010-06-28 | 2011-12-28 | 康佳集团股份有限公司 | 电视屏幕菜单生成***及电视 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8296751B2 (en) * | 2004-07-09 | 2012-10-23 | Sap Ag | Software application program interface method and system |
US8818897B1 (en) * | 2005-12-15 | 2014-08-26 | Rockstar Consortium Us Lp | System and method for validation and enforcement of application security |
US8635521B2 (en) * | 2006-09-22 | 2014-01-21 | Microsoft Corporation | Customizing applications in a discovery interface |
US8015506B2 (en) * | 2006-09-22 | 2011-09-06 | Microsoft Corporation | Customizing a menu in a discovery interface |
US8112714B2 (en) * | 2006-09-22 | 2012-02-07 | Microsoft Corporation | Customizing application page loading in a discovery interface |
US20080178125A1 (en) * | 2007-01-23 | 2008-07-24 | Microsoft Corporation | Providing dynamic content in a user interface in an application |
US8336043B2 (en) | 2007-02-15 | 2012-12-18 | Microsoft Corporation | Dynamic deployment of custom code |
US20080201759A1 (en) * | 2007-02-15 | 2008-08-21 | Microsoft Corporation | Version-resilience between a managed environment and a security policy |
US9047106B1 (en) * | 2010-06-29 | 2015-06-02 | Emc Corporation | Managing application features |
US8554797B2 (en) * | 2010-12-17 | 2013-10-08 | Sap Ag | System and method for modular business applications |
US20160148227A1 (en) | 2011-06-03 | 2016-05-26 | Nudgit, Inc. | System and methods for demand-driven transactions |
WO2012167059A2 (en) * | 2011-06-03 | 2012-12-06 | Nudgit, Inc. | System and methods for demand-driven transactions |
CN102331968A (zh) * | 2011-06-24 | 2012-01-25 | 浙大网新科技股份有限公司 | Oms平台上的wine兼容性自动检查的方法 |
US9733953B2 (en) | 2012-06-22 | 2017-08-15 | Microsoft Technology Licensing, Llc | API redirection for limited capability operating systems |
US9405556B2 (en) | 2012-06-28 | 2016-08-02 | Microsoft Technology Licensing, Llc | Dynamic addition and removal of operating system components |
US10083009B2 (en) | 2013-06-20 | 2018-09-25 | Viv Labs, Inc. | Dynamically evolving cognitive architecture system planning |
US9594542B2 (en) | 2013-06-20 | 2017-03-14 | Viv Labs, Inc. | Dynamically evolving cognitive architecture system based on training by third-party developers |
WO2015053861A2 (en) * | 2013-10-09 | 2015-04-16 | Viv Labs, Inc. | Dynamically evolving cognitive architecture system based on a natural language intent interpreter |
KR101503785B1 (ko) * | 2013-10-10 | 2015-03-18 | (주)잉카엔트웍스 | 동적 라이브러리를 보호하는 방법 및 장치 |
US10824403B2 (en) | 2015-10-23 | 2020-11-03 | Oracle International Corporation | Application builder with automated data objects creation |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5097533A (en) * | 1988-11-29 | 1992-03-17 | International Business Machines Corporation | System and method for interfacing computer application programs written in different languages to a software system |
AU7355494A (en) * | 1993-07-15 | 1995-02-13 | Apple Computer, Inc. | Multiple entry point method dispatch |
US5625783A (en) * | 1994-12-13 | 1997-04-29 | Microsoft Corporation | Automated system and method for dynamic menu construction in a graphical user interface |
US5848274A (en) * | 1996-02-29 | 1998-12-08 | Supercede, Inc. | Incremental byte code compilation system |
US6473768B1 (en) * | 1996-11-12 | 2002-10-29 | Computer Associates Think, Inc. | System and method for modifying an executing application |
US6335972B1 (en) * | 1997-05-23 | 2002-01-01 | International Business Machines Corporation | Framework-based cryptographic key recovery system |
US7225409B1 (en) * | 1998-08-26 | 2007-05-29 | Microsoft Corporation | Graphical user interface for a screen telephone |
US6298481B1 (en) * | 1998-10-30 | 2001-10-02 | Segasoft, Inc. | System for modifying the functionality of compiled computer code at run-time |
FR2785412B1 (fr) * | 1998-10-30 | 2001-08-24 | Bull Sa | Creation dynamique de classes d'objets |
US6199158B1 (en) * | 1998-12-16 | 2001-03-06 | Nokia Mobile Phones Ltd. | Method and apparatus for configuring variant software for electronic devices |
US6449476B1 (en) * | 1999-03-12 | 2002-09-10 | Qualcomm Incorporated | System and method for independently downloading features into a set of storage locations in a wireless communication device |
WO2000058855A1 (en) * | 1999-03-29 | 2000-10-05 | Quark, Inc. | Dynamic application systems and processes for distributed computer environment |
US7908602B2 (en) * | 1999-06-30 | 2011-03-15 | Blackboard Inc. | Internet-based education support system, method and medium providing security attributes in modular, extensible components |
US20020186249A1 (en) * | 1999-10-28 | 2002-12-12 | Qi Lu | Method and system of facilitating automatic login to a web site using an internet browser |
US6683629B1 (en) * | 2000-08-03 | 2004-01-27 | Neoplanet, Inc. | Method in a computer system for embedding a child window in a parent window |
US6629315B1 (en) * | 2000-08-10 | 2003-09-30 | International Business Machines Corporation | Method, computer program product, and system for dynamically refreshing software modules within an actively running computer system |
GB2389998B (en) * | 2000-11-18 | 2005-06-15 | Sendo Int Ltd | An exchangeable cover for a mobile telephone |
EP1340167A2 (en) * | 2000-11-28 | 2003-09-03 | 4thPass Inc. | Method and system for maintaining and distributing wireless applications |
US20020105548A1 (en) * | 2000-12-12 | 2002-08-08 | Richard Hayton | Methods and apparatus for creating a user interface using property paths |
US6472231B1 (en) * | 2001-01-29 | 2002-10-29 | Advanced Micro Devices, Inc. | Dielectric layer with treated top surface forming an etch stop layer and method of making the same |
US7155681B2 (en) * | 2001-02-14 | 2006-12-26 | Sproqit Technologies, Inc. | Platform-independent distributed user interface server architecture |
US6965928B1 (en) * | 2001-03-09 | 2005-11-15 | Networks Associates Technology, Inc. | System and method for remote maintenance of handheld computers |
US20020194293A1 (en) * | 2001-06-13 | 2002-12-19 | Osman John H. | Communications system and method therefor |
US6941135B2 (en) * | 2001-08-13 | 2005-09-06 | Qualcomm Inc. | System and method for temporary application component deletion and reload on a wireless device |
US6915513B2 (en) * | 2001-11-29 | 2005-07-05 | Hewlett-Packard Development Company, L.P. | System and method for dynamically replacing code |
US20040204073A1 (en) * | 2002-05-15 | 2004-10-14 | Motorola, Inc. | Network technology augmented user device framework |
US7512674B1 (en) * | 2002-06-28 | 2009-03-31 | Ciena Corporation | Framework for enabling dynamic construction of a network element management mechanism |
US20040034860A1 (en) * | 2002-08-15 | 2004-02-19 | Microsoft Corporation | Dynamically extensible application program framework including message and notification routing |
US7584471B2 (en) * | 2002-09-23 | 2009-09-01 | Telefonaktiebolaget L M Ericsson (Publ) | Plug-in model |
US20040230963A1 (en) * | 2003-05-12 | 2004-11-18 | Rothman Michael A. | Method for updating firmware in an operating system agnostic manner |
US7184801B2 (en) * | 2003-05-12 | 2007-02-27 | Good Technology, Inc. | Mobile application builder |
US7275221B2 (en) * | 2003-11-07 | 2007-09-25 | Microsoft Corporation | Method and system for representing hierarchal structures of a user-interface |
-
2004
- 2004-01-21 US US10/762,051 patent/US20050160414A1/en not_active Abandoned
-
2005
- 2005-01-20 WO PCT/IB2005/000139 patent/WO2005081506A1/en active Application Filing
- 2005-01-20 EP EP05397002A patent/EP1557759A1/en not_active Withdrawn
- 2005-01-21 CN CNB2005100056667A patent/CN100367201C/zh not_active Expired - Fee Related
- 2005-01-21 KR KR1020050005951A patent/KR20050076719A/ko not_active Application Discontinuation
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102300066A (zh) * | 2010-06-28 | 2011-12-28 | 康佳集团股份有限公司 | 电视屏幕菜单生成***及电视 |
CN102300066B (zh) * | 2010-06-28 | 2016-05-04 | 康佳集团股份有限公司 | 电视屏幕菜单生成***及电视 |
Also Published As
Publication number | Publication date |
---|---|
KR20050076719A (ko) | 2005-07-26 |
CN100367201C (zh) | 2008-02-06 |
EP1557759A1 (en) | 2005-07-27 |
US20050160414A1 (en) | 2005-07-21 |
WO2005081506A1 (en) | 2005-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1652079A (zh) | 用于向软件应用程序动态地添加特征的***和方法 | |
US20200184141A1 (en) | System and method for provisioning a mobile software application to a mobile device | |
US7337436B2 (en) | System and method for cross platform and configuration build system | |
US8135668B2 (en) | Service composition environment | |
Young | Using aspectj to build a software product line for mobile devices | |
US7266370B2 (en) | System and method for developing and deploying device independent applications | |
US20040207659A1 (en) | Program creation by combining web services using graphic user interface controls | |
US7669205B2 (en) | Using messages to extend CRM functionality | |
CN1781077A (zh) | 选择性地加载用于在Java微型设备中调试Java应用程序的远程类或资源 | |
CN1684034A (zh) | 用以执行命令绑定的数据绑定机制的应用 | |
CN1922572A (zh) | 为组件应用程序建立混合模式执行环境的***和方法 | |
CN1601465A (zh) | 动态注册表分区 | |
US20150205620A1 (en) | Configuring user interfaces in electronic devices | |
KR101027259B1 (ko) | 웹 서비스의 메시지 지향 구축 | |
US20090007067A1 (en) | Composite portal application | |
CN1202682C (zh) | 手机短信增值菜单动态实现的方法 | |
EP2003832A1 (en) | System and method for creating multi-mode applications | |
KR20070031378A (ko) | 디바이스 팀 모집을 위한 아키텍쳐 장치 및 방법 그리고보편적 디바이스 상호운용성 플랫폼 관련 애플리케이션들을위한 콘텐트 렌디셔닝 | |
Bisignano et al. | An" intent-oriented" approach for multi-device user interface design | |
KR20090122703A (ko) | 변환 프로그램 제공 서버 및 방법 | |
CN1555178A (zh) | 一种为基于移动设备的增值业务开发提供统一电子通讯簿功能及其扩展功能的中间件设备 | |
JP4864022B2 (ja) | モバイル配信フレームワークにおけるコンテンツ処理の調和のための方法およびシステム | |
CN1286035C (zh) | 动态处理适配器界面的方法 | |
JP2020052874A (ja) | 携帯端末、システム、アクセス方法、およびプログラム | |
CN117873439A (zh) | 应用项目数据的生成方法、调用方法、设备及存储介质 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080206 Termination date: 20110121 |