【问题标题】:How to return database record from WCF [closed]如何从 WCF 返回数据库记录 [关闭]
【发布时间】:2012-11-15 23:45:33
【问题描述】:

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

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

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

请对此提出建议/代码sn-p以解决我的疑问。

【问题讨论】:

    标签: wcf return


    【解决方案1】:

    如果您将 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>
    

    您可以获取更多信息here

    您还可以配置 WCF 以将数据公开为 REST 协议 (WebHttpBinding)。该选项限制了 WCF 的功率。如果您打算通过 javascript 使用 WCF,可以尝试一下。

    【讨论】:

      【解决方案2】:

      您可以采用的最佳方法是使用 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 客户端。因此,您可以对数据使用相同的方法:Passing array of objects from WCF to PHP - extracting the info 请小心并正确设计具有 [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拿句柄)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-06
        • 1970-01-01
        相关资源
        最近更新 更多