我正在制作网络服务,大多数已经完成,但事情是[WebMethod]
返回.net DataTable
所以使用其他平台的客户端将无法调用它,我需要架构是SOA
(details here)就像接受请求并给出回复一样。我可以使用xml serializable
类来获取数据,但我不知道它们如何适应。任何想法?
答案 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好得多的系统:
答案 3 :(得分:0)
WCF可以轻松支持具有开箱即用绑定的SOAP(basicHttpBinding)或REST(webHttpBinding)样式服务接口。你当然可以建立ASMX,但用法正在消亡。我刚刚编写了一个WCF REST / SOAP接口来替换使用DataTables
的旧版ASMX(因为互操作性问题)。现在,互操作性就像为您的平台安装HTTP客户端或WSDL类生成器一样简单。