2010-02-23 27 views
1

我有一个很奇怪的问题。在不同的客户端调用函数SIlverlight

有2 Silverlight客户端 1.管理员 2.用户

现在,我希望有一个场景,其中管理Silverlight可以发起用户Silverlight的一个函数调用。

几乎一个SL的新手如此想知道这是可能的。

我很感激任何帮助。

感谢

回答

1

我想应用程序不在同一浏览器/机器中,并且当您以管理员和用户的形式描述使用模式时,我认为可能有更多的用户比管理员更多。

您可能想看看WCF服务的双工绑定 - 这是一个Web服务绑定,允许将通知从服务器推送到客户端。当所有的客户建立这样一个渠道时,你可以实现客户之间的中心辐射通信。

本博客文章给出了一个很好的收据入门: http://silverlightforbusiness.net/2009/06/23/pushing-data-from-the-server-to-silverlight-3-using-a-duplex-wcf-service/

+0

谢谢。 我应该试试这个! – Jayesh 2010-02-24 09:49:45

0

如果他们都在同一帧/浏览器,你可以调用JavaScript中的第一个使用HtmlPage API,这可能与第二交互。

所以:

Silverlight控件 - > JS注入到HtmlPage - > JS与Silverlight控件交互2(假设这是可能的,请纠正我,如果错了) - > Silverlight控件响应。

如果他们在单独的窗口或运行“浏览器”,我预计它不会工作。

0

如果这两个实例是分开的(即管理员在一台机器上,而用户在另一台机器上),那么没有直接的方法去做。但是,您可以使用发布者/订阅者风格系统进行配置。

假设:您在两者之间有某种共享数据存储,可能是数据库或其他东西。

想法:您有管理客户端向此共享数据存储区写入请求;表中的条目或网络共享中的新文件等。你有用户客户端应用程序定期扫描这个表/共享新的条目,说每隔0.5秒左右。当它看到条目时,它执行所请求的操作,将所有返回值存储回共享存储。当管理员看到返回值时,他知道操作已成功执行。

+0

所以这可能是一个有点儿阿贾克斯啄。 你能告诉我一件事,如果我将Silverlight对象放在Ajax更新面板中,并且此面板每隔'x'秒刷新一次,Silverlight对象是否也会重新加载并执行其Page_Load功能? 感谢您的帮助。 – Jayesh 2010-02-24 09:51:43

0

我可以考虑几个选项。

  • 您可以通过Web服务实现某种远程过程调用,其中一个Silverlight应用程序发布调用该方法的请求,另一个Silverlight定期检查方法调用请求。
  • 如果托管在浏览器中的同一个HTML页面上,您可以使用javascript来允许两个控件进行交互。

但是,不支持两个Silverlight实例之间的直接通信,虽然这些建议可能有助于实现您想要的东西,但它们不提供可在所有方案中使用的完整解决方案。