J'ai mis le Broker en noire pour dire que c'est lui qui dispatch les Commands/Events.
Les "Event" émis par l'UI devrait changer de terminologie pour éviter la confusion, je devrais plutôt parler d'Action comme dans les frameworks MVVM.
Bien sûr, la partie Command/Model/Event ne fait pas partie du MVC, c'est inspiré du CQRS, mais vous avez l'idée.
J'ai codé ça dans un style "très orienté objet", cad que pour s'abonner à un événement il faut implémenter une interface:
ISubscribeToEvent<EventType>
Le problème c'est que le Contrôleur en a une tonne...
J'hésite à le refaire en mode "attribut":
[Subscribe]
public void OnEvent(EventType myEvent){ ... }
Laquelle des 2 vous préférez en général?
Finalement, je me rend compte que pour une petite fonctionnalité, j'écris beaucoup de code "non métier" ce qui est dommage.
Ex: je veux pouvoir éditer un objet dans l'interface? Il me faut faire:
Vue la question de Mathias et les remarques de Rui : "...je me pose les mêmes questions à chaque fois...", "...le coût de gestion de la 'tuyauterie' étant en général trop fort à mon goût...", "...écrire le moins possible de code de liaison et de code de couches intermédiaire...", "...Je n'ai jamais trouvé de solution satisfaisante…", désolé Rui je te cite dans le désordre ;-)
J’ai à mon tour, à défaut de réponses, quelques questions pour tous !
Et si l’hypothétique solution satisfaisante de Rui devrait exister, grâce à vous ! Que mettriez-vous dedans ?
Comment établirez-vous la liaison entre le code métier et le code technique ?
Distingueriez-vous déjà ces deux types de codes ?
Cette solution, serait-elle conceptuellement identique pour une appli Web, une appli Winform, une appli- Cloud ?
Êtes-vous fait pour utiliser, votre propre solution ? Ou sa mise au point va vous occuper à plein temps, sans jamais avoir le loisir de l’utiliser ?
happy fin août, et à+,
Fredy
Le lundi 20 août 2012 à 11:35, Florent Dugué a écrit :
Bonjour à tousPour ton avant dernière question Mathias, je suis d'accord, c'est un peu lourd par moment, mais le but du MVVM (de mon point de vue), ce n'est pas de faire court et de coder un update dans une SaveButton_OnClicked, mais de faire mieux (testabilité, SRP, ...). En plus, tu profites (enfin, pas toi dans ce cas) du binding WPF, qui est quand meme pas mal une fois qu'on a apprit les différentes possibilités. Rien à voir avec le DataBinding "à l'ancienne" de WinForm.Je rajoute un extrait d'une page de StackOverflow (http://stackoverflow.com/questions/982978/mvvm-for-winforms) :MVVM was specifically created for WPF, in order to take advantage of WPF features like bindings and commands. Windows Forms doesn't have these features(*), so it doesn't really make sense to try to apply the MVVM pattern to a Windows Forms application... You should probably use MVC or MVP instead.(*) It actually has some basic support for data binding, but not as powerful as in WPF...Après, "y en a qu'ont essayé", donc pourquoi pas :
Le lundi 20 août 2012 à 16:10, Florent Dugué a écrit :
Concernant le point '"Caliburn pour Winforms", y a un semblant de début de pont WinForms - "framework MVVM" ici : http://mvvmfx.codeplex.com/A voir ...Sinon, pour la librairie universelle Web/WinForms/WPF/Console, on a Caliburn qui, sur le papier, doit permettre d'avoir une appli WPF / Silverlight facilement. En pratique, je n'ai jamais testé.Mais surtout, sachant que, à vue de nez, 90% minimum des applis sont mono frontend (je vais l'appeler comme ça), quel choix va etre fait entre une techno multi frontend qui va couter plus chere à mettre en place, par rapport à une autre spécifique à, au choix, WPF, Web ou console ? Déjà qu'actuellement, les gents sont pas chauds-chauds avec le MV-quelque-chose, car ca coute plus cher que du "SaveButton_OnClicked", à mon avis, pas grand monde.
Le mardi 21 août 2012 à 13:08, Florent Dugué a écrit :
Il existe une évolution du MVVM, le MVP-VM.En gros, on dégage toute intelligence du ViewModel pour le mettre dans un Presenter.D'où gain en testabilité, réutilisabilité, etc ...Un petit article appliqué à WinForms : http://aviadezra.blogspot.fr/2009/08/mvp-mvvm-winforms-data-binding.htmlEt un autre à WPF : http://msdn.microsoft.com/en-us/magazine/hh580734.aspx
En fait, je deviens sans doute vieux, mais après avoir codé plein de framework, j'aimerai bien eviter de recoder de la plomberie, pour se concentrer sur le métier (même si je suis lié à une implem de framework)
dans le même sujet, quelqu'un utilise NakedObject?
D'ailleurs soit dit au passage, c'est un très bon article de synthese sur le sujet je trouve (meme si dans les faits je ne dois être qu'a 50% d'accord avec lui ;-)
qu'il n'y a pas besoin de l'installer, et que les maj sont maitrisées