Überlegungen zu benutzerdefinierten Proxyklassen für Webdienstclients
In Designern für verteilte Systeme stellen Consumerendpunkte von Anwendungen konfigurierbare Verbindungspunkte zu Anbieterendpunkten dar. Wenn eine Instanz einer Systemdefinition mit diesen Anwendungen bereitgestellt wird, werden die Consumerendpunkte dieser Anwendungen mit den Adressen aller verbundenen Anbieterendpunkte konfiguriert. Weitere Informationen finden Sie unter Übersicht über Endpunkte in Anwendungen und Übersicht über Anwendungssysteme in Systemdiagrammen.
Bei Consumerendpunkten für Webdienste ist dafür die Verwendung "dynamischer" Proxyklassen für Webdienstclients erforderlich, die zur Laufzeit die URLs der verbundenen Anbieterendpunkte der Webdienste aus den entsprechenden Einträgen in der Anwendungskonfigurationsdatei abrufen.
Hinweis
Bei einer Anwendung, die die Implementierung unterstützt, generiert Visual Studio eine Konfigurationsdatei für diese Anwendung, wenn Sie diese aus dem Anwendungsdiagramm implementieren. Die Konfigurationsdatei wird im Projektmappen-Explorer in das Anwendungsprojekt eingefügt. Weitere Informationen finden Sie unter Gewusst wie: Implementieren von Anwendungen in Anwendungsdiagrammen.
Standardmäßig generiert der Anwendungs-Designer Webverweise für diese Consumerendpunkte von Webdiensten in ASP.NET-, Windows- und Office-Anwendungen. Diese Webverweise erstellen dann die entsprechenden dynamischen Proxyklassen mit den entsprechenden Konfigurationsdateieinträgen.
Hinweis
Wenn Sie in einer Anwendung oder einer Klassenbibliothek, auf die verwiesen wird, statische Webverweise verwenden, werden diese nicht vom Anwendungs-Designer erkannt und daher nicht als Consumerendpunkte des Webdiensts angezeigt, auch wenn sie möglicherweise ordnungsgemäß funktionieren. Sie sollten immer dynamische Webverweise verwenden, auch wenn Sie den Webdienst-URL bei der Bereitstellung nicht ändern möchten.
Die folgenden Abschnitte enthalten weitere Informationen über die Verwendung von benutzerdefinierten Proxyklassen für Webdienstclients anstelle von dynamischen Proxyklassen:
Darstellen von benutzerdefinierten Proxyklassen für Webdienstclients als Consumerendpunkte der Webdienste
Konfigurationsdateieinträge für benutzerdefinierte Proxyklassen für Webdienstclients, die mit Windows- und Office-Anwendungen verwendet werden
Konfigurationsdateieinträge für in ASP.NET-Anwendungen verwendete benutzerdefinierte Webdienst-Proxyklassen
Migrieren von Webverweisen und benutzerdefinierten Proxyklassen für Webdienstclients von Visual Studio .NET 2003
Darstellen von benutzerdefinierten Proxyklassen für Webdienstclients als Consumerendpunkte der Webdienste
Der Anwendungs-Designer unterstützt den Entwurf von Consumerendpunkten für Webdienste, die von Webverweisen implementiert werden. Sie können erstellte Proxyklassen aber auch zurückentwickeln und manuell als Consumerendpunkte von Webdiensten sichtbar machen, sofern die entsprechenden Einträge in der Konfigurationsdatei der Consumeranwendung (App.config oder Web.config) vorhanden sind.
In der Consumeranwendung wird für jeden Konfigurationsdateieintrag, den der Anwendungs-Designer als Darstellung einer Webdienst-URL-Einstellung für eine benutzerdefinierte Proxyklasse erkennt, ein Consumerendpunkt für einen Webdienst angezeigt. Wenn der Webdienst-URL im Konfigurationsdateieintrag mit dem URL eines im Anwendungsdiagramm vorhandenen Anbieterendpunkts eines Webdiensts übereinstimmt, wird außerdem eine Verbindung zwischen dem Consumerendpunkt und dem Anbieterendpunkt des Webdiensts angezeigt. Wenn kein übereinstimmender Anbieterendpunkt für den Webdienst vorhanden ist, aber mit dem URL eine gültige WSDL-Datei für den Webdienst gefunden werden kann, indem "?wsdl" oder "?disco" an diesen angefügt wird, wird im Anwendungsdiagramm ein externer Webdienst hinzugefügt und mit dem Consumerendpunkt des Webdiensts verbunden. Wenn keine WSDL-Datei mit dem URL gefunden wird, wird der Consumerendpunkt für den Webdienst nicht verbunden.
Die Konfigurationsdateieinträge, die Webdienst-URL-Einstellungen darstellen, und die Kennzeichnung im Anwendungs-Designer sind bei ASP.NET-Anwendungen und Windows- bzw. Office-Anwendungen unterschiedlich. Mit den folgenden Richtlinien können Sie sicherstellen, dass benutzerdefinierte Proxyklassen für jeden Anwendungstyp korrekt als Consumerendpunkte für Webdienste dargestellt werden.
Hinweis
Auch ohne diese Richtlinien können Sie benutzerdefinierte Proxyklassen erstellen, die zur Laufzeit ordnungsgemäß funktionieren, aber diese Klassen werden nicht als Consumerendpunkte für Webdienste dargestellt, sie sind nicht im Anwendungsdiagramm verbunden, sie werden bei der Bereitstellung nicht überprüft, sie werden im Bereitstellungsbericht nicht als Endpunkte erfasst, und sie können nicht mit einem der verfügbaren Bereitstellungstools als Endpunkte konfiguriert werden.
Konfigurationsdateieinträge für benutzerdefinierte Proxyklassen für Webdienstclients, die mit Windows- und Office-Anwendungen verwendet werden
Bei benutzerdefinierten Proxyklassen, die mit Windows- oder Office-Anwendungen verwendet werden, müssen die Einstellungen für den Webdienst-URL in einem applicationSettings
-Eintrag in der Konfigurationsdatei App.config der Consumeranwendung enthalten sein. Da Sie diese Einstellungen nicht mit dem Einstellungs- und Einschränkungs-Editor anzeigen oder bearbeiten können, müssen Sie diese Einstellungen im Bereich Einstellungen erstellen oder bearbeiten, auf den Sie zugreifen können, indem Sie mit der rechten Maustaste auf das Windows- oder Office-Anwendungsprojekt klicken und dann die Projekteigenschaften anzeigen. Sie müssen diese Einstellungen als WebServiceURL
-Typ oder String
-Typ festlegen. Weitere Informationen finden Sie unter Verwalten von Anwendungseinstellungen.
Hinweis
Die Zuweisung des WebServiceURL
-Typs wird in der Konfigurationsdatei App.config nicht angezeigt, aber sie wird in einer zugeordneten Einstellungsdatei gespeichert, die normalerweise ausgeblendet wird. Wenn Sie manuell Einstellungen in der Konfigurationsdatei App.config hinzufügen, müssen Sie den WebServiceURL
-Typ oder String
-Typ als Einstellung im Bereich Einstellungen zuweisen.
Im Bereich Einstellungen können Sie den Gültigkeitsbereich Anwendung oder Benutzer für die Einstellung auswählen, wenn Sie diese als WebServiceURL
-Typ zuweisen. Wenn Sie den Bereich ändern, wird der Eintrag in der Konfigurationsdatei in den Abschnitt applicationSettings
bzw. userSettings
verschoben. Wenn Sie die Einstellung hingegen als String
-Typ zuweisen, müssen Sie als Bereich Anwendung auswählen.
Tipp
Wenn Sie eine Einstellung für einen Webdienst-URL in der Datei App.config angeben, verwenden Sie den Speicherort des Webdiensts und nicht den der Webdienstbeschreibung oder der WSDL-Datei. Bei Webdiensten, die auf eine ASMX-Datei basieren, befindet sich die Webdienstbeschreibung häufig an demselben Speicherort wie die WSDL-Datei. Daher geht der Anwendungs-Designer bei Webdiensten, die auf einer ASMX-Datei basieren, davon aus, dass der Webdienstspeicherort mit dem der WSDL-Datei identisch ist. Wenn eine WSDL-Datei an dem Speicherort gefunden wird, wird ein externer Webdienst im Anwendungsdiagramm zurückentwickelt und mit einem zurückentwickelten Consumerendpunkt eines Webdiensts verbunden. Wenn keine gültige WSDL-Datei an dem Speicherort gefunden wird, wird nur der Consumerendpunkt des Webdiensts zurückentwickelt.
Im folgenden Beispiel wird ein applicationSettings
-Eintrag gezeigt, der so in der Konfigurationsdatei App.config eines Windows-Projekts stehen könnte, wenn die Einstellung als String
-Typ zugewiesen wurde:
<applicationSettings>
<WindowsApplicationName.MySettings>
<setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String">
<value>http://WebServiceURL.asmx</value>
</setting>
</WindowsApplicationName.MySettings>
</applicationSettings>
Bei Einträge vom Typ WebServiceURL
muss der Name der Einstellung nicht der Name der Proxyklasse sein. Ein auf diese Weise definierter Konfigurationsdateieintrag, dem im Bereich Einstellungen der WebServiceURL
-Typ oder der String
-Typ zugewiesen wurde, ist die einzige Anforderungen für das Erstellen eines Consumerendpunkts für einen Webdienst in einer Windows- oder Office-Anwendung, selbst wenn dem Eintrag keine benutzerdefinierte Proxyklasse zugeordnet ist. Beim Löschen eines solchen Endpunkts wird auch der Eintrag gelöscht, aber nicht die zugeordnete benutzerdefinierte Proxyklasse.
Konfigurationsdateieinträge für in ASP.NET-Anwendungen verwendete benutzerdefinierte Webdienst-Proxyklassen
ASP.NET bietet keine Möglichkeit für die Angabe, dass ein Konfigurationsdateieintrag einen Webdienst-URL darstellt. Daher versucht der Anwendungs-Designer, die Namen von Konfigurationsdateieinträgen Proxyklassennamen zuzuordnen. Die folgenden Richtlinien gelten für Konfigurationsdateieinträge für mit ASP.NET-Anwendungen verwendete benutzerdefinierte Proxyklassen:
Es wird nur dann ein Consumerendpunkt für einen Webdienst angezeigt, wenn im Consumeranwendungsprojekt oder in einem Projekt bzw. einer Assembly, auf das oder die verwiesen wird, eine Proxyklasse mit einem übereinstimmenden Namen gefunden wird.
Wenn die benutzerdefinierte Proxyklasse nur für ASP.NET-Anwendungen verwendet wird, sollte der Webdienst-URL in der Konfigurationsdatei Web.config der ASP.NET-Anwendung in einem
appSettings
-Eintrag enthalten sein. Der Name des Konfigurationsdateieintrags muss der vollqualifizierte Proxyklassenname sein. Sie können denappSettings
-Eintrag in die Datei Web.config mit dem Einstellungs- und Einschränkungs-Editor bearbeiten. Weitere Informationen finden Sie unter Einstellungs- und Einschränkungs-Editor und Anwenden von Einstellungen.Wenn die benutzerdefinierte Proxyklasse für Windows-, Office- und ASP.NET-Anwendungen verwendet wird, sollte der Webdienst-URL in der Konfigurationsdatei Web.config der ASP.NET-Anwendung in einem
applicationSettings
-Eintrag enthalten sein. Der Name des Konfigurationsdateieintrags sollte der vollqualifizierte Name mit vorangestelltem Projektnamen sein. Dies ist auch das Standardformat für automatisch generierte Webverweise. Sie können denapplicationSettings
-Eintrag in die Datei Web.config mit dem Einstellungs- und Einschränkungs-Editor bearbeiten. DerapplicationSettings
-Abschnitt unterstützt bei Einstellungsnamen keine Punktsyntax (.), verwenden Sie stattdessen Unterstriche (_).
Im folgenden Beispiel wird gezeigt, wie ein appSettings
-Eintrag in der Datei Web.config angezeigt werden könnte:
<appSettings>
<add key="Namespace.WebServiceProxyClassName" value="https://localhost/WebServiceApplicationName/WebServiceName.asmx"/>
</appSettings>
Im folgenden Beispiel wird gezeigt, wie ein applicationSettings
-Eintrag in der Datei Web.config angezeigt werden könnte. Dabei handelt es sich um denselben Eintrag, der in der Datei App.config einer Windows- oder Office-Anwendung verwendet wird:
<applicationSettings>
<WindowsApplicationName.MySettings>
<setting name="WindowsApplicationName_Namespace_WebServiceProxyClassName" serializeAs="String">
<value>http://WebServiceURL.asmx</value>
</setting>
</WindowsApplicationName.MySettings>
</applicationSettings>
Das Löschen eines Consumerendpunkts für eine Webdienst, der eine benutzerdefinierte Proxyklasse darstellt, führt zum Entfernen des zugeordneten Konfigurationsdateieintrags, aber nicht zum Löschen der zugehörigen Proxyklasse. Beim Löschen oder Entfernen der benutzerdefinierten Proxyklasse wird der zugehörige Konfigurationsdateieintrag nicht entfernt. Es wird aber der zugehörige Consumerendpunkt entfernt, da es keine Proxyklasse mit einem übereinstimmenden Namen mehr gibt. Wenn Sie wieder eine Proxyklasse mit einem übereinstimmenden Namen hinzufügen oder eine vorhandene Proxyklasse umbenennen, sodass der Name mit dem Konfigurationsdateieintrag übereinstimmt, wird er Endpunkt wieder angezeigt.
Migrieren von Webverweisen und benutzerdefinierten Proxyklassen für Webdienstclients von Visual Studio .NET 2003
Die zugeordneten Konfigurationsdateieinträge für Webverweise, die Windows- und Office-Projekten in Visual Studio .NET 2003 hinzugefügt werden, werden in einem appSettings
-Abschnitt statt im applicationSettings
-Abschnitt gespeichert. Wenn Sie ein Windows- oder Office-Projekt aus Visual Studio .NET 2003 mithilfe des Konvertierungs-Assistenten aktualisieren, werden Webverweise und benutzerdefinierte Proxyklassen aus dem appSettings
-Abschnitt nicht automatisch in den applicationSettings
-Abschnitt migriert. Weitere Informationen über den Konvertierungs-Assistenten finden Sie unter Visual Studio-Konvertierungs-Assistent.
Die Webverweise werden aber automatisch migriert, wenn Proxyklassen generiert werden, z. B. wenn die zugehörigen Webdienste geändert werden oder Sie den Webverweis manuell aktualisieren. Es wird eine neue Einstellung für jeden Webverweis im applicationSettings
-Abschnitt angezeigt, die von den aktualisierten Proxyklassen verwendet wird. Nach dem Aktualisieren des applicationSettings
-Abschnitts werden die zugehörigen Consumerendpunkte des Webdiensts und die Verbindungen im Anwendungsdiagramm angezeigt. Weitere Informationen finden Sie unter Gewusst wie: Aktualisieren von Webverweisen auf Webdienste in Anwendungsdiagrammen.
Wenn Sie Consumerendpunkte von Webdiensten für benutzerdefinierte Proxyklassen anzeigen möchten, müssen Sie diese Klassen manuell migrieren. Sie können dies erreichen, indem Sie die Proxyklassen aktualisieren, sodass diese den applicationSettings
-Abschnitt verwenden, und die entsprechenden Einstellungen im Bereich Einstellungen hinzufügen, den Sie über die Eigenschaften des Windows- oder Office-Anwendungsprojekts anzeigen können. Weitere Informationen finden Sie unter Verwalten von Anwendungseinstellungen.
Siehe auch
Referenz
Webverweise und benutzerdefinierte Proxyklassen für Webdienstclients in Klassenbibliotheken
Anwendungstypen und -prototypen für das Definieren von Anwendungen
Konzepte
Übersicht über Endpunkte in Anwendungen
Übersicht über ASP.NET-Anwendungen in Anwendungsdiagrammen