¿Cómo integro el patrón ASP .Net Model View Presenter (MVP) y los métodos de página estática marcados como [WebMethod]?

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

  •  02-07-2019
  •  | 
  •  

Pregunta

En una aplicación asp.net, me gustaría combinar el uso de Webclient Software Factory (WCSF) y su patrón Presentador de vista de modelo (MVP) asociado, con Método de página, que son métodos estáticos en las vistas .aspx marcado con el atributo [WebMethod].

Sin embargo, los métodos estáticos en la página aspx parecen romper el patrón del Presentador de vista de modelo, ya que se requiere un método de instancia en la página para tener el contexto del Presentador y el Controlador necesarios para que la Vista hable.

¿Cómo se podría extender el patrón MVP de asp .net en WCSF para admitir [WebMethods] en la página, también conocida como la Vista?

¿Fue útil?

Solución

Recientemente tuve un problema similar al hacer un proyecto con patrón MVP y que quería mucha integración AJAX. Es mejor que tenga servicios web que se ajusten al patrón MVP al que llama.

Tenga en cuenta que un PageMethod es poco más que un servicio web, solo en la página actual. No tiene acceso a ningún objeto de nivel de página, por lo que las ventajas de tenerlo allí son mínimas. De hecho, creo que son desventajosos, les dan a los desarrolladores (que no están familiarizados con el concepto) la idea de que pueden interactuar con objetos a nivel de página.

La otra cara de la moneda es lo que está haciendo su PageMethod, si su método de página no necesita interactuar con el Modelo (digamos, está manejando cálculos aritméticos complejos que son más rápidos en C # / VB.NET que JS) entonces la operación es realmente una operación de nivel de interfaz de usuario y probablemente no sea relevante si fuera a convertir la aplicación en un WinForm (u otra cosa).

Tenga en cuenta que toda interacción con datos a nivel de IU es específica para esa implementación de IU. Si tuviera que escribir una interfaz de usuario diferente para los presentadores, entonces es probable que tenga una interacción de datos de nivel de interfaz de usuario diferente.

Otros consejos

Creo que podría acercarse a lo que está buscando utilizando un servicio web ASP.Net AJAX en lugar de métodos de página estáticos. El servicio web tiene la ventaja de no ser estático y, dependiendo de cómo se implementen sus vistas, (no estoy familiarizado con los detalles del patrón WCSF MVP), podría hacer que el servicio web sea su " Ver " capa ... o al menos algo bastante cerca.

He hecho algo similar en un proyecto en el que estoy trabajando. Terminé necesitando crear una clase delgada de solo datos que se serializó a JSON por el servicio web para llevar los datos del modelo a la '' vista '', pero el servicio web tenía esencialmente los mismos métodos que serían expuestos como eventos en la vista.

Una de las cosas que me gustó de este enfoque es que todos los bits, incluido el servicio web, son comprobables.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top