Overview of NET Framework Sanjay Vyas Whats New

  • Slides: 33
Download presentation
Overview of. NET Framework Sanjay Vyas

Overview of. NET Framework Sanjay Vyas

Whats New In Base Class Library Managed Extensibility Framework New Data Types I/O Improvements

Whats New In Base Class Library Managed Extensibility Framework New Data Types I/O Improvements • Declaration & consumption of extensibility points • Monitoring for new runtime extension • Big. Integer • Complex. Number • Tuple • Sorted. Set • Memory Mapped Files • Unified Cancelling Model

Managed Extensibility Framework • Create reusable components • Don’t we already have reusable components?

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 it – Current 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 Architecture

MEF • Catalog – Discovers and maintain extensions • Composition. Container – Coordinate creations

MEF • Catalog – Discovers and maintain extensions • Composition. Container – Coordinate creations and satisfy dependencies • Composable. Part – Offer one or more exports – May depend on imports for extension it uses

Demo Managed Extensibiity Framework

Demo Managed Extensibiity Framework

New Language Features C# 4. 0 • Named Parameters • Optional Parameters • Dynamic

New Language Features C# 4. 0 • Named Parameters • Optional Parameters • Dynamic Scoping • Generic Variance • Extension Property VB. NET 10 • • • Statement Lambdas Multiline Lambdas Auto implemented Properties Collection Initializer Generic Variance Extension Property

Optional and Named Parameter • • Some methods have excessive parameters Too many overloads

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 constructors Book() : this(“”, “”, )

