加载模块的方法及装置.pdf

上传人:1****2 文档编号:4557123 上传时间:2018-10-20 格式:PDF 页数:17 大小:1.73MB
返回 下载 相关 举报
摘要
申请专利号:

CN201410692666.8

申请日:

2014.11.26

公开号:

CN104461618A

公开日:

2015.03.25

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F9/445申请日:20141126|||公开

IPC分类号:

G06F9/445

主分类号:

G06F9/445

申请人:

北京国双科技有限公司

发明人:

马燕龙

地址:

100086北京市海淀区双榆树小区知春路76号翠宫饭店8层A间

优先权:

专利代理机构:

北京康信知识产权代理有限责任公司11240

代理人:

吴贵明; 张永明

PDF下载: PDF下载
内容摘要

本发明公开了一种加载模块的方法及装置。其中,该方法包括:获取模块表,模块表包括预先设置的模块编号ID、用户编号ID以及模块编号ID与用户编号ID之间的对应关系;根据当前识别到的用户编号ID从模块表中进行查询,获取到当前识别到的用户编号ID所对应的模块编号ID;获取当前识别到的用户编号ID对应的模块程序包;解析模块程序包,并将模块程序包加载至应用程序,本发明解决了现有加载模块的方法中,用户需将所有的功能模块其中包括用户不需要的模块都加载到应用程序才能使用的问题。

权利要求书

权利要求书
1.  一种加载模块的方法,其特征在于,包括:
获取模块表,所述模块表包括预先设置的模块编号ID、用户编号ID以及所述模块编号ID与所述用户编号ID之间的对应关系;
根据当前识别到的用户编号ID从所述模块表中进行查询,获取到所述当前识别到的用户编号ID所对应的模块编号ID;
获取所述当前识别到的用户编号ID对应的模块程序包;
解析所述模块程序包,并将所述模块程序包加载至应用程序。

2.  根据权利要求1所述的方法,其特征在于,所述获取模块表之前,所述的方法还包括:
添加XML文件,其中,所述XML文件包括以下元素:模块编号ID、模块程序包存放的路径。

3.  根据权利要求2所述的方法,其特征在于,获取所述当前识别到的用户编号ID对应的模块程序包的步骤包括:
在所述XML文件中获取所述当前识别到的用户编号ID对应的模块程序包的存放路径,并通过所述存放路径下载当前识别到的用户编号ID所对应的所述模块程序包。

4.  根据权利要求3所述的方法,其特征在于,通过所述存放路径下载当前识别到的用户编号ID所对应的所述模块程序包的步骤包括:
创建网络代理类对象;
通过调用所述网络代理类对象中的异步读取方法根据所述存放路径下载所述用户编号ID所对应的所述模块程序包。

5.  根据权利要求1所述的方法,其特征在于,所述当前识别到的用户编号ID所对应的所述模块程序包中包括XAML文件,其中,所述解析所述模块程序包,并将所述模块程序包加载至所述应用程序的步骤包括:
解析所述XAML文件,获取所述XAML文件中的目标程序集,其中,所述目标程序集用于表征所述识别到的用户编号ID对应的模块程序;
从所述目标程序集查找预先定义的主页类;
在所述目标程序集中为所述主页类创建对象,并将所述对象添加到所述应用 程序中。

6.  根据权利要求1所述的方法,其特征在于,所述根据当前识别到的用户编号ID从所述模块表中进行查询之前,所述的方法包括:
根据用户的选择对所述模块表进行如下任意一种或多种操作:删除任意一行模块的记录、修改任意一行模块的记录、添加一行的记录。

7.  一种加载模块的装置,其特征在于,包括:
第一获取单元,用于获取模块表,其中,所述模块表包括预先设置的模块编号ID、用户编号ID以及所述模块编号ID与所述用户编号ID之间的对应关系;
查询单元,用于根据当前识别到的用户编号ID从所述模块表中进行查询,获取到所述当前识别到的用户编号ID所对应的模块编号ID;
第二获取单元,用于获取所述当前识别到的用户编号ID对应的模块程序包;
解析单元,用于解析所述模块程序包,并将所述模块程序包加载至应用程序。

8.  根据权利要求7所述的装置,其特征在于,所述装置还包括:
添加单元,用于添加XML文件,其中,所述XML文件包括以下至少一个元素:模块名称、模块编号ID、模块程序包存放的路径。

9.  根据权利要求8所述的装置,其特征在于,所述第二获取单元包括:
下载模块,用于在所述XML文件中获取所述当前识别到的用户编号ID对应的模块程序包的存放路径,并通过所述存放路径下载当前识别到的用户编号ID所对应的所述模块程序包。

10.  根据权利要求9所述的装置,其特征在于,所述下载模块包括:
创建模块,用于创建网络代理类对象;
子下载模块,用于通过调用所述网络代理类对象中的异步读取方法根据所述存放路径下载所述用户编号ID所对应的所述模块程序包。

11.  根据权利要求7所述的装置,其特征在于,所述当前识别到的用户编号ID所对应的所述模块程序包中包括XAML文件,其中,所述解析单元包括:
解析模块,用于解析所述XAML文件,获取所述XAML文件中的目标程序集,其中,所述目标程序集用于表征所述识别到的用户编号ID对应的模块程序;
查找模块,用于从所述目标程序集查找预先定义的主页类;
添加模块,用于在所述目标程序集中为所述主页类创建对象,并将所述对象添加到所述应用程序中。

12.  根据权利要求7所述的装置,其特征在于,所述装置还包括:
操作单元,用于根据用户的选择对所述模块表进行如下任意一种或多种操作:删除任意一行模块的记录、修改任意一行模块的记录、添加一行的记录。

说明书

