Freigeben über


WCF: Erstellen von WCF-Webdiensten für SharePoint 2010 Business Connectivity Services (Teil 1 von 4)

Zusammenfassung: In dieser vierteiligen Reihe erfahren Sie, wie Benutzer in Microsoft SharePoint Foundation 2010 authentifiziert werden. Sie erstellen Webdienste für Windows Communication Foundation (WCF), die Sie als externe Inhaltstypen in Microsoft Business Connectivity Services (BCS) nutzen können.

Letzte Änderung: Freitag, 4. November 2011

Verfügbar in SharePoint Online

Inhalt dieses Artikels
Einführung
Voraussetzungen
Installieren von Windows Communication Foundation (WCF) und Internetinformationsdiensten
Registrieren des Dienstmodells
Aktualisieren von Skriptzuordnungen
Erstellen von Webdiensten
Überprüfen des Webdiensts
Schlussbemerkung
Weitere Ressourcen

Gilt für: Business Connectivity Services | Office 2010 | Open XML | SharePoint Designer 2010 | SharePoint Foundation 2010 | SharePoint Online | SharePoint Server 2010 | Visual Studio

Bereitgestellt von:Eric White, Microsoft Corporation | Saji Varkey, Microsoft Corporation | Bin Zhang, Microsoft Corporation

Inhalt

  • Einführung

  • Voraussetzungen

  • Installieren von Windows Communication Foundation (WCF) und Internetinformationsdiensten

  • Registrieren des Dienstmodells

  • Aktualisieren von Skriptzuordnungen

  • Erstellen von Webdiensten

  • Überprüfen des Webdiensts

  • Schlussbemerkung

  • Weitere Ressourcen

Bei diesem Artikel handelt es sich um den ersten in einer vierteiligen Reihe, in der das Erstellen und Nutzen eines Ansprüche unterstützenden Webdiensts mithilfe der Business-Konnektivitätsdienste (Business Connectivity Services) beschrieben wird. Lesen Sie auch die anderen Artikel der Reihe:

Einführung

In diesem Artikel wird das Erstellen eines sehr einfachen Webdiensts mithilfe von WCF gezeigt. Der Webdienst in diesem Artikel hat eine spezielle Eigenschaft: Obwohl es sich um einen sehr einfachen Webdienst handelt, kann er als externer Inhaltstyp der Business-Konnektivitätsdienste (Business Connectivity Services) verwendet werden. Zudem wird in dem hier vorgestellten Verfahren das Hosten des Webdiensts mithilfe der Internetinformationsdienste (Internet Information Services, IIS) beschrieben.

Dieser Webdienst enthält nur zwei Methoden: eine Suchmethode ("Finder") zum Abruf einer Auflistung von Elementen und eine spezielle Suchmethode ("specific Finder") zum Abruf eines einzelnen Elements. Die der Auflistung zugrunde liegenden Daten befinden sich in einer initialisierten Liste. Das Schema dieser kleinen Datenbank ist sehr einfach. Es besteht aus einer einzelnen flachen Tabelle mit zwei Feldern – einem ganzzahligen Feld, CustomerID, und einem Zeichenfolgenfeld, CustomerName. CustomerID stellt eine eindeutige ID dar. Der folgende Codeausschnitt zeigt die Initialisierung der Liste mit den Daten, die von dem Webdienst bereitgestellt werden.

return new List<Customer>()
{
    new Customer
    {
        CustomerID = 1,
        CustomerName = "Bob",
    },
    new Customer
    {
        CustomerID = 2,
        CustomerName = "Bill",
    },
    new Customer
    {
        CustomerID = 3,
        CustomerName = "Cheryl",
    },
};

Nach dem Erstellen und Konfigurieren des Webdiensts können Sie mit SharePoint Designer 2010 einen externen Inhaltstyp daraus erstellen und dann die Daten in einer SharePoint-Liste anzeigen. In der folgenden Abbildung ist eine externe SharePoint-Liste dargestellt.

Abbildung 1. Externe SharePoint 2010-Liste

Externe SharePoint 2010-Liste

