我知道像Edge.js这样允许C#和Node.js连接的项目,但我说的是一些不同的东西。是否有一个C#库,允许您在C#中构建可伸缩的、非阻塞的I/O、单线程的异步事件服务器,类似于您可以用Node.js构建的服务器?一个库也具有独特的事件模型Node.js,单线程用于用户代码,多线程用于文件/网络事件和本机代码(如果我错了,请更正我)。当然,我了解ASP和WCF,以及像这这样的OSS项目,但是我正在寻找的东西能给您提供类似于Node.js的性能,这是一种Node.js到C#的端口。你知道有这样的图书馆吗?建造它需要什么?
单线程还是多线程?
如果您想要一个使用APC和完成端口完成所有工作的单线程托管进程,则必须将其交给代码。建造它既冒险又棘手。-- 萨姆·萨尔顿
显然,单线程可以使代码更容易编写,因为您不需要使用锁和互斥。只有一个线程读取/修改程序状态数据,这使事情变得简单。所有计算都发生在分离的线程上,并在结果准备就绪时返回到主线程。所有文件/网络事件都会在op完成后分支并返回到主线程。
相关但不同的问题:
可能有用的项目:
发布于 2014-08-13 19:11:02
我已经发到你的第一个相关问题上了,这也可以回答你的问题:
下面是一个用VB.NET和C#编写的开源示例:
https://github.com/perrybutler/dotnetsockets/
它使用基于事件的异步模式、IAsyncResult模式和线程池.它将将消息(消息可以是任何本机对象(例如类实例))序列化/封送到二进制数据包中,通过TCP传输数据包,然后在接收端反序列化/解除封送数据包,从而使您的本机对象可以使用。这个部分有点像Protobuf或RPC。
它最初是作为一种用于实时多人游戏的“网码”而开发的,但它可以为许多目的服务。不幸的是我一直没来得及使用它。也许其他人会的。
源代码有很多注释,所以应该很容易理解。享受吧!
https://stackoverflow.com/questions/22036802
复制相似问题