说明书加载模块的方法及装置
技术领域
本发明涉及计算机软件领域,具体而言,涉及一种加载模块的方法及装置。
背景技术
Silverlight是一种富客户端技术,是跨平台跨浏览器的插件,可以为应用程序的开发提供丰富的多媒体功能和交互方式。上述应用程序会包含很多的功能。为了使用和管理系统的方便,会将上述多种功能分成不同的模块,比如新闻模块、体育模块、电商功能模块等,每一种模块都会满足用户的一种功能需求。用户在使用Silverlight开发的应用程序时,都是将Silverlight应用程序下载到本地运行的,而随着应用程序的功能越来越强大,包含的模块也越来越多,Silverlight应用程序也会越来越大,用户为了使用应用程序,需要下载的时间也越来越长。
这里需要说明的是,上述应用程序提供的功能模块,并不是每个用户都需要的,有些功能模块只是针对特定种类的用户的。比如电商功能模块只是针对电商用户的,非电商类用户不需要这样的功能模块。但是目前不管用户是否需要,都需要将包含了所有的功能模块的整个应用程序下载到本地,才可以使用应用程序。
针对现有加载模块的方法中,用户需将所有的功能模块其中包括用户不需要的模块都加载到应用程序才能使用的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种加载模块的方法及装置,以解决现有加载模块的方法中,用户需将所有的功能模块其中包括用户不需要的模块都加载到应用程序才能使用的问题。
为了实现上述目的,根据本发明实施例的一个方面,提供了一种加载模块的方法。该方法包括:获取模块表,模块表包括预先设置的模块编号ID、用户编号ID以及模块编号ID与用户编号ID之间的对应关系;根据当前识别到的用户编号ID从模块表中进行查询,获取到当前识别到的用户编号ID所对应的模块编号ID;获取当前识别到的用户编号ID对应的模块程序包;解析模块程序包,并将模块程序包加载至应用程序。
为了实现上述目的,根据本发明实施例的另一方面,提供了一种加载模块的装置。 该装置包括:第一获取单元,用于获取模块表,其中,模块表包括预先设置的模块编号ID、用户编号ID以及模块编号ID与用户编号ID之间的对应关系;查询单元,用于根据当前识别到的用户编号ID从模块表中进行查询,获取到当前识别到的用户编号ID所对应的模块编号ID;第二获取单元,用于获取当前识别到的用户编号ID对应的模块程序包;解析单元,用于解析模块程序包,并将模块程序包加载至应用程序。
根据发明实施例,通过获取模块表,模块表包括预先设置的模块编号ID、用户编号ID以及模块编号ID与用户编号ID之间的对应关系;根据当前识别到的用户编号ID从模块表中进行查询,获取到当前识别到的用户编号ID所对应的模块编号ID;获取当前识别到的用户编号ID对应的模块程序包;解析模块程序包,并将模块程序包加载至应用程序,解决了有加载模块的方法中,用户需将所有的功能模块其中包括用户不需要的模块都加载到应用程序才能使用的问题。
附图说明
构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例一的加载模块的方法的流程图;
图2是根据本发明实施例二的加载模块装置的结构示意图;
图3是根据本发明实施例二的可选的加载模块装置的结构示意图;以及
图4是根据本发明实施例二的可选的加载模块装置的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含 了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
本发明实施例提供了一种加载模块的方法。如图1所示,该方法包括步骤如下:
步骤S12,获取模块表,模块表包括预先设置的模块编号ID、用户编号ID以及模块编号ID与用户编号ID之间的对应关系。
具体的,应用程序可以有多个功能模块,比如,报表模块、电商模块等,在步骤S12中,模块表可以定义不同用户需要加载的不同模块,如表1所示。
表1:
ModuleIdAccountId01user00102user00103user002
在表1中,user001代表用户的编号ID即用户的账号,01为模块的编号,结合表1,可以得知,用户user001所需要加载的模块的编号为01和02,用户user002需要加载的模块的编号为03,可选的,上述模块表中的内容可以为系统管理员根据实际情况预先配置的。
步骤S14,根据当前识别到的用户编号ID从模块表中进行查询,获取到当前识别到的用户编号ID所对应的模块编号ID。
具体的,用户通过终端设备使用应用程序时,本申请提供的方案可以识别到用户的编号,在上述模块表中进行查询以获取用户编号所对应的模块的编号,即获取当前识别到的用户需要加载哪些模块,结合上表1,以用户编号为user001为例,用户user001在打开应用程序时,系统会自动识别用户user001的用户编号,再到模块表中去查询用户user001需要加载的模块为01和02所对应的模块。
步骤S16,获取当前识别到的用户编号ID对应的模块程序包。
具体的,可以为每个功能模块都开发一个程序包,可选的,上述程序包可以是XAP包,XAP包为一个压缩包,在压缩包里包含上述应用程序运行时需要的程序集和配置。
步骤S18,解析模块程序包,并将模块程序包加载至应用程序。
具体的,可以在将上述各个模块对应的XAP包进行解析后,获取上述XAP包中 的文件,将上述文件加载至应用程序。在一种可选的实施例当中,用户下载Silverlight应用程序时,即下载XAP包,然后执行XAP包中的程序集从而完成对各个功能模块的加载过程,这里需要说明的是,XAP文件是Silverlight应用程序编译打包后的一个文件,它是一个标准的zip压缩文件,包括了Silverlight应用程序所需的一切文件,如程序集、资源文件等。
这里还需要说明的是,此时加载的模块程序包为上述用户编号所需要加载的功能模块所对应的程序包,而不是应用程序中所有的功能模块对应的程序包。
在本申请实施例中,首先获取模块表,在上述模块表中获取用户编号ID所对应的模块编号,接着获取上述模块编号所对应的程序包,接着解析上述程序包,最后将模块对应的程序加载至应用程序。解决了加载模块的方法中,用户需将所有的功能模块其中包括用户不需要的模块都加载到应用程序才能使用的问题,实现了特定用户只需加载其需要的模块也可以使用应用程序的效果。
可选的,步骤S12中获取模块表之前,本发明实施例提供的方法还可以包括:
步骤S10,添加XML(Extensible Markup Language,可扩展标记语言)文件,其中,XML文件包括以下至少一个元素:模块名称、模块编号ID、模块程序包存放的路径。
可选的,上述xml文件中也可以包含模块的名称。
具体的,可以在应用程序中添加Module.xml文件,定义应用程序包含哪些模块以及模块程序包所在的存储路径,如下为xml文件中的部分代码:
<?xml version="1.0"encoding="utf-8"?>
<Modules>
<Module Id="2"Name="Report"XapPath="ClientBin/Report.xap"/>
<Module Id="1"Name="ECommerce"XapPath="ClientBin/ECommerce.xap"/>
</Modules>
这里需要说明的是,在上述代码中可知,模块代码ID为2的模块名字为Report,Report功能模块所对应的XAP程序包的存储路径是ClientBin/Report.xap。
可选的,步骤S16中获取当前识别到的用户编号ID对应的模块程序包之后,本实施例提供的方法还可以包括:
步骤S17,在XML文件中获取当前识别到的用户编号ID对应的模块程序包的存放路径,并通过存放路径下载当前识别到的用户编号ID所对应的模块程序包。
具体的,结合上述XML代码,在上述代码中可知,模块代码ID为1的模块名字为ECommerce,ECommerce功能模块所对应的XAP程序包的存储路径是ClientBin/ECommerce.xap,在本方案中,可以通过上述XML文件,可以下载到不同功能模块所对应的程序包。
可选的,步骤S17中通过存放路径下载当前识别到的用户编号ID所对应的模块程序包的步骤还可以包括:
步骤S171,创建WebClient(网络代理类)对象。
步骤S172,通过调用WebClient(网络代理类)对象中的异步读取方法(OpenReadAsync)根据存放路径下载用户编号ID所对应的模块程序包。
具体的,在创建上述WebClient(网络代理类)对象之后,可以调用上述WebClient(网络代理类)对象的异步读取方法(OpenReadAsync),上述异步读取方法以xml文件中的XapPath的值作为参数,进而下载上述模块对应的XAP包。
可选的,上述XAP包中可以包含XAML(eXtensible Application Markup Language,可扩展应用程序标记语言)文件,在一种可选的实施例中,步骤S18中解析模块程序包,并将模块程序包加载至应用程序的步骤可以包括:
步骤S181,解析XAML文件,获取XAML文件中的目标程序集,其中,目标程序集用于表征识别到的用户编号ID对应的模块程序。
具体的,在创建上述WebClient(网络代理类)对象之后,可以注册WebClient(网络代理类)对象中的OpenReadCompleted事件的处理函数,当上述XAP下载完成后,上述OpenReadCompleted事件会被触发,则事件处理函数会被执行解析XAML文件即获取XAP包中的AppManifest.xaml文件,这个文件定义了XAP包接口以及包含的组件。如下是xaml文件的部分代码:

在本方案中,可以解析上面的文件,获取Deployment元素的EntryPointAssembly属性,根据该属性在Deployment.Parts元素下的所有AssemblyPart元素中名称和EntryPointAssembly属性相同的AssemblyPart元素,再使用上述找到的AssemblyPart元素的Source属性指定的程序集,上述程序集即上述目标程序集。
步骤S182,从目标程序集查找预先定义的主页类。
具体的,可以在上述目标程序集中查找主页类(MainPage)。
步骤S183,在目标程序集中为主页类创建对象,并将对象添加到应用程序中。
具体的,可以在上述目标程序集中创建主页类(MainPage)对象,将该对象添加到当前应用程序的某一个容器中。这里需要说明的是,具体添加到哪一个容器,应用程序可以根据自己的情况决定,但是不管哪种情况都在本申请的保护范围之内。
可选的,步骤S14,根据当前识别到的用户编号ID从模块表中进行查询之前,本实施例提供的方法还可以包括:
步骤S13,根据用户的选择对模块表进行如下任意一种或多种操作:删除任意一行模块的记录、修改任意一行模块的记录、添加一行模块的记录。
具体的,系统可以根据用户的选择从而对上述模块表进行删除、修改或添加,例如,用户可以通过触发应用程序界面的一个按钮来选择新的模块,系统响应用户的操作从而对模块表进行更新。用户下次在打开应用程序时,可以根据模块表更新后的内容来下载新的功能模块,即实现了用户可以选择性的下载之前需要的功能模块。
下面本申请在具体的应用场景下通过装置准备,装置处理以及装置使用三个方面展开描述:
装置准备:
1.将应用程序的功能进行划分,划分成多个模块,每个模块完成相对独立的一类功能。比如分成报表模块、电商模块。每个模块必须包含主页类(MainPage),这个类相当于这个模块的主界面,所有功能都在这个主界面中添加。
2.为每个模块开发一个XAP包,之前整个应用程序一个XAP包。XAP包其实就是一个压缩包,里面包含应用程序运行时需要的程序集和配置。用户下载Silverlight应用程序时,其实就是下载XAP包,然后执行XAP包中的程序集。
3.在应用程序中添加Module.xml文件,定义应用程序包含哪些模块。如下所示的例子:


