English Version | ไธญๆ็
ๅบไบ .NET Standard 2.0 ็้ซๆง่ฝ IOCP ็ฝ็ป้ไฟกๆกๆถ๏ผๆถๅ่ทฏๅพ็ปไธไธบ้ถๆท่ด๏ผSpan/Memory๏ผ+ ๅ ๅญๆฑ ๅๅค็จ๏ผๆไพๅฎๆด็็ฝ็ปๅบ็จ่งฃๅณๆนๆกใ
SAEA.Socket ๆฏไธไธช IOCP ้ซๆง่ฝ sockets ็ฝ็ปๆกๆถ๏ผSrc ไธญๅ ๅซๅ ถไฝฟ็จๅบๆฏ๏ผไพๅฆๅคงๆไปถไผ ่พใWebSocket ๅฎขๆท็ซฏๅๆๅกๅจใ้ซๆง่ฝๆถๆฏ้ๅใRPCใRedis ้ฉฑๅจใHTTP ServerใMQTTใMVCใDNSใๆถๆฏๆๅกๅจ็ญใ
| ็ซ ่ | ๅ ๅฎน |
|---|---|
| โก 30็งๅฟซ้ๅผๅง | ๆ็ฎๅ็ไธๆๆนๅผ |
| ๐งฉ ็ปไปถๅฏผ่ช | ้ๆฉๅ้็็ปไปถ |
| ๐ ้กน็ฎๆถๆ | ๆดไฝๆถๆ่ฎพ่ฎก |
| โจ ๆ ธๅฟ็นๆง | ไธป่ฆๅ่ฝไบฎ็น |
| ๐ ๆง่ฝๅฏนๆฏ | ไธๅ็ฑปๆกๆถๅฏนๆฏ |
| โ ๅธธ่ง้ฎ้ข | FAQ ๅฟซ้่งฃ็ญ |
| ๐ ่ตๆบ้พๆฅ | ๆดๅคๅญฆไน ่ตๆบ |
dotnet add package SAEA.Sockets// ๅๅปบ TCP ๆๅกๅจ๏ผไป
้5่กไปฃ็ ๏ผ
var server = SocketFactory.CreateServerSocket(
SocketOptionBuilder.Instance.SetSocket(SAEASocketType.Tcp).UseIocp().SetPort(39654).Build()
);
server.OnServerReceiveSpan += (userToken, data) => server.Send(userToken.ID, data);
server.Start();๐ก
OnServerReceiveSpan็dataไธบReadOnlySpan<byte>๏ผไป ๅจๅ่ฐๆ้ดๆๆ๏ผ่ฏทๅจๅไธๆฌกๅ่ฐๅ ๅๆญฅๆถ่ดน๏ผๆToArray()ๅคๅถ๏ผใ
ๆ นๆฎไฝ ็้ๆฑ้ๆฉๅฏนๅบ็ปไปถ๏ผ
| ไฝ ็้ๆฑ | ๆจ่็ปไปถ | ๅฎ่ฃ ๅฝไปค |
|---|---|---|
| Web API ๅผๅ | SAEA.MVC | dotnet add package SAEA.MVC |
| WebSocket ๅฎๆถ้ไฟก | SAEA.WebSocket | dotnet add package SAEA.WebSocket |
| P2P ็ด่ฟ้ไฟก | SAEA.P2P | dotnet add package SAEA.P2P |
| Redis ็ผๅญๆไฝ | SAEA.RedisSocket | dotnet add package SAEA.RedisSocket |
| ๅพฎๆๅก RPC | SAEA.RPC | dotnet add package SAEA.RPC |
| IoT ่ฎพๅค้ไฟก | SAEA.MQTT | dotnet add package SAEA.MQTT |
| ๆไปถไผ ่พ | SAEA.FileSocket | dotnet add package SAEA.FileSocket |
| ็ปไปถ | ๅ่ฝ | NuGet | ไธญๆๆๆกฃ | ่ฑๆๆๆกฃ | ้็จๅบๆฏ |
|---|---|---|---|---|---|
| ๐ SAEA.Sockets | IOCP Socket ้ไฟกๆกๆถ | NuGet | ไธญๆ | English | ๆธธๆๆๅกๅจใๅฎๆถ้ไฟกใIoT |
| ๐ง SAEA.Common | ้็จๅทฅๅ ท็ฑปๅบ | NuGet | ไธญๆ | English | ๅบๅๅใ็ผๅญใๅ ๅฏ |
| ็ปไปถ | ๅ่ฝ | NuGet | ไธญๆๆๆกฃ | ่ฑๆๆๆกฃ | ้็จๅบๆฏ |
|---|---|---|---|---|---|
| ๐ SAEA.Http | HTTP ๆๅกๅจ | NuGet | ไธญๆ | English | RESTful APIใ้ๆๆไปถๆๅก |
| ๐จ SAEA.MVC | MVC Web ๆกๆถ | NuGet | ไธญๆ | English | Web ๅบ็จใAPI ๆๅก |
| ็ปไปถ | ๅ่ฝ | NuGet | ไธญๆๆๆกฃ | ่ฑๆๆๆกฃ | ้็จๅบๆฏ |
|---|---|---|---|---|---|
| ๐ฌ SAEA.WebSocket | WebSocket ๆๅกๅจ/ๅฎขๆท็ซฏ | NuGet | ไธญๆ | English | ๅฎๆถ่ๅคฉใๆจ้้็ฅ |
| ๐ค SAEA.MQTT | MQTT ๅ่ฎฎๅฎ็ฐ | NuGet | ไธญๆ | English | IoT ่ฎพๅคใๆบ่ฝๅฎถๅฑ |
| ๐จ SAEA.MessageSocket | ๆถๆฏๆๅกๅจ | NuGet | ไธญๆ | English | ๅณๆถ้่ฎฏใๅจ็บฟๅฎขๆ |
| ็ปไปถ | ๅ่ฝ | NuGet | ไธญๆๆๆกฃ | ่ฑๆๆๆกฃ | ้็จๅบๆฏ |
|---|---|---|---|---|---|
| ๐ SAEA.P2P | P2P ็ด่ฟ้ไฟก็ปไปถ | NuGet | ไธญๆ | English | NAT ็ฉฟ้ใๅฑๅ็ฝๅ็ฐใๅณๆถ้่ฎฏใๆธธๆๅฏนๆ |
| ็ปไปถ | ๅ่ฝ | NuGet | ไธญๆๆๆกฃ | ่ฑๆๆๆกฃ | ้็จๅบๆฏ |
|---|---|---|---|---|---|
| ๐ฆ SAEA.RedisSocket | Redis ๅฎขๆท็ซฏ | NuGet | ไธญๆ | English | Redis ็ผๅญใๅๅธๅผ้ |
| ๐ SAEA.FileSocket | ๆไปถไผ ่พ็ปไปถ | NuGet | ไธญๆ | English | ๅคงๆไปถไผ ่พใๆญ็น็ปญไผ |
| ๐๏ธ SAEA.FTP | FTP ๆๅกๅจ/ๅฎขๆท็ซฏ | NuGet | ไธญๆ | English | ๆไปถๆๅกๅจใFTP ๅฎขๆท็ซฏ |
| ็ปไปถ | ๅ่ฝ | NuGet | ไธญๆๆๆกฃ | ่ฑๆๆๆกฃ | ้็จๅบๆฏ |
|---|---|---|---|---|---|
| ๐ SAEA.RPC | RPC ่ฟ็จ่ฐ็จ | NuGet | ไธญๆ | English | ๅพฎๆๅก้ไฟกใ่ฟ็จ่ฐ็จ |
| ๐ SAEA.QueueSocket | ๅ ๅญๆถๆฏ้ๅ | NuGet | ไธญๆ | English | Pub/Subใไบไปถ้็ฅ |
| ็ปไปถ | ๅ่ฝ | NuGet | ไธญๆๆๆกฃ | ่ฑๆๆๆกฃ | ้็จๅบๆฏ |
|---|---|---|---|---|---|
| ๐ SAEA.DNS | DNS ๆๅกๅจ/ๅฎขๆท็ซฏ | NuGet | ไธญๆ | English | DNS ไปฃ็ใๅๅ่งฃๆ |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SAEA ็ปไปถๅฎถๆๆถๆๆป่ง โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโ ๅบ็จๅฑ็ปไปถ โโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ โโโโโโโโโโโ โโโโโโโโโโโโ โ โ
โ โ โ MVC โ โ WebSocketโ โ โ
โ โ โ(Webๆกๆถ)โ โ(ๅฎๆถ้ไฟก)โ โ โ
โ โ โโโโโโฌโโโโโ โโโโโโฌโโโโโโ โ โ
โ โ โ โ โ โ
โ โ โโโโโโผโโโโโ โโโโโผโโโโโ โโโโโโโโโโโโ โ
โ โ โ RPC โ โ MQTT โ โ Message โโ โ
โ โ โ(่ฟ็จ่ฐ็จ)โ โ(IoT) โ โ Socket โโ โ
โ โ โโโโโโฌโโโโโ โโโโโฌโโโโโ โโโโโโฌโโโโโโ โ
โ โ โ โ โ โ โ
โ โ โโโโโโผโโโโโ โโโโโผโโโโโ โ โ โ
โ โ โ P2P โ โ Redis โ โ โ โ
โ โ โ(NAT็ฉฟ้)โ โ(็ผๅญ) โ โ โ โ
โ โ โโโโโโฌโโโโโ โโโโโฌโโโโโ โ โ โ
โ โ โ โ โ โ โ
โ โโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโโผโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโโโโผโโโโโโโโโโโโผโโโโโโโโโโโโโผโโโโโโ โ
โ โ SAEA.Sockets (ๆ ธๅฟๅฑ) โ โ
โ โ IOCP ้ซๆง่ฝ Socket ๆกๆถ โ โ
โ โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโ โ โ
โ โ โIocpSocketโ โStreamSockโ โUdpSockโ โ โ
โ โ โ (IOCP) โ โ(ๆตๆจกๅผ) โ โ (UDP) โ โ โ
โ โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โ โ BufferPool โ Session โ Coder โ โ โ
โ โ โ (ๅ
ๅญๆฑ ) โ(ไผ่ฏ) โ(็ผ่งฃ็ ) โ โ โ
โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโ โ
โ โ SAEA.Common (ๅบ็กๅฑ) โ โ
โ โ ้็จๅทฅๅ
ท็ฑปๅบ (ๅบๅๅ/็ผๅญ/ๅ ๅฏ) โ โ
โ โ โโโโโโโโโโ โโโโโโโโโ โโโโโโโโโ โ โ
โ โ โSerializeโ โ Cache โ โEncryptโ โ โ
โ โ โ(ๅบๅๅ) โ โ(็ผๅญ) โ โ(ๅ ๅฏ) โ โ โ
โ โ โโโโโโโโโโ โโโโโโโโโ โโโโโโโโโ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
ๅฎขๆท็ซฏ่ฏทๆฑๆต็จ:
โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ ๅฎขๆท็ซฏ โโโโโโโบโ Sockets โโโโโโโบโ Coder โ
โ (TCP/UDP)โ โ IOCPๆฅๆถ โ โ ่งฃ็ โ
โโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅบ็จๅฑๅค็๏ผไธๅก้ป่พ๏ผ โ
โ MVC / RPC / WebSocket / MQTT โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโ โโโโโโโโโโโโ
โ Coder โโโโโโโบโ Sockets โโโโโโโบ ๅฎขๆท็ซฏ
โ ็ผ็ โ โ IOCPๅ้ โ
โโโโโโโโโโโโ โโโโโโโโโโโโ
| ็นๆง | ่ฏดๆ |
|---|---|
| ๐ ้ซๆง่ฝ IOCP | Windows ๅฎๆ็ซฏๅฃๆๆฏ๏ผๆฏๆไธ็บงๅนถๅ่ฟๆฅ |
| ๐ฆ ้ถๆท่ด + ๅ ๅญๆฑ | ๆถๅ่ทฏๅพ็ปไธ Span/Memory ้ถๆท่ด๏ผBufferManagerใUserTokenPoolใMemoryPoolManager ๆฑ ๅๅค็จ๏ผๅคงๅน ๅๅฐ GC ๅๅ |
| ๐ SSL/TLS ๅ ๅฏ | Stream ๆจกๅผๆฏๆๅฎๅ จ่ฟๆฅ |
| ๐ IPv6 ๆฏๆ | ๅฎๅ จๅ ผๅฎน IPv6 ๅ่ฎฎ |
| ๐ ไผ่ฏ็ฎก็ | SessionManager ่ชๅจ็ฎก็่ฟๆฅไผ่ฏ |
| ๐ ๏ธ ่ชๅฎไนๅ่ฎฎ | ICoder ๆฅๅฃๆฏๆ็ตๆดป็ๅ่ฎฎ็ผ่งฃ็ |
| ๐ ้พๅผ้ ็ฝฎ | SocketOptionBuilder ็ฎๆดๆ็จ |
| ๐ ๅฎๆด็ปไปถ | MVCใWebSocketใRPCใRedisใMQTT ็ญๅ จๅบๆฏ่ฆ็ |
| ๆๆ | SAEA.Sockets | ไผ ็ป Socket | ๆๅ |
|---|---|---|---|
| ๅนถๅ่ฟๆฅๆฐ | 10,000+ | ~1,000 | 10ๅ |
| CPU ๅฉ็จ็ | ~85% | ~30% | ้ซๆ |
| ๅ ๅญๅ ็จ | ๆฑ ๅๅค็จ | ้ข็นๅ้ | ไฝ GC |
| ๅปถ่ฟ | ~1ms | ~10ms | ไฝๅปถ่ฟ |
| ็นๆง | SAEA.RPC | HTTP RPC |
|---|---|---|
| ๅบๅๅ | Protobuf | JSON |
| ไผ ่พๅ่ฎฎ | TCP | HTTP |
| ่ฟๆฅๆจกๅผ | ้ฟ่ฟๆฅ | ็ญ่ฟๆฅ |
| ๅนถๅๆจกๅ | IOCP | ้ปๅก |
| ๆง่ฝ | ้ซ | ไธญ |
SAEA.Sockets ็ span ๆถๅ
่ทฏๅพๅจๅไธๆถๅๅบๅไธ๏ผ็ธ่พๆง่งฃ็ ่ทฏๅพๆพ่้ไฝๅ้
ไธ GC๏ผ
| ่ทฏๅพ | ๅๅ | ๅ้ | GC0 |
|---|---|---|---|
ๆง่ทฏๅพ LegacyDecode |
42,345 ๅธง/็ง | 4,662 B/ๅธง | 18 |
้ถๆท่ด SpanDecodeStream |
45,344 ๅธง/็ง | 34 B/ๅธง | 0 |
ๆฐๆฎๆฅ่ช
SAEA.P2PTest --bench-iocp๏ผ4KB ๅธง๏ผๅๆบๅ็ฏ๏ผๆฐๅผ้็กฌไปถๆณขๅจ๏ผใ
A: SAEA ้ๅไปฅไธๅบๆฏ๏ผ
- ๐ฎ ๆธธๆๆๅกๅจ๏ผๅฎๆถๅฏนๆใ็ถๆๅๆญฅ๏ผ
- ๐ ๅฎๆถๆฐๆฎๆจ้๏ผ่ก็ฅจ่กๆ ใไฝ่ฒๆฏๅ๏ผ
- ๐ค IoT ่ฎพๅค้ไฟก๏ผไผ ๆๅจๆฐๆฎไธๆฅ๏ผ
- ๐ฌ ๅณๆถ้่ฎฏ๏ผ็ง่ใ็พค่ใๅฎขๆ็ณป็ป๏ผ
- ๐ ๅพฎๆๅก้ไฟก๏ผRPC ่ฟ็จ่ฐ็จ๏ผ
- ๐ ๅคงๆไปถไผ ่พ๏ผๆญ็น็ปญไผ ใ้ซ้ไผ ่พ๏ผ
- ๐ P2P ็ด่ฟ้ไฟก๏ผNAT ็ฉฟ้ใๅฑๅ็ฝๅ็ฐ๏ผ
A: ๆ นๆฎไฝ ็้ๆฑ้ๆฉ๏ผ
ไฝ ็้ๆฑ ๆจ่็ปไปถ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Web API ๅผๅ โ SAEA.MVC
ๅฎๆถ่ๅคฉ/ๆจ้ โ SAEA.WebSocket
P2P ็ด่ฟ้ไฟก โ SAEA.P2P
IoT ่ฎพๅค้ไฟก โ SAEA.MQTT
Redis ็ผๅญๆไฝ โ SAEA.RedisSocket
ๅพฎๆๅก RPC โ SAEA.RPC
ๆไปถไผ ่พ โ SAEA.FileSocket
่ชๅฎไนๅ่ฎฎ โ SAEA.Sockets
A: ๅบไบ .NET Standard 2.0๏ผๆฏๆ๏ผ
- โ Windows๏ผIOCP ๆไฝณๆง่ฝ๏ผ
- โ Linux๏ผๅผๆญฅ Socket๏ผ
- โ macOS
A: ๆ็ดข "SAEA" ๆ็ดๆฅๅฎ่ฃ ๏ผ
# Package Manager
Install-Package SAEA.Sockets -Version 26.9.21.1
# .NET CLI
dotnet add package SAEA.Sockets --version 26.9.21.1A: 3 ๆญฅๅฟซ้ๅผๅง๏ผ
- ๅฎ่ฃ ๅฏนๅบ็ปไปถ็ NuGet ๅ
- ้ ่ฏป็ปไปถ README ็ "30็งๅฟซ้ๅผๅง"
- ๆฅ็ๅฎๆด็คบไพไปฃ็
ๆฏไธช็ปไปถ้ฝๆ่ฏฆ็ป็ไฝฟ็จ็คบไพๅๆณจ้ใ
A: Src ไธญๅ ๅซๅคไธชๆต่ฏ้กน็ฎ๏ผๅฑ็คบๅฎ้ ไฝฟ็จๅบๆฏ๏ผ
SAEA.SocketsTest- Socket ไฝฟ็จ็คบไพSAEA.WebSocketTest- WebSocket ็คบไพSAEA.MVCTest- MVC Web ๅบ็จ็คบไพSAEA.RedisTest- Redis ๆไฝ็คบไพSAEA.RPCTest- RPC ่ฐ็จ็คบไพSAEA.P2PTest- P2P NAT ็ฉฟ้็คบไพ
- WebRedisManager - ๅบไบ SAEA.RedisSocket ็ Redis ็ฎก็ๅทฅๅ ท
- SAEA.Rested - ๅบไบ SAEA.MVC ็ REST API ็คบไพ
- GFF - ๅบไบ SAEA ็ไปฟ QQ ้ไฟก็จๅบ
- QQ ็พค๏ผ788260487
- Issues๏ผGitHub Issues
Apache License 2.0









