390 likes | 537 Vues
Silverlight 2 CoreCLR. Bringing the power of .NET to the net. Andrew Pardoe, Common Language Runtime. Agenda. Programming with the Silverlight 2 .NET Framework is the right client-side solution for the web. Agenda.
E N D
Silverlight 2 CoreCLR Bringing the power of .NET to the net • Andrew Pardoe, Common Language Runtime
Agenda • Programming with the Silverlight 2 .NET Framework is the right client-side solution for the web
Agenda • Programming with the Silverlight 2 .NET Framework is the right client-side solution for the web • We did some really cool things to make .NET programming fit web scenarios
Agenda • Programming with the Silverlight 2 .NET Framework is the right client-side solution for the web • We did some really cool things to make .NET programming fit web scenarios • The web application model makes some unfamiliar .NET features shine
Silverlight is different • What’s wrong with existing Web technologies? • They require specialized knowledge • They have weak development tool support • Silverlight uses your existing .NET skills • .NET is the world’s most popular platform • WPF enables rich, reusable UI design • Use the world’s best development tools • Visual Studio • Expression Studio
Silverlight offers... • Rich, interactive applications • Silverlight 2 features • Adaptive streaming of VC-1 high-def video • Animation, vector graphics, scalable text • Silverlight 3 features • H.264 high-def video support • 3D graphics & GPU acceleration • Broad customer reach • Fast, simple install • Cross-platform support
DEMO Silverlight Chess
Three themes • Smaller • Simple application deployment • Subset of desktop that targets the web • More secure • Silverlight offers unrivaled security • Consistent and compatible • You can reuse your desktop skills for the web application models
Web development • Design and development • WPF provides a better workflow through a clean interface separating development from design • Deployment • Simplified deployment: just create a .XAP and link to it from your web page • The rest of the CLR is the same
XAML • eXtensible Application Markup Language • Declarative language describes user interface • UI elements map directly to .NET objects • Created with Expression Blend • Visual Studio contains a WPF designer (“Cider”)
XAML • eXtensible Application Markup Language • Declarative language describes user interface • UI elements map directly to .NET objects • Created with Expression Blend • Visual Studio contains a WPF designer (“Cider”)
Developer != Designer • Cider is targeted to developers • Toolbox of XAML controls • Gridlines, zoom, split screen • Use Cider to define the interface between functional code and UI elements • x:Name names a object that C# can use • Event handlers hook up actions to functions
Hosting CoreCLR NPCtrl.dll: Hosted in the browser through ActiveX AGCore.dll: Silverlight Presentation Foundation XAML CoreCLR.dll MSCorLib.dll: .NET Framework for Silverlight System.*.dll
Sandboxed execution • Silverlight applications execute in a sandbox • One AppDomain per .XAP • AppDomainManager controlled by Silverlight • Communicate through the HTML DOM
Application models • .NET for Silverlight is the same across desktop and browser application models • Managed languages are the same • WPF and BCL are subsets of the desktop • CoreCLR is the same as the desktop CLR • JIT focuses on startup time • GC runs in interactive (non-server) mode
DEMO Porting between browser and desktop
So what’s different? • Execution engine is 100% compatible • Tuned for interactive applications • BCL (and WPF) are subsets of the desktop • Some things not applicable on the web • Code Access Security removed • No support for full-trust scenarios • APIs consistent across application models
Mac OS X support CoreCLR, MSCorLib, and other platform assemblies perform system calls Platform Adaptation Layer Mac OS X (Darwin) Win32
CoreCLR is... • Smaller • Exposes the subset of functionality that makes sense for the web application model • More secure • Web applications are partial trust • Consistent and compatible • Reuse your existing skills across desktop and web application models
Transparent code • Security Transparency model replaces CAS • Code is divided into three groups • Transparent code cannot perform actions requiring escalated privilege • Security Critical code does all work requiring escalated privilege • Transparent code cannot call Security Critical code directly
SafeCritical code Transparent User code wants to write to a file on disk [SafeCritical]Validates that request is safe and appropriate [SecurityCritical] Platform code (full-trust) calls Win32 functions
In-process side by side • CLR has never been able to run side by side with itself in a single process • CoreCLR is not intended to replace desktop • If we want to run in a managed browser, we need InprocSxS • You don’t need to worry about a CLR being installed on the user’s machine
DEMO CoreCLR and desktop CLR in one process
DLR • Dynamic Language Runtime brings • IronPython • IronRuby • DLR services are usable by any language • Dynamic type system • Dynamic method dispatch • Dynamic code generation
DEMO DLR Console
What you’ve learned Silverlight .NET Framework is the right choice for client-side web applications • You already know how to code against the Silverlight 2 .NET Framework • The libraries are targeted toward the browser application model • Silverlight is small, fast and secure
Other sessions Interesting talks today: • 14:30 – 15:45 Contracts, Pex and CHESS • 16:15 – 17:30 Silverlight Controls Skinning Fx • 17:45 – 19:00 Windows 7 for developers • Interesting talks tomorrow: • 10:45 – 12:00 LINQ in breadth • 13:00 – 14:15 LiveCoding Silverlight and WPF • 11:00 – 12:00 Code Contracts, Pex and CHESS • 17:45 – 19:00 .NET CLR v4
Questions? More questions? mailto://Andrew.Pardoe@microsoft.com Silverlight – Get Started http://silverlight.net/GetStarted/ Great CLR blogs on MSDN http://blogs.msdn.com/clrteam CLR blog links to other great CLR team blogs Scott Guthrie’s blog http://weblogs.asp.net/scottgu Where to find these slides http://blogs.msdn.com/apardoe