我创建了WCF服务,我希望将数据库记录从WCF服务返回给客户端。
我的客户端应用程序检索在网页中显示的记录。客户端可以在PHP或JAVA或.NET等平台上开发应用程序。他们使用我的WCF服务来获取详细信息。
如何使用XML或任何其他方法将数据从WCF服务返回到客户端应用程序?
请提供建议/代码片段以解决我的疑问。
答案 0 :(得分:2)
如果部署WCF,则basicHttpBinding
会将WCF服务公开为旧版ASMX Web服务,以便旧客户端可以使用新服务,并使用SOAP协议(基于XML)公开数据。您也可以使用wsHttpBinding
(更高级)执行类似操作。我建议基本的,因为你将从PHP,Java和&净。挑选更简单可能对你有用。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<bindings>
<!—- Default binding for basicHttpBinding -->
<basicHttpBinding>
<binding name="myBindingConfiguration1" closeTimeout="00:01:00" />
<binding name="myBindingConfiguration2" closeTimeout="00:02:00" />
<binding closeTimeout="00:03:00" />
</basicHttpBinding>
</bindings>
<services>
<!—- change to your namespace & contract details -->
<service name="MyNamespace.myServiceType">
<endpoint
address="myAddress" binding="basicHttpBinding"
bindingConfiguration="myBindingConfiguration1"
contract="MyContract" />
<endpoint
address="myAddress2" binding="basicHttpBinding"
bindingConfiguration="myBindingConfiguration2"
contract="MyContract" />
</service>
</services>
</system.serviceModel>
</configuration>
您可以获取更多信息here
您还可以将WCF配置为将数据公开为REST协议(WebHttpBinding
)。该选项限制了WCF的功率。如果你打算从javascript中使用你的WCF,你可以尝试一下。
答案 1 :(得分:0)
您可以使用的最佳方法是使用专为可互操作的xml,json对话设计的WebHttpBinding公开 RESTful WCF 服务。然后,任何客户端都可以向端点发出HTTP请求并获得简单的REST结果。这种技术的一个缺点是你必须熟悉这里描述的WCF RESTful编程模型http://msdn.microsoft.com/en-us/magazine/dd315413.aspx你可以在这里找到关于这个主题的全面讨论http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/90716451-fd29-4917-a5ca-f7f3bcaa96c9
第二种方法,由于其简单性,您可能更喜欢使用通过 PHP内置SoapClient 访问的BasicHttpBinding服务。有一个很好的来源说明.Net数据类型传输给PHP客户端。因此,您可以对数据使用相同的方法:Passing array of objects from WCF to PHP - extracting the info请注意并使用[DataContract] / [DataMember]属性正确设计数据协定类。
以下是PHP WCF / BasicHttpIntegration启动器:http://cgeers.com/2009/08/20/using-wcf-services-with-php-5/
REST与SOAP REST限制WCF功能并不是真的,它实际上是为了一些高级WCF功能,主要是因为WebHttpBinding的限制。但反过来,REST比任何RPC协议(如SOAP)更具互操作性。此外,在这种情况下,您将获得轻量级JSON支持。 因此,您的决定取决于您的需求和系统的总体要求/架构。同意,如果你只需要向几个客户端提供类似对象的数据集(特别是如果它是本地系统,而不是通过互联网发布)那么,为了简单起见,BasicHttpBinding / SOAP是最适合你的。 / p>
还有一点要提到的是,许多Web服务要么是RESTful,要么是转换为REST。微软也是如此。这是将数据直接传递到客户端浏览器的最佳方式(JS采用句柄)。