加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – .NET的Node.js

发布时间:2020-12-15 22:01:59 所属栏目:百科 来源:网络整理
导读:我知道像Edge.js这样允许C#和Node.js连接的项目,但我说的是不同的东西.是否有一个C#库,它允许您在C#中构建可伸缩的,非阻塞的I / O,单线程,异步事件服务器,类似于您可以使用Node.js构建的服务器?一个库,它还具有Node.js的唯一事件模型,用于用户代码的单线程,
我知道像Edge.js这样允许C#和Node.js连接的项目,但我说的是不同的东西.是否有一个C#库,它允许您在C#中构建可伸缩的,非阻塞的I / O,单线程,异步事件服务器,类似于您可以使用Node.js构建的服务器?一个库,它还具有Node.js的唯一事件模型,用于用户代码的单线程,用于文件/网络事件和本机代码的多线程(如果我错了,请纠正我).当然我了解ASP和WCF,以及像 this这样的OSS项目,但我正在寻找能够提供与Node.js相当的性能的东西,Node.js是一种到C#的Node.js端口.你知道任何这样的图书馆,它需要什么来建立它?

单螺纹还是多螺纹?

If you want a single threaded managed process that does
all its work using APC and completion ports,you are going to have to
hand code it. Building it would be risky and tricky. — 07001

显而易见,单线程使代码更容易编写,因为您不需要使用锁和互斥锁.只有一个线程读取/修改程序状态数据,这使得事情变得简单.所有计算都在单独的线程上进行,并在结果准备好后返回主线程.操作完成后,所有文件/网络事件都会跳出并返回主线程.

相关但不同的问题:

> Non-blocking single threaded web server
> Minimal web server
> Single threaded async events

可能有用的项目:

> ALE最接近我想要的,语法类似于Node.js
> Manos de mono,C#的单线程服务器
> A message loop in C#,处理单个线程上的事件
> C#中Libuv的包装(1,2)
> Anna仅用于HTTP请求(无二进制),语法类似于Node.js

解决方法

我已将此问题发布到您的第一个相关问题,这也可以回答您的问题:

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

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

它使用基于事件的异步模式(EAP),IAsyncResult模式和线程池(IOCP).它会将消息(消息可以是任何本机对象,如类实例)序列化/编组为二进制数据包,通过TCP传输数据包,然后在接收端对数据包进行反序列化/解组,这样您就可以使用本机对象来处理.这部分有点像Protobuf或RPC.

它最初是作为实时多人游戏的“网络代码”开发的,但它可以用于多种用途.不幸的是我从来没有使用它.也许其他人会.

源代码有很多注释,因此应该很容易理解.请享用!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读