2010-05-19 4 views
1

Je souhaite communiquer des objets sérialisés xml du serveur au client et vice-versa. Maintenant, il est (probablement) facile d'invoquer des méthodes à partir d'un client mobile (framework compact) en utilisant WCF, mais y a-t-il un moyen pour que le serveur puisse invoquer des méthodes côté client ou autre? Je sais que les contrats de callback ne sont pas disponibles dans le framework compact comme vous pouvez le voir ici: http://blogs.msdn.com/andrewarnottms/archive/2007/09/13/calling-wcf-services-from-netcf-3-5-using-compact-wcf-and-netcfsvcutil-exe.aspxWCF - Compact Framework - Extraction des données du client mobile

A l'origine je pensais à la programmation de socket et de le développer moi-même, puis quelqu'un a mentionné WCF. Mais il semble que WCF ne fonctionnerait que dans un environnement non mobile car j'ai besoin de rappels.

Quelqu'un peut-il m'aider? Est-il possible de développer une communication bidirectionnelle avec un serveur de bureau et plusieurs clients mobiles en utilisant WCF, ou devrais-je faire de la programmation socket?

Merci pour tout conseil ou toute forme d'aide!

+0

Vous voudrez peut-être nous donner un peu plus de détails sur votre matériel. Je ne vois pas de balise Windows Mobile, ce qui me porte à croire que vous utilisez un périphérique CE générique et peut avoir la possibilité de changer le système d'exploitation. Cette information peut affecter les réponses des personnes. – ctacke

Répondre

0

Même si vous allez dans des sockets, cela peut être un peu difficile en raison du routage, du filtrage de porteuse et des traductions NAT (vous n'avez pas mentionné la topologie de votre réseau). C'est la raison pour laquelle la plupart des applications mobiles doivent interroger le serveur, même s'il s'agit d'un paradigme «push» (comme le mécanisme de poussée d'Exchange, où le client interroge réellement). En règle générale, sauf si vous êtes sur un réseau sans fil local où vous disposez d'un accès réseau solide, routable et non filtré, le client doit régulièrement appeler le serveur et demander si le serveur dispose de données. Si c'est le cas, il extrait les données du serveur.

EDIT

Maintenant que nous savons un peu plus sur votre topolgy de votre commentaire, je peux vous orienter un peu plus. Malheureusement, Microsoft n'a pas facilité l'accès aux services Windwos CE (WCF ou autre). En théorie, il y a l'infrastrucure requise pour créer votre propre canal WCF et héberger un service, mais ce n'est pas une tâche triviale. J'ai étudié la question il y a un certain temps et je me suis dit que c'était quelques mois de travail et que cela aurait été avec l'aide de quelqu'un de Redmond qui connaissait le fonctionnement du canal Exchange existant.

Personnellement, j'opterais pour héberger un service Web basé sur REST en utilisant our Padarn web server parce que c'est simple à faire et je l'ai fait pour un certain nombre de clients maintenant. Je me rends compte qu'il est un peu intéressé de proposer Padarn comme une solution, mais la raison pour laquelle j'ai implémenté IHttpHandlers personnalisé dans Padarn était parce que je ne pouvais pas trouver autre chose qui fournisse un moyen facile pour un appareil CE d'héberger son propre services et c'est un problème que nous devons souvent fournir une solution pour. Les autres options seraient des choses comme une solution de socket propriétaire, hébergeant un serveur FTP sur l'appareil, en utilisant le serveur HTTP (odieux, IMO) fourni par MS avec ISAPI, Telnet ou quelque chose du genre. Tous semblent être un hack, beaucoup de travail ou les deux.

+0

Eh bien, en fait je travaille dans un réseau sans fil local. Aussi, je veux que le serveur tire les données du client et non l'inverse! – jagse

+0

Je comprends que vous voulez tirer de l'appareil. Dans de nombreuses applications (comme sur un réseau cellulaire - vous ne l'avez pas spécifié), cela est soit impraticable, soit impossible. – ctacke

1

at ctacke

Nous vous remercions de votre aide. En fait, j'ai trébuché sur votre serveur web Padran avant. Havent vraiment vérifié encore. Mais je vais certainement le faire plus tard. Quoi qu'il en soit, une solution de socket ne semble pas si mal pour le moment. En attendant, j'ai pensé qu'il est assez facile d'envoyer des données de plusieurs clients à un «serveur socket». Si je peux gérer ces connexions d'une manière ou d'une autre, je peux renvoyer des données aux clients. Et puis je devrais trouver une sorte de protocole qui gère les données ou les commandes que j'envoie sur le réseau ... Je suppose que la partie la plus difficile serait de créer un tel protocole car je n'ai pas la moindre idée de cette atm ...

Questions connexes