Welche Faktoren sollten die Data Access Layer ich an einem neuen Projekt verwenden bewirken?

StackOverflow https://stackoverflow.com/questions/201132

  •  03-07-2019
  •  | 
  •  

Frage

Ich werde eine Klasse sson unterrichten, und ich brauche zu erklären, welche Faktoren Ihre Entscheidung der Datenzugriffstechnologie beeinflussen sollte. Ich bin vertraut mit vielen Datenzugriffsmethoden wie typisierten Datensätzen, Linq to SQL, Linq to Entities, .netTiers, LLBLGen und benutzerdefinierte Anrufe mit SQL-Verbindungsobjekte und Befehlsobjekte. Einige meiner Kunden werden nur Verfahren ermöglichen gespeichert verwendet werden, und sie werden nicht irgendetwas anderes diskutieren. Einige meiner Kunden sind nicht bereit, .NET 3.5 noch zu installieren. Einige Kunden benötigen ein mittleres Web-Service-Tier in einer beliebigen Web-Anwendung. Die meiste Zeit verwende ich Typen Datengruppen und benutzerdefinierten Web Services oder ich .netTiers mit Codesmith. Was soll ich darüber nachdenken?

War es hilfreich?

Lösung

Wie bei allen Wahl in einem Software-Projekt: Es hängt davon ab ... Aber meiner Meinung nach der wichtigste Faktor ist die Umgebung des Projekts.

Diese besteht aus (ich behaupte nicht, dass diese Liste in ohnehin vollständig ist):

  • Erhältlich Fähigkeiten innerhalb Entwicklungs-Teams und Wartungsteam (falls abweichend)
  • Erforderliche Funktionen
  • Einschränkungen von Kunden eingestellt (nicht alle Kunden alle Technologien unterstützen zur Verfügung. Dies ist sicherlich etwas, was Sie berücksichtigen sollten, wenn schrittweise ein Legacy-System oder die Einführung eines neuen Systems auf eine Umgebung ersetzen)
  • Einschränkungen festgelegt durch die Gesetzgebung

hoffe, das hilft dir.

Andere Tipps

Eine wichtige Sache zu erinnern ist, dass eine Datenbank nicht unbedingt nur ein Trägerdatenspeicher für eine Anwendung ist (isoliert). Andere Anwendungen und Verfahren schließlich Zugriff auf die Datenbank erforderlich machen könnten, vor allem in großer oder „Unternehmen“ Datenbanken (oder Anwendungen) und vor allem genügend Zeit gegeben.

Es ist wichtig, zu beachten:

  • ETL / Lasten / Migration
  • Externe Integration / Synchronisation (BizTalk / SSIS)
  • Wiederverwendung von anderen Anwendungen (insbesondere Websites, mobilen Anwendungen usw.)
  • Sicherheit / Angriffsfläche (ist ein Ansatz, weniger sicher als andere?)
  • Wartungsaufgaben
  • Verfügbarkeit - wird die Datenbank im Einsatz 24/7? Ist ein Ansatz geht eine bessere Verfügbarkeit als ein anderer, etc. zur Verfügung.
  • Auch ist eine gewisse Gestaltungsüberlegung um. Sind Sie für eine schnellere wählt, oder schneller schreibt Tuning? Ein Datenzugriff Design könnte besser abschneiden als andere.

    Ich stelle nicht, dass es einen einzigen Königsweg ist, aber was ich Vorsicht ist, dass jeder Datenzugriff Entwurfsmuster „big picture“ Denken erfordert - wird es den heutigen Bedenken auszuräumen und was kann man vernünftigerweise vorhersagen könnte den Bedarf von morgen sein ?

    Auch werden Sie eine externe API oder einen Rahmen für eine konsistenten Datenzugriff bereitstellt? Wird es direkt oder indirekt ausgesetzt sein?

    Es gibt einen Ort, denke ich, sowohl für das Entity Framework / LINQ to SQL, traditionellen Stored Procedures und andere Werkzeuge wie NHibernate (etc), aber Sie sollten die Wahl der Technologie rechtfertigen und rationalisieren, zuerst, und versuchen, es zu gewährleisten, geeignet für die heutigen und zukünftigen Bedürfnisse.

    EDIT: Sorry, ich habe vergessen, das großen: Wartbarkeit. Einige der Vorlage orientierte Lösungen bieten Ihnen ein paar anständigen Gewinne in der Lage, eine DAL nach Schema-Änderungen, über anderen zu regenerieren (wie handgeschriebenen Stored Procedures). Es lohnt sich die Produktivitätsgewinne gegen die Nachteile wiegen.

    Ich denke, dass zwischen Ihrer ursprünglichen Post und norbertB die Ergänzungen Sie so ziemlich alles abgedeckt haben. Beginnen Sie mit den absoluten Einschränkungen (und denken Sie daran, dass, nur weil ein Kunde einmal nicht zu etwas sagt - auch wenn sie sagen, dass es absolut ist - die Sie nicht bedeuten, kann nicht helfen, ihre Meinung zu ändern ...). Sobald Sie das Feld mit den absoluten Einschränkungen verengt haben Blick auf die anderen Dinge.

    Eine Sache, die aus zu sein schien links war Flexibilität. Zum Beispiel, wenn ich versuche, zwischen zwei ähnlichen Technologien zu wählen, und ich wusste, dass man kann aktualisierbar Ansichten und die andere unterstützen konnte nicht, auch wenn ich für aktualisierbare Ansichten zu der Zeit absolut keine Notwendigkeit hätte, würde mich immer noch zuneigen, dass man " nur für den Fall“.

    Ich bin wirklich nur denke an zwei Dinge. Die erste ist, ob ich, dass alles andere Angelegenheiten so viele Daten haben würde. Wenn Sie nicht Millionen von Zeilen in die Tabellen setzen, ist es wahrscheinlich egal, welche Technik wirst du verwenden, weil sie werden alle schnell genug arbeiten.

    Die zweite Sache ist, ob ich LINQ verwenden kann, weil ich finde, dass mithilfe von LINQ (to SQL to Entities, zu LLBLGen, es spielt keine Rolle) die Datenbank gibt Ihnen zwei wichtige Dinge abzufragen. Die erste ist, dass es sehr einfach ist, Abfragen und an zweiter Stelle zu schreiben, ist es relativ leicht, zwischen zwei Gerüsten zu wechseln, die LINQ müssen, falls die Anforderungen ändern.

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