n-Tier und "neue" Möglichkeiten

20/04/2008 - 00:22 von Tobias Müller | Report spam
Hallo NG,

ich habe einwenig mit den neuen,bzw. zukünftigen Techniken des
Framework beschàftigt. Im einzeln waren das LINQ (to SQL) und
Entity-Framework und MVC-Framework für ASP.Net, aber das MCV ist für
mich keine Option. Aber die beiden anderen finde ich aber im Prinzip
sehr spannend. LINQ to SQL ist für schnelle (kleine) Projekte ein gute
Option, aufgrund der doch guten Integration in VS2008.
Entity-FW finde ich noch ein Tick ausgefeilter, da es mit einen Modell
arbeitet. Allerdings ist es halt noch Beta und auch mehr Aufwand.
Nun kommt aber mein Problem: Bisher habe ich immer nur
2-Schicht-Anwendung geschrieben, Logik und Darstellung waren immer
verzahnt. Gut, meine Projekte sind auch nicht wirklich so groß das drei
Schichten wirklich notwendig wàren, zumindes bisher. Da reicht es direkt
per SQL auf den Tabellen zuarbeiten.
Allerdings habe ich "nebenher" mit 3-Schicht-Anwendungen
experimentiert. Und dabei auch das EntityFW/LINQ to SQL getestet.
Damit kann man recht komfortable eine Datenschicht abbilden und durch
"erweitern" auch die Logik bekommt làsst umsetzen. Aber nun hatte aber
die Vorstellung, das nun diese Objekte aus der Business-Layer an für
Darstellung benutze. Nun fangen die Fragen und Probleme an.
Was wird nun zwischen diesen beiden Schichten ausgetauscht.
Sind es Business-Objekte, aber da stellt sich die Frage, wieviel des
Objektgraphen ich schicke und oft stehen Objekte ja im Context zu Quelle
wie EntityFW/L2SQL. Und wenn beide Schichten nur "Werte" austauschen,
geht mir die Typsicherheit flöten. Und "wo" werden die Objekte
bearbeitet? Im Business-Schicht hatte ich gedacht. Aber wie? Schickt die
Darstellungsschicht "Nachrichten" an die Business-Schicht?
In einen Test-Projekt habe nun ein Mischung versucht, es werden zwar
Objekte in der Darstellung benutzt und so typsicher Abgefragt. Aber
bearbeitung erfolgte per Nachricht. Hat zwar funktioniert, war aber
aufwendig und kam mir auch nicht sinnig vor.
Ich fürchte ja, da gibt nicht die richtige Lösung, aber mich würden
Erfahrungen und Lösungswege interessieren.
Insbesonder wie man ein "freies" Objekt aus der Datenbank erhàlt und
ohne eigen Syncron-Methoden zw. den Schichten austauscht.

Dank&Gruss
Tobias
 

Lesen sie die antworten

#1 Elmar Boye
20/04/2008 - 19:37 | Warnen spam
Hallo Toabis,

Tobias Müller schrieb:

Nun kommt aber mein Problem: Bisher habe ich immer nur
2-Schicht-Anwendung geschrieben, Logik und Darstellung waren immer
verzahnt.



Dafür ist Linq To Sql ideal. Denn mehr ist da (leider) out-of-the-box
nicht enthalten.

Was wird nun zwischen diesen beiden Schichten ausgetauscht.



Daran knabbern viele. Denn ohne zusàtzliche Logik geht die gesamte
"Eleganz" von Linq flöten, da mit dem Trenn vom DataContext das
eingebaute ChangeTracking verloren geht.
.

Sind es Business-Objekte, aber da stellt sich die Frage, wieviel des
Objektgraphen ich schicke und oft stehen Objekte ja im Context zu Quelle
wie EntityFW/L2SQL.



Der klassische Weg wàre ein Data Transfer Object (DTO):
<URL:http://martinfowler.com/eaaCatalog/...t.html>

Was allerdings eine Duplizierung der Objekte bedeutet und
reichlich zusàtzlichen Code. Den man zwar generieren kann,
aber der Linq Designer hilft da nicht weiter.

Derzeit findet man verschiedene (externe) Ansàtze.

Eine gute Seite ist <URL:http://oakleafblog.blogspot.com/>
Dort findest Du eine gute Übersicht über diverse Linq SQL/EF
Aktivitàten.

Nur einen daraus gepickt (ohne Wertung):
<URL:http://www.codeplex.com/LINQ2SQLEB>
wo Ansàtze (und Probleme) zu erkennen sind.

Gruß Elmar

Ähnliche fragen