![]() |
VOOZH | about |
dotnet add package SAEA.Http --version 26.4.23.1
NuGet\Install-Package SAEA.Http -Version 26.4.23.1
<PackageReference Include="SAEA.Http" Version="26.4.23.1" />
<PackageVersion Include="SAEA.Http" Version="26.4.23.1" />Directory.Packages.props
<PackageReference Include="SAEA.Http" />Project file
paket add SAEA.Http --version 26.4.23.1
#r "nuget: SAEA.Http, 26.4.23.1"
#:package SAEA.Http@26.4.23.1
#addin nuget:?package=SAEA.Http&version=26.4.23.1Install as a Cake Addin
#tool nuget:?package=SAEA.Http&version=26.4.23.1Install as a Cake Tool
๐ NuGet version
๐ License
| ไธญๆ็
ๅบไบ .NET Standard 2.0 ็้ซๆง่ฝ HTTP ๆๅกๅจ๏ผ้็จ IOCP ๅฎๆ็ซฏๅฃๆๆฏ๏ผๆฏๆ RESTful APIใ้ๆๆไปถๆๅกใๆไปถไธไผ ็ญๅ่ฝใ
| ็ซ ่ | ๅ ๅฎน |
|---|---|
| โก 30็งๅฟซ้ๅผๅง | ๆ็ฎๅ็ไธๆ็คบไพ |
| ๐ฏ ๆ ธๅฟ็นๆง | ๆกๆถ็ไธป่ฆๅ่ฝ |
| ๐ ๆถๆ่ฎพ่ฎก | ็ปไปถๅ ณ็ณปไธๅทฅไฝๆต็จ |
| ๐ก ๅบ็จๅบๆฏ | ไฝๆถ้ๆฉ SAEA.Http |
| ๐ ๆง่ฝๅฏนๆฏ | ไธๅ ถไปๆนๆกๅฏนๆฏ |
| โ ๅธธ่ง้ฎ้ข | FAQ ๅฟซ้่งฃ็ญ |
| ๐ง ๆ ธๅฟ็ฑป | ไธป่ฆ็ฑปไธ่ง |
| ๐ ไฝฟ็จ็คบไพ | ่ฏฆ็ปไปฃ็ ็คบไพ |
ๆๅฟซไธๆๆนๅผ๏ผๅช้3ๆญฅๅณๅฏ่ฟ่ก HTTP ๆๅกๅจ๏ผ
dotnet add package SAEA.Http
using SAEA.Http;
var server = new WebHost(new WebConfig { Port = 28080 });
server.OnRequestDelegate += (ctx) => {
ctx.Response.SetContent("{\"msg\": \"Hello SAEA.Http!\"}", "application/json");
return true;
};
server.Start();
curl http://localhost:28080/api/test
# ่พๅบ: {"msg": "Hello SAEA.Http!"}
ๅฐฑ่ฟไน็ฎๅ๏ผ ๐ ไฝ ๅทฒ็ปๅฎ็ฐไบไธไธชๆฏๆไธ็บงๅนถๅ็้ซๆง่ฝ HTTP ๆๅกๅจใ
| ็นๆง | ่ฏดๆ | ไผๅฟ |
|---|---|---|
| ๐ IOCP ้ซๆง่ฝ | ๅบไบ SAEA.Sockets ๅฎๆ็ซฏๅฃ | ๆฏๆไธ็บงๅนถๅ่ฏทๆฑ๏ผไฝๅปถ่ฟ |
| ๐ก ๆ ๅ HTTP ๆนๆณ | GET/POST/PUT/DELETE/OPTIONS | ๅฎๆด RESTful ๆฏๆ |
| ๐ ้ๆๆไปถๆๅก | ่ชๅจ็ผๅญใๅๅไผ ่พ | ๅคงๆไปถ้ซๆไผ ่พ๏ผๅ ๅญไผๅ |
| ๐ค ๆไปถไธไผ | multipart/form-data ่งฃๆ | ่ฝปๆพๅค็ๆไปถไธไผ |
| ๐ Session ็ฎก็ | HttpSession + Manager | ไผ่ฏ็ถๆ่ฟฝ่ธช๏ผ่ถ ๆถๆธ ็ |
| ๐ช Cookie ๆฏๆ | HttpCookie/HttpCookies | ๅฎๆด Cookie ่ฏปๅ |
| ๐๏ธ GZIP ๅ็ผฉ | ๅๅบๅ ๅฎน่ชๅจๅ็ผฉ | ๅๅฐๅธฆๅฎฝ๏ผๆๅ้ๅบฆ |
| ๐ CORS ่ทจๅ | ๅ ็ฝฎ่ทจๅๆฏๆ | ๅๅ็ซฏๅ็ฆปๅๅฅฝ |
| ๐ก SSE ๆจ้ | Server-Sent Events | ๅฎๆถๆๅกๅจๆจ้ |
| ๐ง ๅงๆๅค็ | RequestDelegate ๆจกๅผ | ็ตๆดป็่ชๅฎไนๅค็ |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SAEA.Http ๆถๆ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ WebHost โ โ
โ โ (HTTP ๆๅกๅจๅ
ฅๅฃ) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ โ
โ โโโโโโโโผโโโโโโโ โโโโโโโโโผโโโโโโโโ โโโโโโโผโโโโโโ โ
โ โ HttpContext โ โ HttpSession โ โ WebConfig โ โ
โ โ (ไธไธๆ) โ โ (ไผ่ฏ็ฎก็) โ โ (้
็ฝฎ) โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโดโโโโโโโ โ
โ โ โ โ
โ โผ โผ โ
โ โโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โRequest โ โResponse โ โ
โ โ(่ฏทๆฑ) โ โ(ๅๅบ) โ โ
โ โโโโโโฌโโโโโ โโโโโโฌโโโโโโ โ
โ โ โ โ
โ โโโโโโโฌโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโผโโโโโโโโโโ โ
โ โ HttpSocket โ โ
โ โ (ๅบๅฑ้ไฟกๅฑ) โ โ
โ โโโโโโโโโโโฌโโโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโผโโโโโโโโโโ โ
โ โ SAEA.Sockets โ โ
โ โ (IOCP ๅผๆ) โ โ
โ โโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
HTTP ่ฏทๆฑๅค็ๆต็จ:
ๅฎขๆท็ซฏ โโโบ HTTP Request โโโบ WebHost ๆฅๆถ
โ
โผ
โโโโโโโโโโโโโโโโโโโ
โ RequestDataReaderโ
โ ่งฃๆ HTTP ่ฏทๆฑ โ
โโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ
โ HttpContext โ
โ ๅๅปบ่ฏทๆฑไธไธๆ โ
โโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโ
โ้ๆๆไปถ? โ โAPI่ฏทๆฑ? โ โไธไผ ๆไปถ? โ
โโโโโโโฌโโโโโโ โโโโโโโฌโโโโโโ โโโโโโโฌโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโ
โStaticCacheโ โOnRequest โ โMultipart โ
โ็ผๅญ/ไผ ่พ โ โDelegate โ โ ่งฃๆๅจ โ
โโโโโโโฌโโโโโโ โโโโโโโฌโโโโโโ โโโโโโโฌโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ
โ HttpResponse โ
โ ๆๅปบๅๅบๆฐๆฎ โ
โโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโ
โ GZIP ๅ็ผฉ? โ
โ (ๅฏ้) โ
โโโโโโโโโโโโโโโโโโโ
โ
โผ
HttpSocket ๅ้
โ
โผ
ๅฎขๆท็ซฏๅๅบ
| ๅบๆฏ | ๆ่ฟฐ | ๆจ่็็ฑ |
|---|---|---|
| ๐ RESTful API | ๅพฎๆๅกใๅ็ซฏ API | IOCP ้ซๅนถๅ๏ผไฝๅปถ่ฟๅๅบ |
| ๐ ้ๆๆไปถๆๅก | ๅ็ซฏ่ตๆบใไธ่ฝฝๆๅก | ่ชๅจ็ผๅญ๏ผๅคงๆไปถๅๅไผ ่พ |
| ๐ค ๆไปถไธไผ ๆๅก | ๅพ็ใๆๆกฃไธไผ | multipart ่งฃๆ๏ผๅ ๅญไผๅ |
| ๐ ไปฃ็ๆๅก | ๅๅไปฃ็ใ็ฝๅ ณ | ่ฝป้็บง๏ผๅฟซ้่ฝฌๅ |
| ๐ก SSE ๆจ้ | ๅฎๆถ้็ฅใ่ก็ฅจ่กๆ | ๅ็ๆฏๆ Server-Sent Events |
| ๐ฎ ๆธธๆๅ็ซฏ | ๆธธๆๆๅกๅจ HTTP ๆฅๅฃ | ้ซๆง่ฝ๏ผไฝ่ตๆบๅ ็จ |
| ๐ ๅตๅ ฅๅผๆๅก | IoT ่ฎพๅค HTTP ๆฅๅฃ | ่ฝป้็บง๏ผๆไบๅตๅ ฅ |
| ๅบๆฏ | ๆจ่ๆฟไปฃๆนๆก |
|---|---|
| ๅคๆ MVC ๅบ็จ | ไฝฟ็จ SAEA.MVC๏ผๅบไบ SAEA.Http๏ผ |
| WebSocket ๅๅ้ไฟก | ไฝฟ็จ SAEA.WebSocket |
| RPC ๅพฎๆๅก | ไฝฟ็จ SAEA.RPC |
| ๅฎๆด Web ๆกๆถ | ไฝฟ็จ ASP.NET Core |
| ๆๆ | SAEA.Http | Kestrel | HttpListener | ไผๅฟ |
|---|---|---|---|---|
| ๅนถๅ่ฟๆฅๆฐ | 10,000+ | 50,000+ | ~1,000 | IOCP ไผๅ |
| ๅ ๅญๅ ็จ | ~30MB | ~60MB | ~50MB | ่ฝป้็บง |
| ๅฏๅจๆถ้ด | ~50ms | ~200ms | ~100ms | ๅฟซ้ๅฏๅจ |
| ้ๆๆไปถ | ่ชๅจ็ผๅญ | ไธญ้ดไปถ็ผๅญ | ๆ ็ผๅญ | ๅ ็ฝฎ็ผๅญ |
| ไพ่ต้กน | ๆๅฐ | ่พๅค | ็ณป็ป็ปไปถ | ่ฝปไพ่ต |
| ็นๆง | SAEA.Http | Kestrel | HttpListener |
|---|---|---|---|
| IOCP ๆฏๆ | โ | โ | โ |
| ้ๆๆไปถ็ผๅญ | โ | ้ไธญ้ดไปถ | โ |
| GZIP ๅ็ผฉ | โ | ้ไธญ้ดไปถ | โ |
| Session ็ฎก็ | โ | ้ไธญ้ดไปถ | โ |
| ๆไปถไธไผ ่งฃๆ | โ | ้่งฃๆ | ๆๅจ่งฃๆ |
| SSE ๆจ้ | โ | โ | โ |
| ่ทจๅนณๅฐ | Windows ไผๅ | โ | Windows only |
๐ก ๆ็คบ: SAEA.Http ้ๅ้่ฆ่ฝป้็บงใ้ซๆง่ฝ HTTP ๆๅก็ๅบๆฏ๏ผ็นๅซ้ๅๅตๅ ฅๅผใๆธธๆๅ็ซฏใIoT ็ญๅฏน่ตๆบๆๆ็ๅบ็จใ
A: SAEA.Http ๆฏไธไธช่ฝป้็บง็ HTTP ๆๅกๅจ็ปไปถ๏ผ
A: SAEA.Http ๅ
็ฝฎ CORS ๆฏๆ๏ผๅจ OnRequestDelegate ไธญๅค็๏ผ
server.OnRequestDelegate += (ctx) =>
{
ctx.Response.Headers["Access-Control-Allow-Origin"] = "*";
ctx.Response.Headers["Access-Control-Allow-Methods"] = "GET,POST,PUT,DELETE";
ctx.Response.Headers["Access-Control-Allow-Headers"] = "Content-Type";
if (ctx.Request.Method == "OPTIONS")
{
ctx.Response.SetContent("", "text/plain");
return true;
}
// ... ๅ
ถไปๅค็
return false;
};
A: ไฝฟ็จๆตๅผๅค็้ฟๅ ๅ ๅญๆบขๅบ๏ผ
server.OnRequestDelegate += (ctx) =>
{
var files = ctx.Request.PostFiles;
foreach (var file in files)
{
var savePath = Path.Combine("uploads", file.FileName);
File.WriteAllBytes(savePath, file.Data);
}
ctx.Response.SetContent("{\"uploaded\": true}", "application/json");
return true;
};
A: ๅจ WebConfig ไธญ้
็ฝฎ๏ผ
var config = new WebConfig
{
Port = 28080,
IsZiped = true // ๅฏ็จ GZIP ๅ็ผฉ
};
var server = new WebHost(config);
A: ไฝฟ็จ HttpSessionManager ่ชๅฎไน้
็ฝฎ๏ผ
// Session ้ป่ฎค่ถ
ๆถ 20 ๅ้
// ๅฏ้่ฟ HttpSessionManager ่ฐๆด
var session = ctx.Session; // ่ชๅจ่ทๅๆๅๅปบ Session
session["key"] = "value"; // ่ฎพ็ฝฎๅผ
A: ไฝฟ็จ text/event-stream ๅ
ๅฎน็ฑปๅ๏ผ
server.OnRequestDelegate += (ctx) =>
{
ctx.Response.ContentType = "text/event-stream";
ctx.Response.SendHeader();
for (int i = 0; i < 10; i++)
{
ctx.Response.SendData($"data: Message {i}\n\n");
Thread.Sleep(1000);
}
ctx.Response.SendEnd();
return true;
};
A: SAEA.Http ่ชๅจๅค็้ๆๆไปถ็ผๅญ๏ผ
Cache-ControlใLast-Modified ๅคดIf-Modified-Since ๆกไปถ่ฏทๆฑWebConfig.IsStaticsCached ๆงๅถๅผๅ
ณ| ็ฑปๅ | ่ฏดๆ |
|---|---|
WebHost |
HTTP ๆๅกๅจๅ ฅๅฃ็ฑป |
HttpRequest |
HTTP ่ฏทๆฑๅฐ่ฃ ๏ผๆนๆณใURLใHeadersใForms ็ญ๏ผ |
HttpResponse |
HTTP ๅๅบๅฐ่ฃ ๏ผ็ถๆ็ ใHeadersใๅ ๅฎน็ญ๏ผ |
HttpContext |
HTTP ไธไธๆ๏ผRequest/Response/Session๏ผ |
HttpSession |
HTTP ไผ่ฏ็ฎก็ |
HttpSessionManager |
ไผ่ฏ็ฎก็ๅจ |
HttpCookie / HttpCookies |
Cookie ็ฎก็ |
WebConfig |
Web ๆๅกๅจ้ ็ฝฎ |
HttpCoder |
HTTP ๅ่ฎฎ็ผ/่งฃ็ ๅจ |
RequestDataReader |
HTTP ่ฏทๆฑ่งฃๆๅจ |
| ็ฑปๅ | ่ฏดๆ |
|---|---|
HttpContentResult |
ๆๆฌ/JSON ๅ ๅฎน็ปๆ |
HttpFileResult |
ๆไปถ็ปๆ |
HttpBigDataResult |
ๅคงๆฐๆฎๆตๅผ็ปๆ |
HttpEmptyResult |
็ฉบ็ปๆ |
HttpActionResult |
ๆไฝ็ปๆ |
using SAEA.Http;
var config = new WebConfig
{
Root = "wwwroot",
Port = 28080,
BufferSize = 1024 * 64,
MaxConnects = 1000,
IsStaticsCached = true,
IsZiped = true
};
var server = new WebHost(config);
server.OnRequestDelegate += (ctx) =>
{
if (ctx.Request.Url.StartsWith("/api/"))
{
var json = $"{{\"time\": \"{DateTime.Now}\"}}";
ctx.Response.SetContent(json, "application/json");
return true;
}
return false;
};
server.OnException += (ctx, ex) =>
{
Console.WriteLine($"้่ฏฏ: {ex.Message}");
};
server.Start();
Console.WriteLine($"HTTP ๆๅกๅจๅทฒๅฏๅจ๏ผ็ซฏๅฃ: {config.Port}");
server.OnRequestDelegate += (ctx) =>
{
var request = ctx.Request;
Console.WriteLine($"GET {request.Url}");
Console.WriteLine($"Query: {request.Query["id"]}");
Console.WriteLine($"Headers: {request.Headers["User-Agent"]}");
ctx.Response.SetContent("{\"status\": \"ok\"}", "application/json");
return true;
};
server.OnRequestDelegate += (ctx) =>
{
var request = ctx.Request;
if (request.Method == "POST")
{
var username = request.Forms["username"];
var password = request.Forms["password"];
var jsonBody = request.Json;
var files = request.PostFiles;
foreach (var file in files)
{
Console.WriteLine($"ๆไปถ: {file.FileName}, ๅคงๅฐ: {file.Data.Length}");
}
ctx.Response.SetContent("{\"success\": true}", "application/json");
return true;
}
return false;
};
server.OnRequestDelegate += (ctx) =>
{
var session = ctx.Session;
var userId = session["UserId"];
session["UserId"] = "12345";
session["LoginTime"] = DateTime.Now.ToString();
ctx.Response.SetContent($"Session ID: {session.SessionID}");
return true;
};
server.OnRequestDelegate += (ctx) =>
{
var request = ctx.Request;
var response = ctx.Response;
var token = request.Cookies["token"];
response.Cookies.Add(new HttpCookie
{
Name = "token",
Value = "abc123",
Expires = DateTime.Now.AddDays(7)
});
ctx.Response.SetContent("Cookie ๅทฒ่ฎพ็ฝฎ");
return true;
};
server.OnRequestDelegate += (ctx) =>
{
var filePath = ctx.Server.MapPath("/files/document.pdf");
ctx.Response.SetCached(filePath);
return true;
};
server.OnRequestDelegate += (ctx) =>
{
var filePath = ctx.Server.MapPath("/videos/movie.mp4");
ctx.Response.ContentType = "video/mp4";
ctx.Response.SendHeader();
using (var fs = new FileStream(filePath, FileMode.Open))
{
var buffer = new byte[1024 * 64];
int read;
while ((read = fs.Read(buffer, 0, buffer.Length)) > 0)
{
ctx.Response.SendData(buffer, 0, read);
}
}
ctx.Response.SendEnd();
return true;
};
server.OnRequestDelegate += (ctx) =>
{
ctx.Response.ContentType = "text/event-stream";
ctx.Response.SendHeader();
for (int i = 0; i < 10; i++)
{
ctx.Response.SendData($"data: Message {i}\n\n");
Thread.Sleep(1000);
}
ctx.Response.SendEnd();
return true;
};
var config = new WebConfig
{
Root = "wwwroot", // ็ฝ็ซๆ น็ฎๅฝ
Port = 28080, // ็ๅฌ็ซฏๅฃ
BufferSize = 1024 * 64, // ็ผๅฒๅบๅคงๅฐ๏ผ64KB๏ผ
MaxConnects = 1000, // ๆๅคง่ฟๆฅๆฐ
IsStaticsCached = true, // ้ๆๆไปถ็ผๅญ
IsZiped = false, // GZIP ๅ็ผฉ
ConnectTimeout = 6000 // ่ฟๆฅ่ถ
ๆถ๏ผๆฏซ็ง๏ผ
};
| ๅ ๅ | ็ๆฌ | ่ฏดๆ |
|---|---|---|
| SAEA.Sockets | 7.26.2.2 | IOCP ้ไฟกๆกๆถ |
| SAEA.Common | 7.26.2.2 | ๅ ฌๅ ฑๅทฅๅ ท็ฑป |
Apache License 2.0
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 was computed. net5.0-windows net5.0-windows was computed. net6.0 net6.0 was computed. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 was computed. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 was computed. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 was computed. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 netcoreapp2.0 was computed. netcoreapp2.1 netcoreapp2.1 was computed. netcoreapp2.2 netcoreapp2.2 was computed. netcoreapp3.0 netcoreapp3.0 was computed. netcoreapp3.1 netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 netstandard2.0 is compatible. netstandard2.1 netstandard2.1 was computed. |
| .NET Framework | net461 net461 was computed. net462 net462 was computed. net463 net463 was computed. net47 net47 was computed. net471 net471 was computed. net472 net472 was computed. net48 net48 was computed. net481 net481 was computed. |
| MonoAndroid | monoandroid monoandroid was computed. |
| MonoMac | monomac monomac was computed. |
| MonoTouch | monotouch monotouch was computed. |
| Tizen | tizen40 tizen40 was computed. tizen60 tizen60 was computed. |
| Xamarin.iOS | xamarinios xamarinios was computed. |
| Xamarin.Mac | xamarinmac xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos xamarinwatchos was computed. |
Showing the top 2 NuGet packages that depend on SAEA.Http:
| Package | Downloads |
|---|---|
|
SAEA.MVC
This is a web component based on SAEA.Sockets. It is lightweight, high performance, easy to use and self hosting. ่ฟๆฏไธไธชๅบไบSAEA.Sockets็web็ปไปถ๏ผ่ฝป้้ซๆง่ฝ๏ผไฝฟ็จ็ฎไพฟ๏ผ่ชๅฎฟไธปใhttps://github.com/yswenli/SAEA/tree/master/Src/SAEA.MVCTestใ |
|
|
KissFramework
This is a most simple and stupid server framework commponent include WebSocket/Socket/HTTP/MySQL, base on rule of 'Keep It Simple,Stupid'. All your logic work in A single main thread, you don't need to worry about multi-threading problem. All the heavy work process by framework in background threads. Easy to use database even never hear about SQL. You won't use the SQL knowledge, just need define the struct of database table, and then can use that data and it will automatically synchronize data with client and database. ่ฟๆฏไธไธชๆ็ฎๆดๆ็จ็IOCPๆๅกๅจๆกๆถ,ๅ ๅซWebSocket/Socket/HTTP/MySQL,ๅบไบ'Keep It Simple,Stupid'่ฎพ่ฎกๅๅ.็จๆท้ป่พๅ็บฟ็จ,ๅๅฐๆฐๆฎๅบๅค็บฟ็จ,้ขๅๅฏน่ฑก,ๆไฝๆ็ฎ,ๅ ๅซWebSocket/Socket/HTTP/MySQL,ไฝ ไธไผ็จๅฐSQL็,ๅช้ๅฎไนๆฐๆฎๅบ่กจ็ปๆ,ๅณๅฏไฝฟ็จๆฐๆฎไธ่ชๅจๅๅฎขๆท็ซฏๅๆฐๆฎๅบไธ่ ้ดๅๆญฅๆฐๆฎ. |
Showing the top 1 popular GitHub repositories that depend on SAEA.Http:
| Repository | Stars |
|---|---|
|
yswenli/GFF
GFF is a imitation QQ communication project, based on high IOCP. GFFๆฏๆจกไปฟQQ้่ฎฏ้กน็ฎ๏ผ้ไฟกๅบไบSAEA.MessageSocketใSAEA.HttpใSAEA.MVCๅฎ็ฐ
|
| Version | Downloads | Last Updated |
|---|---|---|
| 26.4.23.1 | 191 | 4/23/2026 |
| 26.4.22.1 | 154 | 4/21/2026 |
| 7.26.4.21 | 156 | 4/20/2026 |
| 7.26.4.20 | 147 | 4/20/2026 |
| 7.26.2.2 | 182 | 2/2/2026 |
| 7.26.1.27 | 161 | 1/27/2026 |
| 7.26.1.25 | 168 | 1/25/2026 |
| 7.25.2.19 | 621 | 2/19/2025 |
| 7.25.2.18 | 260 | 2/18/2025 |
| 7.25.2.13 | 274 | 2/13/2025 |
| 7.25.2.11 | 299 | 2/11/2025 |
| 7.24.8.4 | 256 | 8/4/2024 |
| 7.23.9.24 | 596 | 9/24/2023 |
| 7.0.3.19 | 639 | 3/19/2023 |
| 7.0.0.3 | 4,064 | 2/27/2022 |
| 7.0.0.2 | 752 | 12/5/2021 |
| 7.0.0.1 | 668 | 11/28/2021 |
| 6.2.6.7 | 1,149 | 9/19/2021 |
| 6.2.6.6 | 822 | 8/15/2021 |
| 6.2.6.5 | 707 | 8/10/2021 |
This is a web component based on SAEA.Sockets. It is lightweight, high performance, easy to use and self hosting.
่ฟๆฏไธไธชๅบไบSAEA.Sockets็web็ปไปถ๏ผ่ฝป้้ซๆง่ฝ๏ผไฝฟ็จ็ฎไพฟ๏ผ่ชๅฎฟไธปใhttps://github.com/yswenli/SAEA/tree/master/Src/SAEA.HttpTestใ