4.添加Module表,该表定义每个用户需要加载的模块,表的结构如下表2。
表2:
ModuleIdModule唯一编号AccountId用户编号
5.定义InstallModule操作,参数为ModuleId、AccountId,为指定用户安装指定Module,该操作使用两个参数在Module表中添加一行记录。
6.定义UninstallModule操作,参数为ModuleId、AccountId,为指定用户卸载指定Module,该操作根据那两个参数在Module表中删除一行记录。
7.定义GetAllModuleIds操作,参数为AccountId,获取指定用户需要加载的所有模块编号。该操作根据AccountId从Module表中查找符合条件的所有记录。
装置处理:
1.添加安装模块功能,用户登录后使用该功能安装模块。具体的,调用InstallModule操作,传递当前用户编号和安装的模块编号作为参数。
2.定义卸载模块功能,用户登录后使用该功能卸载模块。具体的,调用UninstallModule操作,传递当前用户编号和安装的模块编号作为参数。
装置使用:
1.用户登录后,调用GetAllModules操作,传递当前用户的AccountId为参数,获取当前用户需要加载的模块编号。
2.对于每一个模块编号,在XML文件找到对应的模块定义,根据模块定义中的XapPath加载这个模块的XAP包,具体逻辑如下:
2.1.创建WebClient(网络代理类)对象。
2.2.注册WebClient(网络代理类)对象的OpenReadCompleted事件的处理函数。
2.3.调用WebClient(网络代理类)对象的异步读取方法(OpenReadAsync),上述 异步读取方法以上述xml文件中的XapPath作为参数,进而下载上述模块对应的XAP包。
2.4.当XAP下载完成后,OpenReadCompleted事件会被触发,2.2步的事件处理函数会被执行。
2.5.在事件处理函数中,读取XAP包,获取XAP包中的AppManifest.xaml文件,这个文件定义了XAP包接口以及包含的组件。如下是一个例子,对原内容进行简化,删除了不必要内容:

2.6.解析上面的文件,获取Deployment元素的EntryPointAssembly属性,根据该属性在Deployment.Parts元素下的所有AssemblyPart元素中名称和EntryPointAssembly属性相同的AssemblyPart元素。
2.7.使用上述找到的AssemblyPart元素的Source属性指定的程序集,在这个程序集中查找主页类(MainPage)。
2.8.创建主页类(MainPage)对象,将该对象添加到当前应用程序的某一个容器中。这里没有说明具体哪一个容器,应用程序可以根据自己的情况决定,不管哪种情况都应该在本专利保护范围内。
综上,本发明可以实现如下技术效果:用户可以选择自己需要的功能,只下载自己需要的功能,而且当需要使用其他功能时,也非常简单,只需要重新配置,即系统管理员可以根据用户的要求在上述模块表中增加、删除或修改任一行模块的记录,应用程序在下次启动时,系统会根据新的配置表重新为用户加载与其相对应的所有模块,这样一来,用户下载应用程序的时间大大缩短了,响应速度提高,同时还不影响客户的使用,同时本申请创新点体现在安装模块和卸载模块的过程以及根据模块XAP包路径将模块功能加载应用程序中的过程。
实施例二
本发明实施例还提供了一种加载模块的装置,如图2所示,该装置可以包括:
第一获取单元22,用于获取模块表,其中,模块表包括预先设置的模块编号ID、用户编号ID以及模块编号ID与用户编号ID之间的对应关系。
具体的,应用程序可以有多个功能模块,比如,报表模块、电商模块等,模块表可以定义不同用户需要加载的不同模块,如表3所示。
表3:
ModuleIdAccountId01user00102user00103user002
在表3中,user001代表用户的编号ID即用户的账号,01为模块的编号,结合表1,可以得知,用户user001所需要加载的模块的编号为01和02,用户user002需要加载的模块的编号为03,可选的,上述模块表中的内容可以为系统管理员根据实际情况预先配置的。
查询单元24,用于根据当前识别到的用户编号ID从模块表中进行查询,获取到当前识别到的用户编号ID所对应的模块编号ID。
具体的,用户通过终端设备使用应用程序时,本申请提供的方案可以识别到的用户的编号,在上述模块表中进行查询以获取用户编号所对应的模块的编号,即获取当前识别到的用户需要加载哪些模块,结合上表3,以用户编号为user001为例,用户user001在打开应用程序时,系统会自动识别用户user001的用户编号,再到模块表中去查询用户user001需要加载的模块为01和02所对应的模块。
第二获取单元26,用于获取当前识别到的用户编号ID对应的模块程序包。
具体的,可以为每个功能模块都开发一个程序包,可选的,上述程序包可以是XAP包,XAP包为一个压缩包,在压缩包里包含上述应用程序运行时需要的程序集和配置。
解析单元28,用于解析模块程序包,并将模块程序包加载至应用程序。
具体的,可以在将上述各个模块对应的XAP包进行解析后,获取上述XAP包中的文件,将上述文件加载至应用程序。在一种可选的实施例当中,用户下载Silverlight应用程序时,即下载XAP包,然后执行XAP包中的程序集从而完成对各个功能模块的加载过程。这里需要说明的是,此时加载的模块程序包为上述用户编号所需要加载 的功能模块所对应的程序包,而不是应用程序中所有的功能模块对应的程序包。
本申请实施例首先获取模块表,在上述模块表中获取用户编号ID所对应的模块编号,接着获取上述模块编号所对应的程序包,接着解析上述程序包,最后将模块对应的程序加载至应用程序。解决了加载模块的方法中,用户需将所有的功能模块其中包括用户不需要的模块都加载到应用程序才能使用的问题,实现了特定用户只需加载其需要的模块也可以使用应用程序的效果。
可选的,如图3所示,本发明实施例提供的装置还可以包括:
添加单元20,用于添加XML文件,其中,XML文件包括以下至少一个元素:模块名称、模块编号ID、模块程序包存放的路径。
具体的,可以在应用程序中添加Module.xml文件,定义应用程序包含哪些模块以及模块程序包所在的存储路径,如下为xml文件中的部分代码:

这里需要说明的是,在上述代码中可知,模块代码ID为2的模块名字为Report,Report功能模块所对应的XAP程序包的存储路径是ClientBin/Report.xap。
可选的,如图4所示,上述第二获取单元26还可以包括:
下载模块261,用于在XML文件中获取当前识别到的用户编号ID对应的模块程序包的存放路径,并通过存放路径下载当前识别到的用户编号ID所对应的模块程序包。
具体的,结合上述XML代码,在上述代码中可知,模块代码ID为1的模块名字为ECommerce,ECommerce功能模块所对应的XAP程序包的存储路径是ClientBin/ECommerce.xap,在本方案中,可以通过上述XML文件,可以下载到不同功能模块所对应的程序包。
可选的,上述下载模块261还可以包括:
创建模块2611,用于创建WebClient(网络代理类)对象。
子下载模块2612,用于通过调用WebClient(网络代理类)对象中的异步读取方法(OpenReadAsync)根据存放路径下载用户编号ID所对应的模块程序包。
具体的,在创建上述WebClient(网络代理类)对象之后,可以调用上述WebClient(网络代理类)对象的异步读取方法(OpenReadAsync),上述异步读取方法以上述xml文件中的XapPath作为参数,进而下载上述模块对应的XAP包。
可选的,上述解析单元28还可以包括:
解析模块281,用于解析XAML文件,获取XAML文件中的目标程序集,其中,目标程序集用于表征识别到的用户编号ID对应的模块程序。
具体的,在创建上述WebClient(网络代理类)对象之后,可以注册WebClient(网络代理类)对象中的OpenReadCompleted事件的处理函数,当上述XAP下载完成后,上述OpenReadCompleted事件会被触发,则事件处理函数会被执行解析XAML文件即获取XAP包中的AppManifest.xaml文件,这个文件定义了XAP包接口以及包含的组件。如下是xaml文件的部分代码:

