Zusammenarbeit in der Cloud

Verbinden von SharePoint mit Windows Azure mit Silverlight-Webparts

Steve Fox

Microsoft SharePoint 2010 ist wesentlich deserved Praise als stabile Entwicklerplattform genießen. Erweitert mit neuer Dienste, APIs, Datenprogrammierbarkeit und UI-Unterstützung über das Dialogfeld Framework und Silverlight, sind viele Optionen für Entwickler Ihre Zähne wirklich in diesem evolved Plattform Auffangen vorhanden.

Mit wachsenden Interesse Wolke computing wird jedoch immer Fragen dazu, wie Entwickler Ihre SharePoint-Anwendungen mit wolkenbasierte-Technologien integrieren können. Als Plattform können viele der oben genannten Features in Windows Azure in irgendeiner Weise integriert werden. Darüber hinaus können in der Wolke über eine Vielzahl von anderen Technologien wie OData, REST, sozialer Web 2.0-APIs für Anwendungen wie z. B. Twitter oder Facebook, und natürlich über eine serviceorientierte Architektur unter Verwendung von SOAP oder Windows Communication Foundation (WCF)-Dienst SharePoint integriert werden.

Zu wissen, dass umfassende Integration zwischen der Wolke und SharePoint, in diesem Artikel mögliche ist werde ich einige spezielle Integrationspunkte zwischen SharePoint und Windows Azure untersuchen. Dabei werde ich die Schritte zum Erstellen Ihrer ersten Integration durchlaufen.

Plattform-Grundlagen

Die Azure Windows-Plattform besteht aus drei Teilen. Zunächst Windows Azure selbst enthält Daten und Verwaltungsfunktionen. Zweitens bietet SQL Azure hoch verfügbare und transaktionale Daten in der Wolke. Drittens bietet Windows Azure AppFabric Service Bus für den Dienst für erweiterte, direkten Aufruf Szenarien.

Windows Azure können Sie eine Reihe verschiedener Typen von Integration unterstützen. Sie können z. B. erstellen und Bereitstellen ein WCF-Diensts in der Wolke dann diesen Dienst in SharePoint integriert. Oder Sie können Daten aus Windows Azure, Modellieren von Daten innerhalb von SharePoint nutzen. Darüber hinaus können Sie der Windows Azure AppFabric Service Bus komplexere Szenarien des Dienstes zu generieren, die SharePoint-Online mit SharePoint im Gelände zu verbinden.

Integration müssen Sie alle Möglichkeiten kennen. Abbildung 1 bietet einen Ausgangspunkt, Auflisten von die verschiedenen Möglichkeiten, in denen SharePoint in Windows Azure integriert werden kann. Diese Tabelle ist spezifisch für SharePoint 2010, und einige dieser Optionen erfordern mehr Code als andere.

Abbildung 1 Allgemein Integration Points

Azure Integration Wie
SharePoint-Client 
Object Model Arbeiten Sie mit Windows Azure Daten in einer Liste.
Geschäftliche Connectivity 
Services (BCS) Modelldaten aus Windows Azure oder externe Liste für SQL Azure erstellen.
Silverlight Erstellen Sie Benutzeroberfläche für Windows Azure Services oder Daten.
In einer Sandbox ausgeführten Lösungen/
SharePoint Online Silverlight-Anwendung nutzt Windows Azure Websitesammlung bereitgestellt.
Office Custom-Client Nutzen Sie die Daten direkt aus Windows Azure oder BCS Liste Daten bereitstellen.
Standard/Visual 
Web Webparts Nutzen Sie die Dienste und Daten von Windows Azure.
Open XML Verwalten von Windows Azure Daten in einem Dokument.
REST Verwenden Sie für die Interaktion mit Windows-Azure Daten zur Integration in SharePoint REST.
Office Server-Dienste Kombinieren Sie mit Open XML-, um automatische Gen Dokumente (z. B. PDFs) auf einem Server.
Workflow/
Event Receivers Bundesland oder Ereignisse, die in Windows Azure Services, Workflows oder Daten einzubinden.
LINQ Verwenden Sie zum Abfragen von Windows Azure Datenobjekte.
Search Föderation Suche Windows Azure Daten enthalten.

Beliebige Integration, die Sie ausgewählt haben, ist es wichtig zu beachten, dass in diesem Artikel werden bei der Integration mit Windows Azure von SharePoint Consumptive und nicht gehosteten ist. SharePoint ist also kein Dienst, der von Windows Azure, sondern vielmehr eine Anwendung, die Windows Azure Daten oder Dienste nutzt gehostet wird. Windows Azure stellt Anwendungen oder Ressourcen, die von SharePoint-Elementen, wie z. B. ein Webpart oder eine Silverlight-Anwendung verwendet werden. In diesem Artikel erfahren Sie, wie Sie Silverlight-Anwendungen in SharePoint integriert werden, die einen benutzerdefinierten WCF-Dienst bereitgestellt, um Windows Azure nutzt ein bestimmtes Beispiel.

Wenn Sie neu beginnen, müssen Sie sicherstellen, dass Sie eine entsprechende Entwicklungsumgebung eingerichtet haben. Ihre Entwicklungsumgebung wird, zumindest Folgendes beinhalten:

  • Visual Studio 2010
  • Windows Azure SDK und tools
  • SharePoint Server 2010
  • Office 2010 Professional Plus
  • SQL Server 2008 R2
  • Silverlight-Laufzeit, SDK und tools

Windows-Azure müssen Sie sicherstellen, dass Entwickler-Konto so einrichten, dass ein Entwickler Portal zum Verwalten der Cloud-Anwendungen, Daten und Dienste erstellt werden können. Sie können alle Tools Windows Azure finden, in dem Sie diese Anwendungen und Dienste unter microsoft.com/windowsazure/getstarted-erstellen. Beachten Sie können, dass die oben aufgeführten auf Ihrem Entwicklungscomputer vorhandene Elemente installiert oder können Sie einen vorkonfigurierten virtuellen Computer, der alles außer den Windows Azure Tools von tinyurl.com/33bgpy6-hat herunterladen. (Darüber hinaus können Sie optional die Silverlight Web Part-Visual Studio-Erweiterung unter code.msdn.microsoft.com/vsixforsp-installieren.)

Wenn Sie Ihre Entwicklungsumgebung eingerichtet haben, können Sie loslegen Entwickeln Ihrer ersten Integration. In diesem Artikel werde ich über drei Schritte funktionieren:

  1. Erstellen und Bereitstellen von benutzerdefinierten Windows Azure WCF-Dienst.
  2. Erstellen eines Silverlight-fähigen Webparts, die benutzerdefinierten Windows Azure-Dienst nutzen kann.
  3. Bereitstellen und der Silverlight-fähigen-Webpart in der SharePoint-Website verwenden.

Let’s durch die einzelnen Schritte durchlaufen.

Erstellen von WCF-Dienst

Genommen Sie an, Sie einen Dienst für die gesamte Organisation des Verkaufs bereitstellen möchten, aber Sie diesen Dienst in der Wolke hosten möchten. Der Dienst wird von Mitbewerberinformationen abrufen und unterstützt zwei Methoden: Es können Sie Mitbewerberinformationenerhalten und wird eine Liste von alle Mitbewerberinformationen zurückgegeben. Sie werden beide Methoden erstellen, sondern nur die Sammel-Rückgabe von Mitbewerberinformationen implementiert werden. Nach der Lektüre dieses Artikels, um die Anforderung für bestimmte Mitbewerberinformationen nutzen, können Sie den Code erweitern.

Um den WCF-Dienst zu erstellen, öffnen Sie Visual Studio 2010 ein, und starten Sie ein neues Projekt. Wählen Sie im Assistenten für neues Projekt die Wolke-Vorlage. Geben Sie einen Namen für das Projekt (ich als Meine Mitbewerber), und klicken Sie auf OK. Wählen Sie das Projekt von Rolle der WCF-Dienst, und klicken Sie auf OK.

Visual Studio erstellt eine neue Lösung mit einer Anzahl von Ressourcen, die Windows Azure Rolle-Konfigurationsdateien und der Code der WCF-Dienst und Vertrag enthalten. Verwenden Sie in diesem Beispiel wird ein Objekt im Speicher werden, also mit die Maustaste des WCF-Projekts, wählen Sie hinzufügen, und wählen die Option Klasse. Geben Sie einen Namen für die Klasse (Competitor), und fügen Sie den folgenden Code in die Klassendatei:

namespace WCFServiceWebRole1 {
  public class Competitor {
    public string svcCompeteID { get; set; }
    public string svcCompeteName { get; set; }
    public string svcCompeteFY09 { get; set; }
    public string svcCompeteFY10 { get; set; }
  }
}

