Travaillant main dans la main avec Christian Hougardy sur le sujet de la Gouvernance et ce depuis longtemps, je suis assez effaré du Buzz actuel sur la notion de gouvernance.
Si, si le terme en moins de 4 mois est devenu aussi connu dans le monde du SharePoint que Britney Spears dans le milieu People.
Mais bon, au moins, la gouvernance est un vrai sujet de valeur.
Je suis tombé sur un très bon article du
SharePoint Paradox Meets SharePoint Governance
Je reviendrai pas sur la notion de gouvernance, cet article ou ces posts de Christian couvrent très bien le sujet
Mais je veux attirer votre attention sur quelques points de la lecture de l'analyse du Paradoxe SharePoint
Actuellement, SharePoint 2007 vit un essor incroyable : la demande afflue, la confiance augmente : C'est la technologie à la mode en entreprise
On le constate aisément :
- Soit par les chiffres : $1billion 100 million pour Microsoft en 1 an de license MOSS
- Soit par le trust du sujet SharePoint dans la plupart des Évangélistes : même Guy Kawasaki y regarde de plus prés
- Soit par la chasse MASSIVE des compétences SharePoint : bonjour les recruteurs surmotivés
- Soit par la taille grandissante des projets SharePoint
Difficile d'expliquer un tel essort ?
>>> Pas temps que cela si on regarde certaines caractéristiques de base de SharePoint
- Générateur d'espace au besoin
- Des modèles prêts à l'emploi prônant la collaboration, le partage
- l'interconnexion Office
- Une montée en charge
- le natif peut couvrir à froid 80% de besoin de base
- un modèle objet complet et un système de déploiement complet
- ...
Si ça ne s'explique pas aisément, en tout cas ça se comprend bien
Le vrai Paradoxe de SharePoint est que son pire ennemi est lui même !!!
KEZAKO
Non non, vous avez bien lu et j'assume
Je m'explique :
Depuis longtemps, j'avertie les gens sur l'aspect viral de SharePoint. Du moment que vous créez un site pour un user voir un second pour des meetings, ses collègues ne mettront pas longtemps a en voir l'intérêt et à exiger le même
Et la commence la SPandémie
>>> Vous créez de plus en plus de site, vous gérez de moins en moins et à la fin vous déléguez les droits de création à des tiers ...
Moralité, SharePoint suit une croissance organique sous contrôle du besoin des utilisateurs, souvent sans fin suite à la disette informatique de la bubulle de l'an 2000.
En effet, SharePoint offrant une véritable liberté de création de contenu, il donne en même temps un pouvoir très dangereux qui se concrétise en
- une jungle de site SharePoint
- une accumulation de data parsemées
- des moteurs de recherche débordés
- des DB en croissance permanente : bonjour les DBA avec 300GB dans un base
- des KPI clairsemés
- ...
Qui dit grand pouvoir, dit grande responsabilité
Or, avez vous déjà su convaincre un utilisateur, un IT, un DEV de suivre les formations et de bien écouter ?
C'est assez compliqué. Prenez par exemple le cas des inbox Exchange de plus de 2GB jamais classés ...
L'effet Viral de SharePoint m'amène à une sorte de "théorème" : "Quelque soit la volumétrie estimée du projet, elle sera PI fois supérieure"
Sous entendu : prévoyez un coefficient entre 3 et 4 supérieur à vos prévisions
>>> Quand les utilisateurs adhérent, ils n'en démordent pas, bien au contraire
C'est la qu'arrive les vrais soucis ...
- Les DBs grossissent et remettent en question l'architecture de stockage
- Difficile d'unifier une politique de catégorisation/taxonomie
- Des bibliothèques de partout
- Des Content types non centralisés
- Modèles de document ?
- Gestion des modèles ?
- Croissance non maîtrisée
Sous entendu : bye bye l'organisation générale
Il faut donc maitriser ses processus et les règles de gestion
Soit la problématique de la gouvernance, la vraie !
Définir les tenants et aboutissants comme :
- les responsabilités
- la définition des modèles
- la délégation
- les droits et devoirs
- la politique de croissance et de formation
Sous entendu, contrôler, gérer à la baguette tel un chef d'orchestre Allemand la vie de votre ferme SharePoint
Et là le paradoxe prend toute son ampleur !!!
- La force de SharePoint est de générer au besoin / la gouvernance veut les contrôler
- La gouvernance est surtout un recueil de processus, pas de bonne pratique
Donc, d'un coté il faut cadrer le potentiel de l' outil et en plus selon des règles de gestion
Ce qui est bien compliqué est, selon mon point de vue, si on applique une Check List à la lettre, on ne fait que contrôler que tout va bien
>>> on ne s'assure pas que la Check List soit justement au fait de vraies bonnes pratiques
En résumé, si la gouvernance définit les "What to do", il faut en parallèle gérer aussi les "How to do"
Vous voulez un exemple ?
Simple, prenons le cas de la DB
- point de vue gouvernance : un personne est responsable de la maintenance SQL et doit assurer une SLA de 45 minutes en cas de crash
- point de vue DBA : je ne pourrais définir une SLA que selon mon matériel et vos besoins
C'est facile de définir des SLA mais recopier 150 GB depuis une bande magnétique et la restorer en moins de 45 min ...
>>> il faut donc les machines adéquates, la compétence et valider le tout avant même de définir engagement et responsabilités
Actuellement, le soucis est de justement définir d'un coté les Best Practices SharePoint et ensuite les accorder adroitement avec son plan de Gouvernance
Maintenant, trouver ces bonnes pratiques, suivre l'évolution de la technologie et prévoir/gérer le fonctionnement de sa ferme est extrêmement chronophage et compliqué ...
Il est vrai qu'on trouve de plus en plus de gens qui vous diront ce qui est "bien de faire" mais peu qui vous expliquerons "comment le faire"
Tout un dilemme, un autre paradoxe !
Un dernier paradoxe pour la fin ?
Il est actuellement très difficile de mettre en place un vrai plan de gouvernance une fois les machines installées, les licences acquises et le portail ouvert aux utilisateurs. En effet, comment recadrer un processus déjà initié à postériori
Actuellement, la démarche d'auditer ses besoins, son évolution et de définir la véritable utilisation de la technologie n'est jamais synchrone avec l'achat des machines et/ou le potentiel de son réseau. Mais sans cette démarche, comment arriver à un véritable "sizing" ?
...
Mais bon, pour finir sur une note positive :
- les bonnes pratiques existent !
- les mauvaises aussi !!!!
Faites de bons choix et surtout soyez prudent avec la technologie SharePoint : Ce produit marche bien voir trop bien 
A bientôt
Renaud Comte aka TheMit (pour la promotion des "Bonnes Pratiques")
Member of WygTeam
http://www.wygwam.com
J'ai posté récemment sur la notion des "Custom Activity" avec SharePoint Designer (SPD). Sujet délicat car si le principe est séduisant, quelques éléments prouvent que leur utilisation à grande échelle peut être dangereuse
Dixit les Feedbacks : http://blogs.developpeur.org/themit/archive/2008/08/14/des-activit-s-m-tiers-pour-vos-workflows-sharepoint-designer-une-bonne-technique.aspx#40974
Je n' ajouterais rien aux remarques, elle sont suffisamment claires
Une question ressort cependant : et si on réutilisait le XOML généré par SPD pour initialiser son projet VS.Net ?
Histoire d'avoir déjà une bonne base fonctionnelle prête à la customisation ?
Non ?
[Update] : suite à un commentaire avisé, j'ai volontairement changé le titre original du Post. Le développement de WF demande déja une bonne connaissance de la conception de workflow. Certes, cela semble évident mais c'est bien souvent sous estimé par nombre de développeur considérant WF ou SP comme un simple namespace de plus à connaitre. Si la transition sous VS.Net d'un WF créé sous SPD n'est clairement pas un objectif infranchissable, bien au contraire, il nécessite une véritable compétence en terme de coding SharePoint ET WF.
Genre recyclons nos bons vieux workflows SPD 

