首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 2005 原生 XML Web Services 開發指南

     編輯:關於SqlServer

功能概覽

SQL Server 2005 內建原生 XML Web Services(SOAP/HTTP 端點),無需 IIS 即可直接將預存程序或使用者定義函數發布為 Web 服務,支援 WS-Security、WSDL 1.1、SOAP 1.2,適合異構環境、行動裝置、非同步服務整合。

核心優勢

  • 異構互通:基於標準協定,跨平台、跨語言呼叫。
  • 安全性:內建 WS-Security,支援訊息層加密與簽章。
  • 部署簡單:無需中介層(IIS),減少維運複雜度。
  • 效能優異:資料存取在資料庫進程內完成,避免跨進程序列化開銷。
  • SOA 就緒:存儲程序即服務,輕鬆參與服務導向架構。

實作範例:發布員工訂單統計函數

1. 建立使用者定義函數

USE AdventureWorks;
GO
CREATE FUNCTION dbo.EmployeeOrderCount(@EmpID INT)
RETURNS INT
AS
BEGIN
    RETURN (
        SELECT COUNT(*)
        FROM Purchasing.PurchaseOrderHeader
        WHERE EmployeeID = @EmpID
        GROUP BY EmployeeID
    );
END;
GO

2. 建立 HTTP 端點並發布 SOAP 方法

CREATE ENDPOINT AdvEnd
STATE = STARTED
AS HTTP (
    SITE = 'localhost',
    PATH = '/AdvEnd',
    AUTHENTICATION = (INTEGRATED),
    PORTS = (CLEAR)
)
FOR SOAP (
    WEBMETHOD 'GetEmployeeOrderCount' (
        NAME = 'AdventureWorks.dbo.EmployeeOrderCount',
        SCHEMA = STANDARD
    ),
    WSDL = DEFAULT,
    BATCHES = DISABLED,
    DATABASE = 'AdventureWorks'
);

3. 檢視 WSDL

瀏覽器開啟 https://localhost/AdvEnd?wsdl 即可取得服務描述。

4. C# 用戶端呼叫

using System;
using advEndWS = ConsoleApp.advEnd; // Web 參考命名空間

class Program {
    static void Main() {
        advEndWS.AdvEnd ws = new advEndWS.AdvEnd();
        ws.Credentials = new System.Net.NetworkCredential("Administrator", "password");
        Console.Write("請輸入員工 ID (0 結束): ");
        while (int.TryParse(Console.ReadLine(), out int id) && id != 0) {
            try {
                int cnt = ws.GetEmployeeOrderCount(id);
                Console.WriteLine($"訂單數: {cnt}");
            } catch (Exception ex) {
                Console.WriteLine("錯誤: " + ex.Message);
            }
            Console.Write("請輸入員工 ID (0 結束): ");
        }
    }
}

進階設定

  • 驗證模式:Windows 整合驗證或混合模式(需 HTTPS + SSL 憑證)。
  • 自訂 WSDL:支援 ?wsdl、?wsdlsimple 及自訂 WSDL。
  • SSL 憑證建立:
    makecert -r -pe -n "CN=MySQLServer" -eku 1.3.6.1.5.5.7.3.1 -ss my -sr localmachine -sky Exchange -sp "Microsoft RSA SChannel Cryptographic Provider" -sy 12
    httpcfg set ssl /i 10.10.10.1:443 /h  /g
    
  • Session/Transaction:原生端點不支援 ASP.NET 樣式 Session,需在 SOAP Header 自行傳遞 SessionID 與 TransactionID。

適用場景

  • 行動/離線裝置直接查詢資料庫。
  • 訂單處理、庫存檢查等長時間工作流的非同步啟動(搭配 Service Broker)。
  • 跨企業 B2B 資料交換,無需部署中介 Web 伺服器。

結語

SQL Server 2005 原生 Web Services 為資料庫直接對外提供標準化服務能力,雖然後續版本逐漸由 WCF/ASP.NET Core 取代,但在舊系統維護與特定輕量整合場景仍具參考價值。

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