WebService 在 VS/C#里,只要把网址输进去,
开发工具就会做好一切,然后就可以直接在代码里使用远程的函数,体验上接近于在用本地函数。
这个东西最大的缺陷就是把所有事考虑的太完美了,导致协议太复杂。
即使在 Windows 自家的系统上,部署这个东西也非常麻烦,MSSOAP 组件就有一个很大的安装包,安装这个以前还先要装 MSXML 组件,然后安装的时候还要管理权限,带上一堆的 DLL,然后微软还把这个组件给淘汰了,各种折腾 - 想法一直在变。其他平台就更麻烦了。
WebService 最轻量的实现估计是 aardio 里的实现,SOAP 客户端支持库仅使用了几百行代码,用起来还是很舒服的。下面是 aardio 里的一个例子:
----------------------------------------------------------
import console;
import web.soapClient;
//创建 SOAP 客户端
seviceClient = web.soapClient("
http://fy.webxml.com.cn/webservices/EnglishChinese.asmx")
//调用远程 Web 服务提供的函数
var transArray = seviceClient.TranslatorString("hello");
//显示返回值
console.dumpJson( transArray ) ;
console.pause();
----------------------------------------------------------
但是用起来舒服并没有用,因为现在支持这种接口的很少,大家都 JSON 接口,用起来更简单,实现的功能也差不多。兴一个 aardio 里调用 REST/JSON 接口的例子:
----------------------------------------------------------
import console;
import web.rest.jsonClient;
var http = web.rest.jsonClient();
var jsonstore = http.api("
https://www.jsonstore.io/e5fd2bdf0e6b3ba3fe4aa61eebd11740cf2fe10e7fad1b5d2fb77c876498baf5");
//增
var result = jsonstore.user[1].post( name = "jon.snow"; age = 31 )
//改
var result = jsonstore.user[1].age.put(32);
//查
var result = jsonstore.user[1].get();
//删
var result = jsonstore.user[1].delete();
console.dump(result);
console.pause();
----------------------------------------------------------
一样可以把远程接口变成本地函数,并且有舒服的智能提示,而且实现起来更简单,WebService 的优势就不多了。