Der Code enthält vier Eigenschaften (Mitbewerber-ID, Name und Verkäufe für das Geschäftsjahr 2009 und Geschäftsjahr bis 2010).

Da Sie auch Silverlight als die Darstellungsschicht verwenden werden, müssen Sie das Projekt zum Aufrufen des Dienstes Windows Azure domänenübergreifend Silverlight unterstützt eine Richtliniendatei Client Zugriff hinzu. Zu diesem Zweck mit der rechten Maustaste des WCF-Projekts, wählen Sie hinzufügen aus, und klicken Sie auf Neues Element. Wählen Sie im Dialogfeld "Neues Element" die Kategorie von Daten, und wählen Sie XML. Nennen Sie die neue Datei clientaccesspolicy.xml, und klicken Sie auf Hinzufügen. Ersetzen Sie den XML-Code in der neuen Datei mit folgendem Code:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="SOAPAction">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

Als Nächstes erstellen Sie den Servicevertrag Ihres WCF-Diensts. In diesem Beispiel wird Sie halten Sie Dinge einfach und enthalten lediglich zwei operative Verträge. Der erste Vorgang erhalten einen einzigen Mitbewerber (GetACompetitor-Methode), und der zweite Vorgang erhalten alle Mitbewerber (GetAllCompetitors-Methode). Note that you’ll need to pass an ID (custID) if you want to return a specific competitor record. Abbildung 2 enthält eine Zusammenfassung der Verträge.

Abbildung 2 Servicevertrag

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WCFServiceWebRole1 {
  [ServiceContract]
  public interface IService1 {
    [OperationContract]
    string[] getACompetitor(string custID);

    [OperationContract]
    List<Competitor> getAllCompetitors();
    }
}

Mit den Verträgen abgeschlossen ist können Sie nun Code hinzufügen, der die Verträge implementiert. Abbildung 3 , wird der Dienstcode, die zu dem Servicevertrag angezeigt. Dieser Code enthält eine Methode zum Abrufen eines einzelnen Mitbewerberdatensatzes (GetACompetitor), um sämtliche Mitbewerberinformationen (GetAllCompetitors) und ein dritter zum Generieren der Mitbewerberinformationen (GenerateCompeteData) erhalten. Der Code ist einfach, in-Memory-Datenstrukturen, z. B. Liste Sammlungen und Arrays zusammen mit LINQ zu erstellen und übergeben von Daten an die aufrufende Anwendung nutzen. In diesem Beispiel wird die aufrufende Anwendung eine Silverlight-Anwendung, die in SharePoint bereitgestellt werden.

Abbildung 3: Dienstcode

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace WCFServiceWebRole1 {
  public class Service1 : IService1 {
    List<Competitor> myCompetitors = new List<Competitor>();

    public string[] getACompetitor(string custID) {
      generateCompeteData();

      string[] returnCompete = new string[4];

      var returnListOfData = (
        from compete in myCompetitors
        where  compete.svcCompeteID  == custID
        select compete).ToArray();

      foreach (var competeRecord in returnListOfData) {
        returnCompete[0] = competeRecord.svcCompeteID;
        returnCompete[1] = competeRecord.svcCompeteName;
        returnCompete[2] = competeRecord.svcCompeteFY09;
        returnCompete[3] = competeRecord.svcCompeteFY10; 

      };

      return returnCompete;
    }

    public List<Competitor> getAllCompetitors() {
      generateCompeteData();
      List<Competitor> returnlistOfCompetitors = 
        new List<Competitor>();

      var returnListOfData = (
        from customer in myCompetitors
        select customer).ToArray();

      foreach (var compete in returnListOfData) {
        Competitor tempCompeteRecord = new Competitor();
        tempCompeteRecord.svcCompeteID = compete.svcCompeteID;
        tempCompeteRecord.svcCompeteName = compete.svcCompeteName;
        tempCompeteRecord.svcCompeteFY09 = compete.svcCompeteFY09;
        tempCompeteRecord.svcCompeteFY10 = compete.svcCompeteFY10;
        returnlistOfCompetitors.Add(tempCompeteRecord);
      };

      return returnlistOfCompetitors;
    }

    private void generateCompeteData() {
      Competitor compete1 = new Competitor();
      compete1.svcCompeteID = "BR-CAN-8909";
      compete1.svcCompeteName = "Bauer - Canada";
      compete1.svcCompeteFY09 = "$45,093,028.00";
      compete1.svcCompeteFY10 = "$50,493,820.00";
      myCompetitors.Add(compete1);

      Competitor compete2 = new Competitor();
      compete2.svcCompeteID = "NK-USA-8665";
      compete2.svcCompeteName = "Nike - USA";
      compete2.svcCompeteFY09 = "$50,492,331.00";
      compete2.svcCompeteFY10 = "$52,019,828.00";
       myCompetitors.Add(compete2);

      Competitor compete3 = new Competitor();
      compete3.svcCompeteID = "GF-EU-9912";
      compete3.svcCompeteName = "Graf - Europe";
      compete3.svcCompeteFY09 = "$24,403,920.00";
      compete3.svcCompeteFY10 = "$24,001,926.00";
      myCompetitors.Add(compete3);

      Competitor compete4 = new Competitor();
      compete4.svcCompeteID = "CCM-USA-8843";
      compete4.svcCompeteName = "CCM Hockey";
      compete4.svcCompeteFY09 = "$12,209,105.00";
      compete4.svcCompeteFY10 = "$10,092,813.00";
      myCompetitors.Add(compete4);

    }
  }
}

