none
programmation modulaire WPF RRS feed

  • Question

  • bonjour,

    actuellement,je travaille sur un projet en c sharp WPF ,mon application doit etre modulaire (extensible)

     je sais pas comment commencer? quel type de projet je doi  creer(projet main en WPF ensuite ;es plugin c est des Librairie

    de classe)?

     j ai lu sur internet que on peut utiliser le MEF  pour implémenter une application modulaire!!!!!

    je suis un peu perdu ,j ai besoin de vos conseilles pour commencer

    merci d'avance

    mercredi 21 mai 2014 17:27

Réponses

  • Bonjour,

    La réponse de Gilles est en réalité la meilleure pour une application complètement modulaire avec WPF.

    Cette solution est utilisée dans de nombreux projets d'entreprise et satisfait énormément les développeurs car il correspond précisément au besoin d'une application visuelle extensible. 

    Maintenant, à vous lire, vous souhaiteriez plutôt apporter non pas tant du visuel à votre application que du comportement. Autrement dit, pouvoir changer des fonctionnalités de l'application par simple configuration. Finalement, que du hashage soit du SHA1 ou du MD5, ce qui nous intéresse c'est la fonction Hash, le reste est "implementation specific".

    Autrement dit, vous souhaiteriez appeler la méthode Hash d'une interface, et par configuration dire le composant (la classe) à appeler. Si c'est cela que vous entendez par "extensible", sachez que vous chercher simplement à faire ce que l'on nomme de l'IoC, de l'inversion de contrôle.

    L'IoC peut s'implémenter très rapidement sans framework si les fonctionnalités sont simple. Faire de l'IoC simple peut se réaliser soit même sans embarquer un gros framework. Des interfaces, des classes implémentant ces interfaces, des appels à Activator.CreateInstance, des réglages dans le fichier de config et le tour est joué. Après, on peut chercher plus loin avec de la Reflection, des appels de type "dynamic", bref, il y a plein d'options.

    Sachez que l'IoC est très présent dans de grands frameworks non .NET (notamment chez Java/JEE avec Spring, certaines implémentation des EJB, Hibernate, etc) et il y a également de nombreuses façons de le faire sous .Net. Pour information, Prism proposé par Gilles supporte Unity... Et Unity est un Application Block (une brique applicative) d'Enterprise Library (il faut donc la télécharger) de Microsoft  pour faire de l'IoC.

    Vous pouvez donc ainsi utiliser Unity sans Prism...

    Ou bien encore plus simple : partir  sur MEF dont vous parliez dans votre premier post. Car MEF est également un container IoC comme Unity.

    Pour résumer :

    • Si vos IHM doivent être modulaire, Prism sans aucune hésitation
    • Si certaines fonctionnalités métiers doivent pouvoir être remplacée, que vous voulez limiter la configuration via fichier MEF.
    • Si vous souhaitez des fonctionnalités métiers configurable via fichier Unity
    • Si vous souhaitez un mix de modularité, fonctionnalités métiers : Prism
    • Si le plus de 95% de votre application est fixe et qu'il faut ajouter quelques éléments extérieur, un système de plugin, si possible Unity et MEF en support.

    En espérant vous avoir aidé,

    Bien cordialement,

    Fabrice JEAN-FRANCOIS




    • Proposé comme réponse PhGr_ mardi 27 mai 2014 15:16
    • Marqué comme réponse amina kh mercredi 28 mai 2014 07:43
    mardi 27 mai 2014 15:04

Toutes les réponses

  • Bonjour,

    Pour faire des applications modulaires pour WPF le mieux est d'utiliser le framework Prism : http://compositewpf.codeplex.com/

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    • Proposé comme réponse Aurel Bera jeudi 22 mai 2014 10:05
    • Marqué comme réponse Aurel Bera mardi 27 mai 2014 06:26
    • Non marqué comme réponse amina kh mardi 27 mai 2014 14:26
    jeudi 22 mai 2014 00:29
    Modérateur
  • Bonjour amina kh

    Un petit retour?

    Bien cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.

    lundi 26 mai 2014 09:47
  • bonjour,

    je suis vraiment désolé pour ma réponse tardive.

    j'ai lu les premiers chapitres du document(http://compositewpf.codeplex.com/) proposé par Gilles TOURREAU et j'ai conclu que je ne peux pas

    utiliser le framework Prism, car ce dernier est utilisé pour des grands projest entreprise et quand il ya plusieur personne qui trvaille sur le projet .

    de plus, Prism permt d'implementer une application entierement modulaire ,c'est a dire ,chaque utilisateur peut  avoir une intarface differente

    selon les modules chargés.par contre dans le cas de  mon appplication,le ceur de l'application est le meme mais,il ya la possibilité d'ajouter d'autre

    fonctionalité par exemple  ( calcuer le hashage avec SHA1 512 apres on me demande d'ajouter un autre algoritem de hashage) .

    à la lumiere de cette étude,j'ai pensé à

    créer mon application racine en créant un projet WPF;

    et concernat les fonctionnalité que on doit ajouter avec le temps ça va etre des Plugins.

    que pensez vous?est ce que je suis dans la bonne voie?

    merci d'avance

    mardi 27 mai 2014 13:15
  • Bonjour,

    La réponse de Gilles est en réalité la meilleure pour une application complètement modulaire avec WPF.

    Cette solution est utilisée dans de nombreux projets d'entreprise et satisfait énormément les développeurs car il correspond précisément au besoin d'une application visuelle extensible. 

    Maintenant, à vous lire, vous souhaiteriez plutôt apporter non pas tant du visuel à votre application que du comportement. Autrement dit, pouvoir changer des fonctionnalités de l'application par simple configuration. Finalement, que du hashage soit du SHA1 ou du MD5, ce qui nous intéresse c'est la fonction Hash, le reste est "implementation specific".

    Autrement dit, vous souhaiteriez appeler la méthode Hash d'une interface, et par configuration dire le composant (la classe) à appeler. Si c'est cela que vous entendez par "extensible", sachez que vous chercher simplement à faire ce que l'on nomme de l'IoC, de l'inversion de contrôle.

    L'IoC peut s'implémenter très rapidement sans framework si les fonctionnalités sont simple. Faire de l'IoC simple peut se réaliser soit même sans embarquer un gros framework. Des interfaces, des classes implémentant ces interfaces, des appels à Activator.CreateInstance, des réglages dans le fichier de config et le tour est joué. Après, on peut chercher plus loin avec de la Reflection, des appels de type "dynamic", bref, il y a plein d'options.

    Sachez que l'IoC est très présent dans de grands frameworks non .NET (notamment chez Java/JEE avec Spring, certaines implémentation des EJB, Hibernate, etc) et il y a également de nombreuses façons de le faire sous .Net. Pour information, Prism proposé par Gilles supporte Unity... Et Unity est un Application Block (une brique applicative) d'Enterprise Library (il faut donc la télécharger) de Microsoft  pour faire de l'IoC.

    Vous pouvez donc ainsi utiliser Unity sans Prism...

    Ou bien encore plus simple : partir  sur MEF dont vous parliez dans votre premier post. Car MEF est également un container IoC comme Unity.

    Pour résumer :

    • Si vos IHM doivent être modulaire, Prism sans aucune hésitation
    • Si certaines fonctionnalités métiers doivent pouvoir être remplacée, que vous voulez limiter la configuration via fichier MEF.
    • Si vous souhaitez des fonctionnalités métiers configurable via fichier Unity
    • Si vous souhaitez un mix de modularité, fonctionnalités métiers : Prism
    • Si le plus de 95% de votre application est fixe et qu'il faut ajouter quelques éléments extérieur, un système de plugin, si possible Unity et MEF en support.

    En espérant vous avoir aidé,

    Bien cordialement,

    Fabrice JEAN-FRANCOIS




    • Proposé comme réponse PhGr_ mardi 27 mai 2014 15:16
    • Marqué comme réponse amina kh mercredi 28 mai 2014 07:43
    mardi 27 mai 2014 15:04
  • Bonjour,

    je vous remercie pour votre réponse rapide et détaillé.

    Cordialement.

    mercredi 28 mai 2014 07:48