我正在寻找一个解决方案列表,其中包含实现从 Web 服务器到客户端 .NET 应用程序的流数据的详细信息/起点。 特别是,SQS 和 SNS 等云服务与 SignalR 和轮询/或自定义解决方案有何不同?
我已经确定了技术。我正在寻找一种描述,分享这些技术的具体关联方式以及它们适合的位置:
- 信号R
- 投票
- 彗星
- 网络套接字
- 云服务,例如 http://aws.amazon.com/sqs/和 http://aws.amazon.com/sns/以及 http://www.windowsazure.com/en-us/
- 消息连接
这种分类将有助于:
- 基本机制:推拉(轮询):
- push:通常使用开放套接字实现:原始TCP,WebSocket(用于HTML5客户端)。
- 轮询:客户端每隔一段时间查询一次服务器 长轮询
- :与轮询类似,但服务器保持请求打开状态并响应新事件
- 通用概念/流行语
- 彗星
- 语言/框架/技术
- .Net - 信号红外
- nodejs - socketIO(使用多种技术,但主要用于Web客户端)
- Python - 扭曲,龙卷风(通用框架)
- 排队技术:RabbitMQ、AMQP、0MQ - 全部具有多种语言绑定
- XMPP(标准/协议)- 具有多种语言绑定的多个服务器实现
自托管服务 - 与托管服务
- 您托管使用上述框架之一实现的"推送"服务器
- 其他人托管服务并提供服务器 API 和客户端库:
- 普布努布
- 推
- MS Azure : 服务总线 , 通知总线
- AWS SQS - 托管队列(客户端轮询/长轮询)、SNS - 多种格式大多与您的使用案例无关(可能除了 webhook)
其他要检查/比较的内容:
- 延迟 - 技术之间差异很大
- 消息吞吐量
- 可伸缩性模型
让我试着在这里回答我自己的问题。请尽可能扩展/更正和澄清。
Comet -> 通过 HTTP 将数据推送到客户端的模型。彗星是一个包含多种技术的总称。
轮询 -> 一种通过重复请求通过 HTTP 检索数据的方法
Web Sockets -> HTMl5 取代 COMET 的新技术部分。支持有限?
云服务 -> 用于消息传递和通知的"托管"解决方案。这些服务可能会使用彗星、轮询或 Web 套接字,具体取决于可用的内容。
MsgConnect 和 SignalR -> 这些是用于传输数据的自托管解决方案/技术HTTP,可能使用Comet技术和/或Web Web套接字。SignalR 主要是一种 .NET 技术,旨在通过 Web 实现流式处理。
SignalR 可以使用 Comet 技术或轮询和/或可能部署在云上。它们只是传输方法,不包括云服务等服务器服务
云服务与 SignalR 等技术的不同之处在于,它们包括用于传输数据的 API、用于托管数据的数据库以及客户端也可以连接的可用服务地址,而 SignalR 将部署在自己管理/拥有的 Web 服务器/服务器上。
有关其他信息,请参阅以下内容:
什么是 ASP.NET 信号RASP.NET SignalR 是面向 ASP.NET 开发人员的新库,使向应用程序添加实时 Web 功能变得非常简单。什么是"实时网络"功能?它能够让服务器端代码实时推送内容到连接的客户端。
http://www.asp.net/signalr
http://www.asp.net/signalr/overview/getting-started/tutorial-signalr-self-host
Comet 是一种 Web 应用程序模型,其中长期持有的 HTTP 请求允许 Web 服务器将数据推送到浏览器,而无需浏览器明确请求它。
http://en.wikipedia.org/wiki/Comet_(编程)
WebSocket 设计为在 Web 浏览器和 Web 服务器中实现,但它可以被任何客户端或服务器应用程序使用。WebSocket 协议是一个独立的基于 TCP 的协议。它与HTTP的唯一关系是它的握手被HTTP服务器解释为升级请求。[1]
http://en.wikipedia.org/wiki/Web_sockets
Azure"平台即服务"AWS"基础设施即服务"http://gigaom.com/2011/09/04/the-great-debate-windows-azure-vs-amazon-web-services/
流数据的轮询、长轮询与 ajax 的良好描述http://msdn.microsoft.com/en-us/magazine/hh965663.aspx