首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WCF 分散式開發必備知識 (四):Web Service 深度解析

     編輯:關於.NET

Web Service 基礎概念

定義 (W3C):支援機器間透過網路互操作的軟體系統。一組可透過網路呼叫的應用程式 API,採開放協定通訊、獨立自描述、可經 UDDI 發現。

四大核心標準

標準角色
XML資料描述語言,自定義標籤,配合 DTD/Schema 實現自描述
SOAP簡單物件存取協定:封裝、編碼規則、RPC 表示、綁定 (HTTP/TCP 等)
WSDLWeb Services 描述語言:Types、Message、portType、Binding、Services 五大元素,實現自我描述
UDDI統一描述、發現與整合:服務註冊發現框架,基於 XML/HTTP/DNS

四類應用場景

  1. 企業導向 (B2B 整合、ERP 等)
  2. 消費者導向 (B2C 整合股票、訂票等服務)
  3. 裝置導向 (手機、PDA、家電終端)
  4. 系統導向 (跨系統認證、監控等基礎服務)

優缺點評析

優點

  • 跨平台 (XML/XSD 標準)
  • 自描述 (WSDL)
  • 模組化開發部署
  • 穿透防火牆 (HTTP 協定)

缺點

  • 效能較低 (XML 序列化/解析開銷),不適合單一應用內部呼叫
  • 無內建安全機制,需依賴 IIS/HTTP/WS-Security 等外部方案

適用與不適用場景

適用:跨防火牆通訊、企業應用整合 (EAI)、B2B 電子商務整合、跨平台元件重用。
不適用:單機應用 (直接呼叫 Win32 API/COM 更高效)、區域網同構系統 (Remoting/COM+ 效能優越)。

安全機制實作:SOAP Header 驗證

部署方式:IIS 託管 (最常用,可用 ASP.NET 認證授權)、Console、Windows Service。

簡易驗證架構

  1. 自訂 MySoapHeader : SoapHeader 傳遞 Token。
  2. 獨立驗證類別 UserValidation (可擴充資料庫驗證)。
  3. Web Service 類別標記 [SoapHeader("_authenticationToken")],方法中驗證 Token。
  4. 客戶端設定 Proxy 的 MySoapHeaderValue 呼叫方法。

代碼關鍵片段

// 自訂 SOAP Header
public class MySoapHeader : SoapHeader {
    public string Token { get; set; }
}

// 驗證邏輯
public static bool IsUserLegal(string sToken) {
    return string.Equals("FrankXuLei", sToken); // 實際應查資料庫
}

// 服務端
[WebService(Namespace = "https://www.cnblogs.com/frank_xl/")]
public class FrankXuWebService : WebService {
    public MySoapHeader _authenticationToken;
    [SoapHeader("_authenticationToken")]
    [WebMethod]
    public string HelloFrank() {
        if (_authenticationToken != null && UserValidation.IsUserLegal(_authenticationToken.Token))
            return "Hello Frank,WebMethod is called sucessfully";
        throw new Exception("Authentication Failed");
    }
}

// 客戶端
localhost.MySoapHeader header = new localhost.MySoapHeader { Token = "FrankXuLei" };
localhost.FrankXuWebService svc = new localhost.FrankXuWebService();
svc.MySoapHeaderValue = header;
string result = svc.HelloFrank(); // 成功回傳

IIS 進階安全設定

  • 身分驗證:整合 Windows 驗證、網域、.NET Passport
  • IP/網域限制:僅允許特定 IP 存取
  • SSL 加密傳輸:保護 Token/資料機密性
  • WSE (Web Services Enhancements) 實現訊息層安全

IIS 驗證設定

IP 限制設定

IP 限制進階

總結

本系列完整回顧 MSMQ、Remoting、Enterprise Services、Web Service 四大分散式技術,為學習 WCF 奠定堅實基礎。Web Service 雖非萬能,但在異構系統整合中不可替代。安全需分層防護:傳輸層 (SSL) + 訊息層 (WS-Security/WSE) + 應用層 (自訂驗證)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved