採用 介面契約優先 設計:定義 IApplicationManager、IMembershipManager、IPasswordManager、IRoleManager、IUserManager 五大介面,以 [WebServiceBinding]、[WebMethod] 標記暴露為 Web Service。實作類別繼承介面,編譯器強制完整實作所有方法。
介面無法直接加 [WebService] 屬性,需建立抽象 Shim 類別繼承介面,標記 [WebService],再以 .asmx 檔案指向 Shim 類別暴露 WSDL。客戶端可用 wsdl.exe /serverInterface 產生 Proxy。
[WebService(Name="IApplicationManager", Namespace="https://CredentialsServices")]
abstract class IApplicationManagerShim : IApplicationManager {
public abstract void DeleteApplication(string application);
public abstract string[] GetApplications();
public abstract void DeleteAllApplications();
}
// IApplicationManager.asmx
// <%@ WebService Language="C#" CodeBehind="~/App_Code/IApplicationManagerShim.cs" Class="IApplicationManagerShim" %>
[WebMethod(TransactionOption=TransactionOption.Required)],確保刪除應用程式等複雜操作的原子性。消費 Web Service,提供豐富 UI:應用程式管理、使用者/角色 CRUD、密碼原則設定、解鎖帳號、批次匯入等。介面與實作解耦,未來可替換為 WCF/gRPC 服務無需調整客戶端邏輯。