1

我最近阅读了很多关于 WCF 的内容,每当出现实现订阅者广播机制的主题时(如在即时消息系统中),解决方案总是使用静态字典来保存订阅者频道。

可以在以下问题的答案中找到一个示例,但这是一种常见做法。 使订阅者列表在对服务的调用中可用

对于“传统”网络编程来说,这似乎是一个非常好的解决方案,但是在云中是如何处理的呢?具体来说,我们如何绕过网格中的每台计算机都有不同的“静态”变量这一事实?

我对不同的云平台知之甚少。Azure、Amazon Web Services 和 VMWare 是否有不同的解决方案?

4

3 回答 3

1

对于广播/推送类型的通知,请查看 SignalR (http://signalr.net/)。Microsoft 正在将其作为 ASP.NET 平台的一部分: http: //channel9.msdn.com/Events/Build/2012/3-034

它有一些非常好的功能,比如优雅,如果服务器/客户端不支持 WebSockets 等高级功能,则可以使用多种机制。虽然它是可行的,但您必须在 WCF 中编写所有这些代码。

云供应商平台之间存在很大差异。我可以向您发布多个链接,但您提到的云供应商正在迅速改变他们提供的内容。您对特定云供应商的承诺是长期的……不要认为供应商 A 拥有供应商 B 所没有的东西。顺便说一句,有一些差异……例如,亚马逊有专门的虚拟机:高 I/O、高内存、高 CPU。同时,例如 Azure 有一个设计得更好的 VM 层。

我是这样想的(mu 意见)......微软是一家拥有:.NET、ASP.NET、服务器平台:SQL Server、Windows Server、SharePoint、Office Services 等的公司。他们非常适合像这样的人没有像这样丰富的产品组合的亚马逊或 VMWare。此外,微软可以将这些服务器定价到云中,亚马逊/RackSpace/VMWare 必须为此向微软支付溢价。您似乎在谈论 WCF/.NET,这将有利于 Microsoft Azure 平台。

在 Azure 上,您可以运行 Linux VM;python、Java 等中的代码,但它有利于 Microsoft 堆栈。相反,对于 AWS,您可以运行 .NET/Microsoft 等,但它有利于 Linux/开源堆栈。从长远来看……因为在 2 年内,两家主要的云供应商都将在这些领域做出承诺。例如,RackSpace 正在全力投入他们的 OpenStack 平台……他们别无选择。

于 2012-11-08T19:24:45.150 回答
0

Windows Azure 服务总线有几个选项可用于广播 WCF 事件。

Realy 服务有一个 netEventRelayBinding,它允许订阅服务实例在客户端调用端点时接收单向服务调用。如果客户端断开连接,他们将不会收到任何消息。

http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_eventingonservicebusvs2010_topic2.aspx

Brokered Messaging 具有提示和订阅,其中一条消息可以传播给多达 2,000 个订阅者。消息被持久存储,因此如果客户端断开连接,他们将在重新连接时收到所有消息。

http://www.cloudcasts.net/devguide/Default.aspx?id=12044

问候,

艾伦

于 2012-11-08T19:41:18.433 回答
0

可能值得您在AppHarbor上研究类似RabbitMQ的东西。这是我一直想看但找不到时间的东西。我只提到它是因为没有其他人有;)

于 2012-11-08T20:41:36.303 回答