在本方案中,可以解析上面的文件,获取Deployment元素的EntryPointAssembly属性,根据该属性在Deployment.Parts元素下的所有AssemblyPart元素中名称和EntryPointAssembly属性相同的AssemblyPart元素,再使用上述找到的AssemblyPart元素的Source属性指定的程序集,上述程序集即上述目标程序集。
查找模块282,用于从目标程序集查找预先定义的主页类。
具体的,可以在上述目标程序集中查找主页类(MainPage)。
添加模块283,用于在目标程序集中为主页类创建对象,并将对象添加到应用程序中。
具体的,可以在上述目标程序集中创建主页类(MainPage)对象,将该对象添加到当前应用程序的某一个容器中。这里需要说明的是,具体添加到哪一个容器,应用 程序可以根据自己的情况决定,但是不管哪种情况都在本申请的保护范围之内。
可选的,本发明实施例提供的装置还包括:
操作单元30,用于根据用户的选择对模块表进行如下任意一种或多种操作:删除任意一行模块的记录、修改任意一行模块的记录、添加一行的记录。
具体的,系统可以根据用户的选择从而对上述模块表进行删除、修改或添加,例如,用户可以通过触发应用程序界面的一个按钮来选择新的模块,系统响应用户的操作从而对模块表进行更新。用户下次在打开应用程序时,可以根据模块表更新后的内容来下载新的功能模块,即实现了用户可以选择性的下载之前需要的功能模块。
下面本申请在具体的应用场景下通过装置准备,装置处理以及装置使用三个方面展开描述:
装置准备:
1.将应用程序的功能进行划分,划分成多个模块,每个模块完成相对独立的一类功能。比如分成报表模块、电商模块。每个模块必须包含主页类(MainPage),这个类相当于这个模块的主界面,所有功能都在这个主界面中添加。
2.为每个模块开发一个XAP包,之前整个应用程序一个XAP包。XAP包其实就是一个压缩包,里面包含应用程序运行时需要的程序集和配置。用户下载Silverlight应用程序时,其实就是下载XAP包,然后执行XAP包中的程序集。
3.在应用程序中添加Module.xml文件,定义应用程序包含哪些模块。如下所示的例子:

4.添加Module表,该表定义每个用户需要加载的模块。结构如下表4。
表4:
ModuleIdModule唯一编号AccountId用户编号
5.定义InstallModule操作,参数为ModuleId、AccountId,为指定用户安装指定Module,该操作使用两个参数在Module表中添加一行记录。
6.定义UninstallModule操作,参数为ModuleId、AccountId,为指定用户卸载指定Module,该操作根据那两个参数在Module表中删除一行记录。
7.定义GetAllModuleIds操作,参数为AccountId,获取指定用户需要加载的所有模块编号。该操作根据AccountId从Module表中查找符合条件的所有记录。
装置处理:
1.添加安装模块功能,用户登录后使用该功能安装模块。具体的,调用InstallModule操作,传递当前用户编号和安装的模块编号作为参数。
2.定义卸载模块功能,用户登录后使用该功能卸载模块。具体的,调用UninstallModule操作,传递当前用户编号和安装的模块编号作为参数。
装置使用:
1.用户登录后,调用GetAllModules操作,传递当前用户的AccountId为参数,获取当前用户需要加载的模块编号。
2.对于每一个模块编号,在XML文件找到对应的模块定义,根据模块定义中的XapPath加载这个模块的XAP包,具体逻辑如下:
2.1.创建WebClient(网络代理类)对象。
2.2.注册WebClient(网络代理类)对象的OpenReadCompleted事件的处理函数。
2.3.调用WebClient(网络代理类)对象的异步读取方法(OpenReadAsync),上述异步读取方法以上述xml文件中的XapPath作为参数,进而下载上述模块对应的XAP包。
2.4.当XAP下载完成后,OpenReadCompleted事件会被触发,2.2步的事件处理函数会被执行。
2.5.在事件处理函数中,读取XAP包,获取XAP包中的AppManifest.xaml文件,这个文件定义了XAP包接口以及包含的组件。如下是一个例子,对原内容进行简化,删除了不必要内容:


2.6.解析上面的文件,获取Deployment元素的EntryPointAssembly属性,根据该属性在Deployment.Parts元素下的所有AssemblyPart元素中名称和EntryPointAssembly属性相同的AssemblyPart元素。
2.7.使用上述找到的AssemblyPart元素的Source属性指定的程序集,在这个程序集中查找主页类(MainPage)。
2.8.创建主页类(MainPage)对象,将该对象添加到当前应用程序的某一个容器中。这里没有说明具体哪一个容器,应用程序可以根据自己的情况决定,不管哪种情况都应该在本专利保护范围内。
综上,本发明可以实现如下技术效果:用户可以选择自己需要的功能,只下载自己需要的功能,而且当需要使用其他功能时,也非常简单,只需要重新配置,即系统管理员可以根据用户的要求在上述模块表中增加、删除或修改任一行模块的记录,应用程序在下次启动时,系统会根据新的配置表重新为用户加载与其相对应的所有模块,这样一来,用户下载应用程序的时间大大缩短了,响应速度提高,同时还不影响客户的使用,同时本申请创新点体现在安装模块和卸载模块的过程以及根据模块XAP包路径将模块功能加载应用程序中的过程。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显 示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、移动终端、服务器或者网络设备等)执行本发明各个实施例所述的方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

加载模块的方法及装置.pdf_第1页
第1页 / 共17页
加载模块的方法及装置.pdf_第2页
第2页 / 共17页
加载模块的方法及装置.pdf_第3页
第3页 / 共17页
点击查看更多>>
资源描述

