取经之旅——把WinForms开发的桌面应用移植到Silverlight开发的RIA(前言)

昨天(3月25日)开始打算把现有用WinForms开发的桌面应用(一种科学数据分析软件)移植到Silverlight上,可以成为RIA应用或OfB(Out-of-Browser)应用,也为以后SaaS应用和Cloud应用做准备。

把一个WinForms开发的桌面应用移植到Silverlight,难度可想而知,尤其在涉及大量IO操作的应用里。另外,由于现在Silverlight技术的一些局限性,有些功能最终能否达到令人满意的程度,还无法预测到,比如,我现有的桌面应用使用了并行计算来加快计算速度,而Silverlight并不支持Parallel Extension(希望Silverlight 5能支持);又如现在Silverlight的打印功能还比较弱,是否能支持数据报告的很好输出也是个问题。

在面临巨大困难的情况下,为什么要进行移植呢?我想Silverlight带来的好处是不言而喻的:

  • 运行时的footprint很少(才4,5M),WinForms就算用Client Profile也需要下载40,50M的东西,有时候还会出现莫名其妙的安装问题
  • 跨平台,我们的应用未来会面向国际用户,尤其外国学生用Mac的很多,虽然Mono对WinForms的支持还是不错了,对于我们这样复杂的应用估计很难用Mono来实习WinForms的跨平台
  • 容易迁移,Silverlight作为WPF的子集,综合了Web和Win开发优点,同时即可运行在桌面上,也可以运行在Web上或Cloud上。

不过在移植过程,我相信就像取经路一样困难重重,也是真的会达到9X9=81个问题呢,估计影响的不仅仅是代码本身还会有软件的设计。

接下来,我将用流水账的方式来记录在移植过程中遇到的大小困难和解决办法。

遇到的困难主要是如下几种类型:

  1. Silverlight为了精简,删除了很多重复或废弃的功能,如果之前的代码用到的话,可以需要重写或者自己实现一个类似的方法
  2. Sandbox的安全机制,让一些功能需要变换思路来实现。
  3. 访问服务器,只能通过异步方法,对原有的代码逻辑造成影响
  4. ……(不断补充)

你可能感兴趣的:(silverlight)