Herstellen einer Verbindung mit einem WCF-Dienst mithilfe von Business Connectivity Services in Office 2010

Zusammenfassung: Hier erhalten Sie Informationen zum Erstellen eines externen Microsoft Business Connectivity Services (BCS)-Inhaltstyps für Microsoft Office 2010, der auf einem Windows Communication Foundation (WCF)-Dienst basiert. (35 gedruckte Seiten)

Letzte Änderung: Montag, 14. Mai 2012

Gilt für: Excel 2010 | Office 2007 | Office 2010 | Open XML | PowerPoint 2010 | SharePoint Designer 2010 | SharePoint Server 2010 | VBA | Word 2010

Inhalt dieses Artikels
Übersicht über das Erstellen und Verwenden eines externen Inhaltstyps auf der Grundlage eines WCF-Diensts
Verwenden von Visual Studio 2010 zum Erstellen einer WCF-Dienstanwendung
Erstellen des simulierten Back-End-Datenspeichers
Hinzufügen eines Verweises auf "Microsoft.BusinessData" zum Dienstprojekt
Hinzufügen von Code zum WCF-Dienst
Hosten des Diensts mit IIS
Konfigurieren des Diensts zum Veröffentlichen der Metadaten
Verwenden von SharePoint Designer zum Erstellen eines externen Inhaltstyps aus dem Dienst
Verwenden des externen Inhaltstyps in einem aus einer SharePoint-Dokumentbibliothek erstellten Word-Dokument
Schlussbemerkung
Weitere Ressourcen

Veröffentlicht: August 2010

Beitrag von:  Joel Krist, iSoftStone (in englischer Sprache)

Inhalt

  • Übersicht über das Erstellen und Verwenden eines externen Inhaltstyps auf der Grundlage eines WCF-Diensts

  • Verwenden von Visual Studio 2010 zum Erstellen einer WCF-Dienstanwendung

  • Erstellen des simulierten Back-End-Datenspeichers

  • Hinzufügen eines Verweises auf "Microsoft.BusinessData" zum Dienstprojekt

  • Hinzufügen von Code zum WCF-Dienst

  • Hosten des Diensts mit IIS

  • Konfigurieren des Diensts zum Veröffentlichen der Metadaten

  • Verwenden von SharePoint Designer zum Erstellen eines externen Inhaltstyps aus dem Dienst

  • Verwenden des externen Inhaltstyps in einem aus einer SharePoint-Dokumentbibliothek erstellten Word-Dokument

  • Schlussbemerkung

  • Weitere Ressourcen

Klicken Sie, um Code abzurufen.   Beispielcode herunterladen: Herstellen einer Verbindung mit einem WCF-Dienst mithilfe von BCS (in englischer Sprache)

Klicken Sie hier, um das Video anzuzeigen     Video ansehen

Übersicht über das Erstellen und Verwenden eines externen Inhaltstyps auf der Grundlage eines WCF-Diensts

Microsoft Business Connectivity Services, das mit Microsoft Office 2010 und Microsoft SharePoint 2010 bereitgestellt wird, baut auf der vom Geschäftsdatenkatalog bereitgestellten Funktionalität auf. Der Geschäftsdatenkatalog ist in Microsoft SharePoint Server enthalten. Auf diese Weise werden neue Features eingeführt, z. B. Unterstützung für das Zurückschreiben in externe Systeme und die Rich-Client-Integration. Von Microsoft SharePoint Designer 2010 wird der Designer für externe Inhaltstypen bereitgestellt, den Sie zum Erstellen von externen Inhaltstypen in Microsoft Business Connectivity Services (BCS) auf der Grundlage von Windows Communication Foundation (WCF)-Diensten verwenden können. In dieser exemplarischen Vorgehensweise wird die Verwendung von SharePoint Designer zum Erstellen eines externen Inhaltstyps in Business-Konnektivitätsdienste (Business Connectivity Services) erläutert, der eine Verbindung mit einem WCF-Dienst herstellt. Der Dienst wird mit Visual Studio 2010 erstellt und verwendet XLINQ zum Bereitstellen des Lese-/Schreibzugriffs auf Daten, die in einer einfachen XML-Datendatei enthalten sind. Es wird die Verwendung des externen Inhaltstyps mithilfe von externen Dateninhaltssteuerelementen in einem Microsoft Word-Dokument gezeigt. Das Word-Dokument wird aus einer SharePoint-Dokumentbibliothek erstellt, die externe Daten über eine externe Datenspalte offen legt.

In dieser exemplarischen Vorgehensweise sind Schritte und Beispielcode bereitgestellt, die die Verwendung von Visual Studio 2010 zum Erstellen eines Windows Communication Foundation (WCF)-Diensts zeigen, und anschließend wird SharePoint Designer 2010 zum Erstellen eines externen Inhaltstyps in Business-Konnektivitätsdienste (Business Connectivity Services) auf der Grundlage dieses Diensts erstellt. Der WCF-Dienst kann Lese-/Schreibvorgänge in einer XML-Datendatei ausführen und implementiert Methoden, die den Stereotypen Erstellen, Element lesen, Liste lesen, Aktualisieren und BCS löschen zugeordnet werden können.

Nachdem der externe Inhaltstyp erstellt wurde, wird in dieser exemplarischen Vorgehensweise beschrieben, wie externe Daten in einem Word-Dokument durch das Erstellen einer SharePoint-Dokumentbibliothek, die eine externe Datenspalte basierend auf dem externen Inhaltstyp verwendet, sichtbar gemacht werden können. Ein Word-Dokument wird aus der Dokumentbibliothek und den externen Dateninhaltssteuerelementen erstellt, die zum Anzeigen von externen Daten verwendet werden können. Weitere Informationen zu anderen Möglichkeiten zur Anzeige von externen Daten auf dem Server und dem Client finden Sie unter Wo können externe Daten angezeigt werden?

