Gli sviluppatori di altri team mi interfacciano con apparentemente una domanda che il mio giudizio chiama per quanto riguarda il posizionamento della logica di business codificata in un'applicazione web .Net MVC / Knockout attualmente in fase di sviluppo. Certo, questi tipi di domande hanno implicazioni di vasta portata in quanto riguardano schemi di progettazione architettonica di alto livello, ma ciò nonostante garantisce un'analisi dettagliata.
Ad esempio, diciamo che abbiamo una porzione di codice che estrae i dati da un database, esegue alcuni calcoli e quindi li convalida con alcuni input dell'utente. L'argomento costantemente sollevato è tale che i livelli esterni al browser client (illustrati di seguito) dovrebbero semplicemente facilitare attività quali l'archiviazione e il trasferimento di dati, la sicurezza e altre attività di questo tipo che esulano dall'implementazione della logica aziendale. Quindi, all'interno del browser, convalida e implementazione delle regole aziendali.
[Client Browser / JS] < = > REST < = > [IIS / .Net MVC] < = > WCF / SQL < = > [Endpoint e amp di WCF; Basi di dati]
Certo, ci sono numerosi framework JavaScript lato client che promuovono questo tipo di modello di implementazione ma credo che l'intento con questi presupponga che le regole ei processi aziendali siano sempre eseguiti lato client. Detto in un altro modo; accoppiato al browser.
Nella mia particolare circostanza ho trovato alcuni argomenti contro una tale architettura e voglio essere sicuro che non mi manchi niente o che sia fuorviante.
-
Test: Sebbene possiamo avvalerci di framework di test come Jasmine, il livello di impegno necessario per lo sviluppo e l'integrazione di questi tipi di script di test è sostanziale rispetto all'approccio TDD utilizzato con altre metodologie di sviluppo .Net
-
Debug e sviluppo: simile al mio argomento di test; la maggior parte dei browser tradizionali ha grandi plug-in di sviluppo e debug che rendono lo sviluppo molto meno frustrante e piacevole oggi. Tuttavia, a questi mancano ancora la ricchezza di capacità e facilità d'uso durante il debug di oggetti dominio / business sul back-end in Visual Studio.
-
Accoppiamento: la logica dominio / business è strettamente accoppiata ai runtime di JavaScript. Il browser in questo caso.
-
Sicurezza del codice: questo è abbastanza semplice.
-
Compatibilità tra browser: sebbene oggi sia meno problematico, merita qualche considerazione.
Esistono altri elementi o vincoli di alto livello che potrei mancare?