Python微信订餐小程序课程视频
https://edu.csdn.net/course/detail/36074
Python实战量化交易理财系统
https://edu.csdn.net/course/detail/35475
《注册监听终结点(Endpoint)》已经详细讲述了如何使用KestrelServer,现在我们来简单聊聊这种处理器的总体设计和实现原理。当KestrelServer启动的时候,注册的每个终结点将转换成对应的“连接监听器”,后者在监听到初始请求时会创建“连接”,请求的接收和响应的回复都在这个连接中完成。本文提供的示例演示已经同步到《ASP.NET Core 6框架揭秘-实例演示版》)
一、连接上下文(ConnectionContext )
监听器创建的连接时一个抽象的概念,我们可以将其视为客户端和服务端完成消息交换而构建的“上下文”,该上下文通过如下这个ConnectionContext类型表示。ConnectionContext派生于抽象基类BaseConnectionContext,后者实现了IAsyncDisposable接口。每个连接具有一个通过ConnectionId属性表示的ID,它的LocalEndPoint和RemoteEndPoint属性返回本地(服务端)和远程(客户端)终结点。服务器提供的特性集合体现在它的Features属性上,另一个Items提供了一个存放任意属性的字典。ConnectionClosed属性提供的CancellationToken可以用来接收连接关闭的通知。Abort方法可以中断当前连接,这两个方法在ConnectionContext被重写。ConnectionContext类型的Transport属性提供的IDuplexPipe对象是用来对请求和响应进行读写的双向管道。
public abstract class ConnectionContext : BaseConnectionContext
{
public abstract IDuplexPipe Transport { get; set; }
public override void Abort(ConnectionAbortedException abortReason);
public override void Abort();
}
public abstract class BaseConnectionContext : IAsyncDisposable
{
public virtual EndPoint? LocalEndPoint { get; set; }
public virtual EndPoint? RemoteEndPoint { get; set; }
public abstract string ConnectionId { get; set; }
public abstract IFeatureCollection Features { get; }
public abstract IDictionary<object, object?> Items { get; set; }
public virtual CancellationToken ConnectionClosed { get; set; }
public abstract void Abort();
public abstract void Abort(ConnectionAbortedException abortReason);