net 2.0 2.0 add-in 3.0 3.5/sp1 host process 3.0 add-in 3.5 add-in 1.1 add-in.net 1.1 clr 2.0 – clr...

35
A .NET 4.0 fejlesztői újdonságai Novák István Grepton Zrt. [email protected] http://divedeeper.dotneteers.net

Upload: aryanna-wark

Post on 31-Mar-2015

230 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

A .NET 4.0 fejlesztői újdonságai

Novák István

Grepton [email protected]://divedeeper.dotneteers.net

Page 2: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Célok

− Áttekintést adni a .NET 4.0 fontos és hasznos újdonságairól

− Bemutatni az újdonságok gyakorlati jelentősségét

− Demó, demó... És demó!!!

Page 3: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Témakörök

„In-process side-by-side”

kódvégrehajtás

Dynamic Language Runtime

COM Interop változások,

típusekvivalencia

Párhuzamos kódvégrehajtás

Code Contracts

Managed Extensibility Framework

Page 4: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

„Side-by-side” kódvégrehajtás

.NET 2.0

2.0 add-

in

3.0

3.5/SP1

Host Process

3.0 add-

in

3.5 add-

in

1.1 add-

in

.NET 1.1

CLR 2.0 – CLR 1.1

Page 5: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

„Side-by-side” kódvégrehajtás

.NET 2.0

2.0 add-

in

3.0

3.5/SP1

Host Process

3.0 add-

in

3.5 add-

in

CLR 2.0 – CLR 1.1CLR 4.0 – CLR 2.0

Page 6: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

„Side-by-side” kódvégrehajtás

.NET 2.0

2.0 add-

in

3.0

3.5/SP1

Host Process

3.0 add-

in

3.5 add-

in

CLR 4.0 – CLR 2.0

.NET 4.0

4.0 add-

in

Page 7: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Demó

− CLR 2.0 és CLR 4.0 egy processzben

Page 8: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Modell-specifikus Interop

Nyelvek és objektummodellek

