2010-04-20 8 views
1

Je suis nouveau pour les services WCF. Je travaille avec WCF depuis plus de deux mois et j'adore ses capacités. J'utilise un WCF auto-hébergé dans un service Windows. La liaison est netTCP car le client et le service sont sur la même machine. Ma communication est en duplex et j'utilise une session WCF. Avec ces fonctionnalités, l'un des besoins de conception de mon application est que l'interface utilisateur soit toujours connectée au service. J'utilise un thread séparé dans mon interface pour toujours interroger l'état de la connexion et recréer et ouvrir le canal au cas où à l'état fautif. Comme j'ai des rappels asynchrones du service, le client devrait toujours être connecté. Voici quelques questions:Communication WCF et client sur un service WCF auto-hébergé

  1. Est-il acceptable d'utiliser des techniques d'accueil auto sachant que le client et le service sur la même machine? J'ai utilisé WCF pour faciliter la communication entre processus.

  2. Est-ce que cela a du sens de garder ce thread vivant du client ou devrais-je utiliser une autre technique?

Je veux aller mieux dans l'utilisation et la configuration de WCF. Y a-t-il un bon livre ou du matériel de lecture en ligne sur les services WCF hébergés?

Veuillez nous consulter.

Merci,

Subbu

Répondre

2

je pense qu'il est tout à fait bon d'utiliser l'auto-hébergement avec WCF. J'ai implémenté de nombreux services hébergés dans un service Windows par exemple. Je suppose que vous parlez de clients et de serveurs hébergés dans différents processus sur la même machine? Si c'est le cas, alors idéalement, vous devriez utiliser binaire sur les tuyaux nommés dans vos liaisons.

Si client et serveur et physiquement dans le même processus, alors vous pourriez envisager d'utiliser quelque chose comme le transport nul de Roman Kiss pour réduire la surcharge de sérialisation. Son article CodeProject se trouve ici: http://www.codeproject.com/KB/WCF/NullTransportForWCF.aspx

Pour répondre point 2, je l'ai suggéré une approche alternative dans ma réponse à une autre question Stackover: WCF net.tcp server disconnects - how to handle properly on client side?

Hope this helps.

+0

Oui, le service wcf et le client sont sur deux processus distincts. Puisque les deux processus se parlent, j'ai hébergé un service WCF dans chacun d'entre eux et j'utilise les clients wcf des deux côtés en raison du besoin de communications asynchrones. J'utilise la liaison nette TCP. Parfois, je reçois une exception du client wcf disant "Connexion au serveur interrompu ..... timeout 2: 59: 999 ....." et quand je vérifie l'état du client, son réel dans un état ouvert. Comment est-ce possible? Est-ce que la liaison tcp nette a quelque chose à voir avec ça? – Subbu