2

분산 시스템에서 지금 수업을 듣고 있으며 미들웨어에 대한 아이디어를 파악할 수 없습니다. 네트워크를 통해 응용 프로그램과 실제 통신 간의 추상화 수준을 제공하는 소프트웨어 계층이라는 것을 알고 있지만 구체적인 예가 필요합니다. 나는 CORBA와 Java RMI가 미들웨어의 예라고 알고 있지만 그것들은 나에게 의미가 없다.분산 시스템에서 미들웨어 란 무엇입니까?

DatagramSockets()을 통해 통신하는 Java에서 클라이언트 - 서버 프로그램을 작성할 때 미들웨어입니까? 그렇다면 왜? Java DatagramSocket() 메소드는 애플리케이션에서 네트워크를 통한 실제 통신까지의 추상화 수준을 제공합니다.

+1

다소 혼란스러운 용어입니다. 주로 사용자 지향 웹 응용 프로그램과 기본 데이터베이스 저장소 계층 사이의 연결과 같은 내부 API를 구현하는 소프트웨어 계층을 언급하는 데 사용되는 것을 볼 수 있지만 더 공식적인 용어는 CORBA 또는 Java RMI 용어가 어떻게 사용되는 것처럼 일관성이 많이 없습니다. [위키피디아 기사] (http://en.wikipedia.org/wiki/Middleware)는 상당히 유익합니다. – rra

+0

@rra에 동의합니다. 이 용어는 실제 의미가없는 윙윙 거리는 단어입니다. 어떤 사람들은 JSON 인코더와 디코더가 미들웨어라고 생각합니다. 결국 이것은 수많은 소프트웨어 구성 요소 사이에 위치하여 통신을 허용합니다. –

답변

1

나는 지금까지 의견 제시 자들에게 동의합니다. 이는 분명히 명확한 용어는 아닙니다.

그러나 내가 생각할 수있는 질문에 가장 적합한 것은 0MQ 또는 RabbitMQ과 같은 메시징 큐입니다. 이들은 TCP 또는 UDP를 직접 사용하는 것보다 다소 추상적 인 네트워크와 상호 작용하는 다양한 방법을 제공합니다. 둘 다 대부분의 분산 시스템 문제에 적용 할 수있는 "네트워크 패턴"의 사용을 권장합니다.

  • 0MQ는 클라이언트와 서버가 시작되는 순서에 대한 유연성을 제공, 메시지를 보낼 수 (/ 프로세스 사이/TCP를 통한/UDP를 통해/... 스레드 사이에) 여러 프로토콜을 사용하여 네트워크 연결 끊김과 거래 .

  • RabbitMQ (내가 잘 아는 바 없음)는 디스크에 유지되는 중앙 집중식 메시지 큐를 제공하며 네트워크의 클라이언트는 관련 대기열이 어디에 있는지 알 수 있습니다. (해당 대기열의 모든 생산자/소비자가).