动手写一个Remoting接口测试工具
基于.NET开发分布式系统,经常用到Remoting技术。在测试驱动开发流行的今天,如果针对分布式系统中的每个Remoting接口的每个方法都要写详细的测试脚本,无疑非常浪费时间。所以,我想写一个能自动测试remoting接口的小工具InterfaceTester。而且,当分布式系统中的某个remoting接口出现bug时,该小工具可以提交需要模拟的数据,以便在调试remoting服务的环境中,快速定位和解决bug。
InterfaceTester运行起来后的效果如下图:
1.如何使用
(1)首先,填上要测试的并且是已经发布的Remoting服务的地址信息。
(2)选取要测试的remoting接口所在的程序集,一般是一个dll。选定程序集后,InterfaceTester会自动搜索该程序集中定义的所有接口,并将其绑定到“接口类型”的下拉列表。
(3)从 “接口类型”的下拉列表中选择要测试的接口。选定接口后,InterfaceTester会自动搜索该接口中定义的所有方法,并将其绑定到“目标方法”的下拉列表。
(4)从 “目标方法”的下拉列表中选择要测试的方法,InterfaceTester会根据该方法所要求的参数,自动生成参数录入界面。
(5)在参数录入界面上,输入用于测试的参数的值,然后,点击“调用”按钮, InterfaceTester便会调用上述指定地址的remtoing服务的指定接口的指定方法,如果调用的方法有返回值,则会在“调用返回”的panel上显示该值。如果返回的不是一个简单类型,而是一个对象,则“调用返回”的panel上将会以xml的形式显示这个对象的各个属性值。
2.实现原理
就这个小工具的实现而言,主要用到的技术就是反射(reflection)。另外,需要注意的就是,根据参数的类型,生成录入界面。具体细节大家可以参见源码。目前,InterfaceTester支持的被测试方法的参数类型是有限制的:
(1)支持简单的数据类型,像string、int、bool等。
(2)支持List<>、I List<>、IDictionary<,>、Dictionary<,>等集合类型。
(3)支持简单的数据结构的class(如像Point、自定义的Entity等)。
3.源码解决方案
下载源码并用VS打开后,解决方案下有三个项目:InterfaceTester、DemoInterface、DemoService。
(1)InterfaceTester项目是我们本文的主角:用于remoting接口测试的小工具。
(2)DemoInterface和 DemoService则是为了试试小工具而构建的一个小demo。 DemoInterface定义了发布的remoting服务的接口, DemoService则是发布的remoting服务。
在试用时,先启动 DemoService项目,再启动InterfaceTester,就可以试试我们的小工具功能了。
4.源码下载
针对这个remoting接口测试小工具,大家如果有什么好的建议,请留言告诉我:)
C#专栏
各种C#或.NET技术问题讨论
动手写一个Remoting接口测试工具
posted @ 2014-05-14 11:17 zhuweisky 阅读(437) | 评论 (1) 编辑
让OMCS支持更多的视频采集设备
posted @ 2014-04-08 09:30 zhuweisky 阅读(102) | 评论 (0) 编辑
C#实现录制屏幕
posted @ 2014-03-11 15:31 zhuweisky 阅读(1821) | 评论 (27) 编辑
在服务器端录制语音视频
posted @ 2014-01-10 09:42 zhuweisky 阅读(1046) | 评论 (3) 编辑
移植到Windows CE 的经验
posted @ 2013-12-28 10:02 zhuweisky 阅读(684) | 评论 (6) 编辑
通信服务器群集、跨服务器通信Demo(源码)
posted @ 2013-10-15 11:24 zhuweisky 阅读(1689) | 评论 (7) 编辑
为程序集添加强签名
posted @ 2013-09-24 11:49 zhuweisky 阅读(43) | 评论 (0) 编辑
客户端服务器通信demo(续) -- 使用二进制协议 (附源码)
posted @ 2013-09-05 15:22 zhuweisky 阅读(1514) | 评论 (6) 编辑
分贝显示器,实时显示声音强度(附源码)
posted @ 2013-08-25 19:46 zhuweisky 阅读(1502) | 评论 (2) 编辑
摄像头、麦克风、扬声器测试程序(附源码)
posted @ 2013-08-20 09:01 zhuweisky 阅读(1827) | 评论 (7) 编辑
客户端服务器通信demo(附源码)
posted @ 2013-06-17 10:29 zhuweisky 阅读(3337) | 评论 (10) 编辑
泛型KMP算法
posted @ 2013-06-06 10:06 zhuweisky 阅读(1309) | 评论 (4) 编辑
广播与P2P通道(下) -- 方案实现
posted @ 2013-04-27 09:35 zhuweisky 阅读(1671) | 评论 (2) 编辑
广播与P2P通道(上) -- 问题与方案
posted @ 2013-04-25 20:19 zhuweisky 阅读(1310) | 评论 (3) 编辑
调用非托管dll常出现的bug及解决办法
posted @ 2013-01-09 10:45 zhuweisky 阅读(1430) | 评论 (2) 编辑
实现语音视频录制(demo源码)
posted @ 2012-12-21 10:14 zhuweisky 阅读(2932) | 评论 (17) 编辑
P2P直连?经服务器中转?
posted @ 2012-12-06 11:21 zhuweisky 阅读(2242) | 评论 (1) 编辑
实现简单的手写涂鸦板(demo源码)
posted @ 2012-10-31 15:01 zhuweisky 阅读(2307) | 评论 (4) 编辑
实现类似QQ自拍头像的功能(demo源码)
posted @ 2012-10-26 20:44 zhuweisky 阅读(2776) | 评论 (13) 编辑
在Web中如何使用Windows控件?
posted @ 2012-09-14 10:11 zhuweisky 阅读(2845) | 评论 (17) 编辑
如何实现离线文件?
posted @ 2012-09-13 13:49 zhuweisky 阅读(2727) | 评论 (3) 编辑
让你的Socket应用兼容IPv6
posted @ 2012-07-18 16:09 zhuweisky 阅读(3764) | 评论 (2) 编辑
AutoResetEvent 的诡异行为
posted @ 2012-06-13 11:56 zhuweisky 阅读(2214) | 评论 (4) 编辑
“配置系统未能初始化” 异常解决
posted @ 2012-02-15 16:31 zhuweisky 阅读(7762) | 评论 (8) 编辑
奇异的Pinvoke调用
posted @ 2011-07-07 09:07 zhuweisky 阅读(873) | 评论 (3) 编辑
铁血规则:事件预订与取消预订
posted @ 2011-04-07 17:19 zhuweisky 阅读(1837) | 评论 (5) 编辑
应用Composite模式
posted @ 2011-03-22 11:03 zhuweisky 阅读(1544) | 评论 (2) 编辑
Win7下的DragDrop事件不触发?
posted @ 2011-01-22 11:04 zhuweisky 阅读(2366) | 评论 (7) 编辑
在.NET中使用Speex -- 音频数据编解码
posted @ 2010-09-16 10:57 zhuweisky 阅读(4400) | 评论 (50) 编辑
如何自动以管理员身份运行.NET程序?
posted @ 2010-08-27 11:44 zhuweisky 阅读(4474) | 评论 (13) 编辑
Form或UserControl接收不到KeyDown等事件?
posted @ 2010-07-10 15:00 zhuweisky 阅读(877) | 评论 (0) 编辑
关于重复绑定TCP端口的疑惑?
posted @ 2010-05-26 11:42 zhuweisky 阅读(1179) | 评论 (3) 编辑
.NET做的画图板,试用一下!
posted @ 2010-04-30 09:31 zhuweisky 阅读(1375) | 评论 (6) 编辑
在应用程序之间传递动态程序集
posted @ 2009-08-13 10:14 zhuweisky 阅读(3166) | 评论 (10) 编辑
关于【对象“***.rem”已经断开连接或不在服务器上】异常的解决方法
posted @ 2009-08-11 11:39 zhuweisky 阅读(1229) | 评论 (2) 编辑
DCFramework 动态分布式计算框架(01)-- 基础结构
posted @ 2009-05-28 18:05 zhuweisky 阅读(2549) | 评论 (7) 编辑
DCFramework 动态分布式计算框架(00) -- 序
posted @ 2009-05-28 09:29 zhuweisky 阅读(3180) | 评论 (14) 编辑
TopN算法与排行榜
posted @ 2009-05-23 11:10 zhuweisky 阅读(4330) | 评论 (14) 编辑
如何突破.NET内存限制?
posted @ 2009-01-05 10:56 zhuweisky 阅读(3392) | 评论 (15) 编辑
Spring.net 的一个bug ?
posted @ 2008-12-08 11:48 zhuweisky 阅读(2077) | 评论 (1) 编辑
Remoting方法重载遇到的一个问题
posted @ 2008-11-28 10:20 zhuweisky 阅读(2201) | 评论 (2) 编辑
锁定与并发
posted @ 2008-11-26 09:42 zhuweisky 阅读(2646) | 评论 (5) 编辑
A*算法的C#实现
posted @ 2008-10-22 16:31 zhuweisky 阅读(6942) | 评论 (27) 编辑
Remoting插件与网关设置
posted @ 2008-06-18 11:09 zhuweisky 阅读(720) | 评论 (0) 编辑
Spring.net -- 目前不支持getter、setter的访问限定符
阅读全文
posted @ 2008-05-29 18:39 zhuweisky 阅读(1949) | 评论 (3) 编辑
你知道 typeof(void) 吗?
posted @ 2008-05-21 10:31 zhuweisky 阅读(4168) | 评论 (18) 编辑
.NET Remoting与双网卡
posted @ 2007-09-21 23:34 zhuweisky 阅读(1732) | 评论 (5) 编辑
TCP连接与防火墙
posted @ 2007-09-16 14:58 zhuweisky 阅读(1543) | 评论 (1) 编辑
【C#2.0】发挥匿名委托的威力!
posted @ 2007-08-04 20:14 zhuweisky 阅读(6668) | 评论 (10) 编辑
Socket与拔掉网线
posted @ 2007-05-28 17:10 zhuweisky 阅读(4418) | 评论 (4) 编辑
通过Spring.net发布Remoting
posted @ 2007-05-26 11:26 zhuweisky 阅读(3963) | 评论 (7) 编辑
注解:System.Threading.Timer
posted @ 2007-03-16 13:46 zhuweisky 阅读(4990) | 评论 (5) 编辑
自动化 object <-> xml
阅读全文
posted @ 2007-03-02 08:52 zhuweisky 阅读(2854) | 评论 (5) 编辑
使用Null Object设计模式
阅读全文
posted @ 2007-02-28 19:34 zhuweisky 阅读(5757) | 评论 (15) 编辑
MSMQ与Hashtable
posted @ 2006-11-16 12:31 zhuweisky 阅读(2376) | 评论 (3) 编辑
基于MSMQ使用WCF
posted @ 2006-11-09 11:56 zhuweisky 阅读(6736) | 评论 (12) 编辑
反射中使用 BindingFlags.IgnoreCase
posted @ 2006-07-26 11:38 zhuweisky 阅读(1924) | 评论 (3) 编辑
Java -- 在Eclipse上使用XFire开发WebService
posted @ 2006-06-01 15:55 zhuweisky 阅读(30910) | 评论 (18) 编辑
Java -- 在Eclipse上使用Spring
posted @ 2006-05-30 19:48 zhuweisky 阅读(5751) | 评论 (2) 编辑
Java -- 在Eclipse上使用Hibernate
posted @ 2006-05-30 15:08 zhuweisky 阅读(15873) | 评论 (12) 编辑
NHibernate 与Oracle 点滴
posted @ 2006-05-19 10:45 zhuweisky 阅读(3226) | 评论 (5) 编辑
【C#2.0】点滴(不断补充中......)
posted @ 2006-05-08 15:55 zhuweisky 阅读(2658) | 评论 (7) 编辑
撤销与反撤销 功能实现
posted @ 2006-04-30 09:49 zhuweisky 阅读(4275) | 评论 (11) 编辑
使用NHibernate的你也许需要SessionQuicker
posted @ 2006-04-28 09:40 zhuweisky 阅读(1654) | 评论 (5) 编辑
初试Ajax.Net !
posted @ 2006-04-19 10:08 zhuweisky 阅读(4608) | 评论 (14) 编辑
将权限引入系统的探索
posted @ 2006-04-08 22:39 zhuweisky 阅读(2481) | 评论 (5) 编辑
【Spring.net点滴】
posted @ 2006-03-29 10:17 zhuweisky 阅读(2387) | 评论 (5) 编辑
VS小插件--属性自动生成器
posted @ 2006-03-24 16:01 zhuweisky 阅读(3267) | 评论 (17) 编辑
ZipHelper 修正
posted @ 2006-03-09 11:49 zhuweisky 阅读(936) | 评论 (2) 编辑
压缩与解压缩 ZipHelper
posted @ 2006-03-06 09:40 zhuweisky 阅读(3014) | 评论 (11) 编辑
C#播放rm文件
posted @ 2006-02-15 11:14 zhuweisky 阅读(5018) | 评论 (14) 编辑
关于跨程序集的反射(续)
posted @ 2006-01-06 14:44 zhuweisky 阅读(2040) | 评论 (5) 编辑
.NET平台下可复用的Tcp通信层实现(续)
posted @ 2006-01-05 11:13 zhuweisky 阅读(4140) | 评论 (8) 编辑
.NET平台下可复用的Tcp通信层实现
posted @ 2006-01-04 15:40 zhuweisky 阅读(7586) | 评论 (15) 编辑
包装你的Session,使Session对象化
posted @ 2005-12-31 17:20 zhuweisky 阅读(1651) | 评论 (4) 编辑
插件的“动态替换”
posted @ 2005-12-30 15:26 zhuweisky 阅读(3470) | 评论 (10) 编辑
使用 AOP 陷阱之一
posted @ 2005-12-27 15:37 zhuweisky 阅读(694) | 评论 (0) 编辑
Remoting Event 远程事件
posted @ 2005-12-16 15:33 zhuweisky 阅读(2068) | 评论 (2) 编辑
分页管理器实现
posted @ 2005-12-14 09:48 zhuweisky 阅读(2066) | 评论 (4) 编辑
动态调用web服务
posted @ 2005-12-07 13:25 zhuweisky 阅读(9869) | 评论 (14) 编辑
使用 EmptyClass 避免条件判断
posted @ 2005-12-07 12:49 zhuweisky 阅读(1361) | 评论 (1) 编辑
Effective C# 精髓 (待续)
posted @ 2005-11-25 16:54 zhuweisky 阅读(821) | 评论 (0) 编辑
某公司的一道机考题的解答
posted @ 2005-10-16 11:54 zhuweisky 阅读(2897) | 评论 (20) 编辑
路径规划(最短路径)算法C#实现
posted @ 2005-09-29 14:38 zhuweisky 阅读(34161) | 评论 (35) 编辑
推荐所有的.NET开发人员阅读《J2EE Development without EJB》
posted @ 2005-09-29 11:15 zhuweisky 阅读(3158) | 评论 (15) 编辑
EsbAOP应用--权限管理
posted @ 2005-09-28 12:06 zhuweisky 阅读(1963) | 评论 (1) 编辑
EsbAOP应用--异常关闭器
posted @ 2005-09-28 08:42 zhuweisky 阅读(566) | 评论 (1) 编辑
EnterpriseServerBase的AOP--EsbAOP实现
posted @ 2005-09-28 08:41 zhuweisky 阅读(860) | 评论 (1) 编辑
关于跨程序集的反射
posted @ 2005-09-23 12:52 zhuweisky 阅读(2554) | 评论 (3) 编辑
异步调用轻量级封装AsynCaller
posted @ 2005-09-23 09:44 zhuweisky 阅读(1419) | 评论 (1) 编辑
C++ 事件机制实现
posted @ 2005-09-10 22:35 zhuweisky 阅读(6498) | 评论 (5) 编辑