SharePoint-Silverlight-FirstSteps

download SharePoint-Silverlight-FirstSteps

of 17

Transcript of SharePoint-Silverlight-FirstSteps

  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    1/17

  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    2/17

    O les 2 {Guid} correspondent aux identifiants de la liste et de la vue. Rendez-vous dans lesparamtres de la liste et cliquez sur la vue qui vous intresse :

    A partir de l, vous aurez toutes les informations directement dans l'url du navigateur (pensezjuste nettoyer un peu pour retirer le paramtre "Source" qui n'est rien d'autre que l'url de lapage prcdente :

    Nous voil donc avec le ncessaire. Si vous entrez l'url ainsi gnre dans votre navigateur,voici ce que vous obtenez :

    http://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_14[3].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_08[3].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_07[2].png
  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    3/17

    Cration du projet Silverlight sous Visual Studio 2008

    Crons maintenant un nouveau projet et choisissons Silverlight Application dans la section

    Silverlight :

    Pensez prendre loption dajout dun site ASP.Net :

    http://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_02[3].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_01[4].png
  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    4/17

    Rajoutez dans le fichier Page.xaml un contrle DataGrid(appelez le ListItems). I l nous servira afficher les liens :

    Dfinissez aussi 2 lignes dans le Grid ainsi quun TextBlock pour afficher des messagesdinformation en bas de l'application.

    Passons maintenant dans le Code Behind pour coder lappel RPC.

    http://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_04[8].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_03[2].png
  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    5/17

    Passage en Code Behind : requte RPC

    Ajoutons dabord une rfrence System.Xml.Linqcar nous allons rcuprer les informationsvia LINQtoXML (le RPC fournissant un rsultat sous forme XML, c'est quand mme le plusadapt).

    Clic droit sur References , Add Reference :

    Puis slection du namespace :

    Ajoutons le code suivant pour l'appel (utilisation de la classe WebClient) sans en mettre pluspour l'instant dans lvnement : nous allons dabord vrifier que le contenu est correctementrcupr et nous afficherons un message en cas de succs ou dchec.

    http://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_13[5].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_12[2].png
  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    6/17

    http://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_15[5].png
  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    7/17

    En lanant en mode Debug, on remarque quune erreur se produit lors de la rcupration de lapage.

    En effet, il nest pas possible dappeler la page, une exception lie la scurit estleve. C'est en fait une erreur classique et normale: mon site SharePoint n'est pas sur le mmedomaine que ma page de test (dev.local alors que ma page de test fonctionne en localhost). Etil nest pas possible dappeler de ressources distantes si le site les hbergeant ne le permetpas. Il va falloir dfinir un fichier dautorisation pour russir mon appel ct SharePoint.

    Faire fonctionner mon appel distant

    Pour voir les appels HTTP effectus et ce qui peut poser problme, vous pouvez utiliserFiddler, un petit utilitaire permettant de sniffer les changes rseaux entre votre poste clientet les sites distants.

    On remarque grce ce biais que lapplication Silverlight a tent d'accder 2 fichiers XML surle site SharePoint : "clientaccesspolicy.xml" et "crossdomain.xml" mais sans succs (erreur404):

    Le fichier "ClientAccessPolicy.xml" permet de dfinir les services disponibles et qui peut lesconsommer. Donc point de salut si vous dsirez consommer des services sur des sites externes,

    il faudra qu'ils dfinissent de leur ct ce fichier.

    http://www.fiddlertool.com/fiddler/http://www.fiddlertool.com/fiddler/http://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_10[3].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_11[3].pnghttp://www.fiddlertool.com/fiddler/
  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    8/17

    Vous trouverez toutes les informations ce sujet sur le MSDN :

    Network Security Access Restrictions in Silverlight 2 Making a Service Available Across Domain Boundaries

    Faisons simple et crons ce fichier XML avec SharePoint Designer 2007 dans le site situ laracine de votre application (par exemple ici http://dev.local).

    Connectez-nous au site SharePoint, et rajoutez un fichier HTML la racine :

    Renommez-le fichier en "ClientAccessPolicy.xml" et remplacez son contenu par le code XMLsuivant :

    http://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspxhttp://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspxhttp://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspxhttp://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspxhttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_16[3].pnghttp://msdn.microsoft.com/en-us/library/cc197955(VS.95).aspxhttp://msdn.microsoft.com/en-us/library/cc645032(VS.95).aspx
  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    9/17

    J'ai volontairement fait simple avec une dfinition de la scurit assez proche de l'Open Bar :accs en mode SOAP n'importe quel service/url depuis n'importe quel domaine.

    Sauvegardez le tout et relancez votre application. Ce coup-ci, a marche !

    Reste maintenant binder nos donnes XML au DataGrid.

    Binding des donnes au DataGrid

    Pour cela nous allons crer une classe "Link" reprsentant le lien et gnrons en une collectionvia une belle requte LINQ.

    Ajoutez une nouvelle classe dans le projet (fichier Link.cs) :

    Dans le code behind de la page, modifiez le code de l'vnement "OpenReadCompleted" pourrequter le contenu depuis unXDocument rempli grce la rponse lappel RPC.

    http://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_17[3].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_19[3].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_18[2].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_17[3].png
  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    10/17

    Dans le dtail :

    1. Chargement du flux XML dans le XDocument2. Dfinition des namespaces XML afin d'accder aux noeuds 3. Cration de la requte LINQ en gnrant les liens depuis les attributs des noeuds

    rcuprs (j'ai ajout 2 petites mthodes Helper pour dcouper proprement l'url

    puisque SharePoint stocke les valeurs sous le format http://url, titre ).4. Pour finir, binding de nos liens avec le DataGrid

    http://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_21[13].png
  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    11/17

    Et voici le rsultat obtenu :

    Pas super sexy, mais fonctionnel !

    En modifiant un peu le XAML (Page.Xaml) pour remplacer le DataGrid par une ListBoxcontenant un lien hypertexte et un champs de commentaires :

    On obtient un rsultat directement exploitable qui permet d'avoir les liens c liquables:

    http://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_24[3].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_23[3].pnghttp://c/Users/gaetan.bouveret/AppData/Roaming/Windows%20Live%20Writer/PostSupportingFiles/d7d8d9e2-0c4b-46f2-b009-8b34e3dca591/SL4SP_22[3].png
  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    12/17

    Affichage du contrle dans SharePoint

    Finissons ce projet en incluant le contrle Silverlight au sein dun site SharePoint.

    Cela va nous permettre de voir les quelques modifications apporter pour que cela fonctionnecorrectement.

    Ajout du fichier Silverlight.js

    Pour initialiser correctement le contrle Silverlight, il nous faut le fichier Javascript fourni parle Framework (celui-ci contient le ncessaire). Etant donn que ce fichier va tre rutilis pardautres contrles, autant le centraliser en le plaant dans un sous-rpertoire Silverlight dans 12\TEMPLATE\LAYOUTS .

    Remarque : Bien sr, je zappe ici le packaging sous forme de solution, mais cest le passageoblig (et propre) pour dployer le fichier proprement sur vos plateformes ! Vous trouverez la fin de larticle le lien vers la solution dployant le fichier Silverlight.js.

    Mise disposition du XAP

    Plaons ensuite le fichier XAP (SL4SPListViewer.xap) situ dans le rpertoire bin/debug denotre projet dans une bibliothque de documents (ici appele Silverlight mais le nom importepeu) :

    Remarque :vous ntes pas du tout oblig de mettre le XAP dans une bibliothque dedocuments, cela dpendra pour beaucoup des facilits de dploiement et de la structure devotre projet, mais la bibliothque vous permet de grer le versioning et propose une interfacede gestion facilite.

  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    13/17

    Ajout du type MIME .xap

    Mais ce nest pas suffisant car il faut que votre serveur IIS reconnaisse le nouveau type defichier et il faut ajouter le type MIME .xap notre application IIS. Je vous donne icilexplication pour Windows Server 2008 mais cest la mme logique pour Windows Server 2003.

    Rendez-vous sur lapplication web hbergeant votre site SharePoint, dans la vue Feature , etslectionnez MIME Types

    Cliquez sur Add et entrez les informations suivantes :

    Remarque :attention, si vous laviez fait pour la version bta, le type a chang de nom,pensez le mettre jour !

  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    14/17

    Affichage du contrle dans une WebPart

    Nous allons faire simple et utiliser la WebPart ddition de contenu (Content Editor WebPart) pour

    appeler notre application Silverlight. Rendez-vous sur la page daccueil du site en mode dition et

    ajoutez la WebPart:

    Dans les proprits de celle-ci, cliquez sur le bouton permettant ldition du code source et collez le

    contenu suivant :

    function onSilverlightError(sender, args) {

    var appSource = "";

    if (sender != null && sender != 0) {appSource = sender.getHost().Source;

    }

    var errorType = args.ErrorType;

    var iErrorCode = args.ErrorCode;

    var errMsg = "Unhandled Error in Silverlight 2 Application " + appSource + "\n" ;

    errMsg += "Code: "+ iErrorCode + " \n";

    errMsg += "Category: " + errorType + " \n";

    errMsg += "Message: " + args.ErrorMessage + " \n";

    if (errorType == "ParserError"){

    errMsg += "File: " + args.xamlFile + " \n";

    errMsg += "Line: " + args.lineNumber + " \n";

    errMsg += "Position: " + args.charPosition + " \n";

    }

    else if (errorType == "RuntimeError")

    {

    if (args.lineNumber != 0)

    {

    errMsg += "Line: " + args.lineNumber + " \n";

  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    15/17

    errMsg += "Position: " + args.charPosition + " \n";

    }

    errMsg += "MethodName: " + args.methodName + " \n";

    }

    throw new Error(errMsg);

    }

    Ce code HTML correspond des balises classiques HTML. Il vous faudra ladapter selonlemplacement de votre fichier Javascript et du fichier XAP.

    Malgr cela, notre WebPart semble tre vide. Il sagit juste quun petit problme de style et

    dencapsulation dans les balises gnres par notre WebPart. Modifiez-la et changez la largeur et la

    hauteur dans la section Apparence pour quelles correspondent celles de notre contrle :

  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    16/17

  • 7/31/2019 SharePoint-Silverlight-FirstSteps

    17/17

    ConclusionJespre quau travers de ce tutoriel vous aurez suivi lensemble des petites problmatiques de

    connexion entre Silverlight et SharePoint afin den lire le contenu, ainsi que lintgration de vos

    applications Silverlight au sein de vos sites SharePoint.

    Deux petites remarques pour finir :

    Pour utiliser les requtes RPC, lutilisateur doit tre authentifi et reconnu (au moins lecteursur le site) sinon le document XML rcupr via les RPC sera vide. Ainsi, dans le cadre daccs

    anonyme cela pourra vous poser quelques problmes.

    En bta, le contrle HyperLinkButton demandait obligatoirement une Uri pour le binding sursa proprit NavigateUri., il semble que depuis la RTM une chane de caractres suffise. Dans

    le cas contraire, il vous faudra passer par unConverter.

    Liens utiles :

    Tutoriel Silverlight de Scott Guthrie: dveloppement d'un client Digg Tlchargement du Service Pack 1 pour Visual Studio 2008 Microsoft Silverlight Tools for Visual Studio 2008 SP1 Guide de dmarrage Silverlighthttp://silverlight.net/GetStarted/ Silverlight Toolkitsur CodePlex Windows SharePoint Services RPC Methods Office Online Club SPS MOSS FRANCE(FR)

    Tlchargements :

    Solution SharePoint installant le fichier silverlight.js Code source du projet

    En vous souhaitant de bons projets autour de SharePoint et de Silverlight !

    Gatan Bouveret (alias Gat)

    Expert Consultant et Formateur SharePoint chezWinwise

    Blog :myPointOfView

    Membre de laSoV Team

    http://www.silverlightshow.net/items/Data-Conversion-in-Silverlight-2-Data-Binding.aspxhttp://www.silverlightshow.net/items/Data-Conversion-in-Silverlight-2-Data-Binding.aspxhttp://www.silverlightshow.net/items/Data-Conversion-in-Silverlight-2-Data-Binding.aspxhttp://weblogs.asp.net/scottgu/pages/silverlight-2-end-to-end-tutorial-building-a-digg-search-client.aspxhttp://weblogs.asp.net/scottgu/pages/silverlight-2-end-to-end-tutorial-building-a-digg-search-client.aspxhttp://www.microsoft.com/downloads/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61&displaylang=frhttp://www.microsoft.com/downloads/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61&displaylang=frhttp://www.microsoft.com/downloads/details.aspx?FamilyId=c22d6a7b-546f-4407-8ef6-d60c8ee221ed&displaylang=enhttp://www.microsoft.com/downloads/details.aspx?FamilyId=c22d6a7b-546f-4407-8ef6-d60c8ee221ed&displaylang=enhttp://silverlight.net/GetStarted/http://silverlight.net/GetStarted/http://silverlight.net/GetStarted/http://www.codeplex.com/Silverlighthttp://www.codeplex.com/Silverlighthttp://msdn.microsoft.com/en-us/library/ms954090.aspxhttp://msdn.microsoft.com/en-us/library/ms954090.aspxhttp://office.microsoft.com/fr-fr/default.aspxhttp://office.microsoft.com/fr-fr/default.aspxhttp://clubmoss2007.org/default.aspxhttp://clubmoss2007.org/default.aspxhttp://www.sharepointofview.fr/gat/Tlchargements/SilverlightScript.ziphttp://www.sharepointofview.fr/gat/Tlchargements/SilverlightScript.ziphttp://www.sharepointofview.fr/gat/Tlchargements/SL4SPListViewer.ziphttp://www.sharepointofview.fr/gat/Tlchargements/SL4SPListViewer.ziphttp://www.winwise.fr/http://www.winwise.fr/http://www.winwise.fr/http://www.sharepointofview.fr/gat/http://www.sharepointofview.fr/gat/http://www.sharepointofview.fr/gat/http://www.codeplex.com/SharePointOfViewhttp://www.codeplex.com/SharePointOfViewhttp://www.codeplex.com/SharePointOfViewhttp://www.codeplex.com/SharePointOfViewhttp://www.sharepointofview.fr/gat/http://www.winwise.fr/http://www.sharepointofview.fr/gat/Tlchargements/SL4SPListViewer.ziphttp://www.sharepointofview.fr/gat/Tlchargements/SilverlightScript.ziphttp://clubmoss2007.org/default.aspxhttp://office.microsoft.com/fr-fr/default.aspxhttp://msdn.microsoft.com/en-us/library/ms954090.aspxhttp://www.codeplex.com/Silverlighthttp://silverlight.net/GetStarted/http://www.microsoft.com/downloads/details.aspx?FamilyId=c22d6a7b-546f-4407-8ef6-d60c8ee221ed&displaylang=enhttp://www.microsoft.com/downloads/details.aspx?familyid=27673C47-B3B5-4C67-BD99-84E525B5CE61&displaylang=frhttp://weblogs.asp.net/scottgu/pages/silverlight-2-end-to-end-tutorial-building-a-digg-search-client.aspxhttp://www.silverlightshow.net/items/Data-Conversion-in-Silverlight-2-Data-Binding.aspx