Dienstag, 6. April 2010

ORM-Mapping, Entity-Framework, nHibernate, Refectoring, lazy-Loading

Für viele glückliche DBAs, die Sätze "lazy loading", "verzögerte Initialisierung ',' verzögertes Laden ',' On-Demand-loading 'Indirektion' und 'just-in-time loading" haben keine Macht, Ängste oder Ekel hervorrufen. Für der Rest von uns, die mehr in die Anwendungsentwicklung beteiligt sind, sind diese Worte dread alternative Bezeichnungen für ein System für alle Object / Relational Mapper (ORMs), in dem die ORM opt, um das Abrufen der Eigenschaften der Verzögerung kann ein nicht-skalare " Objekt "aus der Datenbank, bis Sie sie im Code-Abfrage. Dieses Gerät kann eine bessere Leistung, wenn sie ordnungsgemäß verwendet wurden, aber so ist das gemütliche Kokon von einem ORM, dass der Programmierer nur vage über die Folgen auf der ganzen Linie aus einer unschuldigen Zugang eine Eigenschaft wie vorgesehen die 'Order Details "eines Kunden bestellen. Es ist sehr leicht unabsichtlich verursacht riesige Mengen langsam und unnötig, Arbeit an der Datenbank-Ebene, vor allem, wenn der bloße Zugang der Wert der Immobilie kann zu einer Hin-und Rückfahrt mit der Datenbank führen.
ORMs kann sehr wertvoll sein, aber zu Problemen führen, wenn verwendet schlecht. Es gibt mehrere Wege zur Vermeidung von "Lazy-Loading Lethargie". Viele Probleme passieren, wenn Programmierer Eigenschaften, die nur das Abrufen einer bestehenden Feld Wert, sondern als eine Methode, die die Wahrscheinlichkeit von Folgeschäden Arbeit impliziert automatisch verwenden. Es hilft auch, "Profil"-Anwendungen bei der Entwicklung sorgfältig zu ihnen, um diese Art von Problemen zu erkennen. Besser noch, Sie können all diese Probleme durch die Pflege in die Gestaltung des Data-Access Layer (DAL) ausweichen. ORMs wachsen. Während Hibernate war ursprünglich ganz unschuldig die Existenz oder die Verwendung von gespeicherten Prozeduren oder Funktionen zugeordnet und nur auf die Ansichten und Basistabellen, jetzt die Entity Framework (v4) ermöglicht es dem Datenbank-Entwickler die vollständige Kontrolle über die logische Schnittstelle zwischen der Datenbank und den Data Access haben Schicht. Es kann einen großen Unterschied machen, um die Leistung sowie die offensichtliche Vorteile für die Sicherheit und die Leichtigkeit des Refactoring.
Wenn Sie bewusst die Art der Datenbank-Entitäten sind und ihre Beziehungen, sind Sie weniger wahrscheinlich, um eine Anwendung, die die Datenbank prügelt produzieren. ORMs gerne eine alternative Folge-freien Zugang zu einer Datenbank Basistabellen versprechen. In Wirklichkeit, was man mit AdventureWorks Arbeit bringt nur eine echte kommerzielle Datenbank in die Knie. Sie können nicht die Schuld der ORMs oder sogar "Lazy Loading": die Fehler der Regel aus dem Missbrauch der perfekt gute Entwicklung Aids geschehen. Die Entwickler haben jetzt bessere Werkzeuge, aber sie müssen die Fähigkeiten, um sie richtig zu nutzen.

Keine Kommentare:

Kommentar veröffentlichen

 
Nereides.Rss.Feeds | Delphi lernen, Delphi Kurs