Name Title
Shashank Upadhyay Microsoft Student Partner
Compelling Cross-Platform User Experiences Immersive media experiences & RIA Seamless, fast installation for end users Consistent experiences on Mac / Windows Flexible programming model with collaborative tools Integration with Web technologies Based on the .NET Framework Role specific tools for designers / developers Efficient, lower cost delivery, and more capable media HD to Mobile w/ SMPTE VC-1 Broad media ecosystem Tools for live and on-demand publishing
2D Graphics Standard shapes, masking and clipping Transformations: skew, rotate, scale, translate, matrix Animation Basics Animations change properties over time Support linear, discrete and spline animation Animatable property types: Double, Color, Point Animations and graphics are defined using XAML
Media Features Video: WMV V7, V8, V9, VC-1 Audio: WMA V7, V8, V9 (standard), MP3 Multiple options for deploying media HTTP progressive download Integration with Windows Media Server Extensive WMV ecosystem
Various Silverlight Sites
Glyphs Fixed text Full Unicode glyph rendering support Does not support layout (word/line breaking) TextBlock Basic layout support Left-aligned, English-based text wrapping Support font encryption and compression V1 supports 64K Unicode Basic Multi-lingual Plane Post V1, increased language support
Silverlight XAML elements are scriptable via the browser script engine (JavaScript) Scriptable objects are obtained via findName Scriptable objects (elements) can be controlled via properties and methods Models JavaScript and HTML DOM interaction findName is equivalent to document.getElementById() Supports tree walking via children collection Position set using "Canvas.Top" and "Canvas.Left" Size can be scaled or set via Height/Width
void OnMouseEnter(object sender, MouseEventArgs e) sender.findName("rect").Height = 75; }
{
HTTP Downloader V1.0 supports HTTP gets (async and sync) Provides download progress ZIP packaging Similar to XMLHTTP CreateFromXAML Primary way in V1.0 to dynamically create content Supports namescopes (for name collisions)
Silverlight Application
http://silverlight.net /showcase
Highly productive development framework Multi-language support Latest developer innovations (e.g. LINQ) AJAX integration Great tools Visual Studio Expression Studio Cross-platform & cross-browser plugin Works with Safari, Firefox and Internet Explorer Mac OS X and Windows Any web server Fast, easy install process
WPF for Silverlight Extensible Controls BCL
Data LINQ LINQ-to-XML Dynamic Languages Ruby Python
.NET for Silverlight Web Services REST RSS SOAP
Generic Collection s s
Server ASP.NET AJAX Libs
POX JSON
Common Language Runtime XAML UI Core 2D Vectors Animation Text
Images Transform s
Inputs
Media
Controls
DRM
Keyboard Mouse Ink
WMV / VC1 WMA MP3
Layout Editing
Media
Presentation Core Integrated Networking Stack
DOM Integration
Installer
JavaScript Engine
Browser Host
Silverlight 1.0 Silverlight 1.1
Legend
A few more applications
Cross-fader
OLYMPICS-08
Creating a custom control Derive from System.Windows.Controls.Control Define the look of the control in XAML Call InitializeFromXaml(xaml) to build the initial content Store the return value to manipulate children Accessing a custom control from XAML Namespace declaration locates the control Use it like a regular control xmlns:local="clr-namespace:SilverlightApp;assembly=ClientBin/AppBinary.dll
Browser based headers/cookies passed with request Restricted to same domain access in the Alpha Cross-domain coming Make the HTTP Request Uri dataLocation = new Uri("http://localhost/trafficdata.xml"); BrowserHttpWebRequest request = new BrowserHttpWebRequest(dataLocation); HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Process the response StreamReader responseReader = new StreamReader(response.GetResponseStream()); string RawResponse = responseReader.ReadToEnd();
Core XML reading & writing capabilities in the alpha RAD XLINQ support coming
Initialize the reader XmlReader xr = XmlReader.Create(new StringReader(RawResponse));
Find a node and read its value xr.ReadToFollowing("Item"); string playerNodeText = xr.Value; string playerNameAttribute = xr.GetAttribute("Name");
Visual Studio-based Proxy Generator enables strongly typed access ASP.NET JSON services supported in the Alpha WCF and SOAP will be supported in future releases Server-based web service [WebMethod] public List GetTransactionList() {
... }
Call the Web Service from the client proxy = new BankProxy(); transactionList = proxy.GetTransactionList().ToList();
Both synchronous and asynchronous web services supported in the Alpha General purpose RAD asynchronous support coming Start the async web service call proxy.BeginGetTransactionList( new AsyncCallback(OnTransactionDataLoaded), null);
Handle the web service completion event private void OnTransactionDataLoaded(IAsyncResult iar){ transactionList = proxy.EndGetTransactionList(iar).ToList(); }
LINQ = Language INtegrated Query Allows query expressions to benefit from compiletime syntax checking, static typing & Intellisense Works on any IEnumerable-based source Supports querying of in-memory data sources Other LINQ technologies forthcoming: XLINQ = LINQ for XML DLINQ = LINQ for relational data
var
Return all players with more than twenty home runs, sorted filteredPlayers = from p in players where p.HomeRuns > 20 orderby p.HomeRuns descending select p;
HTML access available in new namespace using System.Windows.Browser;
Static HtmlPage class provides entry point HtmlPage.Navigate("http://www.microsoft.com"); String server = HtmlPage.DocumentUri.Host;
Hookup events, call methods, or access properties HtmlElement myButton = HtmlPage.Document.GetElementByID("myButtonID"); myButton.AttachEvent("onclick", new EventHandler(this.myButtonClicked)); private void myButtonClicked(object sender, EventArgs e) { ... }
Mark a property, method or event as [Scriptable] [Scriptable] public void Search(string Name) { ... }
Register a scriptable object WebApplication.Current.RegisterScriptableObject ("EntryPoint", this);
Access the managed object from script var control = document.getElementById("SilverlightControl"); control.Content.EntryPoint.Search(input.value);
Community Site: http://silverlight.net Main Product Site: http://www.microsoft.com/silverlight MSDN Center: http://msdn.microsoft.com/silverlight Online Forums: http://silverlight.net/forums Online SDK: http://msdn2.microsoft.com/bb188266.aspx Silverlight Blogs Tim Sneath: http://blogs.msdn.com/tims Laurence Moroney: http://blogs.msdn.com/webnext Adam Kinney: http://adamkinney.com Jesse Liberty: http://silverlight.net/blogs/jesseliberty/ Tim Heuer: http://timheuer.com Dave Campbell: http://www.wynapse.com/
Please Do not forget to fill the Feedback forms
© 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.