V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qwe520liao
V2EX  ›  C#

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

  •  
  •   qwe520liao · 141 天前 · 1378 次点击
    这是一个创建于 141 天前的主题,其中的信息可能已经有所发展或是发生改变。
    因为最近需要用 C#来改善一个服务端项目(游戏项目),需要用到长连接,所以就想看看有没有类似 Java 上 Netty 或者 Mina 这种网络框架。

    看了一下有一个微软官方的 DotNetty,但是貌似已经很久没有维护更新了,然后有一个 SpanNetty 分支在继续维护( https://github.com/cuteant/SpanNetty )。
    9 条回复    2021-08-19 17:04:35 +08:00
    yicong135
        1
    yicong135  
       141 天前   ❤️ 1
    xingyuc
        2
    xingyuc  
       141 天前
    不知道这个算不算: https://dotnetchina.gitee.io/furion/
    mmdsun
        3
    mmdsun  
       141 天前 via Android
    qwe520liao
        4
    qwe520liao  
    OP
       141 天前
    @xingyuc 这个有点像是一个大而全的项目脚手架了。
    @mmdsun 这个貌似适用于 Web 项目,需要进一步了解。

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

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

    顺便说一句,C#语法真香!
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4122 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 02:52 · PVG 10:52 · LAX 18:52 · JFK 21:52
    ♥ Do have faith in what you're doing.