Les aficionados de ce blog se rappelleront le post sur une des sessions de la SharePoint Conference 2008 de Seattle :
SharePoint Conference 2008 : Porting SPD Worflow to VS.Net
Depuis l'idée a fait son chemin, la technique demande toujours un peu de doigté mais elle devient un grand classique !
A vrai dire, il s'agit surtout d' extraire le XOML et ses références pour les reprendre sous VS.Net
>>> SharePoint Designer peut même faire une partie du Job en republiant le WF sur votre disque !
Ça vous parait plus compliqué ?
En pratique pas tant que cela
la preuve par 2 :
Bien sur, un connaissance de base de WF sous Visual Studio est un plus, mais ca, vous le saviez déja !
Bonne lecture à tous
Renaud Comte aka TheMit (SPJetLaggeur)
Member of WygTeam
http://www.wygwam.com
Mots clés Technorati :
WF,
spd,
sharepoint,
wss,
moss,
xoml
La conception et le développement de workflow sous SharePoint peut des fois donner le sentiment d'un bon match de lutte greco romaine (j'essaye d'être en phase avec l'actualité
)
Quelque soit la difficulté des WF qui nécessite de bien comprendre la notion de custom list/form/feature et content type ainsi que les spécificités de WF, il faut accepter qu'un Workflow reste et sera toujours une véritable application métier. Pas un simple traitement de données landa.
==> il faut l'envisager dans son ensemble !
...
Mais tous les besoins de workflow ne sont pas tous complexes et fondamentales. Vous pouvez avoir besoin de traitement automatisé comme :
- annonce des validations
- remonté et fédération d'information
- déploiement de document sur création
- suivi fin des taches
- ...
- ...
Je dirais des workflows plus ciblés utilisateurs que méthodologies et processus entreprises. Des enchaînements plus simple et souvent changeant (disons évolutif). Des cas ou même les utilisateurs aimeraient être plus autonomes et indépendant d'une équipe de Dev
Plutôt que sortir votre VS.Net le Nabaztag qui suit (demandé à Phil, il expliquera
), SharePoint Designer peut très bien répondre aisément et rapidement

