首先感谢您的帮助。我已经广泛地研究了,还没有找到一个确定的解决方案,所以我在这里…
基本上我正在开发一个asp.net(4.0)应用程序。一个webform代表一个报告,分为两部分:-一个div,它像一个控制面板,包含文本框、组合框、日历等,为查询提供参数,以及一个获取数据的按钮。-包含silverlight控件宿主的div。silverlight应用程序只包含一个自定义数据网格控件。
因此,正如您所想象的,用户为参数提供值并单击按钮以将数据获取到silverlight应用程序的自定义datagrid控件中。我知道你可能会问自己,为什么我不直接在silverlight应用程序中添加控件并使用RIA服务呢?在不讨论太多细节的情况下,我们想要一个更新的数据网格,我们可以把它放到一些现有的asp.net页面中。
我不知道这种事情的最佳实践是什么。我已经广泛地看了,有几个选择我已经考虑过,甚至我的脚湿了试验(没有成功)。
我想我想做的是有一个wcf服务,只发送数据到页面上的silverlight客户端。让我澄清一下,我不需要请求/回复消息交换模式,因为silverlight客户端不会发出任何请求。在我完成这一任务的"探索"中,我找到了关于双工消息传递的示例/教程,我认为如果我可以将asp页面设置为服务的客户端,并将silverlight应用程序设置为相同服务的客户端,则可能会很好地工作。用户单击按钮,asp页面的服务引用调用该服务来获取数据,然后将数据发送给silverlight客户端。我担心的一个问题是,我找到的所有教程都将消息发送给所有客户端,那么如果两个人同时访问该站点怎么办?它会更新他们的sl应用程序吗?我该如何锁定正确的客户?
所以我的问题是,谁能提供任何建议,链接,或其他资源的解决方案,这种情况?
首先,我认为你不需要Silverlight。有很多很棒的UI控件,比如Telerik RadGrid,你可以把它们放到你现有的应用程序中,然后在一两个小时内启动并运行。
话虽如此,如果你真的想让这个工作,你需要的是在浏览器和Silverlight中都能工作的pub/sub。看看PubNub吧。你每天可以免费收到5000条消息,并且几乎可以在任何客户端(手机、Silverlight、浏览器等)上使用一个简单的API。
基本上,您的Silverlight客户端将订阅一个"通道",以便在过滤器参数更改时得到通知,并且您的表单将通过JavaScript或服务器端向该通道发布消息,告诉订阅者(在您的情况下是1)过滤器值的更改。当Silverlight客户端收到通知时,它会通过WCF请求数据。
有点黑。我建议您放弃Silverlight而使用AJAX网格。希望这对你有帮助!