| 

.NET C# Java Javascript Exception

1
In der Frage EF4 Kapselungsproblem kam die Zusatzfrage auf, wie man am günstigsten vom DAL/ORM einer Anwendung abstrahiert. Mich würde interessieren, was zu dieser Frage heutzutage als best-practice angesehen wird. Gegensätze sind hierbei sicherlich Implementierungsaufwand und architekturelle Reinheit. Ich würde mich dabei tendentiell dafür aussprechen, keine Abstraktion über dem ORM zu verwenden, aber das ist eventuelle nicht die beste Lösung. Wie macht ihr es in euren Projekten?

DAL = Data Access Layer
ORM = Object-Relational Mapper (Linq2Sql, Hibernate, ...)
News:
15.04.2011
Marvin Steppat 4,0k 1 4 8
2 Antworten
2
Ich setze hierfür MEF ein. Dadurch ist der darüberliegenden Schicht (i.d.R. der BusinessLayer) lediglich ein Interface des DataAccessLayers bekannt und losgelöst von der Implementierung des DataAccessLayers.
Sollte der DataAccessLayer irgendwann ersetzt werden (Gründe könnte die Umstellung auf völlig anderes Datenbanksystem oder Datenzugriffsmethoden wie ORM sein), muss der DataAccessLayer nur das bereits bestehende Interface implementieren. Theoretisch kann der Austausch des DataAccessLayers on-the-fly geschehen, da der BusinessLayer keine Verweise auf den DataAccessLayer hält.
15.04.2011
Jürgen Luhr 7,1k 2 9
1
Hi, schwierige Frage:

Wenn man es richtig machen würde, müsste man die BusinessObjects vom EF koppeln.
Wir nutzen beide varianten : Entities vom EF direkt in der Anwendung nutzen oder BusinessLayer und DataLayer separieren und die Objekte im Businesslayer mit AutoMapper zu den EF Objekten Mappen.

Vorteil der ersten Methode ist definitiv die Self tracking Funktion usw.
Bei verteilten Anwendungen würde ich aber Variante 2 Nutzen.

Logischerweise nutze ich bei beiden varianten das Repository Pattern und probiere, je nach Größe der Anwendung per DI/IOC alles zu Injecten

Grüße
15.04.2011
Pawel Warmuth 195 6

Stelle deine Architektur-Frage jetzt!