On est d'accord mais il faut bien accepter que SPD est limité à un petit choix d'options :
- séquentiel
- action locale
- paramétrage léger
Cependant, conception, réalisation et déploiement sont d'une simplicité enfantine !
>>> Un formidable générateur de XOML (XAML mais dédié WF)
Il existe une technique bien pratique et commune pour améliorer les scenarii d'utilisation de SPD avec les Worflows
>>> intégrez vos propres activités personnelles ! (ou custom activity)
Ainsi, vous avez une jolie solution :
- la flexibilité et la simplicité de SPD
- la puissance du .Net dans les activités
Nota bene
Pour ceux qui suivent la technologie SharePoint + Workflow, ce post n'est pas une nouveauté certes, mais ce n'est pas le cas de tous. Mais comme cette technique me semble être désormais un classique, il est bon de la faire connaître
Comme SPD s' appuie exclusivement sur le code déclaratif XOML pour créer ses workflows, rien ne vous empêche d' inclure dedans vos propres références à des activités "custom" !
Mieux que cela, vous pouvez aussi intégrez ces "custom activity" directement dans l'interface de création de SPD
Des lors, vous pouvez intégrer dans une simple DLL, toutes les spécificités d'action que vous avez besoin et les utilisez d'un claquement de doigt depuis un interface SPD.
Mieux que ça encore, vous pouvez créer toutes une famille d'activité réutilisable entre vos grands WF entreprise et le panel de choix de SPD. Sous entendu, mutualiser et factoriser le travail de dev jusqu'au niveau des "super utilisateurs" qui peuvent créer tout seul les workflow locaux
Pratique non ? SURE !
Si vous vous sentez de tester ASAP cette technique, voici quelques liens qui sauront vous ravir !!!
Allez, bon développement à tous !
Oh dernière remarque : SPD n'est pas l'alpha et l'omega du workflow
>>> Si vous commencez à avoir quelques centaines d'instance de WF via SPD, il serait peut être temps de penser à les modéliser en pur WF + SP.
(Fabrice , tu vois ce que je veux dire non ?)
Renaud Comte aka TheMit (un peu de WF de temps à autre, ça change)
Member of WygTeam
http://www.wygwam.com
Oui, je sais, ce post est surtout un clin d'oeil vers plein de vieux amis neuroniens (il se reconnaîtront) 

