Contenu coréalisé avec Florent Santin
Un bref rappel Scénarios sans concurrence d’accè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 d’activités qui coordonnent des personnes et/ou des logiciels… ValidationResponsable Exemples : ValidationInventaire Diagramme de flux …en définissant un chemin d’exécution Automate à états
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
Processus hôte Workflow Foundation Runtime Un Workflow Une Activité Services Points d’extensibilité Activités de base Vos activités
Processus hôte Workflow Foundation Runtime Services
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…) TrackingEtc.
Les services se déclarent à l’initialisation 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 d’un WF En sortie d’activité
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 ?
Contrats et gestion d’état L’activation initiale est stateless Les appels ultérieurs font référence à une instance Le contrat de communication WF ne comporte pas de notion d’instance Deux approches pour véhiculer l’ID d’instance Approche du wizard WS : cookie Approche plus générale : encapsuler les contrats
Le cas idéal : workflow sans concurrence Enchaînement d’actions atomiques dans un automate à états finis Exemple : 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 unique Par le service de persistance sinon
C’est la sérialisation binaire.Net Attention au contenu de vos instances Attention aux performances CPU : complexité de la sérialisation Disque : 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 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 d’accéder à une instance Mécanisme de verrou sur chargement
WCF a de bonnes qualités de communication, dans quel processus l’installer ? 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 d’instance 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 d’activation asynchrone Votre 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
MOSS Fournit toute la structure d’hé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 d’un service précis de persistance
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 Abonnement MSDN Premium Abonnement TechNet Plus : Versions d’éval + 2 incidents support
© 2007 Microsoft France Votre potentiel, notre passion TM
Création du Host WCF, ajout de la dll du WF, Passage sur persistance SQL Définition d’un contrat Client-Host Récupération de la liste des instances pour redémarrage Gestion de la concurrence Message : avec un seul host, si qqun se pointe vers l’instance 21, c’est le runtime qui gère ça
Pépins de threading Pépins e
Utiliser la font SEGOE Disponible sur Si nécessaire, utiliser les palettes de couleurs ci-dessous
Participants : utilisateurs, rôles Type : flexible, dynamique Données : peu structurées Participants : utilisateurs, rôles Type : flexible, dynamique Données : peu structurées Participants : applications Type : processus prédéfini Données : structurées, transactionnelles Information Worker Validation de document… Information Worker Validation de document… Technique Humain Windows Workflow Foundation Business to Business Commandes Business to Business Commandes Applications Line of Business B2B, ventes… Applications Line of Business B2B, ventes… CRM ERP Applications internes Demande de support, achats… Applications internes Demande de support, achats… Développement.NET Coordination… Développement.NET Coordination…