2010-01-07 16 views
5

Aunque es posible realizar un sondeo de un servicio web, ¿conoce otro método para enviar cambios a un cliente móvil, excepto el uso del transporte de correo del servidor de intercambio?Cómo enviar datos a un cliente .NET CF?

+0

¿te importaría compartir el código fuente mencionado (POC)? –

Respuesta

3

Como Mark Seemann worte: Una vez hice un POC de un sistema de notificación de cliente para .NET CF cuando estaba en el equipo de Microsoft Dynamics Mobile.

En ese momento no encontré ninguna solución lista para usar que pudiera hacer esto y no quería utilizar la conexión de Exchange Server porque los usuarios no tenían una cuenta de AD y la mayoría de las veces no usó el servidor de intercambio. Así que estaba en la misma situación que tú ahora. Empecé a buscar posibles soluciones ...

Me di cuenta de que el servidor no podía conectarse al cliente ya que la dirección IP de este cambia constantemente (pasando de 3G a WiFi, perdiendo conexión, etc.). El clienta tuvo que conectarse al servidor. Además, descubrí que la mayoría de las redes permiten conexiones HTTP pero no siempre conexiones TCP personalizadas a través de puertos personalizados.

Utilicé "Comet" para realizar solicitudes HTTP de larga data desde el cliente (.NET CF) al servidor (IIS) y envié las notificaciones al cliente mediante esta conexión. Si el cliente obtuvo un tiempo de espera antes de recibir una notificación, simplemente haría una nueva solicitud.

En el lado del servidor, utilicé una combinación de un AsyncHttpHandler y espero los hilos que verificaron los mensajes a los clientes conectados cada segundo. Es importante usar AsyncHttpHandler o bloqueará el servidor IIS.

El POC funcionó bien y resultó ser una solución confiable. Hay algunos inconvenientes en esto: si no tiene cuidado, va a drenar la batería con bastante rapidez.

Lamentablemente, simplemente hay demasiadas líneas de código para que publique el código aquí, pero si desea más información, póngase en contacto conmigo y le enviaré un correo electrónico a mi POC.

+0

+1 Genial para unirse a la fiesta :) –

3

Cuando trabajé en el equipo de Microsoft Dynamics Mobile (hasta enero de 2009) no había otra forma incorporada de hacer esto en .NET CF que no sea a través del transporte de correo de Exchange Server.

Sin embargo, uno de mis colegas hizo un pinchazo donde el cliente móvil abrió una conexión HTTP al servicio y lo mantuvo abierto, por lo que el servicio tenía un canal abierto en el que podría presionar.

AFAIK, esto es básicamente lo que hace el Exchange Server Mail Transport. IIRC, que lo consiguió trabajando bien, pero le voy a mandar un tweet y ver si puedo conseguir que se interrumpiría

-1

Aquí están algunas opciones para su uso en una red interna:.

  1. MSQM
  2. TcpListener

Para la opción 1 necesita instalar otra pieza de infraestructura, pero obtiene una API y un protocolo estándar.

Para la segunda opción, debe implementar su propio protocolo.

¡Ambas opciones solo funcionan en un entorno cerrado!

+0

@downvoter, ¿qué pasa con mi respuesta? –

2

Pruebe comprobar WebSync, un servidor de cometas para IIS/.NET. Ahora tiene soporte completo de marco compacto.

Cuestiones relacionadas