Il mio lavoro principale è realizzare applicazioni HTML. Con ciò intendo applicazioni di tipo CRUD utilizzate internamente con molte visualizzazioni griglia modificabili, caselle di testo, elenchi a discesa, ecc. Attualmente stiamo utilizzando i Webform ASP.NET, che svolgono il lavoro, ma le prestazioni sono per lo più tristi e molto spesso tu devi saltare attraverso i cerchi per ottenere ciò che ti serve. Cerchi appesi al soffitto e incendiati.
Quindi mi chiedo se sarebbe forse una buona idea spostare tutte le interfacce utente sul lato JavaScript. Sviluppa una serie di controlli riutilizzabili che sono adattati specificamente alle nostre esigenze e scambiano solo dati con il server. Sì, mi piace il paradigma "control" (aka "widget"), è abbastanza adatto a tali applicazioni. Quindi sul lato server avremmo ancora un layout di base simile al nostro attuale markup ASPX, ma che poi sarebbe stato inviato al client solo una volta, e la parte Javascript si sarebbe occupata di tutti gli aggiornamenti successivi dell'interfaccia utente.
Il problema è che non l'ho mai fatto prima, e non ho mai visto nessuno fare questo, quindi non so quali sarebbero i problemi. In particolare, sono preoccupato per:
- Prestazioni ancora. Il benchmarking mostra che attualmente il ritardo principale è sul lato client, quando il browser tenta di ri-rendering della maggior parte della pagina dopo un aggiornamento AJAX. Il markup di Webforms generato da ASP.NET dà un nuovo significato alla parola "web", e i ricchi controlli di Devexpress aggiungono il proprio livello di complessità Javascript in aggiunta. Ma sarebbe più veloce ricalcolare tutte le modifiche necessarie sul lato Javascript e quindi aggiornare solo ciò che deve essere aggiornato? Tieni presente che sto parlando di moduli con diverse visualizzazioni di griglia modificabili, un sacco di caselle di testo, molti elenchi a discesa contenenti ciascuno elementi filtrabili di mezzo zilione, ecc.
- Facilità di sviluppo . Ci sarebbe molto più Javascript ora, e probabilmente si mescolerebbe con il markup HTML della pagina. Questo o qualche tipo di nuovo motore di visualizzazione dovrebbe essere prodotto. Intellisense per Javascript è anche molto peggio che per il codice C # e, a causa della natura dinamica di Javascript, non ci si può aspettare che diventi molto migliore. Le pratiche di codifica possono migliorare un po ', ma non di molto. Inoltre, la maggior parte dei nostri sviluppatori sono principalmente sviluppatori C # quindi ci saranno alcune curve di apprendimento e errori iniziali.
- Sicurezza . Molti controlli di sicurezza dovranno essere eseguiti due volte (lato server e lato interfaccia utente) e il lato server di elaborazione dati dovrà includere molti più di questi. Attualmente, se si imposta una casella di testo in sola lettura sul lato server, è possibile dipendere dal fatto che il suo valore non cambi durante il round trip del client. Il framework ha già abbastanza codice per garantire che (attraverso la crittografia viewstate). Con l'approccio solo dati, diventa più difficile, perché devi controllare manualmente tutto. D'altra parte, forse i buchi di sicurezza saranno più facili da individuare, perché avrai solo i dati di cui preoccuparti.
Tutto sommato, risolverà i nostri problemi o li aggraverà? Qualcuno ha mai provato questo, e quali sono stati i risultati? Ci sono delle strutture là fuori che aiutano in questo tipo di sforzo (jQuery e equivalenti morali a parte)?