• 使用Silverlight 3作为桌面应用程序开发平台(1——构想)


    Silverlight 3作为微软最新的RIA平台,为我们带来了很多新特性。RIA顾名思义,即要有Internet,又要有Applicaiton。不过我们是否可以只要Applicaiton,也就是说把Silverlight 3作为开发桌面应用程序的一个平台呢?

    下面,我就从几个方面来讨论基本构想和可行性:

    部署和运行

    可选方式1:利用Silverlight 3的Out-of-Browser特性。

    描述:提供一个安装网页,在网页中嵌入一个Silverlight Plus-in来加载整个应用程序,但是只显示一个“Install”按钮来提示用户安装;用户安装后,从桌面快捷方式启动的时候判断此应用程序是否已经被安装了,如果是,那么就显示真正的程序主界面。

    优点:最简单的部署运行方式,可自动升级。

    缺点:访问本地数据有一定局限性,后面会讲到这个问题。

    可选方式2:利用浏览器控件承载Silverlight插件。

    描述:制作一个桌面程序的外壳,只包含一个浏览器控件(Browser Control),然后在这个控件中加载一个用来显示Silverlight应用程序的HTML网页。对于WinForms、WPF和Win32都有WebBrowser控件,也可以直接使用MSHTML组件,对于Linux,Mono利用Mozilla的Gecko引擎也实现了WebBrowser控件,对于Mac OS X,Mono利用WebKit引擎实现WebBrowser控件,当然你也可以直接去使用WebKit框架。另外,在Silverlight 3文档中的“Alternative Hosting”小节,还有其他的一些方式,但在我们的这种场景中没有必要使用。

    优点:用户安装体验可以和普通的桌面应用程序一样。可以通过桌面外壳完成更多的事情,比如启动一个后台进程为Silverlight应用程序提供数据等。

    缺点:稍显复杂,需要自己处理自动升级。

    数据库和访问技术

    可选方式1:XML文件和LINQ to XML

    描述:把数据保存于XML中,Silverlight内置了LINQ to XML的支持,方便你读取XML数据。其实要操作XML数据,还可以用XmlReader和XmlWriter,但是这样明显不够方便。

    优点:Silverlight SDK内置功能,简单易用。

    缺点:不能类型化地访问数据。只适合处理简单数据。

    可选方式2:XML文件和LINQ to XSD for Silverlight

    描述:LINQ to XSD是.NET 3.5的一个很强大的组件,可以基于XML Schema(XSD)来生成对应的Object Model,然后类型化地操作XML数据。可以说就是一个Typed LINQ to XML。不过,由于Silverlight削减了很多函数库。这个东西无法在Silverlight运行起来。不过我相信Hack一下,应该可以实现。

    优点:实现XML文件的类型化操作

    缺点:实现步骤困难,需要用完整的.NET 3.5框架来协助。

    可选方式3:ADO.NET Data Services

    描述:整个方式和RIA模型中使用ADO.NET Data Services的方法大致相同,只是要利用第二种可选的部署和运行方式,在后台启动一个HTTP Services来承载ADO.NET Data Services的REST服务。当然,也可以hack一下让ADO.NET Data Services客户端函数库访问本地的XML文件,这样的话实际上和LINQ to XSD类似,只是利用其来完成xml到objects的转换。

    优点:Silverlight内置支持,可以利用现在任何数据库技术。可以轻易移植为真正的RIA。

    缺点:需要使用复杂的宿主模式,或者进行一些hack工作。

    可选方式4:Db4o

    描述:db4o 7.10开始不仅提供了完整的LINQ支持,而且还提供了Silverlight版本(我一开始还打算自己hack一下,结果去copy源码的时候,发现有个Db4o-Silverlight-2008.sln,哈哈)。

    优点:最完善的存取数据的技术,可支持两种部署运行方式。

    缺点:没有明显缺点,不过要注意许可证的问题,要不就付费,要不就遵守GPL。另外,如果想以后可移植为RIA,可以用ADO.NET Data Services来访问db4o

    可选方式5:Sqlite(C#版本)

    描述:最近有人把Sqlite从C语言一句一句地移植到了C#。这样,我们就有可能在Silverlight客户端中使用Sqlite了。这可是Silverlight能用的第一个关系数据库哦。
    优点:可以沿用之前关系数据库及Sqlite的经验。
    缺点:效率有所降低。但是,以现在PC的性能来说,基本可以忽略了。

    存储本地数据文件

    目前唯一方式:Isolated Storage。

    为什么要这样做?

    1. 随着Silverlight的功能逐步强大,对于大部分应用程序使用Silverlight来开发已经足够,而无需诉诸WPF。
    2. 统一开发人员的技能,虽然Silverlight和WPF很相似,但毕竟是WPF的子集,某些实现和效果还是不一致。
    3. 用Silverlight就可以开发纯桌面应用程序和RIA,并在某些条件下可以轻易相互移植。
    4. 可以方便开发跨平台应用程序。虽然,Mono可以实现,但肯定没有Silverlight来得容易。
    5. 无聊才这样做……

    (PS:构想阶段,思路有待完善和修正。另,欢迎大家拍砖。)

    分享到: 更多
  • 相关阅读:
    JTAG各类接口针脚定义及含义
    【转载】关于quartus ii软件中注释乱码问题的解决方法
    【转载】浅谈阻塞和非阻塞语句的本质区别
    labview事件结构学习
    Labview按钮的机械动作
    LabVIEW中数组的自动索引
    opencv实例三:播放AVI格式视频
    TensorRT 不支持Tensorflow的操作有如下
    深度学习模型stacking模型融合python代码,看了你就会使
    sklearn的K折交叉验证函数KFold使用
  • 原文地址:https://www.cnblogs.com/redmoon/p/1526664.html
Copyright © 2020-2023  润新知