首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js for .NET

Node.js for .NET
EN

Stack Overflow用户
提问于 2014-02-26 09:19:36
回答 1查看 2.1K关注 0票数 4

我知道像Edge.js这样允许C#和Node.js连接的项目,但我说的是一些不同的东西。是否有一个C#库,允许您在C#中构建可伸缩的、非阻塞的I/O、单线程的异步事件服务器,类似于您可以用Node.js构建的服务器?一个库也具有独特的事件模型Node.js,单线程用于用户代码,多线程用于文件/网络事件和本机代码(如果我错了,请更正我)。当然,我了解ASP和WCF,以及像这样的OSS项目,但是我正在寻找的东西能给您提供类似于Node.js的性能,这是一种Node.js到C#的端口。你知道有这样的图书馆吗?建造它需要什么?

单线程还是多线程?

如果您想要一个使用APC和完成端口完成所有工作的单线程托管进程,则必须将其交给代码。建造它既冒险又棘手。-- 萨姆·萨尔顿

显然,单线程可以使代码更容易编写,因为您不需要使用锁和互斥。只有一个线程读取/修改程序状态数据,这使事情变得简单。所有计算都发生在分离的线程上,并在结果准备就绪时返回到主线程。所有文件/网络事件都会在op完成后分支并返回到主线程。

相关但不同的问题:

  1. 非阻塞单线程web服务器
  2. 最小web服务器
  3. 单线程异步事件

可能有用的项目:

  1. 麦酒最接近我想要的语法,语法类似于Node.js
  2. 马诺斯·德莫诺,C#的单线程服务器
  3. 一个C#中的消息循环,它处理单个线程上的事件
  4. C#中的Libuv包装器(12)
  5. 安娜仅用于HTTP请求(没有二进制),语法类似于Node.js
EN

回答 1

Stack Overflow用户

发布于 2014-08-13 19:11:02

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

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

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

它使用基于事件的异步模式、IAsyncResult模式和线程池.它将将消息(消息可以是任何本机对象(例如类实例))序列化/封送到二进制数据包中,通过TCP传输数据包,然后在接收端反序列化/解除封送数据包,从而使您的本机对象可以使用。这个部分有点像Protobuf或RPC。

它最初是作为一种用于实时多人游戏的“网码”而开发的,但它可以为许多目的服务。不幸的是我一直没来得及使用它。也许其他人会的。

源代码有很多注释,所以应该很容易理解。享受吧!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22036802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档