通用FTP Client模块设计与实现

需求来源

业务系统通过Ftp Client定时接收客户的任务,由于不同的任务对应的实际业务处理不一样,因此每个任务放置在 FTP Server 对应的不同目录中。

实现策略

实现一个FTP Client

1)定期地取FtpServer中指定的目录下的所有文件到本地。 本地启动一个监控系统 监测指定目录的文件查到后做相应的处理。

2)将本地某个目录下的文件上传到FTPServer某个目录中。 本地将业务数据写入到业务目录中,通知 FTP Client上传到FTP Server中。将

由于上传业务频率并不高,因此不使用定时器的而改用通知的模式,从而减少对系统资源的占用。

优势

将FTP模块和具体的业务系统解耦。

对该模块的性能以及质量是可测试的。

劣势

定时任务会占用系统资源。

上传业务由于使用通知模式,对于一次连接不能保证上传最多的文件,最糟糕的情况是一个文件一个连接,从而导致上传效率低下。

设计第一稿

代码实现

具体见 https://github.com/hlxinyan/FTPClientModule

时间: 2024-11-08 19:12:41

通用FTP Client模块设计与实现的相关文章

框架模块设计经验总结

转自:http://www.cnblogs.com/zgynhqf/archive/2011/07/15/2107593.html 这是原创,尊重原创............ 框架模块设计经验总结 三个月没写日志了,比较懒散--下半年准备做OEA 的 B/S 版本,比较复杂,需要从架构设计开始认真入手.正好今天到了部门反思的时间,今天先把原来的一些设计经验总结一下,以方便将来回顾. 直入主题,这篇日志主要用于总结一些框架级别的模块设计经验. 总述 一个大型的框架,必然由多个较独立的子系统/子模块

客户管理系统之模块设计(八)

2,添加信息投诉和修改投诉信息模块 关于投诉信息的添加模块和修改模块均使用的是一个窗体,其其区别是根据向窗体中所传递的参数来实现的,这个模块的投诉主题,投诉客户和投诉内容是必填项,当添加时,投诉其主要功能就是向CustomerManagement数据库的inform数据表中插入服务的基本信息:当更改投诉信息时,其主要的功能就是更改CustomerManagement数据库中的inform数据表中的一条数据记录. 添加或修改投诉模块的示例: (1)加载公共类和创建ID属性,代码为: common

Winform开发框架之通用高级查询模块--SNF快速开发平台3.3-Spring.Net.Framework

最近项目确实忙,但也是一直忙于有关项目和框架技术的事情,也一直致力于改善我的WInform开发框架.使得自己及客户使用起来更加方便,更加友好,更加高效. 在很多程序模块中都很常见,也是给客户扩展查询的一个很好的补充,由于我一直希望我的Winform开发框架能够精益求精,所以做了这个模块,希望对今后我自己所有的项目以及框架本身,都能高效的使用. 1.通用高级查询模块的用途及介绍 既然称之为通用查询模块,那么他就不能与具体的表字段有耦合关系,但是要实现具体的查询,必须通过某种方式进行属性传递,实现更

服务器的设计与实现(三)——FTP服务器之设计与实现

在实现了Http服务器之后,本人打算再实现一个Ftp服务器.由于Ftp协议与Http一样都位于应用层,所以实现原理也类似.在这里把实现的原理和源码分享给大家. 首先需要明确的是Ftp协议中涉及命令端口和数据端口,即每个客户端通过命令端口向服务器发送命令(切换目录.删除文件等),通过数据端口从服务器接收数据(目录列表.下载上传文件等).这就要求对每个连接都必须同时维护两个端口,如果使用类似于上一篇文章中的多路IO就会复杂很多,因此本文采用了类似Apache的多进程机制,即对每个连接创建一个单独的进

解析大型.NET ERP系统 权限模块设计与实现

权限模块是ERP系统的核心模块之一,完善的权限控制机制给系统增色不少.总结我接触过的权限模块,以享读者. 1 权限的简明定义 ERP权限管理用一句简单的话来说就是:谁 能否 做 那些 事. 文句 含义 说明 谁 部门+岗位职责 也可以不与部门岗位绑定,省略角色定义. 能否 能(True) 否(False) 用0或1,true/false表示能否执行 做 增加/删除/修改/查询/统计/打印/过帐 权限对象 哪些 通用的/本人的/本组别的/本部门的/本公司的/其他的/多帐套的 范围:行政部的办公文具

通用的管理系统权限设计

原文:通用的管理系统权限设计 在以前的工作中,我常常会遇到一些系统管理权限的问题,常常是一种系统一种管理方式,很浪费时间和精力,后来我根据Windows的文件权限管理方式想了一种相似流程的控制方式,具体流程如下: 将系统的功能页面加入到模块中,并加入权限限制造,权限可以灵活设置,加入多种权限,对于用户可单独设置权限,也可以给角色设置权限,配置流程和Windows权里的方式差不多,系统代码正在编写中,完成之后将开源贡献给大家,下面是表结构及关系 关系图 原文地址:https://www.cnblo

app模块设计

至于app模块设计,要坚持三个原则: 1.放羊,让用户决定模块间的组合与穿插. 2.滥竽充数,对于用户不希望的模块,可以悄悄植入以实现产品目标. 3.照葫芦画瓢,遵守用户在其它APP上的既有习惯,组合各个模块和布置页面内容.工具.操作. 目前,依照以上原则,突出产品特色,忽略次要因素,大概搭建了app的几大模块,如图

缓存模块设计

NET 缓存模块设计 上一篇谈了我对缓存的概念,框架上的理解和看法,这篇承接上篇讲讲我自己的缓存模块设计实践. 基本的缓存模块设计 最基础的缓存模块一定有一个统一的CacheHelper,如下: public interface ICacheHelper { T Get<T>(string key); void Set<T>(string key, T value); void Remove(string key); } 然后业务层是这样调用的 public User Get(in

用Wireshark抓包来揭开ftp client GG和ftp server MM的勾搭内容并用C代码来简要模拟实现Windows自带的ftp client

前面, 我们玩过http, 颇有点意思, 在本文中, 我们继续来玩ftp(file transfer protocol).   http和ftp都是建立在tcp之上的应用层协议, 无论他们怎么包装, 怎么装bigger, 最终还是基于tcp端到端传输的.本文主要分为两个部分: 一. 用Wireshark抓包来揭开ftp client GG和ftp server MM的勾搭内容.二.用C代码来简要模拟实现Windows自带的ftp client. 说明, 本文中的实验, 我用了两台电脑, 分别是p