Silverlight Development in SharePoint 2010 In this session Neil will demonstrate how Silverlight has become an integral part of the SharePoint 2010 experience. Then he will walk through current and future Silverlight Development techniques using Visual Studio, Expression Blend, Web Services and the new Client Object Model.
About the Speaker Company: Gig Werks Neil Barkhina is an MCAD Certified professional with nearly 7 years of experience working with .NET technologies. He specializes in web development and SharePoint technologies and has worked on numerous projects including Leading Development on a SharePoint Intranet site for the largest real estate firm in New York. He has also worked in the video games industry doing 3D Game Development and Mobile Phone Applications.
About Silverlight Browser plug-in client Supports Windows, Mac, Linux IE, Firefox, Safari Supports rich media scenarios (video) Subset of .net, subset of WPF 100+ Controls OOB Mobile Future: Windows Phone 7 Third Party Moonlight project under development for GNU/Linux
Silverlight 1 Rich Media Scenarios (Videos) Programming involved writing XAML and javascript “codebehind”
Silverlight 2 Version 2.0 released October 2008 Write applications using managed code and .NET languages (C#, VB .NET) Rich UI such as animation, vector graphics and audio-video playback Deep Zoom
Silverlight 3 New controls: datagrid, treeview AAC audio decoding, H.264 video, 1080p streaming Perspective 3D Bitmap API Out-of-Browser
Silverlight 4 Web cam and Mic support Printing Right mouse click support RichTextBox control Hosted Browser Support (html in silverlight) Multi-touch Support for Chrome Browser Deploy applications to “set-top boxes”
Vs. Flash Pros: Cons: Flash is not a development environment Easy transition for existing .NET developers Easy transition for existing Flash developers, uses many of the same concepts: key frames, animations, gradients, transformations Able to use Visual Studio Future: Full hardware 3D support Cons: Market penetration still lagging, but gettings stronger. Currently at 60% of internet devices!!
Development Methodology Separation of Design and Code Designers can work independently using the Expression Suite XAML data can be indexed by search engines
Development Methodology XAML Serialization of .net objects Represents visual UI, separate from implementation Designable in Expression Blend xaml code <Border CornerRadius="2"> <Border.Background> <LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1"> <GradientStop Color="#FFFFFF" Offset="0"/> <GradientStop Color="#D1D1D1" Offset="1"/> </LinearGradient> </Border.Background> </Border> border.CornerRadius = new CornerRadius(2); LinearGradientBrush lgb = new LinearGradientBrush(); lgb.StartPoint = new Point(0.5, 0); lgb.EndPoint = new Point(0.5, 1); GradientStop gs = new GradientStop(); gs.Color = Color.FromArgb(0,255,255,255); gs.Offset = 0; lgb.GradientStops.Add(gs); gs = new GradientStop(); gs.Color = Color.FromArgb(0, 209, 209, 209); gs.Offset = 1; lgb.Background = lgb; =
Themeable Controls
Microsoft Expression Blend is the main tool for XAML layout Expression Design can be used for creating graphical assets. Like Photoshop
Key Points Silverlight uses a subset of the .NET framework. Similar to WPF, XAML syntax, not as many controls Can’t mix DLLs between .NET and silverlight Runs in a isolated security sandbox Can effect the DOM All shapes defined as vectors, no loss of quality for scaling, transformations
Limitations Network calls must be made to the TLD from which it originated (same exact port) Can make cross domain calls with a crossdomain.xml file Can do sockets programming with a predefined set of ports 4502-4532 All Server side calls must be made to a WCF or Web Service All Server side calls must be invoked asynchronously Subset of .net types Missing: XmlDocument, ADO.NET Data, ArrayList No DataTables, but you can use LINQ!
Why Silverlight and SharePoint? Presentation Silverlight Client Integration Security SharePoint Logic Layer App Model Data Layer
Development Prerequisites Visual Studio 2008 SP1 Silverlight 3 tools for Visual Studio Blend 3 System.Web.Silverlight DLL in GAC ASP .NET AJAX
Set up new project Use new visual studio template for creating Silverlight projects Design surface is read only (in Visual Studio 2008) Use Blend for Layout
SharePoint 2007 Integration (old) You must have the xap MIME type registered, works in IIS 7 out of the box Can also use zip/xap trick All communication with server must be done using web services layer I recommend web services instead of WCF Watch out for HTTP/HTTPS
SharePoint 2007 Integration (old) Embed “Install Silverlight” image in solution Use random string to prevent caching Use the System.Web.Silverlight control to ease management of Silverlight TAG (requires ScriptManager on page) Pass initial parameters using InitParams Set up width/height and maxframerate
Current Development Visual Studio 2010 integrated designer surface and toolbox support Blend 4 beta Visual Studio 2010 RC for Windows Phone development You can manually upload XAP file to a simple document library Build directly into the Clientbin folder of SharePoint Write an application to upload XAP to SharePoint
Hosting Silverlight in SharePoint 2010 Script/markup on page Silverlight ASP.NET control Parts Out-of-box Silverlight Web Part Custom Web Part Full-page (web part host page)
Talking to SharePoint Web Services Client Object Model REST More coverage Client Object Model Site, nav, security services Very flexible REST Easiest to use For fixed list schema Rendering Data to Page Web Services Advanced Operations SharePoint Server Operations Client OM Advanced List Operations Site Operations Security REST Working with list data, fixed schema
REST Read/update/delete of list data Object-oriented, ATOM-based means Standards-based, consistent with other data sources Details: In VS, Add Service Reference http://yourserver/yoursite/_vti_bin/listdata.svc
Client Object Model Based on SharePoint server-side OM Also for JavaScript and Managed Code Two main concepts: To read data from objects, you must ask for it Reads and writes are sent in a asynchronous batch Call backs must invoke the UI thread All namespaces don’t have “SP” at the front Details: <SharePointRoot>\14\TEMPLATE\LAYOUTS\clientbin\ Asynchronous Load model
SOAP Web Services Fixed functions exposed in the product, or build your own More MOSS, WSS functionality covered Not all services representable in SL WCF Client Details: See SDK for list of web services Of course, also in 2007!