跳到主要内容
版本:1.3.9

小文件传输

一、说明

小文件传输是指,当传输文件小于设定大小(默认1024*1024字节)时的传输。

为什么要设立小文件传输?与常规文件传输相比,优点在哪里? 常规传输,建立一个传输通道,大约需要传输两端,往返通信4-6次。这在本地局域网中,显得无所谓。但是在互联网环境中,一次ping延迟平均50ms,那么建立一个传输,就大约需要200-300ms。这也就意味着,即使一个文件只有一字节,也需要这些时间。所以,这明显是不合理的。所以TouchRpc又新增了小文件传输,只要文件在1Mb以内,仅往返1次,就可以完成传输。

当然,对于小文件的最高效传输方式依然是先压缩,后传输的方式。

二、使用

【拉取文件】

  1. 直接调用PullSmallFile或者PullSmallFileAsync,获取到实际的文件数据。
  2. 通过Save方法,将数据写入文件。也可以自行保存。
var result = await this.fileClient.PullSmallFileAsync(path);//拉取文件
var saveResult = result.Save(savePath);//将拉取的数据进行保存。

【推送文件】

  1. 直接调用PushSmallFile或者PushSmallFileAsync。
  2. 返回值即表示是否成功。
var result = await this.fileClient.PushSmallFileAsync(savePath, fileInfo);
if (result.IsSuccess())
{
}

其他可选参数可以自己定义。

三、客户端之间传输

该功能也支持客户端之间互相传输。使用方法基本一致,需要额外指定目标Id即可。

此外,服务器也需要同意路由

internal class MyTouchRpcPlugin : TouchRpcPluginBase
{
protected override void OnRouting(ITouchRpc client, PackageRouterEventArgs e)
{
if (e.RouterType== RouteType.PushFile||e.RouterType== RouteType.PullFile)
{
e.IsPermitOperation = true;
}
base.OnRouting(client, e);
}
}