Ich bereite ein neues Windows-Projekt vor und frage mich, welche Art von DAL-Technologie zu verwenden ist. Ursprünglich war ich auf der Suche nach etwas Einfachem, um nicht zu viel Zeit damit zu verbringen, es zu bauen. Aber ich verstehe auch, dass es auf lange Sicht effizient und skalierbar sein muss.Neues .NET 3.5-Projekt: Welche DAL-Technologie verwenden?
Ich plane WPF (MVVM) Client und WCF Service auf einem 3-Tier-System zu verwenden.
einfach alle vorhandenen Technologien zusammenzufassen ich vertraut bin:
Datasets
PRO: Könnte ein bisschen altmodisch, aber sehr einfach sein, die meisten Teile Auto zu bedienen und lassen für dich generiert. Ein wichtiger Aspekt von Datensätzen ist die Leichtigkeit, mit der verwandte Daten über die Beziehungen übertragen werden. Auch in gewisser Weise ist es von der Datenbank getrennt und könnte die Updates vereinfachen, indem es sich automatisch um Zeitstempel kümmert. Beinhaltet Validierung.
CONTRA: Ziemlich altmodisch. Manche betrachten sie als keine realen Geschäftsobjekte/Modelle, sondern nur als Spiegel Ihrer SQL-Datentabellen. Die Übergabe zwischen WCF-Service/Client kann schwieriger sein als selbst erstellte Geschäftsobjekte.
Enterprise Library 4.1 - Data Access-Block
PRO: Die DAL das in ein Fabrikmuster gesetzt wird. Es sorgt automatisch für das Öffnen und Schließen der Verbindung. Sehr einfach zum größten Teil zu verwenden. Es unterstützt sowohl DataSets als auch normale SQL Sps, um eigene Business-Objekte zu erstellen. Als Teil eines fortlaufenden Frameworks kann es viel effizienter sein, in Kombination mit dem Rest der Enterprise Library ein effizientes Endprodukt zu verwenden.
CONTRA: ??
Linq to SQL
PRO: Auto erstellt die SQL-Tabellen in Geschäftsobjekte. Einfach zu CRUD. Theoretisch eine sehr schöne Art, es zu tun.
CONTRA: Nachdem ich damit herumgespielt habe, als es herauskam, fand ich es flockig und manchmal instabil. Es wird bereits als eine tote Technologie angesehen, nachdem Microsoft bekannt gegeben hat, dass Entity Framework 4.0 - als Teil von .NET 4.0 - von Microsoft empfohlen wird. In .NET 4.0 sind nur wenige Fehlerkorrekturen zu erwarten, aber keine Erweiterungspläne mehr.
Entity Framework 4.0
Ich weiß nichts über sie, sondern nur, dass es schließlich alles andere als auf .NET 4.0 ersetzen. Ich bin auch versucht, es zu benutzen, aber da es immer noch in BETA ist, würde ich diesen Weg noch nicht gehen können.
Ich bin sehr versucht, Enterprise Library 4.1 - Datenzugriffsblock zu verwenden und meine eigenen Geschäftsobjekte zu erstellen. Die große Con ist, dass es mehr Zeit braucht, um die DAL zu erstellen. Es sei denn, jemand kann mich davon überzeugen, DataSets stattdessen über den Datenzugriffsblock zu verwenden.
Was sind Ihre Kommentare und Ideen? Vielen Dank, Kave
Ich habe es einige Gedanken gegeben und ich denke, du hast Recht. Die Verwendung von EntLib bedeutet immer noch viel Arbeit von Hand. Als du EF erwähnt hast, meintest du Version 4.0 BETA oder meinst du die aktuelle Version 1.0? Ich habe Version 1.0 letzte Nacht wirklich versucht und ich muss sagen, dass es ziemlich gut aussieht und macht den Job. Kurz davor habe ich SubSonic ausprobiert, bei dem es nicht gelungen ist, Code für meine Nachschlagetabellen zu erstellen, die den gleichen Namen wie eines ihrer vorhandenen Felder hatten. Dies muss Subsonic verwirrt haben. EF 1.0 hat den Job perfekt gemacht und ich denke, ich werde diesen Weg gehen. Was denken Sie? – Houman
EF 1 ist nicht annähernd so funktionsreich wie LinqToSql und LinqToSql ist ziemlich schlecht Feature-weise. EF 1 fehlt die Unterstützung für grundlegende ORM-Konzepte wie die Unterstützung für korrektes Lazy-Laden, die LinqToSql unterstützt. –
Ich habe EF 1.0 für ein paar Apps verwendet, solche mit kleineren Datenbanken, die nicht performancekritisch waren und damit zufrieden waren - die Grundvoraussetzung war, "die Daten in und aus der Datenbank zu bekommen". Wenn Features, Skalierbarkeit und Leistung ein großes Problem darstellen, können Sie EF trotzdem ausprobieren, aber den Datenzugriff mithilfe einer anderen Softwareschicht oder etwas wie CSLA abstrahieren, um später Datenzugriffstechnologien zu wechseln oder zu aktualisieren. Natürlich sind die RAD-Vorteile zu diesem Zeitpunkt möglicherweise nicht mehr vorhanden und Sie sollten einen vollständigen benutzerdefinierten Stack in Betracht ziehen. –