WCF de pousser le client à travers un pare-feu?
J'ai besoin d'utiliser push-technologie avec WCF client de pare-feu. Ce doit être un problème commun, et je sais pour un fait, il fonctionne en théorie (voir les liens ci-dessous), mais je n'ai pas réussi à le faire fonctionner, et je n'ai pas été en mesure de trouver un exemple de code qui illustre.
Exigences:
- WCF
- Clients se connecte au serveur via le port tcp 80 (netTcpBinding).
- Serveur repousse des informations à intervalles irréguliers (1 min à plusieurs heures).
- Les utilisateurs ne devraient pas avoir à configurer son pare-feu, serveur pousse doit passer à travers les pare-feu qui ont tous les ports entrants fermé. TCP recto verso sur la même connexion est nécessaire pour cela, une double liaison ne fonctionne pas depuis un port doit être ouvert sur le client de pare-feu.
- Clients envoie des pulsations pour serveur à intervalles réguliers (par exemple tous les 15 minutes), de sorte serveur connaît client est toujours en vie.
- Serveur IIS7 avec.
La solution semble être en duplex netTcpBinding. Basé sur cette information:
WCF travers les pare-feu et Nat
En gardant les connexions ouvertes dans IIS
Mais je n'ai pas encore trouver un exemple de code qui fonctionne.. j'ai essayé la combinaison de la "Duplex" et "TcpActivation" échantillons à partir de Microsoft WCF Échantillons sans aucune chance. Svp quelqu'un peut-il m'indiquer un exemple de code qui fonctionne, ou construire un petit exemple d'application. Merci beaucoup!
OriginalL'auteur Sire | 2008-08-22
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé un couple de solutions:
ZeroC Glace GPL avec une option commerciale. Ne l'ai testé que rapidement. L'air plus puissant que .NET Remoting et est très fortement développée.
RemObjects Commerciale, le développement actif, prend en charge tout mais ne semble pas avoir toutes les fonctionnalités plus avancées que GenuineChannels utilisation.
GenuineChannels. Il utilise remoting avec beaucoup de belles fonctionnalités ajoutées, dont le plus important est qu'il fonctionne à travers les NATs sans la nécessité d'ouvrir le client de pare-feu. Malheureusement, il semble être très mort.
Une autre solution est d'utiliser le streaming avec IIS, selon cet article: En gardant les connexions ouvertes dans IIS
Le client fait la première connexion (http avec IIS6, tcp avec IIS7) pour le serveur sur le port 80, la connexion est ensuite maintenue ouverte avec un streaming réponse qui n'en finit pas.
Je n'ai pas eu le temps de l'expérience avec cela, et je n'ai pas trouvé un exemple qui dit qu'il est en mesure de résoudre le pare-feu de problème, mais voici un excellent exemple qui fonctionne probablement: Un flux XML.
OriginalL'auteur
Avez-vous essayé de regarder: http://www.codeproject.com/KB/WCF/WCF_Duplex_UI_Threads.aspx
Pouvez-vous donner des exemples de ce que vous avez déjà tenté de le faire? Avec des détails de pare-feu, etc, les messages d'erreur?
Si à la fois le client et le serveur peuvent être adressées directement et pare-feu ne sont pas un problème, avez-vous considéré permettant aux clients d'enregistrer une URL de fournir une prise en charge du contrat. Le serveur peut alors appeler le service à chaque fois qu'il doit, sans la nécessité d'établir une longue course (mais surtout la connexion inactive), évite la nécessité pour le cœur battant, et peut être fait résilience à travers des sessions\connexions.
OriginalL'auteur marcj
Dans la plupart des configurations de pare-feu, la connexion TCP va être démoli par le pare-feu s'il est en veille pour économiser les ressources. Le délai d'inactivité est probablement pas quelque chose que vous pouvez contrôler. Certains vont déchirer vers le bas si ils sont en veille et un plafond de ressources est d'être touché.
La plupart corp environnements ne permettent pas à toutes les machines pour faire une connexion TCP sortante de toute façon.
Également, à l'aide de ce mécanisme signifie que vous allez avoir des problèmes d'évolutivité. Je pense que plus de solution fiable est de la queue de l'information et d'avoir de vos clients sondage pour eux régulièrement. Utiliser la mise en cache si possible, de sorte que subséquente d'un client sondage obtenir les données en cache des clients proxy cache, si elles sont à l'aide de l'un.
Si vous avez à envoyer des données en temps opportun, dans les sous-deuxième terre (c'est à dire des services financiers), puis envisager de certaines infrastructures de messagerie d'une telle NServiceBus distributeur sur le côté client, mais qui va exiger d'un client installer...
Donc, avez-vous essayé d'utiliser Toredo? Ayant lu qu'il semblerait qu'il n'y est problème trop compliqué pour un utilisateur de l'installation.
OriginalL'auteur
Je n'ai pas essayé le scénario de vous en parler, donc je peux pas trop aider, désolé. Si vous avez besoin de contourner le client de pare-feu, vous pourriez vouloir vérifier ce post.
Bonne chance.
OriginalL'auteur smaclell
Avez-vous essayé ce que c'est?
DuplexHttpBinding
C'est à l'aide de smart interrogation technique encapsulé comme WCF personnalisés de liaison. Donc, il faut travailler hors de la boîte.
OriginalL'auteur chenz
Vous pouvez le faire à la suite du changement du client pour accéder duplex de service web sur le Pare-feu activé client.
OriginalL'auteur RockWorld