ventajas una son socket qué que procesos los informatica flujo explica entre elementos conexión conexion concepto comunicacion sockets windows-8 microsoft-metro windows-runtime zeromq

una - ventajas de los sockets



¿La fachada del zócalo de Berkeley para WinRT Networking plausibilidad? (2)

Aunque está lejos de ser completo o correcto y tiene muchos errores, pero he comenzado este proyecto aquí https://winrtsock.codeplex.com . No he implementado ninguna escucha / aceptación hasta el momento

Esta es una copia de una publicación que he enviado a la lista de correo de ZeroMQ. Sin embargo, la pregunta no es específica de ZeroMQ, sino de la necesidad de una capa de ''mapeo'' sobre la funcionalidad de red provista en WinRT para proporcionar una ''fachada Berkeley Socket'' más normal para el código C ++ al compilar contra WinRT:

Hola a todos, he usado ZeroMQ en una aplicación móvil (consulte http://www.ibuzzedfirst.com ) anteriormente, para las versiones de iPhone y Android, ya que esas plataformas admiten el desarrollo nativo / C ++ / Socket, y por lo tanto ZeroMQ.

Para la versión de WindowsPhone 7.5 (OS 7.1), tuve que volver a implementar cualquier funcionalidad requerida de ZeroMQ desde cero, ya que WinPhone 7.5 solo es compatible con C #, no con C ++ (es efectivamente una aplicación de C # Silverlight). Además, WinPhone 7.5 solo proporciona su propia ''versión'' de soporte Socket ( http://msdn.microsoft.com/en-us/library/sb27wehh%28v=vs.95%29.aspx ) que solo admite versiones de funciones Async , por ejemplo, ConnectAsync, SendAync, ReceiveAsync, etc. Sin embargo, la falta de C ++ hizo que este sea un punto discutible.

Como tal, para la versión de WindowsPhone 7.5, restringí la aplicación a la funcionalidad ''cliente'' (Contestant) solamente, y no implementé la parte ''servidor'' (Quiz Master). Esto se debe a que la parte del cliente de la aplicación solo envía y recibe solicitudes, respuestas y suscripciones al servidor, mientras que el servidor utiliza la funcionalidad multi-threaded multiusuario inherente de ZeroMQ. Fue (relativamente) simple recrear los protocolos / encabezados de transporte de ZeroMQ para uso del cliente y usar el soporte de WindowsPhone Socket para proporcionar comunicaciones.

Ok, ahora estoy buscando portar la aplicación a WinRT en Windows 8. (La versión de escritorio / tableta primero - el Windows Phone 8 RT SDK aún no está disponible, pero será similar). La buena noticia es que C ++ es compatible con WinRT, ¡yay! (De hecho, todavía no es tan simple, al escribir aplicaciones WinRT de C #, puede compilar para ''AnyCPU'', tan pronto como incluya una porción de C ++, debe compilar 3 versiones diferentes - x86 / Win32, x64 y Versiones ARM, pero ese es un problema diferente).

Desafortunadamente, como Windows 7/8 Phone, WinRT NO es compatible con el acceso ''normal'' de Berkeley Socket, sino que ofrece su propia ''versión'' de programación de Socket, con clases discretas para diferentes escenarios de socket, por ejemplo, StreamSocket para un cliente TCP conectado ( http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.sockets.streamsocket.aspx#methods ), StreamSocketListener para un servidor TCP vinculable ( http://msdn.microsoft.com/en-us/library/windows/apps/windows.networking.sockets.streamsocketlistener.aspx#methods ), y DatagramSocket / DatagramSocketListener para las versiones UDP. Además, solo se proporcionan versiones asíncronas de todos los métodos.

Entonces, parece que para que ZeroMQ compile exitosamente en WinRT, voy a tener que escribir una capa de Fachada que proporcione una interfaz C ++ tipo Berkeley Socket, y debajo realizar la asignación necesaria a la versión de la programación de Socket proporcionada por WinRT .

¿Alguien más comenzó este viaje o escribió una fachada similar? ¡Interesado en escuchar los pensamientos de todos, especialmente porque WinRT se ve bastante ''grande''!


Puede considerar algo como ACE . Proporciona abstracciones de un nivel ligeramente superior a los sockets y admite sistemas operativos integrados de Windows más antiguos, como WinCE y similares. Es de código abierto, por lo que puede probarlo, piratearlo para que funcione y contribuya de nuevo. Alternativamente, puede contactar a una de varias organizaciones comerciales o personas que ofrecen apoyo y contratan el trabajo.