Cette session suppose une connaissance préalable des grands principes de Workflow Foundation Nous parlerons très peu de lécriture de workflows Une session dintroduction est programmée en salle 253 … il est encore temps de changer davis !
Un bref rappel Scénarios sans concurrence daccès Hosting embarqué (mono-host) Hosting embarqué (multi-host) Gestion de la concurrence Hosting centralisé Robustesse, montée en charge Hosting réparti dans IIS Les solutions pré-packagées Le wizard Web Services / MOSS Conclusion
Un Workflow est un ensemble dactivités qui coordonnent des personnes et/ou des logiciels… ValidationResponsable Exemples : ValidationInventaire Diagramme de flux …en définissant un chemin dexécution Automate à états
Un framework applicatif permettant lintégration et le développement de Workflow. Cest également un modèle de programmation extensible Il nécessite le framework 3.0 et Visual Studio 2005 pour tirer pleinement parti des fonctionnalités offertes Proposer une plate-forme sur laquelle tout lécosystème Microsoft puisse sappuyer
Processus hôte Workflow Foundation Runtime Un Workflow Une Activité Services Points dextensibilité Activités de base Vos activités
Processus hôte Workflow Foundation Runtime Services
Permet léchange dinformations entre les applications hôtes et le moteur de Workflow Communication Gestion des threads Scheduling Permet denregistrer létat du Workflow dans un référentiel (base de données…) Persistance Permet de conserver une trace des étapes dexécution dun Workflow dans un référentiel (base de données…) TrackingEtc.
Les services se déclarent à linitialisation du runtime, en impératif ….. ou en déclaratif
Sérialise et stocke des instances de WF Une implémentation en standard Sql Server Quand est-il invoqué ? Par défaut : rarement (Tx/Comp, Terminate/suspend, demande explicite) Par configuration : à chaque Idle A quelle(s) étape(s) peut-on persister ? A certains moments-clés de la vie dun WF En sortie dactivité
Quel que soit ce host (Web Service, Executable, Sharepoint, ….) : Comment gérer les communications entre le client et le host ? Comment gérer la concurrence daccès entre le host et les clients ? Comment gérer la montée en charge ?
Contrats et gestion détat Lactivation initiale est stateless Les appels ultérieurs font référence à une instance Le contrat de communication WF ne comporte pas de notion dinstance Deux approches pour véhiculer lID dinstance Approche du wizard WS : cookie Approche plus générale : encapsuler les contrats
Le cas idéal : workflow sans concurrence Enchaînement dactions atomiques dans un automate à états finis Exemple : routage dun utilisateur sur un automate daccueil téléphonique Le reste du temps, la concurrence est gérée Par le Host (via le runtime) sil est unique Par le service de persistance sinon
Cest la sérialisation binaire.Net Attention au contenu de vos instances Attention aux performances CPU : complexité de la sérialisation Disque : volume dune instance sérialisée Les données persistées sont opaques (pas de requêtage en base) On double souvent le service par une persistance métier (dans les instances) Soit par personnalisation du service de Tracking Soit à la main !
Lorsque la charge augmente, on doit Monter les hosts en ferme Monter la base en cluster Deux nouvelles situations à traiter : Un host peut tomber avec N instances en mémoire Mécanisme de détection des instances en perdition N hosts peuvent tenter daccéder à une instance Mécanisme de verrou sur chargement
WCF a de bonnes qualités de communication, dans quel processus linstaller ? Dans COM+ Dans un service Windows Dans IIS IIS est très intéressant Monitoring, relance, protection contre le crash, … Modèle de WebGarden Déploiement très simple Seule limite : http only.. Pour le moment
IIS 2IIS x IIS 1 Workflow Runtime 1 Host 1 SQL Persistence Service Workflow Runtime 2 Host 2 SQL Persistence Service Workflow Runtime 3 Host 3 SQL Persistence Service Workflow Runtime N Host N SQL Persistence Service
Threads dinstance Le runtime de WF ne crée jamais de thread, et compte sur un service de scheduling pour lui en fournir Par défaut, le scheduler prend dans un threadpool, mais dans ASP.Net on risque une famine de threads Le ManualWorkflowSchedulerService « emprunte » le thread courant Thread dactivation asynchrone Votre code ne peut pas fournir de thread lorsquaucune page ne sexécute.. Le ManualWorkflowSchedulerService peut créer un thread de background destiné à faire tourner les instances indépendamment des pages
MOSS Fournit toute la structure dhébergement Comporte des designers spécialisés Tourné vers des scénarios métier précis Web Services Wizard Impose ses propres activités de communication Gère toute la communication Masque les problèmes de threading et timers Indépendant dun service précis de persistance
Sinformer - Un portail dinformations, des événements, une newsletter bimensuelle personnalisée Se former - Des webcasts, des articles techniques, des téléchargements, des forums pour échanger avec vos pairs Bénéficier de services - Des cursus de formations et de certifications, des offres de support technique Visual Studio Abonnement MSDN Premium Abonnement TechNet Plus : Versions déval + 2 incidents support
© 2007 Microsoft France Votre potentiel, notre passion TM