我最近一直在阅读很多关于WCF的内容,每当实现订阅者广播机制的主题出现时(如在即时消息系统中),解决方案总是使用静态字典来保存您的订阅者频道。
可以在以下问题的答案中找到一个例子,但这是一种常见的做法。 Making a list of subscribers available across calls to a service
这似乎是“传统”网络编程的一个非常好的解决方案,但是如何在云中处理?具体来说,我们如何解决网格中的每台计算机都有不同的“静态”变量的事实?
我对不同的云平台知之甚少。 Azure,Amazon Web Services和VMWare是否有不同的解决方案?
答案 0 :(得分:1)
有关广播/推送类型的通知,请查看SignalR(http://signalr.net/)。微软正在成为ASP.NET平台的一部分: http://channel9.msdn.com/Events/Build/2012/3-034
它有一些非常好的功能,如优雅,如果服务器/客户端不支持WebSockets等高级内容,则可以使用多种机制。虽然它是可行的,但您必须在WCF中对所有这些进行编码。
云供应商平台之间存在很大差异。我可以发布多个链接但你提到的云供应商正在迅速改变非常。您对特定云供应商的承诺是长期的......不要考虑它供应商A有供应商B没有的东西。 BTW之间存在差异......例如,亚马逊有专门的虚拟机:高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 /开源堆栈。从长远来看......因为两年内两家主要的云供应商都将在这些领域做出承诺。例如,RackSpace将全面使用他们的OpenStack平台......他们别无选择。
答案 1 :(得分:0)
Windows Azure Service Bus有几个选项可用于广播WCF事件。
Realy服务有一个netEventRelayBinding,它允许订阅服务实例在客户端调用端点时提供单向服务调用。如果客户端被取消,他们将不会收到任何消息。
http://msdn.microsoft.com/en-us/wazplatformtrainingcourse_eventingonservicebusvs2010_topic2.aspx
Brokered Messaging具有tipics和订阅,其中消息可以最多容纳2,000个订阅者。消息会被持久存储,因此如果客户端处于不连续状态,他们将在重新连接时收到所有消息。
http://www.cloudcasts.net/devguide/Default.aspx?id=12044
此致
艾伦
答案 2 :(得分:0)