跳到主要内容
版本:3.0

历史更新

TouchSocket 框架升级/发版规则

升级前重点关注可能造成【破坏性】的标签类型

版本号规则:主版本号.次版本号.修订版本号

  • 只要【确认】为框架 bug,则当天修复,当天发版,修订版本号 加 1
  • 如果 .csproj 文件有变更,则当天发版,修订版本号 加 1
  • 其余情况,每年发布一个 主版本,发布时间跟随Dotnet的发布时间。

v3.0.3

更新日期: 2024.11.17

更新描述:

兼容性修复升级。

更新详情:

  •   WaitingClient在收到ResponsedData数据时,优先建议使用ByteBlock,在高效场景中代替原Data属性。

v3.0.2

更新日期: 2024.11.15

更新描述:

兼容性修复升级。

更新详情:

  •   串口的发送与接收无法通过插件获取到原始数据。#IB4NF4

v3.0.0(1)

更新日期: 2024.11.13

更新描述:

大版本升级,有部分不兼容性升级。所以请在升级前做好备份,同时在升级之后,请务必阅读v3.0升级指南

本次改动在运行时完全兼容v2.1,所以客户端和服务器可以差异版本更新。

更新详情:

【SDK】

  •   新增net9.0支持。
  •   移除net7.0支持,但是不影响net7.0使用,因为最低到net6.0的支持。

【TouchSocket.Core】

  •   Plugin组件默认支持AOT,不再借助委托实现。
  •   AppMessenger组件默认支持AOT
  •   DependencyObject类使用“懒汉式”加载内部成员,减少内存使用。
  •   PluginManager支持在运行时移除插件。
  •   Method类,在方法、或类添加[DynamicMethod]特性时,默认支持AOT,为动态调用提供极大方便。

【TouchSocket.Core.DependencyInjection】

  •   AspNetCoreContainer不支持KeysService的bug。

【TouchSocket.Sockets】

  •   IReceiver在启用缓存模式时,如果已经完成接收,则会抛出异常的bug。 #IB44LL

【TouchSocket.Http】

  •   HttpRequest在请求时,不用传参,直接使用默认构造函数即可。
  •   GetMultifileCollection相关扩展方法,使用GetFormCollectionAsync代替。

【TouchSocket.Rpc】

  •   ICallContext继承IDependencyObject,支持扩展属性读写,可以更方便的开发。
  •   Rpc特性取消构造函数入参,使用属性设置。受影响的有:DmtpRpcJsonRpcXmlRpcWebApi

【TouchSocket.Dmtp】

  •   DmtpRpcAvalonia-Web工作时,连接时间超长的bug。
  •   IWebSocketDmtpClient不实现IDmtpClient的bug。
  •   DmtpHeartbeatPlugin在长时间运行时,可能会失效的bug。
  •   [DmtpRpc]特性不再允许继承,所有设置也是通过属性设置。

【TouchSocket.JsonRpc】

  •   [JsonRpc]特性不再允许继承,所有设置也是通过属性设置。

【TouchSocket.WebApi】

  •   [FromBody]特性,支持指定参数来源自Http的请求Body。
  •   [FromForm]特性,支持指定参数来源自Http的请求Form表单。
  •   [FromHeader]特性,支持指定参数来源自Http的请求Header。
  •   [FromQuery]特性,支持指定参数来源自Http的请求Query。
  •   [WebApi]特性不再允许继承,所有设置也是通过属性设置。
  •   WebApi的请求方式,目前全部使用WebApiRequest类来表示全部入参,一般如果使用代理,或者源生成的话,只需要重新生成即可。
  •   HttpMethodType.GET枚举,使用HttpMethodType.Get代替。
  •   HttpMethodType.POST枚举,使用HttpMethodType.Post代替。

【TouchSocket.XmlRpc】

  •   [XmlRpc]特性不再允许继承,所有设置也是通过属性设置。

v2.1.10

更新日期: 2024.10.25

更新描述:

兼容性修复升级。

更新详情:

  •   CheckClearPlugin插件频繁输出poll日志的不合理设计。

v2.1.9

更新日期: 2024.10.14

更新描述:

兼容性修复升级。

更新详情:

  •   CheckClearPlugin长时间工作时可能失效的bug。

v2.1.8

更新日期: 2024.10.11

更新描述:

兼容性修复升级。

更新详情:

  •   TcpService在Stop的时候,有个内部异常打了log。 #IAWD4N

