-3

我创建了 WCF 服务,我想将数据库记录从 WCF 服务返回给客户端。

我的客户端应用程序检索显示在网页中的记录。客户开发他们的应用程序任何平台,如 PHP 或 JAVA 或 .NET。他们使用我的 WCF 服务来获取详细信息。

如何使用 XML 或任何其他方法将数据从 WCF 服务返回到客户端应用程序?

请对此提出建议/代码片段以解决我的疑问。

4

2 回答 2

2

如果您将 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,您可以尝试一下。

于 2012-11-28T07:20:19.690 回答
0

您可以采用的最佳方法是使用 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 处理)。

于 2012-11-28T08:53:48.640 回答