自托管消費WCF服務
消費自托管WCF服務的整個過程,一步步地解釋以及充足的編碼和屏幕截圖是非常有必要。
第1步:服務托管,現在我們需要實現的代理類客戶端。創建代理的方式不同。
- 使用svcutil.exe,我們可以創建代理類和配置文件以及端點。
- 添加服務引用到客戶端應用程序。
- 實現 ClientBase<T> 類
這三種方法,實現ClientBase<T>類是最好的做法。如果使用了兩個rest方法,需要創建一個代理類,每一次當我們做出改變服務的實現。但是,這不是對ClientBase<T>類情況。這將創建代理隻能在運行,所以它會打理一切。
為此,創建一個代理類,其中包括refrencesof System.ServiceModel和MyCalculatorService。
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的參考。
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:運行客戶端應用程序之前,需要運行的服務。客戶端應用程序的輸出如下所示。