【问题标题】:Thoughts about using Silverlight In Desktop Apps?关于在桌面应用程序中使用 Silverlight 的想法?
【发布时间】:2008-12-15 07:46:43
【问题描述】:

总结一下,众所周知,

a) Silverlight 预计由浏览器托管,并在隔离的沙箱中运行,因此不会出现任何安全问题

  1. Silverlight 没有直接访问权限 到文件系统,除了 隔离存储区
  2. 没有 打开常用对话框的直接方式 Silverlight 中的 File Save 等框(尽管支持 Opendialog 框)。

b) Silverlight 无法访问打印机等本地资源

有哪些方法可以超越沙盒,以便我可以在本地托管 Silverlight 应用程序、读取文件并在需要时将其保存回来、将数据移交给打印机等等......

更新:

我不能选择完整的 WPF 吗?不。我也对跨平台解决方案感兴趣 - 例如,您可以在 Mono Web 浏览器控件中托管 Silverlight,这样您就可以在几乎任何地方运行它。

这个想法是通过在某些领域(例如持久性、资源访问等)提供关注点分离,在我的桌面上重用我为 Web 构建的相同应用程序。 场景:

1- 某种小工具容器,可以访问本地资源。 2 - 基于桌面 Silver light 的媒体应用程序

更新:

我刚刚做了一个 POC,使我能够访问打印机并在本地保存文件,当然是通过我托管 Silverlight 应用程序的 shell。如果你不想,你可以看看帖子here in my blog

【问题讨论】:

    标签: c# .net silverlight silverlight-2.0


    【解决方案1】:

    我能想到的两种方法是,

    创建一个“外壳”

    使用 Web 浏览器控件在 Winforms 桌面应用程序中使用 Silverlight 托管 HTML 页面,并使用 HTML DOM 来回通信。然后我可以请求托管 shell 执行打印等操作。 See details here

    Mono 还有一个 Web 浏览器控件 - 基于 FireFox XULRunner 而不是 IE - 尚未成功在其中加载 Silverlight。另一种选择可能是使用 Webkit。

    嵌入网络服务器

    在 Host 应用程序中嵌入一个轻量级 Web 服务器,并处理执行此类操作的请求。您可能可以在 HTTP 之上定义一个协议,用于保存到本地文件夹、发送数据以打印等。

    【讨论】:

    • 嵌入式网络服务器?对于客户端应用程序?这可能有点过度设计。
    • 是的,当你没有更好的选择时
    【解决方案2】:

    完整的 WPF 应用程序不适合您的情况吗?

    您可能知道 Silverlight 使用 WPF 的一个子集,因此您可以相对轻松地更改您的应用程序。

    wpf 应用程序比在应用程序中捆绑 Web 服务器等更容易。

    如您所知,在可预见的未来,您将无法通过 Silverlight 访问诸如打印机和文件(独立存储除外)等资源。

    您可以在应用程序的单独部分中将文件上传到网络服务器,然后在您的 silverlight 应用程序中从服务中读取这些文件。

    根据您的打印要求(例如,如果您只想将所有内容发送到办公室打印机),您可以将您想要打印的信息发送到服务,然后该服务将为您打印。但是我猜你希望每台客户端机器都能够打印,在这种情况下这对你不起作用。

    【讨论】:

    • 这个想法是不使用 WPF - 所以我最终会得到两个代码库。另外,请参阅我的更新,例如我现在如何从我的 silverlight 应用程序访问打印机。 :)
    【解决方案3】:

    我也在尝试为桌面和 Silverlight 重用代码库。除了提到的那些,我知道还有两个选项

    如果您从普通项目中直接引用(而不是项目引用)silverlight dll,它应该可以工作。这将让您为这两个项目引用一个 silverlight dll。

    有两个指向同一组文件的项目文件(一个 wpf,一个 silverlight)。您可能不得不在这里和那里使用一些编译器标志,但这应该让您对两者使用相同的文件。

    【讨论】:

    • 查看我上面的更新,了解为什么这对我来说不是一个好选择。我也有兴趣在 Mono 中运行它。
    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多