簡體   English   中英

.NET的Node.js

[英]Node.js for .NET

我知道像Edge.js這樣允許C#和Node.js連接的項目,但我說的是不同的東西。 是否有一個C#庫,它允許您在C#中構建可伸縮的,非阻塞的I / O,單線程,異步事件服務器,類似於您可以使用Node.js構建的服務器? 一個庫,它還具有Node.js的唯一事件模型,用於用戶代碼的單線程,用於文件/網絡事件和本機代碼的多線程(如果我錯了,請糾正我)。 當然我知道ASP和WCF,以及像這樣的 OSS項目,但我正在尋找能夠提供與Node.js相當的性能的東西,Node.js是一種到C#的Node.js端口。 你知道任何這樣的圖書館,它需要什么來建立它?

單螺紋還是多螺紋?

如果您希望使用單線程托管進程使用APC和完成端口完成所有工作,則必須手動編寫代碼。 建立它將是冒險和棘手的。 - 薩姆索爾頓

顯而易見,單線程使代碼更容易編寫,因為您不需要使用鎖和互斥鎖。 只有一個線程讀取/修改程序狀態數據,這使得事情變得簡單。 所有計算都在單獨的線程上進行,並在結果准備好后返回主線程。 操作完成后,所有文件/網絡事件都會跳出並返回主線程。

相關但不同的問題:

  1. 非阻塞單線程Web服務器
  2. 最小的Web服務器
  3. 單線程異步事件

可能有用的項目:

  1. ALE最接近我想要的,語法類似於Node.js
  2. Manos de mono ,C#的單線程服務器
  3. C#中的消息循環 ,用於處理單個線程上的事件
  4. 在C#包裝器Libuv( 12
  5. Anna僅用於HTTP請求(無二進制),語法類似於Node.js

我已將此問題發布到您的第一個相關問題,這也可以回答您的問題:

這是一個用VB.NET和C#編寫的開源示例:

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

它使用基於事件的異步模式(EAP),IAsyncResult模式和線程池(IOCP)。 它會將消息(消息可以是任何本機對象,如類實例)序列化/編組為二進制數據包,通過TCP傳輸數據包,然后在接收端反序列化/解組數據包,這樣您就可以使用本機對象來處理。 這部分有點像Protobuf或RPC。

它最初是作為實時多人游戲的“網絡代碼”開發的,但它可以用於多種用途。 不幸的是我從來沒有使用它。 也許其他人會。

源代碼有很多注釋,因此應該很容易理解。 請享用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM