1 / 37

What’s New in .NET Development

What’s New in .NET Development. Habib Heydarian (habibh@microsoft.com) Program Manager, .NET 2-303 : What’s New in .NET Development. .NET (A *Very* Simplified View). First, a look at .NET 4.5. .NET 4.5 is installed on 100+ million machines!. .NET 4.5.1 in A Nutshell.

clay
Download Presentation

What’s New in .NET Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. What’s New in .NET Development Habib Heydarian (habibh@microsoft.com) Program Manager, .NET 2-303: What’s New in .NET Development

  2. .NET (A *Very* Simplified View)

  3. First, a look at .NET 4.5 .NET 4.5 is installed on 100+ million machines!

  4. .NET 4.5.1 in A Nutshell Developer Productivity Application Performance Continuous Innovation

  5. Developer Productivity

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

  7. Sorry to keep you waiting for 8 years…

  8. 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

  9. Wait, there is more…

  10. 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

  11. 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

  12. 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 • Nullablevalue types in WinRTstructs • 64-bit Edit and Continue support • Managed Return Value Inspection support • Async debugging enhancedments

  13. Convert Stream to IRandomAccessStream • From MSDN Forums… // EXAMPLE: Get image from URL var client = new HttpClient(); var stream = await client.GetStreamAsync(imgUrl); varmemoryStream = 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)

  14. 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

  15. WinRT Type System Enhancements • Support Nullablevalue types in WinRTstructs // Define the "titleAuthor" table of the Microsoft "pubs" database. public structtitleAuthor { // 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.Int16>' is not a valid Windows Runtime field type. <-- error WME1060: 'System.Nullable<System.Int32>' is not a valid Windows Runtime field type.

  16. 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

  17. Application Performance

  18. ASP.NET App Suspension • Enables 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

  19. ASP.NET App Suspension • In IIS Settings, set Idle Time-out Action to Suspended

  20. On-demand Large Object Heap Compaction • Let 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!

  21. 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 GCLOHCompactionModeLOHCompactionMode { get; set; } }

  22. On-demand Large Object Heap Compaction • Two ways to use GC LOH API: • Compact LOH right away • 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;

  23. On-demand Large Object Heap Compaction • I’m going to wrap up by saying… • If you really believe you have a GC heap fragmentation issue (a.k.a. GynormousGC Fragmentossyndrome), please email: • MaoniS@microsoft.com (our resident GC ninja)

  24. Multi-Core JIT Improvements 15% improvement for cold startup • Minimize application startup time on multi-core CPUs • Now supported for ASP.NET web sites • Enabled automatically for ASP.NET apps Performance data from our test labs

  25. 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

  26. Continuous Innovation

  27. .NET Framework Updates • Our goal is to keep the existing values of the .NET Framework while allowing for more agility and innovation • Existing 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

  28. NuGet Releases • During .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 System Composition TPL Dataflow Http Client Async Immutable Collections .NET (“in box”)

  29. Announcing: .NET Framework NuGet Feed • One-stop shopping for all of your .NET Framework NuGet packages released by Microsoft • In Visual Studio 20[10,12,13] • On the Web

  30. .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]

  31. What’s New in .NET Development Developer Productivity Application Performance Continuous Innovation • 64-bit Edit and Continue • Method Return Value Inspection • Async Debugging Enhancements • Windows Store development improvements • EF/ADO.NET Connection Resiliency • 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 .NET 4.5.1 delivers many new innovations while maintaining a high compatibility bar

  32. We would love to hear from you! Blog E-mail @dotnet dotnet MSDN Forums UserVoice

  33. Whether you loved it or hated it, please complete the evaluation  2-303: What’s New in .NET Development

More Related