Freigeben über


Übersicht über Webpartverbindungen

Aktualisiert: November 2007

Mit dem Webparts-Steuerelementsatz können Sie Verbindungen zwischen Serversteuerelementen erstellen, sodass der Gesamtwert und die Nützlichkeit der verbundenen Steuerelemente größer als bei einzelnen unverbundenen Steuerelementen ist. Eine vollständige, integrierte Gruppe von Verbindungskomponenten wird bereitgestellt, sodass Sie mit einer minimalen Anzahl an Schritten, wenigen Codezeilen und ohne die Notwendigkeit, die gesamte zugrunde liegende Komplexität und Datensynchronisierung zu behandeln, vorhandene WebPart-Steuerelemente (gilt auch für Server- bzw. Benutzersteuerelemente) für das Eingehen von Verbindungen ausstatten können. Mit Steuerelementen, die für Verbindungen aktiviert sind, können Sie dynamische, programmgesteuerte Verbindungen zwischen den Steuerelementen zur Laufzeit erstellen sowie statische, vordefinierte Verbindungen, die im Markup einer Webseite deklariert werden. Sie können Benutzern auch eine Benutzeroberfläche zur Verfügung stellen, mit der die Benutzer Verbindungen zwischen Steuerelementen zur Laufzeit herstellen bzw. trennen und bestehende Verbindungen verwalten können.

Verbindungen bieten Benutzern und Entwicklern Vorteile. Mithilfe von Verbindungen können Benutzer neue und sinnvolle Wege zum Anzeigen von Daten finden. Angenommen, Sie erstellen eine Anwendung, in der ein Serversteuerelement einen Webdienst kontaktiert, Datensätze über zurückliegende durchschnittliche Tagestemperaturen eines Staats zurückgibt und die Daten in Tabellenform auflistet. Wenn ein Benutzer die Flexibilität haben möchte, die Daten auf verschiedene Arten anzuzeigen, könnte das Serversteuerelement mit einem Diagrammsteuerelement verbunden werden, das Tabellendaten annehmen und in verschiedenen Diagrammansichten anzeigen kann. Dem Benutzer könnte sogar die Möglichkeit eingeräumt werden, die Daten entweder in einer Tabelle anzuzeigen oder die Temperaturdaten mit dem Diagrammsteuerelement zu verbinden. Durch neue Datenansichten werden Benutzer möglicherweise auf neue Trends und Zusammenhänge bei den Temperaturen aufmerksam, die mit den Daten in Tabellenform nur schwer zu veranschaulichen waren.

Mithilfe von Verbindungen können Entwickler neue Möglichkeiten für die Wiederverwendung von Code und die Zusammenführung von Funktionalitäten isolierter Steuerelemente entdecken. Angenommen, ein Entwickler erstellt ein Steuerelement, das die Adressinformationen des Benutzers einschließlich Postleitzahl speichert und das diese Informationen immer für das Versandadresseformular zur Verfügung stellt, wenn der Benutzer etwas bestellt. Dann fügt der Entwickler andere Steuerelemente hinzu, die von einer bestimmten Postleitzahl abhängig sind, z. B. Steuerelemente zum Anzeigen von Wetterinformationen und Nachrichtenüberschriften aus der Gegend des Benutzers sowie ein Steuerelement, das für eine bestimmte Postleitzahl Unternehmen nach Kategorien sucht. Anstatt jedes neue Steuerelement mit demselben Feature zum Speichern der Postleitzahl zu entwerfen, kann der Entwickler jedes Steuerelement so entwerfen, dass es eine Postleitzahl als Eingabe erfordert. Anschließend kann der Entwickler das Steuerelement, das die Postleitzahl bereits speichert, einfach mit den Steuerelementen verbinden, die Wetter, Nachrichten und Unternehmen auflisten und die Postleitzahl als Eingabe erfordern. Jede Verbindung erweitert die Nützlichkeit des ursprünglichen Steuerelements, und im Code der neuen Steuerelemente entfällt die Redundanz.

Verbindungskonzepte

