Softwaresponsoren Mediasponsoren. Vorstellung KnowledgeCenter Neue Sprachfeautres in VB 9.0 LINQ to...

Preview:

Citation preview

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

Recommended