我要求读完我的问题直到结束。有人可能会发现它重复。
我有一个Windows应用程序(客户端应用程序)一台机器& Web应用程序(Server App)位于同一网络中的另一台计算机上。 客户端应用程序正在捕获屏幕5fps并保留在共享的本地文件夹中。我有一个在服务器机器上运行的Windows服务。它将客户端映像从客户端共享文件夹移动到服务器目录我正在使用File.Move将文件与FastDirectoryEnumerator类一起移动。这些移动的文件稍后用于创建视频,也用于显示实时流式传输。
问题:
是否有其他(最佳/最快)选项可以实时移动这些文件(在客户端创建后立即传输)? 我也对没有共享文件夹的实时文件传输感兴趣。
更新
我的主要担忧。
文件传输应该更快,以允许通过我的服务器应用程序(ASP.Net)进行实时流式传输
如果服务器/连接不可用,客户应保留它。一旦上线就转移。
答案 0 :(得分:1)
我不知道为什么你有服务器监控客户端的共享,当然这个监控或者说,DirectoryEnumerator程序需要时间。
由于客户端知道图像何时被捕获,为什么不立即从客户端将此信息发送到服务器?通过这种方式,您不需要从服务器监视客户端,您不需要查找/枚举文件夹,只需将数据从客户端传输到服务器,只需通过特定的WCF / Web服务调用即可将数据从客户端传输到服务器。字节作为输入。
答案 1 :(得分:0)
如果您无法控制创建图像文件的客户端应用程序,则可以在客户端计算机上运行FileSystemWatcher
。添加一个事件处理程序,只要在文件系统上创建文件而引发Created
事件,就会调用该事件处理程序。
答案 2 :(得分:0)
在这类活动中获得最佳表现时需要考虑的事项。
对于“实时”通知,您可能需要查看FileSystemWatcher
课程。有关完整示例,请参阅文档。但是,当操作系统忙时,它将丢弃其中一些事件,并且不会通知您新文件。编程一个扫描循环是一个好主意,确保你拥有所有文件,我在过去一直被这个文件所困扰。
您可能需要检查硬件配置,例如PC和服务器之间的网络延迟,以及PC和服务器上的磁盘速度。低规格SSD可能在旋转磁盘上的这些操作中具有很大的性能优势。