v2.1.7

更新日期: 2024.10.5

更新描述:

兼容性修复升级。

更新详情:

  •   TcpService在启动时如果异常,则无法再重新启动的bug。

v2.1.6

更新日期: 2024.10.1

更新描述:

兼容性修复升级。

更新详情:

  •   HttpContent机制,能上传超大数据。
  •   StreamHttpContent,能上传流数据,例如:文件流。
  •   Task内部异常时没有及时try,导致全局捕获时有无用捕获。
  •   TcpServiceBase在调用StopAsync时,IServerStopedPlugin插件无法触发的bug。
  •   TriggerQueue无用类。
  •   HttpRequest,使其能上传超大数据。

v2.1.4(5)

更新日期: 2024.9.23

更新描述:

兼容性修复升级。

更新详情:

  •   DmtpRpc恢复性新增Xml序列化。
  •   使用源生成(IPackage)打包时报错。#IASTWJ
  •   Result泛型类中隐式转换错写成显示转换的bug。
  •   DmtpRpc序列化选择器没有预留Json序列化配置的bug。

v2.1.3

更新日期: 2024.9.22

更新描述:

兼容性修复升级。

更新详情:

  •   部分类,方法注释。
  •   多数英文字符串资源。
  •   Tcp、NamedPipe、SerialPort等组件在主动调用Close时,ClosedEventArgs参数属性Manual为false的bug,导致重连插件偶发性再次连接。#IASH1A
  •   ByteBlock类部分bug。
  •   DecimalConver类,该类功能已完全由TouchSocketBitConverter代替,属于无用类。
  •   受保护方法ProtectedResetId方法,名称更改为ProtectedResetIdAsync

v2.1.2

更新日期: 2024.9.19

更新描述:

兼容性修复升级。

更新详情:

  •   部分类,方法注释。
  •   TcpClient在释放时,重连插件会无限连接的bug,该bug会导致CPU占用过高。#IAS9NG

v2.1.1

更新日期: 2024.9.18

更新描述:

兼容性修复升级。

更新详情:

  •  MemoryCache中实现新的TryGetValue方法。
  •   密封CacheEntry类并优化缓存管理逻辑。
  •   扩展PackageExtensions类,增加泛型方法以提高可读性和可重用性。
  •   优化HttpStaticPagePlugin构造函数和StaticPageOptions类以简化静态页面配置。
  •  FastBinaryFormatter中改进序列化逻辑,特别是对于多维数组的处理。 #IARKE1
  •  IPackage中改进打包、解包逻辑,特别是对于多维数组的处理。

v2.1.0

更新日期: 2024.9.15

更新描述:

大版本升级,有部分不兼容性升级。所以请在升级前做好备份,同时在升级之后,请务必阅读v2.1升级指南

更新亮点:

本次更新,主要有以下亮点:

  1. 全系支持Span、ValueTask、Memory、Unsafe等依赖。大幅提升并发性能与低GC能力。
  2. 全系组件,尽量多的提供了异步Api,大幅度提升并发能力。
  3. 重构fast序列化,Package包模式、Http、WebSocket等组件,使之更加易用。
  4. 资源国际化。本次更新会在内部使用中英双语信息提示,这在日志记录,堆栈跟踪等场景更加符合区域化。
  5. 增加完整注释。基本上能达到95%的代码注释率。

更新详情:

【TouchSokcet.Core】

  •   TouchSocketBitConverter新增To、UnsafeTo、WriteBytes、UnsafeWriteBytes等可以直接操作Span。
  •   Crc类新增Span相关转换。
  •   CustomDataHandlingAdapter新增bool TryParseRequest(ref TByteBlock byteBlock, out TRequest request)方法,可以同步完成适配器数据解析。
  •   SingleStreamDataAdapterTester泛型测试器,可以对TryParseRequest进行完整性测试。
  •   IPackage源生成器新增自定义PackageMember特性,用来定义打包的顺序和自定义转换器。
  •   SetupConfigObject的SetupAsync。
  •   CustomDataHandlingAdapter支持结构体作为泛型类型。
  •   Fast序列化支持自定义FastSerializerContext,这可以极大的利用源生成来决定序列化和反序列化。
  •   分离MemoryCache的同步和异步接口。
  •   ByteBlock取消Stream的继承,如果需要使用Stream,可以使用ByteBlock.AsStream()。
  •   Gzip类调整ByteBlock参数为Stream。
  •   CustomDataHandlingAdapter解析的数据,均会以ReadonlySpan的形式投递。
  •   IPackage接口,使之既可以在ByteBlock工作,也可以在ValueByteBlock工作。
  •   PluginManager使用接口作为唯一键,规定一个接口中有且仅有一个方法。
  •   ByteBlock、ValueByteBlock均继承IByteBlock接口规范。
  •   ByteBlock、ValueByteBlock移除Buffer属性,如果想获取有效数据,可以通过Memory、Span等获取,如果想获取容量可以使用TotalMemory属性。

