WCF的基礎範例 Part 1

  • 8214
  • 0
  • wcf
  • 2010-11-20

WCF的基礎範例

本篇是跟據 MSDN 上的使用者入門教學課程整理而成的

在這邊就不做太多的綴訴

有需要的朋友可以自己連上網址看

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

在這邊只根據幾的比較容易混淆的地方交代一下

 

以下為Server端的程式

使用時記得參考 System.ServiceModel.dll

	using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.IO;


namespace Microsoft.ServiceModel.Samples
{
    class Program
    {
        static void Main(string[] args)
        {
            using (ServiceHost mServiceHost = new ServiceHost(typeof(CalculatorService)))
            {
                try
                {
                    // Open the ServiceHost to start listening for messages.
                    mServiceHost.Open();

                    // The service can now be accessed.
                    Console.WriteLine("The service is ready.");
                    Console.WriteLine("Press <ENTER> to terminate service.");
                    Console.ReadLine();

                    // Close the ServiceHost.
                    mServiceHost.Close();
                }
                catch (TimeoutException timeProblem)
                {
                    Console.WriteLine(timeProblem.Message);
                    Console.ReadLine();
                }
                catch (CommunicationException commProblem)
                {
                    Console.WriteLine(commProblem.Message);
                    Console.ReadLine();
                }
            
            }// using ServiceHost


            Console.ReadLine();
        }
    }
    
    
    [ServiceContract]
    public interface ICalculator
    {
        [OperationContract]
        string Test(string szParam);
    }
    
    
    public class CalculatorService : ICalculator
    {
        public string Test(string szParam)
        {
            return "Call test" + szParam;
        }
    }
}

 

在此最容易混淆的部分為 App.config 設定檔

尤其是跟筆者一樣不太習慣使用App.config的

首先在專案上選擇 加入>新增項目

然後選擇應用程式組態檔

image

 

接下來使用Visual Studio提供的 WCF Service Configuration Editor 來開啟此App.config

image

 

建立一個新的Service

image

 

填入服務的名稱 Microsoft.ServiceModel.Samples.CalculatorService

服務名稱請對照上面的程式碼

image

 

填入合約的名稱 Microsoft.ServiceModel.Samples.ICalculator

合約名稱請對照上面的程式碼

image

 

在MSND中提供的範例

是使用HTTP協定

image

 

選擇 Advanced Web Services interoperability

然後再選擇 Simplex communication

image

 

在這邊使用本機的位址

Port則是18000

image

 

Advanced > Service Behaviors中新增一個Behaviors Configuration

image

 

在新的Behavior中新增一個Behavior element extension position

image

 

選擇serviceMetadata

image

 

然後將新增出來的serviceNetadata中的HttpGetEnalbed設定為 ture

 

 

 

 

 

 

 

 

 

 

 

 

 

 

image

 

回到最上方的Services

選擇我們剛剛新增的 Microsoft.ServiceModel.Samples.CalculatorService

將右方的項目中的BehaviorConfiguration選擇為我們剛剛新增的Behavior

image

 

然後再Microsoft.ServiceModel.Samples.CalculatorService下面的Host選項

新增一個BaseAddress

內容為要使用的位址

在這邊以 http://127.0.0.1:18000/service/ 為例

image

 

當以上設定完成之後

只要將檔案儲存

接下來將Server端起動就可以正常運作

如果是使用 Windows 7 或是 Vista 的朋友

記得使用Administrator的權限來執行程式

否則會產生錯誤

HTTP could not register URL http://+:18000/service/.

Your process does not have access rights to this namespace

(see http://go.microsoft.com/fwlink/?LinkId=70353 for details).

 

 

當程式執行起來之後

我們可以使用瀏覽器檢查執行是否正常

只要將剛剛設定的網址貼在瀏覽器上即可

image