Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类似Dropbox的Windows客户端的体系结构_C#_.net_Windows Services_Client_Dropbox - Fatal编程技术网

C# 类似Dropbox的Windows客户端的体系结构

C# 类似Dropbox的Windows客户端的体系结构,c#,.net,windows-services,client,dropbox,C#,.net,Windows Services,Client,Dropbox,如何使用.NET作为基本平台,为dropbox类型的同步系统设计windows客户端 客户端使用HTTP(json)与服务器通信,以获取同步元数据、用户信息等,并使用rsync进行实际的文件传输。应该有一个主界面窗口、一个可从系统托盘访问的GUI(并始终处于活动状态以获取通知),以及一个用于上下文菜单和图标集成的Shell扩展 GUI可以是一个独立的Windows窗体(或WPF)应用程序,默认情况下最小化为托盘。外壳扩展必须是在资源管理器进程中注册的独立DLL。与服务器通信、文件传输和监控文件系

如何使用.NET作为基本平台,为dropbox类型的同步系统设计windows客户端

客户端使用HTTP(json)与服务器通信,以获取同步元数据、用户信息等,并使用rsync进行实际的文件传输。应该有一个主界面窗口、一个可从系统托盘访问的GUI(并始终处于活动状态以获取通知),以及一个用于上下文菜单和图标集成的Shell扩展

GUI可以是一个独立的Windows窗体(或WPF)应用程序,默认情况下最小化为托盘。外壳扩展必须是在资源管理器进程中注册的独立DLL。与服务器通信、文件传输和监控文件系统更改的核心客户端功能如何

实现这一点的最佳方式是什么?作为一个单独的应用程序,是包含所需函数的DLL,还是GUI和shell扩展在必要时调用的后台windows服务?或者除了上面提到的3之外的其他东西

问题之一可能是核心函数需要调用(执行)外部进程rsync.exe以进行文件传输。此外,无论核心函数在哪里,Shell扩展DLL都必须能够使用它们

对于实际的dropbox windows客户端,是否有任何实现或设计细节?我所能找到的只是它是用python编写的,似乎使用sqlite3数据库来索引文件,并在内部使用subversion和RSync来管理版本控制


编辑:还有,我忘了另一个方法--.NET远程处理。客户端应用程序将公开Shell扩展可以使用的服务器通信方法。

这是您正在寻找的一个始终在线的服务,还是在用户停止时启动和停止的服务?如果出现视觉不匹配或网络中断,你会怎么做?这些事情可能比应用程序的构建方式更重要。是的,你是对的。“始终在线”部分应仅适用于“dropbox”文件夹的文件系统监视。网络上的数据传输应按需调用。版本不匹配是特定于应用程序的逻辑,这也应该在执行实际同步的函数中处理。无论如何,这些都是有效的点,它们正在UX设计中处理,在进行初始应用程序架构设计时应予以考虑。类似: