首页> 中国专利> 基于代码文档对象模型、对象生成器动态生成类的方法

基于代码文档对象模型、对象生成器动态生成类的方法

摘要

本发明公开了一种基于代码文档对象模型、对象生成器生成动态类的方法:首先,判断使用方是否具有定制化契约;其次,当使用方具有定制化契约时,判断使用方是否具有动态类;最后,当使用方不具有动态类时,根据使用方的契约配置信息生成动态类,加载动态类,向使用方输出契约数据。本发明相比于现有技术,解决了现有技术中一份代码对应一份契约的问题,针对不同的使用方,设定了不同的定制化契约,因而可以定制化的输出不同的数据内容;极大的方便维护代码、也方便维护不同的使用方契约,降低了维护成本,提高了信息通讯效率。

著录项

  • 公开/公告号CN106708514A

    专利类型发明专利

  • 公开/公告日2017-05-24

    原文格式PDF

  • 申请/专利权人 携程旅游信息技术(上海)有限公司;

    申请/专利号CN201611093361.0

  • 发明设计人 宋有明;

    申请日2016-12-01

  • 分类号G06F9/44;G06F17/22;

  • 代理机构上海弼兴律师事务所;

  • 代理人薛琦

  • 地址 201203 上海市浦东新区张江高科技园区碧波路518号302室

  • 入库时间 2023-06-19 02:14:58

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-19

    授权

    授权

  • 2017-06-16

    实质审查的生效 IPC(主分类):G06F9/44 申请日:20161201

    实质审查的生效

  • 2017-05-24

    公开

    公开

说明书

技术领域

本发明涉及信息技术领域,具体涉及一种基于代码文档对象模型、对象生成器动态生成类的方法。

背景技术

随着科技的发展,不同国家之间的联系变得紧密、频繁,随之而来的国际业务也变得日益增长。然而,商业信息的保密性也变成了日益受到重视的问题。现有技术中利用IT(信息技术)技术进行的国际业务中,为了提高商业信息的保密水平,采用了多种技术方案;然而,目前考虑到代码的可维护性、复用性等的局限性,如果仅通过传统的代码判断方式为不同地区、不同国际的使用方提供相关信息时,针对每个国家或地区在每次使用时都需要改动代码进行发布,增加了代码操作时产生的工作量、并大大降低了信息的通讯效率。

发明内容

本发明的目的在于为了解决由于现有技术中代码的可维护性、复用性等的局限性,利用传统的代码判断方式能够灵活、方便地实现对多个不同的使用方输出不同的数据等问题的出现;提供一种基于代码文档对象模型、对象生成器动态生成类的方法。

为了达到上述目的,本发明通过以下技术方案实现:

一种基于代码文档对象模型、对象生成器生成动态类的方法,方法包含:

判断使用方是否具有定制化契约;所述定制化契约包含契约配置信息,所述契约配置信息是允许输出至所述使用方的数据类型明细;

当所述使用方具有所述定制化契约时,判断所述使用方是否具有动态类;

当所述使用方不具有所述动态类时,根据所述使用方的所述契约配置信息生成动态类,加载所述动态类,向所述使用方输出契约数据;所述契约数据为将所述使用方的使用方请求信息进行定制化过滤后的信息。

较佳地,在判断使用方是否具有定制化契约的步骤中:

获取所述使用方的应用接口访问密钥;

依据所述应用接口访问密钥查找所述使用方是否具有所述定制化契约。

较佳地,在当所述使用方具有所述定制化契约时,判断所述使用方是否具有动态类的步骤中:

依据所述使用方的所述应用接口访问密钥在发送方的程序集缓存中查找所述使用方是否存在所述动态类。

较佳地,在当所述使用方不包含所述动态类时,根据所述使用方的契约配置生成动态类,加载所述动态类,向所述使用方输出契约数据的步骤中:

从所述定制化契约中获取所述使用方的所述契约配置信息;

根据所述使用方的所述应用接口访问密钥、所述契约配置信息生成所述动态类;

将所述动态类加载至所述程序集,根据所述动态类与所述使用方请求信息生成所述契约数据发送至所述使用方。

较佳地,在判断使用方是否具有定制化契约的步骤之后,所述方法还包含:

当所述使用方不具有所述定制化契约时,向所述使用方输出完整的所述使用方请求信息。

较佳地,在判断所述使用方是否具有动态类的步骤之后,所述方法还包含:

当所述使用方具有所述动态类时,将所述动态类加载至所述程序集,根据所述动态类与所述使用方请求信息生成所述契约数据发送至所述使用方。

较佳地,在判断使用方是否具有定制化契约的步骤之前,所述方法还包含:

维护每个所述使用方的使用方配置表;所述使用方配置表包含:使用方身份信息、所述应用接口访问密钥、是否需要所述定制化契约、当需要所述定制化契约时具体要求的所述契约配置信息;

当所述使用方需要所述定制化契约时,根据所述使用方配置表,所述基于代码文档对象模型生成所述定制化契约。

较佳地,根据所述使用方的所述应用接口访问密钥、所述契约配置信息,采用所述对象生成器生成所述动态类。

在符合本领域常识的基础上,上述各优选条件,可任意组合,即得本发明各较佳实例。

本发明的积极进步效果在于:

