代码改变世界

WCF 第四章 绑定 使用基础Web Services

2010-11-24 14:48  DanielWise  阅读(839)  评论(0编辑  收藏  举报

Web 服务时异构系统间相互通信的基础。比如,基于JAVA平台创建的IBM Websphere或者BEA WebLogic服务必须与基于.NET 平台创建的客户端和服务端进行无缝连接。基于.NET平台创建的服务必须与基于JAVA平台创建的客户端和服务端进行无缝连接。在WCF出现之前,ASP.NET Web 服务(ASMX)和高级Web 服务在.NET平台上提供了这种能力。在.NET 3.0时,WCF直接取代了这些技术并提供了一个单独的统一的架构来创建Web 服务。WCF包括了很多种暴露交互式Web 服务的绑定,包括basicHttpBinding, wsHttpBinding, wsDualHttpBinding和wsFederationHttpBinding绑定。

在这一章节,我们检查basicHttpBinding绑定,它提供对基于WS-I 基础协议1.1 Web 服务的支持。截至2007年,WS-I 基础协议1.1 覆盖了大多数广泛的基于Web 服务协议的部署而且是最大多开发人员所熟悉的Web服务。其他的基于Web 服务的绑定会稍后在”使用高级Web 服务通信”章节中介绍,同时也会在本书的第八章讨论。

basicHttpBinding

basicHttpBinding 绑定提供对基于WS-I 基础协议1.1(WS-BP 1.1)标准的Web 服务通信的支持。这包括比如SOAP 1.1, WSDL 1.1 和消息安全1.0(包括X.509和用户名令牌协议v1.0)。WS-BP 1.1 标准早在2004年就已经指定。尽快basicHttpBinding绑定提供异构系统的交互通信,它不提供对最新的Web 服务标准比如事务和可信赖消息的支持。basicHttpBinding绑定意味着要与使用基于WS-BP 1.1 标准的Web 服务的应用程序一起使用,比如ASP.NET ASMX Web 服务。

注意 创建基于最新标准的服务

basicHttpBinding绑定意味着要与先前基于ASP.NET技术的遗留Web 服务一起工作。这也就是说basicHttpBinding绑定默认配置为使用原有标准,比如SOAP 1.1.basicHttpBinding绑定也是唯一的默认情况下不采用安全机制的绑定。如果你需要创建新的Web 服务,我们建议使用ws2007HttpBinding绑定,因为它配置为使用新的标准而且默认支持安全性。

下面的代码显示了basicHttpBinding绑定的地址格式:

http://{hostname}[:port]/{service location}

https://{hostname}[:port]/{service location}

Http协议默认端口是80, Https默认端口是443。这是任何基于HttpTransportBindingElement绑定元素的绑定情况。最常用的方式是使用https来获得安全的basicHttpBinding绑定,使用SSL/TLS加密。

表4.5 列出了在basicHttpBinding绑定上可以设置的属性。

表4.5 basicHttpBinding 绑定属性

下面的配置信息用来与列表4.2到4.4中的样例一起使用。列表4.11中的配置信息使用basicHttpBinding绑定暴露StockQuoteService服务。

列表4.11 basicHttpBinding 宿主配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <services>
            <service behaviorConfiguration="" name="EssentialWCF.StockQuoteService">
                <endpoint binding="basicHttpBinding" bindingConfiguration=""
                    contract="EssentialWCF.IStockQuoteService" />
                <host>
                    <baseAddresses>
                        <add baseAddress="http://localhost/stockquoteservice" />
                    </baseAddresses>
                </host>
            </service>
        </services>
    </system.serviceModel>
</configuration>

列表4.12 显示了调用列表4.11中使用basicHttpBinding绑定的服务的客户端配置信息。

列表4.12 basicHttpBinding客户端配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <services>
            <service behaviorConfiguration="" name="EssentialWCF.StockQuoteService">
                <endpoint binding="basicHttpBinding" bindingConfiguration=""
                    contract="EssentialWCF.IStockQuoteService" />
                <host>
                    <baseAddresses>
                        <add baseAddress="http://localhost/stockquoteservice" />
                    </baseAddresses>
                </host>
            </service>
        </services>
    </system.serviceModel>
</configuration>