▪️WCF:Windows Communication Foundation
2022-10-19
| 2025-3-19
字數 883閱讀時間 3 分鐘

內文導引

WCF 是甚麼?

WCF是一種開發工具,用來在微軟系統上開發(Develop)及部屬(Deploy)服務(Service)。
WCF可以被視為一個更好的.NET,讓你可以提供CLR(Common Language Runtime)(註1)的服務,或是使用其他CLR的服務
WCF目前包裝在.NET 4.5版本裡,所以只有Windows XP之後的作業系統能夠支援。
大部分的WCF功能都包含在一個叫做System.ServiceModel.dll裡,開發時必須將其加入參考才能使用WCF的功能
 

什麼是服務 Service ?

服務是提供給外界使用的一個功能。
用戶端 Client Side: 使用服務的人
服務端 Server Side: 提供服務的人
WCF的訊息都是基於SOAP,且並不依賴於單一的通訊協定。不像Web Service,WCF的服務可以使用HTTP以外的通訊協定。(例如TCP)
在WCF裡,每個服務都有一個唯一的位置。位置提供了兩個重要的資訊:
  1. 服務所在的位置
  1. 通訊協定
 

契約 Contracts

1. Service Contracts 服務契約
說明服務提供了哪些方法給用戶端使用。
2. Data Contracts 資料契約
定義出服務使用的資料型態。可以是基本資料型態像是`int`或是`string`,也可以是自定義的型別。
3. Fault Contracts 錯誤契約
定義如果服務出現例外狀況要如何傳送資訊給用戶端。
4. Message Contracts 訊息契約
讓服務端可以直接跟訊息溝通,不是WCF常見的作法,在這邊不贅述。
服務契約範例:
注意:
  • 實作服務的類別不允許使用有帶參數的建構子,因為WCF只會使用預設的建構子。
  • 雖然類別可以使用索引子(indexer)或是靜態成員(static member)等內部屬性,但是WCF的用戶端是無法使用到這些屬性的。
  • 還有盡量不要在實作服務的類別上直接使用[ServiceContract],拆開來才可以讓不同類別實作同一個服務契約,增加擴充性。

名稱及命名空間 Names And Namespaces

我們可以為契約定義一個命名空間,使用Namespace的屬性,例如:
[ServiceContract(Namespace = "MyNamespace")] interface IMyContract{...}
如果沒有給予命名空間的話預設會是 http://tempuri.org。如果是面向大眾的服務也可以使用公司的URL或是應用程式名稱。
名稱的預設會是介面的名稱,不過也可以用Name屬性來定義另外一個名稱,這名稱將會顯示在Metadata中, 例如:
 

參考文獻

手把手教你寫WCF服務 - IIS裝載(IIS Hosting)及自裝載(Self-hosting) (不依賴模板)
前幾天寫了 Programming WCF Services 的筆記,大概把WCF的介紹拆成三篇文: WCF (Windows Communication Foundation) 詳細介紹(一) - 什麼是WCF?(上) WCF (Windows Communication Foundation) 詳細介紹(二) - 什麼是WCF?(中) WCF (Windows Communication Foundation) 詳細介紹(三) - 什麼是WCF?(下) 寫完之後自己看了一下發現,第一次看的人可能全部看完還是不知道WCF怎麼部屬服務阿XD 所以這篇就是要來Step by Step的教學一下,如果連WCF是什麼都不知道的人記得先讀一下上面的介紹文喔。 今天會介紹兩種裝載方式,分別是 IIS裝載及 自裝載 。 Visual Studio一堆模板都好好用呀!為啥不用呢? 原因是模板通常會包入很多我們其實不需要的東西,導致整個專案過於肥大,所以我傾向不使用模板,先用最極簡的方式把服務Run起來,之後需要什麼再加就好囉! 另外還有一個很重要的原因就是,如果什麼都依賴Visual Studio強大的模板的話,其實到最後會不知道自己在幹嘛,所以初學的時候還是建議全部自己手刻一遍,等把基礎都掌握住,之後開發因為速度的因素使用模板也是OK的。 一個WCF程式由下列組態檔(Assembly)所組成,開發時也可以按照以下順序去開發: 接下來我們來分別看看如何實作各個組態檔吧!
手把手教你寫WCF服務 - IIS裝載(IIS Hosting)及自裝載(Self-hosting) (不依賴模板)
  • Dotnet
  • string to base64 string OS:作業系統相關操作
    Loading...