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?
Respuesta
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.
+1 Genial para unirse a la fiesta :) –
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
Aquí están algunas opciones para su uso en una red interna:.
- MSQM
- 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!
@downvoter, ¿qué pasa con mi respuesta? –
Pruebe comprobar WebSync, un servidor de cometas para IIS/.NET. Ahora tiene soporte completo de marco compacto.
- 1. ¿Cómo puede enviar datos a un cliente de página web?
- 2. ¿Cómo selecciono programáticamente una pestaña en un .NET CF TabControl?
- 3. C# asíncrono servidor web - cómo enviar datos al cliente
- 4. ¿Cómo puede el servidor enviar datos al cliente?
- 5. SignalR: Cómo enviar datos a IConnected.Connect()
- 6. ¿Cómo enviar un POST en .net vb?
- 7. Enviar datos a un hilo específico
- 8. ¿Cómo enviar un comando personalizado a un servicio Windows .NET desde el código .NET?
- 9. Cómo enviar archivos grandes de cliente a servidor usando WCF?
- 10. Cómo enviar datos a ASP.NET HttpHandler?
- 11. Manejando diferentes resoluciones en Visual Studio 2008 para .NET CF
- 12. Inteligente o no: Persista datos serializados (dotnet-protobuf, protobuf-net, json) en una base de datos relacional en CF
- 13. ¿Cómo enviar datos de un dispositivo Android a otro?
- 14. Cómo agregar atributos a xml usando XmlDocument en C# .net CF 3.5
- 15. Detección de conexión USB - C# .Net CF 3.5
- 16. cliente TIBCO.EMS .NET/canal WCF
- 17. . La aplicación .NET no puede enviar el certificado del cliente: ¿gana 7 frente a Win XP?
- 18. ¿Cómo forzar al cliente de WCF a enviar el certificado del cliente?
- 19. .NET "Enviar informe de error a [me]"
- 20. ¿Qué puedo usar en .NET CF como reemplazo de HttpUtility.UrlEncode
- 21. sesiones Coldfusion - ¿cómo es exactamente CF identificación de una conexión/cliente único
- 22. Java servicio web volviendo objeto nulo a un cliente .NET
- 23. ¿Enviar archivo de cliente a servidor usando XMLRPC?
- 24. enviar un mensaje de texto a través de .net
- 25. Enviar un mensaje a un cliente a través de su socket.id
- 26. Enviar un mensaje a todos los clientes de un Grupo, a excepción del cliente actual
- 27. ¿Cómo enviar archivos XML para el cliente en ASP.NET MVC
- 28. ¿Cómo enviar objetos a través de NamedPipe en .NET 3.5?
- 29. ¿Cómo enviar datos a través de PendingIntent a Broadcast?
- 30. Utilizar un intento para enviar datos a mi actividad
¿te importaría compartir el código fuente mencionado (POC)? –