Um mecanismo boa transmissão para inhouse aplicações .NET para anunciar sua localização e versão?

StackOverflow https://stackoverflow.com/questions/1821513

Pergunta

Eu gostaria de fornecer um grande número de inhouse aplicativos .NET com uma forma leve de anunciar que eles estão sendo usados. Meu objetivo é manter o controle de quais os usuários podem se beneficiar de apoio check-ins e / ou lembretes para atualizar.

Este é em uma rede interna. Há, definitivamente, a conectividade IP entre todas as máquinas, e provavelmente UDP. (Mas provavelmente não multicast.)

escrita a um conhecido inhouse ação ou carregar uma URL conhecida seria possibilidades, mas eu gostaria de minimizar o impacto sobre a própria forma mais completa possível aplicação, mesmo à custa de confiabilidade. Então eu prefiro não arriscar um tempo limite (por exemplo, se eu estou acessando algum recurso centralizado e desapareceu) e, idealmente, eu preferia não lançar um segmento de trabalho também.

Ele também seria bom para permitir que vários ouvintes, que é outra razão pela qual eu estou pensando em transmitir ao invés de invocar um serviço.

Existe algum tipo de fogo-e-esqueça mecanismo de transmissão que eu poderia usar com segurança e eficácia para isso?

Foi útil?

Solução

Há certamente muitas opções para isso, mas um que é muito fácil de implementar e atende aos seus critérios é uma Serviço web Asynchronous chamada.

Esta não exige que você para iniciar um thread de trabalho (Quadro vai fazer isso nos bastidores). Ao invés de usar uma das opções descritas no que apontam para buscar o resultado, simplesmente ignore o resultado, uma vez que não faz sentido para o aplicativo de chamada.

Outras dicas

Eu fiz algo semelhante, embora não exatamente um "braodcast"

Eu tenho um na ferramenta casa várias não-técnicos no uso empresa. Eu tenho que verificar um compartilhamento de rede para um EXE específico (o mesmo EXE você baixar se você queria usá-lo) e compara a versão # daquele arquivo com a execução de montagem. Se o da rede é mais recente, alerta o usuário para baixar o novo.

Um muito mais simples do que tentar criar um atualizador automático para algo que só vai ser usado dentro do mesmo edifício que me.

Se a atualização não é um problema (ou seja, não há casos em que usando a versão antiga é melhor), você pode fazer o que eu fiz com algo semelhante:

A aplicação que as pessoas realmente lançamento é um programa atualizador, ele verifica a versão do arquivo e data e hora em um compartilhamento de rede e se uma versão mais recente existe, copia para o diretório do programa. Em seguida, ele executa o programa (se ele foi atualizado ou não).

var current = new FileInfo(local);
var latest = new FileInfo(remote);

if (!current.Exists)
    latest.CopyTo(local);

var currentVersion = FileVersionInfo.GetVersionInfo(local);
var latestVersion = FileVersionInfo.GetVersionInfo(remote);

if (latest.CreationTime > current.CreationTime || latestVersion.FileVersion != currentVersion.FileVersion)
    latest.CopyTo(local, true);

Process.Start(local)

Eu também tenho o próprio programa verifique se as necessidades atualizador atualizar (como o atualizador não pode atualizar-se devido a bloqueios de arquivo)

Depois de algumas experiências, eu fui ficando bons resultados usando Win32 mailslots .

Não há envoltório oficial conseguiu, mas as funções são simples de usar via PInvoke, como demonstrado em exemplos como esta .

Usando um processador de mensagens 'domínio' fornece um mecanismo de transmissão verdade, permitindo que vários ouvintes e nenhuma exigência para um servidor bem conhecido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top