取经之旅——把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. ……(不断补充)
posted @   朱永光  阅读(1698)  评论(3编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
点击右上角即可分享
微信分享提示