KestrelServer详解[2]: 网络连接的创建

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);
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值