doc/articles/guides/silverlight-migration/00-overview.md
Despite the last version of Silverlight 5 being released back in 2011, the platform continued to be popular and there are a number of applications that have been developed and remain in use. Unfortunately, Silverlight reached the end of support on October 12, 2021 and there continues to be significant limitations for Silverlight development and deployment:
If you maintain one of these Silverlight applications, it is time to consider migrating to a supported platform. For those that wish to continue with XAML and/or C#, the Uno Platform is a natural choice for continuing the delivery of such applications on Windows, iOS, Android, and WebAssembly.
[!TIP] To learn more about the Uno Platform, see Uno Platform documentation.
The following video demonstrates the Silverlight TimeEntryRia application
When undertaking an application migration, it is important to identify the key objectives. If maximizing the re-use of existing code (C# and XAML), while minimizing the redesign of the UI layout are high on the list, strongly consider the Uno Platform.
Other things to consider include:
Considering Navigation options
[!TIP] To learn more about navigation, see Navigation design basics for Windows apps.
Styling choices - consider whether to migrate existing styles or adopt Fluent/Material as a new default
Asynchronous code and threading
Updating MVVM frameworks, if used (pure code-behind only still works well with UWP)
Data Access technologies - Silverlight apps commonly used WCF services and/or WCF RIA Services, both of which have been discontinued
Silverlight application storage
[!TIP] To learn more about storage options, review the Uno Windows Storage documentation.
You can find 50 Reasons Why Uno is great choice, however there are some specific reasons that stand out:
[!NOTE] Of course, UWP and, therefore, Uno, support the development of responsive applications that can exploit the portrait style designs prevalent in mobile applications, as well as responding to resizing of an application window.
This guide to migration will refer to a Silverlight 5 application called TimeEntryRIA that utilizes the Silverlight Business Application solution template using the Cosmopolitan Theme (once referred to as Metro) and also includes Authentication, WCF RIA Services and WCF services. The sample app is a somewhat simplified Time Entry application that supports 3 roles:
The guide will discuss the major aspects of migration as they arise during the course of creating the TimeEntryUno version of the application. The typical approach to writing an Uno application is the start with the UWP target, and then test with each of the other targeted platforms. As the current migration scope is only UWP and WASM, it makes sense to test the WASM version frequently as well.
[!NOTE] The Silverlight TimeEntryRIA sample app as well as the sample migrated app TimeEntryUno are available for review - checkout the TimeEntry Samples article for details.
The following image shows the home page of the application. There are 3 key areas and the rest is "chrome" - the default style for Cosmopolitan was often criticized for the wasted space.
The 3 areas are:
Here is an example of the app logged in, displaying the About view:
The application navigation structure is as follows:
As this TimeEntryRIA is used as a sample, it demonstrates a number of approaches to constructing a Silverlight app including code-behind and MVVM, as well as using different data service implementations.
The next section will walk through creating the initial Uno solution.