.NET Datenzugriff einfach und performant mit Micro O/R Mappern

Post on 10-Aug-2015

59 views 1 download

Transcript of .NET Datenzugriff einfach und performant mit Micro O/R Mappern

Wer nutzt einen O/R Mapper?

Wer glaubt, dass sein O/R Mapper zu langsam ist?

Wer nutzt …

• Entity Framework• NHibernate• Telerik Data Access• LLBLGEN Pro• DataSets• DataReader• Dapper• NPOCO• PetaPoco• ORMLite

Was machen wir eigentlich den ganzen Tag?

Customer

Order OrderItem

Product

orders*

0…*

1

Name Street City Date

Customer Orders Id

OrderItem

City PriceShippe

d

Relation-ship

Relation-ship

30 % der Arbeitszeit sind verloren

• ?

?

DatenzugriffsalternativenFür das .NET Framework

DataReader (.NET 1.0 Style)

using (connection) { SqlCommand command = new SqlCommand( "SELECT CategoryID, CategoryName FROM Categories;", connection);

connection.Open(); SqlDataReader reader = command.ExecuteReader();

if (reader.HasRows) { while (reader.Read()) { Console.WriteLine("{0}\t{1}", reader.GetInt32(0), reader.GetString(1)); } } else { Console.WriteLine("No rows found."); } reader.Close(); }

„if you’re writing ADO.Net code by hand, you’re

stealing from your employer or client.”

Jeremy D. Miller, 7. November 2008, http://codebetter.com/jeremymiller/2008/11/07/how-to-design-your-data-connectivity-strategy/

(Typed) Datasets (.NET 1.1 Style)

Bewertung von Typed Datasets

• Schlechte Performance• Hoher Speicherverbrauch• Nur bedingt Interoperabel• …

Linq2Sql

Bewertung Linq2Sql

• Funktioniert nur mit SQL Server• Wird nicht mehr weiter entwickelt• Wird von MS nicht empfohlen

ORMs (Entity Framework)

NHibernate

OR-Mapper

• Unterstützen verschiedene Entwicklungsmodelle (DB First, Code First, …)• „Schützen(?)“ uns davor SQL schreiben zu müssen• Abstrahieren die Datenbank für uns

• Entwickler müssen nichts mehr über die DB wissen

• Können Daten bei Bedarf (Lazy) laden• Machen das Leben leichter… (?)

Seit ich O/R Mapper nutze muss ich mehr über die DB wissen, als je zuvor

Überraschungsfeatures von O/R Mappern

• Lazy Loading• Deffered Execution• Abfragen über mehrere Ebenen werden schnell

komplex• …

Weitere AlternativeMicro O/R Mapper

Was sind Micro OR Mapper

• Einfache Hilfsbibliotheken• Weniger ist mehr• In der Regel sehr SQL-lastig• Auf Performance ausgerichtet

Bekannte Micro OR Mapper

• Dapper von Sam Saffron• Massive von Rob Connery• Peta Poco von Top Ten Software

Dapper

• Sam Saffron / Stack Overflow• Open Source• Eine Assembly• Ultraschnell• Optimiert auf lesende Zugriffe• Pures SQL

DemoDapper

28

PetaPoco

• Topten Software• Kann mit Pocos und Dynamics umgehen• Inspiriert von Massive und SubSonic• Code Generierung durch T4 Templates• Pures SQL oder Hilfsfunktionen über Attribute

DemoPetaPoco

30

Was Micro O/R Mapper Ihnen nicht bieten

• Hohe Abstraktion• Lazy Loading• Change Tracking• Datenbankunabhängigkeit

Wann machen Micro O/R Mapper Sinn?

• Wenn Sie bzw. Ihr Team sehr nah an der Datenbank arbeitet• Wenn Sie möglichst viel Kontrolle haben möchten• Wenn Ihnen OR Mapper schon immer suspekt waren• Wenn Sie eine bestehende Lösung refactoren• Wenn Sie Angst vor Ihrem DBA haben

Fazit

• Folgen Sie nicht blind jedem Trend und jedem Experten!• Überlegen Sie kritisch, wann welche

Datenzugriffstechnologie Sinn macht• One Size Fits All trifft nur selten auf die Software

Entwicklung zu• Micro O/R Mapper können zusätzlich zu echten O/R

Mappern genutzt werden• Profilen Sie ihre Anwendung, finden Sie

Performanceengpässe und setzen Sie gezielt Micro O/R Mapper ein

35

Meine Dienstleistungen

• Schulungen• ASP.NET / AngularJS• Xamarin• TX Text Control• Infragistics NetAdvantage• Team Foundation Server• .NET Datenzugriff (Entity Framework, NHibernate, Micro O/R Mapper)

• Consulting• Durchführung von Technologieworkshops• Code- / Architekturreviews• Analyse von managed Memory Leaks• Prototypenentwicklung• Remote Entwickler-Support• Projektbegleitendes Coaching

• Softwareentwicklung• Mobile Apps (Windows 10, Windows 8, Windows Phone, Android, iOS)• Entwicklung von Web-Anwendungen mit ASP.NET und AngularJS

andre@andrekraemer.de | http://andrekraemer.de | http://andrekraemer.de/blog | http://github.com/AndreKraemer

.NET Performance Clinic. Kostenlose Performance Sprechstunde

3 Performance-Probleme die Sie in Ihrem Code haben könnten

Mittwoch, 17. Juni 201513:15 – 13:45

Kurzpräsentation/Demo, gefolgt von einer Q&A Runde