Yesterday (March 25) began to migrate the existing desktop applications developed using WinForms (a scientific data analysis software) to Silverlight, which can be used as Ria or OFB (out-of-browser) applications, Also prepare for future SaaS applications and cloud applications.
Porting a WinForms-developed desktop application to Silverlight is difficult to imagine, especially in applications involving a large number of IO operations. In addition, due to some of the limitations of Silverlight technology now, some of the features can ultimately reach a satisfactory level, it is not possible to predict, for example, my existing desktop applications using parallel computing to speed up the calculation, and Silverlight does not support parallel Extension (hopefully Silverlight 5 can support it), and the ability to support the good output of data reporting is also a problem, as is the case with Silverlight's printing capability is still relatively weak.
In the face of great difficulties, why transplant? I think the benefits of Silverlight are self-evident:
Runtime footprint Very few (just 4,5m), WinForms even if use client profile also need to download 40,50m things, sometimes there will be inexplicable installation problems
Cross-platform, our application future will be for international users, especially foreign students with a lot of Macs, although mono to WinForms support is good, for us such a complex application estimates difficult to use mono to practice WinForms Cross-platform
Easy migration, Silverlight as a subset of WPF, combines the benefits of web and win development, running on the desktop, or running on the Web or cloud.
However, in the transplant process, I believe that as difficult as the way to learn, but also really will reach the 9x9=81 problem, the impact of the estimate is not only the code itself will have software design.
Next, I will use chronological to document the size difficulties and solutions encountered during the migration process.
The difficulties encountered are mainly the following types:
Silverlight to streamline, remove a lot of duplicate or obsolete features, if the previous code to use, you can rewrite or implement a similar method yourself
Sandbox security mechanism, so that some functions need to change the idea to achieve.
Access to the server, only through asynchronous methods, the original code logic can affect
...... (continuously added)