Verwenden von Visual Studio 2010 zum Erstellen einer WCF-Dienstanwendung

Im folgenden Verfahren wird die Verwendung von Microsoft Visual Studio zum Erstellen einer WCF-Dienstanwendung gezeigt.

So erstellen Sie eine WCF-Dienstanwendung mithilfe von Visual Studio 2010

  1. Starten Sie Microsoft Visual Studio 2010 als Administrator.

  2. Klicken Sie im Visual Studio-Menü Datei auf Neu und dann auf Projekt.

  3. Wählen Sie im Dialogfeld Neues Projekt im Bereich Installierte Vorlagen den Typ Visual C#-Webvorlage aus.

  4. Wählen Sie in der Vorlagenliste die Vorlage WCF-Dienstanwendung aus.

  5. Legen Sie den Namen für das Projekt und die Lösung auf CustomerService fest, und wählen Sie dann .NET Framework 3.5 als Version für das Zielframework aus. Dies ist in Abbildung 1 dargestellt.

    Abbildung 1. Erstellen der Lösung

    Erstellen der Lösung

  6. Klicken Sie auf OK. Die Lösung wird von Visual Studio erstellt, und die CodeBehind-Datei des Diensts, Service1.svc.cs, wird im Code-Editor geöffnet.

  7. Verwenden Sie den Befehl Umbenennen im Visual Studio-Menü Umgestalten, um den Namen der Service1-Klasse wie folgt zu ändern:

    1. Klicken Sie in der Datei Service1.svc.cs mit der rechten Maustaste auf den Service1-Klassennamen, klicken Sie auf Umgestalten, und klicken Sie dann auf Umbenennen, wie in Abbildung 2 dargestellt.

      Abbildung 2. Auswählen des Menüs 'Umbenennen' für die Service1-Klasse

      Auswählen des Menüs 'Umbenennen'

    2. Ändern Sie im Dialogfeld Umbenennen den Namen der Service1-Klasse in WCFCustomer, deaktivieren Sie das Kontrollkästchen Vorschau der Verweisänderungen, und klicken Sie dann auf OK. Dies ist in Abbildung 3 dargestellt.

      Abbildung 3. Umbenennen der Service1-Klasse

      Umbenennen der Service1-Klasse

  8. Wiederholen Sie die vorherigen Schritte, um den Namen der IService1-Schnittstelle wie folgt zu ändern:

    1. Klicken Sie in der Datei Service1.svc.cs mit der rechten Maustaste auf den Schnittstellennamen IService1 in der WCFCustomer-Klassendefinition, klicken Sie auf Umgestalten, und klicken Sie dann auf Umbenennen. Dies ist in Abbildung 4 dargestellt.

      Abbildung 4. Auswählen des Menüs 'Umbenennen' für die IService1-Schnittstelle

      Auswählen des Menüs 'Umbenennen'

    2. Ändern Sie im Dialogfeld Umbenennen den Namen der IService1-Schnittstelle zu IWCFCustomer, und klicken Sie dann auf OK. Dies ist in Abbildung 5 dargestellt.

      Abbildung 5. Umbenennen der IService1-Schnittstelle

      Umbenennen der IService1-Schnittstelle

  9. Ändern Sie in Visual Studio im Projektmappen-Explorer den Namen des Service1.svc-Knotens zu WCFCustomer.svc. Ändern Sie den Namen der IService1.cs-Datei zu IWCFCustomer.cs.

    Abbildung 6. Umbenennen von 'Service1.svc' und 'IService1.cs'

    Umbenennen von 'Service1.svc' und 'IService1.cs'

Erstellen des simulierten Back-End-Datenspeichers

In dieser exemplarischen Vorgehensweise erstellen Sie einen externen Inhaltstyp auf der Grundlage einer Kundenentität mit dem Namen WCFCustomer. Die WCFCustomer-Entität ist sehr einfach und besitzt drei Felder: ID, first name und last name. Zur Verringerung der Komplexität verwenden Sie eine einfache XML-Datendatei, um einen Back-End-Datenspeicher für Kundendaten zu simulieren. In den folgenden Schritten wird das Erstellen der Kundendatendatei erläutert.

So erstellen Sie den simulierten Back-End-Datenspeicher

  1. Starten Sie Ihren bevorzugten XML-Editor, und erstellen Sie eine neue Datei.

  2. Kopieren Sie den folgenden XML-Code, und fügen Sie ihn in die neue Datei ein.

    <?xml version="1.0" encoding="utf-8"?>
    <Customers NextCustomerId="3">
      <Customer ID="0">
        <CustomerFName>Customer</CustomerFName>
        <CustomerLName>Zero</CustomerLName>
      </Customer>
      <Customer ID="1">
        <CustomerFName>Customer</CustomerFName>
        <CustomerLName>One</CustomerLName>
      </Customer>
      <Customer ID="2">
        <CustomerFName>Customer</CustomerFName>
        <CustomerLName>Two</CustomerLName>
      </Customer>
    </Customers>
    
  3. Speichern Sie die neue Datei mit dem Namen CustomerData.xml in dem App_Data-Ordner, der sich unter dem CustomerService-Projektordner befindet.

    Abbildung 7. Erstellen der CustomerData-Datei

    Erstellen der CustomerData-Datei

Hinzufügen eines Verweises auf "Microsoft.BusinessData" zum Dienstprojekt

In dem Beispielcode dieser exemplarischen Vorgehensweise werden Ausnahmen verwendet, die im von der Assembly Microsoft.BusinessData.dll bereitgestellten Microsoft.BusinessData.Runtime-Namespace definiert sind. Mit den folgenden Schritten können Sie Microsoft.BusinessData einen Verweis hinzufügen.