【TouchSokcet.Sockets】

  •   Tcp、Udp组件,默认情况下适配器将为null,并且可以正常工作。
  •   SocketClient、ISocketClient等服务器辅助类,改名为TcpSessionClient和ITcpSessionClient。

:::

v2.0.18

更新日期: 2024.9.10

更新描述:

兼容性修复升级。

更新详情:

  •   当Cancel延迟到Reset之后时,新获取的waitData会出现Status为Cancel异常bug #IAQ2AI

v2.0.17

更新日期: 2024.8.30

更新描述:

兼容性修复升级。

更新详情:

  •   使用AspNetCore容器时,默认没有注册ILog的bug。

v2.0.16

更新日期: 2024.8.19

更新描述:

兼容性修复升级。

更新详情:

  •   tcp在winform中会使用主线程接收的bug,导致各种同步接收异常。

v2.0.15

更新日期: 2024.8.9

更新描述:

兼容性修复升级。

更新详情:

  •   当客户端断开连接时,http响应会出现object is null的bug提示。

v2.0.13(14)

更新日期: 2024.7.24

更新描述:

兼容性修复升级。

更新详情:

  •   重连插件在长时间运行时,会失效的bug。
  •   ssl加密下,连接响应时间过长bug#IAET6V

v2.0.12

更新日期: 2024.7.17

更新描述:

兼容性修复升级。

更新详情:

  •   socket在接收连接时,异常无法拦截的bug#IADIGX
  •   日志记录在执行时,先判断日志组件的可用性。

v2.0.11

更新日期: 2024.7.12

更新描述:

兼容性修复升级。

更新详情:

  •   Metadata在Add时不会覆盖原key的bug。

v2.0.10

更新日期: 2024.5.31

更新描述:

兼容性修复升级。

更新详情:

  •   WebSocket快捷命令行bug。 #I9TG3V

v2.0.9

更新日期: 2024.5.29

更新描述:

兼容性修复升级。

更新详情:

  •   UdpPackage适配器在工作时调时导致的bug。 #I9SYTR
  •   Http在GetBoundary时bug。 #I9PXWT

v2.0.(7)8

更新日期: 2024.5.17

更新描述:

兼容性修复升级。

更新详情:

  •   udp首次建立连接无法接收数据的bug。 #I9PV7C

v2.0.6

更新日期: 2024.5.12

更新描述:

兼容性修复升级。

更新详情:

  •   FlowGate的waitTime小于0时bug。

v2.0.5

更新日期: 2024.5.2

更新描述:

兼容性修复升级。

更新详情:

  •   wsclient Received事件与插件触发bug。#I9L9WI
  •   ws命令行执行bug。

v2.0.4

更新日期: 2024.4.30

更新描述:

兼容性修复升级。

更新详情:

  •   linux平台下,Socket吞吐量大幅降低。#I9KURV
  •   WebSocket在进行连接时,Host的Header写法错误,没有包含端口。#I9KUVI

v2.0.3

更新日期: 2024.4.14

更新描述:

兼容性修复升级。

更新详情:

  •   Tcp在接收时,内存池释放存在延迟,可能导致内存池快速扩张,浪费内存。#I9FVAA
  •   在使用Host模型时,注入瞬态的TcpClient,在第一次获取实例是正常的,第二次就失败。#I9G3SV
  •   WebSocketClient连接其他服务器时显示 “操作已被取消”。#I9GG05
  •   ConcurrentList新增实现IReadOnlyList接口。

v2.0.2

更新日期: 2024.4.1

更新描述:

兼容性修复升级。

更新详情:

  •   TouchSocketBitConverter中的ToBooleans方法存在Bug#I9C1UY
  •   SystemExtensions中的GetBit和SetBit方法#I9C1WM
  •   HttpService多次响应下载文件时,不会响应的bug。