Zu diesem Zeitpunkt jetzt den WCF-Dienst erstellt haben, und nun können Sie fast so starten Sie den SharePoint-Teil dieser Integration. Bevor Sie dies tun können, müssen jedoch den Dienst auf Windows Azure bereitstellen.

Um den Dienst bereitzustellen, müssen Sie ein Windows-Azure Entwickler-Konto einrichten und einsatzbereit verfügen. Sofern dies haben, Sie einfach mit der rechten Maustaste des Projekts Windows Azure und Veröffentlichen wählen.

Veröffentlichen Ihren Dienst ruft ein Dialogfeld, in dem Sie Ihre Anmeldeinformationen bereitstellen können. Sehen Sie in Abbildung 4-Ihnen die Wahl, nur ein Service-Paket erstellen (Visual Studio erstellt zwei-Kerndateien, die Ihr Windows Azure Entwickler Portal in einem lokalen Ordner hinzugefügt werden müssen) oder den Dienst automatisch mit den vorkonfigurierten Informationen bereitstellen. Klicken Sie in diesem Beispiel auf Service-Paket nur erstellen, und klicken Sie auf OK.

image: Service Publishing Options

Abbildung 4 Service Veröffentlichungsoptionen

Zwei Dateien, Mitbewerber und ServiceConfiguration, werden erstellt. Mitbewerber ist ein Service-Paketdatei – im Wesentlichen eine Ressource Archiv – und ServiceConfiguration ist eine XML-Konfigurationsdatei.

Sie können jetzt navigieren Sie zu Ihrem Windows Azure Entwickler Portal und Hinzufügen dieser Dateien zu Ihrem Dienst. Dazu wechseln Sie zu Ihrem Dienst, und klicken Sie auf Deploy (oder wenn Sie bereits bereitgestellt haben, und den Dienst aktualisieren, klicken Sie auf Aktualisierung wie in Abbildung 5 ). Sie können dann die beiden Dateien suchen und klicken Sie auf OK. Müssen Sie Service-Dateien hochladen ein paar Minuten erteilen.

image: Manually Deploying Services to Windows Azure

Abbildung 5 Manuelles Bereitstellen von Windows Azure Services

Wenn die Nachricht bereit angezeigt wird, können Sie die Verknüpfung klicken, die auf der gleichen Webseite zum Testen des Dienstendpunkts angezeigt wird. Beachten Sie, dass Sie wahrscheinlich haben, fügen Sie den Namen des Dienstes am Ende die Dienst-URL wie folgt:

    http://serviceendpoint.azure.com/Service1.svc.

An dieser Stelle können Sie jetzt Windows Azure beiseite legen und gehen Sie zur SharePoint.

Erstellen der Silverlight-Enabled-Webparts

Erstellen Sie Silverlight-Webparts für SharePoint in zwei Möglichkeiten. Eine Möglichkeit ist, erstellen Sie eine Silverlight-Anwendung in Visual Studio einfach bereitstellen die XAP-Datei in SharePoint (indem Sie z. B. in einer Dokumentbibliothek geuploadet werden) und unter Verwendung der systemeigenen Silverlight-Webpart in SharePoint 2010, um die Silverlight-Anwendung zu laden. Dies ist die schnellste Methode zum Bereitstellen der Silverlight-Anwendung in SharePoint und erfordert weniger codieren.