So fügen Sie einen Verweis zu Microsoft.BusinessData hinzu

  1. Wählen Sie in Visual Studio im Projektmappen-Explorer das CustomerService-Projekt aus.

  2. Klicken Sie in Visual Studio auf Projekt, und klicken Sie dann auf Verweis hinzufügen.

  3. Klicken Sie im Dialogfeld Verweis hinzufügen auf die Registerkarte Durchsuchen, und navigieren Sie dann zum Ordner im folgenden Pfad: C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI.

  4. Verschieben Sie den Fensterinhalt hinunter bis zur Assembly Microsoft.BusinessData.dll, wählen Sie die Assembly aus, und klicken Sie dann auf OK. Dies ist in Abbildung 8 dargestellt.

    Abbildung 8. Hinzufügen eines Verweises zu 'Microsoft.BusinessData'

    Hinzufügen eines Verweises zu 'Microsoft.BusinessData'

Hinzufügen von Code zum WCF-Dienst

Von der IWCFCustomer-Schnittstelle werden der Dienst und die vom Dienst unterstützten Datenverträge definiert. Von der WCFCustomer-Klasse wird die Implementierung der IWCFCustomer-Schnittstelle bereitgestellt. In den folgenden Schritten wird das Implementieren der Stereotypen Finder, Specific Finder, Creator, Updater und Deleter erläutert, die erforderlich sind, damit der Dienst zum Erstellen eines externen Inhaltstyps verwendet werden kann.

So fügen Sie dem WCF-Dienst Code hinzu

  1. Doppelklicken Sie im Visual Studio-Projektmappen-Explorer auf die Datei IWCFCustomer.cs, um sie im Code-Editor zu öffnen.

  2. Ersetzen Sie den Inhalt der Datei IWCFCustomer.cs durch den folgenden Code.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.Text;
    
    namespace CustomerService
    {
      [ServiceContract]
      public interface IWCFCustomer
      {
        [OperationContract]
        IEnumerable<WCFCustomerType> ReadList();
    
        [OperationContract]
        WCFCustomerType ReadItem(int customerID);
    
        [OperationContract]
        WCFCustomerType Create(WCFCustomerType newCustomer);
    
        [OperationContract]
        void Update(WCFCustomerType customer);
    
        [OperationContract]
        void Delete(int customerID);
      }
    
      [DataContract]
      public class WCFCustomerType
      {
        Int32 customerID;
        string firstName;
        string lastName;
    
        [DataMember]
        public Int32 CustomerID
        {
            get { return customerID; }
            set { customerID = value; }
        }
    
        [DataMember]
        public string FirstName
        {
            get { return firstName; }
            set { firstName = value; }
        }
    
        [DataMember]
        public string LastName
        {
            get { return lastName; }
            set { lastName = value; }
        }
      }
    }
    
  3. Speichern Sie die Änderungen an der Datei IWCFCustomer.cs.

  4. Wählen Sie die Datei WCFCustomer.svc.cs im Code-Editor aus.

  5. Ersetzen Sie den Inhalt der Datei WCFCustomer.cs durch den folgenden Code.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.Text;
    
    using System.Xml.Linq;
    using Microsoft.BusinessData.Runtime;
    
    namespace CustomerService
    {
      [ServiceBehavior(Namespace = "urn:CustomerService:WCFCustomer")] 
      public class WCFCustomer : IWCFCustomer
      {
        // Replace the <Path_To_Service_Project_Folder> placeholder
        // below with the actual path to the service project folder.
        private const string dataFilePath =
          @"<Path_To_Service_Project_Folder>\App_Data\Customers.xml";
    
        public IEnumerable<WCFCustomerType> ReadList()
        {
          try
          {
            var customers =
              XElement.Load(dataFilePath).Elements("Customer");
    
            var customersList =
              from cust in customers
              orderby (string)cust.Attribute("ID")
              select new WCFCustomerType
              {
                CustomerID = (Int32)cust.Attribute("ID"),
                FirstName = (string)cust.Element("CustomerFName"),
                LastName = (string)cust.Element("CustomerLName")
              };
    
            return customersList;
          }
          catch (Exception generalException)
          {
            throw new RuntimeException(
              "There was a problem reading customer data.",
              generalException);
          }
        }
    
        public WCFCustomerType ReadItem(int customerID)
        {
          try
          {
            var customers =
              XElement.Load(dataFilePath).Elements("Customer");
    
            var customerList =
              from cust in customers
              where (Int32)cust.Attribute("ID") == customerID
              select new WCFCustomerType
              {
                CustomerID = (Int32)cust.Attribute("ID"),
                FirstName = (string)cust.Element("CustomerFName"),
                LastName = (string)cust.Element("CustomerLName")
              };
    
            // The following will throw InvalidOperationException if the
            // customerNameElements collection is empty meaning a
            // customer with the specified ID does not exist.
            return customerList.First();
          }
          catch (InvalidOperationException)
          {
            throw new ObjectNotFoundException(
              "Unable to read data for the customer with ID = " +
              customerID.ToString() +
              ". The customer no longer exists.");
          }
          catch (Exception generalException)
          {
            throw new RuntimeException(
              "There was a problem reading customer data.",
              generalException);
          }
        }
    
        public WCFCustomerType Create(WCFCustomerType newCustomer)
        {
          try
          {
            XElement customers = XElement.Load(dataFilePath);
            Int32 nextCustomerId =
              (Int32)customers.Attribute("NextCustomerId");
    
            WCFCustomerType returnCustomer = new WCFCustomerType();
    
            returnCustomer.CustomerID = nextCustomerId;
            returnCustomer.FirstName = newCustomer.FirstName;
            returnCustomer.LastName = newCustomer.LastName;
    
            XElement newCustomerElement = new XElement("Customer");
            newCustomerElement.SetAttributeValue("ID",
              nextCustomerId);
    
            XElement newCustomerFNameElement =
              new XElement("CustomerFName", returnCustomer.FirstName);
    
            XElement newCustomerLNameElement =
              new XElement("CustomerLName", returnCustomer.LastName);
    
            newCustomerElement.Add(newCustomerFNameElement);
            newCustomerElement.Add(newCustomerLNameElement);
            customers.Add(newCustomerElement);
    
            customers.SetAttributeValue("NextCustomerId",
              nextCustomerId + 1);
            customers.Save(dataFilePath);
    
            return returnCustomer;
          }
          catch (Exception generalException)
          {
            throw new RuntimeException(
              "There was a problem creating a new customer.",
              generalException);
          }
        }
    
        public void Update(WCFCustomerType customer)
        {
          try
          {
            XElement customers = XElement.Load(dataFilePath);
    
            var customerFNameElements =
              from cust in customers.Elements("Customer")
              where (Int32)cust.Attribute("ID") == customer.CustomerID
              select cust.Element("CustomerFName");
    
            XElement customerFNameElement =
              customerFNameElements.First();
            customerFNameElement.SetValue(customer.FirstName);
    
            var customerLNameElements =
              from cust in customers.Elements("Customer")
              where (Int32)cust.Attribute("ID") == customer.CustomerID
              select cust.Element("CustomerLName");
    
            // The following will throw InvalidOperationException if
            // the customerNameElements collection is empty meaning a
            // customer with the specified ID does not exist.
            XElement customerLNameElement =
              customerLNameElements.First();
            customerLNameElement.SetValue(customer.LastName);
    
            customers.Save(dataFilePath);
          }
          catch (InvalidOperationException)
          {
            throw new ObjectNotFoundException(
              "Unable to update the customer with ID = " +
              customer.CustomerID.ToString() +
              ". The customer no longer exists.");
          }
          catch (Exception generalException)
          {
            throw new RuntimeException(
              "There was a problem updating the customer with ID = " +
              customer.CustomerID.ToString() + ".", generalException);
          }
        }
    
        public void Delete(int customerID)
        {
          try
          {
            XElement customers = XElement.Load(dataFilePath);
    
            var customerElements =
              from cust in customers.Elements("Customer")
              where (Int32)cust.Attribute("ID") == customerID
              select cust;
    
            // The following will throw InvalidOperationException if the
            // customerElements collection is empty meaning a customer
            // with the specified ID does not exist.
            XElement customer = customerElements.First();
            customer.Remove();
    
            customers.Save(dataFilePath);
          }
          catch (InvalidOperationException)
          {
            throw new ObjectNotFoundException(
              "Unable to delete the customer with ID = " +
              customerID.ToString() +
              ". The customer no longer exists.");
          }
          catch (Exception generalException)
          {
            throw new RuntimeException(
              "There was a problem deleting the customer with ID = " +
              customerID.ToString() + ".", generalException);
          }
        }    
      }
    }
    
  6. Speichern Sie die Änderungen an der Datei WCFCustomer.cs.

  7. Drücken Sie F6, um die Dienstlösung zu erstellen.