Wie Sie vielleicht wissen, ist für die Business-Konnektivitätsdienste (Business Connectivity Services) in SharePoint Foundation 2010 und SharePoint Server 2010 Lese-/Schreibzugriff möglich. Wenn Sie zusätzliche Methoden zum Erstellen, Aktualisieren und Löschen von Elementen bereitstellen, können Sie die Daten in einer Liste vollständig verwalten. Dieser Webdienst soll so einfach wie möglich sein. Daher bietet diese Implementierung nur Lesezugriff. Der Schwerpunkt liegt hier auf Sicherheits- und Identitätsgesichtspunkten. Die Art der Datenbankspeicherung, der Speicherort sowie die Details des Schemas spielen für dieses Thema keine Rolle.

Das hier vorgestellte Verfahren ist für Windows Server 2008 R2 und Windows Server 2008 ausgelegt. Der Webdienst kann mit Microsoft Visual Studio 2010 oder Visual Studio 2008 erstellt werden.

Sie können den hier vorgestellten Webdienst auf jedem beliebigen Entwicklungscomputer mit Internetinformationsdiensten (IIS) erstellen, ausführen und testen. Wenn Sie jedoch mithilfe der Business-Konnektivitätsdienste (Business Connectivity Services) eine Verbindung mit dem Webdienst als externer Inhaltstyp herstellen möchten, sollten Sie das Beispiel in einer SharePoint 2010-Entwicklungsumgebung erstellen, sodass SharePoint Foundation 2010 oder SharePoint Server 2010 und der Beispielwebdienst auf demselben Computer ausgeführt werden. Sie können den Webdienst auch auf einem anderen Server platzieren und als externen Inhaltstyp verwenden. In diesem Fall müssen Sie jedoch entweder auf die Sicherheit verzichten oder einen Ansprüche unterstützenden Webdienst erstellen.

Wie erwähnt, wird im hier vorgestellten Verfahren das Hosten des Webdiensts unter IIS gezeigt. Die meisten Implementierer eines solchen Webdiensts möchten ihn auf diese Weise hosten. Das Hosten als Dienst von IIS bietet zahlreiche Vorteile, wie Wiederverwendung von Prozessen, Prozessintegritätsüberwachung und nachrichtenbasierte Aktivierung.

Voraussetzungen

Dieses Verfahren ist für Windows Server 2008 oder Windows Server 2008 R2 ausgelegt. In beiden Fällen habe ich auf einem Server mit einem neu installierten, gepatchten Betriebssystem begonnen. Anschließend habe ich die erforderlichen Rollen und Features installiert, sodass IIS installiert war und ausgeführt wurde. Darüber hinaus erfordern die hier vorgestellten Verfahren .NET Framework 3.5.1 und entweder Visual Studio 2008 oder Visual Studio 2010.

Installieren von Windows Communication Foundation (WCF) und Internetinformationsdiensten

Installieren Sie mithilfe des Server-Managers die Webserverrolle (IIS) und das .NET Framework 3.5.1-Feature.

Für dieses Beispiel ist nur die Webserverrolle (IIS) Erforderlich. Die folgende Abbildung zeigt das Dialogfeld im Assistenten zum Hinzufügen von Rollen.

Abbildung 2. Auswählen der Webserverrolle im Assistenten zum Hinzufügen von Rollen

Webserver im Assistenten zum Hinzufügen von Rollen auswählen

Nach dem Hinzufügen der Webserverrolle (IIS) werden Sie von dem Assistenten zur Auswahl von Rollendiensten aufgefordert. Wählen Sie Anwendungsentwicklung aus. Die folgende Abbildung zeigt das Dialogfeld im Assistenten zum Hinzufügen von Rollen.

Abbildung 3. Auswählen von "Anwendungsentwicklung" im Assistenten zum Hinzufügen von Rollen

Anwendungsentwicklung im Assistenten zum Hinzufügen von Rollen auswählen

Fügen Sie zum Installieren von .NET Framework die .NET Framework 3.5.1-Features hinzu. Die folgende Abbildung zeigt das Dialogfeld im Assistenten zum Hinzufügen von Rollen.

