ejemplo .net winapi design-patterns filesystemwatcher

.net - ejemplo - filesystemwatcher c#



¿Cómo funciona FileSystemWatcher en otro directorio de computadoras? (2)

Creo que FileSystemWatcher utiliza un patrón observador / observable basado en la API Win32 subyacente. No estoy seguro de los eventos reales pero, presumiblemente, cuando inicializa un objeto FileSystemWatcher para ver una ruta de red y establece la propiedad EnableRaisingEvents, se adjunta a la carpeta como observador uniéndose a los eventos generados por la API de Win32 como lo harían si la carpeta estaba en la misma computadora.

En el patrón de diseño del Observador, el sujeto (observable) nunca conoce el número o los tipos de observador, por lo tanto, el punto acerca de que la otra computadora sepa cuando el FSW ya no está mirando es irrelevante.

Si la red se cae durante un evento que se plantea, eso es un poco impredecible, alguien más tendrá que ayudarlo allí.

Algo me intriga y no encuentro ningún recurso sobre esto.

¿Cómo puede saber FileSystemWatcher cuando se crea / elimina / cambia / renombra un archivo en una computadora "A"?

Pensé que esto funcionaba con el sondeo (el observador sondea el servidor para verificar la actualización), pero después de verificar la actividad de la red con Wireshark, vi que no se utilizaba el sondeo. ¿El protocolo SMB usa un patrón observable / observador?

En este caso, ¿cómo puede saber el servidor cuándo un cliente ya no lo observa?

¿Cuál es la consecuencia cuando la red cae durante una observación y regresa justo después?

Usar FileSystemWatcher en otra computadora parece demasiado fácil para ser cierto ...


Usar FileSystemWatcher en otra computadora parece demasiado fácil para ser cierto ...

Es un poco. La API subyacente - ReadDirectoryChanges() - abre una conexión con el servidor, que es responsable de responder cuando algo cambia. Si se desconecta esa conexión por alguna razón o si se topa con el límite de conexión del SO al que se está conectando, entonces no recibirá notificaciones.

Descubrí que es más confiable realizar sondeos periódicamente (con un intervalo bastante largo) y usar FileSystemWatcher solo como una forma de responder rápidamente a los cambios entre encuestas.