Hosten des Diensts mit IIS

WCF-Dienste können auf unterschiedliche Art und Weise gehostet werden. In dieser exemplarischen Vorgehensweise wird das Hosten des Diensts mithilfe von Internetinformationsdienste (Internet Information Services, IIS) gezeigt. Weitere Informationen zum Hosten von WCF-Diensten mit IIS finden Sie unter Gewusst wie: Hosten eines WCF-Diensts in IIS und unter Deploying an Internet Information Services-Hosted WCF Service.

So hosten Sie den Dienst mit IIS

  1. Starten Sie IIS-Manager.

  2. Erweitern Sie im Bereich Verbindungen des IIS-Managers den Knoten für den Server, der den Dienst hosten soll. Klicken Sie mit der rechten Maustaste auf den Knoten Websites für den Server, und klicken Sie dann auf Website hinzufügen.

  3. Geben Sie im Dialogfeld Website hinzufügen den Namen CustomerService für Website an, geben Sie für den Pfad Physikalisch den vollständig qualifizierten Pfad zu dem Ordner ein, der die Visual Studio-Dienstprojektdateien enthält, und geben Sie eine nicht verwendete Portnummer in den Einstellungen für Bindung an. Dies ist in Abbildung 9 dargestellt.

    Abbildung 9. Hinzufügen einer Website zum Hosten des WCF-Diensts

    Hinzufügen einer Website zum Hosten des WCF-Diensts

  4. Klicken Sie zum Erstellen der Website auf OK.

  5. Erteilen Sie die Berechtigung Ändern für das Netzwerkdienstkonto im Ordner App_Data, der sich unter dem Projektordner CustomerService befindet. Diese Angabe ist erforderlich, damit der WCF-Dienst den Inhalt der Kundendatendatei ändern kann.

Konfigurieren des Diensts zum Veröffentlichen der Metadaten

In den folgenden Schritten wird das Konfigurieren des Diensts erläutert, sodass die Metadaten veröffentlicht werden können, die die unterstützten Vorgänge und Typen beschreiben. Dadurch können diese Informationen von Tools wie z. B. SharePoint Designer erkannt werden.