Abbildung 4. Auswählen von ".NET Framework 3.5.1-Features" im Assistenten zum Hinzufügen von Rollen

.NET Framework 3.5.1auswählen

Wenn Sie dieses Feature unter Windows Server 2008 (nicht R2) installieren, müssen Sie nach der Auswahl von .NET Framework 3.0-Features die Option WCF-Aktivierung auswählen. Dies ist die Standardauswahl unter Windows Server 2008 R2. Die folgende Abbildung zeigt das Dialogfeld im Assistenten zum Hinzufügen von Rollen.

Abbildung 5. Auswählen von "WCF-Aktivierung"

WCF-Aktivierung in Windows Server 2008 auswählen

Damit in IIS gehostete WCF-Dienste ordnungsgemäß funktionsfähig sind, müssen WCF und IIS installiert sein. Die Verfahren zum Installieren von WCF (im Rahmen von .NET Framework 3.0) und IIS unterscheiden sich je nach dem verwendeten Betriebssystem. Zur Installation unter einem anderen Betriebssystem als Windows Server 2008 oder Windows Server 2008 R2 können Sie unter Microsoft .NET Framework 3.0 Redistributable Package.NET Framework 3.0 herunterladen und installieren. Weitere Informationen finden Sie unter Installieren von IIS.

Registrieren des Dienstmodells

Zur Ausführung des Beispiels müssen Sie diese Version von WCF registrieren und Skriptzuordnungen am Stamm der IIS-Metabasis aktualisieren.

So registrieren Sie das Dienstmodell

  1. Starten Sie eine Visual Studio-Eingabeaufforderung. Führen Sie sie als administrator aus. Die folgende Abbildung zeigt die Ausführung der Eingabeaufforderung als Administrator.

    Abbildung 6. Ausführen der Visual Studio-Eingabeaufforderung als Administrator

    Eingabeaufforderung als Administrator ausführen

    Klicken Sie auf Start, auf Alle Programme, auf Visual Studio 2010, auf Visual Studio Tools, klicken Sie mit der rechten Maustaste auf Visual Studio-Eingabeaufforderung, und klicken Sie dann auf Als Administrator ausführen.

    Die Visual Studio-Eingabeaufforderung für Visual Studio 2008 befindet sich an einer ähnlichen Position.

  2. Wechseln Sie zu folgendem Verzeichnis:

    c:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation

  3. Geben Sie an der Eingabeaufforderung Folgendes ein:

    ServiceModelReg -i

    In der folgenden Abbildung ist die Ausführung von ServiceModelReg dargestellt.

    Abbildung 7. Ausführen von "ServiceModelReg"

    'ServiceModelReg' ausführen

    HinweisHinweis

    Dieser Befehl muss nicht an einer Visual Studio-Eingabeaufforderung ausgeführt werden. Da jedoch für den nächsten Schritt eine Visual Studio-Eingabeaufforderung erforderlich ist, wurde sie bereits hier erstellt.

Aktualisieren von Skriptzuordnungen

So aktualisieren Sie Skriptzuordnungen

  • Geben Sie an der Eingabeaufforderung Folgendes ein:

    aspnet_regiis.exe -i

    Die folgende Abbildung zeigt das Aktualisieren von Skriptzuordnungen.

    Abbildung 8. Aktualisieren von Skriptzuordnungen

    'aspnet_regiis' ausführen

Erstellen von Webdiensten

