silverlight - Silverlight和推送通知

标签 silverlight notifications push

我正在为远程仪器创建一个Silverlight 2用户界面。在不同地点有两个并发用户正在与仪器交互(仪器的运算符(operator)和远程科学家),并且有任意数量的观察者用户不与仪器交互,而只是在观看。但是,每当两个 Activity 用户之一进行更改时,这些更改必须立即反射(reflect)在所有用户的UI中,例如平移或缩放图像或注释或选择图像的一部分,将项目添加到列表框中显示的集合中。在客户端中,我使用可观察的集合,这些集合可以轻松反射(reflect)该用户所做的更改,但是很难看到其他用户所做的更改。我可以轮询每个客户端的更改,但是像推送通知这样的方法会更好。我已经在Google上广泛搜索了示例,但没有找到我需要的任何东西。 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的屏幕截图。

关于silverlight - Silverlight和推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/640488/

相关文章:

silverlight - 在 CRM 2011 中通过 SOAP 服务获取 OptionSetValue 的标签

silverlight - 有没有办法以编程方式弹出 "Microsoft Silverlight Configuration"对话框?

silverlight - 如何从 ViewModel 中关闭 Silverlight 子项?

c# - 无法将简单的组合框与 mvvm 和 wcf ria 服务绑定(bind)

java - android.app.RemoteServiceException : Bad notification posted on huawei Y6

android - 通知文本太长,未显示全文

ios - 我可以收到其他应用程序通知的提醒吗

arrays - 在 perl 中,为什么 push 导致由 qr 创建的正则表达式在未放入双引号时被更改?

git - "git push --mirror"删除远程标签。有什么方法可以恢复它们吗?

Mercurial,不同的默认上下游路径