So konfigurieren Sie den Dienst zum Veröffentlichen der Metadaten

  1. Doppelklicken Sie im Visual Studio-Projektmappen-Explorer auf die Datei web.config, um sie im XML-Editor zu öffnen.

  2. Ersetzen Sie den vorhandenen Knoten <system.serviceModel> in der Datei web.config durch das folgende Markup.

    <system.serviceModel>
      <services>
        <service behaviorConfiguration="CustomerServiceBehavior"
          name="CustomerService.WCFCustomer">
          <endpoint
            address="http://<Site>:<Port>/WCFCustomer.svc"
            binding="wsHttpBinding"
            contract="CustomerService.IWCFCustomer"
            bindingNamespace="urn:CustomerService:WCFCustomer" />
          <endpoint address="mex" binding="mexHttpBinding"
            contract="IMetadataExchange" />
        </service>
      </services>
      <behaviors>
        <serviceBehaviors>
          <behavior name="CustomerServiceBehavior">
            <serviceMetadata httpGetEnabled="true"/>
            <serviceDebug includeExceptionDetailInFaults="true"/>
          </behavior>
        </serviceBehaviors>
      </behaviors>
    </system.serviceModel>
    
  3. Ersetzen Sie die Platzhalter <Site> und <Port> im Markup durch die Werte der Website, die Sie zuvor im IIS-Manager erstellt haben, und speichern Sie dann die Änderungen in der Datei web.config.

  4. Überprüfen Sie, dass der Dienst ordnungsgemäß in IIS gehostet wird und dass er die Metadaten zurückgeben kann, in denen die unterstützten Vorgänge und Typen beschrieben werden. Öffnen Sie den Webbrowser, und wechseln Sie zum Dienstendpunkt unter der zuvor erstellten Website, wobei die Zeichenfolge ?wsdl an das Ende der URL angefügt wird. Ein Beispiel:

    https://www.contoso.com:32003/WCFCustomer.svc?wsdl

    Im Browser sollte die WSDL für den Dienst wie in Abbildung 10 dargestellt angezeigt werden.

    Abbildung 10. WSDL für den in IIS gehosteten Dienst

    WSDL für den in IIS gehosteten Dienst

Verwenden von SharePoint Designer zum Erstellen eines externen Inhaltstyps aus dem Dienst

In diesem Abschnitt der exemplarischen Vorgehensweise erstellen Sie eine Verbindung mit dem WCF-Dienst und definieren die unterstützten Vorgänge für den externen Inhaltstyp.

Erstellen einer Verbindung mit dem WCF-Dienst

Führen Sie die folgenden Schritte aus, um eine Verbindung mit dem WCF-Dienst zu erstellen.

So erstellen Sie eine Verbindung mit dem WCF-Dienst

  1. Starten Sie SharePoint Designer 2010, und öffnen Sie die SharePoint-Website, in der Sie die Artefakte für den externen Inhaltstyp speichern möchten.

  2. Klicken Sie im linken Navigationsbereich auf Externe Inhaltstypen.

  3. Klicken Sie im kontextbezogenen Menüband für Entitäten auf Externer Inhaltstyp. Damit wird eine neue Seite Externer Inhaltstyp geöffnet.

  4. Klicken Sie neben Name auf den Link Neuer externer Inhaltstyp, und geben Sie dann WSFCustomer ein.

  5. Wählen Sie in Office-Elementtyp die Option Kontakt aus, um zu ermöglichen, dass externe Listen basierend auf dem externen Inhaltstyp in den Offlinemodus von Outlook wechseln können. Das Szenario der Offlineliste wird in dieser exemplarischen Vorgehensweise nicht erläutert, doch durch Angeben der Option Office-Elementtyp kann der externe Inhaltstyp dem Outlook-Objekt Kontakt zugeordnet werden, sodass das Offlineszenario ermöglicht wird. In Abbildung 11 sind die allgemeinen Einstellungen für den externen Inhaltstyp WCFCustomer dargestellt.

    Abbildung 11. Allgemeine Einstellungen des externen Inhaltstyps 'WCFCustomer'

    Einstellungen für den externen Inhaltstyp 'WCFCustomer'

  6. Klicken Sie neben der Einstellung Externes System auf die Verknüpfung Klicken Sie hier, um externe Datenquellen zur ermitteln und Vorgänge zu definieren. Die Seite Vorgangs-Designer wird wie in Abbildung 12 gezeigt geöffnet.

    Abbildung 12. Seite 'Vorgangs-Designer'

    Vorgangs-Designer-Seite

  7. Klicken Sie auf Verbindung hinzufügen. Klicken Sie im geöffneten Dialogfeld Auswahl des externen Datenquellentyps (siehe Abbildung 13) in der Dropdownliste Datenquellentyp auf WCF-Dienst, und klicken Sie dann auf OK. Dies ist in Abbildung 13 dargestellt.

    Abbildung 13. Dialogfeld 'Auswahl des externen Datenquellentyps'

    Auswahl des externen Datenquellentyps

  8. Führen Sie im geöffneten Dialogfeld WCF-Verbindung die folgenden Aktionen aus:

    1. Geben Sie für die Einstellung Dienstmetadaten-URL die URL des Dienstendpunkts unter der zuvor erstellten Website ein, wobei die Zeichenfolge ?wsdl an das Ende der URL angefügt wird. Geben Sie z. B. https://www.contoso.com:32003/WCFCustomer.svc?wsdl ein.

    2. Wählen Sie im Feld Verbindungsmodus für Metadaten die Option WSDL aus.

    3. Geben Sie in das Feld Dienstendpunkt-URL die Dienstendpunkt-URL ein. Geben Sie z. B. https://www.contoso.com:32003/WCFCustomer.svc ein.

    4. Geben Sie im Feld Name den Namen WCFCustomer ein.

      In Abbildung 14 ist das ausgefüllte Dialogfeld WCF-Verbindung dargestellt.

      Abbildung 14. WCF-Verbindungseinstellungen

      WCF-Verbindungseinstellungen

  9. Klicken Sie auf OK, um die neue Verbindung zu erstellen. Die Verbindung wird von SharePoint Designer überprüft und dem Datenquellen-Explorer auf der Seite Vorgangs-Designer hinzugefügt. Erweitern Sie die Knoten unter der Datenquelle WCFCustomer, um die vom Dienst unterstützten Methoden anzuzeigen, wie in Abbildung 15 dargestellt.

    Abbildung 15. Neue Verbindung im Datenquellen-Explorer

    Neue Verbindung im Datenquellen-Explorer

