KR19980086685A - 원격으로 오브젝트를 실행하는 방법 - Google Patents
원격으로 오브젝트를 실행하는 방법 Download PDFInfo
- Publication number
- KR19980086685A KR19980086685A KR1019980015495A KR19980015495A KR19980086685A KR 19980086685 A KR19980086685 A KR 19980086685A KR 1019980015495 A KR1019980015495 A KR 1019980015495A KR 19980015495 A KR19980015495 A KR 19980015495A KR 19980086685 A KR19980086685 A KR 19980086685A
- Authority
- KR
- South Korea
- Prior art keywords
- computer
- proxy
- objects
- methods
- program
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
본 발명의 자동 오브젝트 분산은, 어떠한 명시적인 네트워킹 코드 없이 또한 인터페이스 규정 언어(IDL)를 사용하지 않으면서, 분산된 프로그램으로서 오브젝트 지향 프로그램이 실행되도록 한다. 본 발명은 프로그래밍 업무를 복잡하게 하지 않으면서 프로그래머로 하여금 서로 다른 분산을 실험해보도록 한다. 이는 로컬 호출을 위해 기재된 방법 호출이 네트워크를 통해서 호출될 수 있도록 하는 2개의 프록시를 발생함으로써 수행된다. 이들 동적으로-발생된 프록시는 호출들이 마치 로컬인 것처럼 네트워크에 걸쳐서 전송되도록 한다.
Description
발명의 분야
본 발명은 일반적으로 컴퓨터 프로그래밍 방법 및 시스템에 관한 것으로, 특히 네트워크에 의해 연결된 복수의 컴퓨터 상에서 오브젝트 지향 프로그램을 실행하는 방법 및 시스템과 오브젝트 지향 프로그래밍에 관한 것이다.
발명의 배경
데스크탑 컴퓨터가 더 강력해짐에 따라, 하나 이상의 컴퓨터 상에서 프로그램의 일부가 실행되도록, 단일 프로그램의 분산이 더욱 보급되고 있다. 도 1은 애플리케이션이 실행될 수 있는 다수의 분산된 컴퓨터를 포함하는 컴퓨터 네트워크의 일 예를 나타낸다. 대부분의 컴퓨터 네트워크는 훨씬 크지만, 작은 이 네트워크를 예로서 사용한다. 현재, 많은 컴퓨터 시스템은 오브젝트가 네트워크를 통해서 통신하도록 한다. 오브젝트가 네트워크를 통해서 통신하도록 하는 방법의 하나는 RPC(Remote Procedure Calls)이다. RPC는 1980년대 중반이래 존재하는 것으로, ACM Transactions on Computer System 2, 1984년, 39∼59쪽에 게재된 Birrell과 Nelson에 의한 Implementing Remote Procedure Calls에 더 구체적으로 기재되어 있다. DSOM(Distributed System Object Model)과 같은 RPC에 대한 개선이 현재까지 이루어지고 있다. 선행 기술의 시스템에서, 프로그래머는 인터페이스 규정 언어(IDL: Interface Definition Language)를 사용하여 오브젝트에 대한 인터페이스를 작성하였다. 그 때 시스템은 IDL 설명서(specification)를 실행가능 코드를 자동적으로 변환하는 툴(tool)을 제공하였다.
최근, Sun Microsystems는 원격 방법 호출(RMI: Remote Method Invocation)로 불리는 DSOM과 RPC와 비슷한 능력을 포함하는 자바(Java)라 불리는 오브젝트 지향 프로그래밍 언어를 내놓았다. 자바가 허용되는 시스템을 사용하여, 이제 프로그래머는 실행될 프로그램에 근거하여 네트워크를 명시적으로 인식하지 않으면서 분산 오브젝트 프로그램을 작성할 수 있다. 그러나, 이 기술을 사용하여, 프로그래머 또는 설계자(implementer)는 여전히 (IDL 설명서를 작성하거나) 오브젝트의 원격 호출을 가능케 하는 추가 코드를 작성할 필요가 있다. 모든 코딩 업무에서와 마찬가지로, IDL을 작성하는 것은 에러를 일으키기 쉽다. 또한, 프로그래머는 오브젝트를 분산하기 위해 선택한 포인트가 차선임이 결정되면, 현재 설명서를 삭제하고 다른 것을 작성하여야 한다. 최적의 분산 포인트를 선택하는 것은 어려운 업무이므로, 현대 프로그래밍 환경에서 이런 문제는 종종 일어난다. 또한, 최적 분산 포인트는 컴퓨팅 토폴로지에 따라 달라질 수도 있다. 예를 들어, 2개의 컴퓨터가 동등하게 강력하면, 최적 분산은 각 컴퓨터 상에서 실행되는 동일한 수의 오브젝트를 가질 수 있으며; 2개의 컴퓨터가 전혀 다른 성능을 가지면, 더 강력한 컴퓨터가 보다 많은 오브젝트를 실행하게 된다. 이종의(heterogeneous) 컴퓨팅 토폴로지가 일반적이므로, IDL을 사용하여 정적으로(statically) 씌어진 코드는 결과적으로 종종 차선의 성능이 된다.
한편, 많은 프로그램-생성 툴은 프로그래머로 하여금 툴을 사용하여 프로그램을 특정하고, 오브젝트가 분산되어야 할 오브젝트의 경계를 나타내도록 한다. 그러면 툴은 프로그램을 위한 실행가능한 코드를 발생한다. 그러나, 이들 툴은 정적으로 프로그램 분할하며, 그에 따라 IDL 시스템과 유사한 이종성 문제를 겪는다. 또한, 툴은 전형적으로 상호운용(interoperate)하지 않는다. 그리하여, 동일 프로그램에 관해 작업하는 복수의 프로그래머는 효율적으로 함께 작업하기 위해서 동일 툴에 관해 표준화를 해야만 한다. 툴은 강점과 약점을 가지므로, 단일 툴로 표준화하는 것은 바람직하지 않다.
본 발명의 목적은 프로그래머로 하여금 프로그램이 로컬하게 실행되는 것처럼 프로그램을 작성하도록 하는 분산-오브젝트 프로그램을 생성하는 개선된 방법을 제공하는 것이다.
본 발명의 다른 목적은 프로그래머에 의해 생성된 클래스를 변형하지 않으면서 오브젝트를 분산하는 것이다.
본 발명의 또 다른 목적은 프로그램 생성 툴을 필요로 하지 않으면서 오브젝트를 분산하는 것이다.
도 1은 본 발명이 나타날 수 있는 샘플 네트워크를 나타내는 도면.
도 2는 5개의 오브젝트를 포함하는 컴퓨터 메모리를 나타내는 도면.
도 3은 2개의 오브젝트가 하나의 컴퓨터 메모리에서 실행되고 3개의 오브젝트가 또 다른 컴퓨터 메모리에서 실행되는 분산 시스템을 나타내는 도면.
도 4a는 2개의 오브젝트가 동일 메모리에서 실행되는 방법을 나타내는 도면.
도 4b는 본 발명을 사용하여 분산된 후의 도 4a의 오브젝트를 나타내는 도면.
도 5는 본 발명의 분산 방법의 플로우챠트.
본 발명은 자동 오브젝트 분산(AOD: Automatic Object Distribution)으로 여기서 언급되는, 원격으로 오브젝트를 실행 또는 수행하는, 시스템, 방법, 프로그램 제품을 제공한다. 도 2에 나타낸 바와 같이, 오브젝트 지향 프로그램은 통일된 기능을 수행하기 위하여 서로를 호출하는 많은 독립 오브젝트로 작성된다. 도 2는 오브젝트(102 V, W, X, Y, Z)가 모두 존재하는 컴퓨터 메모리(101)를 도시하고 있다. 본 발명은 사용자로 하여금 실행될 오브젝트의 일부를 제1 컴퓨터에서 제2 컴퓨터로 이동시키도록 한다. 이를 도 3에 나타낸다. 도 3에서, 오브젝트 W, X, Z(207)은 제2 컴퓨터 메모리(203)로 이동되지만 오브젝트 V, Y(205)는 제1 컴퓨터 메모리(201)에 남는다. 이는 예를 들어, 제1 컴퓨터와 제2 컴퓨터간에 작업부하를 균형화 하기 위해 이루어질 수 있다. 이는, 여기서 방법으로 언급되는 외부 루틴을, 각 프로그램 오브젝트가 호출할 수 있으므로 복잡성을 더하게 된다. 실행을 위해 프로그램 오브젝트를 복수의 컴퓨터로 분리하는 것은, 다른 컴퓨터 메모리로의 오브젝트 분리로 인하여 동일 시스템 상에서의 호출 방법으로 더 이상 공존하지 않는 방법을 이제 액세스 하려는 모든 방법 또는 오브젝트는, 오브젝트의 일부가 네트워크 상에서 다른 곳에 위치함을 알아야 하고, 그들 원격 오브젝트를 액세스 하는 방법을 이해할 수 있어야 함을 필요로 한다.
본 발명의 자동 오브젝트 분산(AOD)은 오브젝트가 네트워크를 통하여 분산될 것이라는 지식을 가지고 프로그래머가 그들의 프로그램을 작성해야할 필요가 없다. 또한 프로그래머가 분산된 오브젝트를 지원하기 위하여 특정 언어로 프로그램을 작성하거나, 네트워크에 걸쳐서 작업을 분산하기를 원할 때 어떤 특정 툴을 사용하여 작성할 필요가 없다. 대신에, 본 발명을 사용하여, 프로그래머는 자바(자바는 SunMicrosystems의 상표임)와 같은, 일반적인 오브젝트-지향 언어로 프로그램을 작성하고, 코드를 비연결 실행가능 코드(unlinked executable code)로 컴파일한다. (컴퓨팅 분야에서, 비연결 실행가능 코드는 종종 오브젝트 코드라 불린다. 오브젝트-지향 시스템을 설명할 때, 오브젝트 코드라는 용어를 사용하는 것은 종종 혼란을 일으키므로, 본 발명의 목적을 위해 바이트코드라는 용어를 채용한다.) 프로그래머는 정확히 단일 기계 상에서 실행될 프로그램을 작성하는 것처럼 코드를 작성하며; IDL 시스템에서와 같이 어떤 추가 정보를 프로그램에 덧붙이지 않는다. 그 때 프로그래머는 분산이 일어나야 할 곳을 결정하고, AOD는 분산 코드를 발생한다.
AOD는 2개의 프록시를 발생함으로써 분산을 수행한다. 프록시는 로컬 호출을 위해 작성된 방법 호출이 네트워크를 통해서 호출되도록 한다. 로컬하게 실행될 어떤 클래스 Y와 원격으로 실행될 클래스 X간에 분할(split)이 표시되면, AOD 프로세스는 개입 네트워크(intervening network)를 극복하기 위해 프록시를 발생한다. 더불어, 이들 프록시는 Y로부터 호출을 인터셉트하여 이들을 Y로 전달하고, 결과를 Y로 리턴한다. 이를 도 4a 및 도 4b에 보다 상세히 나타낸다.
도 4a는 단일 메모리(301)에서 프로그램이 실행되는 컴퓨터 시스템을 나타낸다. 오브젝트 Y(303)와 오브젝트 X(305)의 양자는 동일 메모리 상에 존재하고 방법 호출(311)은 오브젝트 Y(303)로부터 오브젝트 X(305)를 호출하는데 사용된다.
도 4b에 나타낸 바와 같이, X(305)를 위한 프록시로서 작용하는 클래스들을 포함하는 2개의 프록시 파일(X′(315)와 X″(317))을 발생하기 위하여, 예를 들어 X(305)와 같은, 클래스를 위한 바이트코드 파일에서의 정보를 AOD 프로세스가 사용한다. X'(315)는 X(305)에서 모든 공공 방법을 갖는 X로 명명된 클래스를 포함한다. (원래 클래스 X(305) 파일이 원격 기계 상에 위치하게 되므로, 이름 충돌은 존재하지 않음에 주목한다.) X″(317)는 클래스 X에서 공공 방법에 대한 호출을 하는 방법을 포함하는 고유한 이름(X″)을 가진 클래스를 포함한다. X′(315)는 Y(303)와 동일한 기계 상에 존재하고; X″(317)는 X(305)와 동일한 기계 상에 존재한다. X′(315)이 X라 불리는 클래스를 포함하고 그 클래스가 X(305)에서의 공공 방법의 모두를 포함하므로, Y(303)가 원래 클래스 X(305)에서 방법에 대한 호출을 할 때, 그 호출은 실제로는 로컬하게 존재하는 새로운 클래스 X에서 파일 X′(315)에 포함된 방법에 대해 생성된다. 로컬 호출의 결과는 X″(317)와 X′(315)를 거쳐서 Y(303)로 다시 전달된다. 그 결과, 로컬하게 실행하기 위하여 작성된 애플리케이션은, 어떤 프로그램 코드를 프로그래머가 작성하거나 변경할 것을 요구하지 않으면서 네트워크에 걸쳐서 분산될 수 있다.
여기서, 본 발명의 바람직한 실시예를 도면을 참조하여 상세히 설명하기로 한다. 본 발명은 바람직한 실시예들로 제한되지 않는다. 본 발명은 프록시를 이용하는 어떠한 자동화 분산 프로그래밍에도 적용가능하다. 본 발명이 자바에 제한되는 것은 아니지만 바람직한 실시예의 자동 오브젝트 분산(AOD)은 자바 프로그래밍 환경을 사용하며, 다른 오브젝트-지향 환경에 대한 본 발명의 애플리케이션은 이 기술분야의 숙련자에게는 간단한 것이다. 본 발명의 바람직한 실시예는 프로그램이 마치 로컬하게 실행되는 것처럼(예를 들어, 프로그램은 원격 방법 호출 코드(Remote Method Invocation code)를 포함하지 않는 것처럼) 프로그래머가 프로그램을 자바로 작성하고 소스 파일을 상응하는 바이트코드 파일로 컴파일하기 위하여 표준 자바 컴파일러를 사용한다고 가정한다. AOD 프로세스는 그 때 오브젝트 지향 프로그래밍에서 모든 오브젝트가 (공공 변수(public variables))에 대한 직접 액세스를 통하는 것이 아니라) 방법 호출을 통해서 액세스되도록 하는 통상의 기술(convention)을 이용한다. 자바에서, 각 클래스는 별개의 바이트코드 파일로 컴파일된다. (따라서, 바이트코드는 종종 클래스 파일이라고 불린다.) 그 때 프로그래머는 어느 클래스가 원격 기계로 이동되어야 하고 어느 클래스가 로컬에 남아야 하는지를 식별한다. 그러한 클래스를 식별하는 프로세스는 본 발명을 구현하는 툴로 클래스를 포함하는 파일들의 이름을 타이핑함으로써 수행될 수 있다.
본 발명의 바람직한 실시예를 사용하여 원격으로 오브젝트를 실행하기 위하여, 어느 클래스를 로컬에 유지하고 어느 클래스를 원격으로 이동할 것인지에 관한 입력을 사용하는 AOD는 도 5에서 참조되는 바와 같이 다음을 수행한다.
1) 원격으로 실행할 클래스들로부터 어느 클래스가 방법 호출을 수신할 것인지를 결정하기 위하여 각 클래스의 바이트코드를 검사한다(502).
2) 원격 기계로부터 호출될 각 오브젝트 X에 대하여, 그의 공공 방법의 리스트가 X의 바이트코드 파일로부터 추출되어 저장된다(504).
3) 공공 방법의 리스트에 근거하여, X″라 불리는 프록시가 발생된다. X″는 X에서 공공 방법과 유사한 이름을 갖는 방법을 포함하도록 구축된다. 구축된 방법의 각각은 X에 대항하여 상응하는 방법 호출을 생성한다. 또한 그것은 RMI 등록부(registry)에 그 자신을 등록하는데 필요한 코드를 포함한다(506).
4) 공공 방법의 리스트에 기초하여, X′라 불리는 프록시가 발생된다. X′는 X에 공공 방법을 포함하도록 구축된다. 구축된 방법의 각각은 X″에 대항하여 (자바의 RMI 함수를 사용하여) 상응하는 원격 방법 호출을 생성한다. 이 프록시 클래스는 X가 가진 것과 동일한 이름을 갖는다(508).
다음에 각 단계를 좀 더 구체적으로 설명한다.
1) 자바 컴파일러(와 많은 오브젝트-지향 언어의 컴파일러)는 검사 프로세스가 연속적으로 일어나도록 하는 잘 알려진 포맷으로 바이트코드 파일을 생성한다. 다양한 바이트코드 파일이 서로 링크되도록 하기 위하여, 각 바이트코드 파일은 각 클래스로부터 호출된 방법들에 관한 정보를 포함한다. 그리하여, 파일로부터 방법에 관한 정보를 판독함으로써, AOD는 상호관련된 클래스의 요구 리스트를 발생할 수 있다.
2) 마찬가지로, 바이트코드 파일은 바이트코드 파일에 의해 작성된 클래스의 공공 방법에 관한 정보를 포함한다. 그리하여, 파일로부터 공공 방법에 관한 정보를 판독함으로써, AOD는 모든 공공 방법의 리스트를 발생할 수 있다. 바이트코드 파일은 또한 변수(parameter)에 관한 정보를 포함하고 값(value)을 리턴한다.
공공 방법의 프로그램적 결정이 클래스에 의해 지원되도록 하는 반사(reflection)라 불리는 함수를, 자바의 몇 가지 구현예들이 포함함을 주목하여야 한다. 반사가 구현된다면, 이는 바이트코드 파일의 검사 프로세스를 대체하는데 사용될 수 있다.
3) 클래스 상에 모든 공공 방법의 리스트가 주어지면, 간단히 유사하게 명명된 방법을 포함하는 더블-프라임 프록시 클래스(X″)를 발생하고 이들 방법의 각각이 X에 관한 방법에 대한 호출을 생성한다. 바람직한 실시예에서, 호출들은 자바 소스로서 발생되고 자바의 표준 동적 컴파일레이션 기능(Java's standard dynamic compilation facility)을 사용하여 동적으로 컴파일된다. 그리하여, X가 방법 A와 B를 포함하면, X″는 다음과 같이 쓰여진다.
프록시에서의 방법에 _AOD 접미사가 붙는 종래 기술을 사용함에 주목하여야 한다. 예를 들어 방법 A_AOD는 X에서 방법 A를 호출한다. 재현가능하고 일관성이 있는 한 어떠한 종래 기술도 사용될 수 있다.
4) 클래스 상에 모든 공공 방법의 리스트가 주어지면, 마찬가지로 간단하게 그들 방법을 포함하는 프라임 프록시 클래스(X′)를 발생하고, X″ 상에 유사하게 명명된 방법에 대한 원격 호출을 (RMI를 사용하여) 생성한다. 바람직한 실시예에서, 호출은 자바 RMI 소스로서 발생되고 자바 표준 동적 컴파일레이션 기능을 사용하여 동적으로 컴파일된다.
프록시 X″에 부가하여, X에서 모든 공공 방법에 대한 서명을 포함하는 인터페이스 X″인터페이스가, 자바 표준 RMI 구현에서 요구되는 바와 같이 또한 발생된다.
클래스 상에 모든 공공 방법에 관한 동일 정보가 주어지면, 또한 단순하게 인터페이스 X″인터페이스를 발생한다.
이 예에서, Naming.lookup()는 RMI 등록부를 문의함으로써 X″에 대한 원격 참조를 리턴할 것이다. 통상적으로, 리턴 오브젝트는 X″인터페이스의 형태로 주어진다.
프록시가 X로 불리는 동안, 원래 X와 어떠한 이름 충돌도 일어나지 않음에 주목하여야 한다. 프록시 X가 로컬 기계 상에서 실행되므로, 원래 X는 원격 기계로 이동하는 것으로 식별되고, 기계마다 단지 하나의 X만이 존재한다.
5) 그 때 파일은 이 기능이 구현된 시스템 상에서 이용가능한 어떤 수단에 의해 전송된다.
일단 도 4b에 나타낸 바와 같이 프록시가 설정되면, 실행 시간에 다음이 일어난다.
Y가 단지 방법 호출을 통해서만 X에 액세스되는 경우에, 프로그래머가 어떤 오브젝트 Y와 어떤 오브젝트 X간에 프로그램을 분산하기를 선택한다고 가정하자. Y가 X 상에 공공 방법 foo()을 호출할 때, 다음이 일어난다. 먼저 Y는 평소와 같이 foo()로 호출을 생성한다. (그의 코드가 변경되지 않으므로 그래야 한다.) 프록시 X′가 단지 로컬 기계 상에 X이고 방법 foo()를 포함하므로, 호출은 X에 대한 프라임 프록시 상에 생성될 것이다.
구성에 의하면, X에서의 방법 foo()는 원격 더블-프라임 프록시 상에서의 방법 foo_AOD()에 대한 RMI 호출을 생성하고, 그 결과를 리턴한다. 구성에 의하면, 더블-프라임 프록시 상에서의 foo()_AOD는 X 상에서의 foo()에 대한 로컬 호출을 생성한다. X가 변경되지 않았으므로, 원래 foo()를 실행하여 더블-프라임 프록시에서의 foo_AOD로 그 결과를 전달하고, 더블-프라임 프록시는 이들을 프라임 프록시로 전달하고, 프라임 프록시는 이들을 Y로 리턴한다. 그리하여, 호출은 로컬 호출과 의미상 동등하다.
이 프로세스가 원래 파일에 영향을 주지 않고 분산을 실현하기 위하여 어떠한 프로그래머 개입도 필요로 하지 않기 때문에, 프로그래머가 서로 다른 클래스 분산 포인트를 테스트하는 것이 매우 쉬워진다. 이는 프로그래머에 중요한 영향을 주지 않으면서 더욱 효과적으로 프로그램이 실행되도록 한다.
또한, 분산이 전혀 추가 프로그래밍을 요구하지 않으므로, 시스템 관리자는 컴퓨팅 환경의 세그먼트의 특정 특성에 따라, 각각이 그 자신의 분산(과 그에 따른 성능 특성)으로, 서로 다른 컴퓨팅 구성 상에서 동일 프로그램의 복수의 인스턴스(instances)를 전개할 수 있다. 이 분산은 추가 프로그래밍을 요구하지 않고 원 프로그램에 대한 어떠한 변경도 요구하지 않는다.
상술한 바와 같이, 본 발명에 의한 오브젝트를 분산하는 방법은, 원 파일에 영향을 주지 않고 분산을 실현하기 위하여 어떠한 프로그래머 개입도 필요로 하지 않기 때문에, 프로그래머가 서로 다른 클래스 분산 포인트를 테스트하는 것이 매우 용이하다는 이점이 있다. 또한, 프로그래머에게 거의 영향을 주지 않으면서 프로그램이 효과적으로 실행되도록 하는 이점이 있다. 또한, 시스템 관리자가 효율적으로 서로 다른 컴퓨팅 구성 상에서 동일 프로그램의 복수의 인스턴스를 전개할 수 있도록 하는 효과가 있다.
Claims (9)
- 하나 이상의 물리적 기기에 걸쳐서, 각 오브젝트가 하나 이상의 프로그램된 방법을 포함하는, 프로그램의 오브젝트를 분산하는 방법에 있어서, 상기 프로그램에서 모든 상기 오브젝트를 식별하는 단계와, 상기 오브젝트 중 어느 것이 제1 컴퓨터 상에 탑재되고 상기 오브젝트 중 어느 것이 제2 컴퓨터 상에 탑재되는지를 결정하는 단계와, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트 내에 포함된 모든 프로그램된 방법을 식별하는 단계와, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트를 위한 제1 프록시와 제2 프록시를 발생하는 단계와-여기서, 상기 제1 프록시는 상기 제1 컴퓨터 상에 탑재되고 상기 제2 프록시는 상기 제2 컴퓨터 상에 탑재되며, 상기 제1 프록시는 네트워크 연결과 상기 제2 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함하고, 상기 제2 프록시는 네트워크 연결과 상기 제1 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함함-, 상기 프록시를 통하여 상기 원격 프로그램된 방법을 액세스하는 단계를 포함하는 프로그램의 오브젝트를 분산하는 방법.
- 제 1 항에 있어서, 상기 제2 프록시는 상기 제1 컴퓨터 상에 남아있는 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하고, 상기 제1 프록시는 상기 제2 컴퓨터 상으로 이동된 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하는 프로그램의 오브젝트를 분산하는 방법.
- 제 1 항에 있어서, 상기 네트워크 연결은 상기 프로그램된 방법의 원격 호출을 위한 스테이트먼트를 포함하는 프로그램의 오브젝트를 분산하는 방법.
- 하나 이상의 물리적 기기에 걸쳐서, 각 오브젝트가 하나 이상의 프로그램된 방법을 포함하는, 프로그램의 오브젝트를 분산하기 위한 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 그 내부에 구현된 컴퓨터-판독가능 프로그램 코드 수단을 갖는 컴퓨터-판독가능 저장 매체를 포함하고, 상기 컴퓨터-판독가능 프로그램 코드 수단은, 상기 프로그램에서 모든 상기 오브젝트를 식별하는 컴퓨터-판독가능 프로그램 코드 수단과, 상기 오브젝트 중 어느 것이 제1 컴퓨터 상에 탑재되고 상기 오브젝트 중 어느 것이 제2 컴퓨터 상에 탑재되는지를 결정하는 컴퓨터-판독가능 프로그램 코드 수단과, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트 내에 포함된 모든 프로그램된 방법을 식별하는 컴퓨터-판독가능 프로그램 코드 수단과, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트를 위한 제1 프록시와 제2 프록시를 발생하는 컴퓨터-판독가능 프로그램 코드 수단과-여기서, 상기 제1 프록시는 상기 제1 컴퓨터 상에 탑재되고 상기 제2 프록시는 상기 제2 컴퓨터 상에 탑재되며, 상기 제1 프록시는 네트워크 연결과 상기 제2 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함하고, 상기 제2 프록시는 네트워크 연결과 상기 제1 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함함-, 상기 프록시를 통하여 상기 원격 프로그램된 방법을 액세스하는 컴퓨터-판독가능 프로그램 코드 수단을 포함하는 프로그램의 오브젝트를 분산하기 위한 컴퓨터 프로그램 제품.
- 제 4 항에 있어서, 상기 제2 프록시는 상기 제1 컴퓨터 상에 남아있는 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하고, 상기 제1 프록시는 상기 제2 컴퓨터 상으로 이동된 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하는 프로그램의 오브젝트를 분산하기 위한 컴퓨터 프로그램 제품.
- 제 4 항에 있어서, 상기 네트워크 연결은 상기 프로그램된 방법의 원격 호출을 위한 스테이트먼트를 포함하는 프로그램의 오브젝트를 분산하기 위한 컴퓨터 프로그램 제품.
- 하나 이상의 물리적 기기에 걸쳐서, 각 오브젝트가 하나 이상의 프로그램된 방법을 포함하는, 프로그램의 오브젝트를 분산하는 시스템에 있어서, 상기 프로그램에서 모든 상기 오브젝트를 식별하는 수단과, 상기 오브젝트 중 어느 것이 제1 컴퓨터 상에 탑재되고 상기 오브젝트 중 어느 것이 제2 컴퓨터 상에 탑재되는지를 결정하는 수단과, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트 내에 포함된 모든 프로그램된 방법을 식별하는 수단과, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트를 위한 제1 프록시와 제2 프록시를 발생하는 수단과-여기서, 상기 제1 프록시는 상기 제1 컴퓨터 상에 탑재되고 상기 제2 프록시는 상기 제2 컴퓨터 상에 탑재되며, 상기 제1 프록시는 네트워크 연결과 상기 제2 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함하고, 상기 제2 프록시는 네트워크 연결과 상기 제1 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함함-, 상기 프록시를 통하여 상기 원격 프로그램된 방법을 액세스하는 수단을 포함하는 프로그램의 오브젝트를 분산하는 시스템.
- 제 7 항에 있어서, 상기 제2 프록시는 상기 제1 컴퓨터 상에 남아있는 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하고, 상기 제1 프록시는 상기 제2 컴퓨터 상으로 이동된 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하는 프로그램의 오브젝트를 분산하는 시스템.
- 제 7 항에 있어서, 상기 네트워크 연결은 상기 프로그램된 방법의 원격 호출을 위한 스테이트먼트를 포함하는 프로그램의 오브젝트를 분산하는 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/852,263 US6157960A (en) | 1997-05-07 | 1997-05-07 | Technique for programmatically creating distributed object programs |
US8/852,263 | 1997-05-07 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR19980086685A true KR19980086685A (ko) | 1998-12-05 |
KR100285223B1 KR100285223B1 (ko) | 2001-05-02 |
Family
ID=25312886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019980015495A KR100285223B1 (ko) | 1997-05-07 | 1998-04-30 | 프로그램에입각하여분산오브젝트프로그램을생성하는방법 |
Country Status (4)
Country | Link |
---|---|
US (1) | US6157960A (ko) |
JP (1) | JPH1185519A (ko) |
KR (1) | KR100285223B1 (ko) |
GB (1) | GB2326255B (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100716171B1 (ko) * | 2005-05-13 | 2007-05-10 | 삼성전자주식회사 | 분산 환경 시스템에서의 객체 관리 장치 및 방법 |
Families Citing this family (50)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6466947B2 (en) * | 1998-03-20 | 2002-10-15 | Sun Microsystems, Inc. | Apparatus and method for dynamically verifying information in a distributed system |
US6446070B1 (en) * | 1998-02-26 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic distributed computing over a network |
US6185611B1 (en) * | 1998-03-20 | 2001-02-06 | Sun Microsystem, Inc. | Dynamic lookup service in a distributed system |
US6421704B1 (en) * | 1998-03-20 | 2002-07-16 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of group membership in a distributed system |
US6138238A (en) * | 1997-12-11 | 2000-10-24 | Sun Microsystems, Inc. | Stack-based access control using code and executor identifiers |
US6938263B2 (en) * | 1996-04-23 | 2005-08-30 | Sun Microsystems, Inc. | System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space |
US6393497B1 (en) | 1998-03-20 | 2002-05-21 | Sun Microsystems, Inc. | Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system |
US6567861B1 (en) * | 1997-09-17 | 2003-05-20 | International Business Machines Corporation | Method and apparatus for remotely running objects using data streams and/or complex parameters |
AU2680399A (en) * | 1998-02-26 | 1999-09-15 | Sun Microsystems, Inc. | Apparatus and method for dynamically verifying information in a distributed system |
US6385661B1 (en) * | 1998-10-19 | 2002-05-07 | Recursion Software, Inc. | System and method for dynamic generation of remote proxies |
US6993774B1 (en) * | 1998-10-19 | 2006-01-31 | Recursion Software, Inc. | System and method for remote enabling classes without interfaces |
US6947965B2 (en) | 1999-11-30 | 2005-09-20 | Recursion Software, Inc. | System and method for communications in a distributed computing environment |
US6678743B1 (en) | 1999-11-30 | 2004-01-13 | Recursion Software, Inc. | Method for moving objects in a distributed computing environment |
US8001232B1 (en) | 2000-05-09 | 2011-08-16 | Oracle America, Inc. | Event message endpoints in a distributed computing environment |
FR2810755B1 (fr) * | 2000-06-27 | 2003-01-17 | Cit Alcatel | Procede de gestion d'informations en java |
US7073062B2 (en) * | 2000-12-19 | 2006-07-04 | International Business Machines Corporation | Method and apparatus to mutually authentication software modules |
US7660887B2 (en) | 2001-09-07 | 2010-02-09 | Sun Microsystems, Inc. | Systems and methods for providing dynamic quality of service for a distributed system |
US20030051029A1 (en) | 2001-09-07 | 2003-03-13 | Reedy Dennis G. | Dynamic provisioning of sevice components in a distributed system |
US7756969B1 (en) | 2001-09-07 | 2010-07-13 | Oracle America, Inc. | Dynamic provisioning of identification services in a distributed system |
US7433917B2 (en) * | 2001-09-28 | 2008-10-07 | Bea Systems, Inc. | Method and apparatus for using Java dynamic proxies to interface to generic, bean-like management entities |
US7051341B2 (en) | 2001-12-14 | 2006-05-23 | International Business Machines Corporation | Method, system, and program for implementing a remote method call |
US7096249B2 (en) * | 2002-03-29 | 2006-08-22 | Intel Corporation | Method and system for distributing applications |
WO2004021204A1 (en) * | 2002-08-29 | 2004-03-11 | United States Postal Services | Shared services platform |
US7243333B2 (en) * | 2002-10-24 | 2007-07-10 | International Business Machines Corporation | Method and apparatus for creating and executing integrated executables in a heterogeneous architecture |
US7200840B2 (en) * | 2002-10-24 | 2007-04-03 | International Business Machines Corporation | Method and apparatus for enabling access to global data by a plurality of codes in an integrated executable for a heterogeneous architecture |
US7222332B2 (en) * | 2002-10-24 | 2007-05-22 | International Business Machines Corporation | Method and apparatus for overlay management within an integrated executable for a heterogeneous architecture |
US7213123B2 (en) * | 2002-10-24 | 2007-05-01 | International Business Machines Corporation | Method and apparatus for mapping debugging information when debugging integrated executables in a heterogeneous architecture |
US7225431B2 (en) * | 2002-10-24 | 2007-05-29 | International Business Machines Corporation | Method and apparatus for setting breakpoints when debugging integrated executables in a heterogeneous architecture |
EP1420340A1 (en) * | 2002-11-15 | 2004-05-19 | Hewlett-Packard Company | Remote object invocation system and method |
AU2003292501A1 (en) * | 2002-12-19 | 2004-07-14 | Red Plain Technology Limited | A distributed object processing system and method |
US7536675B2 (en) * | 2003-02-28 | 2009-05-19 | Bea Systems, Inc. | Dynamic code generation system |
US7472401B2 (en) * | 2003-02-28 | 2008-12-30 | Bea Systems, Inc. | Computer product for a dynamically generated wrapper class |
US7472400B2 (en) | 2003-02-28 | 2008-12-30 | Bea Systems, Inc. | Method for dynamically generating a wrapper class |
WO2004079572A2 (en) * | 2003-02-28 | 2004-09-16 | Bea Systems Inc. | Dynamic generation of a wrapper |
US20040172614A1 (en) * | 2003-02-28 | 2004-09-02 | Bea Systems, Inc. | Dynamic code generation method |
US20040207659A1 (en) | 2003-04-02 | 2004-10-21 | International Business Machines Corporation | Program creation by combining web services using graphic user interface controls |
US20040226022A1 (en) * | 2003-05-09 | 2004-11-11 | Prabhu Sameer D. | Method and apparatus for providing a client-side local proxy object for a distributed object-oriented system |
US7424722B2 (en) * | 2003-08-29 | 2008-09-09 | International Business Machines Corporation | Method and system for creating a dynamic OGSI service proxy framework using runtime introspection of an OGSI service |
US8104043B2 (en) | 2003-11-24 | 2012-01-24 | Microsoft Corporation | System and method for dynamic cooperative distributed execution of computer tasks without a centralized controller |
US7792874B1 (en) | 2004-01-30 | 2010-09-07 | Oracle America, Inc. | Dynamic provisioning for filtering and consolidating events |
GB2434008B (en) * | 2004-03-17 | 2007-09-12 | Nec Corp | Inter-processor communication in a parallel processing system running an os for single processors |
JP4171910B2 (ja) | 2004-03-17 | 2008-10-29 | 日本電気株式会社 | 並列処理システム及び並列処理プログラム |
US9606846B2 (en) * | 2005-07-29 | 2017-03-28 | Sap Se | System and method for dynamic proxy generation |
US20070027877A1 (en) * | 2005-07-29 | 2007-02-01 | Droshev Mladen I | System and method for improving the efficiency of remote method invocations within a multi-tiered enterprise network |
US7984107B2 (en) * | 2005-09-09 | 2011-07-19 | Microsoft Corporation | Proxy assembly for simulating real assembly features on a remote device |
CN100424675C (zh) * | 2005-10-12 | 2008-10-08 | 大唐移动通信设备有限公司 | 多处理器系统的消息通信方法及装置 |
US7779429B2 (en) | 2006-08-18 | 2010-08-17 | Research In Motion Limited | Method and machine-readable medium for building distributed software |
EP1890227A1 (en) * | 2006-08-18 | 2008-02-20 | Research In Motion Limited | Method, system and machine-readable medium for building distributed software |
US9116855B2 (en) * | 2010-06-17 | 2015-08-25 | Nec Corporation | Data processing system and data processing method |
US10521200B2 (en) * | 2017-01-09 | 2019-12-31 | Oracle International Corporation | Unambiguous proxying of interface methods |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01502861A (ja) * | 1987-09-04 | 1989-09-28 | ディジタル イクイプメント コーポレーション | 多重転送プロトコルを支援するデジタル処理システム用回路網内のセッション制御 |
US5481721A (en) * | 1991-07-17 | 1996-01-02 | Next Computer, Inc. | Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects |
DE4131380A1 (de) * | 1991-09-20 | 1993-03-25 | Siemens Ag | Verfahren zur adaption einer objektorientierten applikation |
EP0684553B1 (en) * | 1994-05-26 | 2004-06-16 | Sun Microsystems, Inc. | Method and apparatus for generating and using short operation identifiers in object oriented systems |
US5822585A (en) * | 1995-02-21 | 1998-10-13 | Compuware Corporation | System and method for cooperative processing using object-oriented framework |
GB2305270A (en) * | 1995-09-15 | 1997-04-02 | Ibm | Bridge for a client-server environment |
CA2162188C (en) * | 1995-11-06 | 1999-05-25 | Harold Jeffrey Gartner | Location transparency of distributed objects over multiple middlewares |
US5768532A (en) * | 1996-06-17 | 1998-06-16 | International Business Machines Corporation | Method and distributed database file system for implementing self-describing distributed file objects |
US5948072A (en) * | 1996-10-31 | 1999-09-07 | International Business Machines Corporation | Method and apparatus for defining the scope of a CORBAservices factory finder |
-
1997
- 1997-05-07 US US08/852,263 patent/US6157960A/en not_active Expired - Lifetime
-
1998
- 1998-04-25 GB GB9808749A patent/GB2326255B/en not_active Expired - Lifetime
- 1998-04-28 JP JP10118308A patent/JPH1185519A/ja active Pending
- 1998-04-30 KR KR1019980015495A patent/KR100285223B1/ko not_active IP Right Cessation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100716171B1 (ko) * | 2005-05-13 | 2007-05-10 | 삼성전자주식회사 | 분산 환경 시스템에서의 객체 관리 장치 및 방법 |
Also Published As
Publication number | Publication date |
---|---|
JPH1185519A (ja) | 1999-03-30 |
KR100285223B1 (ko) | 2001-05-02 |
GB9808749D0 (en) | 1998-06-24 |
GB2326255A (en) | 1998-12-16 |
US6157960A (en) | 2000-12-05 |
GB2326255B (en) | 2002-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100285223B1 (ko) | 프로그램에입각하여분산오브젝트프로그램을생성하는방법 | |
US5684955A (en) | Process for distributing an object-oriented program over a plurality of operating system processes of a computer system | |
US5745683A (en) | System and method for allowing disparate naming service providers to dynamically join a naming federation | |
US6324543B1 (en) | Dynamic object migration method using proxy object links to support automatic object distribution in an object-oriented environment | |
US6546553B1 (en) | Service installation on a base function and provision of a pass function with a service-free base function semantic | |
US6941561B1 (en) | Method and apparatus for remotely running objects using data streams and/or complex parameters | |
US7353502B2 (en) | System and method for creation of software components | |
US6981250B1 (en) | System and methods for providing versioning of software components in a computer programming language | |
US6438744B2 (en) | Dynamic mapping of component interfaces | |
US7263699B2 (en) | Preparation of a software configuration using an XML type programming language | |
US20070011494A1 (en) | System and method for building software package for embedded system | |
US20010037494A1 (en) | System and method for implementing a project facility | |
CA2477783A1 (en) | Iterative software development environment with prioritized build rules | |
US8271622B2 (en) | Method and apparatus for a system management tool to adapt command interface and behavior based on installed features | |
US9459986B2 (en) | Automatic generation of analysis-equivalent application constructs | |
US5889995A (en) | Using constant selectors for method identification | |
Tilevich et al. | Aspectizing server-side distribution | |
US8112741B1 (en) | Ignoring output arguments of functions in programming environments | |
US20020066075A1 (en) | System and method for implementing a project facility | |
US6704802B1 (en) | Method and system for communicating between independent software modules | |
Clemm | The odin system | |
US20110238702A1 (en) | Creating multiple mbeans from a factory mbean | |
Pase | Dynamic probe class library (dpcl): Tutorial and reference guide | |
Maia et al. | OiL: An object request broker in the Lua language | |
Tucker et al. | Applying module system research to package management |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20070102 Year of fee payment: 7 |
|
LAPS | Lapse due to unpaid annual fee |