Quick Reminder – What Is .NET

advertisement
| Basel
.NET 4.5.1, what’s up
Doc?
Jose Luis Latorre Millás
Software Engineer
Roche Diagnostics
.NET 4.5.1
Developer Productivity
Application Performance
Continuous Innovation
Conclusion
10’
20’
10’
15’
5’
Agenda
| Basel
Chapter 1/5
.NET 4.5.1
Quick Reminder – What Is .NET
Entity
Framework
ASP.
NET
Base Class Libraries
JIT &
NGEN
Garbage
Collector
WCF
WPF
Win
Forms
The CLR
Security
Model
Work
Flow
And
more!
Profiling& Debugging
APIs
Exception
Handling
Loader &
Binder
.NET (A *Very* Simplified View)
Runtime
Libraries
Languages
Tools
.NET
.NET Evolution
C# 4.0 + VB 10.0
C# 3.0 + VB 9.0
.NET 4.5.1
C# + VB 4.5
Asynchronous
Programming
Dynamic +
Language Parity
Language Integrated
Query
C# 2.0 + VB 8.0
Generics
C# 1.0 + VB 7.0
3.5
Managed Code
3.0
4.5
.NET 1.0
.NET 1.1
.NET 2.0
.NET 4.0
2002
2003
2005-08
2010 - Win8
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
Fundamentals
• 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
• .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)
.NET 4.5 is installed on 100+ million machines!
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.1 in A Nutshell
| Basel
Chapter 2/5
Developer Productivity
In 2005, a *little* feature called Edit &
Continue was introduced, but there was
something missing….
We have been waiting for 8 years…
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
•
•
•
Wait, there is more…
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
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
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
Convert Stream to IRandomAccessStream
From MSDN Forums…
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)
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
WinRT Type System Enhancements
Support Nullable value types in WinRT structs
<-- error WME1060: 'System.Nullable<System.Int16>' is not a valid Windows Runtime field type.
public short? au_ord;
<-- error WME1060: 'System.Nullable<System.Int32>' is not a valid Windows Runtime field type.
public int? royaltyper;
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
| Basel
Chapter 3/5
Application Performance
ASP.NET App Suspension
Enables low latency, high
density web sites for onprem/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
ASP.NET App Suspension
In IIS Settings, set Idle Time-out
Action to Suspended
ASP.NET App Suspension
On-demand Large Object Heap
Compaction
.NET GC is quite well-tuned
In general, we should never
have to use GC.Collect()
CAUTION: With great power
comes great responsibility!
"Out of CPU, memory and disk, memory is typically the most important
for overall system performance."
Mark Russinovich
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; }
}
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
// Next full blocking GC happens at some point, it will be a
compacting GC that compacts the whole heap including LOH.
Multi-Core JIT Improvements
• Minimize application
startup time on multicore CPUs
• Now supported for
ASP.NET web sites
• Enabled automatically
for ASP.NET apps
15% improvement for
cold startup
Performance data from our test labs
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 JITcompiled 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
Windows 8.1 Performance improvements
•
Defer loading of resources
•
Optimized XAML paths
•
Precompiled XAML in XBF (XAML Binary
Format)
•
ListView & GridView Startup
| Basel
Chapter 4/5
Continuous Innovation
.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
NuGet Releases
During .NET 4.5 two components were released 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
.NET (“in box”)
Async
Immutable
Collections
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
.NET Framework NuGet Feed
• Already enabled in VS 2013 Preview
Visual Studio 20[10,12]
• In VS 20[10,12]:
• Tools.Options.Package Manager
• Name: .NET Framework Packages
• Source: https://nuget.org/api/v2/curated-feeds/dotnetframework/
PCL (Portable Class Library) on all
platforms
• Not only windows..
• Opens path to third parties like Mono/Xamarin to
produce portable libraries that can be used anywhere
.NET or Mono is supported (Mac, Linux..)
| Basel
Chapter 5/5
Conclusion
What’s New in .NET Development
Jose Luis Latorre
Email: joslat@gmail.com
Twitter: @joslat
Blog: http://xamlguy.com
Download