Développement d'applications sur MOSS 2007 et WSS V3
Paru le 2006 03 05
Tiré du blog de Chris Johnson, Microsoft Consulting Services NZ.
J'ai eu la chance d'être profondément impliqué dans l'un des premiers projets de nos clients TAP (Technical Adopter Program) pour Office. Les clients TAP reçoivent les premières versions et les versions bêta, en plus du support technique de Microsoft, pour élaborer un projet sur la base de ces produits. L'objectif de cette initiative est double : il consiste à leur permettre d'effectuer un déploiement précoce des technologies les plus récentes et de favoriser ainsi la mise sur le marché d'un produit de qualité par Microsoft. Nos clients TAP nous sont indispensables dans le sens où ils nous font part de leurs commentaires tout au long de la construction du produit.
Dans le projet spécifique dans lequel je suis actuellement impliqué, nous développons une solution très élaborée, créée à l'aide d'un grand nombre de nouvelles fonctionnalités de Microsoft Office System 2007. Parmi ces fonctionnalités, citons notamment InfoPath incorporé dans un contrôle WinForms et Microsoft Office SharePoint Server 2007 (MOSS 2007).
Voici la liste non exhaustive de ce que nous réalisons :
création d'une application WinForms .NET et incorporation d'InfoPath pour réaliser des captures de formulaires enrichis hors connexion dans une application personnalisée ;
Workflows Visual Studio personnalisés reposant sur Windows Workflow Foundation ;
Définitions de sites personnalisées, Définitions de listes, ///Tâches d'horloge déployées en tant que fonctionnalités via l'infrastructure de déploiement de solutions.
...
L'objet principal de cet article consiste surtout à présenter les différentes options que nous avons envisagées pour créer une interface utilisateur personnalisée exécutée dans MOSS, ainsi que les avantages et inconvénients de chacune d'entre elles.
Voici les différentes options que nous avons envisagées :
Composants WebPart personnalisés
Application « _layouts » (voir plus loin la définition)
Application créée à l'aide de contrôles utilisateurs (User Controls) et de Son of SmartPart
Le composant particulier de l'application qui m'intéresse est le « moteur » de présentation de l'interface utilisateur qui contient tous les mécanismes pour la mise en œuvre de cette dernière.
Sur cette page
Option 1 : Composants WebPart personnalisés
Option 2 : Application _layouts
Option 3 : Contrôles utilisateurs et Son of SmartPart
Option 1 : Composants WebPart personnalisés
Cette option permet de créer la totalité de l'interface utilisateur à l'aide de l'infrastructure de composants WebPart. La logique, etc…. peut être dans d'autres assemblys .NET; un service Web, ou ailleurs, exactement comme pour une autre application .NET.
Avantages :
création à l'aide de l'infrastructure de composants WebPart ASP.NET ;
déploiement via un package d'installation de composants WebPart ou par le biais du nouveau mécanisme de déploiement de fonctionnalités ou de solutions ;
l'application SharePoint offre une infrastructure d'hébergement pour « placer » ces composants WebPart sur des pages WebPart ;
infrastructure de communication pour l'échange entre les composants WebPart ;
conception totalement réutilisable à travers plusieurs sites, à moindre effort.
Inconvénients :
pas de glisser-déplacer pour disposer votre l'interface utilisateur, c'est-à-dire qu'il n'y a pas de surface au moment de la conception ;
C'est une infrastructure dans laquelle les développeurs doivent apprendre à travailler.
Conclusion : une utilisation appropriée des composants WebPart consisterait donc à créer une mini application/gadget à appliquer à de nombreuses pages WebPart à travers un grand nombre de sites.
Option 2 : Application _layouts
Lorsque vous développez une application Web ASP.NET et que vous la déployez sur le répertoire c:\program files\common files\microsoft shared\web server extensions\12\template\layouts (ouf !), elle est qualifiée d'application _layouts. Ce répertoire spécial est « virtualisé » dans chaque site SharePoint, c'est-à-dire que chaque site SharePoint possède un chemin /_layouts provenant de la racine du Web. Ainsi, par exemple, http://nomserveur/sites/nomsite/_layouts.
Cela signifie que vous pouvez rendre votre application disponible sous chaque site SharePoint, par ex., http://nomserveur/sites/nomsite/_layouts/MyApp/SomePage.aspx.
En réalité c'est ainsi que toutes les pages d'administration de SharePoint sont exécutées sur chaque site.
Avantages :
excellente méthode pour rendre votre fonctionnalité disponible dans chaque site ;
facilité de développement ; identique au développement d'un site WebASP .NET normal ;
accès contextuel au modèle d'objet SharePoint ; parfait pour travailler sur le site auquel il se trouve que l'utilisateur est justement connecté au même moment.
Inconvénients :
déploiement non géré via le mécanisme de déploiement de solutions ;
impossibilité d'utiliser la page maître ASP.NET du contexte du site étant donné que l'application _layouts est une application ASP.NET séparée.
Conclusion : il est préférable d'utiliser une application _layouts lorsque vous souhaitez étendre tous les sites avec des fonctionnalités telles que des pages d'administration supplémentaires.
Option 3 : Contrôles utilisateurs et Son of SmartPart
La dernière option consiste à créer l'interface utilisateur de vos applications dans des contrôles utilisateurs ASP.NET comme dans n'importe quelle autre application Web ASP.NET, puis d'utiliser Son of SmartPart pour mettre en œuvre ces contrôles utilisateurs via un composant WebPart.
Son of SmartPart est un composant WebPart capable d'« héberger » un contrôle utilisateur ASP.NET 2.0 :). Pour plus d'informations, consultez : http://www.smartpart.info/default.aspx
(si vous voulez savoir qui est le père du Son of SmartPart (fils de SmartPart) ... c'est curieusement SmartPart ... qui est un composant WebPart destiné à l'hébergement des contrôles utilisateurs ASP.NET 1.1).
Avantages :
facilité de développement ;
vous disposez d'une surface de conception pour créer votre interface utilisateur ;
déploiement relativement simple ;
possibilité d'utiliser l'infrastructure de connexion des composants WebPart, si nécessaire ;
il peut être possible de les développer d'abord en dehors de SharePoint (dans la mesure où ils possèdent des dépendances à SharePoint).
Inconvénients :
déploiement non géré via un mécanisme de déploiement de solutions prêt à l'emploi (vous pourriez créer une solution pour déployer Son of Smart Part) ;
déploiement légèrement différent des fichiers et assemblys User Controls (mais rien qu'un fichier .bat ne puisse résoudre) au cours du développement.
Conclusion : je pense que cette option est parfaite pour créer une interface utilisateur faisant appel à un navigateur enrichi, à utiliser dans un ou deux sites. En revanche, elle ne me semble pas idéale pour créer une mini application à inclure à de nombreux sites. Dans ce cas, il est préférable d'utiliser un composant WebPart.
Tableau d’aide à la décision
|
Site unique |
Quelques sites |
De nombreux sites |
---|---|---|---|
Fonctionnalité par site |
Smart Part |
Smart Part ou composant WebPart |
Composant WebPart |
Application à instance unique |
Smart Part |
Sans objet |
Sans objet |
Fonctionnalité d'extension de site |
Composant WebPart |
Composant WebPart |
Application _layouts |
Dans le cas de figure de notre projet :
Pour le projet que j'ai mentionné au début de cet article, voici les points sur lesquels nous étions d'accord :
nous souhaitions concevoir une interface utilisateur d'application dans un seul endroit dans SharePoint ;
il n'y aurait toujours qu'une seule instance de l'application, c'est-à-dire que celle-ci ne se manifesterait que sur un seul site SharePoint ;
l'interface utilisateur comporterait un grand nombre d'écrans différents.
D'après vous, quelle option avons-nous choisi ?
Et bien, nous avons véritablement hésité entre deux options pour créer l'interface utilisateur, à savoir les composants WebPart ou la méthode Smart Part.
Finalement, c'est la méthode User Controls et Smart Part qui fut utilisée pour sa construction car nous avons estimé que les développeurs seraient plus productifs dans la création des contrôles utilisateurs (n'ayant pas d'expérience préalable du développement de SharePoint), et dans la mesure où il n'était pas nécessaire de réutiliser les applications dans plusieurs sites.
C'est ainsi que nous nous sommes retrouvés avec une bibliothèque de documents pour héberger des pages WebPart pour chaque « écran » de l'interface utilisateur. Dans chacune des pages WebPart, nous avons fait appel à Son of SmartPart pour exécuter le contrôle utilisateur qui met en œuvre cette partie de l'application.
Je serais très intéressé de savoir si vous utilisez d'autres options pour développer vos applications exécutées dans SharePoint. N'hésitez pas à m'envoyer vos commentaires…
-Chris.
Mise à jour : modification du titre pour inclure WSS v3 suite à la remarque judicieuse de Patrick selon lequel ces propos s'appliquent également à WSS v3.