我创建了 WCF 服务,我想将数据库记录从 WCF 服务返回给客户端。
我的客户端应用程序检索显示在网页中的记录。客户开发他们的应用程序任何平台,如 PHP 或 JAVA 或 .NET。他们使用我的 WCF 服务来获取详细信息。
如何使用 XML 或任何其他方法将数据从 WCF 服务返回到客户端应用程序?
请对此提出建议/代码片段以解决我的疑问。
如果您将 WCF 部署为basicHttpBinding
将您的 WCF 服务公开为旧版 ASMX Web 服务,以便旧客户端可以使用新服务并使用 SOAP 协议(基于 XML)公开您的数据。wsHttpBinding
你也可以用(更高级)做类似的事情。我建议使用基本的,因为您将从 PHP、Java 和 NET 中使用它。选择更简单的可能对你有用。
<?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>
你可以在这里获取更多信息
您还可以配置 WCF 以将数据公开为 REST 协议 ( WebHttpBinding
)。该选项限制了 WCF 的功率。如果您打算通过 javascript 使用 WCF,您可以尝试一下。
您可以采用的最佳方法是使用 WebHttpBinding 公开RESTful WCF服务,该服务专为可互操作的 xml、json 对话而设计。然后任何客户端都可以向端点发出 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 客户端。因此,您可以对数据使用相同的方法:将对象数组从 WCF 传递到 PHP - 提取信息请小心并正确设计具有 [DataContract]/[DataMember] 属性的数据协定类。
以下是 PHP WCF/BasicHttpIntegration 初学者:https ://github.com/geersch/WcfServicesWithPhp5
REST 与 SOAP REST 限制 WCF 的能力并不是真的,它实际上对一些高级 WCF 功能确实如此,主要是因为 WebHttpBinding 的限制。但反过来,REST 比任何 RPC 协议(如 SOAP)更具互操作性。另外,在这种情况下,您可以获得轻量级 JSON 支持。因此,您的决定取决于您的需求和系统的整体要求/架构。同意,如果您只需要向几个客户端(特别是如果它是本地系统,而不是通过 Internet 发布)提供类似对象的数据集,那么为了简单起见,BasicHttpBinding/SOAP 最适合您。
还要提一件事,许多 Web 服务要么是 RESTful,要么正在转换为 REST。微软也是如此。这是直接将数据传递到客户端浏览器的最佳方式(JS 处理)。