用戶端應用程式服務概觀
用戶端應用程式服務會提供從 Windows Form 和 Windows Presentation Foundation (WPF) 應用程式對 Microsoft AJAX 登入、角色及設定檔等服務的簡化存取。 Microsoft AJAX 應用程式服務隨附於 Visual Studio 2008 和 .NET Framework 3.5 版的 Microsoft ASP.NET 2.0 AJAX Extensions 中。 這些服務能夠讓多個 Web 與 Windows 架構應用程式,在單一伺服器上共用使用者資訊與使用者管理功能。
用戶端應用程式服務包含連接至 Web 服務擴充性模型的用戶端服務提供者,以啟用下列 Windows 架構應用程式的功能:
簡易用戶端組態。 您可以使用 Visual Studio 專案設計工具,或是在專案的 App.config 檔中指定用戶端服務提供者,啟用和設定登入、角色以及設定檔服務。 如需詳細資訊,請參閱 HOW TO:設定用戶端應用程式服務。
簡易程式設計。 在啟用與設定用戶端應用程式服務後,可以透過現有 .NET Framework 2.0 成員資格、角色以及應用程式設定類別,以間接方式存取服務提供者。 您也可以直接存取實作用戶端應用程式服務的 .NET Framework 3.5 版類別。 但是在大多數情況下,不需要直接存取。如需用戶端應用程式服務類別的詳細資訊,請參閱本主題的<用戶端應用程式服務類別>一節。
離線支援。 Windows 架構應用程式通常需要在偶爾連接的環境中作業。 當應用程式在線上時,用戶端服務提供者會快取從伺服器所擷取的值,以供應用程式離線時使用。 如需詳細資訊,請參閱 HOW TO:使用用戶端應用程式服務離線工作。
與 Visual Studio 應用程式設定設計工具整合。 當您將設定加入至 Visual Studio 中的專案時,可以指定要透過用戶端設定服務提供者存取的設定。
下列各章節描述這些功能的細節。 如需 Microsoft AJAX 應用程式服務的詳細資訊,請參閱 ASP.NET 應用程式服務概觀。
驗證
您可以透過現有的 Microsoft AJAX 驗證服務,使用用戶端應用程式服務驗證使用者。 您可以使用 Windows 或表單驗證來驗證使用者。 Windows 驗證的意思是,當使用者登入至電腦或網域時,作業系統所提供的使用者識別。 您通常會使用 Windows 驗證搭配部署在企業內部網路的應用程式。 表單驗證的意思是,您必須將登入控制項包含在應用程式中,並且將取得的認證傳遞至驗證提供者。 您通常會使用表單驗證搭配部署在網際網路的應用程式。
若要驗證使用者,您可以呼叫 static Membership.ValidateUser 方法。 這個方法會存取為應用程式設定的用戶端服務提供者,並傳回 Boolean 值,指出使用者是否有效。 如需詳細資訊,請參閱 HOW TO:使用用戶端應用程式服務實作使用者登入。
當使用 Windows 驗證時,您必須傳遞空字串或 null 當做 ValidateUser 方法的參數。 使用 Windows 驗證時,這個方法呼叫一定會傳回 true。
使用表單驗證時,ValidateUser 方法將傳回值,指出遠端服務是否已驗證使用者。 如果驗證成功,驗證 Cookie 就會儲存在本機硬碟中。 這個 Cookie 是用來在存取角色和設定服務時確認驗證。
使用表單驗證時,您可以將使用者名稱和密碼傳遞至 ValidateUser 方法。 您也可以以空字串或 null 為參數傳遞,以使用認證提供者。 認證提供者是您在應用程式組態中提供和指定的類別。 認證提供者類別必須實作 IClientFormsAuthenticationCredentialsProvider 介面,其具有名為 GetCredentials 的單一方法。 使用認證提供者,可讓您在各應用程式之間共用單一登入對話方塊。 如需詳細資訊,請參閱 HOW TO:設定用戶端應用程式服務。
當您將應用程式設定為以表單驗證使用認證提供者時,必須以空字串或 null 當做 ValidateUser 方法的參數傳遞。 然後服務提供者會呼叫 IClientFormsAuthenticationCredentialsProvider.GetCredentials 方法實作。 您通常會實作這個方法以顯示對話方塊,然後傳回已填入的 ClientFormsAuthenticationCredentials 物件。
如需驗證的詳細資訊,請參閱 ASP.NET 驗證。 如需如何設定 Microsoft AJAX 驗證服務的詳細資訊,請參閱搭配 Microsoft Ajax 使用表單驗證。
角色
您可以使用用戶端應用程式服務,從現有 Microsoft AJAX 角色服務擷取角色資訊。 若要判斷目前已驗證的使用者是否具有特定的角色,可以呼叫從 static Thread.CurrentPrincipal 屬性所擷取之 IPrincipal 參考的 IsInRole 方法。 IsInRole 方法會將角色名稱當做參數,然後傳回 Boolean 值,指出目前使用者是否具有指定的角色。 如果使用者並未通過驗證或是不具有指定的角色,這個方法將傳回 false。
如需詳細資訊,請參閱 HOW TO:使用用戶端應用程式服務存取使用者角色。 如需如何設定 Microsoft AJAX 角色服務的詳細資訊,請參閱搭配 Microsoft Ajax 使用角色資訊。
設定
您可以使用用戶端應用程式服務,從現有 Microsoft AJAX 設定檔服務擷取使用者應用程式設定。 用戶端應用程式服務 Web 設定功能,會與 .NET Framework 2.0 中提供的應用程式設定功能整合。若要擷取 Web 設定,請先使用 Visual Studio 專案設計工具的 [設定] 索引標籤,為專案產生 Settings 類別 (在 C# 中是當做 Properties.Settings.Default 存取,而在 Visual Basic 中是當做 My.Settings 存取)。 在 [設定] 索引標籤上,您可以使用 [載入 Web 設定] 按鈕擷取 Web 設定,然後將其加入至所產生的 Settings 類別。 您可以將 Web 設定設定為讓所有經過驗證的使用者使用,或是讓所有匿名使用者使用。
如需詳細資訊,請參閱 HOW TO:透過用戶端應用程式服務存取使用者設定。 如需應用程式設定的詳細資訊,請參閱應用程式設定概觀。 如需如何實作專屬設定類別,而不是在 Visual Studio 中產生之類別的詳細資訊,請參閱 HOW TO:建立應用程式設定。 如需如何設定 Microsoft AJAX 設定檔服務的詳細資訊,請參閱搭配 Microsoft Ajax 使用設定檔資訊。
用戶端應用程式服務類別
下表說明實作用戶端應用程式服務功能的類別。
只使用主要驗證、角色,以及設定功能的應用程式,將不需要直接存取這些類別。 相反地,這類應用程式會使用應用程式組態和先前章節中所描述的 API,以間接方式存取用戶端應用程式服務提供者。 您將會直接存取這些類別,以實作其他功能,例如使用者登出和離線功能。
注意事項 |
---|
所有用戶端應用程式服務 API 都是同步的。 用戶端應用程式服務不會直接支援非同步行為。 |
用戶端應用程式服務提供者會實作或擴充標準 .NET Framework 2.0 型別,但是不會實作這些型別所定義的每個成員和功能。 例如,您無法使用用戶端應用程式服務提供者實作使用者管理應用程式,以建立新使用者和管理角色成員資格。 若要實作這項功能,您必須正確使用 Web 應用程式和伺服器端的程式碼。 若要判斷哪些成員並未實作,請參閱參考文件 (可以從此表中的連結存取)。
類別 |
說明 |
---|---|
這個類別會管理表單驗證的使用者識別和驗證 Cookie。 直接存取這個類別的主要原因,是要呼叫以無訊息模式重新驗證使用者的 RevalidateUser 方法 (例如,從離線切換至線上模式時)。 在以表單驗證來驗證使用者之後,就可以透過從 static Thread.CurrentPrincipal 屬性所擷取之 IPrincipal 參考的 Identity 屬性,擷取此類別的執行個體。 |
|
這個類別會管理使用者角色。 這個類別沒有任何成員是無法以間接方式存取的。 但是在驗證使用者後,您就可以透過 static Thread.CurrentPrincipal 屬性存取這個類別的執行個體。 |
|
這個類別會提供可用來將應用程式切換至離線模式的 static IsOffline 屬性。 如需詳細資訊,請參閱 HOW TO:使用用戶端應用程式服務離線工作。 |
|
這個類別表示使用者認證。 在實作 IClientFormsAuthenticationCredentialsProvider 介面時,您只能將此類別當做 GetCredentials 方法的傳回值型別來使用。 |
|
這個類別會管理表單驗證的遠端驗證服務存取。 直接存取這個類別的主要原因,是為了使用其 Logout 和 UserValidated 成員,因為這些成員未由基底 MembershipProvider 類別所實作。 您也可以使用 ServiceUri 屬性,以程式設計方式設定服務位置。 您可以透過 static Membership.Provider 屬性擷取此類別的執行個體。 |
|
這個類別會管理 Windows 驗證。 直接存取這個類別的主要原因,是為了呼叫其 Logout 方法。 在登出後,使用者仍然是通過 Windows 驗證的狀態,但是無法存取遠端應用程式服務。 您可以透過 static Membership.Provider 屬性擷取此類別的執行個體。 |
|
這個類別會管理遠端角色服務的存取。 存取這個類別的主要原因,是為了呼叫其 ResetCache 方法。 如果應用程式是設定為使用非零的角色服務快取逾時值,這就會很有用。 如需詳細資訊,請參閱 HOW TO:設定用戶端應用程式服務。 您也可以使用 ServiceUri 屬性,以程式設計方式設定服務位置。 您可以透過 static Roles.Provider 屬性擷取此類別的執行個體。 |
|
這個類別會管理遠端 Web 設定服務的存取。 存取這個類別的主要原因,是為了處理 SettingsSaved 事件。 您也可以使用 ServiceUri 屬性,以程式設計方式設定服務位置。 |
|
這個介面提供應用程式以間接方式取得使用者認證以進行驗證,如本主題稍早的「驗證」章節中所述。 如需詳細資訊,請參閱 HOW TO:設定用戶端應用程式服務。 |
|
這個類別提供 FailedSettingsList 屬性,以供在 ClientSettingsProvider.SettingsSaved 事件處理常式中使用。 |
|
這個類別提供 UserName 屬性,以供在 UserValidated 事件處理常式中使用。 |