制作独立于客户端平台的Web服务

本文关键字:Web 服务 平台 客户端 独立 | 更新日期: 2023-09-27 18:21:32

我正在制作一个Web服务,大部分已经完成,但问题是[WebMethod]返回一个.net DataTable,所以使用其他平台的客户端将无法调用它,我需要架构为SOA(此处详细信息),就像它接受请求并给出响应一样。我可以使用xml serializable类来获取数据,但我不知道它们如何适应。有什么想法吗?

制作独立于客户端平台的Web服务

返回一个自定义类,只使用数组,而不使用列表或字典。只要这样做,PHP、Java和.Net开发人员就可以使用您的对象了。

您还可以公开JSON,不过关于如何做到这一点还有一段路要走。

另外,看看Web API,您可能会决定使用它。

另一个注意事项是:PHP的原生SOAP支持1.1可能会遇到问题,因此请使用basichhttp绑定,否则客户端将需要使用NuSoap,即SOAP 1.2。

如果您想向尽可能广泛的客户端公开您的HTTP服务,那么我建议完全放弃基于SOAP的消息传递,而是根据您为数据定义的架构,将您的数据表示为XML、JSON和/或您希望支持的任何其他内容类型。

IMHO,一个非常好的OSS框架就是OpenRasta。

我会研究使用RESTful服务,并像其他人建议的那样,以与平台无关的格式(如XML或JSON)返回数据。

此外,还可以考虑将ASP.NET MVC用于支持WCF的服务。在我看来,这是一个比WCF更好的系统:

http://iwantmymvc.com/rest-service-mvc3

WCF可以很容易地支持具有开箱即用绑定的SOAP(basicHttpBinding)或REST(webHttpbind)风格的服务接口。您当然可以构建ASMX,但使用情况正在逐渐消失。我刚刚编写了一个WCF REST/SOAP接口来替换使用DataTables的遗留ASMX(由于互操作性问题)。现在,互操作性就像为您的平台提供一个HTTP客户端或WSDL类生成器一样简单。