객체 요청 브로커(Object Request Broker, ORB)는 분산 컴퓨팅 환경에서 사용되는 미들웨어 소프트웨어의 한 구성 요소이다. ORB는 네트워크로 연결된 서로 다른 컴퓨터에 존재하는 객체(소프트웨어 부품)들이 마치 같은 컴퓨터 내부에 있는 것처럼 서로의 메서드(기능)를 호출하고 응답을 받을 수 있도록 중개하는 역할을 수행한다.
개념
분산 객체 컴퓨팅에서 ORB는 클라이언트와 서버 객체 사이의 통신을 중재하는 핵심 장치이다. 클라이언트 프로그램이 원격 객체의 메서드를 호출하면, 호출 데이터가 네트워크를 통해 전송 가능한 형태로 변환(marshalling)되어 서버 측 ORB에 전달된다. 서버 측 ORB는 해당 객체를 찾아 요청된 작업을 실행하고, 그 결과를 다시 클라이언트 측으로 반환한다. 이후 클라이언트 측 ORB는 반환된 데이터를 원래의 자료 구조로 역변환(demarshalling)하여 클라이언트 응용 프로그램에 전달한다. 이 일련의 과정은 위치 투명성(location transparency)을 제공하여, 원격 객체가 로컬 객체와 동일한 방식으로 사용될 수 있게 한다.
표준화
ORB는 객체 관리 그룹(Object Management Group, OMG)에 의해 표준화되었다. 가장 대표적인 표준은 공통 객체 요청 브로커 구조(Common Object Request Broker Architecture, CORBA)로서, 서로 다른 운영체제, 프로그래밍 언어, 하드웨어 환경에 걸쳐 객체 간 상호 운용성을 제공하기 위해 정의되었다. CORBA 환경에서 각각의 ORB는 인터페이스 정의 언어(Interface Definition Language, IDL)를 사용하여 객체 간 인터페이스를 기술하며, 서로 다른 ORB 간의 통신은 IIOP(Internet Inter-ORB Protocol) 프로토콜을 통해 이루어진다.
주요 기능
ORB는 기본적인 마샬링(직렬화) 기능 외에도 분산 트랜잭션, 디렉터리 서비스, 실시간 스케줄링 등 다양한 부가 기능을 제공하기도 한다. 또한 비동기 호출 패턴과 플러그형 통신 프로토콜을 지원하는 구현체도 존재한다.
구현 사례
ORB 개념을 기반으로 구현된 대표적인 기술에는 CORBA, 마이크로소프트의 DCOM(Distributed Component Object Model), 자바의 RMI(Remote Method Invocation), .NET Remoting, Windows Communication Foundation(WCF), ICE(Internet Communications Engine) 등이 있다. GNOME 프로젝트에서 사용된 ORBit과 같은 오픈 소스 CORBA 구현체도 존재한다.
관련 개념
객체 요청 브로커는 메시지 브로커(Message Broker), 분산 객체 통신(Distributed Object Communication), 원격 프로시저 호출(RPC), 미들웨어 등의 개념과 밀접한 관련이 있다.