CN107493336A - 实现客户端插件化的方法和装置、可读介质和存储控制器 - Google Patents
实现客户端插件化的方法和装置、可读介质和存储控制器 Download PDFInfo
- Publication number
- CN107493336A CN107493336A CN201710719124.9A CN201710719124A CN107493336A CN 107493336 A CN107493336 A CN 107493336A CN 201710719124 A CN201710719124 A CN 201710719124A CN 107493336 A CN107493336 A CN 107493336A
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- client
- main body
- instruction
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
Abstract
本发明公开了一种实现客户端插件化的方法和装置、可读介质和存储控制器,该方法包括:将每个插件编译成的插件动态库存储到指定地址,以使在启动客户端时,客户端主体动态加载指定地址中的插件动态库;通过插件动态库提供的接口与客户端主体之间进行双向数据通信;在客户端主体获取消息队列中的消息指令之前,对于每个插件均执行:判断是否执行当前消息指令,若是,则截获当前消息指令并执行当前消息指令;否则,不截获当前消息指令,使客户端主体继续获取并执行当前消息指令。客户端能够方便的加载或者卸载插件,进而能够方便的增加和减少用户的定制功能。不需要增加客户端的分支,降低了客户端的维护难度,同时可以减少客户端的程序体积。
Description
技术领域
本发明涉及通讯技术领域,特别涉及一种实现客户端插件化的方法和装置、一种可读介质和存储控制器。
背景技术
在当前基于互联网技术的即时通信工具普及范围极广,拥有大量的用户群体。而客户端是实现即时通信的一种常用工具。针对广大用户客户端一般都包含一些主要功能,比如登陆、和好友发送消息、创建群、邀请好友等,这些功能构成了客户端主体。但是还有一些功能只有少部分用户会使用,比如组织机构,或者客户的一些定制功能,这些功能构成了客户端的插件。
客户端有一个主体和很多插件,每一个插件代表不同的功能,用户需要使用哪个功能就加载对应的插件。使用插件可以减少客户端的体积,只保留用户需要的功能,并且能够方便的满足用户的定制需求。
针对不同用户的定制功能,现在一般有两种做法:第一种:增加客户端分支,每个分支对应一个客户;第二种:将所有功能都加入客户端的主体。采用第一种方法会导致客户端分支过多,难以维护,而采用第二种方法会导致客户端体积过大,定制效果较低,附带了很多用户不使用的功能。
发明内容
本发明实施例提供了一种实现客户端插件化的方法和装置、一种可读介质和存储控制器,能够有效的减小客户端的体积,方便增加用户的定制功能并且不会附带用户不使用的功能。同时,也解决了客户端分支过多的问题,降低了维护难度。
第一方面,本发明实施例提供了一种实现客户端插件化的方法,该方法包括:
S1:将每个插件编译成的插件动态库存储到指定地址,以使在启动客户端时,客户端主体动态加载指定地址中的插件动态库;
S2:通过插件动态库提供的接口与客户端主体之间进行双向数据通信;
S3:在客户端主体获取消息队列中的消息指令之前,对于每个插件均执行下述判断:判断是否执行当前消息指令,若是,则截获当前消息指令并执行当前消息指令;否则,不截获当前消息指令,使客户端主体继续获取并执行当前消息指令。
优选地,步骤S2的具体过程包括:
通过插件动态库提供接口,使客户端主体通过该接口获取插件的对象并根据插件的对象调用该插件;
当客户端主体通过插件的对象将自身的对象传入插件时,根据客户端主体的对象调用该客户端主体。
优选地,在步骤S2之后,进一步包括:给客户端主体发送插件消息指令,使客户端主体执行该插件消息指令。
第二方面,本发明实施例提供了一种实现客户端插件化的装置,该装置包括:存储单元、通信单元和截获判断单元,其中,
存储单元,用于将每个插件编译成的插件动态库存储到指定地址,以使在启动客户端时,客户端主体动态加载指定地址中的插件动态库;
通信单元,用于通过插件动态库提供的接口与客户端主体之间进行双向数据通信;
截获判断单元,用于判断是否执行当前消息指令,若是,则截获当前消息指令并执行当前消息指令;否则,不截获当前消息指令,使客户端主体继续获取并执行当前消息指令。
优选地,通信单元,具体用于通过插件动态库提供接口,使客户端主体通过该接口获取插件的对象并根据插件的对象调用该插件;以及当客户端主体通过插件的对象将自身的对象传入插件时,根据客户端主体的对象调用该客户端主体。
优选地,该装置进一步包括:指令发送单元,用于给客户端主体发送插件消息指令,使客户端主体执行该插件消息指令。
第三方面,本发明实施例提供了一种可读介质,该可读介质包括:执行指令,当存储控制器的处理器执行所述执行指令时,存储控制器执行第一方面中任一所述的实现客户端插件化的方法。
第四方面,本发明实施例提供了一种存储控制器,该存储控制器包括:处理器、存储器和总线;处理器和存储器通过总线连接;
当存储控制器运行时,处理器执行存储器存储的执行指令,以使存储控制器执行第一方面中任一所述的实现客户端插件化的方法。
与现有技术相比,本发明至少具有以下有益效果:
1.启动客户端时,客户端可以动态加载指定地址中的插件动态库,而不会加载其他地址中的插件动态库,在不需要加载某个插件动态库时只需要将该插件动态库从该指定地址中移除即可。从而客户端能够方便的加载或者卸载插件,进而能够方便的增加和减少用户的定制功能。
2.不需要增加客户端的分支,降低了客户端的维护难度,同时可以减少客户端的程序体积,不会附带很多用户不使用的功能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种实现客户端插件化的方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种实现客户端插件化的方法,该方法包括:
将每个插件编译成的插件动态库存储到指定地址,以使在启动客户端时,客户端主体动态加载指定地址中的插件动态库。
在该实施例中,在本地程序目录下建立一个文件夹plugins,将每一个插件编译成动态库放入这个文件夹里,启动客户端时遍历plugins下面的文件,从而动态加载插件动态库。
通过插件动态库提供的接口与客户端主体之间进行双向数据通信。
在该实施例中,插件和客户端主体的数据通信,一方面是客户端主体调用插件,通常插件会通过创建自己本身的对象导出插件的方法;客户端主体成功加载插件动态库后,客户端主体通过插件动态库中的接口获取创建的对象,从而客户端主体就可以通过创建的这个对象调用插件中的方法。另一方面是插件调用客户端主体,客户端主体能够通过插件的对象将自身的对象传入插件,也就是说将客户端主体注册进插件中,此时插件便可以通过客户端的对象调用客户端主体。
在客户端主体获取消息队列中的消息指令之前,对于每个插件均执行:
判断是否执行当前消息指令,若是,则截获当前消息指令并执行当前消息指令;否则,不截获当前消息指令,使客户端主体继续获取并执行当前消息指令。
在该实施例中,客户端运行过程中,消息指令会先进入客户端主体的消息队列中等待执行,在客户端主体去消息队列中获取消息指令之前,插件会先决定是否截获消息队列中的消息指令,也就是说由插件决定消息指令是在客户端主体中执行还是在插件中执行。对于一个消息指令每个插件都可以选择截获或者不截获。对于一个消息指令的截获依据可以是判断该消息指令是否属于该插件,比如有A插件代表组织机构模块,定义消息指令号1,2,3代表组织机构的三个功能,那么消息指令号4就不会被A插件截获,而遇到消息指令号2就会被A插件截获。同时,对于同一个消息指令,某个插件截获或者不截获,并不影响其他插件截获或者不截获,每个插件都是独立的。例如:消息指令a被A插件截获,而只要符合截获条件消息指令a同时也可以被B插件、C插件等截获。消息指令被任意一个插件截获,根据实际情况客户端主体不会再执行或者客户端主体会依旧执行。
为了确保插件运行的稳定性,在本发明一个实施例中,插件可以主动给客户端主体发送插件消息指令,使客户端主体执行该插件消息指令。
本发明实施例提供了一种实现客户端插件化的装置,该装置包括:存储单元、通信单元和截获判断单元,其中,
存储单元,用于将每个插件编译成的插件动态库存储到指定地址,以使在启动客户端时,客户端主体动态加载指定地址中的插件动态库;
通信单元,用于通过插件动态库提供的接口与客户端主体之间进行双向数据通信;
截获判断单元,用于判断是否执行当前消息指令,若是,则截获当前消息指令并执行当前消息指令;否则,不截获当前消息指令,使客户端主体继续获取并执行当前消息指令。
在本发明一个实施例中,通信单元,具体用于通过插件动态库提供接口,使客户端主体通过该接口获取插件的对象并根据插件的对象调用该插件;以及当客户端主体通过插件的对象将自身的对象传入插件时,根据客户端主体的对象调用该客户端主体。
在本发明一个实施例中,该装置进一步包括:返回判断单元,用于判断当前消息指令是否要在客户端主体中继续执行,若是,将当前消息指令发送给客户端主体;否则,不需要将当前消息指令发送给客户端主体。
在本发明一个实施例中,该装置进一步包括:该装置进一步包括:指令发送单元,用于给客户端主体发送插件消息指令,使客户端主体执行该插件消息指令。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例提供了一种可读介质,该可读介质包括:执行指令,当存储控制器的处理器执行所述执行指令时,存储控制器执行上述任一实施例所述的实现客户端插件化的方法。
本发明实施例提供了一种存储控制器,该存储控制器包括:处理器、存储器和总线;处理器和存储器通过总线连接;
当存储控制器运行时,处理器执行存储器存储的执行指令,以使存储控制器执行上述任一实施例所述的实现客户端插件化的方法。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种实现客户端插件化的方法,其特征在于,该方法包括:
S1、将每个插件编译成的插件动态库并存储到指定地址,以使在启动客户端时,客户端主体动态加载指定地址中的插件动态库;
S2、通过插件动态库提供的接口与客户端主体之间进行双向数据通信;
S3、在客户端主体获取消息队列中的消息指令之前,对于每个插件均执行下述判断:判断是否执行当前消息指令,若是,则截获当前消息指令并执行当前消息指令;否则,不截获当前消息指令,使客户端主体继续获取并执行当前消息指令。
2.根据权利要求1所述的客户端插件化的实现方法,其特征在于,步骤S2的具体过程包括:
通过插件动态库提供接口,使客户端主体通过该接口获取插件的对象并根据插件的对象调用该插件;
当客户端主体通过插件的对象将自身的对象传入插件时,根据客户端主体的对象调用该客户端主体。
3.根据权利要求1所述的客户端插件化的实现方法,其特征在于,在步骤S2之后,进一步包括:给客户端主体发送插件消息指令,使客户端主体执行该插件消息指令。
4.一种实现客户端插件化的装置,其特征在于,该装置包括:存储单元、通信单元和截获判断单元,其中,
存储单元,用于将每个插件编译成的插件动态库并存储到指定地址,以使在启动客户端时,客户端主体动态加载指定地址中的插件动态库;
通信单元,用于通过插件动态库提供的接口与客户端主体之间进行双向数据通信;
截获判断单元,用于判断是否执行当前消息指令,若是,则截获当前消息指令并执行当前消息指令;否则,不截获当前消息指令,使客户端主体继续获取并执行当前消息指令。
5.根据权利要求4所述的实现客户端插件化的装置,其特征在于,通信单元,具体用于通过插件动态库提供接口,使客户端主体通过该接口获取插件的对象并根据插件的对象调用该插件;以及当客户端主体通过插件的对象将自身的对象传入插件时,根据客户端主体的对象调用该客户端主体。
6.根据权利要求4所述的实现客户端插件化的装置,其特征在于,该装置进一步包括:指令发送单元,用于给客户端主体发送插件消息指令,使客户端主体执行该插件消息指令。
7.一种可读介质,其特征在于,该可读介质包括:执行指令,当存储控制器的处理器执行所述执行指令时,存储控制器执行权利要求1至3中任一所述的实现客户端插件化的方法。
8.一种存储控制器,其特征在于,该存储控制器包括:处理器、存储器和总线;处理器和存储器通过总线连接;
当存储控制器运行时,处理器执行存储器存储的执行指令,以使存储控制器执行权利要求1至3中任一所述的实现客户端插件化的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710719124.9A CN107493336A (zh) | 2017-08-21 | 2017-08-21 | 实现客户端插件化的方法和装置、可读介质和存储控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710719124.9A CN107493336A (zh) | 2017-08-21 | 2017-08-21 | 实现客户端插件化的方法和装置、可读介质和存储控制器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107493336A true CN107493336A (zh) | 2017-12-19 |
Family
ID=60645564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710719124.9A Pending CN107493336A (zh) | 2017-08-21 | 2017-08-21 | 实现客户端插件化的方法和装置、可读介质和存储控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107493336A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109286558A (zh) * | 2018-10-09 | 2019-01-29 | 武汉斗鱼网络科技有限公司 | 消息分发方法、装置、电子设备及存储介质 |
CN110297671A (zh) * | 2019-05-22 | 2019-10-01 | 深圳壹账通智能科技有限公司 | 客户端插件化实现方法、装置、计算机设备及存储介质 |
CN112433780A (zh) * | 2020-11-16 | 2021-03-02 | 航天信息股份有限公司 | 客户端插件化方法方法、装置、电子设备及存储介质 |
CN113419760A (zh) * | 2021-06-24 | 2021-09-21 | 广联达科技股份有限公司 | 打开/保存工程文件的方法、装置、计算机设备和介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294372A1 (en) * | 2005-06-24 | 2006-12-28 | Microsoft Corporation | Securely providing extensible third-party plug-ins |
CN102253840A (zh) * | 2011-08-04 | 2011-11-23 | 深圳芯智汇科技有限公司 | 插件管理方法及插件管理器 |
CN102520967A (zh) * | 2011-12-28 | 2012-06-27 | 深圳市融创天下科技股份有限公司 | 一种创建与使用移动平台插件的方法、系统和移动终端 |
CN102591724A (zh) * | 2011-12-28 | 2012-07-18 | 奇智软件(北京)有限公司 | 消息交互方法及装置 |
CN103064738A (zh) * | 2013-01-15 | 2013-04-24 | 珠海金山办公软件有限公司 | Linux下本地应用程序窗体嵌入浏览器的方法及系统 |
CN105893094A (zh) * | 2016-03-31 | 2016-08-24 | 百度在线网络技术(北京)有限公司 | 应用程序插件化的实现方法和装置 |
-
2017
- 2017-08-21 CN CN201710719124.9A patent/CN107493336A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294372A1 (en) * | 2005-06-24 | 2006-12-28 | Microsoft Corporation | Securely providing extensible third-party plug-ins |
CN102253840A (zh) * | 2011-08-04 | 2011-11-23 | 深圳芯智汇科技有限公司 | 插件管理方法及插件管理器 |
CN102520967A (zh) * | 2011-12-28 | 2012-06-27 | 深圳市融创天下科技股份有限公司 | 一种创建与使用移动平台插件的方法、系统和移动终端 |
CN102591724A (zh) * | 2011-12-28 | 2012-07-18 | 奇智软件(北京)有限公司 | 消息交互方法及装置 |
CN103064738A (zh) * | 2013-01-15 | 2013-04-24 | 珠海金山办公软件有限公司 | Linux下本地应用程序窗体嵌入浏览器的方法及系统 |
CN105893094A (zh) * | 2016-03-31 | 2016-08-24 | 百度在线网络技术(北京)有限公司 | 应用程序插件化的实现方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109286558A (zh) * | 2018-10-09 | 2019-01-29 | 武汉斗鱼网络科技有限公司 | 消息分发方法、装置、电子设备及存储介质 |
CN110297671A (zh) * | 2019-05-22 | 2019-10-01 | 深圳壹账通智能科技有限公司 | 客户端插件化实现方法、装置、计算机设备及存储介质 |
CN112433780A (zh) * | 2020-11-16 | 2021-03-02 | 航天信息股份有限公司 | 客户端插件化方法方法、装置、电子设备及存储介质 |
CN113419760A (zh) * | 2021-06-24 | 2021-09-21 | 广联达科技股份有限公司 | 打开/保存工程文件的方法、装置、计算机设备和介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107493336A (zh) | 实现客户端插件化的方法和装置、可读介质和存储控制器 | |
CN104021034B (zh) | 任务处理方法及系统 | |
KR20140010988A (ko) | 이미지 편집 작업을 공유하는 방법, 공유 플랫폼 및 시스템 | |
CN106412861B (zh) | 一种短信分发方法及系统 | |
CN106339217B (zh) | 基于Unity的事件管理方法及系统 | |
CN106302632A (zh) | 一种基础镜像的下载方法以及管理节点 | |
CN102118508A (zh) | 一种终端情景模式切换方法及终端 | |
CN109451020A (zh) | 超时管理方法、设备及计算机可读存储介质 | |
CN109785042A (zh) | 分布式部署的异常处理方法、服务器、存储介质及装置 | |
CN102325214A (zh) | 通讯方法及终端 | |
CN103916526B (zh) | 联系人信息处理方法、装置及移动终端 | |
CN106161189A (zh) | 即时通信的离线通信方法及装置 | |
CN105847427A (zh) | 呼叫中心的话务分配系统及方法 | |
CN106230699A (zh) | 一种通过邮件发起讨论沟通的方法及系统 | |
CN107368326A (zh) | 进程控制方法和装置 | |
CN106131134A (zh) | 一种消息内容合并去重方法及系统 | |
CN107391281A (zh) | 一种服务器的数据处理方法、装置和存储介质 | |
CN105159503B (zh) | 一种移动终端触摸屏驱动加载的控制方法及系统 | |
CN104053252B (zh) | 一种at指令处理方法、装置及系统 | |
CN107909360A (zh) | 一种线上、线下商城的移动支付系统及方法 | |
CN109101154A (zh) | 一种移动终端文件存储方法、存储系统和移动终端 | |
CN110389789A (zh) | 一种应用程序控制方法、设备及计算机可读存储介质 | |
CN104519062A (zh) | 一种创建多对socket端口连接的方法及系统 | |
CN205644729U (zh) | 基于短信平台的排队叫号系统 | |
CN104239049A (zh) | 一种在文本编辑框中处理图片的方法及系统 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171219 |