Mantenha as configurações sincronizadas entre o aplicativo de formulários e o serviço do Windows (ou qualquer camada n, na verdade)

Eu tenho um serviço do Windows que executa várias atividades periódicas e desejo alterar as configurações desse serviço em um aplicativo Windows Forms. Não tenho certeza, porém, sobre a melhor maneira de garantir que o serviço tenha as preferências do usuário mais atualizadas (com que frequência executar, quais pastas usar para as coisas, qualquer outra coisa que o usuário possa especificar). O usuário pode alterar as configurações a qualquer momento, à vontade, e eu gostaria que o serviço soubesse quase imediatamente. Aqui estão as opções que estou avaliando:

O formulário e o compartilhamento de serviço usam o mesmo objeto "Configurações" de um terceiro projeto compartilhado e o formulário usa uma chamada "UpdateSettings (newSettings)" do WCF para informar ao serviço que houve alterações (ou, opcionalmente, uma chamada para atualize cada configuração individual, embora isso pareça muito com chamadas diferentes). Atualmente, uso o WCF para mensagens básicas, mas o objeto de configurações pode ser enorme, pois há muitas outras coisas láFormulário e Serviço usam um arquivo de configuração comum (XML ou o mesmo objeto de configurações de # 1, mas serializado em disco). O formulário apenas grava uma nova cópia do objeto após sua alteração, e o serviço verifica de vez em quando e o seleciona se for novo, atualizando sua cópia das configuraçõesO mesmo que o nº 2, mas com uma chamada básica do WCF que informa ao serviço para obter as configurações. Essencialmente, uma versão "sob demanda" em vez de "sondagem" do nº 2.

Sei que o melhor é subjetivo, mas estou interessado em quaisquer razões óbvias a favor ou contra essas escolhas. Como terei que salvar minhas configurações entre as execuções do aplicativo (reinicializações, etc.), terei que serializar as configurações em disco de qualquer maneira, então já estou me inclinando para o # 2 ou # 3. Vou precisar de um local no disco onde eu possa salvar as configurações, mas talvez a pasta AppData funcione bem, embora isso permita apenas que os administradores alterem as configurações, pois são os únicos que têm permissão para gravar neste local (onde todos os usuários, incluindo a conta de serviço, podem lê-lo).

Obrigado pela sua compreensão!

questionAnswers(4)

yourAnswerToTheQuestion