Definieren der unterstützten Vorgänge für den externen Inhaltstyp

Mit den folgenden Schritten können Sie die unterstützten Vorgänge für den externen Inhaltstyp definieren.

So definieren Sie die unterstützten Vorgänge für den externen Inhaltstyp

  1. Erstellen Sie wie folgt einen Create-Vorgang:

    1. Klicken Sie im Datenquellen-Explorer mit der rechten Maustaste auf die Erstellen-Methode, und klicken Sie dann im Kontextmenü auf Neuer 'Create'-Vorgang. In diesem Kontextmenü werden alle von SharePoint Designer unterstützten Vorgangsstereotypen angezeigt.

    2. Klicken Sie im geöffneten Erstellen-Assistenten auf der Seite Eigenschaften für Vorgänge auf Weiter, um die Standardwerte Vorgangsname und Vorgangsanzeigename für den Vorgang beizubehalten.

    3. Erweitern Sie auf der Seite Eingabeparameterkonfiguration den Knoten newCustomer im Gruppenfeld Datenquellenelemente, und deaktivieren Sie den CustomerID-Parameter. Dadurch wird verhindert, dass der CustomerID-Parameter als Creator-Feld gekennzeichnet wird. Das bedeutet, dass von SharePoint kein Steuerelement für das Feld auf dem neuen Elementformular für externe Listen gerendert wird. Dies ist erforderlich, da Benutzer keine CustomerID-Werte angeben sollen, da dieses Feld vom Back-End verwaltet wird. Im Assistenten wird ein Fehler angezeigt, da mindestens ein Bezeichner angegeben werden muss. Ignorieren Sie diesen Fehler zunächst. Diese Anforderung wird im nächsten Schritt behandelt. In Abbildung 16 sind die Eingabeparameter für den Erstellenvorgang dargestellt.

      Abbildung 16. Eingabeparameter des 'Create'-Vorgangs

      Erstellen von Vorgangseingabeparametern

    4. Klicken Sie auf Weiter, um zur Seite für die Rückgabeparameterkonfiguration zu gelangen.

    5. Erweitern Sie auf der Seite für die Rückgabeparameterkonfiguration den Knoten Erstellen im Gruppenfeld Datenquellenelemente, und wählen Sie dann den CustomerID-Parameter aus.

    6. Aktivieren Sie im Gruppenfeld Eigenschaften das Kontrollkästchen Zuzuordnender Bezeichner. Die Fehlermeldung wird wie in Abbildung 17 dargestellt nicht mehr angezeigt.

      Abbildung 17. Rückgabeparameter des Erstellenvorgangs

      Erstellen von Vorgangsrückgabeparametern

    7. Klicken Sie auf Fertig stellen, um den Create-Vorgang abzuschließen.

  2. Erstellen Sie wie folgt einen Element lesen-Vorgang:

    1. Klicken Sie im Datenquellen-Explorer mit der rechten Maustaste auf die ReadItem-Methode, und klicken Sie dann im Kontextmenü auf Neuer 'ReadItem'-Vorgang.

    2. Klicken Sie im geöffneten Assistenten zum Lesen von Elementen auf der Seite Eigenschaften für Vorgänge auf Weiter, um die Standardwerte Vorgangsname und Vorgangsanzeigename für den Vorgang beizubehalten.

    3. Beachten Sie auf der Seite Eingabeparameterkonfiguration im Gruppenfeld Fehlermeldungen den Fehler zu einem Bezeichnerfeld, das für diesen externen Inhaltstyp angegeben werden muss. Wählen Sie hierzu im Gruppenfeld Datenquellenelemente das Feld CustomerId aus, und aktivieren Sie dann im Gruppenfeld Eigenschaften das Kontrollkästchen Zuzuordnender Bezeichner. Dadurch wird das CustomerID-Feld als Bezeichner für diesen externen Inhaltstyp festgelegt und nicht nur für diesen Parameter. Die Fehlermeldung wird nicht mehr angezeigt. In Abbildung 18 werden die Eingabeparameter für den Element lesen-Vorgang angezeigt.

      Abbildung 18. Eingabeparameter des 'ReadItem'-Vorgangs

      Eingabeparameter für Elementlesevorgang

    4. Klicken Sie auf Weiter, um zur Seite für die Rückgabeparameterkonfiguration zu gelangen.

    5. Erweitern Sie auf der Seite für die Rückgabeparameterkonfiguration den Knoten ReadItem im Gruppenfeld Datenquellenelemente.

    6. Klicken Sie im Gruppenfeld Datenquellenelemente auf den CustomerID-Parameter.

    7. Aktivieren Sie im Gruppenfeld Eigenschaften das Kontrollkästchen Zuzuordnender Bezeichner. Beachten Sie, dass das Feld automatisch als schreibgeschützt gekennzeichnet wird.

    8. Ordnen Sie das Feld FirstName und das Feld LastName Office-Eigenschaften zu. Wählen Sie das Feld FirstName im Gruppenfeld Datenquellenelemente aus, und wählen Sie dann die First Name (FirstName)-Eigenschaft aus der Dropdownliste für die Einstellung Office-Eigenschaft im Gruppenfeld Eigenschaften aus. Wiederholen Sie diesen Vorgang für das Feld LastName, wobei Sie es der Office-Eigenschaft Last Name (LastName) zuordnen. Abbildung 19 zeigt den Element lesen-Vorgangsrückgabeparameter.

      Abbildung 19. Rückgabeparameter des 'ReadItem'-Vorgangs

      Rückgabeparameter für Elementlesevorgang

    9. Klicken Sie auf Fertig stellen, um die Erstellung des Element lesen-Vorgangs abzuschließen.

  3. Erstellen Sie wie folgt einen Liste lesen-Vorgang:

    1. Klicken Sie im Datenquellen-Explorer mit der rechten Maustaste auf die ReadList-Methode, und klicken Sie dann im Kontextmenü auf Neuer 'ReadList'-Vorgang.

    2. Klicken Sie im geöffneten Assistenten zum Lesen von Listen auf der Seite Eigenschaften für Vorgänge auf Weiter, um die Standardwerte Vorgangsname und Vorgangsanzeigename für den Vorgang beizubehalten.

    3. Klicken Sie auf der Seite für die Eingabeparameterkonfiguration auf Weiter, um zur Seite für die Rückgabeparameterkonfiguration zu gelangen.

    4. Erweitern Sie auf der Seite für die Rückgabeparameterkonfiguration den Knoten ReadList, und erweitern Sie dann im Gruppenfeld Datenquellenelemente den Knoten ReadListElement. Wählen Sie den CustomerID-Parameter aus.

    5. Aktivieren Sie im Gruppenfeld Eigenschaften das Kontrollkästchen Zuzuordnender Bezeichner.

    6. Wählen Sie das Feld LastName aus, und aktivieren Sie dann das Kontrollkästchen In Auswahl anzeigen, damit das Feld LastName im Auswahltool für externe Daten angezeigt werden kann. Wiederholen Sie diesen Schritt für das Feld FirstName.

    7. Klicken Sie auf Fertig stellen, um die Erstellung des Liste lesen-Vorgangs abzuschließen.

  4. Erstellen Sie einen Aktualisieren-Vorgang.

    1. Klicken Sie im Datenquellen-Explorer mit der rechten Maustaste auf die Aktualisieren-Methode, und klicken Sie dann im Kontextmenü auf Neuer 'Update'-Vorgang.

    2. Klicken Sie im geöffneten Assistenten zum Aktualisieren auf der Seite Eigenschaften für Vorgänge auf Weiter, um die Standardwerte Vorgangsname und Vorgangsanzeigename für den Vorgang beizubehalten.

    3. Erweitern Sie auf der Seite für die Eingabeparameter den Knoten Customer im Gruppenfeld Datenquellenelemente, und wählen Sie dann den CustomerID-Parameter aus.

    4. Aktivieren Sie im Gruppenfeld Eigenschaften das Kontrollkästchen Zuzuordnender Bezeichner.

    5. Klicken Sie auf die Schaltfläche Fertig stellen, um die Erstellung des Aktualisieren-Vorgangs abzuschließen.

  5. Erstellen Sie wie folgt einen Löschen-Vorgang:

    1. Klicken Sie im Datenquellen-Explorer mit der rechten Maustaste auf die Löschen-Methode, und klicken Sie dann im Kontextmenü auf Neuer 'Delete'-Vorgang.

    2. Klicken Sie im geöffneten Assistenten zum Löschen auf der Seite Eigenschaften für Vorgänge auf Weiter, um die Standardwerte Vorgangsname und Vorgangsanzeigename für den Vorgang beizubehalten.

    3. Wählen Sie auf der Seite für Eingabeparameter den customerID-Parameter aus.

    4. Aktivieren Sie im Gruppenfeld Eigenschaften das Kontrollkästchen Zuzuordnender Bezeichner.

    5. Klicken Sie auf Fertig stellen, um die Erstellung des 'Delete'-Vorgangs abzuschließen.

      Abbildung 20 zeigt den externen Inhaltstyp mit den erstellten Vorgängen Erstellen, Read Item, Read List, Update und Löschen.

      Abbildung 20. Erstellte Vorfänge für den externen Inhaltstyp

      Erstellte externe Inhaltstypvorgänge

      Drücken Sie STRG+S, um den externen Inhaltstyp im Metadatenspeicher des BDC-Diensts (Business Data Connectivity) auf dem Server mit SharePoint Server zu speichern.