Ein zweites etwas interessanter Möglichkeit ist die Projektvorlage für Silverlight und SharePoint-Webparts (code.msdn.microsoft.com/vsixforsp ) zu verwenden. Dies wird automatisch umbrochen, eine Silverlight-Anwendung mit einem Web Part, d. h. einfach die Silverlight-Anwendung zu erstellen und es als Webpart in SharePoint bereitgestellt. Sie haben ein wenig mehr Kontrolle über den Code sowie sind Sie einen echten Webpart in SharePoint bereitstellen.

Die Vorlage verwenden möchten, navigieren Sie zu der CodePlex-Website klicken Sie auf den Link für Silverlight und SharePoint VSIX, downloaden Sie und extrahieren Sie die Dateien. Nachdem Sie die Dateien extrahieren, einfach installieren Sie .vsix-Datei, indem Sie darauf doppelklicken und dann starten Sie Visual Studio 2010 neu zu.

Nach der Installation der Silverlight-Webpart Vorlage zurück zu Visual Studio-Projektmappe, und klicken Sie auf Datei | hinzufügen | Neues Projekt und wählen hinzufügen im Feld Solution. Navigate to the SharePoint 2010 folder and select the Silverlight Web Part project template. Geben Sie einen Namen für den Webpart (CompetitorSPWebPart verwendet), und klicken Sie auf OK.

Nachdem Sie auf OK klicken, werden Sie für eine SharePoint-Website-URL aufgefordert. Fügen Sie den Site-URL, und wählen Sie Farm Projektmappen bereitstellen. Als Nächstes aufgefordert für eine Anzahl von Elementen, einschließlich des Namens für die Silverlight-Projekt, die Version, den Speicherort für die XAP-Datei für das Webpart Titel und eine Beschreibung für das Webpart bereitstellen (siehe Abbildung 6 ). Wenn Sie in diesem Schritt des Assistenten abgeschlossen haben, klicken Sie auf "Fertig stellen". (Beachten Sie, dass mithilfe von Silverlight 3 oder 4 mit der Projektvorlage, und Microsoft zurzeit die Vorlage für die erneute Veröffentlichung auf CodePlex aktualisiert wird.)

image: Configuring the Silverlight Web Part

Abbildung 6 Konfigurieren des Silverlight-Webparts

Sie verfügen nun über ein SharePoint-Webpart, das eine Silverlight-Anwendung und die Silverlight-Anwendung können Sie verwenden, um die Benutzeroberfläche und die Funktionalität des Webparts zu erstellen.

Fügen Sie zunächst einen Verweis auf den Dienst Windows-Azure im Silverlight-Projekt mit der rechten Maustaste auf Verweise und Hinzufügen eines Dienstverweises auswählen. Geben Sie einen Namen für den Namespace für den Dienst (in meinem Fall GetCompeteAzureService), und klicken Sie auf OK. Dies ist dasselbe wie andere Dienstverweis in einer Anwendung zu verarbeiten, außer in diesem Fall der Endpunkt eines Dienstes Windows Azure verweist.

An dieser Stelle können Sie gegen den Dienst Windows-Azure code. Wie bereits erwähnt, müssen Sie die GetAllCompetitors -Methode in der SharePoint-Anwendung nutzen.

Sie müssen eine Benutzeroberfläche für Ihre Anwendung. Ich erstellte eine einfache Benutzeroberfläche, die von dem Aufruf an den Dienst Windows-Azure zurückgegebenen Daten dargestellt wird. Das Kern-Steuerelement ist ein Listenfeld mit ein Paar von Bildern für Flair hinzugefügt. Finden Sie im Codedownload zu diesem Artikel Weitere Informationen.

Als Nächstes fügen Sie eine benutzerdefinierte Klasse Mitbewerber aufgerufen, um die Silverlight-Anwendung. Mitbewerber verfügt über vier Eigenschaften, die die Mitbewerberdaten bezüglich der Dienstcode in Abbildung 3 entsprechen:

