softwaresponsoren mediasponsoren. vorstellung knowledgecenter neue sprachfeautres in vb 9.0 linq to...
TRANSCRIPT
Sponsoren
Softwaresponsoren
Mediasponsoren
VB 9 & LINQ
Agenda
Vorstellung KnowledgeCenterNeue Sprachfeautres in VB 9.0LINQ to SQL in der Praxis
www.dnug-koeln.de www.justcommunity.de
LINQ mit VB 9.0 in der Praxis
Agenda
VorstellungDie Anwendung: KnowledgeBaseMotivation, Architektur & TechnologieDie neuen Sprachfeatures in VB 9.0LINQ im EinsatzTipp & Tricks zu Performance und Wartbarkeit
Motivation
Vorhandene KnowledgeBase bereits seit 4 Jahren im EinsatzKeine Erweiterungsmöglichkeiten, da closed sourceHersteller hat keine Updates mehr herausgebrachtUns fehlte eine .NET 3.5 Referenzanwendung ;-)
Die Anwendung
KnowledgeBase für Artikel und FachbeiträgeLive im Einsatz auf VB-Magazin.deFeatures:
Artikel posten, bearbeitenBewerten, kommentierenWindows Live Writer AnbindungRSS & XML für alle BereicheWebService für externe Datenschnittstellen (Forum)
Technologien
100 % .NET 3.5100 % Visual Basic!Entwickelt unter Visual Studio 2008WebFrontendWindows Communication FoundationSchnittstelle für den Windows Live WriterMicrosoft SQL Server 2005 (auch kompatibel zu 2008)LINQ to SQL für Verbindung zur Datenbank
Architektur
Klassische 3-Schichten ArchitekturBestehend aus:
WebFrontendBusiness LogikDataAccess
Modularer aufbau
Sprachfeatures VB9
demo
www.dnug-koeln.de www.justcommunity.de
Linq to Sql in der Praxis
Jan-Cornelius Molnar
Fazit
Linq ist super
Vielen Dank!!!
Agenda
Query ExecutionDataContextDisconnected Data (N-Tier ?)Query Compilation
Linq To Sql
DataContextSteuert DatenbankzugriffMappt Daten auf ObjekteSpeichert Änderungen
From x In dbx.ArticlesWhere x.IsPublished Take 5
Linq To SqlNameTitleGroup
demo
Linq Expressions
From x In dbx.ArticlesWhere x.IsPublished Take 5
Compiler
dbx.Articles.Where(Function(a As Article)
a.IsPublished ).Take(5)
Linq Expressions
Select
Where
Linq QueryProvider
dbx.Articles.Where(Function(a As Article)
a.IsPublished ).Take(5)
Take
Articles
Tags
…
&
Linq Expressions
SELECT TOP (5) * FROM [dbo].[Articles] WHERE [IsPublished] = 1
Select
Where
Take
Articles
Tags
…
&
Expression Visitor
Linq To SqlQuery Comprehension
demo
DataContext Lifetime
Dispose wann immer möglichNötig für Ausführung von Queries
Dispose Kein Change-Tracking
DataContext per Unit of work+ Transparent+ Threadsicher
- Nested Functions
Shared DataContext
+ Einfacher Zugriff+ Nested Functions
- Nicht transparent- Änderungen verwerfen?- Nicht threadsicher
Ambient DataContext
+ Mehr Transparenz+ Nested Functions+ Threadsicher
- Dispose?- Änderungen bei mehreren
Operationen
DataContext per BusinessObject+ Transparent+ Threadsicher+ Änderungen pro Instanz
? Nested Functions
Disconnected Data
ASP.NET, WCF, …DataContext = Connected Object
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 LifeTimeDisconnected ObjectsQuery Compilation
Q&A
www.dnug-koeln.de
www.justcommunity.de
Sponsoren
Softwaresponsoren
Mediasponsoren