我目前有一个用.Net编写的TCP服务器应用程序,它接收消息并向客户端提交消息。我正在考虑构建一个web应用程序,所以需要通信层。
我已经构建了一个Node.JS + Socket.IO应用程序,它连接到我的TCP服务器,然后将通信推送到web应用程序,一切工作正常。
我刚刚读到了关于SignalR作为将其保留在.Net堆栈中的替代方案的文章。
然而,我也发现我可以编写一个C# Websocket服务器,一个基本的演示here
我假设这个基本的服务器就是SignalR,但显然它有更多的功能?
我想决定的是,我是只将当前的TCP应用程序附加到Websocket服务器上,还是使用单独的SignalR或Node.js路由?感兴趣的是,SignalR应用程序是如何运行的,它是作为Windows服务、控制台应用程序还是IIS服务?
发布于 2012-03-06 04:39:14
SignalR类似于Socket.IO,因为它支持传输协商/回退。它是一个框架,而不是一个服务器,所以你需要把它放在某种服务器上。我们有ASP.NET,OWIN (例如Kayak)和self-host的主机,所以你可以很容易地在你自己的进程中运行它,例如Windows服务。
SignalR支持浏览器(JS)、.NET、Windows phone7和Silverlight客户端。也有为iOS,Mono Touch等贡献的客户端。
SignalR将为您提供比原始套接字更高级别的应用程序接口,这是它的最大优势,允许您以广播(或目标)方式从服务器端到客户端执行诸如"RPC“之类的操作。
发布于 2012-03-06 01:55:19
开发可伸缩/线程安全的TCP服务器可能不是一件容易的事情。另一方面,在互联网上有非常好的资源,以便开始你自己的。例如,如果你正在寻找一些很好的开源WebSocket项目,我的建议是;
Alchemy Project:开源C# WebSocket库
Fleck Project:开源C# WebSocket库
SignalR可能很好,但它需要Windows Server8/IIS8才能提供WebSocket功能。
在商业产品方面,特别是考虑到websocket功能并不是在所有浏览器上都可用,我推荐PokeIn WebSocket和反向Ajax库。从2.0版开始,它有内置的WebSocket服务器。详细信息可从here获得
https://stackoverflow.com/questions/9537641
复制相似问题