2010-10-13 4 views
1

J'ai une application client/serveur et je cherche des conseils sur la façon de gérer l'interface entre les deux. Le serveur/les clients seront déployés sur un réseau local (potentiellement WAN, mais définitivement géré par le client et non centralisé). Je considère ces deux options:Application client-serveur: mise à jour automatique à partir du serveur local ou de l'interface versionnée?

  1. Le client et le serveur peuvent être des versions différentes. De cette façon, l'interface WCF entre eux doit prendre en charge le versionnement - si l'un a été mis à jour et pas l'autre, l'application doit encore fonctionner.
  2. Le serveur envoie les mises à jour au client, le client installe automatiquement la mise à jour avant de communiquer. Aucun versionnement requis, car le serveur ne communiquera pas avec un client obsolète.

Le client est un service Windows qui s'exécute en tant que LocalSystem, donc il n'y a pas de problème de permissions avec une mise à jour automatique. # 2 semble plus propre, car il n'y a pas de versioning de l'interface à suivre, mais je crains de manquer une raison évidente de ne pas le faire en faveur de # 1. L'application client est petite - moins de 500K - donc la bande passante des mises à jour (que je ne m'attends pas à fréquenter) n'est pas vraiment un problème non plus.

Répondre

0

Optez pour la mise à jour automatique. Le versioning apporte une complexité que vous pouvez simplement faire sans dans ce scénario.

1

Je pourrais recommander une combinaison des deux. Tout d'abord, définissez une référence pour quelle version des bibliothèques WCF, vous souhaitez utiliser, qui inclut System.Serialization car elle inclut les attributs DataContract.

Définissez ces versions explicitement dans vos références de sorte que si vous mettez à niveau la version .NET, elle continuera à utiliser l'ancienne version et non la nouvelle. Ensuite, vous devriez être libre de mettre à jour toutes les autres bibliothèques référencées sans vous préoccuper des mises à niveau qui affectent votre interface.

En ce qui concerne la mise en œuvre de la deuxième option, je recommande presque la mise en place d'un deuxième service sur le client qui traite uniquement d'obtenir des informations de mise à niveau à partir du serveur. S'il est nécessaire de mettre à jour les bibliothèques WCF, alors ces mises à jour pourraient être poussées (cependant, cela n'arrivera probablement pas très souvent).

Questions connexes