E D R , A S I H C RSS

코바용어정리

1. 클라언트

객체의 참조를 유지함으로써 원격 객체를 액세스할 수 있는 node(단어 선택 부적절한 것 같군 --;;)다. 즉 객체 레퍼런스를 사용하여 클라언트는 객체의 오퍼레션을 수행할 수 있게 된다. 원격 객체를 액세스 하는 과정에 대해 구체적으로 기술하면 다음과 같다. 클라언트는 언어 맵핑을 통해 객체와 ORB 인터페스에 액세스할 수 있다. ORB는 구현 객체와 클라언트 사의 커트롤 전달 및 데터 전달 관리를 책임지고 있다. 결국 클라언트는 언어 맵핑을 통해서 ORB와 상호 작용할 수 있고, ORB는 원격 객체에 대한 레퍼런스를 얻을 수 있게 된다. 런 방식으로 클라언트는 분산 환경하에서 객체를 름과 인터페스만으로 마음대로 참조할 수 있는 것다. ORB를 버스라고 생각하면 쉽게 해할 수 있을 것다.

2. 구현 객체

클라언트의 반대쪽에는 구현 객체라고 알려진 실제 객체가 있다. '구현 객체(Object Implementation)'는 실제 상태(state)와 객체의 반응 양상(behavior)을 규정하며 다양한 방식으로 구성될 수 있다. 구현 객체는 객체의 메소드와 객체에 대한 활성화 및 비활성화 프로시저를 정의한다. 구현 객체는 객체 어댑터의 도움을 받아 ORB와 상호 작용한다. 객체 어댑터는 구현 객체를 특정하게 사용하는 데에 편리하도록 ORB 서비스에 대한 인터페스를 제공하게 된다. 구현 객체는 ORB와 상호 작용하여 그 정체를 확립하고 새로운 객체를 생성하며 ORB에 따르는 서비스를 획득할 수 있도록 한다. 새로운 객체가 생성되면 ORB에게 통보되고 객체의 구현 어디에 위치하는가를 알게 된다. 호출 발생하면 ORB, 객체 어댑터, 스켈레톤은 구현의 적절한 메소드에 대한 호출 되도록 만들어야 한다.

3. 클라언트 스텁(Stub)

CORBA는 C++과 Java 같은 객체 지향 언어와 C와 같은 절차적 언어 양쪽 모두에서 사용될 수 있다. 객체 지향 언어에서는 사용자가 객체의 특성을 정의하고 그 프로퍼티에 액세스할 수 있게 해주는 메소드와 인터페스를 제공한다. 것은 비객체 지향 언어에는 없는 기능인데, 것들은 각각
의 인터페스 타입에 대해 스텁에 대한 프로그래밍 인터페스를 필요로 한다. 보통 스텁은 OMG-IDL로 정의되어 있는 객체 오퍼레션에 대한 액세를 하게 해주는데, 일단 프로그래머가 OMG-IDL 및 특정 프로그래밍 언어에 대한 언어 매핑에 친숙해지면 손쉽게 예상 가능한 방식으로 액세르를 하게 해준다. 해당 스텁은 ORB 코어에 전용며 최적화된 인터페스를 사용해서 나머지 ORB들을 호출하게 될 것다. 만약 여러 개의 ORB를 사용하게 된다면 각각의 스텁은 제 각기 해당하는 ORB를 호출하게 될 것다. 경우에 ORB와 언어 맵핑은 공조하여 각각의 스텁 특정 객체 레퍼런스와 제대로 연결될 수 있도록 해야 할 것다.

4. 동적 호출 인터페스(DII : Dynamic Invocation Interface)

클라언트가 호출될 객체와 수행할 오퍼레션을 지정하고자 할 때, 특정 객체 A의 특정 오퍼레션을 지정하는 대신 객체 호출을 동적으로 생성하도록 허용하는 인터페스를 용할 수 있다. 러한 경우 클라언트 코드에서는 수행되는 오퍼레션과 전달되는 파라미터의 타입에 대한 정보를 제공해야 한다. 정보는 대개 인터페스 저장소와 같은 런타입 소스에서 얻어진다. 실행 시간 중에 해당 정보를 얻은 후, 클라언트 코드는 른바 동적 호출 인터페스(DII)를 용해서 동적으로 호출을 할 수 있게 된다.

5. 객체 어댑터(Object Adapter)