本发明公开的一种基于代码文档对象模型、对象生成器生成动态类的方法:首先,判断使用方是否具有定制化契约;其次,当使用方具有定制化契约时,判断使用方是否具有动态类;最后,当使用方不具有动态类时,根据使用方的契约配置信息生成动态类,加载动态类,向使用方输出契约数据。本发明相比于现有技术,解决了现有技术中一份代码对应一份契约的问题,针对不同的使用方,设定了不同的定制化契约,因而可以定制化的输出不同的数据内容;极大的方便维护代码、也方便维护不同的使用方契约,降低了维护成本,提高了信息通讯效率。

附图说明

图1为本发明基于代码文档对象模型、对象生成器生成动态类的方法的整体流程示意图。

图2为本发明基于代码文档对象模型、对象生成器生成动态类的方法的实施例示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

如图1所示,一种基于代码文档对象模型、对象生成器生成动态类的方法包含:

S1,判断使用方是否具有定制化契约。其中,定制化契约包含契约配置信息,契约配置信息是允许输出至使用方的数据类型明细。

本实施例中,采用代码文档对象模型(CodeDom)生成定制化契约。

S2,当使用方具有定制化契约时,判断使用方是否具有动态类。

S3,当使用方不具有动态类时,根据使用方的契约配置信息生成动态类,加载动态类,向使用方输出契约数据。其中,契约数据为将使用方请求信息进行定制化过滤后的信息。

本实施例中,采用对象生成器(Emit)生成动态类。

本实施例公开的一种基于代码文档对象模型、对象生成器生成动态类的方法,首先,判断使用方是否具有定制化契约;其次,当使用方具有定制化契约时,判断使用方是否具有动态类;最后,当使用方不具有动态类时,根据使用方的契约配置信息生成动态类,加载动态类,向使用方输出契约数据。实现了对不同使用方设定不同的定制化契约,进而生成相应的动态类,最后为不同的使用方输出契约数据,提高了商业信息的保密性,并且提高了信息维护的效率、提高了信息通讯效率。

实施例2

如图2所示,一种基于代码文档对象模型、对象生成器生成动态类的方法包含:

S0,维护每个使用方的使用方配置表。

本实施例中,使用方配置表包含:使用方身份信息、应用接口访问密钥、是否需要定制化契约、当需要定制化契约时具体要求的契约配置信息。

当使用方需要定制化契约时,根据使用方配置表,基于代码文档对象模型(CodeDom)生成定制化契约。

本实施例中,具体CodeDom的操作代码如下:

本实施例中,首先利用线下维护配置模块对使用方的使用方身份信息、应用接口访问密钥以及当需要定制化契约时具体要求的契约配置信息进行维护。

其次,利用代码文档对象模型(CodeDom)为每个使用方生成对应的定制化契约。

S1,判断使用方是否具有定制化契约。步骤S1具体包含:

S1.1,发送方获取使用方的应用接口访问密钥(ApiKey)。

S1.2,依据应用接口访问密钥(ApiKey),发送方查找使用方是否具有定制化契约。

本实施例中,定制化契约包含契约配置信息,契约配置信息是允许输出至使用方的数据类型明细。例如,对于第一使用方,第一使用方的契约配置信息中允许输出A、B、C、D、E五个关键字段及其相关的信息;对于第二使用方,第二使用方的契约配置信息中允许输出A、B、C、D四个关键字段及其相关的信息;对于第三使用方,第三使用方的契约配置信息中仅允许输出B、C两个关键字段及其相关的信息。

S4,当使用方不具有定制化契约时,向使用方输出完整的使用方请求信息。

例如,当第四使用方中不具有定制化契约时,表明第四使用方能够接收所要求的所有信息;则发送方直接向第四使用方发送第四使用方请求的全部信息。

S2,当使用方具有定制化契约时,判断使用方是否具有动态类。步骤S2具体包含:

依据使用方的应用接口访问密钥在发送方的程序集缓存中查找使用方是否存在动态类。

S5,当使用方具有动态类时,加载动态类,根据动态类与使用方请求信息生成契约数据发送至使用方。本实施例中,契约数据为将使用方请求信息进行定制化过滤后的信息。

例如,当第三使用方请求信息包含字段A、B、C、D、E时,由于第三使用方的契约配置信息中仅允许输出B、C两个关键字段及其相关的信息,则最后输出至第三使用方的信息中,仅包含B、C两个关键字段及其相关的信息。

S3,当使用方不具有动态类时,根据使用方的契约配置信息生成动态类,加载动态类,向使用方输出契约数据;步骤S3具体包含:

S3.1,从定制化契约中获取使用方的契约配置信息。

S3.1,根据使用方的应用接口访问密钥、契约配置信息生成动态类。

S3.1,将动态类加载至程序集,根据动态类与使用方请求信息生成契约数据发送至使用方。

根据使用方的应用接口访问密钥、契约配置信息,采用对象生成器(Emit)生成动态类。

本实施例中,将使用方的契约配置信息读取到一个List中,采用子嵌套类型符号进行分隔;根据使用方的ApiKey来定义命名空间(Namespace);循环List,当含有子嵌套类型符号时创建嵌套类和属性,创建好字段(Field)和属性(Property)后,创建好类(Type),并通过Emit生成动态类。

本实施例中,具体Emit的操作代码如下:

上述实施例进行了相关的实际性能测试,通过执行10000次动态类生产和定制化数据的输出,仅耗时1-3ms,相比于现有技术,降低了运行时间,提高了运行效率。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号