如何在Silverlight和桌面应用程序之间进行通信?

时间:2012-10-18 16:18:22

标签: .net silverlight inter-process-communicat

我有浏览器内 Silverlight 5应用程序。需要使其适用于扫描仪。我可以控制SL5应用程序,我可以开发桌面应用程序(.NET)来执行扫描部分。

如何让SL应用程序与桌面应用程序“对话”?理想情况下,我认为如下:

  1. 当您上传/下载文档时,我的“文档管理”与SL5一样。
  2. 当用户想要扫描时 - SL5会启动一些导致桌面应用程序打开的进程(?)。
  3. 如果桌面上没有应用程序 - 它将转移到带有说明和下载的网页。
  4. 当桌面应用程序打开时 - SL应用程序将通过参数,设置等。
  5. 扫描文档时 - 桌面应用程序会将信息传递回SL应用程序
  6. 有没有办法让SL / WPF互相交谈?怎么样?

2 个答案:

答案 0 :(得分:2)

我之前在Silverlight应用程序中实现了扫描。它涉及创建一个activex / dll控件并将其托管在托管.aspx页面中的silverlight应用程序旁边。控件本身是完全隐藏的,我只是使用它的方法来访问扫描仪并使用本地文件系统。现在被授予,我必须使这个成为一个受信任的站点以及不允许控件访问客户端计算机的内容。然后你可以使用javascript作为silverlight代码和扫描控件之间的桥梁。为了将图像传回Silverlight,我只是将扫描图像转换为base64字符串并将其传递回javascript并传递给silverlight代码,然后最终将其传递回服务器并进入图像存储库。

答案 1 :(得分:0)

是否可以从应用服务器“看到”扫描仪?通过调用与我的Silverlight应用程序在同一站点上托管的WCF服务并让它发送文档,我已经成功进行了打印。您需要管理将用户链接到设备的表。这可能意味着您根本不需要桌面应用程序,但可以将该功能放在Silverlight应用程序中。显然,如果您传递大型图像或拥有大量用户,从性能角度来看并不理想。但是,在服务器上,您可以使用完整的.net功能,这使事情变得非常简单。

因此,桌面应用程序的UI基本上都在Silverlight中,而且内容又回到了服务器上。

如果您找到直接的方法,我会很高兴听到它。