一、说明
有小伙伴提问,c#有没有轻量级的Http服务器,因为直接部署Asp.net Core的话,有点太大了。而且,学习成本也高。
我说,微软不是有HttpListener吗?
他说不好用。
好吧。。。。
在这里推荐TouchSocket,这是一个开源的,轻量级,高性能的Http组件。支持Ssl和多通道的文件传输。
二、程序集源码
2.1 源码位置
2.2 说明文档
三、安装
Nuget安装TouchSocket
即可,具体步骤详看链接博客。
四、创建服务器
服务器的创建非常简单,设置好需要监听的地址即可。
var service = new HttpService();
service.Setup(new TouchSocketConfig()//加载配置
.SetListenIPHosts(7789)
.ConfigureContainer(a =>
{
a.AddConsoleLogger();
})
.ConfigurePlugins(a =>
{
//以下即是插件
a.Add<MyHttpPlug1>();
a.Add<MyHttpPlug2>();
a.Add<MyHttpPlug3>();
a.Add<MyHttpPlug4>();
//default插件应该最后添加,其作用是
//1、为找不到的路由返回404
//2、处理header为Option的探视跨域请求。
a.UseDefaultHttpServicePlugin();
}))
.Start();
【处理请求】
HttpService处理请求的方式,主要是通过插件实现的。
例如:下列示例的插件。就会处理url为“/success”的请求。同时,还能获得相关参数。
public class MyHttpPlug1 : PluginBase, IHttpPlugin<IHttpSocketClient>
{
public async Task OnHttpRequest(IHttpSocketClient client, HttpContextEventArgs e)
{
if (e.Context.Request.IsGet())
{
if (e.Context.Request.UrlEquals("/success"))
{
//直接响应文字
e.Context.Response.FromText("Success").Answer();//直接回应
Console.WriteLine("处理完毕");
return;
}
}
//无法处理,调用下一个插件
await e.InvokeNext();
}
}
实际上,该Http组件,还能更加简单的支持WebSocket,XmlRpc,JsonRpc等内容。更多使用技巧,大家可以从说明文档获得。