Freigeben über


WCF-Dienste in SharePoint Foundation 2010

Letzte Änderung: Dienstag, 8. März 2011

Gilt für: SharePoint Foundation 2010

Die neue REST-Schnittstelle und das neue Clientobjektmodell in Microsoft SharePoint Foundation 2010 stellen Zugriff auf häufig verwendete Funktionen von SharePoint Foundation-Websites bereit, nicht jedoch alle Funktionen. Wenn Sie eine benutzerdefinierte Anwendung für Microsoft SharePoint Server 2010 entwickeln, ist möglicherweise ein standardmäßiger Windows Communication Foundation (WCF)-Webdienst vorhanden, der die von Ihnen benötigten spezifischen Funktionen offen legt. Falls jedoch kein Webdienst den benötigten Zugriff bereitstellt, können Sie einen benutzerdefinierten Webdienst erstellen, der das Serverobjektmodell für den Zugriff auf Daten verwendet. SharePoint Foundation 2010 unterstützt die Erstellung von benutzerdefinierten Webdiensten in Microsoft ASP.NET und WCF, das zum Entwickeln von Webdiensten im SOAP-Format oder von REST-Webdiensten verwendet werden kann.

Benutzerdefinierte ASP.NET-Webdienste, die Sie für SharePoint Foundation erstellt haben, können in SharePoint Foundation 2010 weiter verwendet werden, ohne dass eine Änderung erforderlich ist. Für die Zukunft wird es jedoch empfohlen, dass Sie stattdessen benutzerdefinierte WCF-Webdienste erstellen. Ein ASP.NET-Webdienst stellt zwar einfachere Konfigurationsanforderungen, ein WCF-Dienst stellt jedoch flexiblere, leistungsstärkere Bindungen bereit, die für erweiterte Anwendungen wichtig sind. Durch das Hosten des WCF-Webdiensts in SharePoint Foundation können Sie die Konfigurationsanforderungen verringern. Wenn Sie einen benutzerdefinierten WCF-Webdienst für die vorherige Version erstellt haben, mussten Sie möglicherweise Problemumgehungen ausführen, damit er verwendet werden kann, und der Dienst wurde innerhalb einer separaten Webanwendung gehostet. In SharePoint Foundation 2010 sind keine Problemumgehungen erforderlich, da WCF-Dienste standardmäßig unterstützt werden.

Ein benutzerdefinierter ASP.NET-Webdienst wird genauso entwickelt wie in der vorherigen Version. Wie in Exemplarische Vorgehensweise: Erstellen eines benutzerdefinierten ASP.NET-Webdiensts gezeigt stellen Sie den benutzerdefinierten ASP.NET-Webdienst für SharePoint Foundation bereit, und Sie fügen WSDL- und DISCO-Dateien hinzu, damit das Schema des Webdiensts von Microsoft Visual Studio erkannt werden kann. Ein WCF-Webdienst kann komplizierter sein, da seine Architektur das Angeben einer vollständigen Konfiguration der WCF-Dienstendpunkte erfordert. Diese Konfigurationsinformationen schließen Endpunktadressen, einen Dienstvertrag und eine Bindungskonfiguration ein, die spezifische Informationen zur Umgebung enthält, in der der Webdienst ausgeführt wird. Der SharePoint Foundation-Entwickler besitzt jedoch in der Regel keine Informationen zur Umgebung, in der der Webdienst ausgeführt wird. Der Farmadministrator bestimmt die Konfiguration der Webanwendungen und stellt Webdienste bereit. Der Administrator kann zwischen mehreren Authentifizierungsschemas wählen, die von SharePoint Foundation unterstützt werden, oder er kann mehrere Authentifizierungsschemas aktivieren und der Microsoft -IIS-Website (Internet Information Services, Internetinformationsdienste) mehrere Adressen zuweisen. In diesen Fällen erfordert ein WCF-Dienst einen separaten Endpunkt für jedes Authentifizierungsschema und jede Adresse. Da diese Art von Konfigurationsinformationen nicht in einem statischen Format angegeben werden können, kann ein web.config-Typ der Konfiguration nicht verwendet werden. Die Lösung besteht in einer dynamischen Konfiguration, oder in WCF-Begriffen, einer programmgesteuerten Konfiguration.

Dynamische WCF-Konfiguration

