WCF的基礎範例 Part 2
我們在上一篇文章中
已經建立了 WCF 的Server端
在這篇中我們將要建立 Client
Client端的連線物件基本上是不需要我們撰寫的
主要是由工具產生
步驟如下
1. 開啟 Visual Studio Tools 下的命令提示字元
2. 切換到Client的工作目錄下面
3. 輸入命令 svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://127.0.0.1:18000/service/
/language:cs 代表使用的語言是C#
/out:generatedProxy.cs 要產生的連線物件的檔案名稱
/config:app.config 設定檔名稱 ( 這個基本上都是用app.config )
最後一個參數是 Server的連線路徑
4. 將 app.config 與 generatedProxy.cs 這兩個檔案加入client專案中
5. 在程式碼中實作
以下為程式碼的實作內容
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.ServiceModel; using System.ServiceModel.Description; namespace Client { class Program { static void Main(string[] args) { CalculatorClient mCalculatorClient = new CalculatorClient(); mCalculatorClient.Open(); Console.WriteLine( mCalculatorClient.Test(" param 1 ")); mCalculatorClient.Close(); Console.ReadLine(); } } }
另外附上連線物件 generatedProxy.cs 的程式碼內容
這檔案中的程式碼
全部是由工具產生的
並不是由我撰寫的
//------------------------------------------------------------------------------ // <auto-generated> // This code was generated by a tool. // Runtime Version:2.0.50727.4927 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // </auto-generated> //------------------------------------------------------------------------------ [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] [System.ServiceModel.ServiceContractAttribute(ConfigurationName="ICalculator")] public interface ICalculator { [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICalculator/Test", ReplyAction="http://tempuri.org/ICalculator/TestResponse")] string Test(string szParam); } [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] public interface ICalculatorChannel : ICalculator, System.ServiceModel.IClientChannel { } [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")] public partial class CalculatorClient : System.ServiceModel.ClientBase<ICalculator>, ICalculator { public CalculatorClient() { } public CalculatorClient(string endpointConfigurationName) : base(endpointConfigurationName) { } public CalculatorClient(string endpointConfigurationName, string remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public CalculatorClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public CalculatorClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) : base(binding, remoteAddress) { } public string Test(string szParam) { return base.Channel.Test(szParam); } }
參考資料