代码改变世界

[架构]FileZilla Server架构分析

2013-05-01 08:55  鉴于  阅读(414)  评论(0编辑  收藏  举报

FileZilla Server是一个开源的FTP服务器软件。分析一下它的架构设计为以后架构选型提供方案。

 

FileZilla Server由两部分组成,Service和配置工具,如下图:

image

FileZilla Server解决方案下有3个项目,

FZS Interface   配置工具
Service     FTP服务
Zlib           开源压缩、解压库

在安装时首先会将Service注册为系统服务,开机自动运行。用户运行配置工具后,FZSInterface将会使用TCP链接Service,通信相应的处理,配置用户信息、设置工具目录等。
配置工具中会创建一个CAdminSocket对象,用于和Service通信,CAdminSocket从CAsyncSocketEx派生出来。CAsyncSocketEx和MS的CAsyncSocket类型,但是效率比MFC类CAsyncSocket效率高一些,因为CAsyncSocketEx能够同时开多个消息窗体,而CAsyncSocket所有socket都在一个线程上处理,同一时间只能有一个Socket通知事件。
将Server做成windows服务是一个很好的选择,避免网络通信受UI影响,而且可以直接让UI跟后台部门耦合度降低,两者间直接用TCP通信解决。两个模块可以并行开发,之间只要约定网络数据交互的格式就行。