我正在为远程仪器创建一个Silverlight 2用户界面。在与不同站点交互的两个并发用户(仪器和遥控科学家的运算符)以及任何数量的观察者用户不与之进行交互,只需观看。但是,只要两个活动用户中的一个更改某些内容,这些更改必须立即反映在所有用户的UI中,例如。平移或缩放图像或注释或选择图像的一部分,将项目添加到列表框中显示的集合。在客户端中,我使用可观察的集合,轻松地反映该用户所做的更改,但是更难看到另一个用户所做的更改。我可以轮询每个客户端的更改,但推送通知会更好。我有广泛的谷歌谷歌的例子,但没有找到任何相当我需要的东西。 Silverlight与WCF服务进行交互存在各种安全问题,这意味着许多潜在的示例不起作用。我基本上用完了这个项目,需要帮助。有没有人有任何建议,一个合适的简单的例子说明如何做到这一点?我是一个有经验的开发人员,但不得不教自己Silverlight和WCF服务,在我的区域没有人知道这些。即使我已经做了大量的ASP.NET工作,我不是一个web / Javascript的大师。谢谢。
解决方法
Silverlight 2使用新的WCF PollingDuplexHttpBinding支持支持推送通知。 Silverlight SDK安装了两个程序集(
one for Silverlight app one for WCF server)。
我有一个few blog posts and a full sample application,演示如何从控制台应用程序服务器“推送”库存更新,该服务器将WCF服务自动托管到连接的客户端。它还显示了每个客户端如何可以向库存添加笔记,并将这些笔记同步(从服务器推送)到所有其他连接的客户端。
最新版本的示例(第4部分)显示了如何使用两个服务器端点在Silverlight和WPF客户端之间同步推送更新,如下所示:
using System; using System.ServiceModel; using System.ServiceModel.Description; namespace StockServer { public class StockServiceHost : ServiceHost { public StockServiceHost(object singletonInstance,params Uri[] baseAddresses) : base(singletonInstance,baseAddresses) { } public StockServiceHost(Type serviceType,params Uri[] baseAddresses) : base(serviceType,baseAddresses) { } protected override void InitializeRuntime() { this.AddServiceEndpoint( typeof(IPolicyProvider),new WebHttpBinding(),new Uri("http://localhost:10201/")).Behaviors.Add(new WebHttpBehavior()); this.AddServiceEndpoint( typeof(IStockService),new PollingDuplexHttpBinding(),new Uri("http://localhost:10201/SilverlightStockService")); this.AddServiceEndpoint( typeof(IStockService),new WSDualHttpBinding(WSDualHttpSecurityMode.None),new Uri("http://localhost:10201/WpfStockService")); base.InitializeRuntime(); } } }
WPF客户端连接到WSDualHttpBinding端点,Silverlight客户端连接到同一WCF服务的PollingDuplexHttpBinding端点。该应用程序还显示如何处理Silverlight客户端访问策略要求。
客户端(Silverlight或WPF)可以在其UI中添加对库存的注释,这些注释传播回服务器以推送到所有其他客户端。这表明在任一方向的沟通,并希望执行您的应用程序所需的所有必要的通信。
您可以看到demo application running here的屏幕截图。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。