2009-02-16 7 views
0

Où commencerais-je à déclencher un événement sur un réseau? Dans mon cas, quand je change un enregistrement de base de données, je veux informer tout autre utilisateur sur le réseau exécutant la même application qu'il a changé.Envoyer un événement sur un réseau

Edit:

Il n'y a rien intelligent, ne vous excitez pas. J'écris un système de gestion de documents et quand un document est modifié de quelque façon que ce soit (supprimé, extrait, émis, etc.), je veux dire à tout le monde que quelque chose a changé. J'allais utiliser un FileSystemWatcher pour regarder un dossier sur le serveur, signer chaque instance jusqu'à son événement Deleted et juste créer et supprimer un fichier dans le répertoire surveillé, mais c'est juste sale n'est-ce pas? Comme vous pouvez le constater, je ne suis pas un programmeur professionnel :)

Répondre

2

Quel genre de période de notification êtes-vous après? Je voudrais personnellement que les machines client interrogent le serveur pour les mises à jour - par exemple. "Ma dernière mise à jour a eu lieu le 17/02/2009 11:56:00 - qu'est-ce qui a changé depuis?" - en implémentant un webservice ou un simple serveur socket sur le serveur actuel. Sinon, s'il s'agit d'une application distribuée, votre pari "le plus simple" serait une diffusion UDP - en supposant qu'ils sont sur le même sous-réseau et ne sont pas séparés par 20 degrés de routeurs. Pouvez-vous nous en dire un peu plus sur votre situation?

0

Chaque instance de votre application cliente peut être à l'écoute d'un socket de messages. Lorsque votre application serveur modifie l'enregistrement de la base de données (pour le compte d'un client, ou pour toute autre raison), il insère également un message "quelque chose a changé" dans la file d'attente des messages pour chaque client.

L'application serveur peut soit envoyer immédiatement le message à l'application cliente, soit interroger l'application cliente.

0

Demandez aux clients de s'enregistrer avec une application centrale. Chaque fois que le client met à jour l'enregistrement, il peut informer l'application centrale qui l'a ensuite diffusée aux clients enregistrés. Déterminez par vous-même sur le mécanisme de transport, mais vous voudrez peut-être envisager des douilles.

0

WCF peut rendre cela possible pour vous. J'ai un serveur qui envoie et alarme à tous les clients quand quelque chose se passe.

0

Comment gérez-vous les modifications de fichiers?

Je suppose que vous utilisez une base de données (Si non, c'est le bon moment pour en créer un) - auquel cas, je recommanderais d'écrire un service web ASP.NET (extension .asmx - Visual Studio peut les rendre vraiment facile) pour communiquer avec cette base de données et dire au client si des fichiers ont été modifiés depuis la dernière vérification. Essayez de créer un service Web pour le serveur dans Visual Studio pour voir comment cela est fait. Pour consommer ("utiliser") un webservice sur la machine cliente, ouvrez votre projet VS, faites un clic droit sur le noeud "Références" sous le projet et sélectionnez "Ajouter une référence Web".

Le client aurait besoin d'interroger le service Web, car il s'agit d'un mécanisme de type réponse-appel unidirectionnel.

L'avantage de ceci est que vous n'avez pas besoin de vous soucier des partages réseau et de telles choses. Cependant, l'inconvénient est que vous avez besoin d'un serveur Web et d'un moteur de base de données compatibles ASP.NET, à moins qu'ils ne soient déjà présents.

Questions connexes