服务模拟-ServiceMock
2019独角兽企业重金招聘Python工程师标准>>>
在软件开发过程中,经常会有如下情况发生:
- 界面开发人员要开发界面,但是要使用的服务还没有开发好,这个时候,要么只能开发一半,要么就只能等服务开发好之后再继续进行开发,无论是哪一种情况,都会导致影响开发进度。
- 与第三方对接的时候,由于各种原因,无法在本地构建第三方测试环境,只能到客户现场进行开发和测试,这会导致出差成本增加,开发人员满意度下降等情况的发生。
- 做一个Demo系统,如果是全部做静态页面,与客户沟通讲解的时候,总是讲起来不够真实,如果全部采用真实实现,会导致Demo系统构建成本太高。
Tiny框架为了避免上述问题,增加了ServiceMock工程,顾名思义就是Mock一个服务,它的访问接口和真实的完全一致,但是内部的实现却是虚假的,这样就可以比较好的解决上面的问题:
- 对于并行开发来说,只要先花一点时间简单做个MockService,界面开发人员就可以完全按照真实的方式进行开发、测试了,绝大多数的情况都可以满足展现和控制层的开发要求。
- 对于与第三方对接的情况,只要先做好与对应的第三方所有接口的MockService,就可以完全在本地进行开发与测试,最后只要到现场做集成测试即可。
- 做出来的系统完全可以做得更真实,比如:做个HelloWorld服务,比如在输入框中输入的是”abc“,展现出的效果是”Hello,abc“的效果比”Hello,World“的效果好得多,同时又不用花太多的工作量。
下面就用一个具体的例子来进行说明:
编写下面的Xml文件:
<mock-service><mock-service-info service-id="helloworld" ><parameters><parameter name="name" type="java.lang.String" required="true" is-array="false"></parameter></parameters><results><parameter name="result" required="false" is-array="false" type="java.lang.String"></parameter></results></mock-service-info><result-templates><result-template result-key="result"><template><![CDATA[ <string>hello,${name}!<string>]]></template></result-template></result-templates>
</mock-service>
它的意思是:mock的ServiceId是helloworld
有一个入参,是字符类型,名字叫:name,有一个出参,也是字符类型,名字是result
在后面定义了出差是result的结果,它实际是一段模板,这段模板采用了TinyTemplate模板引擎来解释执行,上面的意思是用输入的参数name的值来替换${name}这个占位符,所以这个服务就可以直接执行,并且会根据输入name的值的不同,而返回对应的值,比如:参数name的值是abc,那么返回的值就是hello,abc!
实际上,它也可以做复杂一点的场景:
<mock-service><mock-service-info service-id="plus" ><parameters><parameter name="a" type="java.lang.Integer" required="true" is-array="false"></parameter> </parameters><parameter name="b" type="java.lang.Integer" required="true" is-array="false"></parameter> </parameters><results><parameter name="result" type="java.lang.Integer" required="true" is-array="false"></parameter> </parameters></results></mock-service-info><result-templates><result-template result-key="result"><template><![CDATA[ <integer>${a+b}<integer>]]></template></result-template></result-templates>
</mock-service>
上面的这个MockService实现是可以真正完成加法运算的服务。
实际上,我们Mock出来的Service是真正的Service,它可以通过Json,Xml,WebService,等各种方式进行访问,实际上,对于调用者来说,它就是真正的Service,之所以我们Mock出来的Service可以骗过所有的使用者,是因为我们做了一个专门的服务加载器,把所有的MockService相关的信息读出来,并在服务框架进行注册,真正调用的时候,用调用MockServiceManager来进行真正的执行,执行过程就是读取这段模板并执行出结果之后,把结果返回。
后续,我们做对应的工具来编写这个Xml,那样做起来就更方便了。
转载于:https://my.oschina.net/tinyframework/blog/309878
服务模拟-ServiceMock相关推荐
- 基于Spring的AOP地铁乘坐服务模拟实验
一.实验目的和要求: 1.实验目的 1.掌握Spring框架的搭建过程: 2.掌握IoC.DI及其Bean的装配方式: 3.掌握AOP的相关概念及其编程思想实现: 4.掌握基于XML配置及注解方式的声 ...
- Android 中 利用 AccessibilityService 辅助服务 模拟点击事件
在 Android 中想要执行一些模拟点击操作,在无法修改页面源码的情况下,通常只能使用 adb 和借助辅助功能两种方式. Adb 方式 借助 adb shell 的命令,我们可以使用下面的方式模拟一 ...
- aws云服务模拟应用localstack
地址:https://github.com/localstack/localstack 1.简介 LocalStack为开发云应用程序提供了易于使用的测试/模拟框架. 当前,重点主要放在支持AWS云堆 ...
- 京东抢购服务高并发实践
为什么80%的码农都做不了架构师?>>> 服务介绍 限时抢购又称闪购,英文Flash sale,起源于法国网站Vente Privée.闪购模式即是以互联网为媒介的B2C电子零售交易 ...
- 微服务设计原则和解决方案
一.微服务架构演进过程 近年来我们大家都体会到了互联网.移动互联带来的好处,作为IT从业者,在生活中时刻感受互联网好处的同时,在工作中可能感受的却是来自自互联网的一些压力,那就是我们传统企业的IT建设 ...
- Alibaba Cloud Toolkit 中SLS插件助力线上服务问题排查
简介:Alibaba Cloud Toolkit 是一款非常优秀的插件,新增SLS日志服务的功能,针对软件开发者日常工作中常见的问题排查场景,将日志服务平台的功能集成到ide当中,省去了不同窗口之间来 ...
- Linux NTP服务配置
一.NTP对时原理 NTP同步的方向是从stratum值较小的节点向较大的节点传播,如果某个NTP客户端接收到stratum比自己还要大,那么NTP客户端认为自己的时间比接受到的时间更为精确,不会进行 ...
- Nginx服务安全加固
1.禁止频繁访问的ip访问nginx 生产环境中经常会遇到某个ip地址频繁异常的访问nginx网站,此时我们需要通过安全措施保护我们的服务器 部署nginx [root@localhost tools ...
- 微服务的4个设计原则和19个解决方案
微服务架构现在是谈到企业应用架构时必聊的话题,微服务之所以火热也是因为相对之前的应用开发方式有很多优点,如更灵活.更能适应现在需求快速变更的大环境. 本文将介绍微服务架构的演进.优缺点和微服务应用的设 ...
最新文章
- 安卓gridview 网格,多行多列实现
- Redis学习-String
- 【Android 安装包优化】移除无用资源 ( 自动移除无用资源 | 直接引用资源 | 动态获取资源 id | Lint 检查资源 )
- Transformer在深度推荐系统中的应用及2019最新进展
- c# 注册表操作,创建,删除,修改,判断节点是否存在
- 分布式文件系统研究-测试-文件下载测试
- cocos2d-x游戏实例(3)-获得地图索引
- 使用python制作聊天框解谜游戏_使用Python写一个小游戏alien invasion!
- centos安装redmine项目管理系统
- 软中断网卡处理Linux高性能外部设备处理机制SMP
- asp.net引入一个js文件名为JScript的js脚本 报错 缺少对象
- 读书笔记之《大型分布式网站架构设计与实践》
- “百花齐放”电商时代,网易七鱼打造专业电商客服
- C语言学习路线,思维脑图,学单片机的一定要知道
- python代码实现进制转换
- 【配准论文解读】Color Point Cloud Registration with 4D ICP Algorithm
- 扫黑除恶Team第三次团队作业
- 用Python写一个天天酷跑
- 自然语言处理——实现美国总统就职演说词汇分布图
- Vivado使用:综合篇(二)综合选项设置