自託管消費WCF服務


消費自託管WCF服務的整個過程,一步步地解釋以及充足的編碼和螢幕截圖是非常有必要。

第1步:服務託管,現在我們需要實現的代理類用戶端。建立代理的方式不同。

  • 使用svcutil.exe,我們可以建立代理類和組態檔案以及端點。
  • 新增服務參照到用戶端應用程式。
  • 實現 ClientBase<T> 類

這三種方法,實現ClientBase<T>類是最好的做法。如果使用了兩個rest方法,需要建立一個代理類,每一次當我們做出改變服務的實現。但是,這不是對ClientBase<T>類情況。這將建立代理只能在執行,所以它會打理一切。

為此,建立一個代理類,其中包括refrencesof System.ServiceModel和MyCalculatorService。

Consuming WCF that is Self hosted

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using MyCalculatorService;

namespace MyCalculatorServiceProxy
{
  Public class MyCalculatorServiceProxy : 
  //WCF create proxy for ISimpleCalculator using ClientBase
  ClientBase<ISimpleCalculator>,
  ISimpleCalculator
  {
     Public int Add(int num1, int num2)
     {
        //Call base to do funtion
        returnbase.Channel.Add(num1, num2);
     }
  }
}

現在,建立一個控制台應用程式,其中包括System.ServiceModel和MyCalculatorServiceProxy的參考。

Consuming WCF that is Self hosted

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using MyCalculatorServiceProxy;

namespace MyCalculatorServiceClient
{
  classProgram
  {
     Static void Main(string[] args)
     {
        MyCalculatorServiceProxy.MyCalculatorServiceProxy proxy = newMyCalculatorServiceProxy.MyCalculatorServiceProxy();
        Console.WriteLine("Client is running at " + DateTime.Now.ToString());
        Console.WriteLine("Sum of two numbers... 5+5 =" + proxy.Add(5, 5));
        Console.ReadLine();
     }
  }
}

步驟2:結束點(相同服務)的資訊應該被新增到用戶端應用程式的組態檔案。

<?xmlversion="1.0"encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
	 <client>
		<endpoint address ="http://localhost:8090/MyCalculatorServiceProxy/ISimpleCalculator"
				binding ="wsHttpBinding"
				contract ="MyCalculatorServiceProxy.ISimpleCalculator">
        </endpoint>
     </client>
  </system.serviceModel>
</configuration>

步驟3:執行用戶端應用程式之前,需要執行的服務。用戶端應用程式的輸出如下所示。

Consuming WCF that is Self hosted