NetHttpBinding

NetHttpBinding 示例演示如何实现在 BinaryMessageEncodingBindingElement 上堆叠 HttpTransportBindingElement 或 HttpsTransportBindingElement 的绑定。Windows Communication Foundation (WCF) 附带的、基于 HTTP 的系统定义的绑定(如 BasicHttpBinding 或 WsHttpBinding)在 TextMessageEncodingBindingElement 上堆叠 HTTP 的主要目的是允许收发文本/Xml 消息,以实现互操作性。Windows Communication Foundation (WCF) 附带的、基于 TCP 以及基于 NamedPipe 的系统定义的绑定(如 NetTcpBinding 或 NetNamedPipeBinding)以二进制形式编写和使用消息。二进制格式尽管不可互操作,但更为有效并且进行了性能优化。

Aa395198.note(zh-cn,VS.100).gif注意:
本主题的最后提供了此示例的设置过程和生成说明。

Aa395198.Important(zh-cn,VS.100).gif 注意:
您的计算机上可能已安装这些示例。在继续操作之前,请先检查以下(默认)目录:

<安装驱动器>:\WF_WCF_Samples

如果此目录不存在,请访问针对 .NET Framework 4 的 Windows Communication Foundation (WCF) 和 Windows Workflow Foundation (WF) 示例(可能为英文网页),下载所有 Windows Communication Foundation (WCF) 和 WF 示例。此示例位于以下目录。

<安装驱动器>:\WF_WCF_Samples\WCF\Extensibility\Binding\NetHttpBinding

此示例演示如何利用 WCF 的体系结构来合并希望在通道堆栈中使用的绑定元素,以按照需要的方式配置绑定。创建自定义绑定的步骤如下:

  1. 确定您为了创建绑定而希望堆叠在一起的绑定元素。

  2. 确保您知道使堆栈正常工作而对绑定元素进行堆叠的顺序。例如,您希望在堆栈的底部添加传输。

  3. 创建 Binding 类,它从 Binding 继承而来。在此特定情况下,NetHttpBinding 还实现 ISecurityCapabilities 接口,因为它允许此绑定的用户检查 ProtectionLevel 以及其绑定是否支持客户端和服务器身份验证。

  4. 该绑定将公开必须提供给用户的其他属性,以允许他们配置构成绑定元素。例如,将提供 BypassProxyOnLocal 属性,以便您可以在基础 HTTP 或 HTTPS TransportBindingElement 上配置相同属性。

  5. CreateBindingElements 方法中,该示例演示了绑定元素必须采用的堆叠顺序。例如,它首先添加编码器,然后添加传输,因为传输必须位于绑定堆栈的底部。

  6. 最后,将实现 ApplyConfiguration 方法以允许使用配置来填充 NetHttpBinding。实际上,要使您的绑定能够从配置文件中进行配置,还需要其他几个类。幸运的是,您可以使用 ConfigurationCodeGenerator 工具创建这些类。ConfigurationCodeGenerator 工具也作为一个 WCF 示例进行提供。

NetHttpBinding 示例服务

使用 NetHttpBinding 的示例服务位于服务子目录中。用于配置终结点的绑定是 NetHttpBinding。该示例服务是使用 Main 方法的自承载服务,但也可以在 Internet 信息服务 (IIS) 中承载。

NetHttpBinding 示例客户端

客户端还配置其到 NetHttpBinding 的绑定,以连接到该服务。客户端演示它可以在代码或配置中配置绑定。它可以通过配置来配置 NetHttpBinding 这一事实通过它为了向配置公开绑定而添加的类来实现。如前所述,ConfigurationCodeGenerator 工具可帮助您生成这些类。

设置和生成示例

  1. 使用以下命令安装 ASP.NET 4.0。

    %windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
    
  2. 请确保已执行 Windows Communication Foundation 示例的一次性安装过程

  3. 若要生成解决方案,请按照生成 Windows Communication Foundation 示例中的说明进行操作。

  4. 请确保路径包含 Makecert.exe 所在的文件夹。

  5. 在要运行服务器的计算机上,从示例安装文件夹中运行 Setup.bat,以创建服务器需要的服务器证书及其颁发者证书。

  6. 在同一台服务器计算机上,按照配置 HTTP 和 HTTPS 中的概念文档中的说明使用 HTTP.SYS 配置服务器证书。

在同一计算机上运行示例

  1. 启动 service\bin 中的 Service.exe。服务活动显示在服务控制台窗口上。

  2. 启动 \client\bin 中的 Client.exe。客户端活动将显示在客户端控制台应用程序上。

  3. 完成示例后,运行 Cleanup.bat 移除证书。

跨计算机运行示例

  1. 启动 service\bin 中的 Service.exe。服务活动显示在服务控制台窗口上。

  2. 因为该服务器是自承载的,如果您以域用户的身份运行该客户端和服务器,则必须在客户端的 App.config 文件中指定一个标识:

         <client>
           <endpoint
              name="EchoServer"
              address=
              https://localhost:8000/TestService/BinaryEncoderOverHTTP
              binding=
              "netHttpBinding" bindingConfiguration="netHttpBinding"
              contract=
              "Microsoft.ServiceModel.Samples.Client.IEchoService" >
              <identity>
                 <userPrincipalName value="user_name@service_domain"/>
              </identity>
           </endpoint>
         </client>
    
  3. 启动 \client\bin 中的 Client.exe:将服务窗口中显示的 HTTPS URL 作为命令行参数进行传递。客户端活动将显示在客户端控制台应用程序上。

  4. 完成示例后,运行 Cleanup.bat 移除证书。