So erstellen Sie einen Webdienst

  1. Erstellen Sie ein Verzeichnis C:\MyWebService, das den Webdienst enthalten soll. Wenn Sie ein anderes Verzeichnis verwenden, müssen Sie die Verfahren entsprechend ändern.

  2. Starten Sie Visual Studio 2010 (oder Visual Studio 2008).

  3. Klicken Sie auf Datei, auf Neu und dann auf Projekt. Wählen Sie als Kategorie der installierten Vorlagen WCF aus. Wählen Sie als Vorlage WCF-Dienstanwendung aus. Wählen Sie als Zielframework .NET Framework 3.5 aus. Wechseln Sie für den Speicherort des Projekts zu dem Verzeichnis, das Sie in Schritt 1 erstellt haben. Nennen Sie das Projekt CustomersService. Erstellen Sie kein Verzeichnis für die Lösung. Die folgende Abbildung zeigt, wie das Dialogfeld Neues Projekt aussehen sollte.

    Abbildung 9. Das Dialogfeld "Neues Projekt"

    Dialogfeld 'Neues Projekt'

    HinweisHinweis

    Denken Sie daran, das Ziel in .NET Framework 3.5 zu ändern. Standardmäßig wird von Visual Studio das Zielframework .NET Framework 4 verwendet. Für das hier vorgestellte Verfahren müssen Sie dies in .NET Framework 3.5 ändern.

  4. Benennen Sie im Projekt das Element IService1.cs in ICustomers.cs um. Von Visual Studio 2010 wird angeboten, alle Verweise auf das Codeelement IService1 in dem Projekt umzubenennen. Klicken Sie auf Ja. Tatsächlich werden wir den gesamten Code in allen Modulen ändern. Es ist also unerheblich, ob Sie auf Ja oder Nein klicken.

  5. Benennen Sie im Projekt das Element Service1.svc in Customers.svc um. In der folgenden Abbildung ist der Projektmappen-Explorer nach der Umbenennung dargestellt.

    Abbildung 10. Projektmappen-Explorer nach dem Umbenennen der Elemente

    Projektmappen-Explorer nach dem Umbenennen von Elementen

  6. Ersetzen Sie Customers.svc durch die folgende Markupzeile. Klicken Sie mit der rechten Maustaste auf Customers.svc, und wählen Sie Markup anzeigen aus. Kopieren Sie das Markup aus diesem Artikel, fügen Sie es in Visual Studio ein, und speichern Sie.

    <%@ ServiceHost Language="C#" Debug="true" Service="CustomersService.Customers" CodeBehind="Customers.svc.cs" %>
    
  7. Ersetzen Sie Customers.svc.cs durch den folgenden Code.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace CustomersService
    {
        public class Customers : ICustomers
        {
            // Finder
            public List<Customer> GetAllCustomers()
            {
                return new List<Customer>()
                {
                    new Customer
                    {
                        CustomerID = 1,
                        CustomerName = "Bob",
                    },
                    new Customer
                    {
                        CustomerID = 2,
                        CustomerName = "Bill",
                    },
                    new Customer
                    {
                        CustomerID = 3,
                        CustomerName = "Cheryl",
                    },
                };
            }
    
            // Specific finder
            public Customer GetCustomerByID(int CustomerID)
            {
                return GetAllCustomers().FirstOrDefault(c => c.CustomerID == CustomerID);
            }
        }
    }
    
  8. Ersetzen Sie ICustomers.cs durch den folgenden Code.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    
    namespace CustomersService
    {
        [ServiceContract]
        public interface ICustomers
        {
            [OperationContract] //finder
            List<Customer> GetAllCustomers();
    
            [OperationContract] //specificFinder
            Customer GetCustomerByID(int CustomerID);
        }
    
        [DataContract]
        public class Customer
        {
            [DataMember]
            public int CustomerID { get; set; }
    
            [DataMember]
            public string CustomerName { get; set; }
        }
    }
    
  9. Ersetzen Sie Web.config durch das folgende Markup. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Web.config, und wählen Sie Bearbeiten aus. Kopieren Sie das Markup, fügen Sie es ein, und speichern Sie.

    Wichtiger HinweisWichtig

    Durch diese Web.config-Datei wird der spezielle Webdienst konfiguriert. Sie befindet sich unter C:\MyWebService\CustomersService.

    <?xml version="1.0"?>
    <configuration>
      <system.serviceModel>
        <services>
          <service behaviorConfiguration="CustomersService.Service1Behavior"
            name="CustomersService.Customers">
            <endpoint address="" binding="wsHttpBinding" contract="CustomersService.ICustomers">
              <identity>
                <dns value="localhost" />
              </identity>
            </endpoint>
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="CustomersService.Service1Behavior">
              <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deploying the solution. -->
              <serviceMetadata httpGetEnabled="true"/>
              <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deploying the solution to avoid disclosing exception information. -->
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>
    </configuration>
    
  10. Erstellen Sie die Anwendung.

  11. Fügen Sie der Standardwebsite eine Anwendung hinzu. Starten Sie den Internetinformationsdienste-Manager. Klicken Sie auf Start, auf Alle Programme, auf Verwaltung und dann auf Internetinformationsdienste-Manager. Erweitern Sie in Internetinformationsdienste-Manager den Knoten Websites, klicken Sie mit der rechten Maustaste auf Standardwebsite, und wählen Sie dann Anwendung hinzufügen aus. Die folgende Abbildung veranschaulicht das Hinzufügen einer Anwendung in Internetinformationsdienste-Manager.

    Abbildung 11. Internetinformationsdienste-Manager

    Internetinformationsdienste-Manager

    Geben Sie im Dialogfeld Anwendung hinzufügen im Feld Alias den Wert Customers ein. Wechseln Sie im Feld Physikalischer Pfad zu C:\MyWebService\CustomersService. Klicken Sie zweimal auf OK. Die folgende Abbildung zeigt das Verzeichnis mit dem Webdienst.

    Abbildung 12. Verzeichnis mit dem Webdienst

    Wechseln zum Verzeichnis mit dem Webdienst

  12. Überprüfen Sie, ob der Webdienst ausgeführt wird. Starten Sie Internet Explorer, und wechseln Sie zu https://localhost/Customers/Customers.svc. Wenn der Webdienst ausgeführt wird, wird Folgendes angezeigt:

    Abbildung 13. Webdienst CustomersService in Internet Explorer

    In Internet Explorer ausgeführter Webdienst

