【问题标题】:WCF to build SOAP based serviceWCF 构建基于 SOAP 的服务
【发布时间】:2010-11-25 00:57:17
【问题描述】:

我正在尝试找到一些好的教程,这些教程将向我展示如何使用 WCF 创建一个简单的基于 SOAP 的服务并进行部署。过去 2 小时我一直在谷歌上搜索,似乎找不到任何好的资源.. 谁能帮帮我?

【问题讨论】:

    标签: wcf web-services soap


    【解决方案1】:

    至于资源:MSDN WCF Developer Center 包含从初学者教程到文章和示例代码的所有内容。

    此外,请查看screen cast library up on MSDN,了解一些非常有用的 10-15 分钟信息块,这些信息几乎涉及您可能感兴趣的任何与 WCF 相关的主题。

    MSDN 杂志上关于 WCF 各个方面的 The Service Station 文章也非常好 - 一些更基本的,如 Serialization in WCFWCF Bindings in Depth,一些更高级和深奥 - 但总是值得一看!

    更新:关于学习 WCF 和 SOAP,请查看例如

    还有更多 - 有关于使用 SOAP 绑定的 WCF 的教程和学习材料 - 肯定不仅仅是 REST 的东西!

    【讨论】:

    • 我已经阅读了所有这些文章,但没有一篇专门提到 SOAP 和 WCF
    • @EquinoX:WCF 是 SOAP - 通常的绑定都使用 SOAP。刚开始使用 WCF - 您将自动使用 SOAP(除非您使用 webHttpBinding,即 REST)
    • 这就是问题所在。所有示例都使用 webHttpBinding
    • @EquinoX:更新了我的帖子,至少添加了两个链接,这些链接涉及使用 WCF 和 SOAP
    • 入门教程真的很有帮助。它拥有让基本 WCF 正常工作所需的一切。
    【解决方案2】:

    WCF 服务的 REST / SOAP 端点

    您可以在两个不同的端点中公开服务。 SOAP 可以使用支持 SOAP 的绑定,例如basicHttpBinding,RESTful 可以使用 webHttpBinding。我假设您的 REST 服务将采用 JSON 格式,在这种情况下,您需要使用以下行为配置来配置两个端点

    <endpointBehaviors>
    <behavior name="jsonBehavior">
    <enableWebScript/>
    </behavior>
    </endpointBehaviors>
    

    您的场景中的端点配置示例是

    <services>
    <service name="TestService">
    <endpoint address="soap" binding="basicHttpBinding" contract="ITestService"/>
    <endpoint address="json" binding="webHttpBinding"  behaviorConfiguration="jsonBehavior" contract="ITestService"/>
    </service>
    </services>
    

    所以,该服务将在

    http://www.example.com/soap http://www.example.com/json 将 [WebGet] 应用于操作合约,使其成为 RESTful。例如

    公共接口 ITestService { [运营合同] [网络获取] 字符串 HelloWorld(字符串文本) }

    注意,如果 REST 服务不是 JSON 格式,则操作的参数不能包含复杂类型。 对于作为返回格式的普通旧 XML,这是一个适用于 SOAP 和 XML 的示例。

    [ServiceContract(Namespace = "http://test")]
    public interface ITestService
    {
    [OperationContract]
    [WebGet(UriTemplate = "accounts/{id}")]
    Account[] GetAccount(string id);
    }
    

    REST 普通旧 XML 的 POX 行为

    <behavior name="poxBehavior">
      <webHttp/>
    </behavior>
    

    端点

    <services>
    <service name="TestService">
    <endpoint address="soap" binding="basicHttpBinding" contract="ITestService"/>
    <endpoint address="xml" binding="webHttpBinding"  behaviorConfiguration="poxBehavior" contract="ITestService"/>
    </service>
    </services>
    

    服务将在

    http://www.example.com/soap http://www.example.com/xml
    REST 请求在浏览器中尝试,
    http://www.example.com/xml/accounts/A123

    添加服务引用后 SOAP 服务的 SOAP 请求客户端端点配置,

    <client>
    <endpoint address="http://www.example.com/soap" binding="basicHttpBinding"
      contract="ITestService" name="BasicHttpBinding_ITestService" />
    

    在 C# 中

    TestServiceClient client = new TestServiceClient();
    client.GetAccount("A123");
    

    另一种方法是公开两个不同的服务合同,每个服务合同都有特定的配置。这可能会在代码级别生成一些重复项,但最终,您希望使其正常工作。

    【讨论】:

      【解决方案3】:

      WCF 是一种用于构建服务的技术。它不假定这些服务是 SOAP 服务或 RESTFul 或其他任何东西。您必须学习 WCf 基础知识,例如 Service 和 DataContracts、Endpoints、Bindings 等,才能使用任何类型的服务。

      marc_s 提供的链接对此非常有帮助。

      现在就 SOAP 而言,它是一种用于将消息从一个端点传输到另一个端点的格式\技术。 WCF 的绑定方面涵盖了此详细信息。当您公开和使用服务时,您只需选择一个使用 SOAP 的 Binding。

      因此,您应该使用 marc_s 提供的链接学习 WCF 基础知识来构建服务。然后您将知道如何构建服务以及选择使用 SOAP 的绑定。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-05
        • 1970-01-01
        • 1970-01-01
        • 2016-01-28
        • 2013-07-14
        • 2016-12-30
        • 1970-01-01
        相关资源
        最近更新 更多