高性能的 TCP 应答流服务框架是 AutoCSer 的核心组件,支持若干全局默认配置,需要引用 AutoCSer\Packet\*\AutoCSer.dll + AutoCSer.TcpStreamServer.dll。
TCP 接口服务基于 Emit 动态生成代理类型,相对于使用静态代码生成TCP 函数应答流服务框架上手简单,但功能支持相对简单,只支持同步模式
框架根据应用场景分为内部服务开放服务,两种服务的默认配置参数与防御攻击策略不同。
内部服务默认配置:数据缓冲区 64KB,最大发送数据缓冲区 1MB,验证超时 4s,客户端失败重连时间 10ms,批量输出休眠等待时间 0ms,使用二进制序列化,服务端开启线程输出,客户端启动时创建连接,支持服务注册
开放服务默认配置:数据缓冲区 8KB,服务端最大发送数据缓冲区 8KB,验证超时 9s,客户端失败重连时间 1s,批量输出无等待时间,使用 JSON 序列化,服务端同步输出,客户端在第一次访问时创建连接,客户端最大自定义数据包为 16KB
注意:interface 接口定义必须使用 public 修饰,而且对于其它程序集可见。

内部服务

. 支持 ref / out 参数。

参考示例 AutoCSer\Example\TcpInterfaceStreamServer\RefOut.cs

. 对于没有返回值且可靠性要求不高的需求,支持仅发送请求模式(无需服务端响应),返回值类型必须为 void,不支持 ref / out 参数。

参考示例 AutoCSer\Example\TcpInterfaceStreamServer\SendOnly.cs

. 支持接口继承与显示接口实现

参考示例 AutoCSer\Example\TcpInterfaceStreamServer\Inherit.cs

. 集成支持远程表达式链

参考示例 AutoCSer\Example\TcpInterfaceStreamServer\Expression.cs

. 简单序列化模式,采用二进制序列化模式时,输入输出参数类型如果全部属于以下类型,将默认开启简单序列化模式以提升序列化性能,否则将使用支持循环引用与成员选择的通用二进制序列化
bool, byte, sbyte, short, ushort, int, uint, long, ulong, float, double, decimal, char, DateTime, Guid, string
bool?, byte?, sbyte?, short?, ushort?, int?, uint?, long?, ulong?, float?, double?, decimal?, char?, DateTime?, Guid?, enum

性能测试项目
AutoCSer\TestCase\TcpStreamServerPerformance\AutoCSer.TestCase.TcpInternalStreamServerPerformance.Emit
AutoCSer\TestCase\TcpStreamClientPerformance\AutoCSer.TestCase.TcpInternalStreamClientPerformance.Emit
TCP 接口应答流服务框架 内部服务 吞吐性能测试
.NET Core TCP 接口应答流服务框架 内部服务 吞吐性能测试
从测试结果看来 .NET Core 的吞吐性能有较大提升。

开放服务

. 支持 ref / out 参数。

参考示例 AutoCSer\Example\TcpInterfaceOpenStreamServer\RefOut.cs

. 对于没有返回值且可靠性要求不高的需求,支持仅发送请求模式(无需服务端响应),返回值类型必须为 void,不支持 ref / out 参数。

参考示例 AutoCSer\Example\TcpInterfaceOpenStreamServer\SendOnly.cs

. 支持接口继承与显示接口实现

参考示例 AutoCSer\Example\TcpInterfaceOpenStreamServer\Inherit.cs

. 集成支持远程表达式链

参考示例 AutoCSer\Example\TcpInterfaceOpenStreamServer\Expression.cs

. 简单序列化模式,采用二进制序列化模式时,输入输出参数类型如果全部属于以下类型,将默认开启简单序列化模式以提升序列化性能,否则将使用支持循环引用与成员选择的通用二进制序列化
bool, byte, sbyte, short, ushort, int, uint, long, ulong, float, double, decimal, char, DateTime, Guid, string
bool?, byte?, sbyte?, short?, ushort?, int?, uint?, long?, ulong?, float?, double?, decimal?, char?, DateTime?, Guid?, enum

性能测试项目
AutoCSer\TestCase\TcpStreamServerPerformance\AutoCSer.TestCase.TcpOpenStreamServerPerformance.Emit
AutoCSer\TestCase\TcpStreamClientPerformance\AutoCSer.TestCase.TcpOpenStreamClientPerformance.Emit
TCP 接口应答流服务框架 开放服务 吞吐性能测试
.NET Core TCP 接口应答流服务框架 开放服务 吞吐性能测试
从测试结果看来 .NET Core 的吞吐性能有较大提升。