1 / 14

Smart Client Software Factory

Smart Client Software Factory. DotNetHub 04/09/2010 Vincent Goossens vincent.goossens@synthetis.com. Plan de la session 1/2. Problématique des développements en équipe règles de développement architecture commune coopération entre les modules spécification des fonctionnalités

elia
Télécharger la présentation

Smart Client Software Factory

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Smart Client Software Factory DotNetHub04/09/2010 Vincent Goossens vincent.goossens@synthetis.com Smart Client Software Factory

  2. Plan de la session 1/2 • Problématique des développements en équipe • règles de développement • architecture commune • coopération entre les modules • spécification des fonctionnalités • tests avant implémentation • Smart Client Software Factory (SCSF) • Solution pour le développement en équipe • Isolation des modules/fonctionnalités par l’usage systématique des interfaces • Réutilisation des modules • CAB (composite application block) • Guidance automation • Intégration dans Visual Studio 2008 Smart Client Software Factory

  3. Plan de la session 2/2 • Patterns utilisés dans SCSF • Command • Dependency Injection / Inversion Of Control (IoC) • Model View Presenter (MVP) • Architecture de SCSF • Module • WorkItem • Profile catalog • Shell • UI extension sites • State /Command / Event / Action • Références • Démonstration par un exemplepratique Smart Client Software Factory

  4. 1. Problématique des développements en équipe Règles de développementImplémenter et structurer le code de manière uniforme Architecture communeLes modules/fonctionnalités développées doivent s’intégrer dans une architecture commune Coopération entre les modulesLes modules doivent coopérer, s’échanger des données et peuvent dépendre l’un de l’autre Spécification des fonctionnalitésDéfinir précisément les fonctions d’un module Tests avant implémentationTester un module alors que les autres dont il dépend ne sont pas encore disponibles Smart Client Software Factory

  5. 2. Smart Client Software Factory1/2 Solution pour le développement en équipeStructure du code, implémentation des interfaces utilisateur, implémentations des services et architecture sont « imposés » Isolation des modules/fonctionnalités par l’usage systématique des interfacesChaque module fournit les interfaces qui sont les contrats remplis par les services qu’il contient Réutilisation des modulesComme l’architecture est fixée, un module peut être très facilement réutilisé dans d’autres applications. Smart Client Software Factory

  6. 2. Smart Client Software Factory 2/2 CAB (Composite Application Block)Block applicatif développé par Microsoft (Microsoft's patterns & practices) destiné à la création d’applications riches avec des interfaces utilisateur faiblement couplés (pattern Model-View-Presenter) Guidance automationAutomatise et systématise la production de code (modules, services, vues, évènements, …) Intégration dans Visual Studio 2008Guidance automation étend les capacités de Visual Studio à produire du code « CAB » qui s’intègre dans l’architecture Projet/Solution de Visual Studio Smart Client Software Factory

  7. 3. Patterns utilisés dans SCSF Command pattern Encapsule une requête dans un objet. Les menus invoquent l’exécutions de commandes sans se soucier des actions à effectuer Dependency injection pattern (IoC)Le consommateur d’un service exprime son besoin mais ne sait/veut pas créer l’instance du service. Un moteur d’injection se charge de faire le lien entre fournisseur de service et consommateur(s) Model-View-PresenterLa vue (View) est indépendante du modèle de données (Model). Le Presenter présente les données à la vue sous une forme qui convient à celle-ci mais sans connaissance de la manière dont elle va afficher ces données. Smart Client Software Factory

  8. 4. Architecture SCSF 1/5 Module • Entité qui implémente une fonctionnalité et qui est chargée par le noyau SCSF au moment du démarrage. • En général, 1 module = 2 assemblies (implémentation et interface) Workitem • Conteneur des classes qui participent à l’injection de dépendance • Organisation hiérachique Profile catalog • Fichier XML qui organise le chargement des modules Smart Client Software Factory

  9. 4. Architecture SCSF 2/5 Shell • Application de base (shell.exe) qui définit le layout de l’application (barre de menu, barre d’outils, zones de vues) UI Extension Sites • Points d’extension de l’interface utilisateur qui permettent l’ajout de menus, boutons d’outils, etc… State • Etat d’un workitem qui peut être partagé entre les vues et les workitems descendants (! Pas typé) [StateChanged("MyProperty", ThreadOption.Background)] public void MyProperty_StateChanged(object sender, StateChangedEventArgsargs) { // handle state change }[State("MyProperty")] public string MyChildProperty {get;set;} Smart Client Software Factory

  10. 4. Architecture SCSF 3/5 Command • Utilisé pour déclencher des évènements sur base d’actions sur les UI Extension Sites (p.ex. menu click) ToolStripMenuItemtoolStripTools = newToolStripMenuItem(“Outils"); MainMenuSite.Add(toolStripTools); this.WorkItem.Commands[CommandNames.ViewTools].AddInvoker(toolStripTools,"Click");[CommandHandler(CommandNames.ViewTools)] publicvoidViewTools(object sender, EventArgs e) { } • Plusieurs « command handlers » peuvent être invoqués Smart Client Software Factory

  11. 4. Architecture SCSF 4/5 • EventEvènement paramétré intra et inter-module//Publisher[EventPublication(EventTopicNames.EventName,PublicationScope.Global)]publiceventEventHandler<MyEventArgs> MyEvent; //Subscriber [EventSubscription(EventTopicNames.EventName, ThreadOption.Publisher)]publicvoidOnEvent(object sender, MyEventArgseventArgs){…} Smart Client Software Factory

  12. 4. Architecture SCSF 5/5 • ActionEvènement conditionnel. Un module déclenche une action. Tous les modules ont la possibilité de refuser l’action.//Action trigger IActionCatalogServiceactionCatalog = RootWorkItem.Services.Get<IActionCatalogService>(); actionCatalog.Execute(ActionNames.MyAction, RootWorkItem, this, newActionArgs()); //Action execution [Action(ActionNames.MyAction)] public voidDoMyAction(object caller, objecttarget) { } //Action condition IActionCatalogServicecatalog = WorkItem.Services.Get<IActionCatalogService>(); catalog.RegisterGeneralCondition(…(IActionCondition)this); catalog.RegisterSpecificCondition(ActionNames.MyAction, …(IActionCondition)this); ! SCSF ne crée pas la fonctionnalité d’Action par défaut. Ajouter le code suivant dans ShellApplication.cs: protectedoverridevoidAddBuilderStrategies(Microsoft.Practices.ObjectBuilder.Builder builder) {base.AddBuilderStrategies(builder);builder.Strategies.AddNew<ActionStrategy>(Microsoft.Practices.ObjectBuilder.BuilderStage.Initialization); } Smart Client Software Factory

  13. 5. Références • Programming Microsoft Composite UI Application Block and Smart Client Software Factory, David Platt, Microsoft Press, 2007.http://www.microsoft.com/MSPress/books/11030.aspx • Architecting Composite Smart Clients Using CAB and SCSFhttp://msdn2.microsoft.com/en-us/library/bb266334.a • Microsoft patterns & practices - Smart Client Guidancehttp://smartclient.codeplex.com/ • Introduction to CAB/SCSFhttp://richnewman.wordpress.com/intro-to-cab-toc/ • Prism (SCSF for WPF, VS2010)http://www.pnpguidance.net/Post/PrismWebcastsScreencastsCreateApplicationUsingPrism.aspx Smart Client Software Factory

  14. 6. Demo • Composants à installer (pour VS2008 SP1) • GuidanceAutomationExtensions.msi (http://www.microsoft.com/downloads/details.aspx?FamilyId=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&displaylang=en) • gaxp1409.exe (http://www.microsoft.com/downloads/details.aspx?FamilyID=E28205C6-BB07-401B-9A76-804784598BF0&amp;displaylang=en&displaylang=en) • Smart Client Software Factory - April 2008 fixed for SP1.msi http://artazor.wordpress.com/2008/12/07/scsf-april-2008-fix-for-visual-studio-2008-sp1/ Smart Client Software Factory

More Related