Héberger un Workflow avec Windows Workflow Foundation
Pierre Couzy, architecte – Microsoft [email protected]
Florent Santin, consultant – Winwise [email protected]
Avant de commencer…
Cette session suppose une connaissance préalable des grands principes de Workflow FoundationNous parlerons très peu de l’écriture de workflowsUne session d’introduction est programmée en salle 253… il est encore temps de changer d’avis !
Agenda
Un bref rappelScénarios sans concurrence d’accès
Hosting embarqué (mono-host)Hosting embarqué (multi-host)
Gestion de la concurrenceHosting centralisé
Robustesse, montée en chargeHosting réparti dans IIS
Les solutions pré-packagéesLe wizard Web Services / MOSS
Conclusion
Un bref rappel
Un Workflow est un ensemble d’activités qui coordonnent des personnes et/ou des logiciels…
ValidationResponsableExemples : ValidationInventaire
Diagramme de flux
…en définissant un chemin d’exécution
Automate à états
Buts de conception & prérequis
Un framework applicatif permettant l’intégration et le développement de Workflow.
C’est é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
s’appuyer
Architecture technique
Processus hôte
Workflow Foundation
Runtime
Un Workflow
Une Activité
ServicesPoints d’extensibilité
Activités de base
Vos activités
Cette session parle de …
Processus hôte
Workflow Foundation
Runtime
Services
Les services de Workflow Foundation
•Permet l’échange d’informations entre les applications hôtes et le moteur de Workflow
Communication
•Gestion des threads
Scheduling
•Permet d’enregistrer l’état du Workflow dans un référentiel (base de données…)
Persistance
•Permet de conserver une trace des étapes d’exécution d’un Workflow dans un référentiel (base de données…)
Tracking Etc.
Hosting embarqué (mono-host)
Introduction de la notion de service, distinction WF / Host
Réalisation d’un client stand-alone (Host embarqué) Winform
Démo
Comment ajouter des services ?
Les services se déclarent à l’initialisation du runtime, en impératif …
.. ou en déclaratif
Le service de persistance
Sérialise et stocke des instances de WFUne 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 d’un WFEn sortie d’activité
Hosting embarqué (multi-host)
Présentation du service de persistance
Chargement d’une même instance de Workflow par 2 hosts successifs
Démo
Utilisation d’un Host central
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 d’accès entre le host et les clients ?Comment gérer la montée en charge ?
Gestion des communications
Contrats et gestion d’étatL’activation initiale est statelessLes appels ultérieurs font référence à une instanceLe contrat de communication WF ne comporte pas de notion d’instance
Deux approches pour véhiculer l’ID d’instance
Approche du wizard WS : cookieApproche plus générale : encapsuler les contrats
Gestion de la concurrence
Le cas idéal : workflow sans concurrence
Enchaînement d’actions atomiques dans un automate à états finisExemple : routage d’un utilisateur sur un automate d’accueil téléphonique
Le reste du temps, la concurrence est gérée
Par le Host (via le runtime) s’il est uniquePar le service de persistance sinon
Host Centralisé
Hébergement par WCF
Persistance & performance
Démo
Un retour sur la persistance
C’est la sérialisation binaire .NetAttention au contenu de vos instances
Attention aux performancesCPU : complexité de la sérialisationDisque : volume d’une 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 TrackingSoit à la main !
Robustesse, montée en charge
Lorsque la charge augmente, on doitMonter les hosts en fermeMonter 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 d’accéder à une instance
Mécanisme de verrou sur chargement
Comment monter une ferme WF ?
WCF a de bonnes qualités de communication, dans quel processus l’installer ?
Dans COM+Dans un service WindowsDans IIS
IIS est très intéressantMonitoring, relance, protection contre le crash, … Modèle de WebGardenDéploiement très simple
Seule limite : http only.. Pour le moment
IIS 2 IIS xIIS 1
Hébergement en ferme
WorkflowRuntime 1
Host 1
SQL
SQLPersistenceService
WorkflowRuntime 2
Host 2
SQLPersistenceService
WorkflowRuntime 3
Host 3
SQLPersistenceService
WorkflowRuntime N
Host N
SQLPersistenceService
Les spécificités d’IIS
Threads d’instanceLe runtime de WF ne crée jamais de thread, et compte sur un service de scheduling pour lui en fournirPar défaut, le scheduler prend dans un threadpool, mais dans ASP.Net on risque une famine de threadsLe ManualWorkflowSchedulerService « emprunte » le thread courant
Thread d’activation asynchroneVotre code ne peut pas fournir de thread lorsqu’aucune page ne s’exécute..Le ManualWorkflowSchedulerService peut créer un thread de background destiné à faire tourner les instances indépendamment des pages
Hosting dans IIS
Monter le runtime dans IISGestion des threadsGestion des timers
Démo
Les solutions pré-packagées
MOSSFournit toute la structure d’hébergementComporte des designers spécialisésTourné vers des scénarios métier précis
Web Services WizardImpose ses propres activités de communicationGère toute la communication Masque les problèmes de threading et timersIndépendant d’un service précis de persistance
Hosting dans IIS via les wizards
Refactorisation des workflowsAppel de l’assistant
Démo
Autres sessions TechDays
La référence technique
pour les IT Pros :technet.microsoft.com
La référence techniquepour les développeurs :msdn.microsoft.com
S’informer - Un portail d’informations, 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 2005 +
Abonnement MSDN Premium
Abonnement TechNet Plus :
Versions d’éval + 2 incidents support
© 2007 Microsoft France
Votre potentiel, notre passion TM
Top Related