程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WCF示例(3) - 綁定Binding(basicHttpBinding和netTcpBinding)

WCF示例(3) - 綁定Binding(basicHttpBinding和netTcpBinding)

編輯:關於.NET

介紹

WCF(Windows Communication Foundation) - 綁定Binding:Http以basicHttpBinding為例,Tcp以netTcpBinding為例。

示例

1、服務

IHello.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
  
using System.ServiceModel;
  
namespace WCF.ServiceLib.Binding
{
  /**//// <summary>
  /// IHello接口
  /// </summary>
  [ServiceContract]
  public interface IHello
  {
    /**//// <summary>
    /// 打招呼方法
    /// </summary>
    /// <param name="name">人名</param>
    /// <returns></returns>
    [OperationContract]
    string SayHello(string name);
  }
}

Hello.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
  
using System.ServiceModel;
  
namespace WCF.ServiceLib.Binding
{
  /**//// <summary>
  /// Hello類
  /// </summary>
  public class Hello : IHello
  {
    /**//// <summary>
    /// 打招呼方法
    /// </summary>
    /// <param name="name">人名</param>
    /// <returns></returns>
    public string SayHello(string name)
    {
      return "Hello: " + name;
    }
  }
}

2、宿主

Hello.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
  
using System.ServiceModel;
  
namespace WCF.ServiceHost2.Binding
{
  class Hello
  {
    static void Main(string[] args)
    {
      using (ServiceHost host = new ServiceHost(typeof(WCF.ServiceLib.Binding.Hello)))
      {
        // 寫代碼的方式做host
        // host.AddServiceEndpoint(typeof(WCF.ServiceLib.Binding.IHello), new NetTcpBinding(), "net.tcp://localhost:54321/Binding/Hello");
        host.Open();
  
        Console.WriteLine("服務已啟動");
        Console.WriteLine("按<ENTER>停止服務");
        Console.ReadLine();
      }
    }
  }
}

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <system.serviceModel>
  <services>
   <!--name - 提供服務的類名-->
   <!--behaviorConfiguration - 指定相關的行為配置-->
   <service name="WCF.ServiceLib.Binding.Hello" behaviorConfiguration="BindingBehavior">
    <!--address - 服務地址-->
    <!--binding - 通信方式-->
    <!--contract - 服務契約-->
    <!--<endpoint binding="basicHttpBinding" contract="WCF.ServiceLib.Binding.IHello" address="Hello" />-->
    <endpoint binding="netTcpBinding" contract="WCF.ServiceLib.Binding.IHello" address="net.tcp://localhost:54321/Binding/Hello" />
    <!--元數據交換的endpoint-->
    <!--注:address是mex,它會和host/baseAddresses節點中的baseAddress做拼接,即提供元數據交換的地址為:http://localhost:12345/Binding/mex-->
    <endpoint binding="mexHttpBinding" contract="IMetadataExchange" address="mex" />
    <host>
     <baseAddresses>
      <add baseAddress="http://localhost:12345/Binding/"/>
     </baseAddresses>
    </host>
   </service>
  </services>
  <behaviors>
   <serviceBehaviors>
    <behavior name="BindingBehavior">
     <!--httpGetEnabled - 使用get方式提供服務-->
     <serviceMetadata httpGetEnabled="true" />
    </behavior>
   </serviceBehaviors>
  </behaviors>
 </system.serviceModel>
</configuration>

3、客戶端

Hello.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
  
using System.ServiceModel;
  
namespace Client2.Binding
{
  public partial class Hello : Form
  {
    public Hello()
    {
      InitializeComponent();
    }
  
    private void btnSayHello_Click(object sender, EventArgs e)
    {
      // 寫代碼的方式做client
      // IHello proxy = ChannelFactory<IHello>.CreateChannel(new NetTcpBinding(), new EndpointAddress("net.tcp://localhost:54321/Binding/Hello"));
  
      Binding.HelloClient proxy = new Binding.HelloClient();
  
      MessageBox.Show(proxy.SayHello(txtName.Text));
  
      proxy.Close();
    }
  }
}

App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <system.serviceModel>
  <client>
   <!--address - 服務地址-->
   <!--binding - 通信方式-->
   <!--contract - 服務契約-->
   <!--<endpoint address="http://localhost:12345/Binding/Hello" binding="basicHttpBinding" contract="Binding.IHello" />-->
   <endpoint address="net.tcp://localhost:54321/Binding/Hello" binding="netTcpBinding" contract="Binding.IHello" />
  </client>
 </system.serviceModel>
</configuration>

運行結果:

單擊"Hello"按鈕後彈出提示框,顯示"Hello: webabcd"

OK

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved