Whats New In .NET Framework 4x - CodePlex

burnwholeInternet και Εφαρμογές Web

5 Φεβ 2013 (πριν από 4 χρόνια και 8 μήνες)

266 εμφανίσεις

Lap Around the


.NET Framework 4

Name

Title

Company

A Look Back


.NET 1.0

.NET 1.1

.NET 2.0

3.0

3.5

.NET 4

2002

2003

2008 CTP

2005
-
08

CLR 1.0

CLR 1.1

CLR 2.0

CLR 4

SP1

The .NET Framework

Base Class Libraries

The CLR

JIT &
NGEN

Garbage
Collector

Security
Model

Exception
Handling

Loader &
Binder

WPF

Win
Forms

DLR

ASP.NE
T

WCF

And
more!

LINQ

Client Applications

WPF 4

MEF

Web Applications

Web Forms 4

AJAX 4

Client/Server

WCF 4

The Building Blocks


Parallel Computing

Task Parallel Library

Parallel LINQ

Data Access

Entity Framework 4

Data Services 1.5

Runtime

DLR Integration

Type Equivalence

In
-
Process
SxS

Web Forms 4
-

Client ID

1) User Control (No ID)

2) User Control (“
HeaderForm
”)

Control Hierarchy

3) Drop Down List (“States”)

Resulting Client IDs:

1)
ctl00

2)
ctl00_HeaderForm

3)
ctl00_HeaderForm_States

Web Forms 4
-

Routing

Request:

Products/Bikes

ASP.NET Routing


Route:

Product/{name}
-
> Product.aspx

WebForms Page


File Name:

Product.aspx


Route Values:

Name = “Bikes”

Response

ASP.NET WEB FORMS 4


CLIENT ID / ROUTING

AJAX 4
-

Client Templates

Server
-
Side (WebForms):

<ItemTemplate>


<li>
<%# Eval("Name") %>
</li>

</ItemTemplate>

Client
-
Side

<
ul

class="
sys
-
template
">


<
li
>
{{ Name }}
</
li
>

</
ul
>


AJAX 4
-

DataContext

*
DataContext

includes change tracking automatically

ASMX

WCF

ADO.NET

Data Services

ASP.NET MVC

JsonResult

Etc.

1. Request

2. JSON Data

Data

Context

3. Modify

Data

4. Save Data

ASP.NET AJAX 4


CLIENT TEMPLATES /
DATACONTEXT

WPF 4

Data Grid


Ribbon


Multi
-
Touch


Windows 7 Enhancements

Managed Extensibility
Framework?

The
Managed Extensibility Framework
(MEF) is a
new library
in the .NET Framework that enables
greater reuse of applications and components. Using
MEF, .NET applications can make the shift from
being statically compiled to
dynamically
composed

Open/Closed Principle

Software entities should be

open for extension
,

but
closed for modification
.


Known

vs.
Un
known

CLIENT APPLICATIONS


WPF 4
DATAGRID

/ MEF

Entity Framework 4

Model
-
First


POCO


Lazy Loading


Foreign Keys

A

lot of new for WF/WCF 4

XAML
-
only workflows are the new default

Unified model between WF, WCF, and WPF

Extended base activity library

Simplified WF programming model

Support for arguments, variables, expressions

Major improvements to WCF integration

Runtime and designer
improvements

Service discovery for WCF

Hosting & management via "
Dublin“

ADO.NET Data Services 1.5

Server Enhancements

Row count

Server
-
side paging

Friendly feeds

BLOB
streams


Client Enhancements

Row Count

WPF/SL data binding

ADO.NET DATA SERVICES


ROW COUNT AND SERVER
-
SIDE PAGING

The Parallel Computing Initiative

Letting the
brightest developers
solve
business

problems,
not concurrency

problems.

“Concurrency for the masses”

Parallel Computing with .NET 4

1.
Task Parallel Library (TPL)


2.
Parallel LINQ (PLINQ)


3.
Coordination Data Structures (CDS)


4.
System.Threading

Improvements

Parallel LINQ


Parallel LINQ (PLINQ)

enables developers to
easily
leverage

manycore

with a
minimal impact

to
existing LINQ programming model

var

q = from p in people




where
p.Name

==
queryInfo.Name

&&


p.State

==
queryInfo.State

&&


p.Year

>=
yearStart

&&


p.Year

<=
yearEnd



orderby

p.Year

ascending




select p;

.
AsParallel
()

PARALLEL COMPUTING


PARALLEL LINQ (PLINQ)

Why the DLR?

Common Language Runtime

Statically
-
Typed

C#

VB

Ruby

Python

Dynamically
-
Typed

Why the DLR?

Common Language Runtime

Statically
-
Typed

C#

VB

Ruby

Python

Dynamically
-
Typed

Dynamic Language Runtime

.NET Dynamic Programming

Python

Binder

Ruby

Binder

COM

Binder

JScript

Binder

Object

Binder

Dynamic Language Runtime

Expression Trees

Dynamic Dispatch

Call Site Caching

IronPython

IronRuby

C#

VB.NET

Others…

Dynamically Typed Objects

Calculator

calc =
GetCalculator
();

int

sum =
calc.Add
(10, 20);

object

calc =
GetCalculator
();

Type

calcType

=
calc.GetType
();

object

res =
calcType.InvokeMember
(
"Add"
,


BindingFlags.InvokeMethod
,
null
,


new

object
[] { 10, 20 });

int

sum = Convert.ToInt32(res);

ScriptObject

calc =
GetCalculator
();

object

res =
calc.Invoke
(
"Add"
, 10, 20);

int

sum =
Convert
.ToInt32(res);

dynamic

calc =
GetCalculator
();

int

sum =
calc.Add
(10, 20);

Statically

typed
to be dynamic

Dynamic method
invocation

Dynamic
conversion

DLR INTEGRATION

Type Equivalence

Interop

Assemblies translate between
managed code
and
COM


For each interface,
struct
,
enum
,

delegate, and member, contains a

managed equivalent with marshalling data

However!

Primary
Interop

Assemblies
cause
many pain points


Go Away, PIA!

1.
Compilers
embed

the portions of the
interop

assemblies that the add
-
ins
actually use


2.
Runtime
ensures

the embedded
definitions of these types are
considered equivalent


CLR 4


TYPE EQUIVALENCE

.NET Framework Compatibility


.NET 4.0 is a highly compatible release

.NET 4.0 does not auto

roll forward

You must add a configuration file with a specific switch to get 3.5
apps to run on 4.0

.NET Framework Compatibility

Hang on… if 4.0 is compatible,

why not run 3.5 apps
automatically on 4.0?

The BEST thing is always to prefer
running on the version of the
framework you built against

Contact
netfxcf@microsoft.com

and submit your app for testing!

CLR 2
-

Existing Side
-
By
-
Side

Host Process (i.e. Outlook)

.NET 2.0

2.0
add
-
in

3.0

3.5

3.0
add
-
in

3.5
add
-
in

1.1
add
-
in

.NET 1.1

CLR 4
-

In
-
Process Side
-
By
-
Side

.NET 2.0

.NET 4.0

2.0
add
-
in

3.0

3.5

Host Process (i.e. Outlook)

3.0
add
-
in

3.5
add
-
in

4.0
add
-
in

QUESTIONS?

© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be re
gis
tered 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
dat
e 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 informatio
n p
rovided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.