Eine Webparts-Verbindung ist eine Verknüpfung bzw. eine Zuordnung von zwei Serversteuerelementen, durch die eine gemeinsame Datennutzung ermöglicht wird. Für eine Verbindung sind immer genau zwei Steuerelemente erforderlich: Ein Steuerelement ist der Anbieter der Daten und das andere der Consumer der Daten des Anbieters. Ein Steuerelement kann sowohl Consumer als auch Anbieter sein. Jede Art von Serversteuerelement kann für Verbindungen ausgelegt werden. Es spielt dabei keine Rolle, ob es sich um ein WebPart-Steuerelement, ein benutzerdefiniertes Steuerelement oder ein Benutzersteuerelement handelt. Ein Anbietersteuerelement kann standardmäßig Verbindungen mit mehreren Consumern gleichzeitig herstellen (wie das vorherige Beispiel eines Postleitzahlensteuerelements zeigt, das den Steuerelementen für Wetterinformation, Nachrichtenüberschriften und für die Auflistung von Unternehmen eine Postleitzahl zur Verfügung stellt). Ein Consumersteuerelement kann standardmäßig jeweils nur eine Verbindung mit einem Anbieter herstellen.

Verbindungen werden immer im Kontext einer Webparts-Anwendung erstellt. Das heißt, dass neben den zwei Serversteuerelementen, die an der Verbindung teilnehmen, mindestens zwei weitere Steuerelemente auf der Webseite benötigt werden. Das eine davon ist das WebPartManager-Steuerelement, das auf jeder Seite vorhanden ist, die Webparts-Steuerelemente enthält. Das zweite erforderliche Steuerelement ist eine Zone, die von der WebPartZoneBase-Klasse erbt, z. B. das WebPartZone-Steuerelement. Um eine Verbindung eingehen zu können, müssen sich zwei Serversteuerelemente immer innerhalb eines WebPartZoneBase-Zonentyps befinden.

In einer Verbindungsbeziehung haben der Consumer und der Anbieter jeweils mindestens ein zugehöriges Objekt, das als Verbindungspunkt bezeichnet wird. Auf Grundlage der ConnectionPoint-Klasse enthält ein Verbindungspunkt die Einzelheiten, die für ein Serversteuerelement erforderlich sind, um eine Verbindung mit einem anderen Steuerelement herzustellen, z. B. den Steuerelementtyp, den Datentyp, den das Steuerelement erkennt, eine ID für das Verbindungspunktobjekt und ob das Steuerelement mehrere Verbindungen eingehen kann. Ein Serversteuerelement kann mehrere Verbindungspunkte haben. Die Verbindungspunkte eines Anbieters werden durch Instanzen der ProviderConnectionPoint-Klasse definiert, und die Verbindungspunkte des Consumers werden durch Instanzen der ConsumerConnectionPoint-Klasse definiert.

Um eine Verbindung zu bilden, müssen Consumer und Anbieter beide denselben Datentyp erkennen, der in Webparts-Verbindungen mittels einer Schnittstelleninstanz übergeben wird. Der Datentyp, den ein Steuerelement erkennt, wird in dem Verbindungspunkt angegeben, der dem Steuerelement in der InterfaceType-Eigenschaft zugeordnet ist. Der Anbieter und der Consumer sind kompatibel, wenn sie den gleichen Datentyp erkennen. Wenn Anbieter und Consumer nicht kompatibel sind, muss ein Entwickler ein spezielles Transformatorobjekt verwenden, um die Anbieterdaten in ein für den Consumer verwendbares Format zu übersetzen. Dieses Transformatorobjekt erbt von der WebPartTransformer-Basisklasse. Ein Entwickler kann entweder von der Basisklasse erben, um einen benutzerdefinierten Transformator zu entwickeln, oder eines der vorhandenen Transformatorobjekte verwenden (RowToFieldTransformer oder RowToParametersTransformer).

Nachdem eine Verbindung erstellt wurde, ist sie in einem WebPartConnection-Objekt enthalten. Das Verbindungsobjekt enthält sämtliche Informationen über eine Verbindung, einschließlich der Verweise auf das Consumerobjekt und das Anbieterobjekt, die IDs von Consumer und Anbieter, Verweise auf alle Verbindungspunkte sowie deren IDs, Verweise auf alle Transformatoren, die der Verbindung zugeordnet sind, sowie Einzelheiten über den Status der Verbindung, z. B. ob sie aktiviert und ob sie statisch oder dynamisch ist.

Sie können Benutzern die Möglichkeit bieten, Verbindungen mithilfe des ConnectionsZone-Steuerelements zu erstellen und zu verwalten. Sie können ein <asp:connectionszone>-Element auf einer Webseite deklarieren, das Benutzern zur Laufzeit eine Benutzeroberfläche zur Verfügung stellt, mit der sie Verbindungen zwischen Steuerelementen herstellen oder trennen können und bestimmte Verbindungsdetails konfigurieren können.

