MIX09: Inside Microsoft Silverlight
This is a look at the CoreCLR, which is what Silverlight runs on.
Session abstract: See how the CLR team slimmed down the size of the runtime into a small, zippy download, the Core CLR, yet kept the experience .NET developers have come to love.
Presenter: Brandon Bray, Senior Program Manager Lead, CLR Team
21:58
- Agenda
- Why use .NET with Silverlight?
- Slimming down the desktop CLR
- New features for Core CLR
- Future Investments
- Why use .NET with Silverlight?
- strong developer community
- tool ecosystem can be reused
- .NET features
- AppDomains, security verification, partial trust, strong type safety
- So, why not use .NET instead?
- .NET 3.5 is large, nearly 200MB
- Not everywhere yet
- .NET Architecture
- supports many scenarios
- Applying the RIA Scenario
- CoreCLR will focus on fewer scenarios
- Goal: Build CoreCLR/CLR from same code
- The RIA scenario
- Only considers end-user code as partial trust
- Don’t need all interop features
- Versioning model can be simpler
- CoreCLR will be activated through a host
- Silverlight Architecture
- fewer scenarios, keep the essentials
- From the previous CLR slide, now missing NGEN and profiling
- CoreCLR reduced to around 2MB
- Slimming down the Desktop CLR
- The Small Base Class Library
- CoreCLR includes a subset of the BCL called Small BCL
- Built from same source as BCL
- Some features of BCL become more prominent (e.g. IsolatedStorage – better enforcement of quota mgmt)
- Other parts of Silverlight not part of CoreCLR: agcore.dll (presentation layer), npctrl.dll (Silverlight host)
- Files
- coreclr.dll – JIT and other runtime components
- mscorlib.dll
- mscorrc.dll
- System.dll
- System.Core.dll
- System.Net.dll
- System.RuntimeSerialization.dll
- System.ServiceModel.dll
- System.ServiceModel.Web.dll
- System.XML.dll
- The Core CLR Security Model
- Code running atop Silverlight is sandboxed
- Silverlight assemblies are trusted through the CoreCLR hosting API’s
- SecurityCritical Code – doing things that are fully trusted, or trust anyone that calls you
- SafeCritical code – plays the bridge, should always validate inputs
- Transparent Code – lives outside of Silverlight framework, can call any other Transparent code or SafeCritical code
- Transparent Libraries (14:42)
- Desktop framework has other libraries lke LINQ and DLR
- these are delivered as transparent libraries included in the application download
- Additional UI controls from Silverlight SDK are also transparent libraries
- Other CLR Features (15:33)
- CoreCLR is tuned for interactive applications
- Slimming down by removing options
- JIT – minimally optimized code to improve start-up time
- Garbage Collection – only interactive client mode
- although 2 different ones for regular framework
- Reflection – no support for modules
- Rely on underlying system
- Globablization – string tables supplied by Windows of MacOS
- learning being taken to next desktop framework version
- Globablization – string tables supplied by Windows of MacOS
- The Small Base Class Library
- New Features for Core CLR (17:11)
- Side by Side
- CoreCLR and CLR need to co-exist
- CoreCLR focuses on RIA scenarios
- CLR still supports multiple scenarios
- Need to be able to load both into same process, and this comes up occassionally, like during exceptions
- Silverlight does not need CLR installed
- CoreCLR and CLR need to co-exist
- Cross Platform Support
- Silverlight is largely built atop CoreCLR
- supporting new platforms is simpler
- CoreCLR is one code page
- additional O/S supported with a PAL
- refer to writings on Rotor to see how this is built into CLR principles
- Helpful that this is all bases on x86
- Silverlight is largely built atop CoreCLR
- Side by Side
- Future Investments (18:56)
- Features coming back to desktop in CLR4
- in-process SxS support
- Simplified security model (much better than CAS)
- CoreCLR will focus on feature parity with desktop CLR
- exposing profiling API’s
- investing in code quality and performance
- It’s not just about Silverlight
- Features coming back to desktop in CLR4
- Resources (20:17)
- Email brandon.bray@microsoft.com
- Andrew Pardoe’s CLR Inside Out article, Program Silverlight with the CoreCLR