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

用 IE WebService 行為建立 ASP.NET 應用程式:HTC 元件、SOAP 通訊與非同步呼叫

     編輯:關於ASP.NET

背景:傳統 Postback 的缺點

整頁重新整理、閃爍、頻寬浪費、使用者體驗差。WebService 行為 (`webservice.htc`) 讓瀏覽器**不離開頁面**呼叫伺服器 WebMethod,取得資料後局部更新 DOM。

WebService 行為核心特性

  • 封裝 SOAP 封包組裝/解析,開發者無需懂 SOAP 細節。
  • 支援 `useService` (建立易用名稱)、`callService` (非同步呼叫)、`createUseOptions` (跨呼叫保存憑證/SSL)。
  • 僅需一個 `webservice.htc` 檔案置於頁面同目錄。
  • IE 5.0+ 支援 (現代瀏覽器不支援 HTC,屬歷史技術)。

實作範例:員工資料查詢

1. 建立 WebService (EmployeeService.asmx)

[WebService(Namespace = "https://tempuri.org/")]
public class EmployeeService : System.Web.Services.WebService
{
    [WebMethod]
    public XmlDocument GetEmpDetailsByEmpID(int employeeID)
    {
        string connStr = ConfigurationManager.AppSettings["connectionString"];
        using (var conn = new SqlConnection(connStr))
        {
            var ds = new DataSet("EmployeesRoot");
            var cmd = new SqlCommand("SELECT * FROM Employees WHERE EmployeeID = @ID", conn);
            cmd.Parameters.AddWithValue("@ID", employeeID);
            var adapter = new SqlDataAdapter(cmd);
            adapter.Fill(ds, "Employees");
            var xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(ds.GetXml());
            return xmlDoc;
        }
    }
}

2. 前端頁面 (Default.htm)

<html xmlns="https://www.w3.org/1999/xhtml">
<head>
<title>Employee Lookup</title>
<style>
  .employee { border:1px solid #ccc; padding:10px; margin:10px; background:#f9f9f9; }
</style>
<script language="javascript" type="text/javascript">
  // 1. 連結 HTC 行為
  <!--
  
          

${emp.selectSingleNode("FirstName").text} ${emp.selectSingleNode("LastName").text}

職稱: ${emp.selectSingleNode("Title").text}

城市: ${emp.selectSingleNode("City").text}

電話: ${emp.selectSingleNode("HomePhone").text}

`; } else { div.innerHTML = "查無此員工"; } } </script> </head> <body> <!-- HTC 行為元件 --> <object id="wsEmployee" classid="CLSID:3050F819-98B5-11CF-BB82-00AA00BDCE0B"> <param name="URL" value="webservice.htc" /> </object> <h2>員工資料查詢</h2> <input type="text" id="txtEmpID" placeholder="員工編號" /> <input type="button" value="查詢" onclick="lookup()" /> <div id="result"></div> </body> </html>

關鍵技術點

項目說明
webservice.htcMicrosoft 提供的 HTC 元件,需下載置於頁面同目錄。
useService(wsdl, friendlyName)讀取 WSDL 建立 Proxy,`friendlyName` 為 JS 物件名稱。
callService(callback, methodName, ...args)非同步呼叫,完成時觸發 `callback(result)`。
result.value / result.error成功回傳值 (型別對應 WebMethod 回傳) / 錯誤物件。
XML DOM 操作IE 專有 `selectSingleNode`、`text` 屬性解析 XML 回傳值。

現代替代方案 (IE HTC 已淘汰)

  1. AJAX + ASMX/ASHX:`$.ajax`/`fetch` 呼叫伺服器端點,回傳 JSON。
  2. ASP.NET Web API / ASP.NET Core MVC:RESTful 端點,標準 HTTP + JSON。
  3. SignalR:伺服器主動推送,即時雙向通訊。
  4. Blazor WebAssembly:C# 直接在瀏覽器執行,無需 JS 呼叫。

總結

IE WebService 行為是早期「無刷新局部更新」的先驅技術,透過 HTC 封裝 SOAP 通訊,提供非同步呼叫與結果回呼機制。雖已被現代 AJAX/WebAPI 取代,但其「客戶端非同步呼叫伺服器方法、局部更新 UI」的架構思想延續至今。理解此演進有助於掌握前後端分離架構的歷史脈絡。

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