文档同步客户端需求
开发类似百度网盘、Box(https://www.box.com)网盘的Windows 桌面同步客户端,用于云端和Windows客户端文件夹、文档进行同步的功能;云端文档管理的数据库结构及Web版文档管理我们公司已经开发完成;只需开发同步客户端即可;
1. 安装环境需求:需要支持Win7、XP、Win8系统;
2. 开发技术要求:
a) 采用C#、WPF、.net fx4.0进行开发;
b) 客户端与云端通信:云端同步文档的各项操作的接口我们大部分已经完成,以WCF(WebService)的方式进行通信;如果需要修改接口参数或者增加接口可与我们讨论协调处理;
3. 其他需求:
a) 多语言(中文、法语、英文),翻译内容由我们提供;
b) 内部日期处理均采用utc时间,显示时则为计算机设定的本地时区时间;
(用户会分布再多个国家)
c)
4. 功能需求:
a) 安装打包:(由我们公司处理,发项目源码给我们后由我们制作安装包)
b) 启动配置要求:(该功能我们公司已经完成)
程序安装第一次运行启动,检查如果如果没有进行帐号配置、同步文件夹路径,则需要进行帐号信息配置;
i. 登入页面:指定URL、帐号(email)、密码进行登入;
ii. 设置文件夹页面:选择一个Widows目录作为同步目录;
iii. 配置完成页面:提示配置完成,关闭即可;
c) 启动要求:(该功能我们公司已经完成)
i. Windows开机自动启动,如果已经配置相关信息,则自动最小化到任务栏;显示泡泡提示App已经启动;
ii. 确保exe只有一个实例在运行。
d) 同步需求:
i. 用户在本地文件夹中增加文件,该文件的路径和内容自动同步增加到服务器,文件及目录上添加同步标识
ii. 用户在本地文夹中删除文件,服务器上的对应文件或路径自动同步删除
iii. 用户在本地文件夹中编辑文件,保存之后该文件的内容自动同步更新到服务器
iv. 用户在本地文件夹中重命名文件或者文件夹,完成之后同步到服务器;
v. 用户在本地文件夹中移动文件或者文件夹,完成之后同步到服务器端;
vi. 用户在服务器端做任何操作(新增、修改、移动、删除文件、文件夹,均需要同步到客户端);
vii. 同步完成后需要保持云端文件修改时间与客户端文件修改时间一致;
viii. 同步到云端前,如果检查用户空间容量已经超过最大容量,则停止同步;
ix.
x. 注意问题:
移动、重命名、修改文件,需要确保服务器端文件的唯一标识ID不变(因为会在其他地方,如文件版本记录、文件评论等进行记录);
以下情形是不可接受的:
本地从A目录移动一个文件[file1]到B目录,如果同步到服务器采取方法是:在A目录删除[file1],在B目录新增[file1],这个方式不可行,虽然文件是一致了,但是会导致文件的唯一标识ID改变;
e) 共享文件夹同步需求:
i. UserA共享文件夹“Folder”给UserB,那么会在UserB的同步根目录出现共享文件夹“Folder(userA@mail.com)”;
ii. 如果UserB原来存在同名的其他文件夹“Folder(userA@mail.com)”,则会自动修改名称“Folder(1)(userA@mail.com)”
iii. UserB可以随时修改该文件夹的名称,修改后同步到云端;
但不会同步到UserA的目录;
iv. UserA重名了目录”Folder”,不会反映到UserB;(因为UserB可能想取自己的名称;)
v. UserA删除了共享文件夹“Folder”, UserB同步时,UserB对应文件夹也会被删除掉;
vi. 如果UserA取消共享,UserB同步时,UserB对应文件夹也会被删除掉;
vii. 如果UserB删除了UserA共享给他的文件夹“Folder(userA@mail.com)”,系统监控到该文件夹不能被删除,弹出Desktop App对话框,提示该文件夹无法删除或移动,控制不能删除共享文件夹;
viii. UserB将共享文件夹移动到其他文件夹里面,系统监控到该文件夹不能移动,弹出Desktop App对话框,提示该文件夹无法删除或移动,控制文件夹不能移动;
ix. 管理共享文件夹内的同步情况:
1. UserB是Editer:
a) UserB对文件夹内的任何操作的会同步到云端,并且会同步到UserA的文件夹内;
b) UserA对文件夹内的任何操作的会同步到云端,并且会同步到UserB的文件夹内;
c) 冲突问题:
如果UserB修改问某个文件,UseA也同时修改了该文件,在同步时,就会出现版本冲突,那么机会Copy一份新的文件命名为“original file name ({shared user name}’s conflicted copy {modified date})”;
d) UserB将“其他文件夹”的文件移动到“共享目录”,这算在“共享目录”里面创建新文件,在“其他文件夹”删除掉该文件;
文件的拥有者为UserA;
e) UserB将共享目录里的文件,移动到其他文件夹,这算在“其他文件夹”里面创建新文件,原来的文件在“共享目录”删除掉;
文件的拥有者为UserB;
2. UserB是Viewer:
a) 需要控制和UserB 不能对共享文件夹内的文件、文件夹进行新增、删除、修改、重命名、移动;
b) UserA对文件夹内的操作都会同步到UserB里面;
f) 界面功能需求:
i. 显示同步进度;提供按钮执行立即同步功能;
ii. 显示帐号信息、本地同步文件夹信息;
5. 容错性能:
i. 如果服务器端与客户端同时修改了文件,则会出现冲突,采用Copy一份新的文件命名为“original file name ({shared user name}’s conflicted copy {modified date})”;
ii. 客户端软件对同步上传文件失败时,应再次上传文件或者等待一定时间后再上传;
iii. 客户端软件下载文件未成功时,应再次下载文件或者等待一定时间后再上传,保证客户端与服务器文件的同步一致。
iv. 支持大文件1G以上文件同步;
v. 支持离线情况下对本地文件进行操作,在有网络的情况下进行同步;
vi.
6.