Domanda

Sono un programmatore WinForms prima; Ho sempre programmi di partizione che scrivo in due parti, il front-end (WinForms) e di livello intermedio (facilitato dalla Remoting / WCF)

In questo approccio, il codice front-end non può accedere al Linq o System.Data.SqlClient. Ma che ha il vantaggio aggiunto che il livello intermedio è un istante SOA-cittadino (Service Oriented Architecture), può essere utilizzato in scenari B2B, database agnostico, e Internet-capable anche è solo un'applicazione WinForms.

Ora sto imparando abilità web. Utilizzando il progetto SportsStore dal libro Pro ASP.NET MVC, è inevitabile che Vorrei confrontare il mio vecchio (?) Approccio (livello intermedio) e l'approccio repository su quel libro. L'approccio repository espone il meccanismo di accesso dati (LINQ to SQL) direttamente sul front-end (SportsStore.WubUI). Utilizzando l'approccio repository, lo SportsStore.WebUI ha ancora una connessione diretta al database.

La domanda è, sui programmi web, dovrei aspirare rendendo il front-end di interfacciarsi solo a un livello intermedio (in modo che il front-end può essere database agnostico e il livello intermedio è un istante SOA-cittadino), o dovrei utilizzare il database direttamente (mediante approccio repository, ORM, o simili) sul front-end?

È stato utile?

Soluzione

Sono certo che il libro ha violato alcune best practice per brevità. Gli autori devono bilanciare "come faccio ad avere il mio punto attraverso" contro "qual è il modo corretto per farlo"; di solito optare per l'ex. (come dovrebbero -? questo è un libro sullo sviluppo web, non di architettura, a destra)

Si dovrebbe assolutamente continuare a utilizzare architetture n-tier. Il punto dell'architettura n livelli è per consentire di (più) facilmente scambiare gli strati -. Database interruttore, interfacce utente interruttori (sostituire WinForms con ASP.NET, per esempio)

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