Comment puis-je intégrer le modèle ASP .Net Model View Presenter (MVP) et les méthodes de page statique marquées comme [WebMethod]?

StackOverflow https://stackoverflow.com/questions/141104

  •  02-07-2019
  •  | 
  •  

Question

Dans une application asp.net, je souhaite combiner l'utilisation de WCSF (Webclient Software Factory) et de son modèle de présentateur de vue de modèle (MVP) associé, avec la méthode Page, qui constituent des méthodes statiques sur les vues .aspx. marqué avec l'attribut [WebMethod].

Cependant, les méthodes statiques sur la page aspx sembleraient briser le modèle Présentateur de vue de modèle, car une méthode d'instance est requise sur la page pour que le contexte du présentateur et du contrôleur soit nécessaire pour que la vue puisse parler.

Comment un modèle MVP d'asp .net étendu dans WCSF prend-il en charge [WebMethods] sur la page, également appelé Vue?

Était-ce utile?

La solution

J'ai eu un problème similaire récemment lors de la réalisation d'un projet patché par MVP et du souhait de beaucoup d'intégration AJAX. Vous avez intérêt à disposer de services Web conformes au modèle MVP que vous appelez.

N'oubliez pas qu'un PageMethod n'est qu'un service Web, uniquement dans la page actuelle. Il n'a accès à aucun objet de niveau page, de sorte que les avantages de le conserver sont minimes. En fait, je pense qu’ils sont désavantageux, ils donnent aux développeurs (qui ne connaissent pas le concept) l’idée qu’ils peuvent interagir avec des objets au niveau de la page.

Le revers de la médaille est ce que fait votre PageMethod, si votre méthode de page n'a pas besoin d'interagir avec le modèle (par exemple, elle gère des calculs arithmatiques complexes qui sont plus rapides en C # / VB.NET que JS), puis l'opération est vraiment une opération au niveau de l'interface utilisateur et très probablement irreligieuse si vous deviez transformer l'application en un WinForm (ou autre chose).

N'oubliez pas que toutes les interactions avec des données au niveau de l'interface utilisateur sont spécifiques à cette implémentation. Si vous deviez écrire une interface utilisateur différente pour les présentateurs, il est probable que vos interactions de données au niveau de l'interface utilisateur soient différentes.

Autres conseils

Je pense que vous pourriez vous rapprocher de ce que vous recherchez en utilisant un service Web ASP.Net AJAX au lieu de méthodes de page statique. Le service Web présente l’avantage de ne pas être statique et, en fonction de la manière dont vos vues sont implémentées (je ne connais pas les détails du modèle MVP de la WCSF), vous pouvez éventuellement définir le service Web comme "Vue". couche .. ou au moins quelque chose d'assez proche.

J'ai fait quelque chose de similaire dans un projet sur lequel je travaille. J'ai fini par avoir besoin de créer une classe de données limitées qui a été sérialisée en JSON par le service Web pour acheminer les données du modèle vers la "vue", mais le service Web avait essentiellement les mêmes méthodes que celles exposées en tant qu'événements. sur la vue.

Une des choses qui me plaisait dans cette approche est que tous les bits, y compris le service Web, sont testables.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top