创建与客户端平台无关的Web服务

时间:2012-01-27 14:01:54

标签: c# .net web-services cross-platform

我正在制作网络服务,大多数已经完成,但事情是[WebMethod]返回.net DataTable所以使用其他平台的客户端将无法调用它,我需要架构是SOAdetails here)就像接受请求并给出回复一样。我可以使用xml serializable类来获取数据,但我不知道它们如何适应。任何想法?

4 个答案:

答案 0 :(得分:3)

返回一个自定义类,只使用数组而不是列表或字典。刚刚做到这一点,PHP,Java和.Net开发人员将使用你的对象。

你也可以expose JSON了解如何做到这一点。

另请查看Web API您可能决定使用它。

另一方面注意:PHP的本机SOAP支持是1.1可能有问题,所以使用basichttp绑定或客户端需要使用NuSoap而不是SOAP 1.2。

答案 1 :(得分:1)

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

恕我直言,为此目的,一个非常好的OSS框架是OpenRasta

答案 2 :(得分:1)

我会调查使用RESTful服务并将数据作为平台无关的格式(如XML或JSON)返回,正如其他人所建议的那样。

此外,请看一下使用ASP.NET MVC来支持WCF的服务。在我看来,这是一个比WCF好得多的系统:

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

答案 3 :(得分:0)

WCF可以轻松支持具有开箱即用绑定的SOAP(basicHttpBinding)或REST(webHttpBinding)样式服务接口。你当然可以建立ASMX,但用法正在消亡。我刚刚编写了一个WCF REST / SOAP接口来替换使用DataTables的旧版ASMX(因为互操作性问题)。现在,互操作性就像为您的平台安装HTTP客户端或WSDL类生成器一样简单。