2011-01-30 58 views
2

我们遇到了一些问题,例如我们有一些数据,比如说股票价格,我们希望提供一种服务,当价格变化很大时通知客户。如何制作可互操作的“推”式Web服务?

我们需要此服务与跨平台边界的尽可能多的客户端进行互操作。因此,基于标准的方法似乎是一个好方法。

要求客户投票调查我们的服务看起来很疯狂,并且是一种快速压倒我们服务器的秘诀。

是否有基于标准的方式来做pub-sub或某些基于事件的方式来通知客户有趣的事件?

有WS-Eventing,感觉就像它没有广泛的框架支持。

+0

什么平台? 。净? Java的? – 2011-01-30 02:08:52

+0

我们是.NET,但我们希望通过各种平台向客户开放它。 – saille 2011-01-30 08:52:00

+0

哪种客户端。基于Web的程序还是可以在客户PC上安装的程序?两者? – keatch 2011-01-30 14:33:35

回答

2

为了其他人的利益,我想提出使用XMPP来实现这一点的想法。 XMPP(以前称为Jabber)是一种IETF标准,其工作原理类似于电子邮件,使用可扩展的基于XML的协议实现基于推送的即时消息传递。它还提供用于通道加密的TLS和用于认证的SASL。 XMPP也是Google Talk的基础。使用开源软件如Jabber可以运行XMPP服务器,并且可能会使用Google的Talk基础设施来转发消息。

XMPP libraries来简化客户端和服务器的开发。

1

我们可以扭转服务主机和客户端的典型角色。我们将向客户提供WSDL合同,他们需要托管符合该合同的基本概要文件Web服务。将会有一种简单的Web服务方法,我们以客户端的角色,但是服务的提供者来调用,以通知客户一个有趣的事件。

2

退房彗星,阿贾克斯推,等:http://en.wikipedia.org/wiki/Comet_(programming))

这是特定于JavaScript,但可以与任何类型的异步客户端的工作。客户端“轮询”服务器。服务器然后保持连接直到有数据。该过程然后重演。但是,您必须考虑客户端超时。

没有客户端实现自己的服务,这是关于最接近你推动机制。我不确定保持所有这些开放连接或客户端进行真正的轮询是否更昂贵。总的来说,我认为每轮投票之间的时间越长,传统投票的效果就越好。尽管如果你的服务器可以处理额外的连接,你将会有更少的通知延迟。