LINQ und Trennung der Datenbanklogik?

02/11/2007 - 08:10 von leslie eldrige | Report spam
Hallo,

Ich habe bereits vor làngerer Zeit über LINQ gelesen, frage mich aber, ob
dasEinsetzen dieser Technologie überhaupt einen Sinn macht?

In meinen Projekten trenne ich Datenbanklogik und Programmierlogik indem ich
alle meine SQL Abfragen auf dem SQL Server habe und diese dann vom Client
über SP aufrufe.
Nun wenn ich LINQ einsetzen würde, würde ich dann meinen SQL Code direkt auf
dem Client haben? Wàre die Performance dadurch nicht vielfach schlechter?
Ganz zu schweigen über die Lesbarkat des Codes (es erinnert an die Zeiten von
ASP)!?

PS: Kann man LINQ unabhàngig von einer Datenbank einsetzen? Wenn man mit
virtuellen Tabellen, die man auf im Cleintspeicher (RAM) erstellen würde
genau so gleich arbeiten könnte wie mit Tabellen aus einer Datenbank, dann
könnte das einige tàgliche Arbeiten mit grösseren Datenmàngen erleichtern
(z.B. Gruppierung, Sortierung, Suche usw.). Bisher konnte man gerade die
Gruppierung mehreren Arrays nur programmatisch lösen (bis die ToTable Methode
der View Klasse kam).

Gruss
les
 

Lesen sie die antworten

#1 Carl Schaffert
02/11/2007 - 10:32 | Warnen spam
Hallo Leslie,

Ich habe bereits vor làngerer Zeit über LINQ gelesen, frage mich aber, ob
dasEinsetzen dieser Technologie überhaupt einen Sinn macht?



Tja, wie bei allen Technologien macht es nur dann Sinn wenn man sie auch
Sinngemàß einsetzt ;-).

Seit geraumer Zeit beschàftige ich mich mit den einzelnen
Linq-Implementierungen (LinqToSQL, LinqToDataSet, LinqToEntities,
LinqToObject, LinqToXml etc. ...) Linq ist keine "Technologie" oder gar ein
neues "Paradigma" Linq ist vielmehr ein Konzept, welche die Implementation
aller Arten von Datenzugriffen vereinfacht und Datenzugriffstechniken (Xml,
Sql, Datenbanken, Textdateien, Registry, E-Mail-Nachrichten,
SOAP-Nachrichten, Excel/Word-Dateien, Arrays, Objektgraphen und und und...)
vereinheitlicht.

In meinen Projekten trenne ich Datenbanklogik und Programmierlogik indem
ich
alle meine SQL Abfragen auf dem SQL Server habe und diese dann vom Client
über SP aufrufe.



Das kannst du mit Linq weiterhin machen, mehr noch... mit Linq kannst du das
wesentlich einfacher und effizienter bewerkstelligen.

Nun wenn ich LINQ einsetzen würde, würde ich dann meinen SQL Code direkt
auf
dem Client haben?



Ja und nein ;-).

Wàre die Performance dadurch nicht vielfach schlechter?



Von welcher Performance redest du? Server? Client? Netzwerk?

Ganz zu schweigen über die Lesbarkat des Codes (es erinnert an die Zeiten
von
ASP)!?



Die Lesbarkeit des Quellcodes wird um ein vielfaches besser... Anfangs ist
es etwas gewöhnungsbedürftig, da du dich mit neuen Methoden/Konzepten
auseinandersetzen musst, die Teilweise schon mit .NET 2.0 Einzug gehalten
haben (generische Typen, Delegaten/Multifunktions-Delegaten, anonyme
Methoden, Enumerations/Iteratoren//Yield...) denn diese Konzepte zu
verstehen sind wichtig um die mit .NET 3.0/3.5 eingeführten Konzepte wie
lokale Typinferenz, Lambda-Ausdrücke, Erweiterungsmethode,
Objektinitialisierer, anonyme Typen, Abfrageausdrücke und und und zu
verstehen. Um Linq zu verstehen und die Möglichkeiten die Linq bietet
auszunutzen, ist es meiner Meinung nach unabdingbar zunàchst diese
Möglichkeiten/Konzepte der Frameworks (2.0/3.0/3.5) einigermaßen gut zu
beherrschen.

In letzter Zeit beschàftige ich mich viel mit LinqToXml und LinqToSQL, mein
Quellcode hat sich locker um die Hàlfte reduziert, ist weniger
Fehleranfàllig und um ein vielfaches einfacher zu lesen... der Einsatz von
Erweiterungen(Extensions) erleichtert die Arbeit sehr... und das Konzept das
dahinter steckt ist einfach genial *grins*.

Ach ja, vielleicht sollte ich noch dazu sagen, dass ich nicht zu denen
gehöre die "Geschàfts-Logik/Prozesse" auf der Datenbank abbilden, bei mir
gehört so etwas in den Quellcode, wozu ich n-Tier- und Layered-Patterns
einsetze. Schon deswegen ("Geschàfts-Logik/Prozesse" im Quellcode) ist es
mir ziemlich egal ob die Daten aus ner DB oder Xml oder sonstwoher kommen.
Linq unterstützt mich in meiner Phylosophie, die ich schon seit Jahren
umsetze, in erheblichem Umfang. Denn alleine der Aufwand, sich mit den
unterscheidlichsten Datenzugriffs-Techniken auseinander zu setzen, die zu
erlernen, ist/war in den vergangenen Jahren (zumindest ging es mir so),
schon gewaltig gewesen und hat mich viel viel Zeit (und Nerven) gekostet.
(Eben frage ich mich gerade weswegen ich auf die Welt kam... um mir das
alles... und noch mehr... anzutun???? Hmmmm... )


PS: Kann man LINQ unabhàngig von einer Datenbank einsetzen? Wenn man mit
virtuellen Tabellen, die man auf im Cleintspeicher (RAM) erstellen würde
genau so gleich arbeiten könnte wie mit Tabellen aus einer Datenbank, dann
könnte das einige tàgliche Arbeiten mit grösseren Datenmàngen erleichtern
(z.B. Gruppierung, Sortierung, Suche usw.).



Gerade dazu ist Linq pràdestiniert, bei der Verwendung von Linq spielt die
Herkunft der Daten und was du dann damit machst, keine wesentliche Rolle.

Vielleicht sollte ich noch erwàhnen, dass Linq nichts anderes macht als die
Möglichkeiten (Lambda/Erweiterungsmethoden etc) der Frameworks
2.0/3.0/3.5 in ein Màntelchen zu verpacken und damit ein einheitliches
Modell/Konzept bereit stellt (das Ganze hàttest du dir auch selbst
programmieren können!!!)... das wesentliche macht dann der Compiler, der das
Linq-Gerödels übersetzt ;-).

Gruß Carl

Ähnliche fragen