Top Banner
37

RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Jan 17, 2018

Download

Documents

Coleen Mitchell

RuntimeLibraries Languages Tools.NET
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.
Page 2: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

What’s New in .NET DevelopmentHabib Heydarian ([email protected])Program Manager, .NET2-303: What’s New in .NET Development

Page 3: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

.NET (A *Very* Simplified View)

Runtime

Libraries

Languages Tools .NET

Page 4: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

First, a look at .NET 4.5

Client & Device

•Async – for UI responsiveness•Windows Store apps -- WinRT•Windows Phone apps•.NET CF 3.9

Web & Cloud

•Async – for server scaling•ASP.NET MVC4•ASP.NET Web API•ASP.NET Web Pages•Entity Framework Code-First•WebSockets•SignalR•Windows Azure Cloud Services 4.5 Support•Windows Azure Web Sites

Fundamentals

•.NET Async (async + await)•Many new async APIs•WinRT interop•Multi-core JIT•MPGO – NGEN hot/cold splitting•Performance improvements•Reboot and reliability improvements to setup•Support Windows RT

GC•Background GC•LOH heap balancing•LOH fragmentation reduction•GC low latency mode•GC awareness of NUMA and >64 processors•>2GB arrays (or objects)

Libraries•Portable libraries update•.NET Core Profile (Windows 8)•Extension methods for WinRT streams and async•NuGet•Immutable collections•Async for .NET 4•HttpClient for Portable

.NET 4.5 is installed on 100+ million machines!

Page 5: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

.NET 4.5.1 in A Nutshell

Developer Productivity

Application Performance

Continuous Innovation

Page 6: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Developer Productivity

Page 7: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

In 2005, we introduced a *little* feature called Edit & Continue, but there was something missing….

Page 8: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.
Page 9: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Sorry to keep you waiting for 8 years…

Page 10: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

64-bit Edit and Continue is finally here!• Number 9 all time requested feature on UserVoice!• Works exactly the same as for 32-bit applications• Client (WPF, WinForms, etc.), Store and ASP.NET WAP

projects are supported• For WAP projects, need to enable Edit & Continue in

Project Properties

Page 11: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Wait, there is more…

Page 12: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.
Page 13: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Method Return Value Inspection• Now available for .NET!• Access via Autos window or in the Immediate window

($ReturnValue)• Can expand return value in the debugger

Page 14: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Async Debugging Improvements• Common question: How did I get here?• Supported for Store Apps, Web apps, Desktop apps in

W8.1• Enhancements to the Call Stack and Tasks window

Visual Studio 2012

Page 15: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Windows Store Development Improvements• Convert System.IO.Stream to IRandomAccessStream

• Allows much easier interop with existing .NET code• Better exception support for WinRT APIs

• System.Exception.Message• System.Exception.StackTrace

• WinRT type system enhancements• Nullable value types in WinRT structs

• 64-bit Edit and Continue support• Managed Return Value Inspection support• Async debugging enhancedments

Page 16: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Convert Stream to IRandomAccessStream• From MSDN Forums…

// EXAMPLE: Get image from URL

var client = new HttpClient();

var stream = await client.GetStreamAsync(imgUrl);

var memoryStream = new MemoryStream();

await stream.CopyToAsync(memoryStream);

var bitmap = new BitmapImage();

bitmap.SetSource(memoryStream); <-- error CS1503: Argument 1: cannot convert from 'System.IO.Stream' to 'Windows.Storage.Streams.IRandomAccessStream‘

bitmap.SetSource(memoryStream.AsRandomAccessStream()); <-- .NET 4.5.1

In .NET 4.5.1:System.IO.WindowsRuntimeStreamExtensions.AsRandomAccessStream(Stream stream)

Page 17: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Rich exception interop support for WinRT APIs• In Windows 8, error propagation for WinRT APIs is

through HRESULT• Important Exception information is lost unless a debugger is

attached• In Windows 8.1, additional error information is available

via System.Exception properties:• Message• StackTrace

Additional exception details from a C++ WinRT Component

Page 18: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

WinRT Type System Enhancements• Support Nullable value types in WinRT structs

// Define the "titleAuthor" table of the Microsoft "pubs" database.

public struct titleAuthor

{

// Author ID; format ###-##-####

public string au_id;

// Title ID; format AA####

public string title_id;

// Author ORD is nullable.

public short? au_ord;

// Royalty Percent is nullable.

public int? royaltyper;

}<-- error WME1060: 'System.Nullable<System.Int32>' is not a valid Windows Runtime field type.

<-- error WME1060: 'System.Nullable<System.Int16>' is not a valid Windows Runtime field type.

Page 19: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

EF/ADO.NET Connection Resiliency• Provide reliable connection to Azure DB• Automatically retry/reconnect broken connection• Provides great experience for connected devices• It Just Works! No code or configuration changes other

