It’s the best of both worlds. By leveraging the .Net framework, our applications help you create visually rich experiences while providing backend support for rapid development.
Mac, Windows, Linux
When you create applications for Silverlight you’re actually creating one application that will run equally on Internet Explorer, Firefox and Safari on Windows, Mac and Linux. Silverlight on different platforms and browsers has exactly the same functionality, ensuring the same experience for all your users.
Microsoft is working with Novell to offer Silverlight support for the Linux platform. The Mono Project is an open-source initiative hosted at http://www.mono-project.com/Moonlight. This is available for all major Linux distributions. Moonlight 2.0 supports C# and other Dynamic Languages, and includes controls, layout and media.
To go even further, you can re-target your application to Windows Presentation Foundation (WPF). This gives you full trust access to the machine providing enhanced hardware acceleration, full 3D graphics, ability to write to the files system and device support. Silverlight and WPF share a common API, XAML, controls and tooling.
Richest Web Experiences
While HTML is limited to text and bitmap images, Silverlight supports much more. The example below shows the type of highly branded, interactive, rich interface that Silverlight enables incorporating graphics, video, effects and perspective 3D.
To create the look of the application, Silverlight provides declarative XAML mark-up support for all of the interface, including rich 2D graphics. The object model goes all the way down to path data and gradient stops, making it easy to tweak the look of graphics. The example below shows how a gradient is applied to a circular shape :
<
Ellipse HorizontalAlignment="Stretch"
Margin="194,90,109,68"
VerticalAlignment="Stretch"
StrokeThickness="20">
<
Ellipse.Stroke>
<
LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
<GradientStop Color="#FF1F1EF2"/>
<GradientStop Color="#FFFFFFFF" Offset="1"/>
</
LinearGradientBrush>
</
Ellipse.Stroke>
<
Ellipse.Fill>
<
LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
<
GradientStop Color="#FF90B1EC"/>
<GradientStop Color="#FF0F5CE4" Offset="1"/>
</
LinearGradientBrush>
</
Ellipse.Fill>
</
Ellipse>
Silverlight 3 now also supports the ability to place content onto perspective 3D planes. These content ‘planes’ allow you to easily manipulate any graphics or controls in depth – more important information can be pulled forwards and will automatically scale; while less important can be placed in the foreground. Any content can be placed on these planes, including controls, layout, and video – the content is still alive and can be clicked on.
Any attributes can be animated, and a set of interpolators are supplied for easing which make animation less jarring on the eye. For instance, in the example above the elements smoothly move into place when the user selects them. Silverlight 3 adds easing functions to animation such as spring and bounce. These effects allow the animation to start and end slowly, allowing the user’s eye to transition and signaling when change is complete.
Silverlight 3 new pixel shader effects Blur and DropShadow
The example above shows the use of pixel shader effects such as blur which are now supported in Silverlight 3. They can be applied to any graphical content. An example would be to make a button appear depressed on rollover you could use a drop shadow effect on the pressed visual state. In addition, we support a shader language (HLSL) which can be used to write additional effects.
To increase performance, we’ve added two additional capabilities. First, Silverlight utilizes the GPU in making the final blit to the screen. This can drastically improve rendering performance and is also invaluable for scenarios such as full screen video. You can also cache part of your scene into a buffer so that it can be rendered instantly. This can hugely improve graphics performance because the element tree only needs to be rendered once. Scenarios include moving or scrolling graphics; or elements in the background which do not change. You can set a flag to indicate which parts of the tree are to be cached. For instance, the complex gradients in the above example can be cached, which means that they do not need to be recomputed for each frame. This can produce an increase of the frame rate in rendering by up to 400%.
Bitmap content is important in many interfaces – for displaying scanned documents or images. A new API allows you to take a bitmap and write to the pixels themselves. Possible scenario here would be to build a photo editor to do red eye correction; perform edits on scanned in documents; or to perform effects upon cached bitmaps from elements on the screen – for instance by shifting pixels around you can make your own blur or fish eye effect.
Silverlight also uniquely enables Deep Zoom. Deep Zoom allows designers to investigate completely new ways of navigating through an application or web experience. No longer are designers constrained by the resolution of a customer’s screen or hampered by limitations in the display capabilities of their chosen delivery technology. What makes Deep Zoom compelling for designers is the fact that a Deep Zoom image is treated the same as any other image within Silverlight. It behaves like any other Silverlight image and can be controlled by the standard Silverlight animation metaphors with the added capability of being panned and zoomed in-place in the page.
Deep Zoom can already be experienced on sites such as the Renault Laguna Coupe and Kelly Blue Book.
The Laguna Coup? microsite used Silverlight technology with Deep Zoom to allow the user to see many aspects of the car on a single screen. Stephen Norman, Renault Group global marketing director explains “Renault Laguna Coup? is an exceptional car with a time-proof design that holds immense appeal to motor connoisseurs. Consistent with the connoisseur’s appreciation for superlative automotive design. Renault decided to use a web technology that would enable site visitors to admire the car in great detail,”
In Silverlight 3 Deep Zoom is even more powerful than before and will now support 1000s of elements at the same time. General performance has also been radically increased by not allowing the designer to cache parts of your scene to bitmap to improve rendering performance but by harnessing the support of the GPU to draw to the screen.
A dynamic layout system is also essential for an interactive, responsive and high-performance user interface – it allows elements to adapt to the size of their content (e.g. if they are bound to data, or are localized). In addition, layout containers provide application developers with readymade controls in which to insert their user interface elements (such as laying out a toolbar and controls within your application), achieving an implementation that closely resembles the idea behind the UI. Silverlight provides a unique grid layout container which enables you to have content overlap or span multiple rows or columns.
In Silverlight 3 we’ve rounded out our layout features with a set of new layout containers: wrap, dock and viewbox. Wrap panel is similar to a stack, but the content wraps at the end of the line. This is useful for a file browser or image list where the user does not want to scroll to see all of the content and has space for multiple columns. Dock lets you anchor content to the edges of the screen. Viewbox allows bitmap scaling of vector content when re-sized. This allows the developer to easily build scenarios such as having UI enlarge on different devices; or be able to scale a container to fit within a window – for instance showing a thumbnail of a UI.
100+ Controls
Start with over sixty customizable controls in the box—from datagrid to charts—and many more from partners. Easily skin controls using just mark-up to match your brand.
Having a full featured set of controls to work with makes applications much easier to build and more responsive to use than AJAX controls. With Silverlight, there are many new controls now available, adding richness to the development environment. Here are examples of the new Calendar, Chart and Datagrid controls :
The following controls are now available in Silverlight:
Input controls
Button, CheckBox, RadioButton, RepeatButton, HyperLinkButton , ScrollBar (Vert/Horiz), Slider, Togglebutton, Tooltip, Calendar, Password, GridSplitter, Date Picker, DatePickerTextBox, DomainUpDown, NumericUpDown, TimeUpDown, Rating, ButtonSpinner, Spinner, Auto Complete Boxm, Spinner, Time Picker, Time Up Down
Layout
Border, Stack, Grid, Grid Splitter, ScrollViewer, DockPanel, StackPanel, ViewBox, Expander, Page, Frame, Wrap Panel
Text
Textblock, Textbox, Tooltip, Label , AutoComplete
Data
Listbox; Multi-selection ListBox, DataGrid, ItemsControl, Content Control, Dropdown list, Treeview, Treeview Item, HierarchicalDataTemplate, FieldLabel, DataForm, ErrorViewer, NEW ! Data Pager, NEW ! Data Field
Navigation
Scrollviewer, Tab Control, Tab Item
Presentation
Image, MediaElement, Ink canvas, MultiScaleImage, Accordian, ChildWindow
Dialog
File Open, File Save, FontPicker
Chart
Area, Bubble, Scatter, Pie, Bar, Column, Line, Legend, Title
As we continue to build new controls, we are now making them available with source code and examples on a new toolkit website. Rather than having to wait for the next release of Silverlight; we’ve made available over 30 controls as we build them. This includes a full set of charting controls and an enhanced datagrid control. We also provide full source code to all of our controls. Over the next few months, we will have more controls available including controls for viewing Microsoft Office documents, Virtual Earth, SharePoint, and Real Time Collaboration Services.
To go further, each Silverlight control provides a unique skin template to allow its look to be completely customized. In the example shown below, rather than show a vertical listbox you may want to show a workflow of items. This is achieved by editing the template of the listbox to change the layout and look of each item. Silverlight’s unique control templates allow you to take an existing control and change the skin just by editing its template in XAML.
It’s easy to create graphics and then use them to customize controls, such as the look of a scrollbar. Silverlight provides templates for each control that allow designers to reach inside the control and change the layout or look of each part of the control without rewriting any code. For example, a scrollbar is made up of a layout container and a set of parts such as the up and down button and draggable thumb. Parts can be rearranged and their appearance changed to fully customize the control. The example below shows re-skinning the thumb and repeat buttons; it also shows how the layout of controls within the scrollbar can be changed:
Re-skinning a scrollbar
In Silverlight, the skin of a control is defined by its ControlTemplate. Because you create a ControlTemplate in XAML, you can change a control's appearance without writing any code. The example below shows the XAML mark-up used to create a button :
<
ControlTemplate>
<
Grid>
<
Grid x:Name="DownStroke"
Opacity="0">
<
Rectangle Margin="1,2,1,1"
Opacity="0.05"
RadiusX="3"
RadiusY="3"
Stroke="{TemplateBinding Background}"
StrokeThickness="1"/>
<
Rectangle Margin="1,1.75,1,1"
Opacity="0.05"
RadiusX="3"
RadiusY="3"
Stroke="{TemplateBinding Background}"
StrokeThickness="1"/>
<
Rectangle Margin="1,1.5,1,1"
Opacity="0.05"
RadiusX="3"
RadiusY="3"
Stroke="{TemplateBinding Background}"
StrokeThickness="1"/>
<
Rectangle.Stroke>
<
LinearGradientBrush EndPoint="0.5,1"
StartPoint="0.5,0">
<GradientStop Color="#A5FFFFFF" Offset="0"/>
<GradientStop Color="#FFFFFFFF" Offset="1"/>
</
LinearGradientBrush>
</
Rectangle.Stroke>
</
Rectangle>
</
Grid>
<
ContentPresenter Margin="4,5,4,4"/>
<
Rectangle x:Name="DisabledVisual"
IsHitTestVisible="false"
Opacity="0"
RadiusX="4"
RadiusY="4"
Fill="{StaticResource DisabledBrush}"/>
</
Grid>
</
ControlTemplate>
You can expose control properties to designers. You can use TemplateBinding to connect properties on shapes or other elements in your control to the properties on the control itself. This provides a built in mechanism to easily encapsulate together properties – in the button example (above) you can connect the background color of shapes inside your button to the background property on the control itself.
Silverlight also supports the Visual State Manager. States can be triggered inside of control templates so that you can specify how your control responds when pressed or moused over. The example below shows how a gradient with a button is animated in its mouse over state :
<
vsm:VisualState x:Name="MouseOver">
<
Storyboard>
<
ColorAnimationUsingKeyFrames Duration="0"
Storyboard.TargetName="BackgroundGradient"
Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[3].(GradientStop.Color)">
<SplineColorKeyFrame KeyTime="0" Value="{StaticResource MouseOverLinearBevelDarkEndColor}"/>
</
ColorAnimationUsingKeyFrames>
</
Storyboard>
</
vsm:VisualState>
In addition, you can use a style to set properties once and apply the style to multiple controls, which gives the controls a uniform appearance. When you apply a style to a control, you can still set properties locally on the control. The property value that is set locally takes precedence over the property value set on the style. For example, suppose you want most of the buttons in your application to be red and the font to be 16 pt, but there is one button that needs to be green, but still have 16 pt font. You can create a style that sets the Background property to red and the FontSize property to 16 pt and apply the style to each button.
Silverlight 3 adds several new features to skinning capabilities. It is now possible to have styles which are ‘based on’ each other. For instance, you can append or over-ride values by basing one style on another. This allows a single base style for instance to set all underlying colors and font sizes, and then make changes to this style by applying another for eg new items in the UI. In addition, you can set a style multiple times – this allows style values to be reset or over-ridden. A scenario here is that you want to them your application using a set of different styles for different color schemes; by making all of your graphics and controls skin colors be based on style values, they will then automatically update when you change the style.
Finally, you can create a dictionary of your controls. This feature allows use of Silverlight resources defined externally allowing sharing resources between applications and isolating them for localization and easier revisions. By locating the application resources in an external file, we provide the ability for reuse of resources between applications, centralized update by various developer/designers and ability to localize the file out of the application.
In the example below, EasyJet was able to combine custom controls for their map with re-skinned controls such as a slider, button, calendar and listbox. Notice how the controls reflect the brand and utilize its key orange color:
EasyJet, a large UK airline, has used Silverlight to build a smooth interface to help users to explore destinations in detail. It integrates with Microsoft Virtual Earth, so developers can layer the location-relevant data on top of the Virtual Earth map images. Customers who have set dates and destinations in mind can book quickly and easily by using a simple menu. A customer who is less sure of their destination can specify the dates that they’d like to travel and their preferred departure location. The map will then identify all the locations they can travel to within those dates and display fares in real time. Paul Curtis, Head of Application Architecture for easyJet, noted “Users can quickly compare where they can go on a given date and how much it will cost, without having to submit multiple searches. Using Silverlight all the information is offered in a single seamless interface, whereas standard websites can only do this by constantly re-loading web pages.”
Control skinning is also important when working with data. Silverlight allows controls to be directly connected to data sources, and the control itself can have an item template, which knows how to show each item of data. For example, a list control that has a template to create a calendar and text field for each item. If the user then selects or edits these items, the changes are made directly against the underlying data.
Listbox showing a Data Template with a set of controls per row
Silverlight 3 has also done more work allowing you to build higher level ‘pages’ and to then navigate back to them directly. An example of this is a more complex Silverlight application, containing a large number of pages of controls that the user needs to fill in. If they close the browser it can be difficult to return to the last state in which they were working. We now support creating applications that are built from Pages linked together via URI values. The user is able to navigate through the application’s pages via controls in the application’s UI, or via the browser’s forward/back buttons, address bar or history journal. The Navigation Framework allows the developer to build pages, define how they are linked together and how data is passed between them. In addition, the URI can also contain state which can drive the UI within the page – for instance set fields to particular values. This allows a user to bookmark a particular page and state and return to it later.
Finally, we now allow your controls to utilize system colors. A vital accessibility scenario here is to use these settings so that the display updates when the user switches their preferences to high contrast (for easier readability). The user will know if the system is running in high contrast, but to accomplish this, they will need information about system colors to present a contrast that matches the settings. A set of named colors are provided by the operating system. These controls and other graphics utilize these named values which will change when the user edits their system settings.
If all of this is not enough, you can also find a huge variety of controls from our partners. These include industry leaders such as Infragistics, Component One and Telerik.
Faster
Create more responsive user experiences with the fastest runtime on the Web. Harness the full power of today’s multi-core computers via multithreading support.
With the usage of complex Rich Internet Applications, more is expected from web applications inside the browser. Out of the box, the Silverlight Common Language Runtime is the result of more than 10 years of development to provide the high performance Just In Time Compiled code on the web. The benchmarks below show that Silverlight is faster by a magnitude of 2 to 10 times at performing common computation such as math, array access and drawing compared with ActionScript 3 used by Adobe Flash and Flex. Silverlight is also many times faster in performance than JavaScript used in web browsers. Performance is vital in choosing a framework that can scale to more complex tasks, and is also important because RIA frameworks run a large amount of their own framework code on the client to support features such as control skinning, layout and databinding.
Inside Silverlight, you can also do some real powerful optimizations by leveraging multiple threads. If you have long-running method calls, making a database call or a web service call, then your application can appear un-responsive while the system waits for the call to complete.
Unlike other web based programming languages, Silverlight already does a lot work for you on secondary threads. Calling a WCF service or an ADO.NET Data Service is done on a secondary thread with all the events properly dispatching to the main thread. Silverlight takes this further: certain objects like the StoryBoard and Timers are also done on separate threads. This allows the developer/designer to create animations without having to worry about multithreading for performance as it is done for you. This can also be useful in a lot of other areas, for instance :
- Silverlight game programming (i.e., AI)
- Applications that handle a lot of data
- Simple math/physics simulations
- Server monitoring of processes, databases, etc.
Go out of browser
Put your application in front of users using the new out of browser capabilities of Silverlight. Install on the user’s desktop so they’re never more than one click away. Your app can run even when disconnected from the Internet.
Silverlight 3 offers a new set of features for building light-weight, sandboxed companion experiences for the Web that run on the desktop. Silverlight out of browser allows websites to build even closer, persistent relationships with customers. It enables the application to be placed in a restricted store on the user’s machine; and then provide a link directly to it from the user’s desktop or start menu. This is all enabled within Silverlight 3 without any additional download of runtime or the need to write applications in a different way. An application can now be easily found on the user’s desktop or start menu, and launched with a single click. In addition, it can test if the network is connected, it can update itself, and can also have access to Isolated Storage. Taken together, these features represent a radical upgrade to the web experience
Silverlight 3 allows an application to be taken ‘out of browser’, by simply adding a few additional commands. The application is then securely stored on the local machine. Because Silverlight remains sandboxed, customers can trust it on their desktop and it can run without security warnings. We provide a consumer friendly non-administrator install.
First, the application can now be easily found on the user’s desktop or start menu, and launched with a single click. This allows it to build a relationship with the user that they can quickly find – for instance they no longer need to search for you via a web search engine or favorites; you are just one click away on their desktop. In the example shown below, KEXP radio has used Silverlight to build an out of browser companion application to provide a deeper relationship with customers by making playlists and music available from a single click on the desktop and to play music when they are offline.
KEXP is a radio station based in Seattle which provides a wide range of alternative music. Their challenge was to build an experience which allowed uses to listen to music wherever they were. Aaron Starkey, Manager of online Services, KEXP noted “We want people to come to KEXP as their home. It’s the only place they can get their music. With Silverlight 3 [Out of Browser] we were able to make our content available directly to all of our listeners, wherever they are. Silverlight reduced the overhead of using our servers and client – it’s a platform we can easily plug our existing services in to. "
The KEXP application is easily downloaded from the web without a frightening security prompt, and an icon created on the user’s desktop. When the user launches the application it runs in its own window and can still access the network and isolated storage on the local machine.
The application also has access to its own specific directory in Isolated Storage. This allows for scenarios such as disconnected media playback (eg listening to KEXP on an airplane); and to also process locally stored data.
The application is still completely safe and secure, since it is still running with the Silverlight sandbox; so it does not need to worry the user with any security dialogs. However, it can still connect to the network to pull in the user’s details such as favorite shows and music.
In addition, the application can test if the network is connected – for instance it may want to re-sync when it detects a connection. An example here would be an email client which caches sent items until it detects a new connection. By utilizing this capability, you can make an application be occasionally connected so that it can behave gracefully when it loses connectivity.
Finally, the application can automatically update itself by testing against which version is being delivered from the server. This is done whenever the user launches the application. You can add additional feedback to the user if you need to here by catching the update event. When KEXP wants to add new capabilities to its application, it can do this simply by updating the XAP file from which the application originated, the out of browser experience will then prompt the user that an update is available. If the user ever needs to remove the application, they can simply right click on it and choose to remove it.
Taken together, these features represent a radical upgrade to the web experience - allowing it to finally work whether the machine is connected or not; to build a single unified experience that can connect with your users no matter where they are.
Works with what you’ve got
Enhance your existing site with rich interactivity and video. Silverlight can integrate with your current AJAX pages via the HTML DOM Bridge. Upgrade your user interface with Silverlight without rewriting your web services or server applications.
It’s easy to add richness to existing AJAX applications and reduce cross-browser inconsistencies. Silverlight blends together Web and video standards and unified media formats for simple integration with existing Web technologies and assets. This means Silverlight works with any back-end Web platform technology and integrates with your existing infrastructure and applications, including Apache, PHP and more on the server, as well as JavaScript, XHTML and others on the client; no “rip and replace” required.
The .NET Framework not only allows developers to target XAML markup but also lets them target the browser HTML DOM. This enables faster and more scalable Web 2.0 sites and also eliminates a substantial part of the testing that is required due to browser differences. For instance, you can simply reach out to elements in the web page using and then attach events to elements or write to the DOM.
In cases where you have many instances of the Silverlight control in your page, Local Connection allows communication between two Silverlight applications on the client-side without incurring a server roundtrip. Although some of this can be achieved with the HTML DOM Bridge and Scriptable objects, the access to the DOM from the Silverlight app is a pre-requisite. Scenarios here include having a Silverlight menu and navigation control within separate controls on the web page communicate together.
If you are using ASP.NET or SharePoint, you can also get out of the box components which you can plug in to your existing page to add richer functionality. For example, Nintex provides a set of rich charting components in Silverlight that can be placed in a SharePoint page :
Nintex created a series of Silverlight controls hosted within Sharepoint Web Parts. Their reporting UI displays data using Silverlight barcharts, piecharts, tables, etc. This allowed them to keep graphical and tabular information in sync between controls, page through data without requiring round trips back to the server, and allowed users to interact with charts to create intuitive drill-down experiences. The result is a rich, interactive visualization of a great deal of data with sub-second response times.
The solution was released it in August 2008. Mike Fitzmaurice, VP of Technology reports “The tangible benefit was a 50% reduction time developing the UI compared to AJAX techniques, and probably even more over alternative in-browser environments. It also meant we had a lot less to code on the server, and didn’t have to worry at all about cache management, static image generation, or any of a long list of inelegant, cumbersome byproducts of non-Silverlight approaches. Plus - let’s not lose sight of this – the end result just plain looks great. Users like it. Users understand it.”
Almost every application needs to be able to access and update data from a server. Silverlight makes this easier by proving built in support for several levels of protocols : at the base it supports sockets and a web client interface to simplify file uploading; on top of this web services can be created. Built in support for Windows Communication Foundation (WCF) means you can create a proxy class from web service metadata and use the proxy to communicate with a web service from your Silverlight-based application. At a higher level ADO.NET provides a much wider set of services by allowing you to send queries via the URL and receive back result sets directly.
It can still be a lot of work to connect your application to data via web services. In many cases the server is running in a different language than your client, and you need to do a lot of work to stub out methods for each service call. With Silverlight, it is possible to leverage the consistent programming model that .NET provides across both the server and the client making it is much easier and quicker. Visual Studio has built in support to create a proxy class from web service metadata and use the proxy to communicate with a web service from your Silverlight-based application. Silverlight uses Windows Communication Foundation (WCF) and ADO.NET capabilities to create proxies and send SOAP 1.1 messages over HTTP. .
In Silverlight 3, we’ve also done more work to increase performance across our network stack. In many cases, using XML or SOAP to communicate with a server leads to a bloat in the size of data packets. To solve this, we’ve added support for Binary XML. This compressed XML greatly improves performance in data transmission by compression between the client and server. The graph below shows the reduction of size in data messages when passing a large array of typical data using Binary XML.
Size reduction in a large array of data using Binary XML
Having acquired data, the user interface then needs to represent it in some way or form. Data visualization apps often want their data to be separate from the UI components. Furthermore, most websites are data rich and display data coming from web services etc. Often times, this data is live such as stock ticker applications. Data binding provides a way of enabling such apps by providing an easy to use way of connecting data with UI. Silverlight supports databinding between your data and UI within XAML, allowing you to directly connect properties to your data, and also have collections automatically generate lists of controls. For instance, you can create a data template in a listbox to show a set of controls such as an image, checkbox and label for each data item; and then have this UI automatically generated and updated when the underlying data changes. This significantly reduces the amount of code required to generate UI items, handle updates, work with user gestures such as selection, and handles events.
To increase developer productivity, we have also added support for data validation – such as checking for a correct date of birth, telephone number or ZIP code. We provide built in Ui support and skinnable templates for warnings. Architecturally, we allow the developer to specify as much of their validation logic in the model on the server as possible, and only have to specify it there. Through code generation, all of this work on the server should is available on client for them to consume, saving the need to rewrite anything. In addition, at each tier moving from the database up the developer can inject new validation rules into the pipeline and have them all share a common experience in the UI without it having to know about the specifics of any validation rules ahead of time.
Validation Errors UI
Millions of skilled developers to help you
Tap into the talent pool of six million .NET developers to find the expertise you need. A vibrant ecosystem means it’s easy to find partners and pre-built components.
Silverlight has gained strong industry support from content creators, distributors, software vendors, and solution providers. Over 85 companies now support Silverlight via the Silverlight Partner Initiative, and major enterprises and media companies are announcing plans to integrate Silverlight into their online experiences, promising to truly light up the Web for viewers and end users.
Since Silverlight is tightly integrated with .NET, millions of developers using Microsoft developer technologies today for desktop and Web-based RIAs can transfer their skills quickly to Silverlight development. Today, millions of developers use .NET technologies, making it easy to find a developer with the right skills. Currently, over 400,000 developers and designers are working with Silverlight.
Many new partners have also joined the Silverlight Partner Initiative (SPI) since the launch of Silverlight 2, including leading CDNs, solution providers, and encoding ISVs, bringing the total to approximately 200 partners in over 30 countries who are helping customers around the world develop, design and deliver compelling Silverlight experiences :
In addition, the Visual Studio Industry Partner program (270+ VSIP partners, 25 VSTS partners) provides 800+ VSIP packages and 10,000 Visual Studio Add-Ins. Organizations developing and deploying Silverlight applications can draw on existing internal skills and tools but also leverage the thriving ecosystem built around .NET for a wide range of services and products to ensure success:
- Partners skilled in supplying .NET and Silverlight development and deployment skills
- Partners who provide controls and components to add to applications
- Partners who provide entire applications that can be rebranded
- Hosting partners skilled in deploying applications on the Web for scalability
- Content delivery partners with global networks for delivering media content Worldwide
All in the framework
The .NET framework has everything you need all in one framework including WCF, ADO.NET, LINQ, cryptography, generics, threading and dynamic languages.
The Common Language Runtime (CLR) provides the underlying programming framework within Silverlight. It is an efficient industry-strength component which can scale to build complex applications. It is responsible for managing code execution at runtime, and provides core services such as compilation, memory management, thread management, code execution, enforcement of type safety, and code safety verification. Because it provides a managed environment for code execution, the common language runtime enhances developer productivity and contributes to the development of robust applications. .NET is also consistent between server, client and devices.
Silverlight includes a rich .NET base class library (including collections, IO, generics, threading, globalization, XML, local storage, etcetera). It includes rich APIs that enable HTML DOM/JavaScript integration with .NET code. The .NET APIs in Silverlight are a compatible subset of the full .NET Framework.
Dynamic Languages : The Silverlight Tools Beta 1 for Visual Studio 2008 includes the IronPython dynamic language runtime and three dynamic languages. IronRuby, and Managed JScript
Just Intime Compile : CLR languages utilize a JIT process to improve performance.
Strings and other data type support : CLR languages are strong typed which improves performance and makes maintenance and debugging much easier.
Threading : Using multiple threads of execution is one of the most powerful ways to keep your application responsive to the user and at the same time make use of the processor in between or even during user events. Silverlight is the only web runtime to provide this.
Reflection : enable you to obtain information about loaded assemblies and the types defined within them, such as classes, interfaces, and value types. You can also use reflection to create type instances at run time, and to invoke and access them. Silverlight is the only web runtime to support reflection.
Collections : Objects of any type can be grouped into a single collection of the type Object to take advantage of constructs that are inherent in the language. For example, the C# foreach statement (for each in Visual Basic) expects all objects in the collection to be of a single type.
Generics : A generic collection class might use a type parameter as a placeholder for the type of objects that it stores; the type parameters appear as the types of its fields and the parameter types of its methods. A generic method might use its type parameter as the type of its return value or as the type of one of its formal parameters.
Events and Delegates : An event is a message sent by an object to signal the occurrence of an action. The action could be caused by user interaction, such as a mouse click, or it could be triggered by some other program logic, such as when a page has finished rendering. The object that raises the event is called the event sender. The object that captures the event and responds to it is called the event receiver.
Exceptions : An exception is any error condition or unexpected behavior encountered by an executing program. Exceptions can be raised because of a fault in your code or in code you call (such as a shared library), unavailable operating system resources, unexpected conditions the common language runtime encounters (such as code that cannot be verified), and so on.
Formatting : numeric, date & time; etc : Silverlight provides a customizable, general-purpose formatting mechanism to convert a value into a string suitable for display. For example, a numeric value can be formatted in hexadecimal, scientific notation, or a series of digits separated into groups with a user-specified punctuation mark. Dates and times can be formatted as appropriate for a particular country, region, or culture. An enumerated constant can be formatted as its numeric value or its name.
Garbage Collection : The .NET Framework's garbage collector manages the allocation and release of memory for your application.. The garbage collector's optimizing engine determines the best time to perform a collection, based upon the allocations being made. When the garbage collector performs a collection, it checks for objects in the managed heap that are no longer being used by the application and performs the necessary operations to reclaim their memory.
Cryptographic Services : enable you to perform both symmetric and asymmetric cryptography, create hashes, and provide random number generation.
LINQ : .NET includes advanced features for working with data on the client. LINQ (language-integrated query) allows you to perform SQL like queries directly against local collections – for instance to filter and transform data.
Real Developer tools
Visual studio provides you industrial strength tools to get your job done. Award-winning including a code editor, debugger, profiler, data designer, and team server
Silverlight is built on the .NET framework; introduced over 8 years ago, .NET is now in use in over 100,000 organizations and understood by over 6 million developers worldwide. .NET takes care of the common tasks that developers typically have to code, freeing them up to concentrate on developing features specific to an application.
For organizations with an existing development capability it’s likely their developers already use the tools and languages for creating Silverlight applications: Visual Studio. The Visual Studio family ranges from free Express versions of the tools to Enterprise Application Lifecycle Management (ALM) tools in Visual Studio Team System ensuring that whatever your needs there is a version of Visual Studio for you.
Visual Studio 2010 Editor for Silverlight.
Because Silverlight uses Visual Studio for development, it also enables a wide range of other helper technologies to be employed. Visual Studio itself comes complete with a full-featured code and XAML editor, a debugger, a profiler and a data designer. Visual Studio 2010 will add features to support working with data, layout and designing user interface.
Development with .NET and Visual Studio integrates Silverlight with a broader range of Server products from Microsoft. This makes integration simple with servers already running business functions including SharePoint Server, SQL Server, Windows Server, Microsoft Dynamics, BizTalk Server.
Stop throwing your ideas away
Create interactive wireframe prototypes in Expression SketchFlow; style the look of controls and layouts directly in Expression Blend, and pass the same project directly to Developers.
A major obstacle to delivering rich application experiences to the Web is the disconnect between Designers and Developers, both of whom are fundamental in the process. This happens because their toolsets force them into a ‘silo’ mentality with the only point of contact being a one-time hand-over of a graphical representation of the user interface to the developers. This causes several issues:
- Developers have to re-interpret the graphical design using the tools and technologies they use to implement the user interface. The end result is a developers’ interpretation of a designers’ intent which hardly ever matches the original vision.
- Designers see the Developers’ implementation and don’t like it so have to find a way to feedback changes to the developer, usually pen and paper. This cycle continues, consumes large amounts of energy and creates tension between Designer and Developer.
The final result end up being delivered late and is a poor reflection of the original design.
Designer and Developer tools for Silverlight overcome these problems by using XAML as a common language to describe user interfaces and for Developers and Designers to collaborate. Designers create user interfaces in Expression Blend and Developers then open the exact same project files and start coding to the user interface. Designers can then review how their design is being implemented and make changes to the design as they realise interaction flows with the Developer. This is illustrated below.
Building the UI in Expression Blend; then editing the same project files in Visual Studio 2008
This break-through in Designer Developer collaboration means that creating interactive application experiences is a truly collaborative effort delivering exceptional interfaces in a reduced time to market.
SketchFlow: Prototyping Silverlight User Experiences
Sketching and prototyping are successful techniques that enable you to successfully explore multiple ideas and concepts quickly without excessive investment in either time or resources.
SketchFlow, part of Expression Studio 3, revolutionizes the speed and efficiency you can demonstrate a vision for an application. SketchFlow provides an informal and quick way to explore, iterate and prototype user interface scenarios allowing you to evolve your concepts from a series of rough ideas into a living breathing prototype that can be made as real as a particular client or project demands. This rapid, iterative and cost effective approach to prototyping allows you to concentrate on what matters most, being creative and building the best solution for your client, on time and within budget.
SketchFlow enables you to quickly and efficiently map and experiment with the flow of an application UI, the layout of the individual screens and how the application will transition from one state of the application to another.
Defining the flow of the application
Use the built in ‘sketch’ styled controls and components, scribbles, sticky notes as well as imported images to iterate and visualize your ideas quickly. This quick and fluid way of working means you can create, test, iterate and discard ideas in rapid succession allowing you to explore multiple routes for a solution with minimal cost. The speed and low cost that ideas can be visualized and demonstrated to a client enable you to consider approaching projects that previously would not have been cost effective or profitable.
Quickly iterate on screen layouts using the built in Sketch styled components
The ability to rapidly demonstrate how the application will flow and transition from state to state enables clients to appreciate the user experience of the application earlier in the design process and highlights navigation and application flow issues early in the development cycle helping you and the client reducing painful and costly last minute concept changes.
Gathering effective and timely feedback from a client on the prototype is just as imported as creating the prototype in helping reduce time lost and costs in the design and development process. The freely distributable SketchFlow player ensures that your Silverlight concepts can be demonstrated effectively to your client through a standard browser where ever they are located.
Clients review the Silverlight prototype in their browser, testing multiple parallel scenarios and provide in context feedback for the development team by annotating their experience as they navigate the different screens.
Client adding feedback in the browser based Silverlight SketchFlow player
Once the feedback is finalized clients can save and return it to the development team who can then import it directly back into Expression Blend. The client’s annotations are visible in-context on the design surface allowing it to be immediately reviewed and acted on.
Concepts built during this early design phase may be a prototype in look but they are actually real Silverlight projects utilizing the same project format that is already shared between Visual Studio and Expression Blend. What this means is that from the very first moment you are working on a real project that can be explored and presented – even while it is just a flow of conceptual sketches without any real user interface. Traditional prototypes are generally redundant after the concept phase and discarded. SketchFlow enables you to leverage all the previous conceptual work, every asset and component created is reusable in your production project – nothing goes to waste.
You are able to rapidly evolve your prototypes utilizing the full functionality of Expression Blend 3 with no limit to the scope of a prototype :
- Mock-up functional, data-driven UI with data binding and sample data.
- Apply rich interactivity with Behaviors, without writing code, using extensible libraries of packaged interactivity building blocks.
- The ability to integrate with existing workflows by importing Adobe Photoshop and Illustrator files at full fidelity; preserving layers, vectors and even most text formatting accelerates your workflow further.
SketchFlow enables the creation of comprehensive project documentation through an export to Work function that creates an outline project document complete with table of contents, screen grabs of the application flow and the different screens within the project. This literally saves hours of time during documentation creation and enables you to easily keep your project outlines up to date even while you are rapidly iterating on the application.