Beispiel: Veröffentlichungscachedienste und Silverlight
Letzte Änderung: Mittwoch, 20. April 2011
Gilt für: SharePoint Server 2010
Inhalt dieses Artikels
PublishingCacheRESTServer
SilverlightNavigationControl
SilverlightContentQuery
Erstellen und Ausführen des Beispiels
Das Beispiel in der Datei PublishingCacheServicesAndSilverlightControls.zip im Ordner C:\Programme\Microsoft SDKs\SharePoint 2010\Samples enthält verschiedene zusammengehörige Beispielprojekte. Jedes davon stellt ein separates Projekt in der Microsoft Visual Studio 2010-Lösung mit dem Namen PublishingCacheServiceAndSilverlightControls dar. Die Projekte werden in Tabelle 1 beschrieben.
Tabelle 1. Projekte mit Veröffentlichungscachedienst und Silverlight-Steuerelementen
Projekt |
Beschreibung |
---|---|
PublishingCacheRESTService |
Ein WCF-Dienst (Windows Communication Foundation), der als Microsoft SharePoint Server 2010-Projekt implementiert ist, das verschiedene REST-Methoden zum Abfragen von Daten aus dem listenübergreifenden Abfragecache des Servers enthält. Beim listenübergreifenden Abfragecache handelt es sich um den gleichen zwischengespeicherten Datenspeicher, der vom Webpart für Inhaltsabfragen (Content Query Web Part, CQWP), vom globalen Navigationsanbieter des Servers, vom aktuellen Navigationsanbieter des Servers und vom kombinierten Navigationsanbieter des Servers verwendet wird (die alle von den Standardnavigationsfeatures verwendet werden). Alle diese Datenspeicher werden im Arbeitsspeicher auf Front-End-Servern mit SharePoint Server 2010 zwischengespeichert. In Situationen, in denen Benutzer immer oder fast immer lesen, erhalten diese Benutzer Navigationsdaten und Websiteinhalte auf effiziente Weise. |
SilverlightNavigationControl |
Eine Silverlight-Anwendung, mit der Navigationsdaten, die von PublishingCacheRESTService zurückgegeben werden, in einem Navigationssteuerelement gerendert werden. |
SilverlightContentQuery |
Eine Silverlight-Anwendung, mit der eine Tabelle angezeigt wird, die eine Ergebnisliste im Tabellenformat enthält, die auf einer von PublishingCacheRESTService zurückgegebenen listenübergreifenden SharePoint Server 2010-Abfrage basiert. |
PublishingCacheRESTServer
Dieses Projekt ist als einzelner WCF-Dienst implementiert, der verschiedene Vorgänge enthält.
Methoden "GetGlobalNav", "GetCurrentNav" und "GetCombinedNav"
Die Methoden GetGlobalNav, GetCurrentNav und GetCombinedNav werden von einer einzigen Hilfsmethode implementiert, die den Namen getNav hat. Für getNav wird als Eingabe das entsprechende PortalSiteMapProvider-Objekt akzeptiert, das standardmäßig in SharePoint Server 2010 bereitgestellt wird.
Mit der getNav-Methode werden alle PortalSiteMapNode-Objekte von der aktuellen URL bis zu allen untergeordneten Objekten im Anbieter durchlaufen und dann in einem XML-Fragment serialisiert. Das XML-Fragment enthält den Titel, die Beschreibung und die URL der einzelnen PortalSiteMapNode-Objekte.
"GetDefaultContentQuery" und "doCustomContentQuery"
Die Methoden GetDefaultContentQuery und doCustomContentQuery werden von der gleichen zugrunde liegenden Methode implementiert: doCustomContentQuery. Für die doCustomContentQuery-Methode werden als Eingabe alle Parameter akzeptiert, die zum Aufrufen einer zwischengespeicherten listenübergreifenden Abfrage über die CrossListQuery-Klasse verwendet werden. Zurückgegeben wird ein XML-Fragment, das die Ergebnisse der zwischengespeicherten Abfrage darstellt.
Für die getDefaultContentQuery-Methode werden keine Parameter akzeptiert. Es wird einfach eine listenübergreifende Abfrage mit einem Satz hartcodierter Parameter ausgeführt und zurückgegeben. Die Methode ist hauptsächlich für die Verwendung als Vorlage zum Erstellen anderer hartcodierter Abfragedienste gedacht.
Bereitstellen und Verwenden des WCF-Diensts
In diesem Projekt wird der WCF-Dienst über ein auf den Farmbereich beschränktes SharePoint Server 2010-Feature bereitgestellt. Diese Funktionalität wird durch die SharePoint Server 2010-Integration in Visual Studio 2010 ermöglicht.
Der Dienst wird im Ordner ISAPI in SharePoint Server 2010 bereitgestellt, auf den über die URL des virtuellen Ordners _vti_bin zugegriffen wird. Daher lautet das Format der URL für den Dienst http://<Server>/<Web-URL>/_vti_bin/PublishingCache.svc.
Greifen Sie nach der Bereitstellung des Diensts mit den in Tabelle 2 gezeigten URLs und Parametern auf die Methoden zu.
Tabelle 2. URLs und Parameter für den WCF-Dienst
Dienst |
Endpunktrelative URL |
HTTP-Methode |
Header |
---|---|---|---|
getGlobalNav |
/GlobalNav |
GET |
Nicht zutreffend. |
getCurrentNav |
/CurrentNav |
GET |
Nicht zutreffend. |
getCombinedNav |
/CombinedNav |
GET |
Nicht zutreffend. |
getDefaultContentQuery |
/ContentQuery |
GET |
Nicht zutreffend. |
Für die doCustomContentQuery-Methode werden die in Tabelle 3 aufgeführten Parameter akzeptiert.
Tabelle 3. Werte des doCustomContentQuery-Parameters
Parameter |
Wert |
---|---|
Endpunktrelative URL |
/ContentQuery |
HTTP-Methode |
POST |
Header |
Alle Header sind optional.
|
Anforderungstextkörper |
Die Collaborative Application Markup Language (CAML), die von der Abfrage ausgeführt werden soll. Das heißt, der als Abfragewert im CrossListQueryInfo-Objekt verwendete Wert. |
Inhaltstyp des Textkörpers |
Text/plain. |
SilverlightNavigationControl
Mit dieser Silverlight-Anwendung werden mithilfe von PublishingCacheRESTService Daten vom NavigationProvider-Objekt abgerufen und in einer Navigationsanzeige mit zwei Ebenen angezeigt. Auf der oberen Ebene werden der aktuelle Speicherort und die direkt untergeordneten Speicherorte sowie der Titel der jeweiligen Website angezeigt (die Beschreibung der jeweiligen Website wird als QuickInfo angezeigt). Wenn der Benutzer den Mauszeiger über einen der Knoten auf der oberen Ebene bewegt, wird die untere Ebene mit den Knoten für die untergeordneten Knoten des Knotens gefüllt, über den der Mauszeiger bewegt wurde.
Wenn Sie auf einen Knoten auf der oberen oder auf der unteren Ebene klicken, wird im Browser zur URL des ausgewählten Knotens navigiert.
Bereitstellen und Verwenden von "SilverlightNavigationControl"
Erstellen Sie das Projekt, und stellen Sie die sich ergebende XAP-Datei in einem Speicherort auf dem Server mit SharePoint Server 2010 bereit. Sie haben zwei Standardmöglichkeiten, die Anwendung zu verwenden: mithilfe des Silverlight-Webparts oder durch manuelles Einschließen eines <object>-Tags in das HTML-Markup einer SharePoint Server 2010-Seite. Meist enthält SilverlightNavigationControl die Anwendung in der Gestaltungsvorlage für eine SharePoint Server 2010-Website, sodass die Anwendung für alle Seiten, auf denen die Gestaltungsvorlage verwendet wird, an der gleichen Stelle angezeigt wird.
Tabelle 4. Werte des cacheServiceUri-Parameters
Parametername |
Erforderlich |
Wert |
---|---|---|
cacheServiceUri |
Ja |
Die URL für PublishingCacheRESTService, über die die angeforderten Daten vom NavigationProvider-Objekt zurückgegeben werden. Damit der Navigationsanbieter die Websitehierarchie relativ zur aktuellen Seite anzeigt, sollte die URL als relative URL angegeben werden (beispielsweise _vti_bin/PublishingCache.svc). Damit der Navigationsanbieter die absolute Hierarchie anzeigt (d. h. damit der Navigationsanbieter die Hierarchie immer relativ zu einem bestimmten Speicherort anzeigt), sollte die URL als absolute URL (beispielsweise https://Server/_vti_bin/PublishingCache.svc) oder als serverrelative URL (beispielsweise /_vti_bin/PublishingCache.svc) angegeben werden. |
SilverlightContentQuery
Mit dieser Anwendung werden listenübergreifende Abfragedaten angezeigt und Abfragedatenergebnisse mit Microsoft Translator-HTTP-Diensten in benutzerspezifische Daten übersetzt.
Bereitstellen und Verwenden von "SilverlightContentQuery"
Für diese Anwendung wird auf der Grundlage der Initiierungsparameter aus Tabelle 5 die doCustomContentQuery-Methode von PublishingCacheRESTService verwendet, um eine zwischengespeicherte listenübergreifende Abfrage auszuführen. Anschließend werden die Ergebnisse in einem Tabellenformat angezeigt. Die erste Spalte jeder Ergebniszeile ist ein klickbarer Hyperlink - gemäß den Angaben in den Initiierungsparametern ist die URL jeder Zeile ein Spaltenwert für jedes Element.
Die angezeigten Daten werden von der Anwendung mithilfe der Microsoft Translator-Dienste in die Sprachen übersetzt, die in der Dropdownliste Übersetzen in zur Verfügung stehen. Die Liste wird basierend auf der Liste der von Microsoft Translator unterstützten Sprachen dynamisch gefüllt.
Sie haben zwei Standardmöglichkeiten, die Anwendung zu verwenden: mithilfe des Silverlight-Webparts oder durch manuelles Einschließen eines <object>-Tags in das HTML-Markup einer SharePoint Server 2010-Seite.
Tabelle 5. Initiierungsparameter für "SilverlightContentQuery"
Parametername |
Erforderlich |
Verwendung |
Standardwerte (nur nicht erforderliche Parameter) |
---|---|---|---|
TranslatorAppId |
Ja |
Eine AppId für den Microsoft Translator-Dienst. Informationen zum Beziehen einer AppId finden Sie im MSDN-Artikel Getting Started with Microsoft Translator [https://msdn.microsoft.com/de-de/library/dd575235.aspx]. |
Nicht zutreffend. |
cacheServiceUri |
Ja |
Die URL zur doCustomContentQuery-Methode von PublishingCacheRESTService (beispielsweise https://Server/PublishingCache.svc/ContentQuery) Geben Sie die URL relativ, serverrelativ oder absolut an. |
Nicht zutreffend. |
Query |
Ja |
Die Collaborative Application Markup Language (CAML), die von der Abfrage ausgeführt werden soll. Weitere Informationen finden Sie in der Beschreibung des Request Body-Parameters von doCustomContentQuery in Tabelle 3. |
Nicht zutreffend |
ViewFields |
Ja |
Eine durch Semikolons getrennte Liste von Feldern, die angezeigt werden sollen. Weitere Informationen finden Sie in den Parameterbeschreibungen der doCustomContentQuery-Methode in Tabelle 3. |
Nicht zutreffend. |
UrlField |
Nein |
Das Feld, das die URL enthält, zu der navigiert werden soll, wenn der Benutzer auf die Zeile in der angezeigten Ergebnistabelle klickt. |
URL |
RowLimit |
Nein |
Die Anzahl der Zeilen, die zurückgegeben werden sollen. Weitere Informationen finden Sie in der Beschreibung der doCustomContentQuery-Parameter in Tabelle 3. |
Nicht zutreffend. Von dem Dienst wird ein Standardwert bereitgestellt, wenn kein Wert angegeben wird. |
Webs |
Nein |
Der Bereich der Abfrage. |
Nicht zutreffend. Von dem Dienst wird ein Standardwert bereitgestellt, wenn kein Wert angegeben wird. |
Lists |
Nein |
Der Listenvorlagenwert der Listen, die in der Abfrage enthalten sein sollen. |
Nicht zutreffend. Von dem Dienst wird ein Standardwert bereitgestellt, wenn kein Wert angegeben wird. |
WebUrl |
Nein |
Die websitesammlungsrelative URL des Webs, das für die Abfrage verwendet wird. |
Nicht zutreffend. Von dem Dienst wird ein Standardwert bereitgestellt, wenn kein Wert angegeben wird. |
ShowHeaderRow |
Nein |
Wenn TRUE festgelegt ist, werden die Spaltennamen von ViewFields als Kopfzeile in der Ergebnistabelle angezeigt; anderenfalls false. |
TRUE |
Hinweis |
---|
Beschreibungen vieler Parameter finden Sie in den jeweiligen Beschreibungen im Abschnitt zur doCustomContentQuery-Methode. |
Erstellen und Ausführen des Beispiels
Sie können dieses Projekt in einer Entwicklungs- oder Testwebsite testen, indem Sie die folgenden Schritte ausführen.
Erstellen des Beispiels
Die Informationen in diesem Abschnitt können für jedes Projekt verwendet werden, in dem ein WCF-REST-Dienst verwendet wird. Zum Ausführen des Beispiels müssen Sie zuerst die Bereitstellung des WCF-REST-Diensts auf einem Host in SharePoint Server 2010 ermöglichen, indem Sie die SharePoint Server 2010-Integration in WCF und Visual Studio 2010 verwenden.
So richten Sie den WCF-REST-Dienst so ein, dass dieser auf einem Host in SharePoint Server bereitgestellt werden kann
Erstellen Sie den WCF-Dienst in einem Projekt vom Typ "Leeres SharePoint-Projekt". Mit diesem Projekt kann der Dienst automatisch gepackt und als Lösung in SharePoint Server 2010 bereitgestellt werden.
Fügen Sie im Projekt einen Verweis auf die Datei Microsoft.SharePoint.Client.ServerRunTime.dll hinzu.
Fügen Sie den Dateiverweis manuell hinzu, indem Sie zur Datei navigieren. Öffnen Sie in Visual Studio 2010 das Dialogfeld Verweis hinzufügen, klicken Sie auf die Registerkarte Durchsuchen, und navigieren Sie dann zum Ordner C:\Windows\assembly\GAC_MSIL\Microsoft.SharePoint.Client.ServerRuntime\.
Bearbeiten Sie die SVC-Datei. Ändern Sie das Factory-Attribut für den Dienst in die neue SharePoint-Factory für das Hosten von WCF-Diensten: Factory="Microsoft.SharePoint.Client.Services.MultipleBaseAddressWebServiceHostFactory, Microsoft.SharePoint.Client.ServerRuntime, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c".
Öffnen Sie in Visual Studio 2010 die Datei *.sln. Ändern Sie im Bereich Eigenschaften von Visual Studio 2010 den Wert Website-URL in die absolute Adresse der Entwicklungs-Testwebsite. Beispiel: http://MyDevServer/. Beachten Sie dabei den abschließenden Schrägstrich ("/").
Ändern Sie, anstatt einen separaten Assemblyverweis zu erstellen, das Service-Attribut so, dass dieses einen Verweis auf die Projektassembly enthält. In SharePoint Server 2010 wird der Verweis gefüllt, wenn die Lösung bereitgestellt wird. Schließen Sie konkret den Verweis $SharePoint.Project.AssemblyFullName$ ein.
Entfernen Sie das Assembly-Element, wenn die SVC-Datei bereits ein Assembly-Element enthält.
Fügen Sie den zugeordneten ISAPI-Ordner dem Projekt hinzu, und verschieben Sie Dateien in den Ordner. Klicken Sie in Visual Studio 2010 mit der rechten Maustaste auf das Projekt, und klicken Sie dann auf Hinzufügen. Klicken Sie auf Zugeordneter SharePoint-Ordner , und wählen Sie dann den Ordner ISAPI aus.
Verschieben Sie die SVC-Datei und die CS-Datei mit dem CodeBehind in den zugeordneten ISAPI-Ordner im -Projekt.
Aktualisieren Sie die CSPROJ-Datei. Klicken Sie auf die CSPROJ-Datei, und wählen Sie, wenn Sie dazu aufgefordert werden, zum Öffnen der Datei den Editor aus.
Fügen Sie <TokenReplacementFileExtensions>svc</TokenReplacementFileExtensions> dem PropertyGroup-Element hinzu.
Ausführen des Beispiels
Wenn Sie die Lösung erstellt und bereitgestellt haben, werden vom WCF-REST-Dienst Daten aus dem listenübergreifenden Abfragecache des Servers mit SharePoint Server 2010 abgefragt. Dann werden die Ergebnisse in einem Silverlight-Navigationssteuerelement angezeigt. Die Ergebnisse können in einer Tabelle angezeigt werden, die auf den Ergebnissen einer listenübergreifenden Abfrage basiert, die von PublishingCacheRESTService zurückgegeben wurde.
Siehe auch
Konzepte
Beispiele für Enterprise Content Management
Zwischenspeichern von Objekten