Übersicht über Clientanwendungsdienste
Aktualisiert: November 2007
Clientanwendungsdienste ermöglichen den vereinfachten Zugriff auf die ASP.NET AJAX-Anmeldung, -Rollen und -Profildienste aus Windows Forms und Windows Presentation Foundation (WPF)-Anwendungen. ASP.NET AJAX-Anwendungsdienste sind in den Microsoft ASP.NET 2.0 AJAX-Erweiterungen enthalten, die wiederum Bestandteil von Visual Studio 2008 und .NET Framework Version 3.5 sind. Über diese Dienste können mehrere Web- und Windows-basierte Anwendungen Benutzerinformationen und Benutzerverwaltungsfunktionen auf einem einzelnen Server gemeinsam verwenden.
Clientanwendungsdienste umfassen Clientdienstanbieter, die in das Webdienst-Erweiterbarkeitsmodell integriert werden, um folgende Features für Windows-basierte Anwendungen zu aktivieren:
Einfache Clientkonfiguration. Sie können die Anmeldungs-, Rollen- und Profildienste aktivieren und konfigurieren, indem Sie den Visual Studio-Projekt-Designer verwenden oder indem Sie Clientdienstanbieter in der Datei App.config des Projekts angeben. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren von Clientanwendungsdiensten.
Einfache Programmierbarkeit. Nachdem Sie Clientanwendungsdienste aktiviert und konfiguriert haben, können Sie indirekt über vorhandene Klassen für .NET Framework 2.0-Mitgliedschaft, -Rollen und -Anwendungseinstellungen auf Dienstanbieter zugreifen. Sie können auch direkt auf die .NET Framework Version 3.5 Service Pack 1-Klassen zugreifen, durch die Clientanwendungsdienste implementiert werden. In den meisten Fällen ist der direkte Zugriff jedoch nicht erforderlich. Weitere Informationen über Clientanwendungsdienst-Klassen finden Sie in diesem Thema im Abschnitt "Clientanwendungsdienst-Klassen".
Offlineunterstützung. Windows-basierte Anwendungen müssen häufig in gelegentlich verbundenen Umgebungen eingesetzt werden. Wenn die Anwendung online ist, werden die vom Server abgerufenen Werte von den Clientdienstanbietern zwischengespeichert und verwendet, sobald die Anwendung offline ist. Weitere Informationen finden Sie unter Gewusst wie: Offline arbeiten mit Clientanwendungsdiensten.
Integration mit dem Anwendungseinstellungs-Designer von Visual Studio. Wenn Sie Ihrem Projekt in Visual Studio Einstellungen hinzufügen, können Sie angeben, auf welche Einstellungen über den Clienteinstellungsdienst-Anbieter zugegriffen werden soll.
In den folgenden Abschnitten werden diese Features ausführlicher beschrieben. Weitere Informationen zu ASP.NET AJAX-Anwendungsdiensten finden Sie unter Übersicht über die ASP.NET-Anwendungsdienste.
Authentifizierung
Sie können Clientanwendungsdienste verwenden, um einen Benutzer über einen vorhandenen ASP.NET AJAX-Authentifizierungsdienst zu überprüfen. Sie können Benutzer mit Windows- oder Formularauthentifizierung überprüfen. Bei der Windows-Authentifizierung wird als Benutzeridentität die vom Betriebssystem angegebene Identität verwendet, sobald sich ein Benutzer bei einem Computer oder einer Domäne anmeldet. Die Windows-Authentifizierung wird normalerweise mit einer Anwendung verwendet, die in einem Firmenintranet bereitgestellt wird. Bei der Formularauthentifizierung müssen Sie Anmeldesteuerelemente in die Anwendung aufnehmen und die erforderlichen Anmeldeinformationen an den Authentifizierungsanbieter übergeben. Die Formularauthentifizierung wird normalerweise mit einer Anwendung verwendet, die im Internet bereitgestellt wird.
Um einen Benutzer zu überprüfen, rufen Sie die static Membership.ValidateUser-Methode auf. Durch diese Methode wird auf den für die Anwendung konfigurierten Clientdienstanbieter zugegriffen und ein Boolean-Wert zurückgegeben, der angibt, ob der Benutzer gültig ist. Weitere Informationen finden Sie unter Gewusst wie: Implementieren von Benutzeranmeldung und -abmeldung mit Clientanwendungsdiensten.
Bei Verwendung der Windows-Authentifizierung müssen Sie leere Zeichenfolgen oder null als Parameter der ValidateUser-Methode übergeben. Bei Verwendung der Windows-Authentifizierung gibt dieser Methodenaufruf immer true zurück.
Bei der Formularauthentifizierung gibt die ValidateUser-Methode einen Wert zurück, der angibt, ob der Benutzer vom Remotedienst authentifiziert wurde. Wenn die Validierung erfolgreich verläuft, wird ein Authentifizierungscookie auf der lokalen Festplatte gespeichert. Dieses Cookie wird verwendet, um beim Zugriff auf Rollen- und Einstellungsdienste die Validierung zu bestätigen.
Wenn Sie die Formularauthentifizierung verwenden, können Sie einen Benutzernamen und ein Kennwort an die ValidateUser-Methode übergeben. Sie können auch leere Zeichenfolgen oder null als Parameter übergeben, um einen Anmeldeinformationsanbieter zu verwenden. Ein Anmeldeinformationsanbieter ist eine Klasse, die Sie in der Anwendungskonfiguration bereitstellen und angeben. Eine Anmeldeinformationsanbieter-Klasse muss die IClientFormsAuthenticationCredentialsProvider-Schnittstelle implementieren, die über eine einzelne Methode mit dem Namen GetCredentials verfügt. Wenn Sie einen Anmeldeinformationsanbieter verwenden, können Sie ein einzelnes Anmeldedialogfeld für mehrere Anwendungen verwenden. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren von Clientanwendungsdiensten.
Wenn Sie eine Anwendung so konfigurieren, dass ein Anmeldeinformationsanbieter mit Formularauthentifizierung verwendet wird, müssen Sie leere Zeichenfolgen oder null als Parameter der ValidateUser-Methode übergeben. Der Dienstanbieter ruft daraufhin die IClientFormsAuthenticationCredentialsProvider.GetCredentials-Methodenimplementierung auf. Normalerweise implementieren Sie diese Methode, um ein Dialogfeld anzuzeigen und ein mit Daten gefülltes ClientFormsAuthenticationCredentials-Objekt zurückzugeben.
Weitere Informationen zur Authentifizierung finden Sie unter Authentifizierung in ASP.NET. Informationen über die Einrichtung des ASP.NET AJAX-Authentifizierungsdiensts finden Sie unter Verwenden der Formularauthentifizierung mit ASP.NET-AJAX.
Rollen
Sie können Clientanwendungsdienste verwenden, um Rolleninformationen aus einem vorhandenen ASP.NET AJAX-Rollendienst abzurufen. Um festzustellen, ob der aktuelle authentifizierte Benutzer über eine bestimmte Rolle verfügt, rufen Sie die IsInRole-Methode des aus der static Thread.CurrentPrincipal-Eigenschaft abgerufenen IPrincipal-Verweises ab. Die IsInRole-Methode akzeptiert den Rollennamen als Parameter und gibt einen Boolean-Wert zurück, der angibt, ob sich der aktuelle Benutzer in der angegebenen Rolle befindet. Diese Methode gibt false zurück, wenn der Benutzer nicht authentifiziert ist oder nicht über die angegebene Rolle verfügt.
Weitere Informationen finden Sie unter Gewusst wie: Zugreifen auf Benutzerrollen mit Clientanwendungsdiensten. Weitere Informationen zum Einrichten des ASP.NET AJAX-Rollendiensts finden Sie unter Verwenden von Rolleninformationen mit ASP.NET-AJAX.
Einstellungen
Sie können Clientanwendungsdienste verwenden, um Benutzeranwendungseinstellungen aus einem vorhandenen ASP.NET AJAX-Profildienst abzurufen. Das Webeinstellungsfeature der Clientanwendungsdienste wird mit dem in .NET Framework 2.0 bereitgestellten Feature für Anwendungseinstellungen integriert. Um Webeinstellungen abzurufen, generieren Sie zuerst eine Settings-Klasse (auf die in C# als Properties.Settings.Default und in Visual Basic als My.Settings zugegriffen wird) für das Projekt, indem Sie die Registerkarte Einstellungen des Visual Studio-Projekt-Designers verwenden. Auf der Registerkarte Einstellungen können Sie die Schaltfläche Webeinstellungen laden verwenden, um Webeinstellungen abzurufen und sie der generierten Settings-Klasse hinzuzufügen. Sie können Webeinstellungen verwenden, die für die Verwendung durch alle authentifizierten oder anonymen Benutzer konfiguriert sind.
Weitere Informationen finden Sie unter Gewusst wie: Zugreifen auf Benutzereinstellungen mit Clientanwendungsdiensten. Weitere Informationen über Anwendungseinstellungen finden Sie unter Übersicht über Anwendungseinstellungen. Informationen darüber, wie Sie eine eigene Einstellungsklasse implementieren, anstatt eine Klasse in Visual Studio zu generieren, finden Sie unter Gewusst wie: Erstellen von Anwendungseinstellungen. Weitere Informationen zum Einrichten des ASP.NET AJAX-Profildiensts finden Sie unter Verwenden von Profilinformationen mit ASP.NET-AJAX.
Clientanwendungsdienst-Klassen
In der folgenden Tabelle werden die Klassen beschrieben, durch die das Feature für Clientanwendungsdienste implementiert wird.
Anwendungen, die nur Features für primäre Authentifizierung, Rollen und Einstellungen verwenden, haben keinen direkten Zugriff auf diese Klassen. Stattdessen greifen diese Anwendungen indirekt auf Anbieter von Clientanwendungsdiensten zu, indem sie die Anwendungskonfiguration und die in den vorangehenden Abschnitten beschriebenen APIs verwenden. Sie greifen direkt auf diese Klassen zu, um zusätzliche Features wie Benutzerabmeldung und Offlinebetrieb zu implementieren.
Hinweis: |
---|
Alle Clientanwendungsdienst-APIs sind synchron. Clientanwendungsdienste bieten keine direkte Unterstützung für asynchrones Verhalten. |
Durch Anbieter für Clientanwendungsdienste werden .NET Framework 2.0-Standardtypen implementiert oder erweitert, es wird jedoch nicht jeder Member bzw. jedes Feature implementiert, der bzw. das durch diese Typen definiert wurde. Beispielsweise können Sie keine Anbieter für Clientanwendungsdienste verwenden, um eine Benutzerverwaltungsanwendung zum Erstellen neuer Benutzer sowie zum Verwalten der Rollenmitgliedschaft zu implementieren. Um diese Funktionalität zu implementieren, müssen Sie aktuell eine Webanwendung und serverseitigen Code verwenden. Um festzustellen, welche Member nicht implementiert werden, informieren Sie sich in der Referenzdokumentation, auf die Sie über die in dieser Tabellen enthaltenen Hyperlinks zugreifen können.
Klasse |
Beschreibung |
---|---|
Durch diese Klasse werden Benutzeridentität und Authentifizierungscookies für die Formularauthentifizierung verwaltet. Der Hauptgrund für den direkten Zugriff auf diese Klasse besteht im Aufrufen der RevalidateUser-Methode, durch die ein Benutzer (beispielsweise beim Wechsel vom Offline- in den Onlinemodus) automatisch neu überprüft wird. Nachdem der Benutzer unter Verwendung der Formularauthentifizierung authentifiziert wurde, können Sie über die Identity-Eigenschaft des IPrincipal-Verweises, der über die static Thread.CurrentPrincipal-Eigenschaft abgerufen wird, eine Instanz dieser Klasse abrufen. |
|
Durch diese Klasse werden die Benutzerrollen verwaltet. Diese Klasse verfügt über keine Member, auf die nicht indirekt zugegriffen werden kann. Nachdem der Benutzer authentifiziert wurde, können Sie jedoch über die static Thread.CurrentPrincipal-Eigenschaft auf eine Instanz dieser Klasse zugreifen. |
|
Durch diese Klasse wird die staticIsOffline-Eigenschaft bereitgestellt, mit der Sie die Anwendung in den Offlinemodus schalten. Weitere Informationen finden Sie unter Gewusst wie: Offline arbeiten mit Clientanwendungsdiensten. |
|
Durch diese Klasse werden Benutzeranmeldeinformationen dargestellt. Sie verwenden diese Klasse nur als Rückgabewerttyp der GetCredentials-Methode, wenn Sie die IClientFormsAuthenticationCredentialsProvider-Schnittstelle implementieren. |
|
Durch diese Klasse wird der Zugriff auf den Remoteauthentifizierungsdienst für die Formularauthentifizierung verwaltet. Der Hauptgrund für den direkten Zugriff auf diese Klasse besteht in der Verwendung ihres Logout-Members und UserValidated-Members, die nicht durch die MembershipProvider-Basisklasse implementiert werden. Sie können den Dienstspeicherort auch programmgesteuert festlegen, indem Sie die ServiceUri-Eigenschaft verwenden. Sie können eine Instanz dieser Klasse über die static Membership.Provider-Eigenschaft abrufen. |
|
Durch diese Klasse wird die Windows-Authentifizierung verwaltet. Der Hauptgrund für den direkten Zugriff auf diese Klasse besteht im Aufrufen ihrer Logout-Methode. Nach der Abmeldung ist der Benutzer zwar weiterhin für Windows authentifiziert, kann jedoch nicht auf die Remoteanwendungsdienste zugreifen. Sie können eine Instanz dieser Klasse über die static Membership.Provider-Eigenschaft abrufen. |
|
Durch diese Klasse wird der Zugriff auf den Remoterollendienst verwaltet. Der Hauptgrund für den Zugriff auf diese Klasse besteht im Aufrufen ihrer ResetCache-Methode. Dies kann hilfreich sein, wenn die Anwendung für die Verwendung eines Cachetimeoutwerts des Rollendiensts konfiguriert ist, der ungleich 0 (null) ist. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren von Clientanwendungsdiensten. Sie können den Dienstspeicherort auch programmgesteuert festlegen, indem Sie die ServiceUri-Eigenschaft verwenden. Sie können eine Instanz dieser Klasse über die static Roles.Provider-Eigenschaft abrufen. |
|
Durch diese Klasse wird der Zugriff auf den Remote-Webeinstellungsdienst verwaltet. Der Hauptgrund für den Zugriff auf diese Klasse besteht in der Behandlung des SettingsSaved-Ereignisses. Sie können den Dienstspeicherort auch programmgesteuert festlegen, indem Sie die ServiceUri-Eigenschaft verwenden. |
|
Diese Schnittstelle bietet der Anwendung eine indirekte Möglichkeit, Anmeldeinformationen für die Validierung abzurufen, wie oben in diesem Thema im Abschnitt zur Authentifizierung beschrieben. Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren von Clientanwendungsdiensten. |
|
Diese Klasse stellt eine FailedSettingsList-Eigenschaft zur Verwendung innerhalb eines ClientSettingsProvider.SettingsSaved-Ereignishandlers bereit. |
|
Diese Klasse stellt eine UserName-Eigenschaft zur Verwendung innerhalb eines UserValidated-Ereignishandlers bereit. |
Siehe auch
Aufgaben
Gewusst wie: Konfigurieren von Clientanwendungsdiensten
Gewusst wie: Implementieren von Benutzeranmeldung und -abmeldung mit Clientanwendungsdiensten
Gewusst wie: Zugreifen auf Benutzerrollen mit Clientanwendungsdiensten
Gewusst wie: Zugreifen auf Benutzereinstellungen mit Clientanwendungsdiensten
Gewusst wie: Offline arbeiten mit Clientanwendungsdiensten
Exemplarische Vorgehensweise: Verwenden von Clientanwendungsdiensten
Konzepte
Übersicht über Anwendungseinstellungen
Übersicht über die ASP.NET-Anwendungsdienste
Verwenden der Formularauthentifizierung mit ASP.NET-AJAX
Verwenden von Rolleninformationen mit ASP.NET-AJAX
Verwenden von Profilinformationen mit ASP.NET-AJAX
Weitere Ressourcen
Verwalten von Anwendungseinstellungen
Verwalten der Autorisierung mithilfe von Rollen
Erstellen und Konfigurieren der Datenbank für die Anwendungsdienste für SQL Server