KR19980086685A - 원격으로 오브젝트를 실행하는 방법 - Google Patents

원격으로 오브젝트를 실행하는 방법 Download PDF

Info

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
Application number
KR1019980015495A
Other languages
English (en)
Other versions
KR100285223B1 (ko
Inventor
데이비드 루이스 카민스카이
리차드 아담 킹
지용 리
Original Assignee
포맨 제프리 엘
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 포맨 제프리 엘, 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 포맨 제프리 엘
Publication of KR19980086685A publication Critical patent/KR19980086685A/ko
Application granted granted Critical
Publication of KR100285223B1 publication Critical patent/KR100285223B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object 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. 하나 이상의 물리적 기기에 걸쳐서, 각 오브젝트가 하나 이상의 프로그램된 방법을 포함하는, 프로그램의 오브젝트를 분산하는 방법에 있어서, 상기 프로그램에서 모든 상기 오브젝트를 식별하는 단계와, 상기 오브젝트 중 어느 것이 제1 컴퓨터 상에 탑재되고 상기 오브젝트 중 어느 것이 제2 컴퓨터 상에 탑재되는지를 결정하는 단계와, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트 내에 포함된 모든 프로그램된 방법을 식별하는 단계와, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트를 위한 제1 프록시와 제2 프록시를 발생하는 단계와-여기서, 상기 제1 프록시는 상기 제1 컴퓨터 상에 탑재되고 상기 제2 프록시는 상기 제2 컴퓨터 상에 탑재되며, 상기 제1 프록시는 네트워크 연결과 상기 제2 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함하고, 상기 제2 프록시는 네트워크 연결과 상기 제1 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함함-, 상기 프록시를 통하여 상기 원격 프로그램된 방법을 액세스하는 단계를 포함하는 프로그램의 오브젝트를 분산하는 방법.
  2. 제 1 항에 있어서, 상기 제2 프록시는 상기 제1 컴퓨터 상에 남아있는 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하고, 상기 제1 프록시는 상기 제2 컴퓨터 상으로 이동된 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하는 프로그램의 오브젝트를 분산하는 방법.
  3. 제 1 항에 있어서, 상기 네트워크 연결은 상기 프로그램된 방법의 원격 호출을 위한 스테이트먼트를 포함하는 프로그램의 오브젝트를 분산하는 방법.
  4. 하나 이상의 물리적 기기에 걸쳐서, 각 오브젝트가 하나 이상의 프로그램된 방법을 포함하는, 프로그램의 오브젝트를 분산하기 위한 컴퓨터 프로그램 제품에 있어서, 상기 컴퓨터 프로그램 제품은 그 내부에 구현된 컴퓨터-판독가능 프로그램 코드 수단을 갖는 컴퓨터-판독가능 저장 매체를 포함하고, 상기 컴퓨터-판독가능 프로그램 코드 수단은, 상기 프로그램에서 모든 상기 오브젝트를 식별하는 컴퓨터-판독가능 프로그램 코드 수단과, 상기 오브젝트 중 어느 것이 제1 컴퓨터 상에 탑재되고 상기 오브젝트 중 어느 것이 제2 컴퓨터 상에 탑재되는지를 결정하는 컴퓨터-판독가능 프로그램 코드 수단과, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트 내에 포함된 모든 프로그램된 방법을 식별하는 컴퓨터-판독가능 프로그램 코드 수단과, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트를 위한 제1 프록시와 제2 프록시를 발생하는 컴퓨터-판독가능 프로그램 코드 수단과-여기서, 상기 제1 프록시는 상기 제1 컴퓨터 상에 탑재되고 상기 제2 프록시는 상기 제2 컴퓨터 상에 탑재되며, 상기 제1 프록시는 네트워크 연결과 상기 제2 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함하고, 상기 제2 프록시는 네트워크 연결과 상기 제1 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함함-, 상기 프록시를 통하여 상기 원격 프로그램된 방법을 액세스하는 컴퓨터-판독가능 프로그램 코드 수단을 포함하는 프로그램의 오브젝트를 분산하기 위한 컴퓨터 프로그램 제품.
  5. 제 4 항에 있어서, 상기 제2 프록시는 상기 제1 컴퓨터 상에 남아있는 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하고, 상기 제1 프록시는 상기 제2 컴퓨터 상으로 이동된 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하는 프로그램의 오브젝트를 분산하기 위한 컴퓨터 프로그램 제품.
  6. 제 4 항에 있어서, 상기 네트워크 연결은 상기 프로그램된 방법의 원격 호출을 위한 스테이트먼트를 포함하는 프로그램의 오브젝트를 분산하기 위한 컴퓨터 프로그램 제품.
  7. 하나 이상의 물리적 기기에 걸쳐서, 각 오브젝트가 하나 이상의 프로그램된 방법을 포함하는, 프로그램의 오브젝트를 분산하는 시스템에 있어서, 상기 프로그램에서 모든 상기 오브젝트를 식별하는 수단과, 상기 오브젝트 중 어느 것이 제1 컴퓨터 상에 탑재되고 상기 오브젝트 중 어느 것이 제2 컴퓨터 상에 탑재되는지를 결정하는 수단과, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트 내에 포함된 모든 프로그램된 방법을 식별하는 수단과, 원격 컴퓨터로부터 액세스될 수 있는 각 오브젝트를 위한 제1 프록시와 제2 프록시를 발생하는 수단과-여기서, 상기 제1 프록시는 상기 제1 컴퓨터 상에 탑재되고 상기 제2 프록시는 상기 제2 컴퓨터 상에 탑재되며, 상기 제1 프록시는 네트워크 연결과 상기 제2 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함하고, 상기 제2 프록시는 네트워크 연결과 상기 제1 컴퓨터 상에서의 상기 프로그램된 방법을 액세스하는 지시를 포함함-, 상기 프록시를 통하여 상기 원격 프로그램된 방법을 액세스하는 수단을 포함하는 프로그램의 오브젝트를 분산하는 시스템.
  8. 제 7 항에 있어서, 상기 제2 프록시는 상기 제1 컴퓨터 상에 남아있는 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하고, 상기 제1 프록시는 상기 제2 컴퓨터 상으로 이동된 오브젝트에서의 방법들과 유사하게 명명된 방법들을 포함하는 프로그램의 오브젝트를 분산하는 시스템.
  9. 제 7 항에 있어서, 상기 네트워크 연결은 상기 프로그램된 방법의 원격 호출을 위한 스테이트먼트를 포함하는 프로그램의 오브젝트를 분산하는 시스템.
KR1019980015495A 1997-05-07 1998-04-30 프로그램에입각하여분산오브젝트프로그램을생성하는방법 KR100285223B1 (ko)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100716171B1 (ko) * 2005-05-13 2007-05-10 삼성전자주식회사 분산 환경 시스템에서의 객체 관리 장치 및 방법

Families Citing this family (50)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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