WCF的基礎範例 Part 2

  • 2009
  • 0
  • wcf
  • 2010-11-20

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);
    }
}

 

參考資料

http://msdn.microsoft.com/zh-tw/library/ms733133.aspx