2012-05-19 15 views
11

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

22

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.

+0

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

+0

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

+2

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

Cuestiones relacionadas