.NET的Node.js

我知道关于允许C#和Node.js连接的Edge.js这样的项目,但是我正在谈论一些不同的东西。 是否有一个C#库,允许您在C#中构build可伸缩的非阻塞I / O单线程asynchronous事件服务器,类似于可以使用Node.js构build的服务器? 一个库也有Node.js的独特事件模型,单线程用户代码,multithreading文件/networking事件和本地代码(纠正我,如果我错了)。 当然,我知道ASP和WCF,以及这样的OSS项目,但是我正在寻找一些可以与Node.js(一种C#的Node.js端口)相媲美的性能。 你知道任何这样的图书馆,它将需要build设吗?

单线程还是multithreading?

如果您想要一个使用APC和完成端口完成所有工作的单线程托pipe进程,您将不得不手动编写代码。 构build它将是有风险和棘手的。 萨姆·萨尔顿

显然,单线程使代码更容易编写,因为你不需要使用锁和互斥锁。 只有一个线程读取/修改程序状态数据,保持简单。 所有计算都在单独的线程上进行,并在结果准备就绪时返回主线程。 所有文件/networking事件分支出来并在操作完成后返回到主线程。

相关但不同的问题:

  1. 非阻塞的单线程Web服务器
  2. 最小的Web服务器
  3. 单线程asynchronous事件

可能有用的项目:

  1. ALE与我想要的最接近,类似于Node.js的语法
  2. Manos de mono ,一个用于C#的单线程服务器
  3. C#中的消息循环 ,处理单个线程上的事件
  4. C#中Libuv的包装( 1,2 )
  5. Anna仅用于HTTP请求(无二进制),语法类似于Node.js

我已经发布了这个到你的第一个相关的问题,这也可以回答你的问题:

这是一个用VB.NET和C#编写的开源示例:

https://github.com/perrybutler/dotnetsockets/

它使用基于事件的asynchronous模式(EAP),IAsyncResult模式和线程池(IOCP)。 它会将消息序列化/封送(消息可以是任何本地对象,如类实例)为二进制数据包,通过TCP传输数据包,然后在接收端对数据包进行反序列化/解组,以便让本地对象与。 这部分有点像Protobuf或RPC。

它最初是作为实时多人游戏的“networking编码”开发的,但它可以用于很多目的。 不幸的是我从来没有使用它。 也许别人会。

源代码有很多评论,所以应该很容易遵循。 请享用!