Die dynamische WCF-Konfiguration in SharePoint Foundation liegt im Format einer benutzerdefinierten Dienstinstanz vor. Wenn Sie den WCF-Dienst entwickeln, müssen Sie die von SharePoint Foundation bereitgestellte Dienstinstanz angeben. Nachdem Sie diese angegeben haben, benötigen Sie keine Konfigurationseinträge mehr in der Datei web.config. Zur Laufzeit konfiguriert die SharePoint Foundation-Dienstinstanz die entsprechenden Endpunkte für den Dienst automatisch. Sie können die SharePoint Foundation-Dienstinstanz auch anweisen, einen Endpunkt für den Metadatenaustausch für den Dienst automatisch zu erstellen, indem Sie ein spezielles Attribut in der Dienstklasse verwenden. Wenn das Attribut von der SharePoint Foundation-Dienstinstanz in der Dienstklasse erkannt wird, wird automatisch ein Endpunkt für den Metadatenaustausch für den Dienst erstellt. Im letzten Schritt der Entwicklung eines WCF-Webdiensts stellen Sie diesen im %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI-Ordner oder in einer Webanwendung bereit.

In der folgenden Tabelle sind die Diensttypen und Instanzen aufgeführt, die von SharePoint Foundation bereitgestellt werden.

Diensttyp

Dienstinstanz

Beschreibung

SOAP-Dienst

MultipleBaseAddressBasicHttpBindingServiceHostFactory

Die HTTP-Standardbindung muss verwendet werden. Sie erstellt Endpunkte für einen Dienst auf der Grundlage der HTTP-Standardbindung.

REST-Dienst

MultipleBaseAddressWebServiceHostFactory

Von der Dienstinstanz werden Endpunkte mit Webbindungen erstellt.

ADO.NET-Datendienst

MultipleBaseAddressDataServiceHostFactory

Es kann eine Datendienst-Hostinstanz verwendet werden.

Die folgenden Attribute können auf eine Dienstklasse für Verhalten angewendet werden:

  • [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] - Zur Kompatibilität mit ASP.NET.

  • [BasicHttpBindingServiceMetadataExchangeEndpoint] - Zur Aktivierung eines Endpunktes für den Metadatenaustausch (Metadata Exchange, MEX).

Mit der WcfServiceSettings-Eigenschaft von SPWebService können Sie die Konfigurationsklasse zum Anpassen der Parameter des von SharePoint Foundation generierten Endpunkts angeben. Falls die Möglichkeiten dieser Konfigurationsklasse für Ihre Bedürfnisse nicht ausreichend sind, können Sie auch eine eigene benutzerdefinierte Dienstinstanz erstellen, die Endpunkte für den Webdienst dynamisch erstellt.

WCF-Dienstkonfiguration

Ein WCF-Dienst, der in SharePoint Foundation gehostet wird und eine dynamische Konfiguration verwendet, vertraut auf die SharePoint Foundation-Dienstinstanz für die Konfiguration seiner Endpunkte. Beim Start liest die Dienstinstanz die Konfigurationsinformationen aus IIS und erstellt die entsprechenden Endpunkte für jedes Authentifizierungsschema und jede Adresse, die für die verfügbare Anwendung angegeben ist. WCF erfordert jedoch eine eindeutige Adresse für jeden Endpunkt. Falls mehrere Authentifizierungsschemas für eine Webanwendung aktiviert sind, sind mehrere Endpunkte derselben Adresse zugeordnet. Zur Lösung dieses Problems erstellt SharePoint Foundation eine eindeutige Adresse für jedes Authentifizierungsschema. Die Adresse wird durch Verkettung der Basis-URL des Diensts mit dem Namen des Authentifizierungsschemas wie folgt gebildet:

  • https://server/_vti_bin/Service.svc/negotiate

  • https://server/_vti_bin/Service.svc/ntlm

  • https://server/_vti_bin/Service.svc/anonymous

Wenn Sie einen Dienstverweis für einen benutzerdefinierten WCF-Webdienst in einer Anwendung hinzufügen, müssen Sie das Authentifizierungssuffix nicht angeben, Sie können vielmehr mit der ursprünglichen URL auf den Webdienst zugreifen (ein Beispiel: https://server/_vti_bin/Service.svc). Dies ist aufgrund des HTTP-Moduls möglich, einem Standardelement der SharePoint Foundation-Infrastruktur, die alle von SharePoint Foundation behandelten Anforderungen vorverarbeitet. Das HTTP-Modul erkennt die WCF-Dienstkonfigurationskonvention. Und wenn eine Anforderung für einen WCF-Dienst auftritt, der die dynamische Konfiguration verwendet, leitet das Modul die Anforderung an den entsprechenden Endpunkt auf der Grundlage der Authentifizierung der Anforderung weiter. Dieses Weiterleitungsschema funktioniert transparent für Clientanwendungen, denen nur ein einzelner WCF-Dienst mit dem ursprünglichen Namen angezeigt wird, auf den mit mehreren Authentifizierungsschemas zugegriffen werden kann.

Siehe auch

Konzepte

Erstellen eines benutzerdefinierten WCF-Diensts in SharePoint Foundation

Weitere Ressourcen

Windows Communication Foundation

Configuring Windows Communication Foundation Services