overview of .net framework - download.microsoft.com · presentation asp.net (webforms, mvc, dynamic...

Post on 24-Jun-2020

32 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

.NET Framework 4.0

Network support and managed

services

.NET Framework Current "Layer Cake"

.NET Framework 2.0 + SP1

Windows Presentation Foundation

Windows Communication

Foundation

Windows Workflow Foundation

Windows CardSpace

.NET Framework 3.0 + SP1

.NET Framework 3.5

LINQWF & WCF

Enhancements

Add-in Framework

Additional Enhancements

.NET Framework 3.5 + SP1

MVC Dynamic Data Entity Framework Data Services

Core

Services

.NET Framework 4.0

Base Class Library

Common Language Runtime

Windows Workflow

Foundation

Managed Extensibility Framework

Data ServicesWindows

Communication Foundation

“Velocity”

User Interface

Windows Presentation Foundation

ASP.NET(WebForms, MVC,

Dynamic Data)

Data Access

Entity Framework

LINQ

ADO.NET

Parallel Extensions

WinForms LINQ to SQL

LanguagesDynamic Language

Runtime

Whats New In Base Class Library

•Declaration & consumption of extensibility points

•Monitoring for new runtime extension

Managed Extensibility Framework

•BigInteger

•ComplexNumber

•Tuple

•SortedSet

New Data Types

•Memory Mapped Files

•Unified Cancelling Model

I/O Improvements

Managed Extensibility Framework

Create reusable components

Don’t we already have reusable components?No need to create infrastructure from scratch

MEF is dynamically composed

What’s so dynamic about itCurrent plugin model tied to specific apps

Same component cannot be used across apps

Discoverable at runtime

Tagging for rich queries and filtering

MEF Architecture

MEF

CatalogDiscovers and maintain extensions

CompositionContainerCoordinate creations and satisfy dependencies

ComposablePartOffer on or more exports

May depend on imports for extension it uses

Managed Extensibiity Framework

New Language Features

C# 4.0Named Parameters

Optional Parameters

Dynamic Scoping

Generic Variance

Extension Property

VB.NET 10

Statement Lambdas

Multiline Lambdas

Auto implemented Properties

Collection Initializ er

Generic Variance

Extension Property

Optional and Named Parameter

Some methods have excessive parameters

Too many overloads of methods

Most aren’t used in everyday scenario

Developers still have to supply default values

Heavy use of Type.Missing

Comma counting is a pain

Difficult to remember parameter by position

Overload Of Overloads

class Book{

// Multiple constructorsBook() : this(“”, “”, “”, ){}

Book(string isbn) : this(isbn, “”, “”, 0){}

Book(string isbn, string title) : this(isbn, title, “”, 0){}

Book(string isbn, string title, string author) : this(isbn, title, author, 0){}

// Master Constructor which gets called by othersBook(string isbn, string title, string author, int pages){

// Do the actual work here}

}

Optional Parameters

class Book{

// Use optional parametersBook(string isbn=“”, string title=“”, string author=“”, int pages=0){

// Do the actual work here}

}

:::Book book = new Book(“1-43254-333-1”);Book book = new Book(“1-43254-333-1”, “How not to code”);Book book = new Book(“1-43254-333-1”, “How not to code”, “Copy Paster”);Book book = new Book(“1-43254-333-1”, 240); // Cannot skip parameters

Named Parameter

class Book{

// Use optional parametersBook(string isbn=“”, string title=“”, string author=“”, int pages=0){

// Do the actual work here}

}

:::Book book = new Book(isbn:“1-43254-333-1”);Book book = new Book(isbn:“1-43254-333-1”, title:“How not to code”);Book book = new Book(isbn:“1-43254-333-1”, title:“How not to code”, author:“Copy Paster”);Book book = new Book(isbn:“1-43254-333-1”, pages:240);

Dynamic scoping

C# is static type languagesTypes are explicitly defined

Methods are bound at runtime

Dynamic dispatch existsReflection API

Method.Invoke() is tedious

COM Automation is based on IDispatchMay not have .TLB

Lookup can be purely runtime

Certain Application Types require DynamismE.g. SOAP/REST proxies

Dynamic in .NET 4.0

CLR is mostly static typeCompile time type checking (e.g. IUnknown)

DLR added dynamism to .NETRun time type checking (e.g. IDispatch)

DLR is now part of .NET 4.0 APIFull support of IronRuby, IronPython

Dynamic dispatch now built into .NET/C#

Dynamic Dispatch

Introduction of type – dynamicCompiler merely packages information

Compiler defers binding to runtime

Built-in support for COM CallsUses IDispatch interface

PIA not required

Runtime binding for framework objects

Build your own – IDynamicObjectIronPython, IronRuby use this

E.g. RestProxy

Dynamic Data Type

Isnt Object type dynamic already?

.NET already has var, why add dynamic?

Object – Static type, base class

var – is ALSO static type, compiler inferred

dynamic – Evaluation deferred

Dynamic implementation

dynamic d = GetFlyingObject(“Superman”);d.Fly(); // Up, up and away

dynamic d = GetFlyingObject(“AirPlane”);d.Fly(); // Take off

dynamic d = GetFlyingObject(“Cat”);d.Fly(); // OOPS… but at runtime

Dynamic Dispatch

Variance

CovarianceSimilar to base reference to derived class

Covariance is applied to arrays, delegates..

ContravarianceSimilar to derived instance passed to base

Changes to Variance

Variance can now be applied to InterfacesVariant types supports interfaces and delegates

Variance applies to reference conversion only

Value types are not supported

CovarianceRequires the use of “out” keyword

ContravariantRequires the use of “in” keyword

It could be automatically inferred but that could lead to code-breaking when interface definition changes

Code Contracts

FoundationDesign by contract

Based on MSR’s SPEC#

What does it bring?Improved testability

Static verification

API Documentation

How does it help?Guarantee obligations on entry (parameter validations)

Guarantee property at exit (return value range)

Maintain property during execution (object invariance)

Code Contracts

New namespace in .NETSystem.Diagnostics.Contracts

Parameter validationContract.Requires()

Return value guaranteeContract.Ensures()

Object state guaranteeContract.Invariant()

Code Contracts

Compile generates the IL code

Contracts are conditionally compiled

Define CONTRACTS_FULL to enable

Parallelism in .NET 4.0

Don’t we have multithreading and ThreadPool?Requires too much work

Requires understanding of nitty-gritties

Bifurcated thinking for single CPU vs. multi

What does parallelism bring in?Make multicore programming simple

Automatcially handle single vs. multicore

Focus on “what” rather than “how”

Parallels in .NET

Task Parallel Library (TPL)Task and Data Parallelism

LINQ to Parallel (PLINQ)Use LINQ to implement parallelism on queries

Coordinated Data StructuresHigh performance collection classes which are lock free and thread safe

Parallel Diagnostic ToolsParallels Debugger and VSTS Profiler concurrency view

Task Parallel Library

Write code which automatically uses multicore

Expose potential parallelism in sequential code

No language extension (aka Syntactic sugar) yet

Parallelism typesThe Task Class – Task Parallelism

The Parallel Class – Data Parallelism

Task ManagementTaskManager class

Use default or create your own

Task Parallel Library

top related