请教一下各位,我现在想做一个通用服务层接口,不管应用层是WPF,ASP.Net ,还是移动应用,都可以调用我的接口来完成一套完成系统的开发,那么这个服务接口应该用什么方式来实现比较好呢?网上有查过,说用 WCF和 webservice ,请大家分析对比一下这2个技术的优缺点,或者还有没有其他更好的实现方式?
------解决方案--------------------
通用接口一定是webservice
------解决方案--------------------
如果你需要夸语言通用的话,使用webservice不如web api之类的json序列化。
试试fastCSharp的TCP调用,对于跨语言调用支持类似于web api的http json调用。
------解决方案--------------------
什么都可以。只要你确实做过实验就行。
我不建议使用web service,更不使用wcf。对我来说,它又大又慢,极端笨重。
------解决方案--------------------
比如说对于直接http协议而言,你的客户端可以选择
var web = new WebClient();就行了。通过提交 json 格式的数据 postdata,访问命令 Command1 而得到返回的json 格式的数据 result。这是很简单很直观的做法,没有什么困难的。用不着一堆 wcf 编程门槛做为阻拦,通用性也很高。
var url = "http://www.abc.com/Command1";
var result = web.UploadData(url, postdata);
------解决方案--------------------
通常我们会封装为一个 GateWay,例如客户端可以写
gateway.SendMessage<MyDataType>(postObject, resultObject=>这样。一个GateWay用来处理会话登录,然后将来被调用SendMessage方法时会自动把输入的命令转换为postdata发出,把服务器端返回的数据自动转换为MyDataType类型的对象而异步回调。
{
....
});
自己封装这样一个方法,就足矣了。
------解决方案--------------------
时下流行用 RESTFul API:
http://zh.wikipedia.org/wiki/REST
------解决方案--------------------
我同意这个意见,并且已经实践了很多次了,通过json以及webapi的实现方式,客户端无论是winform、c/c++、移动网站、ria的flash或者easyui等等,要集成起来很方便,而且代码质量比较好,单元测试、复用都比较容易。做出来的框架也很轻,只需要稍微利用点接口编程的思想,这对于小团队技术水平比较一般的情况下,新人要理解和接受也简单。同时简单意味着扩展起来的空间也极大,简单并不意味着有什么欠缺哦。