Frage

Wenn eine Webseite einige Daten benötigt, warum haben nicht nur ein SQLDataSource eine gespeicherte Prozedur aufrufen? Warum ein Object verwenden, um ein Business-Objekt aufrufen, die dann die gespeicherte Prozedur aufruft? Ich verstehe, dass andere Anwendungen (können Desktop-Anwendungen sagen) auf .NET Framework integriert kann die Business-Objekte zugreifen, aber was ist, wenn die Anwendung immer nur ein Web-App wird?

Um mehr klar:

Wann sollte man einen SqlDataSource oder ObjectDataSource verwenden?

Wie kann man motiviert die Wahl?

War es hilfreich?

Lösung

Mit nur SQLDataSource ist vollkommen gültig, wenn es nur eine Demo ist, ein Prototyp, oder ein schneller Hack. Es ist schnell, es ist einfach, es funktioniert einfach und gibt Ihnen die Ergebnisse, die Sie benötigen.

Wenn jedoch eine App entwickelt und auf lange Sicht gebaut, und geht davon aus, dass die Dinge (Anforderungen, Kundenwunsch, schließlich das Datenbankschema) ändern können, dann könnte es eine ganze Menge mehr Sinn machen, ein richtiges „Unternehmen einführen "Schicht -. Ihre Business-Objekte als Objekte modellieren, und geben Sie dann eine Zuordnung von der zugrunde liegenden Datenbank zu diesen Geschäftsobjekten

Wie das Sprichwort sagt - kann man durch eine weitere Schicht der Dereferenzierung so ziemlich alles in der Informatik lösen (oder Abstraktion) -. Dies gilt auch hier

SURE: Sie können direkt auf die Datenbank gehen, und zwar auf den ersten und für die erste Iteration, das ist vielleicht (oder wahrscheinlich) auf dem schnellsten Weg. Aber auf lange Sicht, wenn eine App zum letzten gebaut wird, ist es in der Regel ein Schnell- und unsaubere Art und Weise - die Kosten für die Instandhaltung, die Kosten für die Wartung, die Kosten und Aufwand für den Wechsel nach Sie und Ihre Kunden Bedürfnisse wachsen und recht schnell, dass quick'n'dirty Lösung nicht groß sieht so mehr, in Bezug auf Aufwand.

Also mein Punkt zusammenzufassen: Ja, zunächst eine direkte SQL-Datenquelle möglicherweise schneller und einfacher - so verwenden, wenn das der wichtige Punkt ist: auf die Dinge für eine schnelle Demo gemacht, ein Proof-of-concept Stil App. Aber auf lange Sicht, wenn man sich die Lebensdauer einer App suchen, dann ist es in der Regel lohnt sich ein bisschen mehr (Design und Codierung) investieren Aufwand diese Abstraktionsschicht hinzuzufügen, so dass Ihre Web-Seiten nicht direkt abhängig von den Einzelheiten die Datenbank darunter.

Marc

Andere Tipps

Wenn Sie eine Business-Schicht haben, die Sie in Ihren Projekten verwenden, ist Object die natürliche Wahl. Das paßt gut mit vielen ORMs, und viele von ihnen bieten zusätzliche Vorteile (Validierung, rückgängig zu machen, usw.). Es ermöglicht auch Zugriff Sie eine der anderen Eigenschaften und Methoden, die Sie auf Ihre Business-Objekte haben - nicht nur die direkte SQL-Felder. Dies kann in Echt in praktisch, wenn die Bindung - da es Ihnen erlaubt, nur in der Markup-Eigenschaften zu binden, anstatt eine Menge Code hinter schreiben zu müssen.

Wenn Sie diesen Weg gehen, Mischen SQLDataSource und Object kann durch den nächsten Entwickler zu Verwirrung führen Ihr Projekt zu holen. In diesem Fall halte ich mich mit Object für Code Konsistenz.

Wenn Sie nicht über eine Business-Schicht und sind nur SQL schlagen direkt - die SQLDataSource verwenden. Meine persönliche Präferenz ist, dass alle Ihre SQL-Code in einem Unternehmen oder einer Datenschicht sein sollte, und weil ich so gut wie nie SQLDataSource verwenden.

Wenn Sie Ihren Business-Schicht-Code in der gespeicherten Prozedur anwenden die es besser nutzen SQLDataSource

In der Theorie ist Object besser. Aber das hängt alles davon ab, wie gut das Objektmodell geschrieben und dokumentiert wird. Wir ausgelagert, ein Unternehmen, das einen benutzerdefinierten Code-Generator verwendet (was sie möchten, dass wir nicht bieten mit) alle Schichten zu erzeugen. Es stellte sich heraus Alptraum zu sein, auch kleine Änderungen wie das Hinzufügen einer Eigenschaft zu machen oder einen Feldtyp ändern. Ich Verschrottung jetzt praktisch alles, was sie taten und nur die Verwendung von gespeicherten Prozeduren sie geschrieben haben.

Mein langfristiges Ziel ist es, neu zu schreiben, um die Anwendung von Grunde auf einen kommerzielles Modellierungswerkzeug & Code-Generator verwenden. Wenn Sie Object verwenden wollen empfehle ich ein gutes Modellierungswerkzeug zu finden, die einen flexiblen Code-Generator enthält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top