5 Stimmen

Ist List<> besser als DataSet für UI Layer in ASP.Net?

Ich möchte Daten aus meiner Datenzugriffsschicht in meine Geschäftsschicht holen und sie dann für die Verwendung in meiner Benutzeroberfläche vorbereiten.

Ich frage mich also: Ist es besser, meine Daten zu lesen, indem ich DataReader und verwenden Sie es zum Füllen einer List<BLClasses> oder zum Ausfüllen eines DataSet und senden Sie den Datensatz an die UI-Schicht.

Ich bin an einer guten Leistung und Skalierbarkeit interessiert.

7voto

Ryan Emerle Punkte 14990

Ihre UI-Schicht sollte weit von Ihrer Datenzugriffsstrategie entfernt sein - sie sollte nicht mit Rohdaten zu tun haben. Daher sollte Ihre Benutzeroberfläche ausschließlich mit Ihren Domänenobjekten kommunizieren (direkt oder über eine Dienstschicht).

Anschließend kann die Benutzeroberflächenschicht die Datenstrukturen erstellen, die sie zum Rendern benötigt. Etwaige Leistungsprobleme könnten durch eine Caching-Strategie entschärft werden.

Dies wirkt sich auf die Lesbarkeit, Testbarkeit und Wartbarkeit des Codes aus, die immer lang- und kurzfristige Ziele jedes Entwurfs sein sollten.

Ich denke, dass Sie idealerweise etwas in dieser Richtung sehen möchten:

 UI
 /|\\
  |
SERVICE (? depending on the design)
 /|\\
  |
DOMAIN
 /|\\
  |
 DCO
 /|\\
  |
 DAL

EDIT:

Auf der anderen Seite, wenn Sie eine sehr einfache WebForms-Anwendung erstellen, können Sie vielleicht auf einen Teil dieser Komplexität verzichten und einfach die von Visual Studio bereitgestellten Designer verwenden. Ich habe jedoch die Erfahrung gemacht, dass sich Anwendungen oft über die Möglichkeiten der Drag-and-Drop-Oberfläche hinaus entwickeln und man am Ende zu einem separateren Design umstrukturieren muss.

Sie müssen immer wissen, was Sie durch die Wahl einer architektonischen Strategie gewinnen oder verlieren können. Wenn Sie (am Rande) mit fehlenden Tests, eingeschränkter Lesbarkeit und engerer Kopplung der Benutzeroberfläche an die Daten ****shudder**** leben können, dann ist vielleicht der geradlinigere Ansatz für Sie geeignet.

Einige Links zur weiteren Lektüre

2voto

Josh Punkte 44274

Mit einer List<T> , IList<T> oder noch besser ein IQueryable<T> haben den Vorteil, dass sie die Implementierungsdetails hinter einer Schnittstellengrenze verstecken. Dadurch können Sie die Art und Weise, wie Sie den Abruf dieser Informationen handhaben, zu einem späteren Zeitpunkt ändern.

2voto

Dan Appleyard Punkte 7325

Ich würde sagen, es wäre besser, Ihre benutzerdefinierten Objekte anstelle eines Datensatzes zu verwenden. es ist die beste Praxis, um Ihre ui / Business-Schichten blind zu haben, wie Sie Ihren Datenzugriff implementieren. Jede Art, wie Sie tatsächlich mit Ihrer Datenquelle (db, xml, ect.) sprechen, sollte in Ihrer Datenzugriffsschicht enthalten sein und Ihre Geschäftsschicht sollte nur Ihre benutzerdefinierten Objekte erwarten.

2voto

Mark Coleman Punkte 39892

Überprüfen Sie Leistungsvergleich: Datenzugriffstechniken . Sie ist zwar schon recht alt, enthält aber einige gute Informationen über die Leistung von DataSet, DataRader und XmlReader.

1voto

Matt Grande Punkte 11622

List<T> ist typsicher - Sie wissen immer, was Sie bekommen, und Sie müssen sich (selten) keine Gedanken über Casting machen. Diesen Luxus haben Sie bei DataSet nicht.

List<T> hat auch alle netten Linq-Hilfsmethoden eingebaut, vorausgesetzt, Sie sind auf 3.0

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X