namespace CompetitorDisplayApp {
  public class Competitor {
    public string competeID { get; set; }
    public string competeName { get; set; }
    public string competeFY09 { get; set; }
    public string competeFY10 { get; set; }
  }
}

In der XAML-Code-Behind können Sie nun Code hinzufügen, der die GetAllCustomers-Methode implementiert wird. Abbildung 7 können Sie sehen, dass ich eine Liste Auflistung mit dem Namen MyCompetitors verwende zum Speichern der Daten aus dem Windows Azure Dienstaufruf zurückgegeben wird. Es ist nicht viel Schwerarbeit hier überhaupt;der Code ist das Mitbewerber-Objekt verwenden, um die MyCompetitors Liste Auflistung aufzufüllen, die dann dem Listenfeld (CompeteList) gebunden ist.

Abbildung 7 benutzerdefinierte Mitbewerber Object

using CompetitorDisplayApp.GetCompeteAzureService;

namespace CompetitorDisplayApp {
  public partial class MainPage : UserControl {
    public string SiteUrl { get; set; }

    List<Competitor> myCompetitors = new List<Competitor>();

    public MainPage() {
      InitializeComponent();

      this.Loaded += new RoutedEventHandler(MainPage_Loaded);
    }

    void MainPage_Loaded(object sender, RoutedEventArgs e) {
      LoadAzureData();
    }

    private void LoadAzureData() {
      GetCompeteAzureService.Service1Client azureSvcProxy = 
        new Service1Client();
      azureSvcProxy.getAllCompetitorsAsync();
      azureSvcProxy.getAllCompetitorsCompleted += 
        new EventHandler<getAllCompetitorsCompletedEventArgs>(
        azureSvcProxy_getAllCompetitorsCompleted);
    }

    void azureSvcProxy_getAllCompetitorsCompleted(
      object sender, getAllCompetitorsCompletedEventArgs e) {

      var competeData = e.Result;
      foreach (var item in competeData) {
        Competitor tempRecord = new Competitor();
        tempRecord.competeID = item.svcCompeteID;
        tempRecord.competeName = item.svcCompeteName;
        tempRecord.competeFY09 = item.svcCompeteFY09;
        tempRecord.competeFY10 = item.svcCompeteFY10;
        myCompetitors.Add(tempRecord);
      }

      competeList.ItemsSource = myCompetitors;
    }
  }
}

u diesem Zeitpunkt sind Sie fertig mit der Codierung. Allerdings lohnt es dauert einen kurzen Blick auf den Standardcode, der von der Silverlight-Webpart-Vorlage anzeigen, warum es nützlich sein kann mehr als nur mit SharePoint Standard Silverlight-Webpart die ausgelieferte erstellt wird.

Abbildung 8 zeigt den Standardcode für Webparts, der erstellt wird, wenn Visual Studio Silverlight-Webpart-Projekt erstellt. Können Sie der Wrappercode, in denen ein SilverlightPluginGenerator-Objekt erstellt und für den Webpart werden Eigenschaften festgelegt. Dies sind Eigenschaften, die zur Entwurfszeit (im Gegensatz zu angenommen, das Webpart zu öffnen, und bearbeiten die Höhe und Breite über den Bereich "Tools" in SharePoint) verwaltet werden. Darüber hinaus können Sie vermeiden, kopieren und einfügen, erhält dieses Webpart in den Webpartkatalog bereitgestellt wird – mit der Stitchwork bereits an Stelle die Silverlight-Anwendung zu rendern.

Abbildung 8 Default Webpart-Code

[ToolboxItemAttribute(false)]
public class SilverlightWebPart : WebPart {
  private SilverlightPluginGenerator _silverlightPluginGenerator = null;

  public SilverlightWebPart() {
    this._silverlightPluginGenerator = 
      new SilverlightPluginGenerator {

      Source = new Uri(
        "/XAPS/Silverlight/CompetitorDisplayApp/CompetitorDisplayApp.xap",
        UriKind.Relative),
        Width = new Unit(400, UnitType.Pixel),
        Height = new Unit(300, UnitType.Pixel),
        BackGround = Color.White,
        Version = SilverlightVersion.v3,
        AutoUpgrade = true,
        OnError = "onSilverlightError",
    };
  }