v2.0.1

更新日期: 2024.3.16

更新描述:

兼容性修复升级。

更新详情:

  •   HttpClient,无法通过HttpResponse.GetBody()获取响应内容#I989SI
  •   SetNoDelay 异常#I979B0
  •   调用Dmtp服务的大数据传输时,如果循环调用会出现收到的数据和发送的数据不一致。实际上该问题是由ByteBlock写入扩容bug而导致的#I96FNF

v2.0.0

更新日期: 2024.3.9

更新描述:

此版本是大版本更新。可能会产生很多不兼容部分,所以升级之前请做好备份,并且请详细阅读下列更新内容。

升级指南:

  • 升级时请先升级至2.0.0-beta.190,再升级至2.0.0-rc.2版本,因为正式版对于[Obsolete]特性的成员直接删除了,所以为友好升级,请先升级至此版本。
  • 由2.0.0-beta.200至2.0.0-beta.220 #I8DE1D
  • 由2.0.0-beta.220至2.0.0-beta.230 #I8LAX4

更新详情:

【TouchSokcet.Core】

  •   FileLogger支持指定不同目录。
  •   所有自定义插件必须在自身内,主动调用e.InvokeNext()时,才会调用下一个插件。不然会中断插件传递。同时e.Handled功能依然有效。
  •   Log项。LogType调整为LogLevel,并且不需要位运算。直接按日志等级输出。
  •   修改IPluginsManager名称为IPluginsManager。
  •   DependencyProperty中,移除对类型的定义。
  •   所有组件的基础插件,强制用户插件必须继承PluginBase,然后实现需要的接口。
  •   BytePool在创建ByteBlock时,移除EqualSize的设定,因为这会影响内存池的效率。
  •   修改所有委托为异步Task。
  •   修改所有Setup返回值为void。
  •   Metadata在0个成员长度时,会被反序列化成null的bug。
  •   PluginsManager在注册具有继承的插件时,会无法识别的bug。

【TouchSokcet.Sokcets】

  •   IPHost支持从int、string直接隐式转换。
  •   TouchSocket所有“ID”属性,改名为“Id”。
  •   TouchSocket所有插件的执行顺序,移动至内部重写方法之后。
  •   TouchSocket所有ResetID改名为ResetId
  •   UseCheckClear项,SetDuration调整名称为SetTick。
  •   UseCheckClear项,不仅可以适用服务器,客户端也适用。
  •   Config配置中,SetDataHandlingAdapter调整为SetTcpDataHandlingAdapter。
  •   适配器项,CustomDataHandlingAdapter中的Filter方法中,byteBlock参数使用in修饰。
  •   适配器项,DataHandlingAdapter改名为TcpDataHandlingAdapter。
  •   适配器项,DataAdapterTester改名为TcpDataAdapterTester。
  •   Config项,所有适配器的相关配置,使用SetAdapterOption配置。
  •   UsePlugin的显式配置,当调用ConfigurePlugins时,会自动启用。

【TouchSokcet.Http】

  •   WSCommandLinePlugin改名为WebSocketCommandLinePlugin。
  •   WebSocket添加同步非阻塞Read
  •   WebSocket的WSDataFrame新增IsPing、IsPong、IsText、IsBinary、IsClose等属性。
  •   静态网页插件新增NavigateAction与ResponseAction等委托,可以在静态页面请求之前重定向,或者请求返回时设置header等。

【TouchSokcet.Rpc】

  •   整体功能迁移至TouchSokcet(Pro).Dmtp。
  •   RpcActionFilter执行策略和顺序
  •   修改ConfigureRpcStore为AddRpcStore。
  •   RealityProxy透明代理方式。
  •   DispatchProxy添加OnBefore和OnAfter的AOP调用。

【TouchSokcet(Pro).Dmtp】

  •   原TouchRpc全系改名为Dmtp。例如:原TcpTouchRpcClient改名为TcpDmtpClient。
  •   原TouchRpc中InvokeOption,改名为DmtpInvokeOption。InvokeOption依然有效,但是在调用DmtpRpc时,则无法指定序列化方式。所以可能需要使用DmtpInvokeOption。
  •   原TouchRpc中Invoke直接调用的方式,改为InvokeT。
  •   Dmtp相关配置,使用SetDmtpOption配置。
  •   暂时移除EventBus功能,后续可能考虑添加。
  •   ws协议的TouchRpc服务端,增加HttpContext上下文获取。
  •   文件传输项,开放增加SetMaxSpeed功能。
  •   DmtpRpc。
  •   DmtpRpc组件在调用时,可以通过DmtpInvokeOption传入Metadata元数据。
  •   DmtpRpc在调用无ref,out的函数时,参数会为null的bug。

