有些东西让我很感兴趣,我没有找到任何资源。
FileSystemWatcher 如何知道计算机“A”上的文件何时创建/删除/更改/重命名?
我认为这适用于轮询(观察者轮询服务器以检查更新),但在使用 Wireshark 验证网络活动后,我发现没有使用轮询。SMB 协议是否使用可观察/观察者模式?
在这种情况下,服务器如何知道客户端何时不再观察他?
当网络在观察期间下降并在之后立即恢复时会产生什么后果?
在另一台计算机上使用 FileSystemWatcher 似乎太容易了……
有些东西让我很感兴趣,我没有找到任何资源。
FileSystemWatcher 如何知道计算机“A”上的文件何时创建/删除/更改/重命名?
我认为这适用于轮询(观察者轮询服务器以检查更新),但在使用 Wireshark 验证网络活动后,我发现没有使用轮询。SMB 协议是否使用可观察/观察者模式?
在这种情况下,服务器如何知道客户端何时不再观察他?
当网络在观察期间下降并在之后立即恢复时会产生什么后果?
在另一台计算机上使用 FileSystemWatcher 似乎太容易了……
在另一台计算机上使用 FileSystemWatcher 似乎太容易了……
有点像。底层 API -ReadDirectoryChanges()
打开与服务器的连接,服务器负责在发生变化时做出响应。如果该连接由于某种原因被丢弃,或者您遇到了您正在连接的操作系统的连接限制,那么您将不会收到通知。
我发现定期轮询(间隔相当长)更可靠,并且FileSystemWatcher
仅用作快速响应轮询之间变化的一种方式。
我认为 FileSystemWatcher 确实使用了基于底层 Win32 API 的观察者/可观察模式。不确定实际事件,但大概是当您初始化 FileSystemWatcher 对象以监视网络路径并设置 EnableRaisingEvents 属性时,它通过附加到 Win32 API 引发的事件,将自身作为观察者在幕后附加到文件夹,就像它们会该文件夹位于同一台计算机上。
在观察者设计模式中,主体(可观察者)永远不知道观察者的数量或类型,因此关于另一台计算机知道 FSW 何时不再观看的点是无关紧要的。
如果在引发事件的过程中网络中断,这有点棘手 - 其他人将不得不在那里帮助您。