Mantenga la configuración sincronizada entre la aplicación de formularios y el servicio de Windows (o cualquier n-tier, realmente)

Tengo un servicio de Windows que realiza una serie de actividades periódicas y deseo cambiar la configuración de este servicio desde una aplicación de formularios Windows Forms. Sin embargo, no estoy seguro de la mejor manera de asegurarme de que el servicio tenga las preferencias de usuario más actualizadas (con qué frecuencia ejecutar, qué carpetas usar para las cosas, cualquier otra cosa que el usuario pueda especificar). El usuario puede cambiar la configuración en cualquier momento, a voluntad, y me gustaría que el servicio lo supiera casi de inmediato. Aquí están las opciones que estoy pesando:

El formulario y el servicio compartido utilizan el mismo objeto "Configuración" de un tercer proyecto compartido, y el formulario utiliza una llamada WCF "UpdateSettings (newSettings)" para informar al servicio que ha habido cambios (u, opcionalmente, una llamada a actualizar cada configuración individual, aunque esto parece mucho en diferentes llamadas). Actualmente uso WCF para mensajes básicos, pero el objeto de configuración puede ser enorme, ya que hay muchas otras cosas allíForm y Service utilizan un archivo de configuración común (XML, o el mismo objeto de configuración del # 1, pero serializado en el disco). El formulario solo escribe una nueva copia del objeto después de que se ha cambiado, y el servicio lo revisa de vez en cuando y lo recoge si es nuevo, actualizando su copia de la configuraciónIgual que el n. ° 2, pero con una llamada WCF básica que le dice al servicio que vaya a obtener la configuración. Esencialmente, una versión "a pedido" en lugar de "encuesta" del # 2.

Sé que lo mejor es subjetivo, pero estoy interesado en cualquier razón obvia a favor o en contra de estas opciones. Como tendré que guardar mi configuración entre las ejecuciones de la aplicación (reinicios, etc.), tendré que serializar la configuración en el disco de todos modos, así que ya me estoy inclinando hacia el # 2 o # 3. Necesitaré un lugar en el disco donde pueda guardar la configuración, pero tal vez la carpeta AppData funcione bien, aunque eso solo permitirá a los Administradores cambiar la configuración, ya que son los únicos que tienen permiso para escribir en esta ubicación (donde cada usuario, incluida la cuenta de servicio, puede leerlo).

Gracias por tu perspicacia!

Respuestas a la pregunta(4)

Su respuesta a la pregunta