一种基于反射机制的Http接口动态发布方法与系统的制作方法
【技术领域】
[0001]本发明属于互联网技术领域,具体涉及一种基于反射机制的Http接口动态发布方法与系统。
【背景技术】
[0002]http接口是主流的b/s架构的应用程序间的数据交互接口,基于http协议,使用xml或json做为数据交互格式,实现两个或多个独立系统间的数据交互,使用.netwebfrom的应用程序,一般的http接口实现方式如下图1所示;
这种http接口实现方式的缺点是:
1.接口地址与接口的具体实现藕合,新增、修改接口的实现不够灵活,对接口的管理控制不方便。
[0003]2.随着业务的发展及变更,接口需要做一些优化调整,经常泄及一些接口需要批量请求,这时需要对接口进行合并,现有的实现方式只能是新增一个新的接口,编写代码合并要合并的接口的逻辑,输出新的数据。
【发明内容】
[0004]为了克服上述技术问题,本发明的目的为了实现接口的动态发布,让接口的发布与修改可以通过配置而不是硬编码编译更新的方式进行,实现多个接口通过访问参数的组可即可实现合并,而不需要二次开发。
[0005]本发明采用的技术方案是:
一种基于反射机制的Http接口动态发布方法,包括以下步骤
A)为所有参与数据交换的目标接口定义统一的访问代理地址URL;
B)向访问代理地址URL提交目标接口的请求数据;
C)访问代理地址URL接到该请求,通过CMD命令到配置文件中查找对应该请求的具体实现类,并反射该具体实现类;
D)执行所反射该具体实现类,从具体实现程序集中获取该具体实现类的实现方法程序;
E)利用D中所述实现方法程序发布目标接口。
[0006]进一步,所述步骤C中配置文件中具体实现类具有相应的配置项,通过添加配置项并布署相应的具体实现程序集来增加或修改接口。
[0007]所述步骤B中一次提交多个目标接口请求。
[0008]本发明还包括与上述方法同一发明构思的技术方案,即一种基于反射机制的Http接口动态发布系统,包括
输入请求模块,供调用者提交目标接口的请求数据;
接口代理模块,该模块为所有参与数据交换的目标接口定义统一的访问代理地址URL,并负责:接收输入请求模块的请求,通过CMD命令到其配置文件中查找对应该请求的具体实现类,反射该具体实现类并执行,获取目标接口的具体实现方法程序,然后发布目标接Π ;
具体实现程序集模块,包括若干接口的具体实现程序集,用于提供接口代理模块所需的具体实现方法程序。
[0009]进一步,所述接口代理模块的配置文件中具体实现类具有相应的配置项,通过添加配置项并布署相应的具体实现程序集来增加或修改接口。
[0010]进一步,所述输入请求模块一次提交多个目标接口请求可由所述接口代理模块20合并多个目标接口。
[0011]本发明的有益效果是:
1、通过配置文件而不是硬编码来发布接口,解藕接口的Url地址与具体实现,比一般实现更灵活,不需要对原来代码做改动或重新编译,即可增量发布新接口,或修改原来接口的实现。
[0012]2、一般的方案,如果要请求多个接口,需要进行多次http请求,或改动程序,将多个接口合并成一个新的接口,这种方案不需要改动服务端代码即可实现一个http请求请求多个接口,请求方对请求参数采用组合的方式即可实现一次请求任意多个服务端接口,对接口的设计更灵活,更好扩展。
【附图说明】
[0013]下面结合附图对本发明的【具体实施方式】做进一步的说明。
[0014]图1是传统http接口动态实现方式的流程图;
图2是本发明基于反射机制的Http接口动态发布系统架构图。
【具体实施方式】
[0015]参考图2所示,为本发明的一种基于反射机制的Http接口动态发布方法,包括以下步骤
A)为所有参与数据交换的目标接口定义统一的访问代理地址URL;
B)向访问代理地址URL提交目标接口的请求数据;
C)访问代理地址URL接到该请求,通过CMD命令到配置文件中查找对应该请求的具体实现类,并反射该具体实现类;
D)执行所反射该具体实现类,从具体实现程序集中获取该具体实现类的实现方法程序;
E)利用D中所述实现方法程序发布目标接口。
[0016]本发明还包括与上述方法同一发明构思的技术方案,即一种基于反射机制的Http接口动态发布系统,包括
输入请求模块10,供调用者提交目标接口的请求数据;
接口代理模块20,该模块为所有参与数据交换的目标接口定义统一的访问代理地址URL,并负责:接收输入请求模块10的请求,通过CMD命令到其配置文件中查找对应该请求的具体实现类,反射该具体实现类并执行,获取目标接口的具体实现方法程序,然后发布目标接口 ; 具体实现程序集模块30,包括若干接口的具体实现程序集,用于提供接口代理模块20所需的具体实现方法程序。
[0017]为了更充分的理解本发明,特提供应用实例,如下:
所有接口提供统一的访问代理URL,如http://***/interface, ashx ;调用者通过get或post请求,
请求参数格式如下: request={
"CMD":GetName,
……Il具体内容 }
访问代理地址URL接到该请求,通过CMD到配置文件中查找对应的具体实现类,反射该类,配置文件如下:
<group>
<Operate CMD=//CheckPower^ Title="检测权限 〃ClassName="NengLong.CMP.HTTP Interface.Personage.WebHttp.CheckPower, NengLong.CMP.BaseHTTPInterface, Vers1n=2.0.0.0, Culture=neutral, PublicKeyToken=null〃>〈/Operate)
</group)
然后通过反射执行配置的方法,具体的实现方法可以来自不同的程序集,实现代理与实现的松藕合。
[0018]方法执行返回应答数据,如下:{
“CMD”:GetName“ResultState”:1
……Il应答内容 }
要增加或修改接口,只需要添加配置项,并布署相应的具体实现程序集即可,无需修改原来的程序集,并可以在代理中对请求者进行统一验证,对不同的请求者调用不同的实现方法,实现非常灵活的响应机制。
[0019]如果需要合并多个接口,不需要修改实现的代码,请求者只需要一次请求多个即可,请求参数如下:
request=[{
〃CMD〃: ” CheckPower’’,
……Il具体内容 },{
"CMDYGetName'
……Il具体内容 }]
就可以在同一个http请求中同时请求两个接口的数据,返回[{
“CMD”: ”CheckPower”
“ResultState”:1
……Il应答内容 },
{
“CMD”: “ GetName”
“ResultState”:1
……Il应答内容 }]
从而实现传统方法无法实现的批量请求方式。
[0020]本发明通过定义通用的接口输入输出协议,使用配置文件的形式配置要发布的接口,通过.net反射机制动态加载接口的具体实现,进行逻辑处理并返回结果集给调用者,实现了接口的动态添加、修改、删除,实现了模块化热拔插的发布方式,提高了可维护性,提高了系统的发布上线效率。
[0021]以上所述仅为本发明的优先实施方式,本发明并不限定于上述实施方式,只要以基本相同手段实现本发明目的的技术方案都属于本发明的保护范围之内。
【主权项】
1.一种基于反射机制的Http接口动态发布方法,其特征在于:包括以下步骤 A)为所有参与数据交换的目标接口定义统一的访问代理地址URL; B)向访问代理地址URL提交目标接口的请求数据; C)访问代理地址URL接到该请求,通过CMD命令到配置文件中查找对应该请求的具体实现类,并反射该具体实现类; D)执行所反射该具体实现类,从具体实现程序集中获取该具体实现类的实现方法程序; E)利用D中所述实现方法程序发布目标接口。
2.根据权利要求1所述的一种基于反射机制的Http接口动态发布方法,其特征在于:所述步骤C中配置文件中具体实现类具有相应的配置项,通过添加配置项并布署相应的具体实现程序集来增加或修改接口。
3.根据权利要求1所述的一种基于反射机制的Http接口动态发布方法,其特征在于:所述步骤B中一次提交多个目标接口请求。
4.一种基于反射机制的Http接口动态发布系统,其特征在于:包括 输入请求模块(10),供调用者提交目标接口的请求数据; 接口代理模块(20),该模块为所有参与数据交换的目标接口定义统一的访问代理地址URL,并负责:接收输入请求模块(10)的请求,通过CMD命令到其配置文件中查找对应该请求的具体实现类,反射该具体实现类并执行,获取目标接口的具体实现方法程序,然后发布目标接口 ; 具体实现程序集模块(30),包括若干接口的具体实现程序集,用于提供接口代理模块(20)所需的具体实现方法程序。
5.根据权利要求4所述的一种基于反射机制的Http接口动态发布系统,其特征在于:所述接口代理模块(20)的配置文件中具体实现类具有相应的配置项,通过添加配置项并布署相应的具体实现程序集来增加或修改接口。
6.根据权利要求4所述的一种基于反射机制的Http接口动态发布系统,其特征在于:所述输入请求模块(10) —次提交多个目标接口请求可由所述接口代理模块(20)合并多个目标接口。
【专利摘要】本发明公开了一种基于反射机制的Http接口动态发布方法与系统通过定义通用的接口输入输出协议,使用配置文件的形式配置要发布的接口,通过.net反射机制动态加载接口的具体实现,进行逻辑处理并返回结果集给调用者,实现了接口的动态添加、修改、删除,实现了模块化热拔插的发布方式,提高了可维护性,提高了系统的发布上线效率。
【IPC分类】H04L29-08
【公开号】CN104580501
【申请号】CN201510036679
【发明人】余敬龙
【申请人】广东能龙教育股份有限公司
【公开日】2015年4月29日
【申请日】2015年1月23日