330 likes | 454 Views
Sponsoren. Softwaresponsoren. Mediasponsoren. VB 9 & LINQ. Agenda. Vorstellung KnowledgeCenter Neue Sprachfeautres in VB 9.0 LINQ to SQL in der Praxis. LINQ mit VB 9.0 in der Praxis. Agenda. Vorstellung Die Anwendung: KnowledgeBase Motivation, Architektur & Technologie
E N D
Sponsoren Softwaresponsoren Mediasponsoren
Agenda • Vorstellung KnowledgeCenter • Neue Sprachfeautres in VB 9.0 • LINQ to SQL in der Praxis
Agenda • Vorstellung • Die Anwendung: KnowledgeBase • Motivation, Architektur & Technologie • Die neuen Sprachfeatures in VB 9.0 • LINQ im Einsatz • Tipp & Tricks zu Performance und Wartbarkeit
Motivation • Vorhandene KnowledgeBase bereits seit 4 Jahren im Einsatz • Keine Erweiterungsmöglichkeiten, da closedsource • Hersteller hat keine Updates mehr herausgebracht • Uns fehlte eine .NET 3.5 Referenzanwendung ;-)
Die Anwendung • KnowledgeBase für Artikel und Fachbeiträge • Live im Einsatz auf VB-Magazin.de • Features: • Artikel posten, bearbeiten • Bewerten, kommentieren • Windows Live Writer Anbindung • RSS & XML für alle Bereiche • WebService für externe Datenschnittstellen (Forum)
Technologien • 100 % .NET 3.5 • 100 % Visual Basic! • Entwickelt unter Visual Studio 2008 • WebFrontend • Windows Communication Foundation • Schnittstelle für den Windows Live Writer • Microsoft SQL Server 2005 (auch kompatibel zu 2008) • LINQ to SQL für Verbindung zur Datenbank
Architektur • Klassische 3-Schichten Architektur • Bestehend aus: • WebFrontend • Business Logik • DataAccess • Modularer aufbau
Sprachfeatures VB9 demo
Linq to Sql in der Praxis Jan-Cornelius Molnar
Fazit Linq ist super Vielen Dank!!!
Agenda • Query Execution • DataContext • Disconnected Data (N-Tier ?) • Query Compilation
LinqToSql • DataContext • Steuert Datenbankzugriff • Mappt Daten auf Objekte • Speichert Änderungen Fromx Indbx.ArticlesWherex.IsPublishedTake5
Linq To Sql demo Name Title Group
LinqExpressions Fromx Indbx.ArticlesWherex.IsPublishedTake5 Compiler dbx.Articles.Where(Function(a As Article)a.IsPublished ).Take(5)
LinqExpressions dbx.Articles.Where(Function(a As Article)a.IsPublished ).Take(5) LinqQueryProvider Articles Select & Tags Where … Take
LinqExpressions Articles Select & Tags Where … Take Expression Visitor SELECT TOP (5) * FROM [dbo].[Articles] WHERE [IsPublished] = 1
DataContextLifetime • Dispose wann immer möglich • Nötig für Ausführung von Queries • Dispose Kein Change-Tracking
DataContext per Unit ofwork + Transparent + Threadsicher • NestedFunctions
SharedDataContext + Einfacher Zugriff + NestedFunctions • Nicht transparent • Änderungen verwerfen? • Nicht threadsicher
AmbientDataContext + Mehr Transparenz + NestedFunctions + Threadsicher • Dispose? • Änderungen bei mehreren Operationen
DataContext per BusinessObject + Transparent + Threadsicher + Änderungen pro Instanz ? NestedFunctions
Disconnected Data • ASP.NET, WCF, … • DataContext = ConnectedObject • Problem:Update mit „alten“ Daten
Disconnected Data demo
Query Compilation dbx.Articles.Where( … ) … Expression Tree Sql
Query Compilation demo
Query Compilation • Spart bis zu 30% der Ausführungszeit • Gewinnt immer
Summary • Gutes R.A.D. Tool • “Problemzonen” • DataContext LifeTime • Disconnected Objects • Query Compilation
www.justcommunity.de www.dnug-koeln.de
Sponsoren Softwaresponsoren Mediasponsoren