  protected override void CreateChildControls() {
    base.CreateChildControls();

    this.Controls.Add(new LiteralControl(
      @"<script type=""text/javascript"">" + 
      Resources.onSilverlightErrorHandler + 
      "</script>"));

    this._silverlightPluginGenerator.InitParams.Add(new InitParam(
      "SiteUrl", SPContext.Current.Site.Url));

    this.Controls.Add(new LiteralControl(
      this._silverlightPluginGenerator.ToString()));
  }

  protected override void RenderContents(HtmlTextWriter writer) {
    base.RenderContents(writer);
  }
}

Schließlich wurden die Eigenschaften des Webparts festlegen, wenn Sie mit dem Assistenten für die anfängliche Konfiguration durchlaufen. Z. B. Wenn Sie die .webpart-Datei öffnen, sehen Sie den Namen und die Beschreibung des Webparts (die Sie hier ändern können, wenn Sie wollten):

<?xml version="1.0" encoding="utf-8"?>
<webParts>
  <webPart xmlns="https://schemas.microsoft.com/WebPart/v3">
    <metadata>
      <type name="CompetitorSPWebPart.SilverlightWebPart.SilverlightWebPart, $SharePoint.Project.AssemblyFullName$" />
      <importErrorMessage>$Resources:core,ImportErrorMessage;</importErrorMessage>
    </metadata>
    <data>
      <properties>
        <property name="Title" type="string">Compete Information</property>
        <property name="Description" 
          type="string">This Web Part provides compete information.</property>
      </properties>
    </data>
  </webPart>
</webParts>

Mit dem Silverlight-Webpart abgeschlossen nun Sie können das Webpart in SharePoint zur Verwendung bereitstellen.

Bereitstellen von Webparts

Bereitzustellen, mit der rechten Maustaste Webpartprojekt (CompetitorSPWebPart in meinem Beispiel), und wählen die Option bereitstellen. Beim Bereitstellen von Webparts die Silverlight-Anwendung in die Dokumentbibliothek XAPS bereitgestellt wird und eine Verknüpfung zu der XAP-Datei wird in dem Webpart automatisch generiert. (Wenn Sie anstelle der Silverlight-Webpart-Vorlage, die Silverlight-Anwendung verwenden und Sie einfach die XAP-Datei in hochladen, würde die XAPS Dokumentbibliothek und verwenden Sie den systemeigenen Silverlight-Webpart in SharePoint.)

Jetzt öffnen Sie Ihre SharePoint-Website und eine neue Webpartseite zu navigieren (oder erstellen). (Beachten Sie, dass Sie eine neue Webpartseite erstellen können, indem Sie Websiteaktionen | Alle Websiteinhalte einblenden | erstellen | Webpartseite.) Klicken Sie auf Websiteaktionen | Seite bearbeiten | Webpart hinzufügen. Navigieren Sie zu der Kategorie Benutzerdefiniert und wählen Sie das Webpart (der Konkurrenz Information in diesem Beispiel heißt), und klicken Sie auf Hinzufügen. Hinzugefügt haben, klicken Sie auf Stop bearbeiten. Sollte Ihnen etwas Ähnliches, was in Abbildung 9 angezeigt werden.

Abbildung 9 endgültige Version Silverlight Web Part Calling Windows Azure Service

Zusammenfassung

Integration von SharePoint und Windows Azure ist neu und die Möglichkeiten sind vorhanden. In diesem Beispiel gezeigt ich Sie, wie benutzerdefinierten Azure Windows-Dienst erstellen und nutzen Sie diesen Dienst von einem benutzerdefinierten Silverlight-basierten-Webpart. Nur in diesem einfachen Beispiel sehen Sie das Potenzial für viel anspruchsvollere Lösungen in Windows Azure Services und die Webparts, die Sie benötigen.

Weitere Beispiele und Exemplarische Vorgehensweisen können Sie meinen Blog unter blogs.msdn.com/b/steve_fox-Auschecken. Suchen Sie weitere Code und Dokumentation zur Integration von SharePoint und Windows Azure aus.

Steve Fox ist senior Evangelism-Manager bei Microsoft.Er ist seit im IT 15 Jahren, 10, bei Microsoft in natürlicher Sprache, Suche und SharePoint und Office-Entwicklung verbracht wurde haben. Fox hat zahlreiche Artikel und Bücher, einschließlich dem kürzlich veröffentlichten “ Anfang SharePoint-2010 Entwicklung ” (Wrox 2010) verfasst.

Dank an den folgenden technischen Experten für die Überprüfung der in diesem Artikel: Paul Stubbs