Tengo un servicio de Windows que realiza varias actividades periódicas y deseo cambiar la configuración de este servicio desde una aplicación de Windows Forms . Sin embargo, no estoy seguro de cuál es la mejor manera de garantizar 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 sepa casi de inmediato. Estas son las opciones que estoy un peso:Mantener las configuraciones sincronizadas entre la aplicación de formularios y el servicio de Windows (o cualquier n-tier, realmente)
- La forma y el servicio de cuota de utilizar el mismo objeto "Configuración" de un tercer proyecto, compartido, y la forma de WCF utiliza un "UpdateSettings (newSettings)" llamada para que el service sabe que ha habido cambios (u, opcionalmente, una llamada para actualizar cada configuración individual, aunque esto parece mucho sobre diferentes llamadas). Actualmente utilizo WCF para mensajes básicos, pero el objeto de configuración puede ser enorme, ya que hay muchas otras cosas allí
- Formulario y Servicio usan un archivo de configuración común (XML, o el mismo objeto de configuración de # 1, pero serializado en el disco). El formulario solo escribe una nueva copia del objeto después de haberlo cambiado, y el servicio verifica cada cierto tiempo y lo recoge si es nuevo, actualizando su copia de la configuración
- Igual que el n.º 2, pero con una llamada básica de WCF eso le dice al servicio que obtenga la configuración. Esencialmente, una versión "a pedido" en lugar de "encuesta" de # 2.
Sé mejor es subjetivo, pero estoy interesado en cualquier obvio pro o contra los motivos de estas opciones. Como tendré que guardar mi configuración entre las ejecuciones de la aplicación (reinicios, etc.), tendré que serializar las configuraciones en el disco de todos modos, así que ya me estoy inclinando hacia el n. ° 2 o el n. ° 3. Necesitaré un lugar en el disco donde pueda guardar la configuración, pero tal vez la carpeta AppData funcionará 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 calificación!
El uso de "Almacenamiento aislado" parece ser específico del usuario: en lo que respecta a mi configuración, son esencialmente por computadora. Quiero que los usuarios puedan verlos, pero solo un administrador puede editarlos y volver a guardarlos (o, con Vista/7, alguien que haya usado la elevación del administrador). ¿Puedo usar almacenamiento aislado para el administrador local o el almacenamiento de tipo "Todos los usuarios"? – SqlRyan
@rwmnau Lectura adicional en tipos de almacenamiento aislado Veo que está como mínimo siempre restringido para el usuario que lo creó. Hay una bandera IsolatedStorageScope.User que pensé que podría desactivarse, pero ese no parece ser el caso. Trataré de pensar en una ruta alternativa. – Matthew