Uno dei nuovi template di progetto che possiamo sfruttare all'interno di Visual Studio 11 (e vi parlo della Developer Preview) per quanto riguarda lo sviluppo di applicazioni custom su piattaforma SharePoint 2010 o SharePoint Online è il template "SharePoint 2010 Silverlight Web Part".

SharePoint 2010 Siverlight Web Part in Visual Studio 11

Con questo template è possibile creare una soluzione che si preoccupi di effettuare il provisioning dell'omonima "Silverlight Web Part" (componente già presente nell'installazione di default di SharePoint 2010) e di legarla ad una nuova applicazione Silverlight che può essere aggiunta all'interno della soluzione in Visual Studio 11. Come avrete capito quindi, non si tratta di niente di nuovo, è solo una facilitazione per evitare tutte quelle operazioni manuali che eravamo obbligati a fare tramite l'interfaccia grafica di SharePoint stesso:

  • Inserimento nella pagina della "Silverlight Web Part",
  • caricamento del file .xap proprio della vostra applicazione Silverlight in qualche document library,
  • modifica delle proprietà della web part così da far riferimento al file .xap tramite una URI.

Dopo aver scelto la tipologia di soluzione che conterrà il codice di provisioning della “Silverlight Web Part” (sono pienamente supportate sia le soluzioni di tipo Sandbox che quelle di tipo Farm), Visual Studio 11 ci chiede di associare un progetto Silverlight alla nostra soluzione (non preoccupatevi, non c'è nessun obbligo, siamo liberi di fare questa associazione anche in un secondo momento). In questo modo le operazioni di compilazione e di creazione del package del nostro progetto SharePoint saranno precedute dalla creazione del file .xap proprio dell'applicazione Silverlight in questione e dalla copia di questo file all'interno di un particolare folder della soluzione SharePoint che verrà poi generata in fase di deploy (nella precedente versione dell'IDE di sviluppo, queste operazioni andavano fatte o a mano o schedulando delle azioni post-build).

SharePoint 2010 Siverlight Web Part in Visual Studio 11

Nella schermata di selezione del progetto Silverlight, potete scegliere il nome del progetto, il path, il linguaggio da utilizzare e la versione del plugin con cui lavorare.
Fatto questo, possiamo dare un’occhiata alla struttura della soluzione SharePoint che è stata generata. Essa contiene:

  • un elemento di tipo "Silverlight Web Part" con i relativi file di provisioning,
  • una feature per abilitarla a livello di site collection.

SharePoint 2010 Siverlight Web Part in Visual Studio 11

Il file di provisioning in questione sono due:
  • un file .webpart – che contiene il codice XML per la definizione di una "Silverlight Web Part" con qualche parametro custom (tra cui altezza, larghezza, titolo ed URL dell'applicazione Silverlight da renderizzare),
  • il file Elements.xml – utilizzato per effettuare il provisioning (quindi l'installazione) sia del file .webpart appena visto che del file .xap, rispettivamente all'interno della gallery delle web part della vostra site collection SharePoint e della document library "Site Assets". La document library di destinazione può essere modificata direttamente all'interno del file xml.

Anche in questo caso, se guardiamo il codice all'interno di questi file, non notiamo alcuna differenza con le tecniche di provisioning che conosciamo fin'ora. Questo perchè, ve lo ricordo, lato SharePoint non è cambiato nulla, quello che è cambiato sono solamente i tool all'interno di Visual Studio. Quindi, la definizione della web part è la medesima che abbiamo sempre utilizzato anche per definire le nostre web part personalizzate (in questo caso, al posto di far riferimento ad un assembly custom, si fa riferimento all'assembly di SharePoint che contiene la "Silverlight Web Part"):

<?xml version="1.0" encoding="utf-8"?> 

<webParts>
<webPart xmlns="http://schemas.microsoft.com/WebPart/v3">
<metaData>
<type name="Microsoft.SharePoint.WebPartPages.SilverlightWebPart, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL" />
<importErrorMessage>$Resources:core,ImportErrorMessage;</importErrorMessage>
</metaData>
<data>
<properties>
<property name="Title" type="string">SilverlightWebPartProject1 - SilverlightWebPart1</property>
<property name="Description" type="string">My Silverlight Web Part</property>
<property name="Height" type="unit">300px</property>
<property name="Width" type="unit">400px</property>
<property name="Url" type="string">/SiteAssets/SilverlightWebPartProject1/SilverlightWebPart1/SilverlightProject1.xap</property>
</properties>
</data>
</webPart>
</webParts>

Mentre la parte di provisioning invece, sfrutta due diversi moduli per installare prima il file .xap relativo alla nostra applicazione Silverlight e poi il file .webpart:

<?xml version="1.0" encoding="utf-8"?> 

<Elements xmlns="http://schemas.microsoft.com/sharepoint/" >
<Module Name="SilverlightWebPart1" List="113" Url="_catalogs/wp">
<File Path="SilverlightWebPart1\SilverlightWebPart1.webpart" Url="SilverlightWebPartProject1_SilverlightWebPart1.webpart" Type="GhostableInLibrary" >
<Property Name="Group" Value="Custom" />
</File>
</Module>
<Module Name="SilverlightWebPart1">
<File Path="SilverlightWebPart1\SilverlightProject1.xap" Url="SiteAssets/SilverlightWebPartProject1/SilverlightWebPart1/SilverlightProject1.xap" />
</Module>
</Elements>

Se non conoscete le tecniche di provisioning di SharePoint 2010 o la sintassi per la definizione di una web part, questo è sicuramente un bell'aiuto e quindi un ottimo inizio per approfondire lo studio (a riguardo potete guardare il mio video su channel9).

L'applicazione Silverlight invece, è stata creata con le referenze delle due librerie del Client Object Model di SharePoint 2010, così da permettere l'interazione con i contenuti server-side.

SharePoint 2010 Siverlight Web Part in Visual Studio 11

Facendo un primo build della soluzione Visual Studio, ci accorgiamo che il file .xap che rappresenta la nostra applicazione Silverlight viene compilato ed inserito all'interno del pacchetto SharePoint (il classico .wsp), precisamente all'interno del folder "SilverlightWebPart1", proprio come specificato dal file XML di provisioning che abbiamo visto sopra. In questo modo, una volta installata la soluzione all'interno di una farm SharePoint e una volta abilitata la relativa feature, siamo in grado di inserire la "Silverlight Web Part" che punta alla nostra applicazione Silverlight, all'interno di una pagina SharePoint 2010.

SharePoint 2010 Siverlight Web Part in Visual Studio 11

Come vi dicevo, niente di nuovo. Abbiamo un template di progetto ed un template di elemento in più per evitare di pubblicare a mano le nostre applicazioni Silverlight all'interno di SharePoint 2010.
Se voltete scaricarvi i sorgenti d'esempio eccoli qua:
- ZIP (bho kb)

Vi ricordo che per provare queste novità dovete installare la developer preview di Visual Studio 11, che potete trovare a questo indirizzo:
- http://www.microsoft.com/download/en/details.aspx?id=27543 (web installer)
- http://www.microsoft.com/download/en/details.aspx?id=27538 (offline installer)