{"id":15014342,"url":"https://github.com/cuteant/spannetty","last_synced_at":"2025-04-05T13:09:45.153Z","repository":{"id":38724303,"uuid":"115217913","full_name":"cuteant/SpanNetty","owner":"cuteant","description":"Port of Netty(v4.1.51.Final) for .NET","archived":false,"fork":false,"pushed_at":"2024-02-14T23:31:05.000Z","size":8564,"stargazers_count":300,"open_issues_count":30,"forks_count":47,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-04-05T13:09:40.042Z","etag":null,"topics":["dotnetty","http2","netty","nettydotnet","networking","protocols","socket","socket-programming","spannetty"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cuteant.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.MD","funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-23T19:43:25.000Z","updated_at":"2025-03-01T17:59:48.000Z","dependencies_parsed_at":"2024-06-05T13:38:43.340Z","dependency_job_id":null,"html_url":"https://github.com/cuteant/SpanNetty","commit_stats":null,"previous_names":["cuteant/dotnetty-net40-fork","cuteant/dotnetty-span-fork"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuteant%2FSpanNetty","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuteant%2FSpanNetty/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuteant%2FSpanNetty/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cuteant%2FSpanNetty/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cuteant","download_url":"https://codeload.github.com/cuteant/SpanNetty/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247339158,"owners_count":20923014,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dotnetty","http2","netty","nettydotnet","networking","protocols","socket","socket-programming","spannetty"],"created_at":"2024-09-24T19:45:30.008Z","updated_at":"2025-04-05T13:09:45.130Z","avatar_url":"https://github.com/cuteant.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpanNetty\n\nThis is a fork of [DotNetty](https://github.com/azure/dotnetty).\n\n## Build Status\n\n| Stage                                         | Status                                                                                                                                                                                                                                                            \t|\n|-----------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|\n| Build                                         | [![Build Status](https://dev.azure.com/SpanNetty/SpanNetty/_apis/build/status/SpanNetty/pr-netfx-validation?branchName=main\u0026jobName=Windows%20Build)](https://dev.azure.com/SpanNetty/SpanNetty/_build/latest?definitionId=6\u0026branchName=main) |\n| .NET Framework 451 Unit Tests                 | [![Build Status](https://dev.azure.com/SpanNetty/SpanNetty/_apis/build/status/SpanNetty/pr-netfx-validation?branchName=main\u0026jobName=.NET%20Framework%20451%20Unit%20Tests%20(Windows))](https://dev.azure.com/SpanNetty/SpanNetty/_build/latest?definitionId=6\u0026branchName=main) |\n| .NET Framework 471 Unit Tests                 | [![Build Status](https://dev.azure.com/SpanNetty/SpanNetty/_apis/build/status/SpanNetty/pr-netfx-validation?branchName=main\u0026jobName=.NET%20Framework%20Unit%20Tests%20(Windows))](https://dev.azure.com/SpanNetty/SpanNetty/_build/latest?definitionId=6\u0026branchName=main) |\n| .NET Core (Windows) Unit Tests                | [![Build Status](https://dev.azure.com/SpanNetty/SpanNetty/_apis/build/status/SpanNetty/pr-netcore-validation?branchName=main\u0026jobName=.NET%20Core%20Unit%20Tests%20(Windows))](https://dev.azure.com/SpanNetty/SpanNetty/_build/latest?definitionId=7\u0026branchName=main) |\n| .NET Core (Ubuntu 16.04) Unit Tests           | [![Build Status](https://dev.azure.com/SpanNetty/SpanNetty/_apis/build/status/SpanNetty/pr-netcore-validation?branchName=main\u0026jobName=.NET%20Core%20Unit%20Tests%20(Ubuntu-16))](https://dev.azure.com/SpanNetty/SpanNetty/_build/latest?definitionId=7\u0026branchName=main) |\n| .NET Core (Ubuntu 18.04) Unit Tests           | [![Build Status](https://dev.azure.com/SpanNetty/SpanNetty/_apis/build/status/SpanNetty/pr-netcore-validation?branchName=main\u0026jobName=.NET%20Core%20Unit%20Tests%20(Ubuntu-18))](https://dev.azure.com/SpanNetty/SpanNetty/_build/latest?definitionId=7\u0026branchName=main) |\n| .NET Core (macOS X Mojave 10.14) Unit Tests   | [![Build Status](https://dev.azure.com/SpanNetty/SpanNetty/_apis/build/status/SpanNetty/pr-netcore-validation?branchName=main\u0026jobName=.NET%20Core%20Unit%20Tests%20(MacOS-10.14))](https://dev.azure.com/SpanNetty/SpanNetty/_build/latest?definitionId=7\u0026branchName=main) |\n| .NET Core (macOS X Catalina 10.15) Unit Tests | [![Build Status](https://dev.azure.com/SpanNetty/SpanNetty/_apis/build/status/SpanNetty/pr-netcore-validation?branchName=main\u0026jobName=.NET%20Core%20Unit%20Tests%20(MacOS-10.15))](https://dev.azure.com/SpanNetty/SpanNetty/_build/latest?definitionId=7\u0026branchName=main) |\n| .NET Netstandard (Windows) Unit Tests         | [![Build status](https://ci.appveyor.com/api/projects/status/rvx3h1bmahad2giw/branch/main?svg=true)](https://ci.appveyor.com/project/cuteant/SpanNetty/branch/main) |\n\n## Features\n  - Align with [Netty-4.1.51.Final](https://github.com/netty/netty/tree/netty-4.1.51.Final)\n  - ArrayPooledByteBuffer\n  - Support **Span\u0026#60;byte\u0026#62;** and **Memory\u0026#60;byte\u0026#62;** in Buffer/Common APIs\n  - Add support for IBufferWriter\u0026#60;byte\u0026#62; to the **IByteBuffer**\n  - [ByteBufferReader](https://github.com/cuteant/spannetty/tree/main/src/DotNetty.Buffers/Reader) and [ByteBufferWriter](https://github.com/cuteant/dotnetty-span-fork/tree/main/src/DotNetty.Buffers/Writer)\n  - [HTTP 2 codec](https://github.com/cuteant/spannetty/tree/main/src/DotNetty.Codecs.Http2)\n\n## Use\n\n* Stable builds are available on [NuGet](https://www.nuget.org/packages?q=spannetty).\n* Nightly builds are available on [MyGet](https://www.myget.org/F/cuteant/api/v2).\n\n\n|Package|NuGet Version|MyGet Version|\n|------|-------------|-------------|\n|SpanNetty.Common|[![NuGet Version and Downloads count](https://buildstats.info/nuget/SpanNetty.Common)](https://www.nuget.org/packages/SpanNetty.Common/)|[![MyGet Version](https://img.shields.io/myget/cuteant/vpre/SpanNetty.Common)](https://www.myget.org/feed/cuteant/package/nuget/SpanNetty.Common)|\n|SpanNetty.Buffers|[![NuGet Version and Downloads count](https://buildstats.info/nuget/SpanNetty.Buffers)](https://www.nuget.org/packages/SpanNetty.Buffers/)|[![MyGet Version](https://img.shields.io/myget/cuteant/vpre/SpanNetty.Buffers)](https://www.myget.org/feed/cuteant/package/nuget/SpanNetty.Buffers)|\n|SpanNetty.Codecs|[![NuGet Version and Downloads count](https://buildstats.info/nuget/SpanNetty.Codecs)](https://www.nuget.org/packages/SpanNetty.Codecs/)|[![MyGet Version](https://img.shields.io/myget/cuteant/vpre/SpanNetty.Codecs)](https://www.myget.org/feed/cuteant/package/nuget/SpanNetty.Codecs)|\n|SpanNetty.Codecs.Http|[![NuGet Version and Downloads count](https://buildstats.info/nuget/SpanNetty.Codecs.Http)](https://www.nuget.org/packages/SpanNetty.Codecs.Http/)|[![MyGet Version](https://img.shields.io/myget/cuteant/vpre/SpanNetty.Codecs.Http)](https://www.myget.org/feed/cuteant/package/nuget/SpanNetty.Codecs.Http)|\n|SpanNetty.Codecs.Http2|[![NuGet Version and Downloads count](https://buildstats.info/nuget/SpanNetty.Codecs.Http2)](https://www.nuget.org/packages/SpanNetty.Codecs.Http2/)|[![MyGet Version](https://img.shields.io/myget/cuteant/vpre/SpanNetty.Codecs.Http2)](https://www.myget.org/feed/cuteant/package/nuget/SpanNetty.Codecs.Http2)|\n|SpanNetty.Codecs.Mqtt|[![NuGet Version and Downloads count](https://buildstats.info/nuget/SpanNetty.Codecs.Mqtt)](https://www.nuget.org/packages/SpanNetty.Codecs.Mqtt/)|[![MyGet Version](https://img.shields.io/myget/cuteant/vpre/SpanNetty.Codecs.Mqtt)](https://www.myget.org/feed/cuteant/package/nuget/SpanNetty.Codecs.Mqtt)|\n|SpanNetty.Codecs.Protobuf|[![NuGet Version and Downloads count](https://buildstats.info/nuget/SpanNetty.Codecs.Protobuf)](https://www.nuget.org/packages/SpanNetty.Codecs.Protobuf/)|[![MyGet Version](https://img.shields.io/myget/cuteant/vpre/SpanNetty.Codecs.Protobuf)](https://www.myget.org/feed/cuteant/package/nuget/SpanNetty.Codecs.Protobuf)|\n|SpanNetty.Handlers|[![NuGet Version and Downloads count](https://buildstats.info/nuget/SpanNetty.Handlers)](https://www.nuget.org/packages/SpanNetty.Handlers/)|[![MyGet Version](https://img.shields.io/myget/cuteant/vpre/SpanNetty.Handlers)](https://www.myget.org/feed/cuteant/package/nuget/SpanNetty.Handlers)|\n|SpanNetty.Transport|[![NuGet Version and Downloads count](https://buildstats.info/nuget/SpanNetty.Transport)](https://www.nuget.org/packages/SpanNetty.Transport/)|[![MyGet Version](https://img.shields.io/myget/cuteant/vpre/SpanNetty.Transport)](https://www.myget.org/feed/cuteant/package/nuget/SpanNetty.Transport)|\n|SpanNetty.Transport.Libuv|[![NuGet Version and Downloads count](https://buildstats.info/nuget/SpanNetty.Transport.Libuv)](https://www.nuget.org/packages/SpanNetty.Transport.Libuv/)|[![MyGet Version](https://img.shields.io/myget/cuteant/vpre/SpanNetty.Transport.Libuv)](https://www.myget.org/feed/cuteant/package/nuget/SpanNetty.Transport.Libuv)|\n\n## Performance\n\n``` ini\n\nOS=Windows 10.0.17134.1667\nIntel Xeon CPU E3-1230 V2 3.30GHz, 1 CPU, 8 logical and 4 physical cores\n.NET Core SDK=3.1.401\n\n```\n\nHere are some performance numbers from [Akka.RemotePingPong(With SpanNetty) benchmark](https://github.com/cuteant/akka.net/tree/future/benchmark/RemotePingPong), which uses high volumes of small messages. \n\nThese numbers were all produced on a 4 core Intel i5 3.30hz PC over a single Akka.Remote connection running .NET Core 3.1 on Windows 10:\n\n### ~ With Message Batching (**Socket**)\n\n| Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |\n|----------------------|-------------|----------|------------|\n| 1                    | 200000      | 74075    | 2700.29    |\n| 5                    | 1000000     | 167281   | 5978.33    |\n| 10                   | 2000000     | 196406   | 10183.36   |\n| 15                   | 3000000     | 209805   | 14299.36   |\n| 20                   | 4000000     | 210096   | 19039.21   |\n| 25                   | 5000000     | 210678   | 23733.14   |\n| 30                   | 6000000     | 203985   | 29414.13   |\n\nAverage performance: **181,760 msg/s**.\n\n### ~ With Message Batching (_Libuv_)\n\n| Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |\n|----------------------|-------------|----------|------------|\n| 1                    | 200000      | 76570    | 2612.17    |\n| 5                    | 1000000     | 159516   | 6269.25    |\n| 10                   | 2000000     | 187161   | 10686.69   |\n| 15                   | 3000000     | 198073   | 15146.09   |\n| 20                   | 4000000     | 190124   | 21039.95   |\n| 25                   | 5000000     | 184027   | 27170.75   |\n| 30                   | 6000000     | 173752   | 34532.69   |\n\nAverage performance: **167,031 msg/s**.\n\n### ~ With I/O Batching (**Socket**)\n\n| Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |\n|----------------------|-------------|----------|------------|\n| 1                    | 200000      | 64893    | 3082.78    |\n| 5                    | 1000000     | 145181   | 6888.77    |\n| 10                   | 2000000     | 162761   | 12288.34   |\n| 15                   | 3000000     | 160231   | 18723.05   |\n| 20                   | 4000000     | 148242   | 26983.94   |\n| 25                   | 5000000     | 132269   | 37802.50   |\n| 30                   | 6000000     | 123597   | 48545.25   |\n\nAverage performance: **133,882 msg/s**.\n\n### ~ With I/O Batching (_Libuv_)\n\n| Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |\n|----------------------|-------------|----------|------------|\n| 1                    | 200000      | 63634    | 3143.60    |\n| 5                    | 1000000     | 133298   | 7502.06    |\n| 10                   | 2000000     | 149288   | 13397.27   |\n| 15                   | 3000000     | 146865   | 20427.17   |\n| 20                   | 4000000     | 132101   | 30280.71   |\n| 25                   | 5000000     | 115415   | 43322.88   |\n| 30                   | 6000000     | 111620   | 53754.96   |\n\nAverage performance: **121,745 msg/s**.\n\n### ~ No I/O Batching (_Socket_)\n\n| Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |\n|----------------------|-------------|----------|------------|\n| 1                    | 200000      | 31348    | 6380.59    |\n| 5                    | 1000000     | 53698    | 18623.22   |\n| 10                   | 2000000     | 62066    | 32224.90   |\n| 15                   | 3000000     | 60902    | 49260.73   |\n| 20                   | 4000000     | 56694    | 70555.15   |\n| 25                   | 5000000     | 15152    | 330000.86  |\n\nAverage performance: **46,643 msg/s**.\n\n### ~ No I/O Batching (**Libuv**)\n\n| Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |\n|----------------------|-------------|----------|------------|\n| 1                    | 200000      | 71995    | 2778.50    |\n| 5                    | 1000000     | 131441   | 7608.04    |\n| 10                   | 2000000     | 144041   | 13885.52   |\n| 15                   | 3000000     | 134433   | 22316.79   |\n| 20                   | 4000000     | 126575   | 31602.55   |\n| 25                   | 5000000     | 120759   | 41405.54   |\n| 30                   | 6000000     | 119919   | 50034.57   |\n\nAverage performance: **121,309 msg/s**.\n\n# ~ ORIGINAL README ~\n\n# DotNetty Project\n\n[![Join the chat at https://gitter.im/Azure/DotNetty](https://img.shields.io/gitter/room/Azure/DotNetty.js.svg?style=flat-square)](https://gitter.im/Azure/DotNetty?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![Available on NuGet https://www.nuget.org/packages?q=DotNetty](https://img.shields.io/nuget/v/DotNetty.Common.svg?style=flat-square)](https://www.nuget.org/packages?q=DotNetty)\n[![AppVeyor](https://img.shields.io/appveyor/ci/nayato/dotnetty.svg?label=appveyor\u0026style=flat-square)](https://ci.appveyor.com/project/nayato/dotnetty)\n\nDotNetty is a port of [Netty](https://github.com/netty/netty), asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers \u0026 clients.\n\n## Use\n\n* Official releases are on [NuGet](https://www.nuget.org/packages?q=DotNetty).\n* Nightly builds are available on [MyGet](https://www.myget.org/F/dotnetty/api/v2/).\n\n## Contribute\n\nWe gladly accept community contributions.\n\n* Issues: Please report bugs using the Issues section of GitHub\n* Source Code Contributions:\n * Please follow the [Contribution Guidelines for Microsoft Azure](http://azure.github.io/guidelines.html) open source that details information on onboarding as a contributor\n * See [C# Coding Style](https://github.com/Azure/DotNetty/wiki/C%23-Coding-Style) for reference on coding style.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuteant%2Fspannetty","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcuteant%2Fspannetty","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcuteant%2Fspannetty/lists"}