Verwenden des externen Inhaltstyps in einem aus einer SharePoint-Dokumentbibliothek erstellten Word-Dokument

In den folgenden Schritten wird das Erstellen einer SharePoint-Dokumentbibliothek gezeigt, die eine externe Datenspalte aus dem zuvor erstellten externen Inhaltstyp WCFCustomer enthält. Abschließend wird ein Word 2010-Dokument aus der Dokumentvorlage der Dokumentbibliothek erstellt, und es werden externe Daten aus dem externen Inhaltstyp WCFCustomer im Dokument angezeigt, indem die externen Dateninhaltssteuerelemente verwendet werden.

Erstellen der SharePoint-Dokumentbibliothek mit externer Datenspalte

Mit den folgenden Schritten können Sie die Dokumentbibliothek mit der externen Datenspalte erstellen.

So erstellen Sie die SharePoint-Dokumentbibliothek mit externer Datenspalte

  1. Wechseln Sie zur SharePoint-Website, auf der der externe Inhaltstyp WCFCustomer zuvor gespeichert wurde.

  2. Klicken Sie auf Websiteaktionen und dann auf Alle Websiteinhalte einblenden.

  3. Klicken Sie auf Erstellen, und wählen Sie dann auf der Seite Erstellen den Typ Dokumentbibliothek aus.

  4. Klicken Sie auf Weitere Optionen.

  5. Legen Sie als Namen für die neue Dokumentbibliothek WCFCustomer Documents fest, und stellen Sie sicher, dass die Einstellung Dokumentvorlage auf Microsoft Word-Dokument festgelegt ist, wie in Abbildung 21 dargestellt.

    Abbildung 21. Erstellen einer Dokumentbibliothek

    Erstellen einer Dokumentbibliothek

  6. Klicken Sie auf Erstellen, um die Dokumentbibliothek zu erstellen.

  7. Klicken Sie zum Hinzufügen einer externen Datenspalte auf die Registerkarte Bibliothek auf dem Menüband für die Serverkomponente, und klicken Sie dann auf Bibliothekseinstellungen.

  8. Klicken Sie auf der Seite Dokumentbibliothekseinstellungen im Abschnitt Spalte auf Spalte erstellen.

  9. Geben Sie auf der nun angezeigten Seite Spalte erstellen den Namen der Spalte Customer ein, und wählen Sie dann den Spaltentyp Externe Daten aus. Dadurch wird das Auswahltool für externe Inhaltstypen geöffnet, wie in Abbildung 22 gezeigt.

    Abbildung 22. Auswahltool für externe Inhaltstypen

    Auswahltool für externe Inhaltsdatentypen

  10. Klicken Sie auf das Auswahltool, und wählen Sie dann den externen Inhaltstyp WCFCustomer aus dem Dialogfeld Auswahltool für externe Inhaltstypen aus, wie in Abbildung 23 gezeigt.

    Abbildung 23. Auswählen des externen Inhaltstyps 'WCFCustomer'

    Auswählen des externen Inhaltstyps 'WCFCustomer'

  11. Wählen Sie das Feld CustomerID als das in der Spalte anzuzeigende Feld aus, und wählen Sie dann das Feld FirstName und das Feld LastName als weitere Felder aus, die in der Dokumentbibliothek angezeigt werden sollen. Dies ist in Abbildung 24 dargestellt.

    Abbildung 24. Angeben von Feldern

    Angeben von Feldern

  12. Klicken Sie auf OK, um der Dokumentbibliothek die Spalten hinzuzufügen.

