基于异步化读写的FTP文件传输方法及FTP客户端与流程

文档序号:12494993阅读:332来源:国知局
基于异步化读写的FTP文件传输方法及FTP客户端与流程

本发明涉及FTP配置领域,具体涉及一种基于异步化读写的FTP文件传输方法及FTP客户端。



背景技术:

在当前的数据通信传输设备中,为了提高软件的模块化和运行效率,核心软件普遍采用消息驱动型的软件框架。为了实现基本的网络管理功能,FTP(File Transfer Protocol,文件传输协议)通常作为一项最基本的软件特性需求。然而,将FTP纳入消息驱动型的软件框架时,存在的问题为:FTP属于文件读写密集型协议,由于FTP文件的IO(输入输出)操作的低效耗时(因为FTP文件较大,一般为100M左右),因此将FTP纳入消息驱动框架后,传输整个较大的FTP文件会降低框架整体调度的效率,甚至会导致其他程序组件难以正常工作。

一直以来,文件操作的低效和平台整体的高效性之间的矛盾都是一个较难解决的问题。基于这一点、并为了避免上述问题,目前大部分的软件平台均放弃将FTP进行异步化实现,而将FTP的实现置于消息驱动框架之外,势必会造成软件平台整体性的破坏,而且复杂的通信机制会使软件的可用性越来越差。



技术实现要素:

针对现有技术中存在的缺陷,本发明解决的技术问题为:如何在保证消息驱动框架高效性、且不会影响FTP的基本功能的基础上,将FTP纳入消息驱动型的软件框架。

为达到以上目的,本发明提供的基于异步化读写的FTP文件传输方法,包括以下步骤:

步骤A:FTP客户端根据需要读写的FTP文件信息,在本地获取FTP文件大小;根据文件大小将FTP文件分割为若干读写数据块,每个读写数据块的大小为4k~2M,转到步骤B;

步骤B:FTP客户端向消息驱动框架发送异步文件读写请求消息,消息驱动框架在预先设置好的线程池中获取读写工作线程;利用读写工作线程,根据异步文件读写请求消息读取FTP文件中需要读写的数据块,转到步骤C;

步骤C:数据块读写完成后,FTP客户端判断是否需要继续读写数据块,若是,重新执行步骤B,否则结束。

本发明提供的实现上述方法的基于异步化读写的FTP客户端,包括FTP文件传输模块、本地文件储存模块、消息驱动型框架和线程池资源工作模块;

FTP文件传输模块用于:根据需要读写的FTP文件信息,在本地文件储存模块中获取FTP文件大小;根据文件大小将FTP文件分割为若干读写数据块,每个读写数据块的大小为4k~2M;需要读写数据块时,向消息驱动型框架发送异步文件读写请求消息;收到消息驱动型框架发送的读写完成消息后,若需要继续读写数据块,则重新向消息驱动型框架发送异步文件读写请求消息;

本地文件储存模块用于:在本地储存FTP文件;

消息驱动型框架发送异步文件用于:将FTP文件传输模块发送的异步文件读写请求消息转发至线程池资源工作模块;将线程池资源工作模块返回的读写完成消息转发至FTP文件传输模块;

线程池资源工作模块用于:预先配置线程池,收到异步文件读写请求消息后,在预先设置好的线程池中获取读写工作线程,读写工作线程根据异步文件读写请求消息读取FTP文件中需要读写的数据块,读取完成后向消息驱动型框架返回读写完成消息。

与现有技术相比,本发明的优点在于:

参见步骤A可知,本发明将FTP文件切片为若干数据块,每个数据块的大小为4k~2M;与现有技术中整个FTP文件相比,本发明传输数据块至FTP服务端,数据块远小于整个FTP文件。因此,本发明能够保证消息驱动框架的高效性能;而且参见步骤C可知,数据块的读写和发送均根据FTP客户端的驱动来触发,实际的读写操作由独立的线程承担,消息驱动框架只需正常实现异步消息分发即可。

有鉴于此,本发明能够在保证消息驱动框架高效性的同时,不会影响FTP的基本功能,完美的实现了将FTP纳入消息驱动型的软件框架,非常适于推广。

与此同时,本发明每次读写和传输1个数据块,进一步保证了消息驱动框架的高效性能。

附图说明

图1为本发明实施例中的基于异步化读写的FTP文件传输方法的流程图;

