http://www.davidpoll.com Silverlight 3 Silverlight 4 - Jim Gray Silverlight $ Web content <WebBrowser x:Name="webBrowser" ScriptNotify="webBrowser_ScriptNotify" LoadCompleted="webBrowser_LoadCompleted" Source="http://any.site" /> <Rectangle Grid.Row="1" Name="rectangle1"> <Rectangle.Fill> <WebBrowserBrush x:Name="brush" SourceName="webBrowser" Opacity="0.5" /> </Rectangle.Fill> </Rectangle> top, left height width topmost You have 325 new voicemails Listen x NotificationWindow toast = new NotificationWindow(); toast.Content = new ToastContent(); toast.Content.MouseLeftButtonUp += (s, arg) => { Application.Current.MainWindow.Activate(); }; toast.Show(4000); New Business Models • Subscription • Rental • Purchase New Features • Persistent license storage • Time based policies • Secure H.264 and AAC decoders • Support for Output Protection sllauncher.exe /install:"somePath\myApp.xap" /origin:"http://any.site.com/myApp.xap" /shortcut:desktop+startmenu /overwrite sllauncher.exe /uninstall /origin:"http://any.site.com/myApp.xap" sllauncher.exe /emulate:"somePath\myApp.xap" /origin:"http://any.site.com/myApp.xap" /overwrite Platform Specific Usage // defensive code == portable code if (Application.Current.HasElevatedPermissions) { // look ma, no path hard-coding! // this code works on Mac, Windows, everywhere string path = Environment.GetFolderPath( Environment.SpecialFolder.MyVideos); string mediaFile = Path.Combine(path, "Foo.mp4"); if (!File.Exists(mediaFile)) { using (FileStream fs = File.Create(mediaFile)) { //... } } } Remove the Shell chrome and window border Rectangular window Rectangular window with rounded corners Supported in Silverlight 4 Not in Silverlight 4 • Property get/set, indexed property get/set • Positional and optional parameters • Support by-ref and by-value • In proc and out of proc servers • Support for basic data types • VARIANT, BSTR, SAFEARRAY, IEnumVARIANT • Silverlight app as event sink • • • • Multi-dimensional arrays Named parameters Type Information Support for COM Elevation moniker // defensive code == portable code if (AutomationFactory.IsAvailable) { dynamic xl = AutomationFactory.CreateObject("Excel.Application"); xl.Visible = true; xl.Workbooks.Add(); //... } For Consumers • Reassurance on authenticity and integrity of app • Clear publisher and provenance info on app For App Developers • Better install-time UX • App Icon • Publisher name • Seamless updates • No updates for unsigned apps • No updates when certs mismatch v1.0 XAML + JavaScript 2 XAP and managed code 3 Beyond the browser 4 Trusted apps www.microsoft.com/teched www.microsoft.com/learning http://microsoft.com/technet http://microsoft.com/msdn WEB205 | Unit Testing in Microsoft Silverlight WEB307 | Effective RIA: Tips and Tricks for Building Effective Rich Internet Applications COS07-INT | Using Microsoft SQL Azure as a Datahub to Connect Microsoft SQL Server and Silverlight Clients TLC-23 | Microsoft Silverlight TLC-74 | Microsoft SQL Azure Data Sync