Overload Of Overloads class Book { // Multiple constructors Book() : 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 others Book(string isbn, string title, string author, int pages) { // Do the actual work here } }

Optional Parameters class Book { // Use optional parameters Book(string isbn=“”, string title=“”, string

Optional Parameters class Book { // Use optional parameters Book(string isbn=“”, string title=“”, string author=“”, int pages=0) { // Do the actual work here } } : : : Book book = = new new Book(“ 1 -43254 -333 -1”); Book(“ 1 -43254 -333 -1”, “How not to code”, “Copy Paster”); Book(“ 1 -43254 -333 -1”, 240); // Cannot skip parameters

Named Parameter class Book { // Use optional parameters Book(string isbn=“”, string title=“”, string

Named Parameter class Book { // Use optional parameters Book(string isbn=“”, string title=“”, string author=“”, int pages=0) { // Do the actual work here } } : : : Book book Paster”); Book book = new Book(isbn: “ 1 -43254 -333 -1”); = new Book(isbn: “ 1 -43254 -333 -1”, title: “How not to code”, author: “Copy = new Book(isbn: “ 1 -43254 -333 -1”, pages: 240);

Dynamic scoping • C# is static type languages – Types are explicitly defined –

Dynamic scoping • C# is static type languages – Types are explicitly defined – Methods are bound at runtime • Dynamic dispatch exists – Reflection API – Method. Invoke() is tedious • COM Automation is based on IDispatch – May not have. TLB – Lookup can be purely runtime • Certain Application Types require Dynamism – E. g. SOAP/REST proxies

Dynamic in. NET 4. 0 • CLR is mostly static type – Compile time

Dynamic in. NET 4. 0 • CLR is mostly static type – Compile time type checking (e. g. IUnknown) • DLR added dynamism to. NET – Run time type checking (e. g. IDispatch) • DLR is now part of. NET 4. 0 API – Full support of Iron. Ruby, Iron. Python – Dynamic dispatch now built into. NET/C#

Dynamic Dispatch • Introduction of type – dynamic – Compiler merely packages information –

Dynamic Dispatch • Introduction of type – dynamic – Compiler merely packages information – Compiler defers binding to runtime • Built-in support for COM Calls – Uses IDispatch interface – PIA not required • Runtime binding for framework objects • Build your own – IDynamic. Object – Iron. Python, Iron. Ruby use this – E. g. Rest. Proxy

Dynamic Data Type • Isnt Object type dynamic already? • . NET already has

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 = Get. Flying. Object(“Superman”); d. Fly(); // Up, up and

Dynamic implementation dynamic d = Get. Flying. Object(“Superman”); d. Fly(); // Up, up and away dynamic d = Get. Flying. Object(“Air. Plane”); d. Fly(); // Take off dynamic d = Get. Flying. Object(“Cat”); d. Fly(); // OOPS… but at runtime

Demo Dynamic Dispatch

Demo Dynamic Dispatch

Variance • Covariance – Similar to base reference to derived class – Covariance is

Variance • Covariance – Similar to base reference to derived class – Covariance is applied to arrays, delegates. . • Contravariance – Similar to derived instance passed to base

Changes to Variance • Variance can now be applied to Interfaces – Variant types

Changes to Variance • Variance can now be applied to Interfaces – Variant types supports interfaces and delegates – Variance applies to reference conversion only – Value types are not supported • Covariance – Requires the use of “out” keyword • Contravariant – Requires the use of “in” keyword • It could be automatically inferred but that could lead to code-breaking when interface definition changes

Demo Variance

Demo Variance

Code Contracts • Foundation – Design by contract – Based on MSR’s SPEC# •

Code Contracts • Foundation – Design 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. NET – System. Diagnostics. Contracts • Parameter validation

Code Contracts • New namespace in. NET – System. Diagnostics. Contracts • Parameter validation – Contract. Requires() • Return value guarantee – Contract. Ensures() • Object state guarantee – Contract. Invariant()

Code Contracts • Compile generates the IL code • Contracts are conditionally compiled •

Code Contracts • Compile generates the IL code • Contracts are conditionally compiled • Define CONTRACTS_FULL to enable

Demo Code Contracts

Demo Code Contracts

Parallelism in. NET 4. 0 • Don’t we have multithreading and Thread. Pool? –

Parallelism in. NET 4. 0 • Don’t we have multithreading and Thread. Pool? – 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”

Visual Studio 2010 Tools / Programming Models / Runtimes Programming Models PLINQ Data Structures

Visual Studio 2010 Tools / Programming Models / Runtimes Programming Models PLINQ Data Structures Task Parallel Library Parallel Debugger Toolwindows Concurrency Runtime Thread. Pool Profiler Concurrency Analysis Task Scheduler Parallel Pattern Library Data Structures Integrated Tooling Concurrency Runtime Task Scheduler Resource Manager Operating System Threads Key: Managed Library Agents Library Native Library Tools

Parallels in. NET • Task Parallel Library (TPL) – Task and Data Parallelism •

Parallels in. NET • Task Parallel Library (TPL) – Task and Data Parallelism • LINQ to Parallel (PLINQ) – Use LINQ to implement parallelism on queries • Coordinated Data Structures – High performance collection classes which are lock free and thread safe • Parallel Diagnostic Tools – Parallels Debugger and VSTS Profiler concurrency view

User Mode Scheduler CLR Thread Pool Global Queue Worker Thread 1 Program Thread …

User Mode Scheduler CLR Thread Pool Global Queue Worker Thread 1 Program Thread … Worker Thread p

User Mode Scheduler For Tasks CLR Thread Pool: Work-Stealing Global Queue Local Queue Worker

User Mode Scheduler For Tasks CLR Thread Pool: Work-Stealing Global Queue Local Queue Worker Thread 1 Task 2 Program Thread Task 4 3 Task 5 … … Local Queue Worker Thread p Task 6

Task Parallel Library • • Write code which automatically uses multicore Expose potential parallelism

Task Parallel Library • • Write code which automatically uses multicore Expose potential parallelism in sequential code No language extension (aka Syntactic sugar) yet Parallelism types – The Task Class – Task Parallelism – The Parallel Class – Data Parallelism • Task Management – Task. Manager class – Use default or create your own

Demo Task Parallel Library

Demo Task Parallel Library

Resources Software Application Developers Infrastructure Professionals http: //msdn. microsoft. com/ http: //technet. microsoft. com/

Resources Software Application Developers Infrastructure Professionals http: //msdn. microsoft. com/ http: //technet. microsoft. com/ msdnindia @msdnindia technetindia @technetindia

© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows Vista and other product names

© 2011 Microsoft Corporation. All rights reserved. Microsoft, 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.