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ó!!!
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
„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
„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
„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
Demó
− CLR 2.0 és CLR 4.0 egy processzben
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
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
Demó
− Dynamic Language Runtime:− C# és IronPython objektumok integrációja
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ó
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
Demó
− Típus-ekvivalencia
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...
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
C# 4.0 megoldás #1
Excel.Chart chart = ...chart.ChartWizard( Source: range.CurrentRegion, Title: "Memory Usage in " + Environment.MachineName);
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);
C# 4.0 megoldás #2
var word = new Word.Application();word.Documents.Add();
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++;}
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++;}
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
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
Demó
− Párhuzamos kódvégrehajtás:− Parallel „For”− PLINQ
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
Demó
− Task Parallel Library
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
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
Demó
− Code Contracts− Definíció− Eszközök használata
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!
Composition Container
Catalog
PartPart
Part
Managed Extensibility Framework
Part
Export
Import
Catalog
Part
Part
#1 #2
#3
#4
#5#6
Demó
− Managed Extensibility Framework− Export és Imprt definíciók− Runtime kompozíció
Ú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
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
Kérdések???Novák Istvá[email protected]://divedeeper.dotneteers.net
© 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.