Windows Communication Foundation (WCF) 是 .NET 統一的分散式應用開發框架,整合了 ASMX、Remoting、WSE、MSMQ 等技術。本文以最簡範例示範 WCF 服務端與客戶端的完整建立流程。
[ServiceContract]
interface IWCFService {
[OperationContract]
void SayHello();
}
class WCFService : IWCFService {
public void SayHello() => Console.WriteLine("Hello, You!");
}
以 Console Application 為例:
class HostMain {
static void Main() {
var host = new ServiceHost(typeof(WCFService), new Uri("https://localhost:8080/HelloToYou"));
host.AddServiceEndpoint(typeof(IWCFService), new BasicHttpBinding(), "Svc");
host.Open();
Console.WriteLine("I'm Here. Press any key to exit.");
Console.ReadKey();
host.Close();
}
}
專案新增 App.config,複製錯誤頁面建議的配置片段,修改 service name 為完整類別名稱 WCFHelloWorld.WCFService,確保 behaviorConfiguration 與 <behavior> 名稱一致。



cd "C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin"
svcutil.exe https://localhost:8080/HelloToYou
產生 output.config(重命名為 app.config)與 WCFServiceClient.cs。

將產生的兩個檔案加入專案,編寫呼叫代碼:
class WCFClientApp {
static void Main() {
using (var client = new WCFServiceClient()) {
client.SayHello();
}
Console.ReadKey();
}
}
先啟動服務端,再啟動客戶端,主控台輸出 Hello, You!。

| 環節 | 關鍵動作 |
|---|---|
| 合約定義 | [ServiceContract] + [OperationContract] |
| 寄宿 | ServiceHost + AddServiceEndpoint(Binding, Address) |
| 中繼資料 | <serviceMetadata httpGetEnabled="true"/> 在 behavior 中啟用 |
| Proxy 產生 | svcutil.exe [服務 URL] |
| 客戶端呼叫 | using (var client = new ClientProxy()) 確保正確關閉 |
[DataContract]/[DataMember]) 與序列化FaultException<T>) 與 IErrorHandlerwsHttpBinding + reliableSession)WebHttpBinding + WebGet/WebInvoke)