Download the Lotus Notes and Domino 8.5 beta today
Il n'empêche qu'il faut savoir rester curieux !
Mine de rien, il y a du bon dans le futur Notes
- compression documentaire avant envoi
- gestion de la redondance des fichiers envoyés
- Stabilité sous 64 bits
- mappage ID Notes/secu NT
- Web 2.0 style architecture (oui je sais, je vois pas ce que ça peut être)
- un nouveau Web-based Lotus iNotes
- des widgets
- connectivité iPhone
- support de Apple Mac OS X v10.5 Leopard et Ubuntu
Non ?
Ok, je retourne à mon SharePoint ...
Renaud Comte aka TheMit (J'aurais éssayé de changer tant pis ...)
Member of WygTeam
http://www.wygwam.com
Depuis longtemps, je milite pour l' utilisation systématique des fichiers de ressources dans le développement SharePoint afin de favoriser le multilinguisme !

Je ne suis plus tout seul, heureusement d' ailleurs, d'autre me rejoigne comme ce cher GAT (pour les frenchies, prononcer Gaetan Bouveret
)
Preuve en est son super article sur ASP-PHP (que je ne saurais trop vous conseiller de lire, relire et surtout appliquer !)
http://www.sharepointofview.fr/gat/archive/2008/07/11/internationalisation-des-applications-sharepoint.aspx
En parcourant un peu le site de CodeProject, je suis tombé sur de bien sympathique samples, qui m'ont surtout fait réaliser un oubli cruel.
??? Comment traduire les propriétés partagés des WebPart dans la Toolpart ???



Rappel
Les propriétés des WP correspondent à des propriétés publiques qui ont été décorés avec les attributs WebBrowsable et consoeur du namespace System.ComponentModel et System.Web.UI.WebControls.WebParts
exemple :
[WebBrowsable(true)]
[Personalizable(PersonalizationScope.Shared)]
[WebDisplayName("ListName")]
[WebDescription("ListName")]
[Category("Configuration")]
public string ListName
{
get
{
return _listName;
}
set
{
_listName = value;
}
}
Il est vrai que comme ces arguments sont souvent des paramètres techniques genre : nombre de jour ou nom de la liste de référence, le développeur utilise le nom de la propriété (donc en US bien souvent)
D'ou la problématique : Comment gérer la traduction dynamique de ces attributs déclaratifs ???
Il y a une solution simple à vrai dire
>>> il suffit d'appliquer les techniques de ressources de SharePoint 2007 avec le SPUtility.GetLocalizedRessource sur une classe dérivant justement les attributs WebDisplayName,WebDescription et Category
(Vous me direz, rien de bien nouveau, il s'agit des basiques de l'héritage objet, je sais mais il fallait y penser )
En pratique, vous devez créer 3 classes dans le genre
[AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]
public class SPCategoryAttribute : System.ComponentModel.CategoryAttribute
{
public SPCategoryAttribute(string attribute) : base(attribute) { }
...
[AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]
public class SPWebDisplayNameAttribute : System.Web.UI.WebControls.WebParts.WebDisplayNameAttribute
{
private string _attribute;
public SPWebDisplayNameAttribute(string attribute)
{
_attribute = attribute;
}
...
[AttributeUsage(AttributeTargets.All, AllowMultiple = false, Inherited = true)]
public class SPWebDescriptionAttribute : System.Web.UI.WebControls.WebParts.WebDescriptionAttribute
{
private string _attribute;
public SPWebDescriptionAttribute(string attribute)
{
_attribute = attribute;
}
...
Mais plutôt que continuer avec plein de code (enfin une dizaine tout au plus), je vous conseille plutôt de profiter d'une classe de base contenant toute cette petite mécanique et pourquoi pas en profiter pour rajouter aussi un systéme de log
Non ?
Et pourquoi pas utiliser la classe de base pour WebPart fournir dans le projet SharePointOfView de Codeplex qui gére désormais toute cette problématique ?
Tout simplement. 
A bientôt
PS : bien le bonjour à l'équipe du SOV (SharePoint Of View) !
Renaud Comte aka TheMit (Je code donc je test, variant Dev de "Cogito ergo sum ")
Member of WygTeam
http://www.wygwam.com
J'ai souvent cette question qui revient par mail, par twitter, par MSN et même dans le train (véridique, ne sortait jamais un bouquin MOSS dans le train, on ne sait jamais si on ne tombe pas sur un codeur en face de soi) : Comment personnaliser la sécurité sous SharePoint ?
Bon, la question n'est point inintéressante mais un poil complexe : c'est un vaaaaste sujet vu la dimension de SharePoint
Soit :
- les comptes de services
- les méthodes d'accés
- les ACL
- Les méthodes de connexion
- la sécurité aux objets
- L'impersonnation
- ...
- ...
Difficile de tout couvrir mais pas de soucis ...
Pour les retardataires, j'avais fait une session couvrant TOUS ces sujets lors des Techdays 2008, donc, premier conseil, jetez un oeil au WebCast
[Microsoft TechDays 2008] - Manipulation et customisation de la sécurité dans Sharepoint
>>> autre session sur le monde Office & SP : http://www.microsoft.com/france/vision/mstechdays08/WebcastMSDN.aspx?EID=c73bf836-16ca-45fd-8db4-fdd637f7fbe1
Second conseil : surtout téléchargez la présentation, il y a des micros samples d'un peu près tout dedans.
Troisiéme conseil : téléchargez le set de demo de sécurité de Ted Pattison, vous aurez un lot de feature avec leur code pour monter en compétence.
Cependant, j'aimerais faire un petit Focus (salut Erwan & Jack) sur la gestion des droits et les utilisateurs. Le principe utilisé dans SharePoint est bien plus riche que l'on croit.
Il ne s'agit pas simplement de mettre des droits à des utilisateurs sur des listes, ce serait trop simple. Pour être exact, se serait trop restrictif d'où une architecture de droit plus réfléchi.
Il existe un superbe schéma qu'il est bon de connaître associé à un passionnant article dans le MSDN :
MSDN : Authorization Object Relations
Grâce à ce dessin, vous allez enfin comprendre le fonctionnement des interfaces de gestion des droits de SharePoint.
Pour résumer, les interfaces vous affichent une version tronqué de la réalité : On ajoute pas des utilisateurs à des groupes ou on leur donne des droits, pas du tout
Il faut bien discerner 4 choses :
- le Scope de droit
- les Assignations de sécurité : SPRoleAssignment
- les ACL SharePoint
- les USERS SharePoint
Soit en détail :
- On ne peut mettre des droits que sur 3 niveaux d'objets sous SharePoint 2007 : les Sites (SPWeb), les Lists (SPList), les Items (SPFolders,SPFile, SPListItem). Les 3 composantes de l'architecture logique d'une collection de site SharePoint
- Une assignation de sécurité est un couple d'information entre un USER SharePoint et un regroupement de permission (SPRoleDefinition) : on ne peut donc donner directement des droits à un utilisateur NT
- Une ACL correspond à des profils de droit voir des regroupements : SPRoleDefinition, ils servent d'abstraction. Par exemple, ce que tous les utilisateurs appellent le droit lecteur correspond sous SharePoint à un profil Lecteur dont les droits réels sont : voir les pages du site, voir les listes, voir les items de la liste.
- Un USER sous SharePoint peut exister sous plusieurs formes, on parle souvent de SPUser. Il est soit un user Landa ou un groupe d'utilisateur dans le Membership référence de votre Web Application. Je ne parle pas de NT, car SharePoint est dépendant d'un membership ASP.Net et non de l'Active Directory (Par défaut, MOSS utilise le membership NT mais ce n'est qu'une configuration pas une obligation).
Donc, il existe des SPUsers et des SPGroups, un SPGroup contient des SPusers (qui est soit des Users NT ou des Groupes NT si vous utilisez le membership NT)
>>> je sais, c'est un peu compliqué mais c'est la réalité !
Prenons un exemple réel pour mieux comprendre :
Vous voulez ajouter un utilisateur Martin comme auteur sur un site : 2 options
- Vous ajouter Martin au SPGroup "Membres du site XXX". En effet, ce SPGroup a été créé à l'initialisation du site et il existe une assignation de sécurité entre le profil de droit "Membre" qui contient les permissions d'ecriture/validation et ce SPGroup
- Vous ajouter Martin comme SPUser et vous créez une assignation entre ce SPuser et le profil de droit "Membre"
D'ou le fameux choix avec les radio buttons !!!
C'est plus clair non ?
>>> Vous devez certainement mieux comprendre pourquoi on retrouve toujours cet écran en gestion des droits...
En effet, lorsque l'on gère les sécurités sous SharePoint, on ne faire que de créer, modifier, voir supprimer des Assignations de sécurités sur une liste, ou un site, ou un item. Ni plus ni moins.

Ainsi, pour que les utilisateurs retrouvent leurs bon vieux réflexes d'ajout de droits "comme sous les dossiers de NT", Microsoft a introduit un micro workflow d'initialisation des site.
Un site SharePoint créé donc , automatiquement, à sa génération :
- 5 profils de droit (Lire", "Contribuer", "Accès total", "Design" et "Lecture seulement") avec les jeux de permissions idoines
- 3 SPGroups de gestion ("Lecteur du site", "Membres du site","Propriétaires du site")
- 3 assignations de sécurité entre les 3 précedents SPGroups et les 3 profils de droit ("Lire","Contribuer" et "Accès total")
- Place le créateur de site en tant que membre du SPGroup "Propriétaire du site"
La suite, vous la connaissez.
Si vous recherchez encore plus d'information, voir du code pour administrer les permissions, je pense que cet article saura vous combler:
Security Programming in SharePoint 2007
- External Security Principals and the SPUser Object
- Adding Authenticated and External Users
- Working with Permission Levels
- WSS Groups
- Identity, Elevation, and Impersonation
- Securable Objects
- Wrapping Up
Et même traduit en français : http://msdn.microsoft.com/fr-fr/magazine/cc163287.aspx
Mais qui as dit qu'il n'y avait rien en documentation sur SharePoint dans le MSDN
>>> Certainement pas moi !
Renaud Comte aka TheMit (Pour Lucas, hiphiphip

)
Member of WygTeam
http://www.wygwam.com
Bien souvent, en mode évangélisation SharePoint, je fait un petit écart sur la notion de sizing, de gestion de ferme, cluster et compagnie.
Eh oui, une architecture SharePoint peut représenter plus d'une machine, même bien bien plus.
Certes, il n'y a que 3 rôle de base entre Front End, Job et SQL mais ...
...
...
il y a aussi les notions très machine de continuité de performance, scalibilité, haute disponibilité,...

Tous ces termes bien spécifiques au monde du serveur et de la leur gestion. Des termes au centre de la problématique de la gouvernance réseau (ou "gestion du Chaos" pour les intimes)

Bon, certes, les développeurs me diront, "c'est pas notre problème, moi je code"
>>> Bon admettons, mais ceux qui évoluent (doucement) vers le monde SharePoint, savent qu'ils se doivent d'avoir une culture générale informatique un peu plus IT.
En effet, les choix de design, les méthodologies de dev peuvent influencer
Exemple : si chaque utilisateur peut stocker 2GB d'information par espace de travail et il y a 2000 utilisateurs dans le portail, on se retrouve finalement avec une collection de Sites de 4TB le tout dans une BDD de la même taille
Et la, le responsable IT et/ou le DBA voient leurs stress tout de suite prendre 2 points au CAC40 de l'ulcère.
Pour mieux faire passer le message, et surtout bien attirer l'attention des gens sur la problématique de la gouvernance IT dans le monde SharePoint, je leur rappelle la veille règle des 5 neufs.
Vous ne connaissez pas ????
Pas de soucis, mon Christian Hougardy de collègue, lui vrai archi IT, l'a posté il y a quelques temps avec force et détails :
Gouvernance et notions de performance au sein des systèmes d’information
Pour vous la faire en plus court, la règle des 5 neufs est la pour vous aider à vous représenter ce que peut coûter une architecture système qui vous garantit la disponibilité de vos serveurs pendant, 99 , 99.9, ... , 99.9999 % du temps.
Ce qui correspond au demande type de SLA d'utilisation d'un portail. Avec cette règle, vous verrez que les gens qui vous demande un système hautement disponible vont réviser leur jugement selon leur budget et/ou leur besoin
Soit le tableau suivant : il représente le % d' indisponibilité (le dowtime) par an
Plus vous augmentez le nombre de 9, plus la redondance de machine, la maintenance, le suivi humain, les méthodologies, le choix hardware, deviennent importants; les coûts inhérents aussi d'ailleurs...
Soit des fermes de plus de 12 machines avec 4-5 personnes qui s'en occupent juste pour être "sur" que le système SharePoint est UP tout les matins à 8h.
A méditer
A relire pour les détails : Gouvernance et notions de performance au sein des systèmes d’information
Bonne surveillance active
Renaud Comte aka TheMit (SPEmpêcheur d'architecturer au calme)
Member of WygTeam
http://www.wygwam.com
Il existait sur GotDotNet un petit outil bien pratique : Le MossQueryTool.exe écrit par Steve Peschka. Celui ci à évoluer doucement et est devenue
http://www.codeplex.com/SharePointSearchServ
Forcement, l'outil est compagnon idéal pour le développement de composant de recherche personnalisé.
Mais il reste un poil spartiate, surtout qu'il faut en plus gérer ensuite la concaténation et tout le système dynamique.
Je vous parle de tout ça car après une longue période de déplacement, mission et autre plaisir professionnel, j'ai pu me remettre un peu à mon atelier découverte préféré : sous entendu, parcourir Codeplex et découvrir, m'enroler et tester un peu tout.
Et bien, j'ai pu trouver un nouvel outil pour remplacer ce cher MossQueryTool
Le SearchCoder
Clairement, l'outil a été inspiré grandement par le premier mais avec une phylosophie bien plus développeur
>>> En effet, il se base sur une classe intermédiaire : MOSSSQLSearch
Le principe est de ne pas à créer une longue requête SQL en texte mais de générer un code métier qui décrit la recherche.
>>> Donc plus facile à maintenir, faire évoluer et surtout à intégrer à tout moteur dynamique. Genre formulaire avancé où l'on précise des champs optionnels de recherche comme des filtre par exemple
Bonus, on n'a pas à gérer de problème de concaténation, de typage et compagnie.
On obtient un code dans ce style :
==> l'outil lui, génére tout simplement ce code au lieu du SQL ou vice et versa si besoin
Pour plus de détail, je vous renvoie sur les liens du projet
Bonne recherche/dev à tous
Renaud Comte aka TheMit (SPStarAc des nouveaux projets)
Member of WygTeam
http://www.wygwam.com
En pleine rédaction passionné et passionnante, j'ai du subir un bug mais vraiment pénible
>>> Le copier coller ne fonctionnait plus, mais plus du tout : d'ou énervement, stress et divers conséquence capillaire.
Hum hum, des lors comment reprendre mes notes ou coller mes captures d'écran de ma VPC ?
Et je ne vous parle pas du reboot de la machine pour le récupérer.
...
...
Après analyse et diverses googleries, j'ai pu identifier le fautif !
>>>Le soucis provenait d'un conflit entre la VPC et le Clipboard quand aléatoirement mais fréquemment, je prenais des captures de ma VPC
Voici les posts qui on su m'indiquer la solution
En résumé, le problème peut arriver entre le clipboard avec soit un module de terminal services et/ou les Virtual Machine Addition
Je n'ai pas trouver actuellement de correctifs (je recherche encore) mais il y a un fix rapide pour remettre en place le Clipboard
Il vous suffit de copier un bout de texte dans votre machine physique, n'importe quoi puis de la coller dans la VPC, n'importe ou MAIS via l'interface VPC et non les raccourci
Soit :

Eh la, plus de soucis 
Remarque, je n'utilise pas d'outils tiers ou exotique pour faire les captures d'écran, j'utilise le simple outil capture de Vista
Renaud Comte aka TheMit (SPecrivain 7/7)
Member of WygTeam
http://www.wygwam.com
En lisant, codant de petits bouts de code et validant quelques fonctionnalités avec les Web Services, je me suis rappellé le bonheur du XML de retour de ces chers ASMX : http://www.developer.com/tech/article.php/3104621
A vrai dire, il existe différentes écoles :
1) les Pro XML
>>> genre : puriste de XPath
N'oubliez pas de rajouter les namespace SharePoint pour pouvoir faire vos requêtes
private XmlNodeList RunXPathQuery(XmlNode XmlNodeToQuery, string
XPathQuery)
{
// load the complete XML node and all its child nodes into a XML document
XmlDocument Document = new XmlDocument();
Document.LoadXml(XmlNodeToQuery.OuterXml);
// all the possible namespaces used by SharePoint and a randomly choosen
prefix
const string SharePointNamespacePrefix = "sp";
const string SharePointNamespaceURI =
"http://schemas.microsoft.com/sharepoint/soap/";
const string ListItemsNamespacePrefix = "z";
const string ListItemsNamespaceURI = "#RowsetSchema";
const string PictureLibrariesNamespacePrefix = "y";
const string PictureLibrariesNamespaceURI =
"http://schemas.microsoft.com/sharepoint/soap/ois/";
const string WebPartsNamespacePrefix = "w";
const string WebPartsNamespaceURI =
"http://schemas.microsoft.com/WebPart/v2";
const string DirectoryNamespacePrefix = "d";
const string DirectoryNamespaceURI =
"http://schemas.microsoft.com/sharepoint/soap/directory/";
// now associate with the xmlns namespaces (part of all XML nodes returned
// from SharePoint) a namespace prefix which we can then use in the queries
XmlNamespaceManager NamespaceMngr = new
XmlNamespaceManager(Document.NameTable);
NamespaceMngr.AddNamespace(SharePointNamespacePrefix,
SharePointNamespaceURI);
NamespaceMngr.AddNamespace(ListItemsNamespacePrefix,
ListItemsNamespaceURI);
NamespaceMngr.AddNamespace(PictureLibrariesNamespacePrefix,
PictureLibrariesNamespaceURI);
NamespaceMngr.AddNamespace(WebPartsNamespacePrefix, WebPartsNamespaceURI);
NamespaceMngr.AddNamespace(DirectoryNamespacePrefix,
DirectoryNamespaceURI);
// run the XPath query and return the result nodes
return Document.SelectNodes(XPathQuery, NamespaceMngr);
}
http://www.csharphelp.com/archives4/archive602.html
2) Les PRO objet
>>> genre : une classe typé por favor
Merci le XDS.exe et l'XMLSerialiser
http://blogs.developpeur.org/themit/archive/2005/04/15/6012.aspx
http://www.peterverster.co.uk/blog/2007/02/07/Programming+MOSS+WSS+V3+Web+Service+API+Part+1.aspx
3) les PRO .Net advance
>>> genre : les generics ou rien
ListItems<MACLASSEListItem> results = null;
XmlNode resultItems = listSvc.GetListItems(listGuid, string.Empty, null, null, string.Empty, null);
Console.WriteLine(resultItems.OuterXml);
results = ListItems<MACLASSEListItem>.FromXml(resultItems.OuterXml);
foreach MACLASSEListItem MAC in results.RowData.ListItems)
{...}
http://blogs.developpeur.org/themit/archive/2008/03/25/sharepoint-et-l-appel-des-web-service-pourquoi-pas-un-peu-de-generics-serialization.aspx
4) Le developpeur landa
>>> genre : je veux juster binder ma liste s i m p l e m e n t !!! (et je le comprends bien)
Dites donc merci au DataSet et sa méthode ReadXml 
sharepointservices.Lists sharepointLists = new sharepointservices.Lists();
sharepointLists.Credentials = new System.Net.NetworkCredential(username, password);
XmlNode node = sharepointLists.GetListItems(listname,string.Empty,null,null,string.Empty,null);
XmlTextReader xmlTextReader = new XmlTextReader(node.OuterXml, XmlNodeType.Element, null);
DataSet dataSet = new DataSet();
dataSet.ReadXml (xmlTextReader);
http://blogs.officezealot.com/mauro/archive/2008/05/17/21034.aspx
5) le mix du tout
>>> Eh oui, toutes les méthodes se valent après tout mais elles ont toutes des impactes en termes de complexité ou de charge. A vous de bien pondérer dans vos choix. (ce lien peut vous aiguiller : http://weblogs.asp.net/paulballard/archive/2005/05/08/406197.aspx)
Renaud Comte aka TheMit (SPeut le plus, code le moins )
Member of WygTeam
http://www.wygwam.com
Les gens les demandent souvent mais nous ne pouvons pas redistribuer nos VPCs de formation, démo ou de projet. Tel est le plan de licence de l'éditeur.
Ce n'est pas bloquant mais un peu gênant, du moins si il y avait une alternative :

La voici, depuis la semaine dernière, Microsoft a mis en ligne un VHD préconfiguré avec
- Windows SharePoint Services 3.0 SP1
- Visual Studio 2005
- Visual Studio 2005 extensions for Windows SharePoint Services 3.0, v1.1
Attention elles sont à durée limité : 30 September 2008
Windows SharePoint Services 3.0 SP1 Developer Evaluation VPC Image
Pour les curieux qui préfèrent plus s'initier à MOSS, voici sa version préconfiguré :
Microsoft Office SharePoint Server 2007 VHD (attention, 4095.7 MB)
Je ne saurais trop vous conseiller de rajouter aussi le SDK ainsi que le STSDEV et le WSPBuilder extensions
De jolies machines à utiliser pour tester les nouveaux WebCast de Microsoft sur le Dev SharePoint :
SharePoint Developer MSDN Web Cast Series
Bon download et bon dev
Renaud Comte aka TheMit (SPCodeur mais sous VPC)
Member of WygTeam
http://www.wygwam.com
Attention, ce post d'humour est particulièrement non politiquement correct mais tellement bon !
Si bien souvent vous recevez des mails, des MSN, des twitters, des relances pour un coup de main sur une question de base, n'hésitez pas, renvoyer vers la meilleur URL du monde :

Rah lovely
PS : cette page n'est pas un joke, il y a même une technique de renvoi vers Google 
Genre http://www.justfuckinggoogleit.com/search.pl?query=SharePoint+architecture+logique
Que du bonheur
Renaud Comte aka TheMit (SPrigolo à ces heures)
Member of WygTeam
http://www.wygwam.com
Le genre de soucis vraiment pas sympathique quand vous déployez vos applications.
Votre application sous SharePoint se met en erreur de manière épisodique car il ne trouve pas des types d'objet genre
- "The type specified in the TypeName property of ObjectDataSource '*******' could not be found."
- "Could not load type "******""
Alors que 10 minutes / secondes avant, tout fonctionnait très bien
Ou sinon, même si votre le fichier asmx de votre Web Service personnel est dans le GAC, l'appel du Web Service vous donne un beau "File not found"
Une solution simple :
Pensez à modifier votre Web.config afin d'ajouter vos DLL au processus de compilation de votre site
http://msdn2.microsoft.com/fr-fr/library/bfyb45k1.aspx
Genre

(source http://www.sharepointblogs.com/nrdev/archive/2006/12/29/tip-dll-in-gac-but-cannot-be-accessed-through-sharepoint-site-quot-could-not-load-type-quot-try-this-fix.aspx)
Tout simplement
[Pour aller plus loin]
>>> Et histoire d'avoir un Best Practice complet, pensez à rajoutez à votre solution une feature niveau WebApplication avec un receiver qui assurera la modification du Web.config (SPWebConfigModification) automatiquement. Ainsi vos installations ne seront que plus discrètes, directe et maintenable
Genre : How To Modify the web.config file in SharePoint using SPWebConfigModification - Mark Wagner
Ps : Post écrit au début depuis un Airbus au dessus de l'Atlantique et fini dans un hotel de l'Aisne 
Renaud Comte aka TheMit (SPDebug)
Member of WygTeam
http://www.wygwam.com
Voici un sujet qui est vraiment d'actualité !
En ces temps ou :
- on annonce 100 millions de licence SharePoint vendus
- que de plus en plus de ferme WSS et MOSS sont configurés
- que le stockage documentaire augmente
- que les chasseurs de têtes cherchent désormais du profil IT SharePoint
il devient temps de parler de maintenance SQL.
Évidemment, ce genre de post serait plus naturel si j'étais quelqu'un de plus IT/DBA comme Christian ou Fabrice, mais après quelque recherche, j'ai pu trouver un très bon document :
Database Maintenance for Microsoft SharePoint Products and Technologies
Je le poste car il s'agit d'un domaine que bien souvent, et malheureusement, que les intégrateurs/développeurs SharePoint ignorent ou minorent un peu trop.
Tout le back-office de données est géré uniquement via ses bases de contenu (et sa base de config). Le Serveur SQL se doit être particulièrement suivi et optimisé.
Ah les problèmes de place disque, d'index congestionné, de log gargantuesque, j'en passe et des meilleurs.
Ce document la, est très bon car il provient vraiment de personne d' expérience ayant certainement vécu le pire et le meilleur sous SharePoint.
Ainsi vous découvrirez lors de sa lecture :
- les joies du contrôle d'intégrité avec le DBCC en ligne de commande
- les problèmes de fragmentation des bases et sys.dm_db_index_physical_stats
- mesure de la fragmentation
- réduction de celle ci (et le batch associé)
- la différence entre la base et les index de celle ci
- la différence entre la place utilisé et la place occupé : merci le Shrink
- La création d'un vrai plan de maintenance
- Contrôle de l'intégrité des bases
- réorganisation des indexes,
- shrink des bases
- et bien sur, tout nettoyer à la fin.
- la gourmandise en performance des opérations de maintenance (n'attendez pas que votre DB fasse 500 GB pour réagir ...)
- ne pas automatiser le Shrink : ne le faire que si besoin ! ou sous condition
- surveiller les opérations de "mouvement" de données important sous SharePoint
- genre déplacement/migration de collection
- suppression de site ou de profile utilisateur
Bonne lecture (si si vraiment, même si vous êtes un Dev, ce ne sera pas une perte de temps !!!!).
PS : Cher IT SharePoint, n'hésitez pas à compléter avec vos liens et remarques
Renaud Comte aka TheMit (promis je retourne au dev rapidemment !!!)
Member of WygTeam
http://www.wygwam.com
Il y a des développeurs qui recherche toute leur vie un minimum de reconnaissance.
Mais des fois, il suffit juste d'utiliser la technologie la plus "love"
Video: ODC2008 Developer Guy Il faut bien sur prendre le tout au Second degrée mais si vous êtes un codeur, un pur et respectable, laissez vous allez et donnez donc une chance à la plateforme Office
Vous risquez d'être agréablement surpris. 
Renaud Comte aka TheMit (critique micro cinéma)
Member of WygTeam
http://www.wygwam.com
-- Post semi ironique à prendre au second degrée (quoi que) --
Rentrant du Compagny Store de Microsoft avec Fabrice Romelard (aspirant SharePoint confirmé
), nous discutions à bâton rompu de :
- nos achats pro XBox comme
- les jeux XBox
- Les manettes
- la télécommande
- les accessoires du Zune V2
- la problématique du changement et des migrations SharePoint
Bien, en ouvrant le CD de la bande son original de HALO 3, je suis tombé sur une phrase d'un des terminaux Forerunn