背景需求:
1. 自动化测试中server能发送指令给多台测试机,或从他们那里获取进度数据。发送的指令可以通过脚本发送。
2. 每台测试机都安装有fitnesse完成本地测试,这样不会因为需要断网或reboot OS导致整个测试中断。
3. 每台测试机能主动反馈数据给server
选型要求:易于操作,易于编写,易于扩展,易于理解。
可用技术框架对比
技术 | 来源 | 开源 | 优点 | 缺点 | |
Named Pipe | Microsoft | N | 很成熟的技术 | 1. 接收数据A触发A',接收数据B触发方法B',这个机制要自己定义 2. 必须通过code才能用Client与Server 通信. 非开发人员无法调用. | |
NodeJS | NodeJS | Y | 社区活跃,Express能帮助快速完成http webside | 1. 要调用系统底层方法,必须写Addon. 2. 要打包成一个.exe不方便 | |
Eletron | Eletron | Y | 社区活跃,VS Code与Atom就是这个实现的。而且不用写Addon就能访问系统底层。 | 1. 打包成exe非常巨大,一个empty project就有100MB了 | |
EmbedIO | unosquare | Y | 整合了Angular1.x ,nuget | 1. 没有完整的文档,不知道从哪里着手 | |
Nancy(OWIN) | Github | Y | 似乎demo很好写 | 2016年就没怎么更新了 | OWIN=Open Web Interface for .Net |
ASP.Net | Microsoft | N | 需要IIS托管 | ||
WebAPI2(OWIN) | Microsoft | N | 1. 很成熟的技术,2013就有了 2. 很容易实现一个self-host的server,而且不需要IIS,compile后只是一些dll与.exe 3. 可以实现成RESTful的webservice,客户端可以是浏览器|脚本,普通人都能调用 | 1. 要有ASP.Net开发背景的人才知道这个东西 | OWIN=Open Web Interface for .Net |
WCF | Microsoft | N | 1. 很成熟的技术 | 1. 要访问service添加webservice reference,要用code访问 2. service暴露的是method,即各种自定义的。 |
选择:由于我期望的使用者包括了非开发人员,能被脚本调用,最终我选择了WebAPI2(OWIN)。通过RESTful API非常方便访问,也很规范直观。而且作为Webserver,还能提供简单的Web page给用户,让用户一次提供丰富的信息。