图2为本发明实施例中的基于异步化读写的FTP客户端的信号连接框图;

图3为本发明实施例中FTP客户端的有限状态机设计原理图;

图4为用Restful API的方式封装FTP命令的流程图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,发明实施例中的基于异步化读写的FTP文件传输方法,包括以下步骤:

S1:用户在FTP客户端上指定需要读写的FTP文件信息,FTP文件信息包括文件名和文件存放路径,转到S2。

S2:FTP客户端根据FTP文件信息,在本地获取FTP文件的大小等信息;根据文件大小对FTP文件进行读写切片为若干读写数据块,每个读写数据块的大小为4k~2M,转到S3。

S3:FTP客户端向消息驱动框架发送异步文件读写请求消息,异步文件读写请求消息包括FTP文件、需要读写的数据块标记(每次读取至少1块数据块)、以及需要读写的数据块大小,转到S4。

S4:消息驱动框架在预先设置好的线程池中获取读写工作线程,利用读写工作线程,根据异步文件读写请求消息读取FTP文件中需要读写的数据块(每次读取1块数据块),转到S5。

S5:消息驱动框架将读写完成的数据块,传输至FTP客户端,FTP客户端将收到的数据块传输至FTP服务端,FTP服务端写入数据块,转到S6。

S6:FTP客户端根据实际情况判断是否需要继续读写数据块,若是转到S3,否则结束。

参见图2所示,本发明实施例中的实现上述方法的基于异步化读写的FTP客户端,包括FTP文件传输模块、本地文件储存模块、消息驱动型框架和线程池资源工作模块。

FTP文件传输模块用于:

(1)根据需要读写的FTP文件信息(包括文件名和文件存放路径),在本地文件储存模块中获取FTP文件大小;根据文件大小将FTP文件分割为若干读写数据块,每个读写数据块的大小为4k~2M;

(2)需要读写数据块时,向消息驱动型框架发送异步文件读写请求消息,异步文件读写请求消息包括FTP文件、1个需要读写的数据块标记、以及需要读写的数据块大小。

(3)收到消息驱动型框架发送的读写完成消息后,若需要继续读写数据块,则重新开始工作流程(2)。

(4)与FTP服务端按照标准协议建立控制连接和数据连接,收到消息驱动型框架发送的读写完成消息后,将读写完成的数据块传输至FTP服务端。

FTP服务端用于:写入FTP文件传输模块传输的数据块。

本地文件储存模块用于:在本地储存FTP文件。

消息驱动型框架发送异步文件用于:将FTP文件传输模块发送的异步文件读写请求消息转发至线程池资源工作模块;将线程池资源工作模块返回的读写完成消息转发至FTP文件传输模块。

线程池资源工作模块用于:预先配置线程池,收到异步文件读写请求消息后,在预先设置好的线程池中获取读写工作线程,读写工作线程根据异步文件读写请求消息读取FTP文件中需要读写的数据块,读取完成后向消息驱动型框架返回读写完成消息。

为了更好地发挥消息驱动型框架的优势,可针对本发明的FTP客户端设计相应的有限状态机,使FTP本身的实现更加切合异步化平台。有限状态机用于:根据实际平台的情况,将FTP客户端进行状态分解,从而实现协议实现部分的事件驱动;由于具体的有限状态机和软件平台有关,这里不做详述,可根据实际情况增加更多的子状态,降低状态机的实现难度。

参加图3所示,本发明实施例中有限状态机的工作流程为:

步骤一:有限状态机初始化,转到步骤二,若连接建立异常,则重新执行步骤一。

步骤二:建立TCP连接,判断用户登录认证是否成功,若是转到步骤三,否则重新执行步骤一。

步骤三:建立控制连接,以执行基本的控制命令,转到步骤四,若控制连接出现异常,则重新执行步骤一。

步骤四:建立数据连接,以执行文件数据的传输,若数据连接出现异常,则重新执行步骤一。

通过上述的文件读写碎片化、异步化以及有限状态机的设计,能在不牺牲消息驱动平台性能的前提下,将FTP纳入平台的统一管理,并确保FTP的基本功能。这种方法可加快软件框架统一化的演进趋势。

参见图4所示,本发明借助平台的功能,还能够将FTP客户端的相关操作以Restful API的方式封装并对外提供,远程用户可以通过该接口实现远程操作。

进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1