【TouchSokcet.JsonRpc】

  •   JsonRpc使用内联数组调用#I79OFZ
  •   Rpc服务使用调用上下文时不需要再添加IncludeCallContext

【TouchSokcet.WebApi】

  •   WebApi新增Swagger页面
  •   Rpc服务使用调用上下文时不需要再添加IncludeCallContext

【TouchSokcet.XmlRpc】

  •   Rpc服务使用调用上下文时不需要再添加IncludeCallContext

【TouchSokcet(Pro).Hosting】

  •   新发布Hosting的包,用于构建更加强壮的运行程序。

【TouchSokcet.SerialPorts】

  •   新发布串口的包。

【TouchSokcet(Pro).Modbus】

  •   新发布Modbus的包,支持Tcp、Udp、Rtu、RtuOverTcp、RtuOverUdp协议的主站(Poll)和从站(Slave)。

v1.3

更新日期:2023.3.1

更新描述:兼容性更新。

  •   整体增加异步方法。
  •   Rpc源代码生成策略,支持接口实例并存。
  •   TcpClient在UseReconnect插件时,Disconnect事件不触发bug。
  •   ws协议的TouchRpc服务端,增加HttpContext上下文获取。

v1.2

更新日期:2023.2.15

更新描述:兼容性更新。

  •   TouchRpc支持命名元组。
  •   Rpc源代码生成策略。
  •   TouchRpc在Websocket协议下,启动,连接异常bug。
  •   TouchRpc在调用WaitSend下失败的bug。
  •   TouchRpc在Handshaked时,调用Rpc超时bug。
  •   序列化、反射在unity中使用il2cpp编译的bug。
  •   反序列化在初次加载时会失败的bug。
  •   BytePool没有公共构造函数的bug。
  •   ws协议的TouchRpc服务端,增加HttpContext上下文获取。
  •   ByteBlock对于int,long等数据,写入和读取的时候支持大小端指定。
  •   IServicePlugin插件,用于显示通知服务器的启动状态。
  •   Rpc支持接口特性标记。
  •   将BytePool由静态调整为实例,且由其Default实例作为默认。

v1.1

更新日期:2023.1.13

更新描述:小版本升级,可能会有不兼容。请按下列提示修改。

  •   TouchRpc系文件传输时,文件夹不存在的提示。
  •   WaitingClient,当客户端断开连接时,可选是否抛出异常。
  •   Fast序列化时。可选序列化只读属性。
  •   多个不稳定Bug。
  •   Tcp客户端新增Disconnecting事件。在主动Close时生效。
  •   多个事件类名称修改,请按照提示修改即可。
  •   多个无用方法参数。

v1.0.0

更新日期:2023.1.1

更新描述:大版本升级,请详细阅读下列更新日志。

  •   将最高版本升级为NET7。
  •   Tcp系异步发送效率。
  •   TouchRpc系Channel的稳健性。
  •   多个不稳定Bug。
  •   ValueByteBlock,在简单代码块里面能有效减少创建的类。
  •   MemoryCache类,其功能类似微软官方。但是支持全部泛型。
  •   IPackage系。该系列能以超高效率的进行二进制序列化。
  •   SingleTimer类,不可重入的Timer。
  •   Jsonrpc支持自定义适配器解析(EE)
  •   严重TouchRpc系OnRouting通知,所有的客户端之间的通信,都必须经过OnRouting的筛查。
  •   TouchRpc系小文件传输,在文件小于1Mb时,其传输效率是常规传输的10倍以上。
  •   TouchRpc系超大文件多链路传输,支持多个客户端协同传输同一个文件,这在互联网环境中,效率比常规传输提高类3-5倍。
  •   TouchRpc系Redis组件,能实现双端共同存储。
  •   严重精简所有命名空间,删除所有三级命名空间。例如:TouchSocket.Core.ByteManager精简为TouchSocket.Core。
  •   严重删除Newtonsoft.Json的源代码嵌入。全局的Json会根据环境动态调整,详情见Json工具
  •   严重框架默认日志由ConsoleLogger,替换为EmptyLogger(不输出任何东西)。
  •   严重Tcp全系,在连接时,ID的初始值使用long类型从0递增。
  •   严重Tcp服务器,将定时清理无数据交互的选项替换为UseCheckClear插件。并且默认没有启用,需要手动加入。
  •   Tcp系适配器,取消部分参数。
  •   DataLock改名为DataSecurity。
  •   EasyAction改名EasyTask。
  •   IMessage改名IMessageObject。
  •   TokenInstance改名MessageInstance。
  •   TouchRpc系,精简常规文件传输操作。
  •   严重TouchRpc系,所有插件通知参数,默认都设为不允许操作,需要手动设置e.IsPermitOperation=true。
  •   Newtonsoft.Json的源代码嵌入。全局的Json会根据环境动态调整,详情见Json工具