구현 객체가 ORB에 의해 제공되는 서비스를 용하는 주된 방법은 객체 어댑터를 통하는 것다. 객체 어댑터는 CORBA 라브러리인데 ORB 코어 통신 서비스의 맨 위쪽에 위치하고 있으며 서버 객체를 대신하여 리퀘스트를 받아들인다. 객체 어댑터는 서버 객체를 인스턴스화하기 위한 실행 환경을 제공한다. 즉, 서버 객체에 리퀘스트를 전달하며 객체 ID를 부여하는 등의 작업을 하게 된다는 것다. 또한, 객체 어댑터는 구현 저장소에 어댑터가 지원하는 클래스와 런타임 인스턴스를 등록한다. CORBA에서는 각 ORB가 기본 객체 어댑터(BOA)라 불리는 표준 어댑터를 지원하도록 규정한다. 하나의 서버가 여러 개의 객체 어댑터를 지원할 수 있다.
객체 어댑터를 통하여 ORB가 제공하는 서비스에는 흔히 객체 레퍼런스의 생성과 해석, 메소드 구현, 보안과 상호 작용, 구현 객체의 활성화/비활성화, 구현으로의 객체 레퍼런스 맵핑, 그리고 구현 객체의 등록 기능 등 포함된다. 객체 어댑터를 통하게 되면, ORB에서 비슷한 요구 사항을 가진 특정 그룹의 구현 객체만을 한정하여 다루는 것 가능해진다.

6. 구현 스켈레톤(implementation skeleton)

각각의 언어 매핑에 대해(아마도 객체 어댑터에의 의존하게 되겠지만) 각각의 타입의 객체를 구현하도록 해주는 메소드에 대한 인터페스가 존재할 것다. 인터페스는 일반적으로 업콜(up-call) 인터페스일 것다. 구현 객체의 개발자는 그 인터페스에 따라 루틴을 작성하게 되고 ORB는 스켈레톤을 통해서 그 루틴을 호출하게 될 것다. 그러나 스켈레톤의 존재가 그에 사응하는 클라언트 스텁의 조재를 의미하지는 않는다는 것다. 말은 클라언트가 DII를 통해서 리퀘스트를 만들 수도 있다는 것다. 또한, 어떤 언어 맵핑은 스켈레톤을 사용하지 않는데, 것은 Smalltalk에시는 대체적으로 맞는 말다.

7. 동적 스켈레톤 인터페스(DSI : Dynamic Skeleton Interface)

동적 스켈레톤 인터페스는 IDL에 기초하지 않는 스켈레톤/스텁을 가진 객체의 메소드 호출을 처리해야 하는 서버에 대해 런타임 바인딩 메커니즘을 제공한다. 동적 스켈레톤은 수신된 메시지의 파라미터값을 참조하여 어떤 객체가 호출되었는지 어떤 메소드가 호출되었는지를 알게 된다. 것은 일반적으로 컴파일된 스켈레톤을 사용하는 것과는 비교되는데 러한 스켈레톤에서는 메소드의 구현 IDL로 정의된다. 구현 코드는 모든 오퍼레션 파라미터에 대한 상세한 설명을 ORB에 제공해야 하며, ORB는 오퍼레션을 수행할 때 사용되는 입력 파라미터값을 제공한다. 오퍼레 수행된 후, 구현 코드는 출력 파라미터 또는 익셉션을 ORB에게 넘겨준다. 동적 스켈레톤 인터페스의 특성은 프로그래밍 언어 맵핑에 따라 또는 객체 어댑터에 따라 실질적으로 달라질 수 있지만, 일반적으로는 업콜 인터페다. 동적 스켈레톤은 클라언트 스텁 또는 DII를 통해서 호출될 수 있다. 두 가지 방식의 클라너트 리퀘스트 생성 인터페스는 동일한 결과를 제공한다.

8. ORB 인터페

ORB 인터페스는 애플리케션에 중요한 지역 서비스에 대한 API들로 구성되어 있지 않다. 것은 곧바로 ORB로 가는 인터페고 모든 ORB들에 대해 동일하다.ORB 인터페스는 객체 어댑터 또는 객체 인터페스에 의존하지 않는다. 대부분의 ORB의 기능 객체 어댑터, 스텁, 스켈레톤 또는 동적 호출 등을 통해서 제공되므로 몇몇 오퍼레션만 모든 객체들에 대해 공통다. 공통 오퍼레션에는 get_interface와 get_implementation 같은 함수가 포함되어 있는데, 것들은 임의의 객체 레퍼런스에 작용하며 각각 인터페스 저장소 객체와 구현 저장소 객체를 얻는 데 사용된다.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:31:19
Processing time 0.0349 sec