[WCF] 建立 WCF 服務 (單機版)

  • 6336
  • 0
  • 2010-01-14

[WCF] 建立 WCF 服務 (單機版)

Introduction

何謂 WCF (Windows Communication Foundation) :http://en.wikipedia.org/wiki/Windows_Communication_Foundation

這是新一代的服務元件,用來幫助應用程式繫結服務端點功能的服務。透過 WCF 架構所提供的支援,

無論你是要建立分享給其他應用應用程式使用的服務,或是要存取已經存在的服務,都可以輕鬆達成。

其他更詳細的說明:

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

WCF 概要

 

自己做個練習紀錄一下,簡單呼叫 服務端的功能。

 

Example

首先建立一個空白方案並且加入應用程式專案與加入新網站選取 WCF 服務,所以方案如圖

2010-01-09_181910

 

在 WCF 專案中,自動幫我們建立了一些資料夾與檔案

2010-01-09_182120

 

其中 IService.cs

 


// 注意: 若變更此處的介面名稱 "IService",也必須更新 Web.config 中 "IService" 的參考。
[ServiceContract]//用來宣告服務端點(套用在介面宣告前)
public interface IService
{

    [OperationContract]//用來宣告服務功能(套用在介面方法前)
	string GetData(int value);

	[OperationContract]
	CompositeType GetDataUsingDataContract(CompositeType composite);

	// 待辦事項: 在此新增您的服務作業
}

//使用下列範例中所示的資料合約,新增複合型別至服務作業。
[DataContract]//用來宣告服務功能執行時,所傳遞的資料規格(套用在類別宣告前)
public class CompositeType
{
	bool boolValue = true;
	string stringValue = "Hello ";

	[DataMember]
	public bool BoolValue
	{
		get { return boolValue; }
		set { boolValue = value; }
	}

	[DataMember]
	public string StringValue
	{
		get { return stringValue; }
		set { stringValue = value; }
	}
}

 

 

Service.cs


// 注意: 若變更此處的類別名稱 "Service",也必須更新 Web.config 與關聯之 .svc 檔案中 "Service" 的參考。
public class Service : IService
{
	public string GetData(int value)
	{
		return string.Format("You entered: {0}", value);
	}

	public CompositeType GetDataUsingDataContract(CompositeType composite)
	{
		if (composite.BoolValue)
		{
			composite.StringValue += "Suffix";
		}
		return composite;
	}
}

 

 

 

這時點選服務專案,並在方案總管右側點選 asp.net 組態

2010-01-09_184655

 

進入組態管理,這定啟用偵錯

2010-01-09_184834

 

 

接下來在 AWClient 專案中,加入服務參考,選擇方案中的服務,出現 .svc 後,點選服務自動會偵測,

修改下方命名空間名稱為 AWDService

2010-01-09_183536

 

這時 AWClient 專案檔案結構如圖

2010-01-09_183908

 

 

其中 Service References 與 app.config 是加入服務參考後,自動產生的。

 

撰寫 Client 端程式碼與簡單的介面表現

2010-01-09_190357


        private void btnExcuteWCF_Click(object sender, EventArgs e) {
            //建立服務元件
            AWDService.ServiceClient myServiceClient = new AWClient.AWDService.ServiceClient();
            //呼叫 GetData 功能 ,傳回字串
            string sValue = myServiceClient.GetData(5566);
            MessageBox.Show(sValue);
        }

 

 

執行結果

2010-01-09_185001

 

Link

三小俠  小弟獻醜,歡迎指教