Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAdoncia Cerrito Modificado hace 11 años
2
Alejandro Mezcua MVP Device Application Development http://www.byteabyte.net/ alejandro.mezcua@byteabyte.net
3
Direccionamiento de un dispositivo Cambia entre muchas redes Cambia de direcciones Conectado ocasionalmente Se puede apagar Zonas de no cobertura ¿Cómo enviar y recibir mensajes en esta situación?
4
Para el direccionamiento de un dispositivo Usar una dirección independiente de la conexión (email) Para las conexiones ocasionales Almacenar los mensajes en un sitio accesible
5
Estos requisitos los cumple Microsoft Exchange 2007 Direcciones de email por usuario Buzones para el almacenamiento temporal de los mensajes Conectividad por diversos medios
6
Comunicación asíncrona por naturaleza No se puede saber ¿Cuándo llega un mensaje? ¿Se ha recibido? Diseñar las aplicaciones con esto en mente
7
Transportes WCF (Windows Communication Foundation) que aprovechan Microsoft Exchange Server 2007 Versión para PC Versión para Windows Mobile Desarrollados en conjunto por el equipo de Exchange y el de.NET Compact Framework
8
Existe transporte para servicios Web WCF Se pueden crear nuevos transportes en la infraestructura de WCF
9
Windows Mobile WindowsMobileMailBinding PCs ExchangeWebServiceMailBinding Incluido con.NET Compact Framework 3.5 SDK
10
Usa la conexión de ActiveSync Si ActiveSync está conectado al PC, conecta directamente Si se ha configurado AUTD (Always Up To Date) se realiza la sincronización al llegar nuevos elementos
11
Usa Exchange Web Services Cada cierto tiempo (configurable) conecta con el servidor para ver si hay nuevos mensajes (POLL)
12
La comunicación ha de ir codificada Conexiones https ActiveSync usa https Los equipos han de confiar en el emisor del certificado Si no se verifica el código genera excepciones
13
Un mensaje se envía a una dirección de email y a un canal (identificador texto) Esto permite disponer de varias aplicaciones usadas desde la misma dirección de email (con diferentes canales) Equivalente a direcciónIP:Puerto
14
Un mensaje es una objeto serializado a Xml Se definen las clases como serializables Es necesario definir un serializador para establecer cómo se crea el Xml a partir de la clase Clase que herede de XmlObjectSerializer Suele bastar con serialización simple Se pueden compartir entre proyectos PC y.NET CF Los dos han de entender los mismos mensajes
15
WindowsMobileMailBinding o ExchangeWebServiceMailBinding dependiendo del caso Se usará tanto para enviar como para recibir mensajes. _binding = new WindowsMobileMailBinding(); _binding.AcceptExistingMessages = true; … _binding = new ExchangeWebServiceMailBinding( new Uri(_exchangeServerUrl), new System.Net.NetworkCredential(_exchangeServerMailbox, _exchangeServerPassword) );
16
Necesario para enviar mensajes Mismo código en PC y Compact Framework BindingParameterCollection parameters = new BindingParameterCollection(); _channelFactory = _binding.BuildChannelFactory (parameters); _channelFactory.Open(); _outChannel = _channelFactory.CreateChannel( new System.ServiceModel.EndpointAddress( MailUriHelper.CreateUri( _channelName, _email)) ); _outChannel.Open();
17
SimpleObjectSerializer serializer = new SimpleObjectSerializer(typeof(ObjetoAEnviar)); System.ServiceModel.Channels.Message msg = System.ServiceModel.Channels.Message.CreateMessage( MessageVersion.Soap12WSAddressing10, _accion, _objetoAEnviar, serializer); _outChannel.Send(msg); Serializarlo antes al formato requerido Mismo código en PC y Compact Framework El canal se puede quedar abierto para reutilizarlo
18
Necesario para leer mensajes Bucle en thread secundario Mismo código en PC y Compact Framework Se puede usar la cabecera action para determinar el tipo de mensaje El servidor y el cliente han de estar de acuerdo en la cabecera, es texto.
19
BindingParameterCollection parameters = new BindingParameterCollection(); IChannelListener listener = _binding.BuildChannelListener ( MailUriHelper.CreateUri(_channelName, _emailAddress), parameters); listener.Open(); IInputChannel inputChannel = listener.AcceptChannel(); inputChannel.Open(); listener.Close(); // Se puede cerrar una vez aceptado el canal. System.ServiceModel.Channels.Message reply = null; while (_processMessages){ if(inputChannel.TryReceive(new TimeSpan(0, 0, 0, 0, 2000), out reply)) { if(reply != null) { // Se ha recibido un mensaje, ver su tipo if(reply.Headers.Action == accion) { // Realizar tarea con el mensaje } inputChannel.Close(); listener.Close();
20
{ un ejemplo }
21
Mostrar el uso del transporte de email de WCF en.NET Compact Framework 3.5 Ver un ejemplo de integración de una solución completa (móvil – Web)
23
{ en vivo }
24
Aplicación ASP.NET Se encarga de Mostrar las localizaciones en un mapa de Virtual Earth
25
{ Aplicación Web }
26
Aplicación Windows Forms.NET Compact Framework 3.5 Se encarga de Comunicarse con el GPS Localización desde la aplicación Windows Mobile Localización solicitada por la central Mensaje WCF desde la aplicación PC Enviar mensajes a la central mediante ActiveSync
27
{ Cliente Windows Mobile}
28
Aplicación Windows Forms Se encarga de Solicitar localizaciones puntuales de usuarios Manda mensaje WCF a Windows Mobile Mostrar las localizaciones obtenidas en un mapa Recibe mensajes WCF con datos de la posición Integra interface Web para mostrar la localización en Virtual Earth
29
{ Aplicación de central }
30
{ ¿Preguntas? } Alejandro Mezcua MVP Device Application Development http://www.byteabyte.net/ alejandro.mezcua@byteabyte.net
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.