随笔分类 - net / webapi
摘要:耗时很长的请求怎么处理?比如数据量大的。业务逻辑处理时间太久,以至于响应超时 这里的超时响应指的是ReadTimeOut,即发送请求内容完毕到接收响应数据开始的这段时间。普通HTTP请求可能在这段时间没有响应超时。 HTTP分块传输(Chunked Transfer Encoding)中每个数据块的
阅读全文
摘要:软件构成 后端 后端是一个asp.netcore webapi项目,使用jwt进行身份验证和鉴权。 前端 前端是一个基于http协议的asp.netcore RezorPage项目,但实际上完全使用的wwwwroot目录下的静态文件。没有使用RazorPage。 目前只有后端接口鉴权,前端页面任意访
阅读全文
摘要:ILogger简单使用 asp.net core的webApplicationBuilder中自带了一个日志组件。无需手动注册服务就能直接在控制器中构造注入。 public HomeController(ILogger<HomeController> logger) { _logger = logg
阅读全文
摘要:易混淆概念辨析 在不同的上下文中,“Redis中间件”可以有不同的含义,这可能导致一些混淆。让我们来分解一下: Web中间件与消息中间件的区别: Web中间件:在ASP.NET Core(或类似框架)中,中间件是指处理HTTP请求管道的组件,例如处理请求、认证、日志记录等。这些中间件按顺序构成一个请
阅读全文
摘要:
我比较好奇的是webapi服务器怎么处理http请求和websocket请求。有了上一篇番外的研究,这里就可以试着自己写个非常简易的webapi服务器来接收这两种请求。 效果 http请求 消息打印 响应解析 websocket请求 消息打印 使用聊天室测试 其实两种请求差不多,就只是一些头部字段有
阅读全文

摘要:
上一篇我已经实现了聊天室,并且在协议中实现了4种类型的消息传输。其实还可以添加video,audio,live等等类型。 不过假如把目前的协议看作RCP1.0版的话,这个版本就只支持有限的4种消息。精力有限啊。也许RCP2.0就可以把video,audio类型加进去? 这不是这篇番外考虑的。而是我在
阅读全文

摘要:
上一篇实现了多聊天室。这一片要继续改进的是实现收发文件,以及图片显示。 效果 问题 websocket本身就是二进制传输。文件刚好也是二进制存储的。 文件本身的传输问题不太,但是需要传输文件元数据,比如文件名和扩展名之类的。这很必要,如果我们想知道怎么展示这个文件的话。比如这个文件是图片还是word
阅读全文

摘要:上一篇处理了超长消息的问题。我们的应用到目前为止还是单聊天室,这一篇就要处理的多聊天室的问题。 思路 第一个问题,怎么访问不同聊天室 这个可以采用路由参数来解决。我把路由设计成这样/chat/{room}。访问不同路径就代表进入不同聊天室。 第二个问题,怎么创建不同的聊天室 原来的聊天室是单例注入到
阅读全文
摘要:上一篇 - 基于webapi的websocket聊天室(一) 消息超传缓冲区的问题 在上一篇中我们定义了一个聊天室WebSocketChatRoom。但是每个游客只分配了400个字节的发言缓冲区,大概100字。 如果需要发送更多内容呢?难道直接增大缓冲区? 这是一个办法。但还有其他办法。 多次接受消
阅读全文
摘要:上一次我已经讲了在webapi主机上面加入websocket中间件。 这次就更进一步,搭建一个websocket局域网聊天室。 传送门-->webapi添加添加websocket中间件 下一篇 - 基于webapi的websocket聊天室(二) 聊天室 websocket通信其实和win32api
阅读全文
摘要:添加位置 我按照MSDN的例子添加了一个复述客户端响应的中间件。需要注意的时,中间件采用那种方式添加,添加在哪。 哪种方式 我选择创建一条管道分支,只要时ws的连接请求,就转到这个分支 因此,我们需要使用的是MapWhen()来创建管道分支。 添加在哪 要注意授权的问题,所以应该添加到授权中间件之后
阅读全文
摘要:最小webapi 最小webapi默认的中间件配置是这样的 app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run(); 最小webapi没有使用app.UseRouting()和app.Use
阅读全文
摘要:我们平常开发一般只使用GET、POST方法。而对于HTTP给出的PUT、DELETE等其他方法都没使用。以RESTful风格设计接口就能全部用上这些方法。 按照RESTful理查德森成熟度模型改造接口 这个模型跟数据库范式等级相似,都是一层一层满足。我们的mvc接口不好说是哪一级,一般都是每个操作一
阅读全文
摘要:首先需要引入soapcore包 这个包提供了所需的类和soap终结点中间件。 引入这个这个包之后,我们需要定义提供的服务。 这里我写了一个用于查询省份面积的服务。 省份信息服务 /// <summary> /// 省份信息服务接口 /// </summary> [ServiceContract] p
阅读全文
摘要:app.UseAuthentication(); 这个中间件添加后,他会为HttpContext.User设置一个ClaimsPrincipal对象。里面有身份认证token里面携带的信息。 其访问方式如下 HttpContext.User.FindFirstValue("自定义字段") 我们可以创
阅读全文
摘要:HTTP身份认证框架 RFC 7235 定义了一个 HTTP 身份验证框架,服务器可以用来质询(challenge)客户端的请求,客户端则可以提供身份验证凭据。 服务端开启了身份认证后。如果客户端访问未授权的接口,服务器端会向客户端返回 401(Unauthorized,未被授权的)响应状态码,并在
阅读全文
摘要:很多时候我们都会使用后台定时任务,但有些任务不需要定时执行,只需要请求到来时执行一次,比如请求服务器到某个地方同步数据,但请求不需要等数据同步完成再响应。这时候就可以使用排队的后台任务。 基本原理是用一个队列保存任务委托,然后用一个后台定时任务依次执行队列中的委托。 MSDN上把源代码都写好了 1
阅读全文