Überprüfen des Webdiensts

Eine andere Möglichkeit zum Testen des Webdiensts bietet der WCF-Testclient.

So überprüfen Sie den Webdienst mithilfe des WCF-Testclients

  1. Starten Sie eine Visual Studio-Eingabeaufforderung (oder verwenden Sie diejenige, die noch vom Ende des vorherigen Verfahrens geöffnet ist).

  2. Geben Sie wcftestclient ein, um den WCF-Testclient auszuführen. Klicken Sie auf Datei und dann auf Dienst hinzufügen.

  3. Geben Sie https://localhost/Customers/Customers.svc als Endpunktadresse ein, und klicken Sie dann auf OK.

    In der folgenden Abbildung ist die Eingabe des Endpunkts im WCF-Testclient dargestellt.

    Abbildung 14. WCF-Testclient

    WCF-Testclient

    Wenn der Dienst erfolgreich hinzugefügt wurde, werden die von dem Dienst verfügbar gemachten Methoden angezeigt. Die folgende Abbildung zeigt die Webdienstmethoden im WCF-Testclient.

    Abbildung 15. WCF-Testclient mit Methoden

    WCF-Testclient mit Methoden

  4. Doppelklicken Sie auf GetAllCustomers. Dadurch wird ein Fenster geöffnet, in dem Sie die Anforderung konfigurieren und starten können.

  5. Klicken Sie auf Aufrufen, um die Antwort des Webdiensts anzuzeigen. Die folgende Abbildung zeigt das Ergebnis des Aufrufs von GetAllCustomers.

    Abbildung 16. WCF-Testclient mit Ergebnis des Aufrufs von "GetAllCustomers"

    WCF-Testclient mit Daten

Schlussbemerkung

In diesem Artikel haben Sie den ersten von vier Schritten ausgeführt, mit denen ein Ansprüche unterstützender Webdienst erstellt und mithilfe der Business-Konnektivitätsdienste (Business Connectivity Services) verwendet wird. Sie haben den Webdienst erstellt, kompiliert und mithilfe von IIS gehostet. Im nächsten Artikel, WCF: Bestimmen der Identität des Aufrufers in WCF-Webdiensten (Teil 2 von 4), erweitern Sie das Beispiel, um mit Features von Windows Identity Foundation (WIF) die Identität des Webdienstaufrufers zu bestimmen.

Weitere Ressourcen