Statikus nyelvek(pl. C++, C#)

Objektummodellek(pl. Office, HTML DOM)

Dinamikus nyelvek(pl. Python, Ruby)(Visual Basic)

.NET CLR

COM Interop

VB Runtime

Python, Ruby,

Interop

Page 9: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Dynamic Language Runtime

Dynamic Language Runtime

IronPython

IronRuby C#Visual Basic

Egyéb

Expression Trees

Call Site Caching

Dynamic Object Interop

IronPythonIronRub

yOffice

Silverlight

.NETSaját

környezet

Programozási nyelvek és DLR-ügyfelek

Futásidejű illesztők

Futásidejű környezetek

Page 10: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Demó

− Dynamic Language Runtime:− C# és IronPython objektumok integrációja

Page 11: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

COM Interop változások

− „No-PIA” kódfordítás− Nincs szükség az Interop assemblykre− A fordító létrehozza az Interop típusokat

− Típus-ekvivalencia− Különböző assemblykben definiált

típusok− COM Import− Automatikus referencia konverzió

Page 12: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Típus-ekvivalencia példa

TypeEquivalenceDemo

TableHelper

Main

Word.Application

InsertTable

Word.Application

Word PIA

1

typeof(1) == typeof(2) false

typeof(1).IsEquivalentTo(typeof(2)) true

2

Page 13: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Demó

− Típus-ekvivalencia

Page 14: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

C# 4.0: COM Interop

− Új C# nyelvi képességek− dynamic típus a DLR integráció

támogatására− opcionális metódus paraméterek− név szerint átadott argumentumok− automatikus ref konverzió− COM indexelt tulajdonságok

− Más C# 4.0 újdonságok...

Page 15: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

C# (<4.0) COM „kód horror” #1Excel.Chart chart = ...chart.ChartWizard( range.CurrentRegion, // --- Source Type.Missing, // --- Gallery Type.Missing, // --- Format Type.Missing, // --- PlotBy Type.Missing, // --- CategoryLabels Type.Missing, // --- SeriesLabels Type.Missing, // --- HasLegend "Memory Usage in " + Environment.MachineName, // --- Title Type.Missing, // --- CategoryTitle Type.Missing, // --- ValueTitle Type.Missing); // --- ObjectTitle

Page 16: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

C# 4.0 megoldás #1

Excel.Chart chart = ...chart.ChartWizard( Source: range.CurrentRegion, Title: "Memory Usage in " + Environment.MachineName);

Page 17: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

C# (<4.0) COM „kód horror” #2var word = new Word.Application();object template = Type.Missing;object newTemplate = Type.Missing;object docType = Type.Missing;object visible = Type.Missing;word.Documents.Add( ref template, ref newTemplate, ref docType, ref visible);

Page 18: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

C# 4.0 megoldás #2

var word = new Word.Application();word.Documents.Add();

Page 19: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

C# (<4.0) COM „kód horror” #3foreach (var p in processes){ ((Excel.Range)excel.Cells[i, 1]).Value2 = p.ProcessName; ((Excel.Range)excel.Cells[i, 2]).Value2 = p.WorkingSet64; i++;}

Page 20: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

C# 4.0 megoldás #3

foreach (var p in processes){ excel.Cells[i, 1].Value = p.ProcessName; excel.Cells[i, 2].Value = p.WorkingSet64; i++;}

Page 21: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Párhuzamosság: kihívások

− Egyre több CPU mag a számítógépekben− Ez a teljesítménynövekedés iránya− Szoftver: a leggyengébb láncszem− Szálkezelés nehézségei

− Microsoft válasz:− Deklaratív párhuzamosság− Belépési korlát alacsonyabb szintre

helyezése

Page 22: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Programozási modellek

Concurrency Runtime

Párhuzamos kódvégrehajtás

ThreadPool

Resource Manager

Task Scheduler

Data

Stru

ctu

res fo

r coord

inatio

n

Concu

rrent

Data

Str

uct

ure

s

Resource Manager

Task Scheduler

Task Parallel Library

PLINQ

Parallel Pattern Library

Agents Library

Felügyelt (menedzselt) kód Natív kód

Operációs rendszer

Szálkezelés

Integrált eszközök

Parallel Debugger Tool

Windows

Profiler, Concurrency

Analysis

HPC MPI Debugger

Page 23: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Demó

− Párhuzamos kódvégrehajtás:− Parallel „For”− PLINQ

Page 24: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Inicializálás

Task A

Szálak Helyett: TaskParallel Task Library

− Folyamatgráf leírása

− Automatikus ütemezés

− Szinkronizáció− Kivételkezelés− Skálázódás

Task I1

Task A1

Task A2

Task A3

Task A4

Task B

Task B1

Task B2

Task B3

Task B4

Task B5

Task I2

Összegzés

Task C1

Task C2

Page 25: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Demó

− Task Parallel Library

Page 26: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Code Contracts

− Típus és interfész definíciók hiányosságai:− Kevés információ a viselkedésről

− Mit vár el egy művelet? („preconditions”)− Milyen állapotot biztosít? („postconditions”)− Szolgáltatás-objektum állapota („object

invariants”)public class Rational{ public Rational(int numerator, int denominator); public int Numerator {get; } public int Denominator { get; } public Add(Rational other); // ... }

Precondition:denominator != 0

Postcondition:<result> != 0

Object invariant:denominator != 0

Page 27: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Code Contracts

− precondition, postcondition, object invariants jellemzők definiálása

− Ezek felhasználása:− Futásidejű ellenőrzésre− Statikus kódanalízisre− Dokumentáció készítésére

− Runtime: .NET Framework 4.0 része− Eszközök: letölthetők

Page 28: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Demó

− Code Contracts− Definíció− Eszközök használata

Page 29: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Managed Extensibility Framework− A .NET Framework 4.0 része. Célja:

Segíteni a fejlesztőket abban, hogy statikusan fordított alkalmazások helyett

dinamikusan (akár futásidőben) összeállított alkalmazásokat

készítsenek.

− Plug-in, Add-in komponensek fejlesztése

− Nem IoC/DI keretrendszer!

Page 30: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Composition Container

Catalog

PartPart

Part

Managed Extensibility Framework

Part

Export

Import

Catalog

Part

Part

#1 #2

#3

#4

#5#6

Page 31: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Demó

− Managed Extensibility Framework− Export és Imprt definíciók− Runtime kompozíció

Page 32: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Útravaló

− A .NET 4.0 keretrendszer számos újdonságot tartalmaz, többek között:− Lényegesen jobb (COM) együttműködés− Párhuzamos kódvégrehajtás – deklaratív

módon− Managed Extensibility Framework

− Érdemes ezekkel megismerkedni!

− „Ask the Expert”, követő események

Page 33: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

További információ− DLR:

− http://msdn.microsoft.com/en-us/library/dd233052(VS.100).aspx

− Parallel Task Library:− http://msdn.microsoft.com/en-us/concurrency

− Code Contracts:− http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

− Managed Extensibility Framework:− http://www.codeplex.com/MEF− http://msdn.microsoft.com/en-us/library/

dd460648(VS.100).aspx

Page 34: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

Kérdések???Novák Istvá[email protected]://divedeeper.dotneteers.net

Page 35: NET 2.0 2.0 add-in 3.0 3.5/SP1 Host Process 3.0 add-in 3.5 add-in 1.1 add-in.NET 1.1 CLR 2.0 – CLR 1.1

© 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after

the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.