Anzeigen von externen Daten in einem Word-Dokument

Mit den folgenden Schritten können Sie externe Daten in einem Word-Dokument anzeigen.

So zeigen Sie externe Daten in einem Word-Dokument an

  1. Wechseln Sie zur zuvor erstellten Dokumentbibliothek WCFCustomer Documents.

  2. Klicken Sie zum Hinzufügen eines neuen Word-Dokuments zur Dokumentbibliothek auf die Registerkarte Dokumente auf dem Menüband für die Serverkomponente, und klicken Sie dann auf Neues Dokument. Wenn in SharePoint eine Warnung zum Öffnen der Datei angezeigt wird, klicken Sie auf OK. Microsoft Word 2010wird gestartet, und es wird eine Eingabeaufforderung für die Anmeldeinformationen zum Zugreifen auf die Website angezeigt. Geben Sie die erforderlichen Anmeldeinformationen ein.

    Es wird ein neues Word-Dokument erstellt, und der Dokumentinformationsbereich mit den Feldern des externen Inhaltstyps wird angezeigt.

  3. Klicken Sie in Word auf die Registerkarte Einfügen auf dem Menüband.

  4. Klicken Sie in der Gruppe des Textmenübands auf Schnellbausteine, und klicken Sie dann auf Dokumenteigenschaft. Im Flyoutmenü Dokumenteigenschaft werden die externen Datenfelder des externen Inhaltstyps WCFCustomer wie in Abbildung 25 dargestellt angezeigt.

    Abbildung 25. Externe Datenfelder

    Externe Datenfelder

  5. Klicken Sie auf das Feld Customer. Dem Dokument wird von Word ein Inhaltssteuerelement für externe Daten hinzugefügt. Fügen Sie eine Leerzeichen hinter dem eingefügten Inhaltssteuerelement ein, und wiederholen Sie den Vorgang dann für das Feld Customer: FirstName und das Feld Customer:LastName, wobei dem Dokument Inhaltssteuerelemente für jedes Feld hinzugefügt werden.

  6. Wählen Sie das Inhaltssteuerelement Customer aus. In Word wird das Auswahltool Externe Elemente auswählen angezeigt. Durch Klicken auf das Auswahltool und auf Word wird das Formular Externe Daten auswählen wie in Abbildung 26 dargestellt angezeigt.

    Abbildung 5. Formular 'Externe Daten auswählen'

    Auswählen des Formulars für externe Daten

  7. Wählen Sie eins der Elemente aus der Liste aus, und klicken Sie dann auf OK. Die drei Inhaltssteuerelemente werden von Word mit den Werten der Kunden-ID, des Nachnamens und des Vornamens gefüllt, die aus der Back-End-Datendatei abgerufen werden. Die Werte werden dann im Dokumentinformationsbereich angezeigt.

    Abbildung 27. Externe Daten im Word-Dokument

    Externe Daten im Word-Dokument

Schlussbemerkung

In dieser exemplarischen Vorgehensweise wird das Verwenden von Microsoft SharePoint Designer 2010 zum Erstellen eines externen Inhaltstyps in Microsoft Business Connectivity Services (BCS) erläutert, der eine Verbindung mit einem Windows Communication Foundation (WCF)-Dienst herstellt. Der Dienst wird mit Microsoft Visual Studio 2010 erstellt und verwendet XLINQ zum Bereitstellen des Lese-/Schreibzugriffs auf Daten, die in einer einfachen XML-Datendatei gespeichert sind. Es wird die Verwendung des externen Inhaltstyps mithilfe von externen Dateninhaltssteuerelementen in einem Microsoft Word-Dokument gezeigt. Das Word-Dokument wird aus einer SharePoint-Dokumentbibliothek erstellt, die externe Daten über eine externe Datenspalte offen legt.

Weitere Informationen zu anderen Möglichkeiten zur Anzeige von externen Daten auf dem Server und dem Client finden Sie unter Wo können externe Daten angezeigt werden?

Weitere Ressourcen

Weitere Informationen finden Sie in den folgenden Ressourcen: