[go: up one dir, main page]

CN108196900B - 组件的注册方法及装置 - Google Patents

组件的注册方法及装置 Download PDF

Info

Publication number
CN108196900B
CN108196900B CN201711296126.8A CN201711296126A CN108196900B CN 108196900 B CN108196900 B CN 108196900B CN 201711296126 A CN201711296126 A CN 201711296126A CN 108196900 B CN108196900 B CN 108196900B
Authority
CN
China
Prior art keywords
component
code
system process
registration
macro
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.)
Active
Application number
CN201711296126.8A
Other languages
English (en)
Other versions
CN108196900A (zh
Inventor
彭飞
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.)
Wuba Co Ltd
Original Assignee
Wuba Co 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 Wuba Co Ltd filed Critical Wuba Co Ltd
Priority to CN201711296126.8A priority Critical patent/CN108196900B/zh
Publication of CN108196900A publication Critical patent/CN108196900A/zh
Application granted granted Critical
Publication of CN108196900B publication Critical patent/CN108196900B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种组件的注册方法及装置。该方法包括:终端设备通过第一系统进程对组件的目标文件进行加载;当所述组件的目标文件被加载完成时,所述终端设备通过第二系统进程调用提供组件注册功能的应用程序接口API对所述组件进行注册。本发明避免了应用软件在组件调用之前显式的调用提供注册功能的API对组件进行注册的处理,实现了组件注册与组件调用的解耦。

Description

组件的注册方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种组件的注册方法及装置。
背景技术
组件是应用软件开发中一个重要的研究对象,通过对视图、数据、方法等进行封装,可以实现重用和解耦。
现有技术中,应用软件在使用组件之前,需要对组件进行注册。通常,通过在组件调用之前,显式的调用提供组件注册功能的应用程序编程接口(API,ApplicationProgramming Interface)完成组件的注册。例如,应用软件在页面加载程序的入口处调用API组件完成组件注册。
但是,存在组件注册与组件调用耦合较大的问题。
发明内容
本发明提供一种组件的注册方法及装置,用以解决现有技术中组件注册与组件调用耦合较大的问题。
第一方面,本发明提供一种组件的注册方法,包括:
终端设备通过第一系统进程对组件的目标文件进行加载;
当所述组件的目标文件被加载完成时,所述终端设备通过第二系统进程调用提供组件注册功能的应用程序接口API对所述组件进行注册;
其中,所述第一系统进程与所述第二系统进程为同一进程,或者,所述第一系统进程与所述第二系统进程为不同进程。
可选的,所述组件的目标文件包括:
通过所述API对所述组件进行注册的第一代码对应的二进制码,以及文件被加载完成时自动执行所述第一代码的第二代码对应的二进制码。
可选的,所述目标文件对应的源文件中包括组件注册宏,所述组件注册宏的宏定义中封装所述第一代码和所述第二代码。
第二方面,本发明提供一种组件的注册装置,包括:
加载模块,用于通过第一系统进程对组件的目标文件进行加载;
执行模块,用于当所述组件的目标文件被加载完成时,通过第二系统进程调用提供组件注册功能的应用程序接口API对所述组件进行注册;
其中,所述第一系统进程与所述第二系统进程为同一进程,或者,所述第一系统进程与所述第二系统进程为不同进程。
可选的,所述组件的目标文件包括:
通过所述API对所述组件进行注册的第一代码对应的二进制码,以及文件被加载完成时自动执行所述第一代码的第二代码对应的二进制码。
可选的,所述目标文件对应的源文件中包括组件注册宏,所述组件注册宏的宏定义中封装所述第一代码和所述第二代码。
本发明提供的组件的注册方法及装置,通过当组件的目标文件被加载完成时,终端设备通过第二系统进程调用提供组件注册功能的API对所述组件进行注册,避免了应用软件在组件调用之前显式的调用提供注册功能的API对组件进行注册的处理,实现了组件注册与组件调用的解耦。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明组件的注册方法实施例一的流程图;
图2为本发明组件的注册方法实施例三的流程图;
图3为本发明组件的注册装置实施例的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明组件的注册方法实施例一的流程图,本实施例的方法的执行主体可以为部署了操作系统的终端设备,例如可以为电脑、手机、平板电脑等。如图1所示,本实施例的方法可以包括:
步骤101、终端设备通过第一系统进程对组件的目标文件进行加载。
本步骤中,所述第一系统进程具体可以为部署在所述终端设备上的操作系统的系统进程。所述组件可以为应用软件中定义的组件。所述组件的目标文件可以为对组件的源文件进行编译之后获得的目标文件。
步骤102、当所述组件的目标文件被加载完成时,所述终端设备通过第二系统进程调用提供组件注册功能的应用程序接口API对所述组件进行注册。
本步骤中,所述第二系统进程具体可以为部署在所述终端设备上的操作系统的系统进程。所述第一系统进程和所述第二系统进程可以为同一进程,也可以为不同的进程。由于所述终端设备上所部署的操作系统通常会提供在目标文件被加载完成时自动执行的方法,例如基于Objective C语言实现的iOS操作系统提供的load方法,因此可以通过该方法由操作系统的第二系统进程自动调用提供组件注册功能的API对组件进行注册。
本实施例中,通过当组件的目标文件被加载完成时,终端设备通过第二系统进程调用提供组件注册功能的API对所述组件进行注册,避免了应用软件在组件调用之前显式的调用提供注册功能的API对组件进行注册的处理,实现了组件注册与组件调用的解耦。
组件的注册方法实施例二
可选的,在组件的注册方法实施例一的基础上,所述组件的目标文件包括:
通过所述API对所述组件进行注册的第一代码对应的二进制码,以及文件被加载完成时自动执行所述第一代码的第二代码对应的二进制码。其中,
其中,第一代码例如可以为:(void)RegisterModule{[ModuleFactory.sharedInstance registerModuleWithKey:moduleKeywithModuleClassName:moduleClassName]};
其中,RegisterModule为提供组件注册功能的API。
第二代码例如可以为:(void)load{RegisterModule(self);}
进一步可选的,所述目标文件对应的源文件中包括组件注册宏,所述组件注册宏的宏定义中封装了所述第一代码和所述第二代码。
其中,组件注册宏的宏定义例如可以为:
#define REGISTER_MODULE(moduleKey)\
+(void)registerModule{[ModuleFactory.sharedInstanceregisterModuleWithKey:moduleKey withModuleClassName:moduleClassName];}\
+(void)load{RegisterModule(self);}
其中,组件注册宏的宏名称为REGISTER_MODULE。这个宏中封装了第一代码和第二代码。
本实施例中,通过组件的目标文件中包括调用所述API对所述组件进行注册的第一代码对应的二进制码,以及文件被加载完成时自动执行所述第一代码的第二代码对应的二进制码,实现了当所述组件的目标文件被加载完成时,终端设备通过系统进程自动调用提供组件注册功能的API对所述组件进行注册。另外,通过组件的源文件中包括组件注册宏,所述组件注册宏的宏定义中封装了所述第一代码和所述第二代码,使得API有改动时,只需要修改组件注册宏的宏定义,简化了软件实现。
图2为本发明组件的注册方法实施例三的流程图,本实施例在方法实施例二的基础上,主要描述了软件开发至软件运行的整体流程。如图2所示,本实施例的方法可以包括:
步骤201、将组件注册代码封装成组件注册宏。
具体的,利用define语法,将第一代码和第二代码封装成组件注册宏。
例如,#define REGISTER_MODULE(moduleKey)\
+(void)registerModule{[ModuleFactory.sharedInstanceregisterModuleWithKey:moduleKey withModuleClassName:moduleClassName];}\
+(void)load{RegisterModule(self);}
步骤202、在组件处铺设预编译标记,并生成所述组件的源文件。
具体的,在组件处铺设组件注册宏对应的预编译标记。例如如下示例所示:
@interface WBAreaManager:NSObject
@end
@implementation RCTWBAreaManager
REGISTER_MODULE(WB_AREA);//此行编码为铺设的预编译标记
@end
以上代码是在WBAreaManager组件中对WBAreaManager组件进行注册,组件注册的API被封装在了宏里面。可以看出,在组件中没有任何组件注册API的相关代码,只有一处预编译宏指令。这样,组件注册与组件代码完全是松散耦合的。
步骤203、编译所述组件的源文件时进行宏替换,并生成所述组件的目标文件。
具体的,对所述组件的源文件进行编译时,编译器会将定义宏的地方都统一替换成相应的第一代码和第二代码。
步骤204、加载所述组件的目标文件,并在加载完成时对所述组件进行注册。
具体的,第一系统进程加载所述组件的目标文件,在所述组件的目标文件被加载完成时,第二系统进程自动执行对所述组件进行注册的代码。
本实施例中,通过利用define语法将组件注册代码封装成组件注册宏,在组件处铺设预编译标记并生成所述组件的源文件,编译所述组件的源文件时进行宏替换并生成所述组件的目标文件,加载所述组件的目标文件并在加载完成时对所述组件进行注册,避免了应用软件在组件调用之前显式的调用提供注册功能的API对组件进行注册的处理,实现了组件注册与组件调用的解耦。
图3为本发明组件的注册装置实施例的结构示意图,本实施例提供的装置可以应用于上述方法实施例中,实现其终端设备的功能。如图3所示,本实施例的装置可以包括:加载模块301和执行模块302。
其中,加载模块301,用于通过第一系统进程对组件的目标文件进行加载;
执行模块302,用于当所述组件的目标文件被加载完成时,通过第二系统进程调用提供组件注册功能的应用程序接口API对所述组件进行注册;
其中,所述第一系统进程与所述第二系统进程为同一进程,或者,所述第一系统进程与所述第二系统进程为不同进程。
可选的,所述组件的目标文件包括:
通过所述API对所述组件进行注册的第一代码对应的二进制码,以及文件被加载完成时自动执行所述第一代码的第二代码对应的二进制码。
可选的,所述目标文件对应的源文件中包括组件注册宏,所述组件注册宏的宏定义中封装所述第一代码和所述第二代码。
本实施例的装置,可以用于执行组件的注册方法实施例一、实施例二和实施例三的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (6)

1.一种组件的注册方法,其特征在于,包括:
将组件注册代码封装成组件注册宏;
在组件处铺设预编译标记,并生成所述组件的源文件;
编译所述组件的源文件时进行宏替换,并生成所述组件的目标文件;
终端设备通过第一系统进程对组件的目标文件进行加载;
当所述组件的目标文件被加载完成时,所述终端设备通过第二系统进程调用提供组件注册功能的应用程序接口API对所述组件进行注册;
其中,所述第一系统进程与所述第二系统进程为同一进程,或者,所述第一系统进程与所述第二系统进程为不同进程。
2.根据权利要求1所述的方法,其特征在于,所述组件的目标文件包括:
通过所述API对所述组件进行注册的第一代码对应的二进制码,以及文件被加载完成时自动执行所述第一代码的第二代码对应的二进制码。
3.根据权利要求2所述的方法,其特征在于,所述目标文件对应的源文件中包括组件注册宏,所述组件注册宏的宏定义中封装所述第一代码和所述第二代码。
4.一种组件的注册装置,其特征在于,包括:
加载模块,用于将组件注册代码封装成组件注册宏;在组件处铺设预编译标记,并生成所述组件的源文件;编译所述组件的源文件时进行宏替换,并生成所述组件的目标文件;用于通过第一系统进程对组件的目标文件进行加载;
执行模块,用于当所述组件的目标文件被加载完成时,通过第二系统进程调用提供组件注册功能的应用程序接口API对所述组件进行注册;
其中,所述第一系统进程与所述第二系统进程为同一进程,或者,所述第一系统进程与所述第二系统进程为不同进程。
5.根据权利要求4所述的装置,其特征在于,所述组件的目标文件包括:
通过所述API对所述组件进行注册的第一代码对应的二进制码,以及文件被加载完成时自动执行所述第一代码的第二代码对应的二进制码。
6.根据权利要求5所述的装置,其特征在于,所述目标文件对应的源文件中包括组件注册宏,所述组件注册宏的宏定义中封装所述第一代码和所述第二代码。
CN201711296126.8A 2017-12-08 2017-12-08 组件的注册方法及装置 Active CN108196900B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711296126.8A CN108196900B (zh) 2017-12-08 2017-12-08 组件的注册方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711296126.8A CN108196900B (zh) 2017-12-08 2017-12-08 组件的注册方法及装置

Publications (2)

Publication Number Publication Date
CN108196900A CN108196900A (zh) 2018-06-22
CN108196900B true CN108196900B (zh) 2021-11-09

Family

ID=62573705

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711296126.8A Active CN108196900B (zh) 2017-12-08 2017-12-08 组件的注册方法及装置

Country Status (1)

Country Link
CN (1) CN108196900B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101876898A (zh) * 2009-11-12 2010-11-03 北京东方网力科技有限公司 一种com组件的注册方法及装置
CN102007756A (zh) * 2008-04-24 2011-04-06 国际商业机器公司 用于数据处理环境中的动态供应的方法和装置
CN106126282A (zh) * 2016-06-20 2016-11-16 北京金山安全软件有限公司 一种动态链接库文件的注入方法、装置及终端设备
CN107291480A (zh) * 2017-08-15 2017-10-24 中国农业银行股份有限公司 一种函数调用方法及装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8204968B2 (en) * 2008-12-03 2012-06-19 At&T Mobility Ii Llc Registration notification for mobile device management
CN102073520A (zh) * 2010-12-30 2011-05-25 中国民航信息网络股份有限公司 一种c++应用程序版本动态管理系统和方法
JP5879920B2 (ja) * 2011-10-21 2016-03-08 株式会社リコー 画像処理装置、画像処理方法、及びプログラム
CN103336813B (zh) * 2013-06-27 2018-03-27 南京邮电大学 一种基于中间件架构的物联网数据集成管理方案
CN103605516B (zh) * 2013-11-12 2016-08-17 国家电网公司 柔性Web展现框架模型架构设计方法
CN103955364B (zh) * 2014-04-15 2017-06-20 南威软件股份有限公司 一种适用于手机的前端组件方法
CN104125275B (zh) * 2014-07-21 2017-08-25 浪潮电子信息产业股份有限公司 一种基于动态可扩展安全服务总线和引擎容器套件体系的安全服务系统
CN106155755B (zh) * 2015-06-03 2020-06-23 上海红神信息技术有限公司 程序编译方法和程序编译器
CN105205358B (zh) * 2015-09-21 2018-01-05 中科信息安全共性技术国家工程研究中心有限公司 一种识别Android APP加固的方法及检测方法
CN105763369B (zh) * 2016-02-04 2018-08-17 湖南长城信息金融设备有限责任公司 一种终端设备远程软件版本分发方法及系统
CN105809029B (zh) * 2016-03-03 2019-06-14 珠海豹趣科技有限公司 一种拦截驱动程序运行的方法及装置
CN106169046A (zh) * 2016-07-04 2016-11-30 北京金山安全软件有限公司 防止消息钩子注入的方法、装置和终端设备
CN107368317A (zh) * 2017-07-24 2017-11-21 无锡江南计算技术研究所 一种Web应用模块的复用和重载系统及方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102007756A (zh) * 2008-04-24 2011-04-06 国际商业机器公司 用于数据处理环境中的动态供应的方法和装置
CN101876898A (zh) * 2009-11-12 2010-11-03 北京东方网力科技有限公司 一种com组件的注册方法及装置
CN106126282A (zh) * 2016-06-20 2016-11-16 北京金山安全软件有限公司 一种动态链接库文件的注入方法、装置及终端设备
CN107291480A (zh) * 2017-08-15 2017-10-24 中国农业银行股份有限公司 一种函数调用方法及装置

Also Published As

Publication number Publication date
CN108196900A (zh) 2018-06-22

Similar Documents

Publication Publication Date Title
CN107943469B (zh) 一种智能合约的发布方法及装置
CN107045438B (zh) 一种应用顶层视图处理方法、装置及组件
CN110673853B (zh) 一种编译方法、装置及系统
US8756616B2 (en) System and method for reducing the static footprint of mixed-language JAVA classes
US8464230B2 (en) Methods and systems to implement non-ABI conforming features across unseen interfaces
EP3296906A1 (en) Method for protecting dex file from being decompiled in android system
CN103902859A (zh) 基于JAVA下hook技术的代码保护方法及系统
CN109933350B (zh) 在应用中嵌入代码的方法、装置及电子设备
CN104536737A (zh) 一种基于组件的程序开发框架
CN105159738A (zh) 一种热补丁实现方法及系统
CN101957766B (zh) 一种字节码织入方法、装置及系统
CN105975816A (zh) 移动终端下基于虚拟技术的代码保护方法及系统
CN106775781B (zh) 减小应用安装包的方法、装置及电子设备
CN104267981A (zh) 一种加载桌面上的应用布局的方法及装置
CN106775754A (zh) 应用的兼容性处理方法及装置
CN105094878B (zh) 一种集成系统库文件的方法和装置
CN105404794A (zh) Java应用软件的保护方法和装置
CN106598662B (zh) 基于android的应用加载方法及装置
CN105373411A (zh) 一种用于星载数字信号处理器的在轨编程系统及设计方法
CN103885784B (zh) 具有安全模块可插拔功能的Android平台构建方法
CN108196900B (zh) 组件的注册方法及装置
CN105005497A (zh) 一种Java卡虚拟机中本地函数的调用方法及装置
CN105373384B (zh) 一种软件开发方法和装置
CN104133669B (zh) 一种桌面应用的控制方法及终端设备
CN110413270A (zh) 一种dbus对象的通用创建方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant