Come si integrano il modello ASP .Net Model View Presenter (MVP) e i metodi di pagina statica contrassegnati come [WebMethod]?

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

  •  02-07-2019
  •  | 
  •  

Domanda

In un'applicazione asp.net, vorrei combinare l'uso di Webclient Software Factory (WCSF) e il modello Model View Presenter (MVP) associato, con Metodo pagina, ovvero metodi statici nelle viste aspx contrassegnato con l'attributo [WebMethod].

Tuttavia, i metodi statici nella pagina aspx sembrano interrompere il modello di Model View Presenter poiché nella pagina è richiesto un metodo di istanza per avere il contesto di Presenter e Controller necessario per la visualizzazione della vista.

Come si potrebbe estendere il pattern MVP di asp .net in WCSF per supportare [WebMethods] sulla pagina, nota anche come View?

È stato utile?

Soluzione

Di recente ho avuto un problema simile quando stavo realizzando un progetto MVP e volevo molta integrazione con AJAX. È meglio avere servizi web conformi al modello MVP che chiami.

Tieni presente che un PageMethod è poco più di un servizio Web, proprio nella pagina corrente. Non ha accesso a nessun oggetto a livello di pagina, quindi i vantaggi di averlo sono minimi. In realtà penso che siano svantaggiosi, danno agli sviluppatori (che non hanno familiarità con il concetto) l'idea di poter interagire con oggetti a livello di pagina.

Il rovescio della medaglia è ciò che sta facendo il tuo PageMethod, se il tuo metodo di pagina non ha bisogno di interagire con il Modello (diciamo, sta gestendo calcoli aritmici complessi che sono più veloci in C # / VB.NET di JS) quindi l'operazione è davvero un'operazione a livello di interfaccia utente e molto probabilmente irrilevante se si dovesse trasformare l'app in un WinForm (o qualcos'altro).

Tieni presente che tutte le interazioni con i dati a livello di interfaccia utente sono specifiche per l'implementazione dell'interfaccia utente. Se dovessi scrivere un'interfaccia utente diversa per i presentatori, è probabile che avrai un'interazione dei dati a livello di interfaccia utente diversa.

Altri suggerimenti

Penso che potresti avvicinarti a ciò che stai cercando utilizzando un servizio Web AJAX ASP.Net anziché metodi di pagina statici. Il servizio web ha il vantaggio di non essere statico e, a seconda di come vengono implementate le tue visualizzazioni (non ho familiarità con le specifiche del modello MVP WCSF), potresti potenzialmente rendere il servizio web il tuo " Visualizza " strato..o almeno qualcosa di abbastanza vicino.

Ho fatto qualcosa di simile in un progetto a cui sto lavorando. Ho finito per aver bisogno di creare una sottile classe di soli dati che è stata serializzata su JSON dal servizio web per trasportare i dati dal modello alla "vista", ma il servizio web aveva essenzialmente gli stessi metodi che sarebbero stati esposti come eventi sulla vista.

Una delle cose che mi è piaciuta di questo approccio è che tutti i bit, incluso il servizio web, sono testabili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top