Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NET的Node.js_C#_Multithreading_Node.js_Networking - Fatal编程技术网

C# NET的Node.js

C# NET的Node.js,c#,multithreading,node.js,networking,C#,Multithreading,Node.js,Networking,我知道像Edge.js这样的项目允许C#和Node.js连接,但我说的是不同的东西。是否有一个C#库,允许您在C#中构建可伸缩、非阻塞I/O、单线程、异步事件服务器,类似于您可以使用Node.js构建的服务器?该库还具有Node.js的唯一事件模型、用户代码的单线程、文件/网络事件的多线程和本机代码(如果我错了,请纠正我)。当然,我知道ASP和WCF,以及类似的OSS项目,但我正在寻找一种性能可以与Node.js媲美的东西,Node.js是C#的一种Node.js端口。你知道有这样的图书馆吗?建

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

单线程还是多线程?

如果您想要一个单线程的托管进程 所有使用APC和完成端口的工作,您必须 手工编码。建造它将是危险和棘手的

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

相关但不同的问题:

  • 可能有用的项目:

  • 最接近我想要的,语法类似于Node.js
  • ,一个用于C的单线程服务器#
  • 在单个线程上处理事件的
  • Libuv在C#(,)中的包装
  • 仅适用于HTTP请求(无二进制),语法类似于Node.js

  • 我已经将此贴在您的第一个相关问题上,这也可能回答您的问题:

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

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

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


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

    “是否有一个C#库,允许您在C#中构建可伸缩、非阻塞I/O、单线程、异步事件服务器,类似于您可以使用Node.js构建的服务器?”当您可以使用async/await编写更可读的异步代码时,为什么要以基于事件的方式编写它?)听起来你想让锤子像刀子一样工作,只要咬紧牙关,在node.FYI中编写你的应用程序-async/await不会阻塞。@Geotarget会这样做吗?Node实际上只是javascript,有大量C#到JS的转换器。此外,您还可以利用edge缩小差距(我目前正在我的应用程序中这样做)。“node.js嵌套事件处理程序系统看起来更易于管理”-我同意,确实如此,这就是为什么如果您真的想利用您描述的所有功能,那么您真的想将代码移植到节点。不幸的是,我不知道CLI的复杂性,无法为您提供详细的答案,有一些库可以让你在.NET中有效地托管V8引擎(如果你正在寻找的话),比如“从来没有使用过它”=“从来没有调试过它,也从来没有在生产代码中使用过?”我对Node的工作方式不是专家,但我正在寻找一个可以让你在回调中编写回调的系统,就像你在Node中所做的那样。您的系统允许吗?从未在生产中使用过。今天晚些时候我将提交最新的代码,其中包括将二进制协议重新分解为HTTP协议,因为我发现这样做重新引起了兴趣、挑战和乐趣。目前,该框架可以使用php cgi托管WordPress站点,但与Apache的进程内mod_php相比,我一直在研究许多php cgi进程(100、1000或10000个并发请求)的高并发性能。另外,谢谢你的询问。如果你想要更完整的东西或者为黄金时段做好准备,你可以查看Nito Async或Signal。关于回调中的回调-例如doAsync1{doAsync2{doAsync3}-APM和EAP已经被.NET 4.0中的TAP所取代,它本机支持连续性-例如Task.ContinueWith(回调)-类似于Node.js管理的方式有承诺的“回调地狱”。一旦HTTP协议能够正确处理各种站点,我将切换到TAP。虽然我的答案肯定不是Node.js到C#port,但它确实实现了您提到的模式。a已将此项目放回我的雷达。我需要二进制,您的重构是否意味着不再支持二进制协议?