than installing .NET 4.5.1

Page 20: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Application Performance

Page 21: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

ASP.NET App SuspensionEnables low latency, high density web sites for on-prem/private cloud

Shipping as part of IIS 8.5 in Windows Server 2012 R2 Preview

Provisioned through the Idle Worker Process Page-out capability in IIS

Early Results from our Performance Lab

Page 22: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

ASP.NET App SuspensionIn IIS Settings, set Idle Time-out Action to Suspended

Page 23: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

On-demand Large Object Heap CompactionLet me start off by saying that the .NET GC is one well-tuned machine!In general, you should never have to use GC.Collect()CAUTION: With great power comes great responsibility!

Page 24: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

On-demand Large Object Heap Compaction• Refresher• Large objects (>85000 bytes) treated specially• Very expensive to compact• Collected with Gen 2

• In .NET 4.5.1, you can now compact the Large Object Heap (LOH) to address heap fragmentation• The LOH mode is part of GCSettings:public static class GCSettings {

public static GCLOHCompactionMode LOHCompactionMode { get; set; }

}

Page 25: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

On-demand Large Object Heap Compaction• Two ways to use GC LOH API:

1. Compact LOH right away

2. Compact LOH with the next full blocking GC

GCSettings.LOHCompactionMode = GCLOHCompationMode.CompactOnce;

GC.Collect();

// Next full blocking GC happens at some point, it will be a compacting GC that compacts the whole heap including LOH.

GCSettings.LOHCompactionMode = GCLOHCompationMode.CompactOnce;

Page 26: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

On-demand Large Object Heap CompactionI’m going to wrap up by saying…

If you really believe you have a GC heap fragmentation issue (a.k.a. Gynormous GC Fragmentos syndrome), please email:• [email protected] (our resident GC ninja)

Page 27: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Multi-Core JIT Improvements

Performance data from our test labs

• Minimize application startup time on multi-core CPUs

• Now supported for ASP.NET web sites

• Enabled automatically for ASP.NET apps

15% improvement for cold startup

Page 28: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Consistent Performance Before & After Servicing .NET

• Servicing .NET Framework for 1B+ PCs is a very BIG deal!

• Today, servicing the .NET Framework can lead to degradation in app performance directly afterwards

• This is due to core .NET assemblies being JIT-compiled for a period of time after servicing

• In Windows 8.1, app performance remains consistent even after servicing the .NET Framework

• Results in much better user experience and better battery life on tablets

Page 29: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Continuous Innovation

Page 30: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

.NET Framework UpdatesOur goal is to keep the existing values of the .NET Framework while allowing for more agility and innovationExisting Values• Great discoverability (all in in place)• Known quality, maturity and compatibility level• A single license and support policy• Centralized patching for security issues*PLUS* New Values• Faster release cadence with a tighter customer feedback loop• Less friction with using features across .NET platforms

Page 31: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

NuGet ReleasesDuring .NET 4.5 we released two components via NuGet:• MEF (Microsoft.Composition) for web and Windows Store apps• TPL Dataflow (Microsoft.Tpl.Dataflow)• These (and new packages) are treated as any other .NET 4.5

component, i.e. are fully supported

.NET (“in box”)

SystemCompositio

n

TPL Dataflo

wHttp

Client AsyncImmutabl

e Collection

s

Page 32: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Announcing: .NET Framework NuGet FeedOne-stop shopping for all of your .NET Framework NuGet packages released by Microsoft• In Visual Studio

20[10,12,13]• On the Web

Page 33: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

.NET Framework NuGet Feed• Already enabled in VS 2013 Preview

• In VS 20[10,12]:• Tools.Options.Package Manager• Name: .NET Framework Packages• Source: https://nuget.org/api/v2/curated-feeds/dotnetframework

/

Visual Studio 20[10,12]

Page 34: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

What’s New in .NET Development

• 64-bit Edit and Continue

• Method Return Value Inspection

• Async Debugging Enhancements

• Windows Store development improvements

• EF/ADO.NET Connection Resiliency

Developer Productivity

Application Performance

Continuous Innovation

.NET 4.5.1 delivers many new innovations while maintaining a high compatibility bar

• ASP.NET application suspension

• Multi-core JIT improvements

• On-demand large-object heap compaction

• Consistent performance before and after servicing the .NET Framework

• .NET Framework updates

• NuGet releases• Curated .NET

Framework NuGet packages

Page 36: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

Whether you loved it or hated it, please complete the evaluation

2-303: What’s New in .NET Development

Page 37: RuntimeLibraries Languages Tools.NET First, a look at.NET 4.5 Client & Device Async – for UI responsiveness Windows Store apps -- WinRT Windows Phone.

© 2013 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.