《加载模块的方法及装置.pdf》由会员分享,可在线阅读,更多相关《加载模块的方法及装置.pdf(17页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 (43)申请公布日 (21)申请号 201410692666.8 (22)申请日 2014.11.26 G06F 9/445(2006.01) (71)申请人 北京国双科技有限公司 地址 100086 北京市海淀区双榆树小区知春 路 76 号翠宫饭店 8 层 A 间 (72)发明人 马燕龙 (74)专利代理机构 北京康信知识产权代理有限 责任公司 11240 代理人 吴贵明 张永明 (54) 发明名称 加载模块的方法及装置 (57) 摘要 本发明公开了一种加载模块的方法及装置。 其中, 该方法包括 : 获取模块表, 模块表包括预先 设置的模块编号ID、 用户编号ID以及模块。

2、编号ID 与用户编号 ID 之间的对应关系 ; 根据当前识别到 的用户编号 ID 从模块表中进行查询, 获取到当前 识别到的用户编号ID所对应的模块编号ID ; 获取 当前识别到的用户编号 ID 对应的模块程序包 ; 解 析模块程序包, 并将模块程序包加载至应用程序, 本发明解决了现有加载模块的方法中, 用户需将 所有的功能模块其中包括用户不需要的模块都加 载到应用程序才能使用的问题。 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书13页 附图1页 (10)申请公布号 CN 104461618 A (43)申请公布日 2015.03.。

3、25 CN 104461618 A 1/2 页 2 1. 一种加载模块的方法, 其特征在于, 包括 : 获取模块表, 所述模块表包括预先设置的模块编号 ID、 用户编号 ID 以及所述模块编号 ID 与所述用户编号 ID 之间的对应关系 ; 根据当前识别到的用户编号 ID 从所述模块表中进行查询, 获取到所述当前识别到的 用户编号 ID 所对应的模块编号 ID ; 获取所述当前识别到的用户编号 ID 对应的模块程序包 ; 解析所述模块程序包, 并将所述模块程序包加载至应用程序。 2. 根据权利要求 1 所述的方法, 其特征在于, 所述获取模块表之前, 所述的方法还包 括 : 添加 XML 文件。

4、, 其中, 所述 XML 文件包括以下元素 : 模块编号 ID、 模块程序包存放的路 径。 3. 根据权利要求 2 所述的方法, 其特征在于, 获取所述当前识别到的用户编号 ID 对应 的模块程序包的步骤包括 : 在所述XML文件中获取所述当前识别到的用户编号ID对应的模块程序包的存放路径, 并通过所述存放路径下载当前识别到的用户编号 ID 所对应的所述模块程序包。 4. 根据权利要求 3 所述的方法, 其特征在于, 通过所述存放路径下载当前识别到的用 户编号 ID 所对应的所述模块程序包的步骤包括 : 创建网络代理类对象 ; 通过调用所述网络代理类对象中的异步读取方法根据所述存放路径下载所述。

5、用户编 号 ID 所对应的所述模块程序包。 5. 根据权利要求 1 所述的方法, 其特征在于, 所述当前识别到的用户编号 ID 所对应的 所述模块程序包中包括 XAML 文件, 其中, 所述解析所述模块程序包, 并将所述模块程序包 加载至所述应用程序的步骤包括 : 解析所述 XAML 文件, 获取所述 XAML 文件中的目标程序集, 其中, 所述目标程序集用于 表征所述识别到的用户编号 ID 对应的模块程序 ; 从所述目标程序集查找预先定义的主页类 ; 在所述目标程序集中为所述主页类创建对象, 并将所述对象添加到所述应用程序中。 6. 根据权利要求 1 所述的方法, 其特征在于, 所述根据当前。

6、识别到的用户编号 ID 从所 述模块表中进行查询之前, 所述的方法包括 : 根据用户的选择对所述模块表进行如下任意一种或多种操作 : 删除任意一行模块的记 录、 修改任意一行模块的记录、 添加一行的记录。 7. 一种加载模块的装置, 其特征在于, 包括 : 第一获取单元, 用于获取模块表, 其中, 所述模块表包括预先设置的模块编号 ID、 用户 编号 ID 以及所述模块编号 ID 与所述用户编号 ID 之间的对应关系 ; 查询单元, 用于根据当前识别到的用户编号 ID 从所述模块表中进行查询, 获取到所述 当前识别到的用户编号 ID 所对应的模块编号 ID ; 第二获取单元, 用于获取所述当前。

7、识别到的用户编号 ID 对应的模块程序包 ; 解析单元, 用于解析所述模块程序包, 并将所述模块程序包加载至应用程序。 8. 根据权利要求 7 所述的装置, 其特征在于, 所述装置还包括 : 权 利 要 求 书 CN 104461618 A 2 2/2 页 3 添加单元, 用于添加 XML 文件, 其中, 所述 XML 文件包括以下至少一个元素 : 模块名称、 模块编号 ID、 模块程序包存放的路径。 9. 根据权利要求 8 所述的装置, 其特征在于, 所述第二获取单元包括 : 下载模块, 用于在所述XML文件中获取所述当前识别到的用户编号ID对应的模块程序 包的存放路径, 并通过所述存放路径。

8、下载当前识别到的用户编号 ID 所对应的所述模块程 序包。 10. 根据权利要求 9 所述的装置, 其特征在于, 所述下载模块包括 : 创建模块, 用于创建网络代理类对象 ; 子下载模块, 用于通过调用所述网络代理类对象中的异步读取方法根据所述存放路径 下载所述用户编号 ID 所对应的所述模块程序包。 11.根据权利要求7所述的装置, 其特征在于, 所述当前识别到的用户编号ID所对应的 所述模块程序包中包括 XAML 文件, 其中, 所述解析单元包括 : 解析模块, 用于解析所述XAML文件, 获取所述XAML文件中的目标程序集, 其中, 所述目 标程序集用于表征所述识别到的用户编号 ID 对。

9、应的模块程序 ; 查找模块, 用于从所述目标程序集查找预先定义的主页类 ; 添加模块, 用于在所述目标程序集中为所述主页类创建对象, 并将所述对象添加到所 述应用程序中。 12. 根据权利要求 7 所述的装置, 其特征在于, 所述装置还包括 : 操作单元, 用于根据用户的选择对所述模块表进行如下任意一种或多种操作 : 删除任 意一行模块的记录、 修改任意一行模块的记录、 添加一行的记录。 权 利 要 求 书 CN 104461618 A 3 1/13 页 4 加载模块的方法及装置 技术领域 0001 本发明涉及计算机软件领域, 具体而言, 涉及一种加载模块的方法及装置。 背景技术 0002 S。

10、ilverlight 是一种富客户端技术, 是跨平台跨浏览器的插件, 可以为应用程序的 开发提供丰富的多媒体功能和交互方式。上述应用程序会包含很多的功能。为了使用和管 理系统的方便, 会将上述多种功能分成不同的模块, 比如新闻模块、 体育模块、 电商功能模 块等, 每一种模块都会满足用户的一种功能需求。用户在使用 Silverlight 开发的应用程 序时, 都是将 Silverlight 应用程序下载到本地运行的, 而随着应用程序的功能越来越强 大, 包含的模块也越来越多, Silverlight 应用程序也会越来越大, 用户为了使用应用程序, 需要下载的时间也越来越长。 0003 这里需要。

11、说明的是, 上述应用程序提供的功能模块, 并不是每个用户都需要的, 有 些功能模块只是针对特定种类的用户的。比如电商功能模块只是针对电商用户的, 非电商 类用户不需要这样的功能模块。但是目前不管用户是否需要, 都需要将包含了所有的功能 模块的整个应用程序下载到本地, 才可以使用应用程序。 0004 针对现有加载模块的方法中, 用户需将所有的功能模块其中包括用户不需要的模 块都加载到应用程序才能使用的问题, 目前尚未提出有效的解决方案。 发明内容 0005 本发明的主要目的在于提供一种加载模块的方法及装置, 以解决现有加载模块的 方法中, 用户需将所有的功能模块其中包括用户不需要的模块都加载到应。

12、用程序才能使用 的问题。 0006 为了实现上述目的, 根据本发明实施例的一个方面, 提供了一种加载模块的方法。 该方法包括 : 获取模块表, 模块表包括预先设置的模块编号 ID、 用户编号 ID 以及模块编号 ID 与用户编号 ID 之间的对应关系 ; 根据当前识别到的用户编号 ID 从模块表中进行查询, 获取到当前识别到的用户编号 ID 所对应的模块编号 ID ; 获取当前识别到的用户编号 ID 对 应的模块程序包 ; 解析模块程序包, 并将模块程序包加载至应用程序。 0007 为了实现上述目的, 根据本发明实施例的另一方面, 提供了一种加载模块的装置。 该装置包括 : 第一获取单元, 用。

13、于获取模块表, 其中, 模块表包括预先设置的模块编号 ID、 用户编号 ID 以及模块编号 ID 与用户编号 ID 之间的对应关系 ; 查询单元, 用于根据当前识 别到的用户编号 ID 从模块表中进行查询, 获取到当前识别到的用户编号 ID 所对应的模块 编号ID ; 第二获取单元, 用于获取当前识别到的用户编号ID对应的模块程序包 ; 解析单元, 用于解析模块程序包, 并将模块程序包加载至应用程序。 0008 根据发明实施例, 通过获取模块表, 模块表包括预先设置的模块编号 ID、 用户编号 ID 以及模块编号 ID 与用户编号 ID 之间的对应关系 ; 根据当前识别到的用户编号 ID 从模。

14、 块表中进行查询, 获取到当前识别到的用户编号 ID 所对应的模块编号 ID ; 获取当前识别到 说 明 书 CN 104461618 A 4 2/13 页 5 的用户编号 ID 对应的模块程序包 ; 解析模块程序包, 并将模块程序包加载至应用程序, 解 决了有加载模块的方法中, 用户需将所有的功能模块其中包括用户不需要的模块都加载到 应用程序才能使用的问题。 附图说明 0009 构成本申请的一部分的附图用来提供对本发明的进一步理解, 本发明的示意性实 施例及其说明用于解释本发明, 并不构成对本发明的不当限定。在附图中 : 0010 图 1 是根据本发明实施例一的加载模块的方法的流程图 ; 0。

15、011 图 2 是根据本发明实施例二的加载模块装置的结构示意图 ; 0012 图 3 是根据本发明实施例二的可选的加载模块装置的结构示意图 ; 以及 0013 图 4 是根据本发明实施例二的可选的加载模块装置的结构示意图。 具体实施方式 0014 需要说明的是, 在不冲突的情况下, 本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本发明。 0015 为了使本技术领域的人员更好地理解本发明方案, 下面将结合本发明实施例中的 附图, 对本发明实施例中的技术方案进行清楚、 完整地描述, 显然, 所描述的实施例仅仅是 本发明一部分的实施例, 而不是全部的实施例。基于。

16、本发明中的实施例, 本领域普通技术 人员在没有做出创造性劳动前提下所获得的所有其他实施例, 都应当属于本发明保护的范 围。 0016 需要说明的是, 本发明的说明书和权利要求书及上述附图中的术语 “第一” 、“第 二” 等是用于区别类似的对象, 而不必用于描述特定的顺序或先后次序。应该理解这样使 用的数据在适当情况下可以互换, 以便这里描述的本发明的实施例。此外, 术语 “包括” 和 “具有” 以及他们的任何变形, 意图在于覆盖不排他的包含, 例如, 包含了一系列步骤或单元 的过程、 方法、 系统、 产品或设备不必限于清楚地列出的那些步骤或单元, 而是可包括没有 清楚地列出的或对于这些过程、 。

17、方法、 产品或设备固有的其它步骤或单元。 0017 实施例一 0018 本发明实施例提供了一种加载模块的方法。如图 1 所示, 该方法包括步骤如下 : 0019 步骤S12, 获取模块表, 模块表包括预先设置的模块编号ID、 用户编号ID以及模块 编号 ID 与用户编号 ID 之间的对应关系。 0020 具体的, 应用程序可以有多个功能模块, 比如, 报表模块、 电商模块等, 在步骤 S12 中, 模块表可以定义不同用户需要加载的不同模块, 如表 1 所示。 0021 表 1 : 0022 ModuleIdAccountId 01user001 02user001 说 明 书 CN 10446。

18、1618 A 5 3/13 页 6 03user002 0023 在表1中, user001代表用户的编号ID即用户的账号, 01为模块的编号, 结合表1, 可以得知, 用户 user001 所需要加载的模块的编号为 01 和 02, 用户 user002 需要加载的模 块的编号为 03, 可选的, 上述模块表中的内容可以为系统管理员根据实际情况预先配置的。 0024 步骤 S14, 根据当前识别到的用户编号 ID 从模块表中进行查询, 获取到当前识别 到的用户编号 ID 所对应的模块编号 ID。 0025 具体的, 用户通过终端设备使用应用程序时, 本申请提供的方案可以识别到用户 的编号, 。

19、在上述模块表中进行查询以获取用户编号所对应的模块的编号, 即获取当前识别 到的用户需要加载哪些模块, 结合上表1, 以用户编号为user001为例, 用户user001在打开 应用程序时, 系统会自动识别用户 user001 的用户编号, 再到模块表中去查询用户 user001 需要加载的模块为 01 和 02 所对应的模块。 0026 步骤 S16, 获取当前识别到的用户编号 ID 对应的模块程序包。 0027 具体的, 可以为每个功能模块都开发一个程序包, 可选的, 上述程序包可以是 XAP 包, XAP 包为一个压缩包, 在压缩包里包含上述应用程序运行时需要的程序集和配置。 0028 步。

20、骤 S18, 解析模块程序包, 并将模块程序包加载至应用程序。 0029 具体的, 可以在将上述各个模块对应的XAP包进行解析后, 获取上述XAP包中的文 件, 将上述文件加载至应用程序。在一种可选的实施例当中, 用户下载 Silverlight 应用程 序时, 即下载 XAP 包, 然后执行 XAP 包中的程序集从而完成对各个功能模块的加载过程, 这 里需要说明的是, XAP 文件是 Silverlight 应用程序编译打包后的一个文件, 它是一个标准 的 zip 压缩文件, 包括了 Silverlight 应用程序所需的一切文件, 如程序集、 资源文件等。 0030 这里还需要说明的是, 。

21、此时加载的模块程序包为上述用户编号所需要加载的功能 模块所对应的程序包, 而不是应用程序中所有的功能模块对应的程序包。 0031 在本申请实施例中, 首先获取模块表, 在上述模块表中获取用户编号 ID 所对应的 模块编号, 接着获取上述模块编号所对应的程序包, 接着解析上述程序包, 最后将模块对应 的程序加载至应用程序。解决了加载模块的方法中, 用户需将所有的功能模块其中包括用 户不需要的模块都加载到应用程序才能使用的问题, 实现了特定用户只需加载其需要的模 块也可以使用应用程序的效果。 0032 可选的, 步骤 S12 中获取模块表之前, 本发明实施例提供的方法还可以包括 : 0033 步骤。

22、S10, 添加XML(Extensible Markup Language, 可扩展标记语言)文件, 其中, XML 文件包括以下至少一个元素 : 模块名称、 模块编号 ID、 模块程序包存放的路径。 0034 可选的, 上述 xml 文件中也可以包含模块的名称。 0035 具体的, 可以在应用程序中添加 Module.xml 文件, 定义应用程序包含哪些模块以 及模块程序包所在的存储路径, 如下为 xml 文件中的部分代码 : 0036 0037 0038 0039 0040 说 明 书 CN 104461618 A 6 4/13 页 7 0041 这里需要说明的是, 在上述代码中可知, 模。

23、块代码 ID 为 2 的模块名字为 Report, Report 功能模块所对应的 XAP 程序包的存储路径是 ClientBin/Report.xap。 0042 可选的, 步骤 S16 中获取当前识别到的用户编号 ID 对应的模块程序包之后, 本实 施例提供的方法还可以包括 : 0043 步骤 S17, 在 XML 文件中获取当前识别到的用户编号 ID 对应的模块程序包的存放 路径, 并通过存放路径下载当前识别到的用户编号 ID 所对应的模块程序包。 0044 具体的, 结合上述 XML 代码, 在上述代码中可知, 模块代码 ID 为 1 的模块名字为 ECommerce, ECommer。

24、ce功能模块所对应的XAP程序包的存储路径是ClientBin/ECommerce. xap, 在本方案中, 可以通过上述 XML 文件, 可以下载到不同功能模块所对应的程序包。 0045 可选的, 步骤S17中通过存放路径下载当前识别到的用户编号ID所对应的模块程 序包的步骤还可以包括 : 0046 步骤 S171, 创建 WebClient( 网络代理类 ) 对象。 0047 步 骤 S172, 通 过 调 用 WebClient( 网 络 代 理 类 ) 对 象 中 的 异 步 读 取 方 法 (OpenReadAsync) 根据存放路径下载用户编号 ID 所对应的模块程序包。 0048。

25、 具 体 的, 在 创 建 上 述 WebClient( 网 络 代 理 类 ) 对 象 之 后, 可 以 调 用 上 述 WebClient(网络代理类)对象的异步读取方法(OpenReadAsync), 上述异步读取方法以xml 文件中的 XapPath 的值作为参数, 进而下载上述模块对应的 XAP 包。 0049 可 选 的,上 述 XAP 包 中 可 以 包 含 XAML(eXtensible Application Markup Language, 可扩展应用程序标记语言 ) 文件, 在一种可选的实施例中, 步骤 S18 中解析模块 程序包, 并将模块程序包加载至应用程序的步骤可以。

26、包括 : 0050 步骤S181, 解析XAML文件, 获取XAML文件中的目标程序集, 其中, 目标程序集用于 表征识别到的用户编号 ID 对应的模块程序。 0051 具体的, 在创建上述 WebClient( 网络代理类 ) 对象之后, 可以注册 WebClient( 网 络代理类 ) 对象中的 OpenReadCompleted 事件的处理函数, 当上述 XAP 下载完成后, 上述 OpenReadCompleted 事件会被触发, 则事件处理函数会被执行解析 XAML 文件即获取 XAP 包 中的 AppManifest.xaml 文件, 这个文件定义了 XAP 包接口以及包含的组件。。

27、如下是 xaml 文件的部分代码 : 0052 说 明 书 CN 104461618 A 7 5/13 页 8 0053 在本方案中, 可以解析上面的文件, 获取 Deployment 元素的 EntryPointAssembly 属性, 根据该属性在 Deployment.Parts 元素下的所有 AssemblyPart 元素中名称和 EntryPointAssembly 属性相同的 AssemblyPart 元素, 再使用上述找到的 AssemblyPart 元 素的 Source 属性指定的程序集, 上述程序集即上述目标程序集。 0054 步骤 S182, 从目标程序集查找预先定义的主。

28、页类。 0055 具体的, 可以在上述目标程序集中查找主页类 (MainPage)。 0056 步骤 S183, 在目标程序集中为主页类创建对象, 并将对象添加到应用程序中。 0057 具体的, 可以在上述目标程序集中创建主页类 (MainPage) 对象, 将该对象添加到 当前应用程序的某一个容器中。 这里需要说明的是, 具体添加到哪一个容器, 应用程序可以 根据自己的情况决定, 但是不管哪种情况都在本申请的保护范围之内。 0058 可选的, 步骤 S14, 根据当前识别到的用户编号 ID 从模块表中进行查询之前, 本实 施例提供的方法还可以包括 : 0059 步骤 S13, 根据用户的选择。

29、对模块表进行如下任意一种或多种操作 : 删除任意一 行模块的记录、 修改任意一行模块的记录、 添加一行模块的记录。 0060 具体的, 系统可以根据用户的选择从而对上述模块表进行删除、 修改或添加, 例 如, 用户可以通过触发应用程序界面的一个按钮来选择新的模块, 系统响应用户的操作从 而对模块表进行更新。用户下次在打开应用程序时, 可以根据模块表更新后的内容来下载 新的功能模块, 即实现了用户可以选择性的下载之前需要的功能模块。 0061 下面本申请在具体的应用场景下通过装置准备, 装置处理以及装置使用三个方面 展开描述 : 0062 装置准备 : 0063 1. 将应用程序的功能进行划分,。

30、 划分成多个模块, 每个模块完成相对独立的一类 功能。 比如分成报表模块、 电商模块。 每个模块必须包含主页类(MainPage), 这个类相当于 这个模块的主界面, 所有功能都在这个主界面中添加。 0064 2. 为每个模块开发一个 XAP 包, 之前整个应用程序一个 XAP 包。XAP 包其实就是 一个压缩包, 里面包含应用程序运行时需要的程序集和配置。用户下载 Silverlight 应用 程序时, 其实就是下载 XAP 包, 然后执行 XAP 包中的程序集。 说 明 书 CN 104461618 A 8 6/13 页 9 0065 3.在应用程序中添加Module.xml文件, 定义应。

31、用程序包含哪些模块。 如下所示的 例子 : 0066 0067 0068 4. 添加 Module 表, 该表定义每个用户需要加载的模块, 表的结构如下表 2。 0069 表 2 : 0070 ModuleIdModule 唯一编号 AccountId用户编号 0071 5. 定义 InstallModule 操作, 参数为 ModuleId、 AccountId, 为指定用户安装指定 Module, 该操作使用两个参数在 Module 表中添加一行记录。 0072 6. 定义 UninstallModule 操作, 参数为 ModuleId、 AccountId, 为指定用户卸载指 定 Mo。

32、dule, 该操作根据那两个参数在 Module 表中删除一行记录。 0073 7.定义GetAllModuleIds操作, 参数为AccountId, 获取指定用户需要加载的所有 模块编号。该操作根据 AccountId 从 Module 表中查找符合条件的所有记录。 0074 装置处理 : 0075 1. 添加安装模块功能, 用户登录后使用该功能安装模块。具体的, 调用 InstallModule 操作, 传递当前用户编号和安装的模块编号作为参数。 0076 2. 定义卸载模块功能, 用户登录后使用该功能卸载模块。具体的, 调用 UninstallModule 操作, 传递当前用户编号和安。

33、装的模块编号作为参数。 0077 装置使用 : 0078 1. 用户登录后, 调用 GetAllModules 操作, 传递当前用户的 AccountId 为参数, 获 取当前用户需要加载的模块编号。 0079 2. 对于每一个模块编号, 在 XML 文件找到对应的模块定义, 根据模块定义中的 XapPath 加载这个模块的 XAP 包, 具体逻辑如下 : 0080 2.1. 创建 WebClient( 网络代理类 ) 对象。 0081 2.2.注册WebClient(网络代理类)对象的OpenReadCompleted事件的处理函数。 0082 2.3. 调用 WebClient( 网络代理。

34、类 ) 对象的异步读取方法 (OpenReadAsync), 上述 异步读取方法以上述 xml 文件中的 XapPath 作为参数, 进而下载上述模块对应的 XAP 包。 0083 2.4. 当 XAP 下载完成后, OpenReadCompleted 事件会被触发, 2.2 步的事件处理函 数会被执行。 0084 2.5.在事件处理函数中, 读取XAP包, 获取XAP包中的AppManifest.xaml文件, 这 说 明 书 CN 104461618 A 9 7/13 页 10 个文件定义了 XAP 包接口以及包含的组件。如下是一个例子, 对原内容进行简化, 删除了不 必要内容 : 008。

35、5 0086 2.6.解析上面的文件, 获取Deployment元素的EntryPointAssembly属性, 根据该 属性在Deployment.Parts元素下的所有AssemblyPart元素中名称和EntryPointAssembly 属性相同的 AssemblyPart 元素。 0087 2.7.使用上述找到的AssemblyPart元素的Source属性指定的程序集,在这个程 序集中查找主页类 (MainPage)。 0088 2.8. 创建主页类 (MainPage) 对象, 将该对象添加到当前应用程序的某一个容器 中。 这里没有说明具体哪一个容器, 应用程序可以根据自己的情况。

36、决定, 不管哪种情况都应 该在本专利保护范围内。 0089 综上, 本发明可以实现如下技术效果 : 用户可以选择自己需要的功能, 只下载自己 需要的功能, 而且当需要使用其他功能时, 也非常简单, 只需要重新配置, 即系统管理员可 以根据用户的要求在上述模块表中增加、 删除或修改任一行模块的记录, 应用程序在下次 启动时, 系统会根据新的配置表重新为用户加载与其相对应的所有模块, 这样一来, 用户下 载应用程序的时间大大缩短了, 响应速度提高, 同时还不影响客户的使用, 同时本申请创新 点体现在安装模块和卸载模块的过程以及根据模块 XAP 包路径将模块功能加载应用程序 中的过程。 0090 实。

37、施例二 0091 本发明实施例还提供了一种加载模块的装置, 如图 2 所示, 该装置可以包括 : 0092 第一获取单元 22, 用于获取模块表, 其中, 模块表包括预先设置的模块编号 ID、 用 户编号 ID 以及模块编号 ID 与用户编号 ID 之间的对应关系。 0093 具体的, 应用程序可以有多个功能模块, 比如, 报表模块、 电商模块等, 模块表可以 定义不同用户需要加载的不同模块, 如表 3 所示。 0094 表 3 : 0095 说 明 书 CN 104461618 A 10 8/13 页 11 ModuleIdAccountId 01user001 02user001 03us。

38、er002 0096 在表3中, user001代表用户的编号ID即用户的账号, 01为模块的编号, 结合表1, 可以得知, 用户 user001 所需要加载的模块的编号为 01 和 02, 用户 user002 需要加载的模 块的编号为 03, 可选的, 上述模块表中的内容可以为系统管理员根据实际情况预先配置的。 0097 查询单元 24, 用于根据当前识别到的用户编号 ID 从模块表中进行查询, 获取到当 前识别到的用户编号 ID 所对应的模块编号 ID。 0098 具体的, 用户通过终端设备使用应用程序时, 本申请提供的方案可以识别到的用 户的编号, 在上述模块表中进行查询以获取用户编号。

39、所对应的模块的编号, 即获取当前识 别到的用户需要加载哪些模块, 结合上表 3, 以用户编号为 user001 为例, 用户 user001 在 打开应用程序时, 系统会自动识别用户 user001 的用户编号, 再到模块表中去查询用户 user001 需要加载的模块为 01 和 02 所对应的模块。 0099 第二获取单元 26, 用于获取当前识别到的用户编号 ID 对应的模块程序包。 0100 具体的, 可以为每个功能模块都开发一个程序包, 可选的, 上述程序包可以是 XAP 包, XAP 包为一个压缩包, 在压缩包里包含上述应用程序运行时需要的程序集和配置。 0101 解析单元 28, 。

40、用于解析模块程序包, 并将模块程序包加载至应用程序。 0102 具体的, 可以在将上述各个模块对应的XAP包进行解析后, 获取上述XAP包中的文 件, 将上述文件加载至应用程序。在一种可选的实施例当中, 用户下载 Silverlight 应用程 序时, 即下载 XAP 包, 然后执行 XAP 包中的程序集从而完成对各个功能模块的加载过程。这 里需要说明的是, 此时加载的模块程序包为上述用户编号所需要加载的功能模块所对应的 程序包, 而不是应用程序中所有的功能模块对应的程序包。 0103 本申请实施例首先获取模块表, 在上述模块表中获取用户编号 ID 所对应的模块 编号, 接着获取上述模块编号所。

41、对应的程序包, 接着解析上述程序包, 最后将模块对应的程 序加载至应用程序。解决了加载模块的方法中, 用户需将所有的功能模块其中包括用户不 需要的模块都加载到应用程序才能使用的问题, 实现了特定用户只需加载其需要的模块也 可以使用应用程序的效果。 0104 可选的, 如图 3 所示, 本发明实施例提供的装置还可以包括 : 0105 添加单元 20, 用于添加 XML 文件, 其中, XML 文件包括以下至少一个元素 : 模块名 称、 模块编号 ID、 模块程序包存放的路径。 0106 具体的, 可以在应用程序中添加 Module.xml 文件, 定义应用程序包含哪些模块以 及模块程序包所在的存。

42、储路径, 如下为 xml 文件中的部分代码 : 0107 说 明 书 CN 104461618 A 11 9/13 页 12 0108 这里需要说明的是, 在上述代码中可知, 模块代码 ID 为 2 的模块名字为 Report, Report 功能模块所对应的 XAP 程序包的存储路径是 ClientBin/Report.xap。 0109 可选的, 如图 4 所示, 上述第二获取单元 26 还可以包括 : 0110 下载模块 261, 用于在 XML 文件中获取当前识别到的用户编号 ID 对应的模块程序 包的存放路径, 并通过存放路径下载当前识别到的用户编号 ID 所对应的模块程序包。 01。

43、11 具体的, 结合上述 XML 代码, 在上述代码中可知, 模块代码 ID 为 1 的模块名字为 ECommerce, ECommerce功能模块所对应的XAP程序包的存储路径是ClientBin/ECommerce. xap, 在本方案中, 可以通过上述 XML 文件, 可以下载到不同功能模块所对应的程序包。 0112 可选的, 上述下载模块 261 还可以包括 : 0113 创建模块 2611, 用于创建 WebClient( 网络代理类 ) 对象。 0114 子下载模块2612, 用于通过调用WebClient(网络代理类)对象中的异步读取方法 (OpenReadAsync) 根据存放。

44、路径下载用户编号 ID 所对应的模块程序包。 0115 具 体 的, 在 创 建 上 述 WebClient( 网 络 代 理 类 ) 对 象 之 后, 可 以 调 用 上 述 WebClient( 网络代理类 ) 对象的异步读取方法 (OpenReadAsync), 上述异步读取方法以上 述 xml 文件中的 XapPath 作为参数, 进而下载上述模块对应的 XAP 包。 0116 可选的, 上述解析单元 28 还可以包括 : 0117 解析模块 281, 用于解析 XAML 文件, 获取 XAML 文件中的目标程序集, 其中, 目标程 序集用于表征识别到的用户编号 ID 对应的模块程序。。

45、 0118 具体的, 在创建上述 WebClient( 网络代理类 ) 对象之后, 可以注册 WebClient( 网 络代理类 ) 对象中的 OpenReadCompleted 事件的处理函数, 当上述 XAP 下载完成后, 上述 OpenReadCompleted 事件会被触发, 则事件处理函数会被执行解析 XAML 文件即获取 XAP 包 中的 AppManifest.xaml 文件, 这个文件定义了 XAP 包接口以及包含的组件。如下是 xaml 文件的部分代码 : 0119 说 明 书 CN 104461618 A 12 10/13 页 13 0120 在本方案中, 可以解析上面的文。

46、件, 获取 Deployment 元素的 EntryPointAssembly 属性, 根据该属性在 Deployment.Parts 元素下的所有 AssemblyPart 元素中名称和 EntryPointAssembly 属性相同的 AssemblyPart 元素, 再使用上述找到的 AssemblyPart 元 素的 Source 属性指定的程序集 , 上述程序集即上述目标程序集。 0121 查找模块 282, 用于从目标程序集查找预先定义的主页类。 0122 具体的, 可以在上述目标程序集中查找主页类 (MainPage)。 0123 添加模块 283, 用于在目标程序集中为主页类创。

47、建对象, 并将对象添加到应用程序 中。 0124 具体的, 可以在上述目标程序集中创建主页类 (MainPage) 对象, 将该对象添加到 当前应用程序的某一个容器中。 这里需要说明的是, 具体添加到哪一个容器, 应用程序可以 根据自己的情况决定, 但是不管哪种情况都在本申请的保护范围之内。 0125 可选的, 本发明实施例提供的装置还包括 : 0126 操作单元 30, 用于根据用户的选择对模块表进行如下任意一种或多种操作 : 删除 任意一行模块的记录、 修改任意一行模块的记录、 添加一行的记录。 0127 具体的, 系统可以根据用户的选择从而对上述模块表进行删除、 修改或添加, 例 如, 。

48、用户可以通过触发应用程序界面的一个按钮来选择新的模块, 系统响应用户的操作从 而对模块表进行更新。用户下次在打开应用程序时, 可以根据模块表更新后的内容来下载 新的功能模块, 即实现了用户可以选择性的下载之前需要的功能模块。 0128 下面本申请在具体的应用场景下通过装置准备, 装置处理以及装置使用三个方面 展开描述 : 0129 装置准备 : 0130 1. 将应用程序的功能进行划分, 划分成多个模块, 每个模块完成相对独立的一类 功能。 比如分成报表模块、 电商模块。 每个模块必须包含主页类(MainPage), 这个类相当于 这个模块的主界面, 所有功能都在这个主界面中添加。 0131 。

49、2. 为每个模块开发一个 XAP 包, 之前整个应用程序一个 XAP 包。XAP 包其实就是 一个压缩包, 里面包含应用程序运行时需要的程序集和配置。用户下载 Silverlight 应用 程序时, 其实就是下载 XAP 包, 然后执行 XAP 包中的程序集。 说 明 书 CN 104461618 A 13 11/13 页 14 0132 3.在应用程序中添加Module.xml文件, 定义应用程序包含哪些模块。 如下所示的 例子 : 0133 0134 4. 添加 Module 表, 该表定义每个用户需要加载的模块。结构如下表 4。 0135 表 4 : 0136 ModuleIdModule 唯一编号 AccountId用户编号 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1