1 / 43

Industrialiser le développement avec Silverlight 4 et RIA Services

Industrialiser le développement avec Silverlight 4 et RIA Services. Mercred i 9 Février Jean-Luc Boucho Architecte Solutions Winwise. Arnaud Auroux Consultant Access it IDF. L’expert de référence !. Société d’expertise sur les technologies Microsoft

obert
Download Presentation

Industrialiser le développement avec Silverlight 4 et RIA Services

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. Industrialiser le développement avec Silverlight 4 et RIA Services Mercredi 9 Février Jean-Luc Boucho Architecte Solutions Winwise Arnaud Auroux Consultant Access it IDF

  2. L’expert de référence ! • Société d’expertise sur les technologies Microsoft • Partenaire historique et stratégique de Microsoft • Plus de 90 collaborateurs certifiés interviennent sur des missions à forte valeur ajoutée : • Missions d’expertise • Conseil & Audit • Réalisation de projets à engagement de résultats • Une offre couvrant l’ensemble du cycle de vie des applications : • Travail collaboratif, portail d’entreprise et Workflow • Business Intelligence & Data Management • Interfaces utilisateurs, Rich Internet Application & desktop application • Architecture d’entreprise et Architecture Life cycle Management • Infrastructure, Sécurité et Réseaux • Centre de formation et de Certification Microsoft • WINWISE est le pôle d’expertise MICROSOFT du Groupe ALTEN et bénéficie de la puissance financière d’un leader incontesté • WINWISE 130/136 Rue de Silly 92100 Boulogne-Billancourt www.winwise.com

  3. Access It IdFen quelques mots… • Société de services, conseil / expertise,et formation,exclusivement sur les technologies Microsoft • 20+ collaborateurs spécialisés sur les techno MS, dont 11 MVP • Interventions en mode : • Conseil, expertise, coaching et formation • Réalisation, au forfait ou en Assistance Technique .NET Plateforme Applicative Framework et langages .Net, AZURE, Silverlight, WPF/Surface, VS/TFS, Windows Phone 7,… SQL Server (SSIS, SQL, SSAS, SSRS), PowerPivot, SharePoint & on-line, Office 365,… .NET Collab. BI

  4. Agenda Présentation WCF RIA Services Développement rapide d’applications Industrialisation Patterns Persistance, Domaine, Opérations Approche MVVM Authentification et autorisation Testabilité

  5. Problématiques RIA Service Application cliente Couche de présentation Couche métier Couche métier Couche d’accès aux données Base de données • Coût de mise en place important • Autorisations • Accès concurrentiels • Duplication de la logique métier

  6. WCF RIA Services Simplifier la communication afin que le métier devienne le centre d’intérêt. RIA Couche de présentation Couche métier Couche d’accès aux données Base de données Notion de domaine : opérations + entités + validations • Côté client • Contrôles spécifiques • Contexte de donnée • « Tracking » d’objets • Côté serveur • WCF • Validations • Accès aux données • Sécurité

  7. Démo WCF RIA Services

  8. Développement rapide d’applications Dépendance à la technologie de persistance des données Rigidité de la structure

  9. « Déployer des pratiques pour améliorer la productivité et la robustesse des applications tout en restant dans des délais et des coûts maîtrisés » Industrialisation Séparer les responsabilités

  10. Patterns d’industrialisation • Repository • Unit Of Work • Dependency Injection • MVVM (Model ViewView-Model) • Unit Testing • …et aussi : AOP (Aspect-OrientedProgramming)

  11. Industrialiser la persistance • Principes • Isoler la persistance dans un repository pour la découpler du service de domaine • Accès au repository via une interface IRepository • Générique, supportant les opérations CRUD standards pour accélérer le développement • Extensible, pour définir des opérations spécifiques supplémentaires • Un repository : LinqToEntitiesRepository<TContext> pour supporter EntityFramework(TContext correspond au modèle) IRepository Data Source Domaine Implémentation de la persistance (LinqToEntities…) Entité Métier

  12. Industrialiser la persistance IRepository, LinqToEntitiesRepository<TContext> newLinqToEntitiesRepository<NorthwindEntities>();

  13. Démo Industrialiser la persistance

  14. Industrialiser le domaine • Principes • Définir une classe de base : RepositoryDomainService pour • Accéder au IRepository depuis le domaine • Bénéficier des opérations standard (CRUD) • Valider les lots de modifications (Transaction) • Redéfinir si nécessaire les opérations dans le domaine Repository Présentation Domaine Entité Métier Entité Métier

  15. Industrialiser le domaine • RepositoryDomainService

  16. Industrialiser le domaine • NorthwindService • EntityDomainServiceDescriptionProvider: description du modèle • EntityDomain : opérations CRUD autorisées pour chaque entité • IRepository : persistance du modèle [EnableClientAccess()] [EntityDomainServiceDescriptionProvider(typeof(NorthwindEntities))] [EntityDomain(typeof(Customers), EntityDomainOperations.All)] [EntityDomain(typeof(Regions), EntityDomainOperations.Query)] ... publicclassNorthwindService: RepositoryDomainService { public voidDeleteCustomers(Customerscustomer) { base.Repository.Delete<Customers>(customer); } }

  17. Industrialiser le domaine • Instanciation du service de domaine • Par défaut, le service est instanciée par RIA Services • C’est insuffisant : il faut configurer le repository à utiliser • Solution : • Extensibilité du DomainServiceFactory • Unity pour injecter le service de domaine dans RIA Services

  18. Industrialiser le domaine • Application Web Northwind (Global.asax.cs) protectedvoidApplication_Start(object sender, EventArgs e) { UnityHelper.UnityContainer.RegisterType<NorthwindService>( newInjectionProperty("Repository", typeof(LinqToEntitiesRepository<NorthwindEntities>))); DomainService.Factory= newDomainServiceFactory(); } • DomainServiceFactory public class DomainServiceFactory : IDomainServiceFactory { publicDomainServiceCreateDomainService( TypedomainServiceType, DomainServiceContextcontext) { DomainServicedomainService = UnityHelper.UnityContainer .Resolve(domainServiceType) asDomainService; domainService.Initialize(context); returndomainService; }

  19. Démo Industrialiser le domaine

  20. Gestion des opérations

  21. Gestion des opérations Implémentation EntityFramework

  22. Démo Gestion des opérations

  23. Du service vers le client • DomainService • DescriptionProvider • GetDescription • … Invocation des opérations DomaineContext.Load(EntityQuery) DomaineContext.SubmitChanges DomainService Description GetInvokeOperation … Génération du contexte client … public sealed partial class NorthwindContext : DomainContext{ … } …

  24. Approche MVVM VIEW Controls Layout Actions Triggers DataBindings VIEWMODEL Commandes Opérations Propriétés MODEL Données Règles métier

  25. Approche MVVM RIA Services 1.0 VIEW Controls Layout Actions Triggers DataBindings VIEWMODEL Commandes Opérations DOMAINSERVICE DomainOperations DomainContext EntitySets MODEL Entités Validateurs Proxy généré

  26. Approche MVVM SP1 beta VIEW Controls Layout Actions Triggers DataBindings DOMAIN SERVICE DataService GetData PersitData EntityList VIEWMODEL Commandes Opérations Propriétés DomainContext EntitySets MODEL Entités Validateurs Proxy généré

  27. Démo Approche MVVM

  28. Sécurité - Serveur • Classe AuthenticationBaseet attribut RequireAuthentication • Attribut RequireRole • Infrastructure ASP.NET • Intégration au processus « Query / Submit »

  29. Sécurité - Serveur • RIA Services fournit un service remplissant toutes les fonctionnalités d’authentification • Le paramétrage de la sécurité s’effectue de manière classique dans le fichier Web.config [EnableClientAccess] public class AuthenticationService : AuthenticationBase<User> { } <roleManagerenabled="true" /> <authentication mode="Forms" > <formsname=".SimpleRIA_ASPXAUTH" /> </authentication> ...

  30. Sécurité - Serveur • Pour les opérations implémentées dans le domaine par codage, utiliser les attributs RIA Services: • Pour les opérations CRUD standards, utiliser l’attribut EntityDomainAttribute : [RequiresAuthentication] [RequiresRole("Admin")] [EntityDomain(typeof(Customers), Operations = EntityDomainOperations.All, RequiresAuthentication= EntityDomainOperations.All, QueryRequiresRole= new []{"StdUser"}, InsertRequiresRole = new []{"Admin"}, UpdateRequiresRole = new []{"Admin"}, DeleteRequiresRole = new []{"Admin"}) ]

  31. Sécurité - Client • Classe WebAuthenticationService • Point d’entrée du processus d’authentification. • ClasseFormsAuthentication et WindowsAuthentication • Processus d’authentification spécialisés. • Classe AuthenticationDomainContextBase • Accès client au service d’authentification. • Interfaces IIdentity et IPrincipal • Visibility, pattern ICommand

  32. Sécurité - Client Utilisation dans un ViewModel Propriété publicboolCanDeleteCustomer{ get {returnthis.DomainAuthService .CanDeleteCustomer;  }} Command (CanExecute) ICommanddeleteCustomerCommand=newRelayCommand<Customer>( this.DeleteCustomer,c=>this.CanDeleteCustomer )); Service dédié publicclassDomainAuthService{publicboolCanDeleteCustomer    {get        {returnWebContext.Current.User.IsInRole("Admin");        }    }}

  33. Sécurité - Client • Inclure au contexte les règles définies côté service • CodeGeneratorTextTemplate (toolkit sp1) • [DomainServiceClientCodeGenerator(typeof(CodeGenerator), "C#")]publicclassCodeGenerator : CSharpClientCodeGenerator{protectedoverrideDomainContextGeneratorDomainContextGenerator    {get        {returnnewAuthorizationCodeGenerator();        }    }} Génération personnalisée du DomainContext client • Gestion déclarative (pour les cas particuliers) • AuthorizationSamples(http://code.msdn.microsoft.com/RiaServices) • <Button s:Authorization.RequiresRole="Admin,CustomerManager"/>

  34. Démo Sécurité

  35. Testabilité • DomainService • Implémentation d’un repository de base pour les tests • Définition d’un repository spécifique à chaque contexte. • Configuration du conteneur IOC pour l’utilisation du repository spécifique de test.

  36. Démo Testabilité – DomainService

  37. Testabilité • DomainContext • Implémentation d’un DomainClient de base pour les tests. • Définition d’un DomainClient spécifique à chaque contexte. • Configuration du conteneur IOC pour l’utilisation du DomainClient spécifique de test.

  38. Démo Testabilité – DomainContext

  39. Conclusion • RIA Services • Adaptée au model RAD. • Souple • Extensible • Donc adaptée aux applications d’entreprise • Téléchargez et utilisez notre framework http://rialternative.codeplex.com/

  40. Références • Téléchargements • http://www.silverlight.net/getstarted/riaservices/ • WCF Ria Services Code Gallery • http://code.msdn.microsoft.com/RiaServices • Kyle McClellan • http://blogs.msdn.com/b/kylemc/ • Colin Blair • http://www.riaservicesblog.net/Blog/ • Jeff Handley • http://jeffhandley.com/ • Brad Abrams • http://blogs.msdn.com/b/brada/

  41. MSDN et TechNet: l’essentiel des ressources techniques à portée de clic • Portail administration et infrastructure pour informaticiens • Portail de ressources technique pour développeurs http://technet.com http://msdn.com

More Related