Silverlight 2 CoreCLR Andrew Pardoe Program Manager CLR Execution Engine
Rich interactive applications Web deployment gives broad reach Windows, Mac OS X, Linux IE, Firefox, Safari, Konquerer Sandboxing provides security Productive design and development Reusable knowledge (XAML &.NET) Best developer tools in the industry Separate design and development
Mac OS X Silverlight 1.0 supports all hardware Silverlight 2 supports Intel Mac Mac is fully supported by Microsoft Major Linux distributions Moonlight runtime implemented by Mono Full cooperation of Microsoft Access to documentation and tests Legal covenant protecting Mono users
Sandboxed applications No user elevation or security prompts within the browser—just click a URL Applications prevented from doing malicious things Limited local interaction Safe isolated storage Client based file upload controls Cross domain networking support
Silverlight “code-behind” model Code lives behind the page Updating the code doesn’t change the design Productive design and development Reusable knowledge (XAML &.NET) Best developer tools in the industry Separate design and development
Designers and developers are different.
Developers work from the inside outward.
Getting started
Silverlight 2 Beta 1 Notepad No SDK required, everything is text A better option… Silverlight Tools for Visual Studio 2008 Expression Blend 2.5 March Preview Everything you need is online
.NET is a desktop technology. Why use it on the web? Developers, developers, developers! Performance and expressiveness Silverlight lets you use what you already know C#, VB, JScript—Silverlight CoreCLR supports all.NET languages SL2 DLR adds popular dynamic languages like IronPython and IronRuby
CoreCLR builds from same source code as the desktop CLR 100% compatible execution environment Much smaller package 4.3 MB download for SL2 Beta 1 What’s different in CoreCLR? We’ll look at the desktop CLR and compare it to CoreCLR
Browser hosts through ActiveX Presentation Core UI Core JS Interop Inputs, Controls, Media, DRM CoreCLR BCL DLR
MSIL + Metadata Write a program in.NET C# source Runs with Base Class Library Running code loads the CLR EE Managed protected environment Compile to MSIL executable Layout objects in memory JIT produces native code VM & GC Code +.NET
Small size allows on-demand install Fewer scenarios than desktop CLR Sandboxed code Smaller Base Class Library Only hosted by ActiveX controls Supported on Intel Apple Mac OS X
Dynamic Language Runtime Execution engine JIT compiler Garbage collector Virtual machine New security model Security Transparency replaces Code Access Security Transparency may be supported in desktop
Not just C# and VB (C++/CLI, F#) Ada Cobol Eiffel Forth Fortran Nemerle Lisp Perl Pascal many more
DLR adds popular web languages DLR creates MSIL at runtime Built on a message-passing system Objects respond to messages Behavior based on language semantics Messages converted to MSIL Built on dynamic method dispatch and dynamic type system Messages are bound to methods Dynamic types are CLR types
DLR Console DEMO
OpenFileDialog for read-only local file system access IsolatedStorageFile provides storage Define the scope with a using directive Exiting scope disposes file objects
Web-hosting reduces scenarios Click-time install reduces size Simplified BCL is based on.NET CF Non-generic collections removed Localization culture information from OS BackgroundWorker for most threading See BCL team blog for more details Guidance available to help port existing.NET code to Silverlight’s smaller BCL
Versioning and binding are transparent ActiveX host loads CoreCLR, creates appdomain and applies policies Full access to XAML and HTML DOMs XAML can be written dynamically Javascript objects and DOM elements wrapped in managed wrappers
SL 2 app in separate browser SL 1.0: XAML and Javascript Different browser gets new CoreCLR SL 2 with shared CoreCLR Another SL 2 app shares same CoreCLR Browser tabs share a single CoreCLR
You need a CLR to run managed code Could use the CLR on Windows… …but changing code changes behavior CoreCLR runs in-process with CLR Managed browsers can host SL Multiple CoreCLRs in-process 100% Silverlight compatibility no matter what CLR is already on your machine
CoreCLR and CLR side-by-side DEMO
Same JIT on Mac and Windows No NGen in Silverlight 2
CoreCLR runs on Mac OS X Only supported on Intel Macs CoreCLR, Base Class Libraries and other platform assemblies Mac OS X (Intel) Windows (32-bit) Platform Adaptation Layer
Same execution engine as CLR Core functionality: JIT, GC Virtual machine: EH, threading Simplified security model CAS is gone! Transparent, Safe Critical and Critical All user code is transparent
No more evidence, permissions, policy levels or code groups No more complicated documentation No more stackwalks for code access - Transparent code can call public methods, use public types and override methods… If it’s platform or same application’s code If it’s Safe Critical or Transparent security
WINAPI CreateFile (Critical code) creates file without any validation User code (transparent) wants to write a file System.IO.IsolatedStorageFile StreamWriter (SafeCritical code) verifies the request and calls Windows API
MSIL + Metadata Use same.NET skills C# source Web has simpler scenarios Code uses smaller BCL Same CLR means no surprises DLR adds new languages Same CoreCLR on any host Security Transparency is easy VM & GC Code +.NET
Woodgrove Financial DEMO
Chess: Javascript vs. CoreCLR DEMO
Questions? Q&A
Shawn Farkas’ blog on CLR security Silverlight – Get Started BCL team blog Where to find these slides
© 2007 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.