Scott Hanselman Principal Program Manager Microsoft DTL303
Send #scottha is cool #scottha is not cool How am I doing? Send #scottha hello Let me know you’re here! This session on Twitter
What This Is
What This Is NOT
If I’m Lucky
A Look Back….NET 1.0.NET 1.1.NET NET CTP CLR 1.0 CLR 1.1 CLR 2.0 CLR 4 SP1
Web Forms 4 - Client ID
ASP.NET Web Forms 4 Client Id / Routing Scott Hanselman Principal Program Manager Microsoft
AJAX 4 - Client Templates Server-Side (WebForms): Client-Side {{ Name }}
AJAX 4 - DataContext ASMXASMX WCFWCF ADO.NET Data Services ADO.NET ASP.NET MVC JsonResult JsonResult Etc.Etc. 1. Request 2. JSON Data DataContextDataContext 3. Modify Data 4. Save Data * DataContext includes change tracking automatically
ASP.NET AJAX 4 Client Templates / DataContext Scott Hanselman Principal Program Manager Microsoft
WPF 4 Data Grid Ribbon Multi-Touch Windows 7 Enhancements
Managed Extensibility Framework? The Managed Extensibility Framework (MEF) is a new library in the.NET Framework that enables greater reuse of applications and components. Using MEF,.NET applications can make the shift from being statically compiled to dynamically composed
Open/Closed Principle Software entities should be open for extension, but closed for modification.
Known vs. Unknown
Client Applications WPF 4 DataGrid / MEF Scott Hanselman Principal Program Manager Microsoft
The Parallel Computing Initiative Letting the brightest developers solve business problems, not concurrency problems. “Concurrency for the masses”
Parallel Computing with.NET 4 Task Parallel Library (TPL) Parallel LINQ (PLINQ) Coordination Data Structures (CDS) System.Threading Improvements
Parallel LINQ Parallel LINQ (PLINQ) enables developers to easily leverage manycore with a minimal impact to existing LINQ programming model var q = from p in people where p.Name == queryInfo.Name && p.State == queryInfo.State && p.Year >= yearStart && p.Year <= yearEnd orderby p.Year ascending select p; var q = from p in people where p.Name == queryInfo.Name && p.State == queryInfo.State && p.Year >= yearStart && p.Year <= yearEnd orderby p.Year ascending select p;
Parallel Computing Parallel LINQ (PLINQ ) Scott Hanselman Principal Program Manager Microsoft
Common Language Runtime Statically-Typed C# VB Ruby Python Dynamically-Typed Why the DLR?
Common Language Runtime Statically-Typed C# VB Ruby Python Dynamically-Typed Dynamic Language Runtime Why the DLR?
Python Binder Ruby Binder COM Binder Runtime Binder.NET Dynamic Programming Dynamic Language Runtime Expression Trees Dynamic Dispatch Call Site Caching Iron Python IronRubyIronRubyC#C#VB.NETVB.NETOthers…Others…
DLR Integration Scott Hanselman Principal Program Manager Microsoft
Dynamically Typed Objects Calculator calc = GetCalculator(); int sum = calc.Add(10, 20); Calculator calc = GetCalculator(); int sum = calc.Add(10, 20); object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 }); int sum = Convert.ToInt32(res); object calc = GetCalculator(); Type calcType = calc.GetType(); object res = calcType.InvokeMember("Add", BindingFlags.InvokeMethod, null, new object[] { 10, 20 }); int sum = Convert.ToInt32(res); ScriptObject calc = GetCalculator(); object res = calc.Invoke("Add", 10, 20); int sum = Convert.ToInt32(res); ScriptObject calc = GetCalculator(); object res = calc.Invoke("Add", 10, 20); int sum = Convert.ToInt32(res); dynamic calc = GetCalculator(); int sum = calc.Add(10, 20); dynamic calc = GetCalculator(); int sum = calc.Add(10, 20); Statically typed to be dynamic Dynamic method invocation Dynamic conversion
Type Equivalence Interop Assemblies translate between managed code and COM For each interface, struct, enum, delegate, and member, contains a managed equivalent with marshalling data
However! Primary Interop Assemblies cause many pain points…
Go Away, PIA! 1.Compilers embed the portions of the interop assemblies that the add-ins actually use 2.Runtime ensures the embedded definitions of these types are considered equivalent
CLR 4 Type Equivalence Scott Hanselman Principal Program Manager Microsoft
.NET Framework Compatibility.NET 4.0 is a highly compatible release.NET 4.0 does not auto–roll forward You must add a configuration file with a specific switch to get 3.5 apps to run on 4.0
.NET Framework Compatibility Hang on… if 4.0 is compatible, why not run 3.5 apps automatically on 4.0? The BEST thing is always to prefer running on the version of the framework you built against Contact and submit your app for
CLR 2 - Existing Side-By-Side Host Process (i.e. Outlook).NET add-in add-in 3.5 add-in 1.1 add-in.NET 1.1
CLR 4 - In-Process Side-By-Side.NET 2.0.NET add-in Host Process (i.e. Outlook) 3.0 add-in 3.5 add-in 4.0 add-in
CLR 4 In-Process Side-By-Side Scott Hanselman Principal Program Manager Microsoft
Related Content Breakout Sessions WUX201 – ASP.NET Web Forms 4 WUX315 – ASP.NET AJAX 4 DTL06-INT – Parallel Computing DTL328 – Managed Extensibility Framework WUX204 – WPF 4 SOA401 – WorkFlow 4 DTL401 – Entity Framework 4
Sessions On-Demand & Community Resources for IT Professionals Resources for Developers Microsoft Certification & Training Resources Resources Required Slide Speakers, TechEd 2009 is not producing a DVD. Please announce that attendees can access session recordings at TechEd Online. Required Slide Speakers, TechEd 2009 is not producing a DVD. Please announce that attendees can access session recordings at TechEd Online. Microsoft Certification and Training Resources
Track Resources Visit the DPR TLC for a chance to win a copy of Visual Studio Team Suite. Daily drawing occurs every day in the TLC at 4:15pm. Stop by for a raffle ticket. Please visit us in the TLC blue area.
Be well, write good code, and stay in touch on Twitter
Complete an evaluation on CommNet and enter to win! Required Slide
© 2009 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. Required Slide