Nous développons une application Windows Forms qui sera installée sur environ 1 000 PC. Les utilisateurs peuvent exécuter plusieurs instances de l'application en même temps. Les clients sont tous sur un intranet unique.Windows Forms & WCF - Communication d'application client
Des modifications de l'application peuvent provoquer des modifications d'enregistrement de base de données, qui à leur tour doivent être communiquées aux autres clients afin que leurs interfaces utilisateur soient mises à jour.
Notre équipe a parlé de deux approches différentes:
1. paquets Multicast
Le client source modifie les enregistrements et envoie ensuite un paquet de multidiffusion avec une charge utile que quelque chose a changé. Les autres clients reçoivent ceci et récupèrent les données spécifiées. Nous devons prendre en compte les cas où le paquet n'est pas reçu, en retombant sur la récupération active des données.
Ma question à ce stade est de savoir comment un client sait qu'il n'a pas reçu un paquet? (Ne sait pas ce que vous ne savez pas) Ce qui nous amène à un journal des événements avec des horodatages dans la base de données, et les contrôles de l'interface utilisateur suivre la dernière fois qu'ils ont été mis à jour. Ils sont mis au point, vérifient leur horodatage et mettent à jour au besoin. Quelqu'un d'autre a déclaré que les éléments de l'interface utilisateur se rechargeraient à chaque fois qu'ils sont mis au point (pensez aux modes dans Outlook, en plaçant les contrôles à l'avant d'un espace de travail avec CAB). Et que la multidiffusion consiste à mettre à jour les clients que leur contexte actuel a changé. S'ils le manquent, ils travaillent avec des données périmées jusqu'à ce qu'ils changent de mode et reviennent.
2. WCF et Callbacks
enregistrer des clients avec des contrats WCF pour callbacks sur une tcp obligatoire. La principale préoccupation technique à cet égard est le serveur de maintenance de nombreuses sockets ouverts. Nous avons lu sur la façon dont il n'est pas ouvert dans le sens traditionnel, il est endormi pendant un maximum de 90 secondes et ensuite rétabli à ce moment-là. Nous avons également lu sur le nombre maximal de connexions ouvertes qu'une machine Windows 2003 Server peut gérer, et comment modifier cela dans le registre.
Si nous avons 1000 connexions socket ouvertes sur un serveur, cela va-t-il s'effondrer?
Si quelqu'un a fait face à la même situation et a essayé ou évalué l'approche WCF, nous aimerions en entendre parler.
Vous touchez à beaucoup de choses dont nous avons discuté et auxquelles nous pensons, comme les mises à jour par lots. Vous avez souligné que je n'ai pas entièrement décrit l'environnement, mais il s'agit d'environ 1 000 utilisateurs sur le même LAN physique dans des bâtiments géographiquement adjacents. Les données ne couvrent pas plusieurs zones verticales, tous les utilisateurs regardent à peu près les mêmes données, certains peuvent modifier des éléments, et la plupart ne le peuvent pas, l'exception étant un module d'organisation personnelle. Je pense que votre réponse vous aide, donc +1, mais je vais voir si quelqu'un a essayé cela et connaît des problèmes de performance/ressources. Je vous remercie. – blu
Génial. En fait, je serais intéressé d'apprendre le résultat de ceci; au moins de toute preuve de concept que vous pouvez faire. Ce serait une bonne chose pour vous de bloguer sur (indice, indice). –