Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何创建一个可互操作的基于“推送”的web服务?_.net_Wcf_Web Services_Interop - Fatal编程技术网

.net 如何创建一个可互操作的基于“推送”的web服务?

.net 如何创建一个可互操作的基于“推送”的web服务?,.net,wcf,web-services,interop,.net,Wcf,Web Services,Interop,我们遇到了一个问题,我们有一些数据,比如说股票价格,我们想提供一个服务,当价格发生重大变化时通知客户 我们需要此服务能够跨平台边界与尽可能多的客户端进行互操作。因此,基于标准似乎是一个不错的选择 要求客户对我们的服务进行民意调查似乎很疯狂,而且很快就会压倒我们的服务器 是否有一种基于标准的方式来进行pub-sub或一些基于事件的方式来通知客户感兴趣的事件 有WS-Eventing,感觉它没有广泛的框架支持。我们可以逆转服务主机和客户端的典型角色。我们将为客户提供一个WSDL契约,他们需要托管一个

我们遇到了一个问题,我们有一些数据,比如说股票价格,我们想提供一个服务,当价格发生重大变化时通知客户

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

要求客户对我们的服务进行民意调查似乎很疯狂,而且很快就会压倒我们的服务器

是否有一种基于标准的方式来进行pub-sub或一些基于事件的方式来通知客户感兴趣的事件


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

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

查看Comet、Ajax推送等:

这是特定于JavaScript的,但可以很好地与任何类型的异步客户端配合使用。客户端轮询服务器。然后服务器保持连接,直到有数据为止。然后这个过程会重复。但是,您必须考虑客户端超时


如果不让客户机实现自己的服务,这将是最接近推送机制的。我不确定保持所有这些打开的连接或者让客户机进行真正的轮询是否成本更高。总的来说,我会说每次投票之间的时间越长,传统投票的表现就越好。不过,如果您的服务器能够处理额外的连接,您的通知延迟就会小得多。

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


简化客户机和服务器开发有很多方法。

我们是.NET,但我们希望跨一系列平台向客户机开放。哪种类型的客户机。是基于Web的还是可以安装在客户pc上的程序?两者都有?我最近自己找了这个,结果使用了投票。我找不到任何稳定的、跨平台的、非专有的方法来做到这一点。让我惊讶的是,这个问题在2011年还没有得到解决。@keatch我们想公开一个可互操作的服务,即我们希望客户使用各种各样的技术,我们对他们可能使用什么样的客户机应用程序不作任何假设。@saille:既然你有各种各样的客户机,也许您的每个方法都应该采用maxWait参数。服务器总是在maxWait过期之前返回,以防止客户端超时。然后,客户可以决定什么是最佳的。因为网络延迟之类的原因,我会加一些。谢谢,回答得好。在B2B环境中,当服务的消费者可能是服务器时,您认为这是一个好的解决方案吗?我们是否对使用该服务的开发人员要求过高?“我得想一想最低公分母。@saille:老实说,我从来没有在这个场景中使用过它,但我无法想象为什么它会有问题。”。从客户机的角度来看,它的工作原理与任何其他请求一样,但它有一些额外的延迟。我理解您的担忧,但我不认为传递额外的整数对于开发人员来说太复杂。如果是的话,你可以提供一个简单的方法版本,它不接受整数并立即返回,但是你又回到了轮询。这是一个很好的方法,也是我以前使用过的方法。其中一个问题是,您的客户机需要一个可以直接访问的IP地址NAT工作,但需要更多的配置。根据需求,另一个可能的问题是,它通常不包括浏览器、移动和嵌入式应用程序。浏览器无法设置侦听端口,嵌入式/移动设备通常没有直接可寻址的IP,并且很少/没有设置NAT的能力。