*** 更新示例指南 ***

(1)适配器参数报错:直接删除isAsync参数,以及isAsync为True的所有逻辑。 image.png (2)依赖属性的声明报错:增加泛型约束即可,详情查看依赖属性 image.png (3)服务端定时清理警告:在配置插件中使用UseCheckClear,并且进行相关配置。 image.png image.png


版本号: 0.7.0

更新日期:2022.9.21 更新描述:兼容性更新,增强型更新。RPC内容需要客户端与服务器同步更新。 更新详情:

优化

  1. Fast二进制序列化,支持自定义序列化。
  2. TouchRpc全系,在文件传输等大型IO时,由于心跳失败而断开连接。
  3. 优化AspNetCore的IContainer。
  4. TcpCommandLinePlugin与WSCommandLinePlugin支持获取客户端参数。

新增

  1. 插件实例会以单例注入容器。
  2. 所有适配器支持缓存超时设定。
  3. 修改所有事件为委托。
  4. 开放AspnetCore创建Tcp,Http等服务器的配置。
  5. IClient增加发送、接收的最后时间记录。
  6. Http支持多文件上传(目前仅支持小文件,具体大小以实际运行内存为准,实测100Mb没问题)。
  7. Websocket插件默认会处理Close报文。且插件支持Close。
  8. Rpc支持模板代码重写。
  9. TouchRpc支持元组。
  10. JsonRpc支持Websocket协议。

修改

  1. IScopedContainer修改为IContainerProvider

修复

  1. BytePool回收内存时不判断大小的bug。

删除

  1. 无。

版本号: 0.6.0

更新日期:2022.9.10 更新描述:兼容性更新,增强型更新。专为Unity 3D适配。 更新详情:

优化

  1. Gzip的压缩效率。
  2. 发送效率。

新增

  1. IDataCompressor数据传输压缩接口。
  2. RemoteStream支持数据读写压缩。
  3. WaitResultPackageBase类,专属非序列化的数据格式化。
  4. DelaySender延迟缓存发送

修改

修复

  1. Rpc注册服务为单例时,实际上是瞬时服务的bug。

删除

  1. 独立线程发送。

版本号: 0.5.0

更新日期:2022.9.1 更新描述:兼容性更新,增强型更新。 更新详情:

优化

  1. 全局资源的获取逻辑。

新增

  1. Container增加卸载注册功能。
  2. FilePool新增FileStorageStream的获取。
  3. http客户端(及websocket)支持代理和验证代理。
  4. TouchRpc全系新增远程文件操作
  5. TouchRpc(除udp)新增远程流访问

修改

修复

  1. 修复Http客户端请求重复Header时的bug。

删除

  1. TouchRpc全系的事件操作,推荐直接插件的方式,或者使用TouchRpcActionPlugin然后添加委托。

更新示例 TouchRpc的相关事件均已使用插件代替。所以请使用插件实现操作。如果需要事件等功能的话,可以用TouchRpcActionPlugin的插件实现。例如:

.UsePlugin()
.ConfigurePlugins(a=>
{
a.Add<TouchRpcActionPlugin<TcpTouchRpcClient>>()//此处的逻辑可用插件替代完成。
.SetFileTransfering((client, e) =>
{
//有可能是上传,也有可能是下载
client.Logger.Info($"服务器请求传输文件,ID={client.ID},请求类型={e.TransferType},文件名={e.FileInfo.FileName}");
})
.SetFileTransfered((client, e) =>
{
//传输结束,但是不一定成功,需要从e.Result判断状态。
client.Logger.Info($"服务器传输文件结束,ID={client.ID},请求类型={e.TransferType},文件名={e.FileInfo.FileName},请求状态={e.Result}");
});
})

版本号: 0.4.5

更新日期:2022.8.25 更新描述:兼容性更新,增强型更新。 更新详情:

优化

  1. FileLogger的写入逻辑,大大地提升了写入效率。

新增

  1. Pipeline适配器
  2. TLV适配器
  3. WaitingClient支持按条件等待返回。
  4. 日志系统可以筛选日志的输出类型
  5. Rpc系统,可以使用单例、瞬时生命周期的服务。
  6. Rpc系统,可定义持久化模型。
  7. Rpc在使用瞬时生命周期的服务时,可以直接获取调用上下文。
  8. XmlRpc增加调用上下文。

修改

  1. 日志系统。
  2. Rpc的调用上下文均采用接口,例如:JsonRpc改为IJsonRpcCallContext,WebApi为IWebApiCallContext。
  3. IRpcActionFilter的参数列表。

修复

  1. UdpSession资源不释放的Bug。

删除

  1. 冗余元素。

版本号: 0.3.5

更新日期:2022.8.12 更新描述:兼容性更新,增强型更新。 更新详情:

优化

  1. 各类客户端发送逻辑。
  2. Method类的调用逻辑。

新增

  1. 适配器可以设定发送IRequestInfo对象。
  2. 插件新增UseWebSocket的快捷方式。
  3. ReconnectionPlugin插件可以获得重连次数的重载设置。
  4. 【Pro】TcpService的服务注入。
  5. 【Pro】HttpService的服务注入。
  6. 【Pro】IOC容器的共享使用。

修改

  1. 各类发送逻辑,以最小化发送方法为基础,其余方法改为扩展方法。
  2. 相关接口的实现。
  3. 由网友修改GetInfo

修复

  1. Container获取泛型失败bug。
  2. BetweenAnd适配器适配器部分bug。
  3. Router标签无法路由的bug。
  4. 修复TouchRpc推送文件状态不正确bug
  5. 修复独立线程在断线重连后发送bug。

删除

  1. 冗余的发送方法,不影响上版本任何使用。

版本号: 0.2.4

更新日期:2022.7.28 更新描述:兼容性更新。 更新详情:

优化

  1. 优化IOC容器。
  2. 优化Metadata的写入方式。
  3. FileLogger,当日志文件达到1Mb时,会再新增文件序号。

新增

  1. Mapper类,支持简单类型映射
  2. Tcp服务器、客户端、udp等增加端口复用配置。
  3. 【Pro】轮询式断线重连。
  4. 【Pro】NATService转发客户端重连。

修改

  1. RRQM二进制序列化,改名为Fast。
  2. TouchRpcClient连接时的Metadata,改为由Config配置注入。
  3. FilePool,取消延迟释放机制。

修复

  1. 修复WebSocket连接问题

删除

  1. 客户端直接调用的短线重连方式。仅保留在Config注入的功能。

版本号: 0.1.0

更新日期:2022.7.16 更新描述:初始化版本发布。由RRQMSocket迁移而来。

迁移指南:

1.所有类的命名空间修改,此处如果类型名未修改的话,可由vs智能提示解决。

2.类型名称修改

原类型名称新类型名称
RRQMBitConverterTouchSocketBitConverter
RRQMConfigTouchSocketConfig
RRQMConverterTouchSocketConverter
RRQMDependencyObjectDependencyObject
MsgEventArgsMsgEventArgs
RRQMEventAgrsTouchSocketEventArgs
IServerProviderIRpcServer
ServerProviderRpcServer
RRQMOverlengthExceptionOverlengthException

3.使用逻辑修改

1)原RRQMConfig设置Logger的方法,改为容器注入: image.png 断线重连逻辑 image.png RpcStore使用变更 如果是仅有一个Rpc解析器,那么可以直接删除RpcStore的声明,从而使用对应的解析器实例,直接注册服务。然后可以通过其属性RpcStore,获取到具体的RpcStore实例。

如果是有多个解析器,那么,首先可以使用任意一个解析器的RpcStore属性实例,作为主RpcStore,然后添加其他解析器。当然也可以直接new RpcStore,然后统一管理解析器。其中构造函数中的Container容器,可以直接new Container(),但是更建议使用和解析器相同的容器,这样注入的服务会变得全局可用。