C#是否有比较稳定活跃的开源网络框架?

2021-07-19 11:13:35 +08:00
 timethinker
因为最近需要用 C#来改善一个服务端项目(游戏项目),需要用到长连接,所以就想看看有没有类似 Java 上 Netty 或者 Mina 这种网络框架。

看了一下有一个微软官方的 DotNetty,但是貌似已经很久没有维护更新了,然后有一个 SpanNetty 分支在继续维护( https://github.com/cuteant/SpanNetty )。
3589 次点击
所在节点    C#
9 条回复
yicong135
2021-07-19 11:22:52 +08:00
xingyuc
2021-07-19 11:39:08 +08:00
不知道这个算不算: https://dotnetchina.gitee.io/furion/
mmdsun
2021-07-19 12:38:49 +08:00
timethinker
2021-07-19 13:41:15 +08:00
@xingyuc 这个有点像是一个大而全的项目脚手架了。
@mmdsun 这个貌似适用于 Web 项目,需要进一步了解。

感谢几位老哥,我看了一下 SuperSocket 还算是比较合适的,本质上我需要的是一个异步的,事件驱动的网络编程框架。

接下来需要进一步了解它们的线程模型,因为改造现在的这个项目就是因为并发导致的线程安全问题,如果像 Netty 那样跟其中某一个 EventLoop 绑定,移除掉阻塞操作基本上就可以达到一个比较高的吞吐量,而且无须考虑线程安全问题。实在不行的话我可能需要直接用原生 API 再结合自己的线程池来进行控制了。
Rwing
2021-07-19 13:49:17 +08:00
SpanNetty 由于使用了 Span<>,性能和内存还是很惊人的,就是不知道稳定不
timethinker
2021-07-19 17:54:09 +08:00
@Rwing 目前准备使用 SpanNetty 测试一下,然后在对比一下之前老哥们提供的那些。
kiracyan
2021-07-22 14:30:26 +08:00
SpanNetty 好不好用 ?
INCerry
2021-07-23 14:22:49 +08:00
现在最推荐的方式是直接上 kestrel,在 C#这种有协程的语言中,其实可以抛弃 netty 那套事件驱动的机制了,使用 system.io.pipeline 也能很快整一个出来
https://github.com/dotnet/aspnetcore/tree/main/src/Servers/Kestrel
timethinker
2021-08-19 17:04:35 +08:00
@INCerry 感谢老哥,之前没怎么接触过 C#,看来我还是对 C#语言的生态不太了解,的确如果利用 System.Threading.Channels 和 Task 可以很方便的做一个类似的东西,IO 也可以用你说的管道来实现。

顺便说一句,C#语法真香!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/790322

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX