Spostare tutta la logica dell'interfaccia utente sul lato client?


9

Il nostro team era originariamente composto principalmente da sviluppatori lato server con esperienza minima in Javascript. In ASP.NET scrivevamo molta logica dell'interfaccia utente in code-behind o più recentemente tramite controller in MVC.

Poco tempo fa 2 sviluppatori lato client di alto livello si sono uniti al nostro team. Possono fare in HTMl / CSS / Javascript praticamente tutto ciò che in precedenza potevamo fare con il codice lato server e i controlli web lato server:

  • Mostra / nascondi controlli
  • Esegui la convalida
  • Controlla l'aggiornamento AJAX

Quindi ho iniziato a pensare che forse sarebbe più efficiente creare semplicemente un'API di alto livello attorno alla nostra logica aziendale, un po 'come l'API di Amazon Fulfillment: http://docs.amazonwebservices.com/fws/latest/APIReference/ , in modo che il client gli sviluppatori lato prenderebbero completamente il controllo dell'interfaccia utente, mentre gli sviluppatori lato server si concentrerebbero solo sulla logica aziendale.

Quindi per il sistema di ordinazione avresti un'API di alto livello come:

OrderService.asmx

CreateOrderResponse CreateOrder(CreateOrderRequest)
AddOrderItem
AddPayment
-
SubmitPayment
-
GetOrderByID
FindOrdersByCriteria
...

Ci sarebbe l'accesso JSON / REST all'API, quindi sarebbe facile consumarlo dall'interfaccia utente sul lato client. Potremmo utilizzare questa API sia per lo sviluppo dell'interfaccia utente interna sia per le terze parti per creare le proprie applicazioni.

Con i progressi in Javascript e la disponibilità di buoni sviluppatori lato client, è un buon momento per sbarazzarsi di code-behind / controller e concentrarsi solo sullo sviluppo di API di alto livello (ala Amazon) che gli sviluppatori lato client possono consumare?

Risposte:


6

La convalida sul lato client per scaricare il lato server e aumentare la reattività dell'applicazione va bene, ma eseguire sempre la convalida lato server. Si può disattivare JavaScript e quando si utilizza direttamente l'API REST non sarà mai necessario JavaScript.


Sì, anche la convalida farà parte del dominio / API. Il lato client estrae ciò che deve essere convalidato dall'API o documentiamo ciò che è necessario, ecc ... per ciascun metodo. Se ci sono ancora errori di convalida sugli invii dal lato client, genereremmo eccezioni.
Mag20

4

Una cosa da tenere presente è che le UI complesse potrebbero richiedere un ulteriore livello "UI assist" per supportare elementi come gerarchie, relazioni master / dettaglio e altri concetti di UI che non esistono realmente nel livello aziendale. Spesso non è possibile implementare alcune di queste capacità senza fare più round trip al livello aziendale, il che peggiora le prestazioni. Almeno, preferisco avere il livello "UI assist" per dare all'interfaccia utente un accesso diretto al database.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.