No tengo mucha experiencia en programación de socket, pero intenté leer un poco al respecto. Estoy bastante familiarizado con MDB y las colas de mensajes. Alguien me ha dicho que la cola (por ejemplo, MDB) es "No mucho más que una conexión de socket directa". ¿Alguien puede comparar estos dos para mí?Colas de mensajes frente a sockets
Respuesta
eeeeemph ... esta persona estaba muy equivocada. Los dos son incomparables, ya que viven en diferentes capas. Es como decir que "una base de datos relacional no es mucho más que un archivo en un disco" o "una casa no es mucho más que un ladrillo".
La cola de mensajes es una pieza de software que pega emisores y receptores para que puedan comunicarse sin conocerse demasiado (ambos necesitan conocer la cola, por supuesto) y no necesita implementar código de red, manejo falla, enrutando un mensaje a muchos receptores, etc. El sistema funciona incluso si los remitentes y los receptores nunca están vivos al mismo tiempo, ya que las colas también sirven como un almacenamiento temporal para los mensajes no entregados. Además de eso, las colas pueden proporcionar servicios adicionales, como autorización, transacciones, etc.
Una conexión de socket es solo una abstracción de bajo nivel que dice: "actualmente dos programas pueden enviar datos a través de la red entre sí, al menos hasta la conexión se rompe por alguna razón ". Entonces sí, generalmente una cola de mensajes usará conexiones de socket para funcionar.
- 1. remota de mensajes C/C++ las colas
- 2. Colas de mensajes en Ruby on Rails
- 3. "Cadenas de mensajes" frente a "Hombre medio"
- 4. ¿Las colas de mensajes están obsoletas en Linux?
- 5. Sockets de dominio UNIX frente a memoria compartida (archivo asignado)
- 6. Bases y colas basadas en matriz frente a listas
- 7. ¿Cuál es mejor para IPC local, colas de mensajes POSIX (mqueues) o sockets de dominio Unix (locales)?
- 8. Creación dinámica de colas de mensajes asíncronos en Java
- 9. ¿Cómo adjuntaría un buzón TChan a un hilo y recibiría/enviaría mensajes utilizando sockets?
- 10. local frente a las colas remotas en pub de mensajería/sub
- 11. ¿Uso en el mundo real de JMS/colas de mensajes?
- 12. ¿Para qué ha utilizado colas de mensajes sysv/posix?
- 13. Colas de espera y colas en C#
- 14. Android - Sockets vs Polling
- 15. NUnit frente a MbUnit frente a MSTest frente a xUnit.net
- 16. ¿Cómo hacer que el TChan de Haskell difiera los mensajes como las colas de mensajes de Erlang?
- 17. Hilos frente a Async
- 18. Queues de bases de datos y procesamiento de colas
- 19. Temas virtuales/colas y durabilidad
- 20. Enviando datos de node.js a Java usando sockets
- 21. Conexión de Winsock a sockets de Linux
- 22. Descargar HTTP a través de sockets (C)
- 23. PHP Sockets está trabajando a medias
- 24. colas de mensajes asíncronos y procesamiento como Amazon servicio de cola simple en Django
- 25. iterador frente a referencia frente a puntero
- 26. ¿Cuáles son las desventajas de las colas de mensajes de Linux?
- 27. AMQP creando suscripciones a colas de forma dinámica
- 28. TransactionScope que se eleva a MSDTC al enviar entre colas?
- 29. Terminología de persistencia de objetos: 'repositorio' frente a 'almacenar' frente a 'contexto' frente a 'retriever' vs. (...)
- 30. Mensajes al estilo de Smalltalk frente a las funciones de estilo C
Oh, bien gracias. Entonces, ¿cuando alguien realmente usa solo un socket para transferir datos, simplemente hacen que las cosas sean más manuales y complicadas para ellos mismos? Me refiero a que las colas de mensajería simplemente se suman a eso para facilitarnos las cosas. Como una base de datos en la parte superior del archivo puro. Creo que esa persona podría haber querido decir que no se agregaron muchas funciones que no se pueden implementar usando los sockets y codificarlas manualmente. Gracias de todos modos por la aclaración. – Sara
Así que aquí está su respuesta a mi pregunta anterior: "Podemos implementar mensajes usando una conexión de socket simple. Las ventajas y desventajas: La codificación de nivel de socket es probablemente más compacta y basada en nuestras necesidades. Sin embargo, requiere que el desarrollador administre las capacidades ya están disponibles en muchos paquetes. La elección depende de muchos factores (tiempo, costo, talento, talentos futuros) " – Sara
La respuesta es cierta pero también bastante genérica. También abarca cosas como desplegar sus propios servidores http, bases de datos, sistemas operativos, etc. Reemplazar productos maduros con cerveza casera probablemente solo sea realista en casos en los que tenga requisitos muy específicos y al mismo tiempo muy limitados (como cuando tiene una cola que tiene que ser increíblemente rápida y compacta, pero no necesita ser confiable). o seguro). – fdreger