Funktionsweise von Verbindungen

Webparts-Verbindungen basieren auf dem "Pull"-Modell, bei dem der Consumer die Daten vom Anbieter anfordert. Zum Erstellen einer Verbindung definiert das Steuerelement, das als Datenanbieter fungiert, einen Kommunikationsvertrag, aus dem hervorgeht, welche Daten es bereitstellen kann. Ein anderes Steuerelement, das als Consumer fungiert und den Inhalt des Kommunikationsvertrags kennt, ruft die Daten ab.

Der Mechanismus zur Herstellung einer Verbindung ist eine spezielle Rückrufmethode: jeweils eine im Consumer und eine im Anbieter. Der Webparts-Steuerelementsatz behandelt jedoch alle Rückrufdetails und Kommunikationsdetails, sodass von den Entwicklern nur minimale Schritte erforderlich sind. Wenn Sie als Entwickler den einfachsten Ansatz verfolgen möchten, dann müssen Sie nur eine Methode im Anbieter wählen, die als Rückrufmethode verwendet werden soll, und sie im Quellcode mit einem ConnectionProvider-Attribut markieren. Geben Sie dann innerhalb dieser Methode die Schnittstelleninstanz zurück, die die Daten enthält, die an den Consumer zu übergeben sind. Die Schnittstelleninstanz kann sehr einfach sein (beispielsweise eine einzelne Eigenschaft, die einen Zeichenfolgenwert enthält, z. B. eine Postleitzahl). Ein Anbieter kann eine der verfügbaren Schnittstellen implementieren (IWebPartField, IWebPartRow oder IWebPartTable), aber in den meisten Fällen ist es besser, eine einfache benutzerdefinierte Schnittstelle mit mindestens einer Eigenschaft bzw. Methode zu erstellen, die die Daten enthält, die gemeinsam mit einem Consumer verwendet werden sollen. Implementieren Sie diese Schnittstelle anschließend im Anbieter. Die Rückrufmethode des Consumers ruft die Instanz der Schnittstelle über den Anbieter ab. Der Entwickler muss auch in diesem Fall nur angeben, welche Methode im Consumer die Schnittstelleninstanz (mithilfe eines ConnectionConsumer-Attributs) abruft, und diese Methode einer internen Variablen zur Verarbeitung und Darstellung zuweisen. Beachten Sie, dass die Daten des Anbieters kurz vor der Darstellung der Seite und des Steuerelementzyklus übergeben werden. Daher sollten Sie die Datenverarbeitung und Aktualisierung der Logik vornehmen, nachdem das Prerendering abgeschlossen ist.

Hinweis:

Wie bereits erwähnt, müssen Consumer und Anbieter bezüglich des Schnittstellentyps kompatibel sein. Andernfalls müssen sie ein WebPartTransformer-Objekt verwenden, um die Verbindung herzustellen.

Die Pipelines, durch die der Datenaustausch erfolgt, sind die Verbindungspunkte für den Consumer und den Anbieter. Es gibt verschiedene Möglichkeiten, einen Verbindungspunkt für ein Steuerelement zu erstellen. Wie im vorherigen Abschnitt erwähnt, können Sie die ConnectionConsumerAttribute-Klasse oder die ConnectionProviderAttribute-Klasse verwenden, die jeweils einen Verbindungspunkt erstellen. Mit dieser Vorgehensweise können Sie der Rückrufmethode des Consumers im Quellcode ein ConnectionConsumer-Attribut hinzufügen und ebenso der Rückrufmethode des Anbieters ein ConnectionProvider-Attribut hinzufügen. Dadurch wird die jeweilige Rückrufmethode identifiziert, und Sie können damit einige Einzelheiten des Verbindungspunkts angeben, z. B. eine ID und einen Anzeigenamen (der auf der Benutzeroberfläche angezeigt wird, damit Benutzer Verbindungen erstellen können). Alternativ können Sie einen benutzerdefinierten Verbindungspunkt durch Vererbung von der ConnectionPoint-Klasse erstellen, oder Sie können die ConsumerConnectionPoint-Klasse oder die ProviderConnectionPoint-Klasse verwenden bzw. von diesen Klassen erben. Wie bereits erwähnt, kann ein Steuerelement, das als Consumer oder Anbieter fungiert, mehrere Verbindungspunkte haben.

Eine Verbindung zwischen Steuerelementen kann entweder statisch oder dynamisch sein. Statische Verbindungen werden auf der Hostseite deklarativ programmiert und kurz vor der Darstellung der Seite erstellt. Damit wird sichergestellt, dass die Verbindung aktiv ist, wenn der Benutzer die Seite sieht. Ein Beispiel finden Sie unter Gewusst wie: Deklarieren einer statischen Verbindung zwischen zwei Webparts-Steuerelementen. Dynamische Verbindungen lassen sich entweder programmgesteuert im Code des Steuerelements erstellen oder deklarativ auf der Hostseite. Wenn Sie zwei kompatible Serversteuerelemente innerhalb einer WebPartZoneBase-Zone auf einer Webseite deklarieren und eine Instanz des ConnectionsZone-Steuerelements auf der Seite deklarieren, können Benutzer eine dynamische Verbindung zwischen den Steuerelementen zur Laufzeit erstellen und konfigurieren.

Webpartverbindungen und andere ASP.NET-Features

Verbindungen unterscheiden sich in vielerlei Hinsicht von anderen ASP.NET-Techniken zum Übertragen von Informationen zwischen Steuerelementen in einer Webanwendung.

  • Verbindungen sind ein Feature von Webparts. Sie können nur Steuerelemente verbinden, die für Webparts-Verbindungen ausgelegt sind und sich innerhalb einer WebPartZoneBase-Zone befinden.

    Hinweis:

    Wie bereits erwähnt, kann jedes ASP.NET-Serversteuerelement, jedes benutzerdefinierte Steuerelement oder jedes Benutzersteuerelement als Webparts-Steuerelement verwendet werden, um von Verbindungen zu profitieren.

  • Verbindungen unterscheiden sich von der Datenbindung. Verbindungen zwischen Steuerelementen einer Webpartzone erstellen über eine Schnittstelle einen Vertrag zwischen den Steuerelementen. Die Datenbindung ist eine Verbindung zwischen einem Steuerelement und einem Speichergerät oder einer Back-End-Datenbank. Bei Webparts-Verbindungen findet der Datentransfer nur zwischen den Steuerelementen einer Seite statt.

  • Verbindungen können personalisiert werden. Verbindungseinstellungen, die angeben, welche Steuerelemente miteinander verbunden sind, können zusammen mit anderen Personalisierungsdaten sicher gespeichert werden. Weitere Informationen zur Personalisierung finden Sie unter Übersicht über die Webparts-Personalisierung.

Notwendige Verbindungsklassen

Die folgende Tabelle zeigt drei Komponenten der Webpart-Steuerelementreihe, die für Verbindungen unbedingt notwendig sind. Wenn Sie Verbindungen verwenden, haben sie immer, entweder direkt oder indirekt, mit diesen Komponenten zu tun.

Webpart-Steuerelement

Beschreibung

WebPartManager

Verwaltet alle Verbindungen zwischen den Steuerelementen einer Webpartzone auf einer Seite. Für jede Webpartseite ist genau ein WebPartManager-Steuerelement erforderlich.

WebPartZoneBase

WebPartZone

Die WebPartZoneBase-Basisklasse stellt den erforderlichen Kontext für die Verbindung von Steuerelementen und den Datenaustausch bereit. Sie können von der Basisklasse erben, um eine benutzerdefinierte Zone zu erstellen, oder Sie verwenden das WebPartZone-Steuerelement für die Zone, die die Serversteuerelemente enthalten soll, die zu einer Verbindung gehören.

WebPartConnection

Stellt eine Verbindung mit Verweisen auf Anbieter und Consumer und allen anderen für eine Verbindung erforderlichen Komponenten dar.

ConnectionPoint

ProviderConnectionPoint

ConsumerConnectionPoint

Die ConnectionPoint-Basisklasse definiert ein Objekt, das einem Consumer bzw. Anbieter zugeordnet ist, und enthält alle für den Datenaustausch erforderlichen Details. Der ProviderConnectionPoint ist dem Anbieter zugeordnet, und dem Consumer ist der ConsumerConnectionPoint zugeordnet.

ConnectionsZone

Stellt eine Benutzeroberfläche bereit, über die die Benutzer zur Laufzeit dynamische Verbindungen zwischen Serversteuerelementen erstellen können.

Siehe auch

Aufgaben

Gewusst wie: Deklarieren einer statischen Verbindung zwischen zwei Webparts-Steuerelementen

Konzepte

Übersicht über ASP.NET-Webparts

Referenz

WebPartConnection

ConnectionPoint

Übersicht über die Gruppe der Webparts-Steuerelemente