公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




2010年5月27日 星期四

WCF Service的介面設計

WCF Service 透過Service Contract提供服務的介面給Client端的應用程式使用。常常會有人問我,如果WCF Service的服務介面需要修改,應該要怎麼辦的問題。如果從元件的角度出發來看的話,介面修改相對的所有使用該元件的應用程式也都必須要跟著被修改,這對於可能會需要隨著企業邏輯做調整的WCF服務來說,會造成不小的影響

在繼續這個話題之前,先請大家思考一下,如果你家的電器插頭,每一種電器插頭的規格都不一樣的話,會是怎樣的世界?

從這樣的角度去思考的話,服務的介面規格當然是設計的越簡單越好。微軟所提供的Design Guideline中提到:

  • Avoid tight coupling across layers.
  • Design coarse-gained operations.

對於90%以上的服務來說,我們需要兩個基本的功能:

1. 執行指令並回傳運算結果或是錯誤資訊。

2. 確定目前服務是正常的。

根據這樣的出發點,我們可以設計出一個通用的WCF Service介面:

[ServiceContrract]

public interface ICommonService{

[OperationContract]

object Execute (string command, Dictionary<string,object> parameters, out string errorMessage);

[OperationContract]

bool Diagnostics ();

}

在這樣的介面設計之下,你的服務不管要增加多少功能,或是要減少功能,都不會需要更動到服務的介面規格,只需要支援新的command指令即可。但是需要注意的是,因為在這個服務介面規格中是使用object型別傳遞資料,因此你必須要另外再使用Data Contract宣告可序列化物件,然後透過ServiceKnownType將該物件定義加入WCF服務規格中。

沒有留言:

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)