63

谈ESB服务总线的改进-服务模拟(7.19)

 5 years ago
source link: http://blog.sina.com.cn/s/blog_493a84550102xl3q.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在几年前做SOA项目的时候,当时为了实现服务提供方和消费方的并行开发进度,有考虑实现一个类似服务模拟器的东西。即在消费端代码开发完成后,即使服务提供端服务没有部署出来,也可以进行服务模拟。

当时整个实现思路很简单,即通过自己编写映射文件来完成。

对于查询类服务,简单来说就是需要基于查询条件,从数据库中查询出相关的数据集并返回,因此我们需要编写一个带参数条件的Sql语句去查询数据库表,同时将Sql语句的返回字段和我们的WSDL文件属性进行映射。对于导入类服务,则正好相反,我们需要将实际输入的消息内容映射到我们自定义Insert语句上面。

对于我们的ESB总线,实际上完全可以将当时独立的服务模拟器能力集成进来。但是不是类似于几年前做的模拟器可以直接访问数据库返回相应的数据,或者将数据导入到数据库中。ESB总线的服务模拟器核心目的就是确保在提供方没有提供地址接入的时候,该服务能够发布出去并有模拟数据返回即可。

对于SOAP WS类服务,由于前期已经很明确的知道了WSDL结构,因此我们很容易发布一个空服务出去。即直接发布一个空的代理服务,这个代理服务本身并可能并没有对接和路由到目标业务系统的业务服务。而是直接将代理服务统一路由到我们的拦截组件上面进行服务返回模拟。

该拦截组件的返回实际上也很简单,即基于WSDL文件结构来组织相应的报文返回,只需要返回一个完整的满足WSDL结构的XML输出即可。对于字符串和数字我们都可以返回1,对于日期可以返回当前时间等。确保返回的结构是正常的即可。

这样消费端在提供端服务每准备好的情况下,也可以提前开始进行接口开发和联通性测试,以确保自己消费端的代码是OK的。也就是在这种场景下面,消费方不用针对每个服务都自己编写模拟的Stub桩测试代码,可以极大的减少消费端对服务进行测试的时候测试代码的编写工作量。

当然对于日常我们在开发消费端的时候,如果不想写Stub测试桩代码,那么SoapUI提供了服务端模拟的功能,即你可以创建对应的MockService来模拟服务提供端。具体可参考:

https://blog.csdn.net/wjcaolinghua/article/details/38655325

对于服务挡板,完全也可以设计为一个类似业务服务的组件,即直接挡板返回,根据WSDL规则进行配置和模拟,而不需要再额外配置外部的业务服务。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK