KR100998515B1 - 클라이언트-서버 네트워크에서 파일-유형 연관성을 이용한분산 프로그램 실행 방법 - Google Patents

클라이언트-서버 네트워크에서 파일-유형 연관성을 이용한분산 프로그램 실행 방법 Download PDF

Info

Publication number
KR100998515B1
KR100998515B1 KR1020047004890A KR20047004890A KR100998515B1 KR 100998515 B1 KR100998515 B1 KR 100998515B1 KR 1020047004890 A KR1020047004890 A KR 1020047004890A KR 20047004890 A KR20047004890 A KR 20047004890A KR 100998515 B1 KR100998515 B1 KR 100998515B1
Authority
KR
South Korea
Prior art keywords
server
client system
executable program
server systems
data file
Prior art date
Application number
KR1020047004890A
Other languages
English (en)
Other versions
KR20040066097A (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
Priority claimed from US09/970,462 external-priority patent/US7330872B2/en
Priority claimed from US09/970,037 external-priority patent/US6952714B2/en
Priority claimed from US09/970,038 external-priority patent/US7117243B2/en
Application filed by 사이트릭스 시스템스, 인크. filed Critical 사이트릭스 시스템스, 인크.
Publication of KR20040066097A publication Critical patent/KR20040066097A/ko
Application granted granted Critical
Publication of KR100998515B1 publication Critical patent/KR100998515B1/ko

Links

Images

Classifications

    • 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
    • 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
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

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)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Stored Programmes (AREA)

Abstract

일측면에 의하면, 파일 유형과 프로그램간의 매핑이 수신되고, 클라이언트 시스템 파일이 그래픽적으로 제공되고, 그래픽 표시자에 대한 선택이 수신되고, 선택된 파일에 연관된 프로그램이 식별되고, 상기 식별된 프로그램을 실행시키라는 요청이 전송된다. 또다른 측면에 의하면, 서버 시스템 파일이 그래픽적으로 제공되고, 그래픽 표시자에 대한 선택이 수신되고, 선택은 서버 시스템에 전송되고, 연관된 프로그램을 실행시키라는 요청이 수신되고, 연관된 프로그램이 실행된다. 또다른 측면에 의하면, 웹 서버 파일이 그래픽적으로 제공되고 제1 프로그램을 실행시키라는 요청 - 상기 요청은 상기 파일에 연관된 제2 프로그램에 관한 정보를 포함함-이 수신된다. 제2 프로그램으로부터의 어플리케이션 결과 데이터는 제1 프로그램에 의해 검토되고 포맷되며, 수신된 어플리케이션 결과 데이터는 사용자에게 제공된다.
분산 프로그램 실행, 파일 유형 연관성

Description

클라이언트-서버 네트워크에서 파일-유형 연관성을 이용한 분산 프로그램 실행 방법{Methods for distributed program execution with file-type association in a client-server network}
본 발명은 일반적으로 클라이언트-서버 네트워크에서의 분산 프로그램 실행에 관한 것이다. 구체적으로, 본 발명은 데이터 파일 및 이에 연관된 실행가능 프로그램이 서로 다른 컴퓨팅 노드상에 위치하는 경우에 연관 프로그램을 자동 실행시키기 위한 방법을 개시한다.
마이크로소프트사(워싱톤주, 레드몬드 소재)의 DOS(Disk Operating System) 또는 AT&T사(뉴욕주, 뉴욕 소재)의 UNIX와 같은 명령어-라인 기반 운영체제를 채용하는 데스크톱 컴퓨터에서, 컴퓨터 프로그램 실행을 개시하기 위해서는 사용자가 명령어 프롬프트에 실행가능 프로그램의 경로 및 파일명을 입력하여야 했다. 또한, 경로 및 파일명 다음에, 사용자는 실행가능한 프로그램의 실행을 제어하는 부가적인 정보를 제공하는 하나 이상의 "인자(arguments)"도 입력하였다. 예를 들어, 프로그램 동작에 영향을 미치는 전형적인 인자에는 프로그램이 처리할 데이터 파일명이 포함되었다. 인자에, 처리할 데이터 파일로서, 예를 들어, 실행가능 프로그램(예, 워드 프로세서)에 의해 지원되지 않는 내용을 갖는 스프레드쉬트를 지정 하였다면, 그 결과는 시스템 오류에서부터 뒤섞인 데이터 등으로도 나타날 수 있다. 이러한 문제는 상이한 판매자에 의해 판매된 유사한 소프트웨어들 사이에서도 존재하였다. 전형적으로 한 판매자의 워드 프로세서는 다른 판매자의 워드 프로세서에 연관된 파일을 판독할 수 없었다.
이러한 문제점에 대한 한가지 해결책은 자발적인 명명 규약(naming convention: 파일명은 마침표로 끝나고 확장자는 그 내용을 지정함)에 관련된 것이었다. 그러나, 상이한 판매자들이 동일한 파일 확장자를 채택하거나, 파일명 확장자가 올바르거나, 파일 내용이 확장자에 의해 정확히 지정되었다는 것에 대하여 어느 것도 보장하지 못하였다. 또한, 사용자가 생소한 확장자를 갖는 파일을 접할 때, 사용자가 개시할 적절한 실행 파일을 가지고 있다고 가정하더라도, 상기 파일의 내용을 액세스하기 위해 올바를 실행가능 프로그램을 잉용할 것이라는 것을 어느 것도 보장하지 못한다.
애플 컴퓨터사(캘리포니아주, 커퍼티노 소재)의 매킨토시 운영체제(Macintosh Operating System: MacOS)는 데스크톱 컴퓨터의 이러한 문제를 해결하기 위하여 한가지 해결책을 소개하였다. MacOS를 실행시키는 컴퓨터상에 저장된 각 파일은 파일 종류와 이에 연관된 생성 식별자(creator identifier)를 갖고 있었다. MacOS하에서의 각 실행가능 파일은 그 파일이 실행가능함을 나타내는 특정 파일 종류와 이것이 편집할 수 있는 파일의 생성 식별자에 일치하는 연관 생성 식별자를 포함하였다. 데이터 파일을 편집하기 위해, 사용자는 데이터 파일의 그래픽 표시자를 선택하는데, 이는 상기 데이터 파일의 생성 식별자를 공유하는 연관 된 실행가능 프로그램의 실행을 자동적으로 개시하였다. 컴퓨터가 선택된 데이터 파일의 생성 식별자에 일치하는 생성 식별자를 갖는 실행가능 프로그램을 가지고 있지 않다면, 사용자에게 이러한 사실을 알리는 대화박스가 표시되었다.
데스크톱에서 더 나아가, 현대 컴퓨터 네트워크는 통신 링크를 통해 다른 컴퓨터 시스템들과 통신하는, 노드라 불리우는, 다수의 컴퓨터 시스템들로 구성된다. 전형적으로, 일부 노드들은 클라이언트 노드이고 다른 노드들은 서버 노드들이다. 클라이언트 노드는 질의사항을 형식에 맞추어 서버 노드에 전달한다. 클라이언트 노드의 사용자는 클라이언트 노드상에서 작동하는 사용자 인터페이스를 통해 질의사항을 입력한다. 서버 노드는 질의사항을 검토하고 응답을 클라이언트에 전달하고, 이는 클라이언트 사용자 인터페이스상에 디스플레이된다.
통상적으로, 서버 노드는 클라이언트 노드들에 의해 액세스되고 실행되는 다양한 어플리케이션 프로그램들을 호스팅한다(host). 클라이언트 노드가 어플리케이션 프로그램을 개시하면, 어플리케이션 프로그램의 실행은 컴퓨팅 네트워크에 의해 지켜지는 컴퓨팅 모델에 따라 클라이언트 노드 또는 서버 노드 어느 한쪽에서 발생한다. 서버-기반 컴퓨팅 모델에 따르면, 서버 노드는 어플리케이션 프로그램을 실행하고, 클라이언트 노드에서의 디스플레이를 위해 클라이언트 사용자 인터페이스를 위한 제어 정보만이 컴퓨터 네트워크를 통해 클라이언트에 전송된다. 클라이언트-기반 컴퓨팅 모델에 따르면, 서버 노드는 클라이언트 노드에 어플리케이션 프로그램을 전송함으로써 클라이언트 노드가 클라이언트 노드의 자원을 이용하여 그 프로그램을 실행하도록 한다.
현대 컴퓨터 네트워크의 사용자들은 마이크로소프트사(워싱토, 레드몬드 소재)에 의해 제공되는 WINDOWS(윈도우즈) 계열의 운영체제와 MacOS에 의해 데스크톱 컴퓨터상에서 제공되는 기능과 유사한 기능을 원한다. 그러나, 클라이언트-서버 네트워크에서, 실행가능 프로그램, 데이터 파일 및 사용자의 가상 데스크톱 모두가 서로 다른 컴퓨터상에 존재할 수 있다. 이러한 경우에, 데이터 파일의 선택은 통상적으로 전술한 운영체제의 기능을 호출하여, 데이터 파일과 동일한 컴퓨터상에 있는 실행가능 프로그램의 실행을 개시하려고 시도할 것이다. 몇가지 이유로 인하여, 이는 사용자가 원하는 행동이 아닐 가능성이 있다. 데이터 파일을 저장하고 있는 컴퓨터가 적합한 어플리케이션 프로그램을 가지고 있지 않거나, 데이터 파일을 저장하고 있는 컴퓨터가 공유되어 있어서 상기 실행가능 프로그램을 실행시킬 때 다른 사용자들이 심각한 성능저하를 겪는 등의 일이 발생할 수 있다. 따라서, 하나의 컴퓨터상에서 데이터 파일 또는 이의 표시자(representation)를 선택하면 또다른 컴퓨터상에 있는 관련 실행가능 프로그램의 실행을 개시함으로써 분산 프로그램 실행을 도모하는 장치 및 방법을 제공하는 것이 바람직하다.
본 발명은 분산 프로그램 실행을 위한 방법에 관련된 것이다. 일측면에 따르면, 본 발명은 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 위한 방법에 관한 것이다. 방법은 데이터 파일 유형과 서버상에서의 실행을 위한 실행가능 프로그램간의 연관성을 지정하는 매핑을 수신하는 단계를 포함한다. 방법은 클라이언트 시스템상에 저장된 데이터 파일의 그래 픽 표시자를 제공하는 단계와, 데이터 파일의 그래픽 표시자 선택을 수신하는 단계를 또한 포함한다. 방법은 상기 수신된 매핑을 이용하여 선택된 데이터 파일에 관련된 실행가능 프로그램을 식별하는 단계와, 상기 식별된 실행가능 프로그램을 실행시키라는 요청을 전송하는 단계를 또한 포함한다.
일실시예에서, 매핑은 데이터 파일 유형, 서버와 연결하기 위한 프로그램, 데이터를 처리하기 위한 실행가능 프로그램 및 실행가능 프로그램의 입력으로서 기타 파라미터들에 관련된 정보를 포함한다. 또다른 실시예에서, 매핑은 주기적으로 또는 필요시에 갱신될 수 있다. 또다른 실시예에서, 클라이언트 시스템상의 파일은 수신된 매핑을 포함하기 위해 수정된다. 클라이언트는 매핑으로부터 실행가능 프로그램 및 그 위치를 식별하고 식별된 서버 또는 서버들에 프로그램 실행을 실행시키라는 요청을 전송할 수 있다.
또다른 측면에서, 본 발명은 클라이언트 시스템과 복수의 서버 시스템들을 포함하는 네트워크에서 분산 프로그램 실행을 가능케 하기 위한 방법에 관련된다. 방법은 데이터 파일 유형과 서버 시스테상에서의 실행을 위한 실행가능 프로그램간의 연관성을 지정하는 매핑을 포함한다. 데이터 파일은 클라이언트 시스템상에 저장되어 있다. 방법은 실행가능 프로그램을 실행시키라는 요청을 수신하는 단계와 서버상에서 상기 실행가능 프로그램을 실행시키는 단계를 또한 포함한다.
또다른 측면에 따르면, 본 발명은 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 위한 방법에 관한 것이다. 방법은 서버 시스템상에 저장된 데이터 파일의 그래픽 표시자를 제공하는 단계와 상기 그래픽 표시자의 선택을 수신하는 단계를 포함한다. 방법은 데이터 파일의 그래픽 표시자 선택을 서버 시스템에 전송하는 단계와 상기 선택된 데이터 파일에 관련된 실행가능 프로그램을 실행시키라는 요청을 수신하는 단계를 포함한다. 요청은 서버 시스템에 전송된다. 방법은 선택된 데이터 파일에 관련된 실행가능 프로그램을 실행시키는 단계를 부가적으로 포함한다.
일실시예에서, 방법은 상기 선택된 데이터 파일에 연관된 데이터를 수신하는 단계를 더 포함한다. 실행가능 프로그램은 처리를 위해 상기 수신된 데이터를 이용한다. 또다른 실시예에서, 상기 선택된 데이터 파일에 대한 포인터가 수신되며, 상기 포인터는 서버 시스템으로부터 상기 선택된 데이터 파일에 관련된 데이터를 수신하는데 활용될 수 있다.
또다른 측면에 의하면, 본 발명은 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 관한 것이다. 방법은 데이터 파일 유형과 클라이언트 시스템상에서의 실행을 위한 실행가능 프로그램간의 연관성을 지정하는 매핑을 수신하는 단계를 포함한다. 방법은 서버 시스템상에 데이터 파일을 저장하는 단계와, 저장된 데이터 파일의 선택을 수신하는 단계와, 상기 수신된 매핑을 이용하여 상기 선택된 데이터 파일 유형에 관련된 실행가능 프로그램을 식별하는 단계를 또한 포함한다. 방법은 클라이언트 시스템에 식별된 실행가능 프로그램을 실행시키라는 요청을 전송하는 단계를 또한 포함한다.
일실시예에서, 데이터 파일은 수신된 매핑을 포함하기 위해 서버 시스템상에 서 수정된다. 또한, 수신된 매핑은 주기적으로 또는 필요시에 갱신될 수 있다.
또다른 실시예에서, 본 발명은 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 관한 것이다. 방법은 데이터 파일 유형과 클라이언트 시스템상에서의 실행을 위한 실행가능 프로그램간의 연관성을 지정하는 매핑을 수신하는 단계를 포함한다. 방법은 서버 시스템상에 데이터 파일을 저장하는 단계와, 저장된 데이터 파일의 선택을 클라이언트 시스템에서 수신하는 단계와, 상기 데이터 파일의 선택을 서버 시스템에 전송하는 단계를 포함한다. 방법은 상기 수신된 매핑을 이용하여 상기 선택된 데이터 파일 유형에 관련된 실행가능 프로그램을 식별하는 단계를 또한 포함한다. 방법은 클라이언트 시스템에 상기 식별된 실행가능 프로그램을 실행시키라는 요청을 전송하는 단계와 상기 클라이언트 시스템에서 상기 실행가능 프로그램을 실행시키는 단계를 또한 포함한다.
또다른 측면에 따르면, 본 발명은 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 관한 것이다. 방법은 웹 서버에 저장된 데이터 파일의 그래픽 표시자를 제공하는 단계를 포함한다. 상기 데이터 파일에 관련된 제2 실행가능 프로그램에 관한 정보를 포함하는, 제1 실행가능 프로그램을 실행시키라는 요청이 수신된다. 제2 프로그램은 클라이언트 시스템상에서 또는 복수의 서버 시스템들중 하나에서 실행된다. 상기 제2 실행가능 프로그램으로부터의 어플리케이션 결과 데이터가 프레젠테이션(presentation)을 위해 상기 제1 실행가능 프로그램에 의해 수신되고 포맷된다. 또다른 실시예에서, 방법은 제1 실행가능 프로그램을 수신하는 단계를 또한 포함한다. 또다른 실시예에서, 방법은 식별된 실행가능 프로그램이 클라이언트 시스템상에서 실행될지 또는 복수의 서버 시스템중 하나에서 실행될지 여부를 판단하기 위한 규칙을 수신하는 단계를 포함한다. 또다른 실시예에서, 방법은 제1 실행가능 프로그램을 이용하여 어플리케이션 결과 데이터를 디스플레이하는 단계를 포함한다. 이들 실시예중 일부에서, 방법은 데이터 파일에 관련된 데이터를 수신하는 단계를 포함한다.
또다른 측면에 따르면, 본원 발명은 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 관한 것이다. 데이터 파일의 그래픽 표시자가 전송되고 제1 실행가능 프로그램을 실행시키라는 요청이 이루어진다. 제1 실행가능 프로그램은 어플리케이션 결과 데이터를 수신한다. 요청은 클라이언트 시스템 또는 복수의 서버 시스템중 하나에서의 실행을 위해 제2 실행가능 프로그램에 관한 정보를 포함할 수 있다. 일실시예에서, 방법은 상기 제1 실행가능 프로그램 또는 상기 데이터 파일에 대한 포인터를 제공하는 단계를 포함한다. 또다른 실시예에서, 방법은 상기 제공된 포인터를 이용하여 상기 데이터 파일에 관련된 데이터 요청을 처리하는(servicing) 단계를 포함한다. 또다른 실시예에서, 방법은 데이터 파일의 내용을 제공하는 단계를 포함한다.
또다른 측면에 의하면, 본 발명은 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 관한 것이다. 방법은 웹서버상에 저장된 데이터 파일의 그래픽 표시자를 웹 시스템이 전송하는 단계를 포함한다. 클라이언트 시스템상에서 어플리케이션 결과를 수신하기 위해 제1 실행가능 프로그램을 실행시키라는 요청이 제공된다. 요청은 클라이언트 시스템 또는 복수의 서버 시스템중 하나에서의 실행을 위해 제2 실행가능 프로그램에 관한 정보를 포함한다. 클라이언트 시스템은 제1 실행가능 프로그램을 실행시킨다. 일실시예에서, 방법은 클라이언트 시스템에 제1 실행가능 프로그램을 제공하는 단계를 포함한다. 또다른 실시예에서, 방법은 클라이언트 시스템에서 상기 제2 실행가능 프로그램이 클라이언트 시스템상에서 실행될지 또는 복수의 서버 시스템중 하나에서 실행될지의 여부를 판단하기 위한 규칙을 수신하는 단계를 포함한다.
본 발명은 첨부된 청구항에 구체적으로 기재되어 있다. 본 발명의 전술한 장점 및 더 나아간 장점들은 이하의 설명과 첨부된 도면을 참조함으로써 더 잘 이해될 것이다.
도 1은 네트워크를 통해 일군의 서버 노드와 통신하는 클라이언트 노드의 실시예 도면으로서, 클라이언트 노드의 이웃 프로그램(program neighborhood)이 판단될 수 있다.
도 2a는 서버 노드중 하나가 클라이언트 노드의 이웃 프로그램을 판단하기 위해 어플리케이션 프로그램의 실행을 개시하는 예시적 프로세스를 설명하는 블록도이다.
삭제
도 2b는 클라이언트 노드가 해당 클라이언트 노드의 이웃 프로그램을 판단하기 위해 어플리케이션 프로그램의 실행을 개시하는 예시적 프로세스를 설명하는 블록도이다.
도 2c는 클라이언트 노드가 그의 이웃 프로그램을 판단하기 위해 웹 브라우저 어플리케이션 프로그램을 이용하는 예시적 프로세스를 설명하는 블록도이다.
도 3a, 3b 및 3c는 클라이언트 노드가 클라이언트 노드에서 디스플레이되는 이웃 프로그램 윈도우로부터 어플리케이션 프로그램을 개시하는 예시적 프로세스를 설명하는 블록도이다.
도 3d는 클라이언트 노드가 클라이언트 노드에서 디스플레이되는 이웃 프로그램 웹페이지로부터 어플리케이션 프로그램을 개시하는 예시적 프로세스를 설명하는 블록도이다.
도 4는 이웃 프로그램 어플리케이션이 설치된 클라이언트 노드가 복수의 서버 노드중 하나와 통신하는 클라이언트-기반 컴퓨팅 구현의 블록도이다.
도 5는 클라이언트 노드가 이웃 프로그램 어플리케이션이 설치된 서버 노드와 통신하는 서버-기반 컴퓨팅 구현의 블록도이다.
도 6a는 이웃 프로그램 어플리케이션이 실행된 이후에 클라이언트 디스플레이 스크린상에 나타나는 예시적인 디스플레이 스크린샷이다.
도 6b는 이웃 프로그램 어플리케이션이 실행된 이후에 클라이언트 디스플레 이 스크린상에 나타나는 또다른 예의 디스플레이 스크린샷이다.
도 7은 어플리케이션 서버상에서의 어플리케이션 프로그램 사용에 대한 가용성에 대하여 클라이언트 노드에게 알려주는 프로세스 구현을 흐름도로 표현한 것이다.
도 8a는 사용자가 자신의 클라이언트 노드에 의해 호스팅된 데이터 파일을 선택함으로써 서버 노드상의 어플리케이션 프로그램을 실행시키는 프로세스의 구현을 흐름도로 표현한 것이다.
도 8b는 도 8a의 구현에서 서버 노드의 역할을 흐름도로 표현한 것이다.
도 9a는 사용자가 서버 노드에 의해 호스팅되는 데이터 파일을 선택함으로써 자신의 클라이언트 노드상의 어플리케이션 프로그램을 실행시키는 프로세스의 구현을 흐름도로 표현한 것이다.
도 9b는 도 9a의 서버 노드 역할을 흐름도로 표현한 것이다.
도 10a는 사용자가 웹서버에 의해 호스팅된 데이터 파일을 선택함으로써 서버 노드에 의해 호스팅되는 어플리케이션 프로그램을 실행시키는 프로세스의 구현을 흐름도로 표현한 것이다.
도 10b는 도 10a의 구현에서 웹 서버의 역할을 흐름도로 표현한 것이다.
도면에서, 일반적으로 전체 도면에 걸쳐서 유사한 도면 부호는 동일한 부분을 지칭한다. 도면이 반드시 스케일링될 필요는 없으며, 본 발명의 원칙을 설명하는데 중점을 둔다.
도 1은 네트워크(40)를 통해 컴퓨팅 시스템(어플리케이션 서버, 30, 32, 34 및 36)과 통신하는 제1 컴퓨터 시스템(클라이언트 노드, 10)과 제2 컴퓨팅 시스템(클라이언트 노드, 20)을 도시한다. 네트워크(40)는 LAN 또는 인터넷(또는 월드와이드웹)과 같은 WAN일 수 있다. 클라이언트 노드(10, 20)의 사용자들은 표준 전화선, LAN 또는 WAN 링크(예, T1, T3, 56kb, X.25), 브로드밴드 회선(ISDN, 프레임 릴레이(Frame Relay), ATM) 및 무선 연결을 포함하는 다양한 연결을 통해 네트워크(40)에 연결될 수 있다. 연결은 다양한 통신 프로토콜(예, TCP/IP, IPX, SPX, NetBIOS, 이더넷, RS232 및 직접 비동기 연결)을 이용하여 개설될 수 있다.
일실시예에서, 클라이언트 노드(10)는 (예를 들어, x86, 680x0, 파워PC, PA-RISC, 또는 MIPS 프로세서 계열을 이용하는) 개인용 컴퓨터, 스마트 또는 덤(dumb) 터미널, 네트워크 컴퓨터, 무선 장치, 정보 가전제품, 워크스테이션, 미니컴퓨터, 메인 컴퓨터 또는 기타 컴퓨팅 장치로서, 네트워크(40)를 통해 어플리케이션 서버(30,32, 34)로부터 다운로드되는 어플리케이션 프로그램을 실행시키기에 충분한 영구 저장소 및 그래픽 사용자 인터페이스를 포함하는 장치이다. 클라이언트 노드(10)에 의해 지원되는 운영체제는 윈도우즈 계열 운영체제, MacOS, JavaOS 및 다양한 형태의 유닉스(예, 솔라리스(Solaris), 선OS(SunOS), 리눅스(Linux), HP-UX, A/IX 및 BSD-기반 배포물)중 하나를 포함할 수 있다. 클라이언트 노드(10)는 디스플레이(12), 키보드(14), 다운로드된 어플리케이션 프로그램을 저장하기 위한 메모리(16), 프로세서(17) 및 마우스(18)를 포함할 수 있다. 메모리(16)는 영구적이거나 휘발성있는 저장소를 제공할 수 있다.
프로세서(17)는 클라이언트 노드(10)상에서 어플리케이션 프로그램을 국부적으로 실행하고 디스플레이 스크린(12)상에 결과적인 윈도우-기반 데스크톱을 디스플레이할 수 있다. 클라이언트 노드(10)상에서의 이러한 국부적 처리는 전술한 클라이언트-기반 컴퓨팅 모델에 따른다. 클라이언트 노드(10)의 구현물에 나타나는 전형적인 윈도우-기반 데스크톱이 도 1b에 도시되어 있다. 클라이언트 노드(20)에 가용한 자원들은 하나 이상의 아이콘(100)으로서 그래픽적으로 표현된다. 메모리(16)는 하드 디스크 아이콘(104)으로 표현된다. 메모리에 저장된 데이터 파일(16)과 다운로드된 어플리케이션 프로그램은 개별 파일 아이콘으로서 표현된다. 예를 들어, 메모리(16)는 워드프로세서를 구현한 다운로드된 어플리케이션 프로그램(아이콘(108)으로서 표시되어 있음)과, 상기 워드 프로세서 프로그램에 의해 처리하기에 적합한 문서를 포함하는 데이터 파일을 저장한다.
통상적으로 사용자는 키보드(14), 마우스(18) 또는 (미도시된) 촉각형 인터페이스와 같은 기타 다른 입력 장치를 이용하여 데스크톱을 조작한다. 사용자는 입력 장치를 이용하여 아이콘(108)을 선택함으로써 워드 프로ㅔ서 프로그램의 실행을 호출한다. 워드 프로세서 프로그램을 이용하여, 사용자는 아이콘(112)에 의해 표현되는 문서를 포함하는 데이터 파일의 내용을 다룬다. 그러나, 사용자가 데이터 파일의 선택을 지지하기 위해 자체적으로 워드 프로세서를 파악하고 활성시키는 것을 피할 가능성이 많다. 전술한 바와 같이, 그래픽 사용자 인터페이스를 갖는 현대적 운영 체제는 선택된 데이터 파일을 검사하고, 상기 선택된 데이터 파일에 관련된 하나 이상의 파라미터를 검색하고, 상기 선택된 데이터 파일에 관련된 데스 크톱 컴퓨터상에 실행가능한 어플리케이션 프로그램을 식별하고, 상기 관련된 어플리케이션 프로그램의 실행을 개시하고 나서, 처리를 위해 상기 연관된 어플리케이션 프로그램에 상기 선택된 데이터 파일의 내용을 제공한다.
다른 실시예에서, 클라이언트 노드(20)는 임의의 터미널(윈도우즈 또는 비-윈도우 기반) 또는 서버-기반 컴퓨팅 모델에 따라 동작하는 딘-클라이언트(thin-client) 장치이다. 서버-기반 컴퓨팅 모델에서, 어플리케이션 프로그램의 실행은 어플리케이션 서버(30, 32, 34)에서 전적으로 일어나고, 사용자 인터페이스, 키스트로크 및 마우스 이동이 네트워크(40)를 통해 클라이언트 노드(20)에 전송된다. 사용자 인터페이스는 텍스트 구동형(예, DOS) 또는 그래픽 구동형(예, 윈도우즈)일 수 있다. 클라이언트 노드(20)에 의해 지원되는 사용자 인터페이스는 DOS와 윈도우-기반 터미널용 WINDOWS CE를 포함한다. 클라이언트 노드(20)는 디스플레이 스크린(22), 키보드(24), 마우스(28), 프로세서(미도시) 및 영구 저장소(미도시)를 포함한다.
어플리케이션 서버(30,32,34, 36)는 네트워크의 다른 부분(예, 워크스테이션, 프린터)에 대한 액세스를 제어하는 임의의 컴퓨팅 장치이다. 설명의 편의상 4개의 어플리케이션 서버가 도시되어 있지만, 본 발명의 다양한 실시예에서 좀더 많거나 적은 어플리케이션 서버들이 네트워크(40)에 연결될 수 있음을 이해할 것이다. 서버(30, 32, 34 및 36)는 전술한 바와 같이 클라이언트-기반 컴퓨팅모델 또는 서버-기반 컴퓨팅 모델에 따라 작동한다.
어플리케이션 서버(30, 32, 34, 36) 각각은 클라이언트 노드(10, 20)에 의 해 액세스되기 위한 하나 이상의 어플리케이션 프로그램을 호스팅한다. 클라이언트 노드가 사용하는 것이 가능한 어플리케이션 프로그램들은 공개 어플리케이션 프로그램(published applications)으로 지칭된다. 이러한 어플리케이션 프로그램의 예로서, WORD와 같은 워드 프로세싱 프로그램, EXCEL과 같은 스프레드쉬트 프로그램(양자 모두 마이크로소프트사에 의해 제공됨), 재정 보고서 프로그램, 고객 등록 프로그램, 기술 지원 프로그램, 고객 데이터베이스 프로그램 또는 응용 세트 관리자(application set managers)를 들 수 있다.
일 실시예에서, 서버(30, 32, 34)는 동일한 도메인(38)에 속한다. 네트워크(40)에서, 도메인은 하나의 보안 데이터베이스의 제어에 따르는 일군의 어플리케이션 서버 및 클라이언트 노드들을 포함하는 세부-네트워크이다. 일실시예에서, 도메인은 하나 이상의 "서버 프레임", 즉, 중앙 관리를 제공하기 위해 단일 서버로서 동작하도록 함께 연결된 일군의 서버들을 포함한다. 역으로, 서버 팜(server farm)은 하나 이상의 도메인을 포함할 수 있다. 동일한 서버 팜에 속하는 2개의 상이한 도메인의 서버들 경우에, 사용자가 단일의 인증 증명서(credential)를 이용하여 각 도메인에 연관된 자원을 액세스할 수 있도록 허용하기 위해서는 상이한 도메인간에 연관성을 지정해주는 신뢰 관계가 도메인들간에 존재할 필요가 있다.
일 실시예에서, 어플리케이션 서버(36)는 도메인(38)과는 다른 도메인에 속한다. 또다른 실시예에서, 어플리케이션 서버(36)는 서버(30,32, 34)와 동일한 도메인에 속한다. 어느 실시예에서도 어플리케이션 서버(30,32, 34)가 하나의 서버 팜에 속하는 반면에 서버(36)가 또다른 서버 팜에 속할 수 있거나, 어플리케이션 서버 모두(30,32,34,36)가 동일한 서버 팜에 속할 수도 있다. 신규 서버가 네트워크(40)에 연결되면, 신규 서버는 기존 서버 팜에 합류하거나 신규서버 팜을 개시할 수 있다.
일 실시예에서, 네트워크(40)는 어플리케이션 서버(30,32,34,36)들 사이의 로드-레벨 밸런싱(load-level balancing)을 수행하기 위한 마스터 서버 노드를 포함한다. 또다른 실시예에서, 마스터 서버 노드는 어플리케이션 서버(30,32,34,36)중 하나이다. 마스터 서버 노드는 나머지 어플리케이션 서버들 각각에 대응하는 일련의 서버 어드레스 리스트와 로드 정보를 포함한다. 가용 서버 리스트 및 이에 대응하는 로드 레벨을 이용하여, 마스터 서버 노드는 클라이언트 노드가 가용 서버 리스트 및 대응 로드 레벨에 근거하여 어플리케이션 프로그램이 실행될 특정 서버 노드로 향하도록 한다. 대안적으로, 어플리케이션 서버(30,32,34,36)는 로드 레벨과 같은 관리 정보를 교환하기 위해 동등(peer-to-peer) 방식으로 그들간에 협력함으로써, 임의의 서버(30,32,34,36)가 클라이언트 노드(10, 20)에 의해 이루어진 요청에 응답할 수 있도록 해준다.
이웃 프로그램(Program Neighborhood)
본 발명의 원리에 다르면, 임의의 클라이언트 노드(10, 20) 사용자가 네트워크(40)내에서 어플리케이션 서버(30,32,34,36)에 의해 호스팅되는 어플리케이션 프로그램의 가용성을 알아내는데 있어서, 이러한 어플리케이션 프로그램을 링크하 는데 필요한 기술적 정보를 입력하거나 이러한 어플리케이션을 어디에서 찾아야 할지에 대하여 알고 있을 것을 필요로 하지 않는다. 이러한 가용 어플리케이션 프로그램은 사용자의 "이웃 프로그램"을 이룬다. 클라이언트 노드에 대한 이웃 프로그램을 판단하기 위한 시스템은, (이하에서,"이웃 프로그램" 어플리케이션이라 지칭되는) 어플리케이션 프로그램과, 상기 어플리케이션 프로그램의 컴포넌트들을 저장하기 위한 메모리와, 상기 어플리케이션 프로그램을 실행하기 위한 프로세서를 포함한다.
이웃 프로그램 어플리케이션은 전술한 바와 같이 클라이언트 노드(10)의 메모리 및/또는 어플리케이션 서버(30,32,34,36)상에 설치된다. 이웃 프로그램 어플리케이션은 서비스, 어플리케이션 프로그래밍 인터페이스(API), 및 클라이언트 노드(10,20)의 사용자에게 드러내지는 사용자 인터페이스(UI) 프로그램과, 어플리케이션 서버들에 의해 호스팅된 것으로 각각이 클라이언트 노드가 사용하도록(예, 실행하도록) 인증된 어플리케이션 프로그램들의 집합체이다.
이웃 프로그램 어플리케이션에 따라 작동되는 어플리케이션 서버는 서버 팜내의 각각이 어플리케이션 서버로부터 어플리케이션-관련 정보를 수집한다. 각각의 호스팅된 어플리케이션에 대한 어플리케이션-관련 정보는, 어플리케이션을 호스팅하는 서버의 어드레스, 어플리케이션 명칭, 해당 어플리케이션을 사용하도록 인증된 사용자 또는 사용자 그룹, 해당 어플리케이션에 의해 지원되는 데이터 유형, 지원되는 데이터 유형에 관련된 파일 유형, 어플리케이션에 관련된 파일 유형, 서버 노드 또는 클라이언트 노드 어느 한쪽에서의 어플리케이션의 실행을 지정하는 조건 규칙들 및 해당 어플리케이션을 실행시키기 위한 연결을 개설하기 이전에 클라이언트 노드에 요구되는 최소 성능을 포함하며, 이에 제한되는 것은 아니다. 예를 들어, 어플리케이션은 비디오 데이터를 스트리밍할 수 있으며, 따라서, 최소로 요구되는 성능은 클라이언트 노드가 비디오 데이터를 지원하는 것이다. 다른 요구사항의 예로서 클라이언트 노드가 오디오 데이터 또는 암호화된 데이터를 지원한다는 것을 들 수 있다. 어플리케이션-관련 정보는 이하에 설명되는 바와 같이 데이터베이스에 저장될 수 있다.
클라이언트 노드가 네트워크(40)에 연결하면, 클라이언트 노드의 사용자는 사용자 증명서(credentials)를 제공한다. 사용자 증명서는 사용자의 명칭, 패스워드 및 사용자가 인증된 도메인 명칭을 통상적으로 포함한다. 사용자의 명서는 스마트 카드, 시간-기반 토큰, 사회보장번호, 사용자 패스워드, 개인식별번호(PIN), 대칭키 또는 타원형 곡선 암호화에 기반을 둔 디지털 서명, 사용자의 생의학적 특성, 또는 클라이언트 노드의 사용자의 신원이 획득되어 인증을 위해 제출될 수 있는 임의의 다른 수단으로부터 얻어질 수 있다.
클라이언트 노드에 응답하는 서버는 사용자 증명서에 기반을 두어 사용자를 인증한다. 일 실시예에서, 사용자 증명서는 인접 프로그램이 실행중인 곳마다 저장된다. 예를 들어, 클라이언트 노드(10)가 이웃 프로그램 어플리케이션을 실행한다면, 사용자 증명서는 클라이언트 노드(10)에 또한 저장된다. 어플리케이션 서버가 이웃 프로그램 어플리케이션을 실행중인 또다른 실시예에서, 사용자 증명서는 해당 서버에 저장된다.
사용자 증명서 및 어플리케이션-관련 정보로부터, 서버는 어플리케이션 서버에 의해 호스팅되는 어플리케이션 프로그램중 어느 프로그램이 클라이언트 노드의 사용자의 사용을 위해 가용한지를 또한 판단한다. 서버는 클라이언트 노드에 가용한 어플리케이션 프로그램을 나타내는 정보를 전송한다. 프로세스는 클라이언트 노드의 사용자가 어플리케이션 연결을 셋업할 필요성을 제거해준다. 또한, 서버 관리자는 다양한 클라이언트 노드 사용자들의 어플리케이션 액세스를 제어할 수 있다.
서버에 의해 수행된 사용자 인증은 클라이언트 노드에 제공되는 호스팅된 어플리케이션 프로그램 각각이 또다른 서버에 존재하더라도 이러한 어플리케이션 프로그램의 사용을 인가하기에 충분하다. 이에 따라, 클라이언트 노드가 호스팅된 어플리케이션 프로그램중 하나의 실행을 개시할 때, 해당 어플리케이션 프로그램의 사용을 인증하기 위해 사용자에 의한 사용자 증명에 관한 부가적인 입력이 불필요하다. 따라서, 사용자 증명서의 단독 입력만으로, 클라이언트 사용자에 의해 부가적인 수동 로그온 인증 프로세스 없이도, 가용한 어플리케이션 프로그램을 판단하고 이러한 어플리케이션 프로그램의 시작을 인가하는 작용을 한다.
클라이언트 노드(10, 20) 또는 어플리케이션 서버는 도 2a 내지 2c와 관련하여 설명되는 바와 같이 이웃 프로그램 어플리케이션을 개시할 수 있다. 결과는 클라이언트 노드(10,20)의 디스플레이 스크린(12,22)상에 디스플레이된다. 그래픽 환경에서, 결과는 이웃 프로그램 그래픽 윈도우내에 디스플레이될 수 있고 각각의 인가된 어플리케이션 프로그램은 상기 윈도우에서 그래픽 아이콘에 의해 나타내질 수 있다.
하나의 이웃 프로그램 어플리케이션의 구현물은 클라이언트 노드(10, 20)에게 사용이 인가되지 않은 어플리케이션 프로그램들을 걸러내고(filter) 인가된(즉, 사용가능한) 프로그램들만을 디스플레이한다. 다른 실시예에서, 이웃 프로그램 어플리케이션은 인가된 프로그램 및 비인가된 프로그램 모두를 디스플레이한다. 인가되지 않은 어플리케이션 프로그램들이 디스플레이로부터 걸러지지 않은 경우에, 이러한 프로그램들은 사용가능하지 않음을 알리는 통지가 제공될 수 있다. 대안적으로, 이웃 프로그램 어플리케이션은, 클라이언트 노드(10, 20)가 실행시키도록 인가되거나 인가되지 않은 여부를 확인하지 않고, 클라이언트 노드의 사용자에게 어플리케이션 서버(30,32,34,36)에 의해 호스팅되는 모든 어플리케이션 프로그램들을 보고할 수 있다. 인증은 이후에 클라이언트 노드(10,20)가 이들 어플리케이션 프로그램중 하나를 실행시키고자 시도할 때 판단된다.
도 2a는 서버가 이웃 프로그램(Program Neighborhood: PN) 어플리케이션을 개시하고 PN 어플리케이션의 결과를 클라이언트 노드(10)에게 제공하는 프로세스의 예를 도시한다. 서버는 특정 어플리케이션 프로그램에 대한 클라이언트 노드(10)의 요청(42)에 응하여 PN 어플리케이션을 개시한다. 요청은 마스터 서버 노드(이 예에서는, 서버(30))에 전달된다. 마스터 서버 노드(30)는 로드 밸런싱 및 어플리케이션 프로그램 가용성을 고려하여, 클라이언트 노드(10)에 필요로 하는 어플리케이션이 서버(32)상에서 이용가능함을 나타낸다(화살표 43). 클라이언트 노드(10) 및 서버(32)는 연결을 개설한다(화살표 45 및 46). 클라이언트 노드(10)와 서버(32)가 클라이언트-기반 컴퓨팅 모델에 따라 작동중인 경우에, 이러한 연결을 이용하여, 서버(32)는 특정 어플리케이션의 실행가능 코드를 클라이언트 노드(10)에 전송할 수 있다. 대안적으로, 클라이언트 노드(10)와 서버(32)가 서버-기반 컴퓨팅 모델에 따라 작동중인 경우에, 서버(32)는 특정 어플리케이션 프로그램을 실행시키고 클라이언트 노드(10)에 그래픽 사용자 인터페이스를 전송한다. 또한, 클라이언트 노드(10)가 PN 어플리케이션을 요청한 때에 상기 PN이 클라이언트 노드(10)상에서 이미 이용될 수 있도록, 마스터 서버 노드(30) 또는 서버(32)는 PN 어플리케이션을 실행시키고(41) 클라이언트 노드(10)에 결과를 푸쉬(push)할 수 있다.
도 2b는 클라이언트 노드(10)가 PN 어플리케이션의 실행을 개시하고 서버가 PN 어플리케이션의 결과를 클라이언트 노드(10)에 제공하는 프로세스의 또다른 예를 도시한다. 클라이언트 노드(10)는 (예를 들어, PN 어플리케이션을 나타내는 아이콘(47)을 선택함으로써) 이웃 프로그램 어플리케이션을 개시한다. 이웃 프로그램 어플리케이션에 대한 요청(50)이 마스터 서버 노드(상기 예에서는 서버(30))로 향한다. 마스터 서버 노드(30)는 어플리케이션이 마스터 서버 노드(30)상에 있는 경우에 이웃 프로그램 어플리케이션을 실행시키고 결과를 클라이언트 노드(10)에 리턴할 수 있다. 대안적으로, 마스터 서버 노드(30)는 이웃 프로그램 어플리케이션(41)이 또다른 서버(예를 들면, 서버(32))에서 이용가능함을 나타낼 수 있다(화살표 51). 클라이언트 노드(10)와 서버(32)는 클라이언트 노드(10)가 이웃 프로그램 어플리케이션(41)의 실행을 요청함으로써 연결을 개설한다(화살표 53 및 54). 서버(32)는 어플리케이션(41)을 실행시키고 그 결과(즉, 그래픽 사용자 인터페이스)를 클라이언트 노드(10)에 전송할 수 있다.
도 2c는 클라이언트 노드(10)가 월드 와이드 웹을 통해 이웃 프로그램 어플리케이션의 실행을 개시하는 프로세스의 또다른 예를 도시한다. 클라이언트 노드(20)는 마이크로소프트사에 의해 제공되는 인터넷 익스플로러와 같은 웹 브라우저 어플리케이션(80)을 실행한다. 클라이언트 노드(20)는, 웹 브라우저(80)를 통해, 서버(30)에 존재하는 HTML 페이지에 대응하는 URL 어드레스를 액세스하려는 요청(82)을 전송한다. 일부 실시예에서, 서버(30)에 의해 클라이언트 노드(20)에 리턴되는 제1 HTML 페이지(84)는 클라이언트 노드(20)를 확인하고자 하는 인증 페이지이다.
인증 페이지는 클라이언트 노드(20)로 하여금 인증을 위해 서버(30)에 웹 브라우저를 통해 사용자 증명서를 전송할 수 있도록 해준다. 전송된 사용자 증명서는 서버(30) 또는 팜내의 다른 서버에 의해 검증된다. 이는 보안 도메인이 서버(30)상으로 투영될 수 있도록(project) 해준다. 예를 들어, 서버(30)가 WINDOWS NT 운영체제를 실행시키고 인증 서버가 UNIX 운영체제를 실행시킨다면, UNIX 보안 도메인이 서버(30)상을 투영되었다고 말할 수 있다. 사용자 증명서는 "명문으로" 전송되거나 암호화될 수 있다. 예를 들어, 사용자 증명서는 RSA 데이터 시큐리티(Data Security, Inc. 캘리포니아주 산 마테오 소재)에서 제조한 RC3 알고리즘을 이용하여 데이터를 암호화하는 보안 소켓층(Secure Socket Layer: SSL) 연결을 통해 전송될 수 있다.
서버(30)는 클라이언트 노드(20)로부터 수신된 사용자 증명서를 검증할 수 있다. 대안적으로, 서버(30)는 사용자 증명서를 인증을 위해 또다른 서버로 전달할 수 있다. 이 실시예에서, 인증 서버는 서버(30)와 다른 도메인에 있을 수 있다. 클라이언트 노드(20)의 인증된 사용자 증명서는 클라이언트 노드(2)에, 세션별 쿠키, 웹브라우저(80)에 의해 디스플레이되지 않는 필드, 또는 웹페이지의 유지에 흔하게 이용되는 다른 방식에 따라 저장될 수 있다. 일부 실시예에서, 서버(30)가 관련되어 있는 서버팜은 게스트 사용자, 즉, 사용자 증명서가 지정되지 않은 사용자들이 팜내의 서버에 의해 호스팅되는 어플리케이션들을 액세스하도록 허용할 수 있다. 이러한 실시예에서, 인증 페이지는 클라이언트 노드(20)로 하여금 게스트 사용자임을 확인할 수 있도록, 버튼 또는 메뉴 선택과 같은 메커니즘을 제공할 수 있다. 다른 실시예에서, 서버(30)는 인증 페이지를 완전히 생략할 수 있다.
계속해서 도 2c를 참조하면, 클라이언트 노드(20)가 서버(30)에 의해 인증되면, 서버는 클라이언트 노드(20)가 액세스하는 어플리케이션 프로그램을 나타내는 그래픽 아이콘(57, 57')이 나타나는 이웃 프로그램 윈도우(58)를 포함하는 HTML 페이지(88)를 준비하여서 클라이언트 노드(20)에 전송한다. 클라이언트 노드(20)의 사용자는 아이콘(57)을 선택함으로써 아이콘(57)에 의해 나타내어지는 어플리케이션 프로그램의 실행을 호출한다.
도 3a는 클라이언트 노드(10), 마스터 서버 노드(이 예에서는 서버(30)) 및 서버(32)간에 통신하는 프로세스의 예를 도시한다. 클라이언트 노드(10)는 서버(32)와 활성 연결(72)을 갖는다. 클라이언트 노드(10)와 서버(32)는 활성 연 결(72)을 이용하여 제1 어플리케이션 프로그램의 실행에 관한 정보를 교환한다. 클라이언트 노드(10)의 사용자 증명서는 클라이언트 노드에 저장된다. 사용자 증명서의 이러한 저장은 캐시 메모리 또는 영구 저장소에 있을 수 있다.
이 실시예에서, 이웃 프로그램 어플리케이션은 클라이언트 노드(10)상에서 실행된다. 클라이언트 노드 디스플레이는 제2 어플리케이션 프로그램을 나타내는 그래픽 아이콘(57)을 나타내는 이웃 프로그램 윈도우(58)를 포함한다. 클라이언트 노드(10)의 사용자는 마우스 또는 기타 입력 장치를 이용하여 아이콘(57)을 선택함으로써 제2 어플리케이션 프로그램을 개시할 수 있다. 요청은 연결(59)을 통해 마스터 서버 노드(30)에 전달된다. 마스터 서버 노드(30)는 클라이언트 노드(10)에게 필요로 하는 어플리케이션이 서버(32)상에서 이용가능함을 연결(59)을 통해 알려준다. 클라이언트 노드(10)는 서버(32)에 신호를 보내어 제2 연결(70)을 개설한다. 서버(32)는 클라이언트 노드(10)로부터 사용자 증명서를 요청하여 제2 어플리케이션 프로그램에 대한 액세스를 인증한다. 성공적인 인증 후에, 클라이언트 노드(10)와 서버(32)는 제2 연결(70)을 개설하고 제2 어플리케이션 프로그램의 실행에 관한 정보를 교환한다. 따라서, 클라이언트 노드(10)와 서버(32)는 복수개의 연결을 통해 서로 통신한다.
도 3b는 클라이언트 노드(20), 마스터 서버 노드(이 예에서는 서버(30)) 및 서버(32,34,36)간의 통신 프로세스의 예를 도시한다. 클라이언트 노드(20)는 서버(32)와 활성 연결(73)을 갖는다. 클라이언트 노드(20)와 서버(32)는 활성 연결(73)을 이용하여 제1 어플리케이션 프로그램의 실행에 관한 정보를 교환한다. 클라이언트 노드(20)의 사용자 증명서는 서버에서(32) 캐시 메모리 도는 영구 저장소에 저장되어 있다.
일 실시예에서, 이웃 프로그램 어플리케이션은 서버(32)상에서 실행된다. 서버(32)는 서버-기반 클라이언트 엔진(62)을 제공하는 소프트웨어를 포함하여, 서버(32)가 클라이언트 노드(20)의 자격으로 작동하는 것을 가능케 한다. 클라이언트 노드(20) 디스플레이는 제2 어플리케이션 프로그램 및 제3 어플리케이션 프로그램을 각각 나타내는 그래픽 아이콘(57, 57')이 나타나는 이웃 프로그램 윈도우(58)를 포함한다. 클라이언트 노드(20)의 사용자는 아이콘(57)을 선택함으로써 제2 어플리케이션 프로그램을 개시할 수 있다. 제2 어플리케이션 프로그램을 개시하라는 요청은 활성 연결(73)을 통해 서버(32)에 전달되고 서버(32)는 이러한 요청을 마스터 서버 노드(30)에 포워딩한다(화살표 65).
마스터 서버 노드(30)는 서버(32)에게 필요로 하는 어플리케이션 프로그램이 서버(34)상에서 이용가능함을 알린다(화살표 65). 서버(32)는 서버(34)에 접촉하여 연결(66)을 개설한다. 어플리케이션 프로그램에 대한 액세스를 인증하기 위해, 서버(34)는 서버(32)로부터 클라이언트 노드(20)의 사용자 증명서를 획득한다. 서버(32)와 서버(34)는 연결을 개설하고(화살표 66) 이에 의해 서버(32)는 제2 어플리케이션 프로그램의 실행을 요청하고 서버(34)는 서버(32)에 그래픽 사용자 인터페이스 결과를 리턴한다. 서버(32)는 클라이언트 노드(20)에 그래픽 사용자 인터페이스 결과를 포워딩하고, 클라이언트 노드(20)에서 결과가 디스플레이된다. 따라서, 클라이언트 노드(20)와 서버(34)간에 교환되는 정보는 서버(32)를 통해 전 달된다.
유사하게, 클라이언트 노드(20)는 아이콘(57')을 선택함으로써 제3 어플리케이션 프로그램을 개시할 수 있다. 제3 프로그램을 개시하라는 요청이 서버(32)에 전달된다. 서버(32)는 요청을 마스터 서버 노드(30)에 포워딩하고, 마스터 서버 노드(30)는 로드 밸런싱 및 어플리케이션 프로그램 가용성을 고려하여 어떠한 서버가 요청을 처리할 지에 대하여 판단한다. 이 예에서, 마스터 서버 노드는 서버(36)가 제3 어플리케이션 프로그램을 실행하고 있음을 가리킨다.
서버(32)와 서버(36)는 연결을 개설하고(화살표 74) 이에 의해 서버(32)는 제3 어플리케이션 프로그램의 실행을 요청하고, 서버(36)는 그 결과를 서버(32)에 리턴한다. 제3 어플리케이션 프로그램의 실행을 허락하기 위해, 서버(36)는 서버(32)로부터 획득되는 클라이언트 노드(20)의 사용자 증명서를 인증할 수 있다. 서버(32)는 그 결과를 클라이언트 노드(20)에 포워딩하고 이 결과는 클라이언트 노드(20)에서 디스플레이된다. 따라서, 제3 어플리케이션 프로그램의 실행 결과는 서버(32)를 통해 클라이언트 노드(20)와 서버(36) 사이에 전달된다.
이러한 예로부터, 클라이언트 노드(20)는 서버(32)와 하나의 연결을 통해 복수개의 어플리케이션 프로그램들을 실행시킬 수 있고, 서버(32)는 복수개의 연결(이 예에서, 서버(34)와 하나의 연결 및 서버(36)와 제2의 연결)을 유지함을 이해할 수 있을 것이다. 또한 서버(32)는 서버(34)로부터 수신된 정보와 서버(36)로부터 수신된 정보를 하나의 데이터 스트림으로 병합하여 클라이언트 노드(20)에 전송할 수 있다.
도 3c는 클라이언트 노드(20), 마스터 서버 노드(이 예에서는 서버(30)), 및 서버(32, 34)사이의 통신 프로세스 예를 도시한다. 클라이언트 노드(20)는 서버(32)와 활성 연결(76)을 갖는다. 클라이언트 노드(20)와 서버(32)는 활성 연결(76)을 이용하여 제1 어플리케이션 프로그램의 실행에 관한 정보를 교환한다. 클라이언트 노드(20)는 캐시 메모리 또는 영구 저장소에 사용자 증명서를 저장할 수 있다.
이 실시예에서, 이웃 프로그램 어플리케이션은 서버(32)상에서 실행된다. 클라이언트 노드(20) 디스플레이는 제2 어플리케이션 프로그램을 나타내는 그래픽 아이콘(57)이 나타나는 이웃 프로그램 윈도우(58)를 포함한다. 클라이언트 노드(20)의 사용자는 아이콘(57)을 선택함으로써 제2 어플리케이션 프로그램을 개시할 수 있다. 제2 어플리케이션 프로그램을 개시하라는 요청은 서버(32)에 전달된다. 서버(32)는 제2 어플리케이션 프로그램을 실행시키기 위해 클라이언트 노드(20)에 의해 필요한 어플리케이션 프로그램 명칭과 성능과 같은 어플리케이션 프로그램-관련 정보를 리턴함으로서 클라이언트 노드(20)에 응답한다(즉, "다시 부른다(call back)").
서버(32)에 의해 상기 정보가 제공되면, 클라이언트 노드(20)는 연결(77)을 통해 마스터 서버 노드(30)와 통신하여 제2 어플리케이션 프로그램을 실행시킬 서버를 판단한다. 이 예에서, 해당 서버는 서버(34)이다. 클라이언트 노드(20)는 서버(34)에 대한 연결(78)을 개설한다. 서버(34)는 클라이언트 노드(20)로부터 사용자 증명서를 요청하여 클라이언트 노드(20)의 사용자를 인증한다. 제2 어플리케이 션 프로그램은 서버(34)상에서 실행되고 서버(34)는 개설된 연결(78)을 통해 클라이언트 노드(20)에 그래픽 사용자 인터페이스를 리턴한다. 따라서, 클라이언트 노드(20)는 복수개 서버간에 복수의 활성 연결을 가질 수 있다.
도 3d는 클라이언트 노드와, 이 예에서 웹 서버로서 역할하는 서버(30)와, 서버(32) 사이의 통신 프로세스 예를 도시한다. 클라이언트 노드(20)는 도 2c와 관련하여 전술한 바와 같이 서버(30)에 자신을 인증시킨다. 일 실시예에서, 서버(30)는 클라이언트 노드(20)에 전송될 이웃 프로그램 윈도우를 구축하기 위한 기반으로 이용하기 위해, SGML, HTML 또는 XML 파일과 같은 출력 디스플레이 템플릿(90)을 액세스한다. 템플릿은 서버(30)에 연관된 휘발성 또는 영구 메모리에 저장되거나, 도 3d에 도시되는 바와 같이, 디스크 드라이브 또는 광드라이브와 같은 대용량 메모리(92)에 저장될 수 있다.
일 실시예에서, 템플릿(90)은 동적 정보로 교체되는 이웃 프로그램-특정 태그를 포함하는 표준 SGML, HTML 또는 XMS 문서이다. 태그는 서버(30)에, 아이콘 이미지와 같은, 가용 어플리케이션 프로그램에 대응하는 정보를 삽입할 출력 디스플레이내의 위치를 가리킨다. 구체적인 실시예에서, 이웃 프로그램-특정 태그는 파일내부의 주석 내에 삽입되어(embedded), 파일이 표준 해석기에 적합한 상태로 남을 수 있도록 해준다. 또다른 실시예에서, 이웃 프로그램-특정 태그는 템플릿용 기반으로 사용되는 마크업 언어의 확장자이다.
본 발명에 따라 템플릿에서 사용될 수 있는 HTML 태그의 예들이 다음 표 1에 기재되어 있다.
태그 설명
ControlField field value
(제어필드 필드값)
이 태그는 사용자 명칭, 도메인, 패스워드, 템플릿 및 어플리케이션과 같이, 크로스 페이지 네비게이션을 돕기 위해 사용되거나,사용자에 의해 설정되어 이웃 프로그램 웹페이지들사이에서 지속되는 데이터 값들을 설정하는데 사용된다.
DrawProgramNeighborhood 이 태그는 결과 디스플레이에서 이 위치에 이웃 프로그램 디스플레이를 그리도록 하기 위해 사용된다.
AppName 이 태그는 현재 콘텍스트의 공개 어플리케이션 명칭에 의해 교체된다.
WindowType 이 태그는 현재 콘텍스트의 공개 어플리케이션의 유형에 의해 교체된다.
WindowHeight 이 태그는 현재 콘텍스트의 공개 어플리케이션의 높이에 의해 교체된다.
WindowWidth 이 태그는 현재 콘텍스트의 공개 어플리케이션의 폭에 의해 교체된다.
WindowScale 이 태그는 현재 콘텍스트의 공개 어플리케이션의 크기에 의해 교체된다.
windowColors 이 태그는 현재 콘텍스트의 공개 어플리케이션의 색상 깊이에 의해 교체된다.
SoundType 이 태그는 현재 콘텍스트의 공개 어플리케이션의 사운드 설정치에 의해 교체된다.
VideoType 이 태그는 현재 콘텍스트의 공개 어플리케이션의 비디오 설정치에 의해 교체된다.
EncryptionLevel 이 태그는 현재 콘텍스트의 공개 어플리케이션의 암호화 수준에 의해 교체된다.
Icon 이 태그는 현재 콘텍스트의 공개 어플리케이션 아이콘에 의해 교체된다.

이웃 프로그램 어플리케이션에 관한 조건부 처리를 제공하고 제어 필드를 설정하기 위해 다른 태그들도 제공될 수 있다.
일 실시예에서, 템플릿은, 예를 들어, Allaire사(메사츠세츠, 캠브리지 소재)에서 제공하는 COLD FUSION(콜드 퓨전) 또는 마이크로소프트사에서 제공하는 액티브 서버 페이지(ACTIVE SERVER PAGES)를 이용하여 동적으로 구성된다. 대안적으로, 템플릿은 정적일 수 있다. 이웃 프로그램 어플리케이션은 템플릿을 분석하여(parse), 상기에서 언급한 바와 같이 이웃 프로그램-특정 태그를 교체한 다. 이웃-프로그램에 특정되지 않는 태그들은 파일에 남겨져서 클라이언트(20)상에서 실행되는 브라우저 프로그램(80)에 의해 분석될 것이다.
일 실시예에서, 입력으로서 HTML 템플릿을 받아들이고 템플릿내에 존대하는 이웃 프로그램-특정 태그를 해석하고 이웃 프로그램-특정 태그 모두를 적절한 텍스트로 교체한 원 템플릿을 제공하는 템플릿 파서(parser) 객체가 제공된다. 템플릿 파서 객체에는 이웃 프로그램-특정 태그와 교체되어야 하는 정보를 제공하기 위해 웹 서버 인터페이스로부터 쿠키, URL 질의 스트링, 또는 제어 필드가 전달될 수 있다.
또다른 실시예에서, 이웃 프로그램 어플리케이션은 스크립트가 어플리케이션 프로그램 인터페이스를 통해 정보에 액세스할 수 있도록 허용한다. 스크립트는, 예를 들어, VBScript 또는 JScript로 작성될 수 있다. 이 실시예에서, 스크립트 언어는 스크립에 의해 취해진 질의에 응답하여 어플리케이션 프로그램에 의해 리턴되는 정보를 이용하여 출력 디스플레이를 동적으로 생성하는데 사용된다. 출력 디스플레이가 일단 생성되면, 그것은 클라이언트 노드(20)로 전송되어 브라우저 프로그램(80)에 의해 디스플레이된다.
클라이언트 노드(20)의 사용자는 이웃 프로그램 웹페이지에 디스플레이된 아이콘(57, 57')를 선택함으로써 어플리케이션 프로그램을 개시할 수 있다. 일부 실시예에서, 각각의 아이콘(57, 57')은, 어플리케이션 프로그램의 위치(즉, 그것이 호스팅되는 서버, 또는, 대안적으로, 마스터 서버의 주소), 어플리케이션 프로그램에 관련된 개시 명령, 및 어플리케이션 프로그램의 출력이 어떻게(즉, 브라우저에 "임베딩된" 윈도우 또는 별개의 윈도우내에) 디스플레이되는지를 밝히는 템플릿을 지정하는 인코딩된 URL이다. 일부 실시예에서, URL은 클라이언트가 해당 어플리케이션 프로그램을 호스팅하는 서버에 대한 연결을 생성하는데 필요한 정보를 포함하는 파일 또는 파일에 대한 레퍼런스(reference)를 포함한다. 이 파일은 이웃 프로그램 어플리케이션에 의해 동적으로 생성될 수 있다. 클라이언트 노드(20)는 요청된 어플리케이션 프로그램을 호스팅하는 것으로 확인된 서버(이 예에서는, 서버(32)와의 연결(화살표 94)을 개설하고, 소정의 어플리케이션 프로그램 실행에 관한 정보를 교환한다. 일부 실시예에서, 연결(94)은 사이트릭스 시스템(플로리다, 포트 라우더데일 소재)에 의해 제조되는 ICA(Independent Computing Architecture: 독립적 컴퓨팅 구조) 프로토콜을 이용하여 이루어진다. 따라서, 클라이언트 노드(20)는 웹브라우저(60)과는 별개의 윈도우에 어플리케이션 프로그램 출력을 디스플레이하거나, 웹브라우저내에 어플리케이션 프로그램 출력을 "임베딩"할 수 있다.
도 4는 이웃 프로그램 어플리케이션의 클라이언트-기반 구현을 위한 프로그램 컴포넌트의 예시적 구성을 도시한다. 이웃 프로그램 어플리케이션의 클라이언트-기반 구현은 서버가 이웃 프로그램 어플리케이션을 실행시키는 서버-기반 컴퓨팅 모델 또는 클라이언트 노드(10)가 이웃 프로그램 어플리케이션을 국부적으로 실행시키는 클라이언트-기반 컴퓨팅 모델을 이용하여 네트워크내에 이용될 수 있다. 이웃 프로그램 어플리케이션은 이웃 프로그램 서비스(Program Neighborhood Service: PNSVC) 컴포넌트(44), 어플리케이션 데이터베이스 컴포넌트(47), 이웃 프 로그램 어플리케이션 프로그램 인터페이스(PNAPI) 컴포넌트(52), 이웃 프로그램 사용자 인터페이스 컴포넌트(56) 및 로컬 캐시(60)를 포함한다.
어플리케이션 서버(30)는, 예를 들어, 서비스 컴포넌트(PNSVC, 44) 및 어플리케이션 데이터베이스(47)를 포함한다. 클라이언트 노드(10)는 이웃 프로그램 어플리케이션의 클라이언트-기반 구현을 지원할 수 있는 클라이언트 노드의 대표적인 예로서, 어플리케이션 프로그램 인터페이스(PNAPI,52), 사용자 인터페이스 컴포넌트(56) 및 로컬 캐시(60) 컴포넌트를 포함한다. PNAPI(52)는 사용자 인터페이스 컴포넌트(56) 및 로컬 캐시(60)와 통신한다. PNSVC(44)는 통신 링크(62)를 통해 클라이언트 노드(10)상의 어플리케이션 데이터베이스(48) 및 PNAPI(52)와 통신한다.
통신 링크(62)는, 예를 들어, ICA 프로토콜을 이용하여 개설될 수 있다. ICA는 산업표준 전송 프로토콜(예, ISDN, 프레임 릴레이, 비동기 모드(Asynchronous transfer mode))을 이용하여 산업표준 네트워크 프로토콜(예, TCP/IP, IPX/SPX, NetBEUI)을 통해 실행하도록 설계된 범용 프레젠테이션 서비스 프로토콜이다. ICA 프로토콜은 가상 채널을 제공하는데, 이는 데이터 교환을 위한 명령을 송출하기 위해 어플리케이션-층 코드에 의해 사용될 수 있는 세션-기반 전송 연결이다. 가상 채널 명령은 클라이언트노드들의 기능과 밀접하게 통합되어 설계된다. ICA 프로토콜에 의해 지원되는 가상 채널 접속의 한가지 유형은 이웃 프로그램 가상 채널이다.
이웃 프로그램 가상 채널 프로토콜은 4개의 그룹 명령을 포함할 수 있다.
(1) 초기화-관련 명령,
(2) 사용자 증명서의 사본을 원하는 각 클라이언트 노드에 의해 지원될 수 있는 단일 인증 관련 명령,
(3) 이웃 프로그램 사용자 인터페이스를 구현하기 위한 어플리케이션 데이터 관련 명령,
(4) 어플리케이션 서버상에 사용자 인터페이스를 동작시키기 위한 어플리케이션 개시 콜백(launcg callback) 관련 명령.
어플리케이션 데이터베이스
어플리케이션 데이터베이스(48)는 서버팜 또는 신뢰 도메인 그룹내의 모든 공개(즉, 공표된) 어플리케이션에 대한 인증된 사용자 및 그룹 정보의 캐시이다. 서버팜내의 각 서버는 영구 저장소에 그 자신의 어플리케이션-관련 정보를 유지하고 휘발성 저장소에 데이터베이스(48)를 구축할 수 있다. 또다른 실시예에서, 데이터베이스(48)내의 수집된 모든 어플리케이션-관련 정보는 영구 저장소에 저장되고 서버팜내의 각 다른 서버에 의해 액세스될 수 있다. 데이터베이스(48)는 자체 포맷(예, 메모리내의 연결 리스트(linked list))으로 구현되거나 노벨사의 디렉토리 서비스(Novell's Directory Services) 또는 분산형 전자 디렉토리에 대하여 국제 전화통신 연합(International Telecommunication Union: ITU)에 의해 정의된 X.500 표준을 고수하는 임의의 디렉토리 서비스를 이용하여 구현될 수 있다.
어플리케이션 데이터베이스(48)는 어플리케이션 서버 리스트를 포함한다. 리스트내의 각 서버는 어플리케이션 연관 집합을 갖는다. 각 어플리케이션에 연관된 것은, 어플리케이션 명칭, 서버 리스트 및 해당 어플리케이션을 사용하도록 인가된 클라이언트 사용자를 포함할 수 있는 어플리케이션-관련 정보이다. 데이터베이스에 유지되는 어플리케이션-관련 정보의 단순 예는 다음의 표2에 의해 예시된다. 사용자 A 및 B는 클라이언트 노드(10, 20)의 사용자이고, "n/a"는 어플리케이션이 호스팅되어 있으나 클라이언트 사용자들에게 사용가능하지 않음을 나타내고,"-"는 어플리케이션이 호스팅되어 있지 않음을 나타낸다.
어플리케이션
서버 명칭 스프레드쉬트 고객 데이터베이스 워드 프로세서 계산기
서버 30 사용자 A 사용자 B n/a -
서버 32 사용자 B n/a 사용자 A -
서버 34 - - - 사용자 A
사용자 B
표 2는 서버(30,32, 34) 리스트, 서버에 의해 호스팅되는 어플리케이션(스프레드쉬트, 고객 데이터베이스, 워드 프로세서 및 계산기), 및 해당 어플리케이션을 사용하도록 인가된 사용자들을 보여준다. 예를 들어, 서버(30)는 스프레드쉬트 프로그램, 고객 데이터베이스 및 워드 프로세서를 호스팅한다. 사용자 A는 스프레드쉬트를 사용하도록 인가되고, 사용자 B는 고객 데이터베이스를 사용하도록 인가되고, 워드 프로세서를 사용하는 것에 대해서는 어떠한 사용자도 인가되어 있지 않다. 특정 프로그램을 사용하는 것에 누가 인가되어 있는지를 가리키기 위해 다른 기술들도 사용될 수 있음을 이해할 것이다. 예를 들어, 데이터베이스에 저장된 사용자 정보는 특정 어플리케이션을 사용하는데 인가된 사용자보다 인가되지 않은 사 용자를 나타내기 위해 사용될 수도 있다.
데이터베이스(48)에 저장된 정보를 획득하기 위해, 서버(30)는 서버팜내의 다른 서버 각각으로부터 해당 서버들상의 어플리케이션에 관한 어플리케이션-관련 정보를 획득하는데, 이러한 정보에는 어떠한 클라이언트 사용자 및 서버가 각 특정 어플리케이션을 액세스하는데 허락되어 있는지를 나타내는 제어 정보를 포함한다. 데이터베이스내에 유지되는 어플리케이션-관련 정보는 서버(30)의 재부팅시에 지속되거나 지속되지 않을 수 있다.
어플리케이션 데이터베이스(48)는 어플리케이션 서버(30)에 저장되는 중앙 데이터베이스일 수 있고 서버팜내의 모든 서버에 의해 액세스될 수 있다. 따라서, 어플리케이션-관련 정보는 세션 로그온 및 어플리케이션 개시동안 공개 어플리케이션 인증을 수행하는 서버들과 같은 다른 서버들이 사용하기 위해 이용가능하다. 또다른 실시예에서, 어플리케이션 데이터베이스(48)는 각각의 서버가 서버팜내의 다른 서버 각각과의 통신으로부터 획득한 정보에 기반하여 어플리케이션 서버 각각에 유지될 수 있다.
이웃 프로그램 서비스 프로그램(PROGRAM NEIGHBORHOOD SERVICE PROGRAM: PNSVC)
이웃 프로그램 어플리케이션이 설치된 각 서버(30,32,34,36)는 PNSVC 소프트웨어(44)를 실행시킨다. 각 서버(30, 32,34 및 36)에서 작동하는 PNSVC 소프트웨어(44)는 각각의 다른 서버와 통신 링크(예, 지정된 파이프)를 개설한다. 서버(30,32,34, 36)는 지정된 파이프상에서 어플리케이션-관련 정보를 교환한다. 또다른 실시예에서, PNSVC 소프트웨어(44)는 원격 레지스트리 호출을 통해 서버팜내의 다른 서버들로부터 어플리케이션-관련 정보를 수집한다(예, 서비스 컴포넌트(44)는 복수개의 다른 서버들에게 데이터그램을 전송하여 이들 서버에 의해 호스팅되는 어플리케이션 프로그램에 대응하는 어플리케이션-관련 정보를 요청한다). PNSVC(44) 소프트웨어는 어플리케이션 데이터베이스(48)에 공개된 어플리케이션에 대한 그룹 및 사용자들의 관계를 유지하고, 클라이언트 사용자를 인증할 때 해당 정보를 액세스한다. 서버(30)의 관리자는 사용자 인터페이스를 이용하여 PNSVC(44)를 구성할 수 있다.
PNSVC 소프트웨어(44)의 다른 기능은 PNAPI(52)에 의해 요청되는 서비스 및 기능을 구현하는 것과 이웃 프로그램 가상 장치 드라이버(VDPN)를 이용하여 클라이언트 노드10)상의 PNAPI(52)와 통신하는 것을 포함한다. VDPN은 ICA 접속을 개설하고 유지하기 위해 전술한 이웃 프로그램 가상 채널 프로토콜에 따라 작동된다.
이웃 프로그램 어플리케이션 프로그램 인터페이스(PROGRAM NEIGHBORHOOD APPLICATION PROGRAM INTERFACE: PNAPI)
PNAPI(52)는 다양한 동작을 수행하기 위하여(예를 들어, 디스플레이 스크린상에 윈도우를 오픈하거나, 파일을 오픈하거나, 메시지 박스를 디스플레이 하기 위하여) 이웃 프로그램 어플리케이션에 의해 사용되는 소프트웨어 기능 또는 서비스 집합이다. PNAPI(52)는 레거시(즉, 선행하거나 한때 존재한) 클라이언트 사용자 인터페이스에서 이웃 프로그램 어플리케이션 및 어플리케이션 객체를 작동시킴으로써 산출되는 어플리케이션 객체(예, 아이콘)를 개시하기 위한 일반적인 메커니즘을 제공한다. 클라이언트 노드(10)가 가용 어플리케이션을 개시하면, 개시 메커니즘은 필요시에 (예를 들어, 클라이언트 노드(10)가 어플리케이션을 국부 실행시킬 자원을 가지고 있는 않은 때에) 서버(30)상에서 어플리케이션을 개시할 수 있다.
PNAPI(52)는 클라이언트 노드(10)의 스크린(12)상의 디스플레이를 위해 사용자 인터페이스 컴포넌트(56)에 공개된 모든 어플리케이션 정보를 제공한다. PNAPI(52)는 단일 인증 특성을 지원하기 위해 클라이언트 노드(10)의 사용자들을 위한 로그온 증명서(예, 패스워드)에 관한 로컬 데이터베이스에 서버팜 로그온도 또한 관리한다. 증명서는 클라이언트 노드(10)의 부팅(전력차단 및 공급 사이클)을 거치면서 지속되거나 지속되지 않을 수 있다.
PNAPI(52)는 로컬 캐시(60)에 저장된 이웃 프로그램 어플리케이션 객체에 대한 자동 및 수동 관리를 제공한다. 로컬 캐시(60)는 클라이언트 노드(10)의 사용자에 의해 수동으로 리프레쉬되거나, 사용자가 정의한 리프레쉬 속도로 리프레쉬되거나, 또는 접속중 임의의 시점에 서버에 의해 리프레쉬될 수 있다. WINDOWS 구현체에서, PNAPI(52)는 원격 어플리케이션 파일 연관성을 구축하고 "시작(Start)" 메뉴 및 어플리케이션 객체 단축경로를 위한 데스크톱 아이콘을 관리한다.
이웃 프로그램 사용자 인터페이스
사용자 인터페이스 모듈(56)은 PNAPI(52)와 인터페이싱하고 기존 클라이언트-사용자 인터페이스(예, 원격 어플리케이션 관리자)의 기능적 수퍼셋트(superset)일 수 있다. 사용자 인터페이스 모듈(56)은 PNAPI(52)를 통해 로컬 캐쉬(60)에 저장된 정보를 액세스하고 해당 정보를 클라이언트 노드(10)의 디스플레이 스크린(12)상에 사용자에게 보여준다. 디스플레이된 정보는 클라이언트 노드(10)의 사용자에 의해 생성된 정보와 이웃 프로그램 어플리케이션에 의해 획득된 정보의 혼합이다. 사용자 인터페이스 모듈(56)은 사용자가 현재 작동중인 모든 어플리케이션과 활성 상태 및 단절 상태의 모든 세션을 사용자에게 또한 보여줄 수 있다.
그래픽 구현에서, 사용자 인터페이스 모듈(56)은 디스플레이 스크린(12)상에 디스플레이될 윈도우 및 풀다운 메뉴와 같은 다양한 그래픽적 컴포턴트들을 표시할 수 있다. 이러한 그래픽적 사용자 인터페이스 컴포넌트의 조합의 디스플레이는 일반적으로 "데스크톱"으로 불리운다. 사용자 인터페이스 모듈(56)에 의해 산출되는 데스크톱은 클라이언트 노드(10)의 사용자가 사용하기에 가용한 이웃 어플리케이션 프로그램들을 디스플레이하는 이웃 프로그램 윈도우를 포함할 수 있다. 이러한 어플리케이션 프로그램들은 네트워크상의 서버팜에 의해 호스팅되는 공개 어플리케이션들의 필터링된 조합이다. 사용자 인터페이스 모듈(56)은 각 서버팜에 대하여 이웃 프로그램 윈도우를 생성하거나 단일 이웃 프로그램 윈도우하에 상이한 서버로부터의 어플리케이션들을 병합할 수 있다.
상위 레벨에서, 이웃 프로그램 윈도우는 각 서버팜에 대한 폴더를 포함한다. 마우스(18)로 폴더중 하나를 클릭함으로써 사용자에게 가용한 각각각의 호스팅된 어플리케이션의 표시자(예, 아이콘)를 포함하는 윈도우를 생성한다. (도 6a 및 6b 참조.) 이웃 프로그램 윈도우는 공개된 어플리케이션을 개시하기 위한 초점이 되고, 사용자 인터페이스 모듈(56)은 PNAPI(52)를 통해 어플리케이션을 개시하는데 사용될 수 있다. 예를 들어, 클라이언트 노드(10)의 사용자는 마우스(18)를 이용하여 디스플레이된 아이콘중 하나를 선택하고 연관된 어플리케이션을 개시할 수 있다.
클라이언트-기반 구현의 특징은 클라이언트 노드가 오프라인이더라도(즉, ICA 접속(62)이 비활성이더라도), 사용자가 이웃 프로그램 윈도우에 디스플레이되는 객체들을 브라우즈할 수 있다는 것이다. 또한, 클라이언트 노드(10)의 사용자는 어플리케이션 객체 및 폴더를 이웃 프로그램 윈도우의 외부에서 데스크톱의 다른 그래픽 컴포넌트(예, 다른 윈도우, 폴더등)로 드래깅할 수 있다.
도 5는 이웃 프로그램 어플리케이션의 서버-기반 구현을 위한 프로그램 컴포넌트의 예시적 구성을 도시한다. 컴포넌트는 서비스(PNSVC) 컴포넌트(44'), 어플리케이션 데이터베이스 컴포넌트(48'), 어플리케이션 프로그램 인터페이스(PNAPI) 컴포넌트(52'), 사용자 인터페이스 컴포넌트(56') 및 로컬 캐시(60')를 포함한다. 각 소프트웨어 컴포넌트(44',48',52', 56' 및 60')는 어플리케이션 서버(30')상에 설치되어 있다. 서버-기반 구현을 위한 소프트웨어 컴포넌트는 도 4의 클라이언트-기반 구현을 위한 소프트웨어 컴포넌트에 대응한다. 각 서버-기반 소프트웨어 컴포넌트의 기능은 클라이언트-기반 대응물과 유사하며, 차이점이나 추가 능력은 이하에서 설명된다. PNSVC(44')는 로컬 프로시져 호출을 이용하여 PNAPI(52') 및 어플리케이션 데이터베이스(48')와 통신한다. PNAPI(52')는 사용자 인터페이스 모듈(56') 및 로컬 캐시(60')와 또한 통신한다.
클라이언트 노드(10)에 대하여 도 4에서 설명된 것과 유사하게, 클라이언트 노드(20)는 네트워크(40)에 로그온하고, 서버(30')는 서버팜내의 다른 서버들(32,34)로부터 수집된 어플리케이션 관련 정보를 포함하는 데이터베이스를 구성하고 유지하고, 서버(30')와 클라이언트 노드(20)간에 통신 링크가 개설된다. 어플리케이션 서버(30')는 ICA 채널 접속(62')을 통해 클라이언트 노드(20)와 통신한다. 채널 접속(62')은 ICA 가상 채널 프로토콜(예, 딘와이어(Thinwire))에 의해 개설될 수 있다. 딘와이어 프로토콜은 어플리케이션 서버(30')상에서 작동되는 윈도우즈-기반 어플리케이션으로부터 프레젠테이션 명령을 클라이언트 노드(20)에 전송하기 위해 사용될 수 있다. 클라이언트 노드(20)의 사용자에게는 어플리케이션이 클라이언트 노드(20)상에서 작동되는 것처럼 보인다. 클라이언트 노드(20)는 ICA 채널 접속(62')을 통해 어플리케이션 서버(30')와 통신하는 원격 어플리케이션 관리자 어플리케이션 프로그램(64)을 포함할 수 있다.
서버-기반 구현에서 이웃 프로그램 어플리케이션을 실행시키기 위해, 클라이언트 노드(20)의 사용자는 (서버(30')에서) 초기 데스크톱에 접속하고 데스크톱 환경내에서부터 이웃 프로그램 어플리케이션을 개시한다. 초기 데스크톱의로의 접속은, 예를 들어, 클라이언트 노드의 로그온 스크립트를 통해, Windows95의 시작 그룹에의 등록을 통해, 또는 또다른 중앙 관리형 서버-특정 메커니즘에 의해, 자동적으로 발생할 수 있다. 모든 원격 어플리케이션 관리 및 개시는 이러한 초기의 데스크톱을 통해 달성된다.
서버(30')와 관련하여 도 4에 설명된 것과 유사하게, 서버(30')는 사용자 증명서를 이용하여 클라이언트 노드(20)의 사용자에 의해 사용되는 것으로 인증된 어플리케이션 프로그램을 판단한다. 이웃 프로그램 그래픽 윈도우가 클라이언트 노드(20)에 리턴되어 클라이언트 스크린(22)상에 디스플레이된다. 이러한 윈도우는 클라이언트 노드(20)의 이웃 프로그랜내에, 이용가능한, 혹은 이용가능하지 않은 어플리케이션 프로그램을 나타내는 아이콘을 포함할 수 있다.
클라이언트 노드(20)의 사용자는 이웃 프로그램 윈도우내에 디스플레이되는 어플리케이션 프로그램중 하나를 선택하고 개시할 수 있다. 어플리케이션을 개시할 때, 이웃 프로그램 어플리케이션은, 서버 사이의 로드 밸런싱 요구조건 및 해당 서버(30')상에서의 어플리케이션 가용성을 적절하게 고려하여, 동일한 서버(30')상에 어플리케이션을 실행시킬 수 있다. PNAPI(52')는 서버(30')가 어플리케이션을 개시하도록 지명된 때에 서버(30')상에서 원격 어플리케이션을 국부적으로 개시하기 위한 개시 메커니즘을 포함할 수 있다. 어플리케이션을 작동시키기 위해 상이한 서버가 필요하면, 이웃 프로그램 서버는 도 3b에 대하여 전술한 바와 같이 클라이언트 노드(20) 데스크톱상에 어플리케이션을 표시하기 위해 윈도우를 이용하여 서버(30', 즉, 서버-기반 클라이언트)를 통해 어플리케이션을 개시할 수 있다.
일 실시예에서, 웹-기반 이웃 프로그램 어플리케이션은 어플리케이션의 다양한 특징들을 관리하는 객체 그룹을 포함한다. 일 실시예에서, 어플리케이션은, 웹서버에 "플러그인(plug in)"하는 세 개의 주요한 객체 클래스: 게이트웨어 객체 클래스, 증명서 객체 클래스 및 어플리케이션 객체 클래스를 포함한다. 일부 특정 실시예에서, 객체 클래스는 자바 빈(Java beans)으로 제공된다. 세가지 주요한 객체 클래스는 서버팜으로 사용자 증명서의 검증을 돕고, 지정된 사용자가 액세스할 수 있는 공표된 어플리케이션 리스트의 생성을 돕고, 특정의 공표된 어플리케이션에 대한 상세 정보 제공을 돕고, 공표된 어플리케이션 정보를 ICA-호환 포맷으로 변환하는 것을 돕는다.
객체는, 자바 빈으로서 제공될 때, 다수의 상이한 방식들로 액세스될 수 있다. 예를 들어, 이들은 COM 객체로 컴파일될 수 있고 ActiveX(액티브엑스) 컴포넌트로 이용가능해질 수 있다. 또다른 실시예에서, 서버가 자바 서버 페이지 기술을 이용하는 때와 같이, 자바 빈은 그들 본래의 형태로 사용될 수 있다. 또다른 실시예에서, 자바 빈은 인스턴스화되어(instantiated) 자바 서블렛으로 바로 사용될 수 있다. 또다른 실시예에서, 서버(30)는 자바 빈을 COM 객체로 직접 인스턴스화할 수 있다.
증명서 객체 클래스는 목표 서버팜에 입증하기 필요한 정보를 관리한다. 증명서 객체는 저장된 사용자 증명서를 다른 이웃 프로그램 객체들에 전달한다. 일부 실시예에서, 증명서 객체는 인스턴스화될 수 없고 사용자의 증명서를 나타내는 추상(abstract) 클래스이다. 생의학수단(biometrics), 스마트 카드, 신청-응답 및 시간-기반 패스워드 생성과 같은 토큰-기반 인증 메커니즘 등등과 같은 상이한 인증 메커니즘이 사용될 수 있도록 하기 위해 다양한 클래스 확장자들이 제공될 수 있다. 예를 들어, 사용자 이름, 도메인 및 패스워드를 평문으로 저장하는"명문(clear) 텍스트 증명서" 확장자가 제공될 수 있다.
게이트웨이 객체 클래스는 목표 서버 팜과 통신한다. 일실시예에서, 게이트웨이 객체 클래스는 인스턴스화될 수 없는 추상 자바 클래스로 제공된다. 특정 게이트웨이 객체는 특정 프로토콜을 이용하여, 캐싱된 어플리케이션 정보를 판독하여, 이들 두가지 방법을 조합하여, 또는 다른 다양한 방법을 이용하여 서버 팜과 통신함으로써 어플리케이션 정보를 검색할 수 있다.
상기에서 언급한 바와 같이, 게이트웨이 객체 클래스는 목표 서버 팜과의 통신을 최소화하기 위해 정보를 캐싱한다(cache). HTTP와 같은 특정 프로토콜을 이용하여 서버 팜과 통신하기 위해 게이트웨이 객체의 확장자들이 제공될 수 있다. 일 실시예에서, 게이트웨이 객체가 WINDOWS NT로 명명된 파이프를 통해 서버 팜과 통신할 수 있도록 하기 위해 확장 클래스가 제공된다. 게이트웨이 객체는 다른 이웃 프로그램 객체들이 어플리케이션 정보에 대하여 객체에 질의할 수 있도록 해주는 어플리케이션 프로그래밍 인터페이스 후크(hook)를 제공할 수 있다.
어플리케이션 객체 클래스는 공개된 어플리케이션에 관한 정보를 포함하고 이웃 프로그램 웹페이지를 생성하기 위해 서버 팜에 의해 호스팅되는 정보에 관한 정보를 리턴한다. 어플리케이션 객체 클래스는, 게트웨이 객체에 의해 생성된 객체로부터 또는 서버 팜내의 서버로부터 직접, 어플리케이션에 관한 정보를 검색함으로써 어플리케이션을 나타내는 객체들을 생성한다. 어플리케이션 객체는 어플리케이션의 일정한 속성들에 대한 콘테이너(container)로서 동작하며, 가령, 어플리케이션 명칭(설정불가), 클라이언트 윈도우가 차지하는 클라이언트 데스크톱의 비율(설정가능), 이러한 어플리케이션을 위한 클라이언트 윈도우 폭(픽셀 단위)(설정 가능), 이러한 어플리케이션을 위한 클라이언트 윈도우의 높이(픽셀 단위)(설정가능), 어플리케이션에 연결할 때 사용되는 색상 수(설정가능), 오디오 대역폭 제한치의 엄격도(설정가능), 어플리케이션에 연결할 때 사용되는 암호화 수준(설정가능), 어플리케이션에 연결할 때 사용되는 비디오 레벨(설정가능), 어플리케이션이 클라이언트의 시작 메뉴에 놓일 지의 여부(설정가능), 어플리케이션의 클라이언트의 데스크톱에 놓일 지의 여부(설정가능), 어플리케이션이 속하는 이웃 프로그램 폴더의 신분(설정가능), 어플리케이션의 서술자(description)(설정가능), 어플리케이션에 대한 그래픽 아이콘의 소스(설정가능), 어플리케이션에 연결할 때 사용되어야 하는 윈도우 종류(설정불가), 객체의 디폴트 파라미터를 덮어쓸지 여부 등과 같이, 일부는 설정가능하고 일부는 설정가능하지 않다.
도 6A는 이웃 프로그램 어플리케이션이 실행된 후에 클라이언트 노드(10 또는 20)중 스크린(18 또는 22)상에 디스플레이될 수 있는 예시적인 이웃 프로그램 윈도우(120)의 스크린샷이다. 윈도우(120)는 그래픽 아이콘(122)을 포함한다. 각 아이콘(122)은 네트워크상의 서버들(30,32,34,36)중 하나에 의해 호스팅되는 어플리케이션 프로그램을 나타낸다. 나타내어진 각각의 어플리케이션은 클라이언트 노드의 사용자가 실행하는 것이 가능하다. 사용자는 마우스(18,28) 또는 키보드(14,24)를 이용하여 어플리케이션중 하나를 선택하고 개시할 수 있다.
도 6B는 이웃 프로그램 어플리케이션이 실행된 후에 클라이언트 노드(10 또는 20)중 스크린(18 또는 22)상에 디스플레이될 수 있는 또다른 예의 이웃 프로그램 윈도우(120)의 스크린샷이다. 윈도우(124)는 그래픽 아이콘(126, 128)을 포함 한다. 각 아이콘(126, 128)은 네트워크(40)쌍의 서버들(30,32,34,36)중 하나에 의해 호스팅되는 어플리케이션 프로그램을 나타낸다. 아이콘(126)중 하나에 의해 나타내어진 각 어플리케이션 프로그램은 클라이언트 노드(10,20)의 사용자가 실행 가능하다. 사용자는 마우스(18,28) 또는 키보드(14,24)를 이용하여 어플리케이션중 하나를 선택하고 개시할 수 있다. 웹-기반 이웃 프로그램 환경의 경우에, 도 6a 및 6b의 스크린샷은 해당 아이콘(122, 166, 128)이 브라우저 윈도우 내에 디스플레이된다는 것만 제외하고는 유사하다.
아이콘(128)중 하나에 의해 나타내지는 각 어플리케이션 프로그램은, 이러한 어플리케이션이 서버 팜내에는 존재하더라도, 클라이언트 노드(10,20)의 사용자에게는 이용가능하지 않다. 이러한 어플리케이션 프로그램의 이용불가는 디스플레이 스크린상에 표시될 수 있다(예를 들어, 아이콘(128)상에 "X"가 그려질 수 있다). 이러한 어플리케이션 프로그램을 개시하려는 시도는 사용자가 상기 어플리케이션을 사용하도록 인가되지 않음을 나타내는 메시지를 발생시킬 수 있다.
도 7은 클라이언트 노드(10 또는 20)의 사용자에게 네트워크(40)상의 어플리케이션 서버(30,32,34 및 36)에 의해 호스팅되는 어플리케이션의 가용성에 대하여 알려주는 예시적인 프로세스를 도시한다. 단계(80)에서, 클라이언트 노드(10,20)는 서버들중 하나, 예를 들어, 서버(43)로부터 로그온 서버를 요청한다. 서버(32)는 연결을 개설하기 위해 유효한 사용자 증명서를 필요로 한다. 서버(32)는 클라이언트 노드(10)로부터 사용자 증명서를 수신하고(단계 82), 사용자의 로그온을 인증한다(단계(84)). 클라이언트 노드(10,20)에 데스크톱이 디스플레이된다(단계 85). 데스크톱은 이웃 프로그램 어플리케이션 프로그램을 나타내는 그래픽 아이콘을 포함할 수 있다.
단계(86)에서, 어플리케이션 서버(32)는 각각의 다른 서버(30,34 및 36)와 연결을 개설하여, 전술한 바와 같이, 이들 서버상에 호스팅되는 어플리케이션 프로그램들에 대응하는 어플리케이션-관련 정보를 교환한다(단계 88). 단계(90)에서, 어플리케이션 서버(32)는 수집된 어플리케이션-관련 정보의 데이터베이스를 구축하고 유지한다. 서버 팜내의 다른 서버(30,34, 36) 각각은 서버(32)와 유사한 방식으로 서버(32)의 데이터베이스와 균등한 데이터베이스를 구축할 수 있다. 또다른 실시예에서, 서버(32)의 데이터베이스는 서버 팜내의 다른 어플리케이션 서버(30,34,36) 각각에 액세스될 수 있는 중앙식 데이터베이스일 수 있다. 어플리케이션-관련 정보의 수집은 독립적으로 발생하거나, 서버 팜(38)으로 로그온하려는 클라이언트 노드(10,20)의 요청에 의해 발생할 수 있다.
단계(92)에서, 클라이언트 노드(10,20)는 데스크톱 디스플레이로부터 어플리케이션 프로그램의 실행을 요청할 수 있다. 마스터 서버 노드는 이러한 요청을 처리하고, 전술한 바와 같이 로드-밸런싱 및 어플리케이션 가용성을 이용하여, 이러한 서비스를 클라이언트 노드(10,20)에 제공할 어플리케이션 서버를 판단한다(단계 94). 예를 들어, 어플리케이션 서버(32)가 클라이언트 노드(10,20)에 이러한 요청을 처리하는 것으로 선택될 수 있다. 서버(32) 및 클라이언트 노드(10,20)는 전술한 바와 같이 해당 클라이언트 노드에 적합한 ICA 프로토콜에 따라 통신할 수 있다.
또한, 이러한 어플리케이션 프로그램의 요청에 응답하여, 클라이언트 노드(10,20)가 PN 어프리케이션 프로그램을 요청하지 않았더라도, 마스터 서버 노드(30) 또는 서버(32)는 이웃 프로그램 어플리케이션을 작동시킬 수 있고(단계 93), 그 결과를 클라이언트 노드(10,20)에 푸쉬할 수 있다.
PN 어플리케이션 프로그램을 실행할 때, 마스터 서버 노드(30) 또는 서버(32)는 사용자 증명서를 이용하여 데이터베이스내의 어플리케이션-관련 정보를 필터링한다(단계 100). 데이터베이스를 필터링한 결과는 클라이언트 노드(10,20)의 사용자에 의해 사용되도록 인가된 어플리케이션 프로그램을 판단한다. 인가된 어플리케이션 프로그램은 클라이언트 노드(10,20)의 이웃 프로그램내에 있다. 이용가능한 어플리케이션 정보의 상기 이웃 프로그램은 클라이언트 노드(10,20)에 푸쉬되고(단계 102) 이웃 프로그램 그래픽 윈도우내의 클라이언트 스크린(12,22)상에 디스플레이된다(단계 104).
또다른 실시예에서, 이웃 프로그램 윈도우는 서버 팜내에 있으나 클라이언트 노드(10,20)에 이용가능하지 않은 어플리케이션을 포함할 수 있다. Windows-기반 구현에서, 이용가능한(이용가능하지 않은) 어플리케이션 프로그램들은 아이콘들에 의해 나타내질 수 있다. 클라이언트 노드(10,20)의 사용자는 이웃 프로그램 윈도우에 디스플레이되는 어플리케이션 프로그램중 하나를 선택하여 개시할 수 있다.
파일-유형 연관성(File-Type Association: FTA)
전술한 바와 같이, 일 실시예에서, 이웃 프로그램 메커니즘은 사용자들로 하 여금 그들의 클라이언트 노드상에 반드시 설치된 것만은 아닌 실행가능 프로그램을 식별하고, 선택하고, 실행시킬 수 있도록 해준다. 또다른 실시예에서, 부가적인 FTA 기능은, 데이터 파일과 실행가능 프로그램이 서로 상이한 컴퓨틴 노드상에 호스팅되어 있더라도, 데이터 파일에 연관된 실행가능 프로그램의 실행을 자동적으로 개시할 수 있도록 해준다.
전형적으로, FTA 기능은 사용자로 하여금 실행가능 프로그램이 위치한 노드와 다른 컴퓨팅 노드상에 위치한 데이터 파일을 선택함으로써 실행가능 프로그램을 투명하게(transparently) 실행시킬 수 있도록 해준다. 일 실시예에서, 사용자들은 그들의 클라이언트 노드상에 위치한 데이터 파일을 선택함으로써 서버 노드상에 있는 실행가능 프로그램의 실행을 투명하게 호출할 수 있다. 또다른 실시예에서, 또다른 사용자는 서버 노드상에 위치한 데이터 파일을 선택함으로써 자신의 클라이언트 노드상의 어플리케이션 프로그램의 실행을 투명하게 호출할 수 있다. 또다른 실시예에서, 사용자는 웹서버상에 저장된 데이터 파일을 선택하고 서버 노드상의 이에 연관된 실행가능 프로그램의 실행을 투명하게 호출할 수 있다. 전형적으로, 실행은 선택된 데이터 파일의 콘텐트 처리를 허용하고, 그 결과는 클라이언트 노드의 사용자에게 제공되도록 한다.
전술한 바와 같이, 클라이언트 노드는 하나 이상의 서버 노드와 통신한다. 클라이언트 노드는, 파일을 나타내는 그래픽 표시자의 선택, 비트맵형 그래픽의 디스플레이 및 전화통신망의 초기화 및 동작을 허용하는 기능들을 포함하는 운영체제를 실행시킨다. 일 실시예에서, 이러한 기능들은운영체제에 통합되어 있다. 또다 른 실시예에서, 이들 기능은 클라이언트 노드상에 개별적으로 설치되고 유지되는 하나 이상의 제3자 벤더의 소프트웨어에 의해 제공된다.
서버 노드는, 전화통신망의 초기화 및 동작과, 실행가능 프로그램의 실행을 허용하는 기능들을 포함하는 운영체제를 실행시킨다. 일 실시예에서, 이러한 기능들은 운영체제에 통합되어 있다. 또다른 실시예에서, 이러한 기능들은 서버 노드상에 개별적으로 설치되어 유지되는 하나 이상의 제3자 벤더의 소프트웨어에 의해 제공된다.
현재 설명에서, 파일명칭을 사용자는 예들은 WINDOWS 계열 운영체제들을 활용하는 특이한 실시예를 필연적으로 반영함을 이해할 것이다. 데이터 파일 자체에 저장된 특수 파라미터들, 데이터 파일에 저장된 데이터, 데이터 파일에 연관된 파일 시스템 레코드, 또는 별개의 데이터 파일 또는 데이터베이스를 이용하는 다른 실시예들도 본 발명에 따르는 방법 및 장치를 구현할 수 있다. 예를 들어, MacOS 계열의 운영체제를 활용하는 실시예에서, 본 발명은 파일 및 어플리케이션 생성자 유형을 이용하고 각각의 저장 장치에 연관된 데스크톱 파일에 파일-유형 연관성 데이터를 저장한다. UNIX-변형 운영체제를 활용하는 실시예들은, 파일 확장자, 임베딩된 파라미터 또는 적절한 다른 메커니즘을 활용한다. 따라서, 청구항의 범주가 파일명칭 확장자에 의존하는 실시예들 또는 WINDOWS 운영체제를 활용하는 실시예들에 제한되는 것으로 이해되서는 안될 것이다.
클라이언트-기반 FTA
도 8a를 참조하면, 일 실시예에서, 본 발명은 클라이언트 노드상에 위치하는 데이터 파일을 나타내는 그래픽 표시자의 선택을 통해 서버 노드상의 분산 프로그램의 투명한 실행을 가능케 한다. 클라이언트 노드는, 복수개의 서버 노드중 하나로부터, 데이터 파일 유형과 복수개의 서버 노드중 하나에서 실행될 실행가능 프로그램 사이의 연관성을 규정하는 매핑을 수신한다(단계 106). 클라이언트 노드는 클라이언트 노드상에 저장된 데이터 파일의 그래픽 표시자를 제공하고(단계 114), 데이터 파일의 그래픽 표시자에 대한 선택을 수신한다(단계 118). 클라이언트 노드는 수신된 매핑을 이용하여 선택된 데이터 파일의 유형에 연관된 실행가능 프로그램을 식별하고(단계 122), 식별된 실행가능 프로그램을 실행시키라는 요청을 전송한다(단계 126). 또다른 실시예에서, 클라이언트 노드는 로컬 디스플레이 어플리케이션의 실행을 개시하여(단계 130) 실행가능 프로그램으로부터 어플리케이션 결과 데이터를 수신하고(단계 134), 최종 사용자에게 디스플레이한다(단계 138).
도 8a를 참조하면, 클라이언트 노드가 매핑을 수신할 때(단계 106), 매핑은 그 자체로, 몇가지 다른 매핑들과, 또는 소프트웨어 갱신과 같은 다른 메시지 및 데이터와 수신될 수 있다. 도 3은 본 발명의 일 실시예에 제공되는 예시적인 매핑을 도시한다.
파일 유형 실행가능 프로그램
".DOC", ".RTF" MSWORD.EXE
".PDF" ACROBAT.EXE
일 실시예에서, 매핑은 사용자 클라이언트 노드상에 저장된 특정 데이터 파 일과 사용하기 위한 특정 실행가능 프로그램간의 연관성을 밝힌다. 예를 들어, 매핑은 파일 "RECORDS.DOC"을 편집하기 위해 WORD의 사용을 지정할 수 있다. 또다른 실시예에서, 매핑은 사용자 클라이언트 노드상에 저장된 특정 유형의 데이터 파일과 특정의 실행가능 프로그램간의 연관성을 지정한다. 가령, 매핑은 학장자에서 ".RTF"로 끝나는 모든 파일들을 편집하기 위해 WORD의 사용을 지정할 것이다. 또다른 실시예에서, 매핑은 특정 데이터 파일 또는 특정 유형의 데이터 파일과 사용하기 위한 특정의 실행가능 파일 유형을 지정한다. 예를 들어, 매핑은 워드 프로세싱 정보를 포함하는 데이터 파일이 선택될 때, 상기 파일을 검사하거나 그 내부에 코딩되거나 상기 파일에 연관된 특수 파라미터를 검사함으로써 판단되는 "워드 프로세싱 어플리케이션"의 사용을 지정한다.
또다른 실시예에서, 매핑은 서버 노드상에 실행가능 프로그램을 개시하고 클라이언트 노드에 실행 결과를 디스플레이하는 클라이언트 노드 어플리케이션 측면에서 실행가능 프로그램과 데이터 파일의 관계를 지정한다. 예를 들어, 매핑은 ".DOC" 파일이 선택될 때 클라이언트 노드가 사이트릭스 소프트웨어사(플로리다주, 에프티.라우데일 소재)의 MATAFRAME(메타프레임)을 실행시킬 것을 지정할 수 있는데, 이는 WORD를 실행시키라는 요청을 복수개의 서버 노드들중 하나에 전송하고, 클라이언트 노드상에서 사용자에게 디스플레이해주기 위해 실행으로부터 출력된 데이터를 수신한다. 또다른 실시예에서, 연관된 실행가능 프로그램용 등록은, 하나 이상의 파라미터, 플래그, 또는 서버 노드상에서의 실행을 제어하는 인자들을 포함한다. 예를 들어, METAFRAME의 국부적 위치와 WORD의 원격 실행을 지정하는 입력 은 C:\PROGRA~1\MF.EXE MS WORD.EXE 형태를 취하는데, 이는 METAFRAMD 어플리케이션이 C:\PROGRA~1\MF.EXE에 국부적으로 저장되어 있으며, 서버 노드상에서 실행될 어플리케이션은 MS WORD.EXE 임을 나타낸다.
일 실시예에서, 매핑 내의 실행가능 프로그램은 판매자 명칭, 예를 들어, "MICROSOFT WORD"로서 지정되어 있다. 클라이언트 노드는, 이를 수신한 후에, FTA기능을 적용할 때 이후에 사용하기 위하여 판매자 명칭 "MICROSOFT WORD"에 연관된 적어도 하나의 파일 경로 및 파일 명칭을 식별한다. 또다른 실시예에서, 매핑내의 실행가능 프로그램은 클라이언트 노드 운영 체제에 의해 이용되는 명명 규약에 부합하는 파일 명칭으로서 지정되어 있다. 예를 들어, WINDOWS-계열 운영 체제를 채용하는 클라이언트 노드상에서, 연관된 실행가능 프로그램은 "MSWORD.EXE"로서 식별될 수 있다. 이러한 매핑을 수신한 후에, 클라이언트 노드는 상기 실행가능 파일에 대한 경로(예, "C:\PROGRA~1\MSOFFICE\MSWORD.EXE")를 국부적으로 확인하여 저장하거나, 해당 특정 실행가능 프로그램에 대해 FTA가 호출될 때마다 실행가능 파일의 위치를 동적으로 파악한다.
일 실시예에서, 수신된 매핑은 실행가능 프로그램과 데이터 파일 또는 데이터 파일 유형간의 연관성을 추적하는 시스템 데이터베이스를 포함하는 파일로 통합된다. 예를 들어, 파일은 WINDOWS 시스템상의 레지스트리 또는 MacOS 시스템상의 데스크톱 파일이 될 수 있다. 또다른 실시예에서, 매핑은 전술한 FTA 기능을 제공하기 위하여 하나 이상의 실행가능 프로그램들에 의해 액세스되는 파일에 저장된다. 예를 들어, 자바-기반 실행자들은 매핑을 수신하여 다른 자바-기반 실행자들 에 의해 사용되기 위하여 클라이언트 노드상의 텍스트 파일에 그것을 저장할 수 있다. 파일 시스템 기능이 존재하지 않는 또다른 실시예에서, 예를 들어, 임베딩된(emebedded) 장치에서, 매핑은 수신되어 지정된 어드레스의 랜덤-엑세스 메모리에 저장된다. 또다른 실시예에서, 매핑은, 가령, 복수개의 서버중 하나에 원격 저장되고 클라이언트 노드상의 실행가능 프로그램에 의해 필요시마다 검색된다. 매핑 자체는, 배열, 연결 리스트, 플랫(flat) 데이터베이스 또는 관계형 데이터베이스를 포함하는 임의의 데이터 구조에 저장될 수 있으며, 이에 한정되는 것은 아니다.
또다른 실시예에서, 이들 매핑은 클라이언트-기반, 즉, "풀(pull)" 기법을 이용하여 주기적으로 갱신된다. 또다른 실시예에서, 이들 매핑은 서버측, 즉, "푸쉬(push)" 기법을 이용하여 주기적으로 갱신된다. 또다른 실시예에서, 이들 매핑은, 필요시에, 예를 들어, 시스템 관리자가 신규 어플리케이션 프로그램을 설치하고 서버노드 상에 또는 서버 팜 전역에 걸쳐서 그에 대한 지원을 제공할 때에, 푸쉬 또는 풀 기법중 하나를 이용하여 갱신된다.
일 실시예에서, 클라이언트 노드는 실행가능 프로그램(단계 110)의 실행 위치를 제어하는 규칙을 수신한다. 일 실시예에서, 특정 실행가능 프로그램이, 클라이언트 노드, 서버 노드 또는 특정 서버 노드상에서 실행할지 여부를 판단하기 위한 규칙은 1개 이상의 변수에 좌우될 수 있다. 이러한 변수는, 클라이언트 시스템상의 실행 로드, 복수개 서버 시스템중 하나의 실행 로드, 공동체적인 복수개의 서버 시스템의 실행 로드, 클라이언트 시스템과 복수개의 서버 시스템간의 연결 속도, 또는 이들 및 기타 요소들의 조합을 포함하며, 이에 제한되는 것은 아니다. 가령, ".DOC" 유형 문서를 선택하면 서버 팜내의 서버 노드상에서 실행되는 WORD로부터의 출력을 수신하고 디스플레이하게 될 국부 딘(thin)-클라이언트 어플리케이션의 실행이 개시된다고 매핑이 요구한다면, 클라이언트 시스템상의 실행 로드가 가용 CPU 시간의 50%이상을 소비하였고 서버 팜으로의 연결이 이론적 용량으로 1 Mbit/sec을 초과하거나 이용가능한 용량으로 20 Kbit/sec을 초과한 경우에, WORD는 서버 팜상에서 원격으로 실행되어야 하고 그의 어플리케이션 결과 데이터는 상기 딘-클라이언트 어플리케이션에 제공되어 최종 사용자에게 디스플레이되도록 조건부 규칙이 지정할 수 있다. 일 실시예에서, 규칙 검토 결과가 연관된 프로그램이 클라이언트 노드상에서 실행될 것을 나타낸다면, 클라이언트 노드는 실행가능 프로그램의 출력을 사용자에게 직접 제공하고, 딘-클라이언트 어프리케이션은 무시한다.
실제 동작에서, 사용자가 ".DOC" 문서를 선택하였다면, 연관 어플리케이션, 즉, WORD가 밝혀질 것이고, 이에 수반되는 규칙들이 로드되어 검토되고, 규칙의 검토에 따라 연관 어플리케이션은 클라이언트 노드상에서 국부적으로 실행되거나 서버 노드상에서 원격으로 실행될 것이다. 검토 결과가 어플리케이션이 서버 노드상에서 실행되어야 함을 나타낸다면, 상기 프로그램을 실행하라는 요청이 서버 노드에 전송된다(단계 126).
매핑, 조건부 규칙 또는 이들 둘의 조합의 수신은 몇가지 메커니즘을 통해 발생할 수 있다. 매핑 및 조건부 규칙은 활성중인 전화통신망을 통해 배포되거나, 하나 이상의 휴대가능 저장매체 형태를 이용하여 오프라인으로 배포될 수 있다. 이들은 클라이언트 노드와 복수의 서버 노드중 적어도 하나가 작동중인 동안에 실시간으로 배포될 수 있거나, 예정된(scheduled) 시간 윈도우 내에서 예정된 시간에 또는 클라이언트 노드 및 복수의 서버 노드중 적어도 하나 또는 모두가 사용자에 의해 작동중이지 않은 경우에는 오프라인으로 배포될 수 있다.
매핑 및 (일부 실시예의 경우에) 조건부 규칙이 설치되면, 사용자는 그의 그래픽 사용자 인터페이스를 이용하여 클라이언트 노드와 상호작동한다. 국부의 클라이언트 노드에 표시되는 데이터 파일은 사용자에게 그래픽으로 제공된다(단계 114). 전형적인 실시예에서, 클라이언트 노드는 클라이언트 노드상에 저장된 데이터 파일을 나타내는 하나 이상의 아이콘을 디스플레이한다. 또다른 실시예에서, 클라이언트 노드는 클라이언트 노드에 저장된 데이터 파일에 연관된 파일 명칭 리스트를 디스플레이한다. 또다른 실시예에서, 클라이언트 노드상에 저장된 파일을 나타내는 표시자는 하나 이상의 서버 노드상에 저장된 파일을 나타내는 표시자와 혼합된다. 이 실시예에서, 클라이언트-기반 FTA는 클라이언트 노드에 저장된 파일을 나타내는 표시자가 선택될 때 작동한다. 또다른 실시예에서, FTA의 여러 가지 형태(이하 참조)가 작동되고, FTA의 적절한 유형은 선택된 표시자와 연관된 위치에 기하여 활성된다.
사용자는 데이터 파일의 그래픽 표시자와 상호작용함으로써 특정 데이터 파일을 선택한다(단계 118). 데이터 파일을 나타내는 아이콘 또는 텍스트는 통상적으로, 키보드, 마우스, 광펜, 압력-민감형 타블렛, 촉각형 인터페이스 또는 기타 입력 장치를 이용하여 선택된다.
데이터 파일이 선택되면, 클라이언트 노드상의 기능은 저장된 매핑을 액세스하고, 일부 실시예에서는, 저장된 조건부 규칙을 액세스하고, 선택된 데이터 파일 또는 선택된 데이터 파일의 유형에 연관된 매핑 및 규칙을 확인한다(단계 122). 데이터 파일이 복수의 서버중 하나에서 실행될 어플리케이션과 연관되어 있다고 매핑이 나타내고, 임의의 연관된 조건부 규칙의 검토가 그렇기 나타내면, 클라이언트 노드는 상기 연관 어플리케이션 프로그램을 호스팅하는 복수의 서버중 하나에 실행 요청을 전송한다(단계 126).
상기 연관 어플리케이션 프로그램은 통상적으로 하나 이상의 형태의 출력데이터를 생성할 것이며, 출력 데이터에는 그래픽 출력 데이터 또는 사운드가 포함될 수 있으며 이에 한정되는 것은 아니다. 일 실시예에서, 클라이언트 노드는 어플리케이션 프로그램의 실행을 개시하고(단계 130), 서버 노드와의 연결을 통해, 어프리케이션 출력 데이터를 수신하고(단계 134), 그것을 최종 사용자에게 디스플레이해준다(단계 138). 일 실시예에서, 이러한 어플리케이션 프로그램은 METAFRAME이다.
일 실시예에서, 또한, 클라이언트 노드는 상기 선택된 데이터 파일에 연관된 데이터를 처리를 위해 서버 노드에 제공한다. 일 실시예에서, 클라이언트 노드는 서버 노드와의 네트워크 연결을 이용하여 데이터를 제공한다. 또다른 실시예에서, 클라이언트 노드는 서버 노드에 데이터 파일의 콘텐트에 대한 포인터를 제공한다. 이번에는, 서버 노드가 포인터를 활용하여 데이터에 대한 순차적이거나 랜덤한 액세스 요청을 생성할 것이고, 이를 클라이언트 노드에 제공한다. 클라이언트 노드 는 이러한 요청들을 처리하고 적절한 데이터를 서버 노드에 제공한다.
클라이언트-서버 구성은 상이한 컴퓨팅 구조에 기반한 클라이언트 노드 및 서버 노드의 이용을 허용한다. 예를 들어, 클라이언트 노드는 국부 디스플레이 어플리케이션을 실행시키는 POWERPC 기반 매킨토시(MACINTOSH)일 수 있으며, 서버 노드는 ITANIUM 기반 WINDOWS NT 서버일 수 있다. 클라이언트 노드와 서버 노드가, 어플리케이션 데이터의 디스플레이, 전송, 및 교환에 관한 포맷이 일치하는 기능을 갖추고 있다면, 노드간 이진-레벨의 상호작용성(interoperability)은 불필요하다.
도 8b는 클라이언트-기반 파일-유형 연관 프로세스에서의 서버 노드의 전형적인 역할을 설명한다. 클라이언트 시스템상에 저장된 데이터 파일의 유형과 복수의 서버 노드중 하나에서 실행하기 위한 실행가능 프로그램 사이의 연관성을 지정하는 매핑이 제공된다(단계 154). 실행가능 프로그램을 실행시키라는 요청이 수신되고(단계 162), 실행가능 프로그램이 복수의 서버 노드중 하나상에서 실행된다(단계 166).
일 실시예에서, 매핑이 시스템 관리자 또는 관리 권한을 갖는 또다른 사용자로부터 서버 노드에 수신된다(단계 150). 관리자는, 전술한 바와 같이, 특정의 데이터 파일 또는 데이터 파일의 유형과 특정 실행가능 프로그램 또는 실행가능 프로그램의 유형사이의 연관도를 규정하는 시스템 데이터베이스를 편집함으로써 새로운 매핑을 형성한다. 또다른 실시예에서, 관리자는 데이터 파일의 유형, 서버 시스템과 연결을 개시하기 위한 프로그램과, 상기 데이터 파일을 처리하기 위한 실행가능 프로그램간의 연관성 및 상기 실행가능 프로그램에 의해 사용되는 파라미터들 을 지정한다. 일 실시예에서, 관리자는 그래픽 시스템 관리자 툴을 이용함으로써 또는 하나 이상의 데이터 파일을 직접 편집함으로써 매핑을 지정한다.
일 실시예에서, 서버 노드는 파일내의 이러한 시스템 데이터베이스를 하나 이상의 클라이언트 노드에 주기적으로 제공하거나 푸쉬 또는 풀 기법을 이용하여 필요시에 제공한다. 또다른 실시예에서, 이러한 매핑은 클라이언트 시스템에 독립형 데이터 엔트리로서 전송되고 클라이언트는 이를 수신하여 그들 자신의 국부 시스템 데이터베이스에 통합시킨다. 또다른 예에서, 지정된 매핑은 다른 서버 노드상에 대하여 지정된 매핑에 대하여 복제되거나 일치될 수도 있다. 이러한 마지막 기능은 서버 팜 구성의 서버 노드들의 구성 및 유지를 돕는다.
서버 노드는 매핑을 전술한 바와 같이 이것을 활용하는 하나 이상의 클라이언트 노드에 제공한다(단계 154). 일 실시예에서, 서버는 전술한 바와 같이 저장 또는 검토를 위해 하나 이상의 클라이언트 노드에 조건부 실행 규칙을 또한 제공한다(단계 158). 조건부 규칙은 파일-유형 연관성의 지정 및 배포를 위해 사용되는 기술들을 이용하여 지정되고 배포된다.
작동에 있어서, 서버 노드는 하나 이상의 클라이언트 노드로부터 실행가능 프로그램을 실행시키라는 요청을 수신한다(단계 162). 일 실시예에서, 서버 노드상에서의 하나 이상의 실행가능 프로그램의 가용성은 표시자의 확인 또는 인증에 의해 부북분적으로 판단된다. 서버 노드상의 각 파일은, 사용자, 사용자 그룹 또는 특권 수준을 정의하는 표시자와 직간접적으로 연관되어 있다. 클라이언트 노드는 사용자의 신원 또는 사용자의 특권 레벨을 나타내는 하나 이상의 표시자를 마스 터 서버 노드 또는 하나 이상의 개별 서버 노드에 제공한다. 서버 노드는 실행될 수 있는 각각의 실행가능 프로그램에 연관된 표시자에 대하여 이들 표시자를 검증한다. 상기 제공된 표시자가 연관된 표시자와 일치하면, 실행가능 프로그램은 클라이언트 노드에 대하여 실행가능하게 된다. 클라이언트 노드에 의해 제공되는 것들을 넘어서는 인증 표시자로써 실행가능 프로그램을 실행시키려는 의도는 클라이언트 노드상의 하나 이상의 오류 메시지 디스플레이, 서버 노드상의 경고 메시지 디스플레이 및 클라이언트 노드상에서 실행가능 프로그램을 개시하려는 요청을 발생시킬 수 있다.
서버 노드는 식별된 프로그램을 실행시킴으로써 이들 요청에 대한 서비스를 제공한다(단계 166). 프로그램 실행 요청에 대해 서비스할 때, 서버 스스로가 그 요청을 처리하거나 또다른 서버에 실행 요청을 위임하거나 재할당할 수 있다. 이러한 위임은 클라이언트 풀에 서비스를 제공하기 위해 필요한 서버의 라이센스 개수를 제한함으로써 라이센스 관리 및 재송출(reissue)을 도모한다. 상기 요청을 수신한 서버는 컴퓨팅 클러스터에 상기 실행 요청을 또한 할당함으로써 서버간의 로드 및 자원 관리를 가능케하여 클라이언트의 요구를 더 잘 관리할 수 있도록 해준다.
일 실시예에서, 서버 노드는 클라이언트 노드상에서 식별된 특정 데이터 파일에 연관된 데이터를 또한 수신한다(단계 170). 전형적으로, 이러한 데이터는 실행가능 프로그램이 전술한 바와 같이 서버 노드 또는 클러스터상에서 시행될 때 실행가능 프로그램에 의해 처리된다. 또다른 실시예에서, 서버는 클라이언트 노드상 의 데이터 파일에 대한 포인터 또는 다른 레퍼런스들을 수신하고, 서버는 이를 사용하여 적절한 클라이언트 노드로의 전송을 위한 데이터에 대한 요청, 가령, 순차적 또는 랜덤 액세스 요청을 생성한다. 일 실시예에서, 제1 서버 노드가 제2 서버 노드에 프로그램 실행 요청을 위임하면, 제1 서버 노드는, 그가 데이터 또는 데이터 파일 레퍼런스를 수신한 경우에, 유사하게 제2 서버 노드 또는 또다른 서버 노드에 적절하게 상기 데이터 또는 데이터 파일 레퍼런스를 위임하거나, 재라우팅하거나 재전송할 수 있다.
전술한 바와 같이, 전형적으로 서버 노드는 실행가능 프로그램의 실행으로부터의 결과인 어플리케이션 결과 데이터를 최종 사용자에게 디스플레이하도록 클라이언트 노드에 제공한다(단계 174). 어플리케이션 결과 데이터는 클라이언트 노드에 의해 직접적으로 또는 클라이언트 노드상에 실행하는 어플리케이션 프로그램(예, METAFRAME과 같은 딘-클라이언트 디스플레이 어플리케이션)에 의해 지원되는 하나 이상의 포맷으로 제공될 수 있다. 어플리케이션 결과 데이터는, 압축되거나 압축되지 않은 그래픽 데이터를 나타내는 비트 스트림이거나, 디스플레용 벡터 그래픽을 나타내는 마크업 언어이거나, 텍스트, 또는 실행될 때 사용자를 위해 클라이언트 노드상에 어플리케이션 결과
데이터를 디스플레이하는 일련의 시스템-종속 또는 API 호출일 수 있다.
서버-기반 FTA
도 9a를 참조하면, 또다른 실시예에서, 본 발명은 서버 노드상에 위치하는 데이터 파일을 나타내는 그래픽 표시자의 선택을 통해 클라이언트 노드상에서 분산 프로그램의 투명한 실행을 가능케 한다. 클라이언트 도느는 복수의 서버 노드들중 하나에 저장된 데이터 파일의 그래픽 표시자를 표시한다(단계 200). 클라이언트 노드는 데이터 파일의 그래픽 표시자 선택을 수신하고(단계 204), 상기 선택을 복수의 서버 노드중 하나에 전송한다(단계 208). 클라이언트 노드는 복수개의 서버 노드들중 하나로부터 상기 선택된 데이터 파일에 연관된 실행가능 프로그램을 실행시키라는 요청을 수신하고(단계 212), 상기 연관된 실행가능 프로그램을 실행시킨다(단계 216).
도 9a를 참조하면, 클라이언트 노드는 사용자에게 적어도 하나의 서버 노드상에 저장된 적어도 하나의 데이터 파일에 대한 그래픽 표시자를 제공한다(단계 200). 데이터 파일의 그래픽 표시자는 아이??과 같은 그래픽 표시자의 디스플레이 및 파일 명칭의 디스플레이를 포함하며, 이에 제한되는 것은 아니다. 일 실시예에서, 하나 이사의 서버 노드들에 저장된 파일을 나타내는 표시자는 클라이언트 노드상에 저장된 파일을 나타내는 표시자와 혼합된다. 이 실시예에서, 서버-기반 FTA는 서버 노드상에 저장된 파일을 나타내는 표시자가 선택될 때 작동된다. 또다른 실시예에서, 복수개 형태의 FTA가 작동되고, 선택된 그래픽 표시자에 연관된 파일 위치에 기반하여 적절한 형태의 FTA가 활성된다.
일 실시예에서, 클라이언트 노드상의 기능은 연결된 서버 노드들상에서 이용가능한 데이터 파일들에 관한 정보를 모으는 마스터 서버 노드에 질의한다. 마스터 서버 노드는 마스터 서버 및 연결된 서버들에서 이용가능한 파일의 집합 리스트 를 제공하고 이를 사용자에게 제공하기에 앞서서 푸쉬 또는 풀 메커니즘을 이용하여 클라이언트 노드에 제공한다. 또다른 실시예에서, 클라이언트 노드상의 기능은 사용자에게 이용가능한 파일을 제공해주기에 앞서서 각각의 개별 서버 노드에 서버-측 FTA에 대한 데이터 파일의 가용성에 관하여 질의한다. 또다른 실시예에서, 클라이언트 노드상의 기능(예, 네트워크 파일 시스템(Network File System:NFS) 또는 앤드류 파일 시스템(Andrew File System: AFS))은 하나 이상의 서버 노드상의 파일들이 클라이언트 노드의 파일 시스템의 일부로서 보이게 한다. 이들 파일들은 이후에 서버-기반 FTA로 이용되도록 사용자에게 제공된다.
일 실시예에서, 서버 노드상의 하나 이상의 파일의 가용성은 표시자의 확인 또는 인증에 의해 부분적으로 판단된다. 서버 노드상의 각 파일은, 사용자, 사용자 그룹 또는 특권 레벨을 정의하는 표시자와 직접 또는 간접적으로 연관된다. 클라이언트 노드는 사용자의 신원 또는 사용자의 특권 레벨을 표시하는 하나 이상의 표시자를 마스터 서버 노드 또는 하나 이상의 개별 서버 노드들에 제공한다. 서버 노드는 서버-기반 FTA용으로 이용가능한 가 파일의 표시자에 대하여 이들 표시자들을 검증한다. 제공된 표시자가 연관된 표시자와 일치하면, 파일은 클라이언트 노드에 이용가능하게 되고 잠재적 서버-기반 FTA 활동을 위해 사용자에게 그래픽적으로 제공된다.
전술한 바와 같이, 사용자는, 전형적으로 그래픽 사용자 인터페이스 및 하나 이상의 입력 장치를 이용하여, 상기 디스플레이된 그래픽 표시자와 상호작용함으로써 데이터 파일을 선택할 수 있다(단계 204). 사용자가 데이터 파일을 선택하면, 선택은 복수개의 서버 시스템들중 하나에 전송된다(단계 208). 일 실시예에서, 상기 선택은 마스터 서버 노드에 전송된다. 마스터 서버 노드는 데이터 파일을 호스팅하고 있는 서버 노드를 확인하고 향후 처리를 위해 적절한 서버 노드에 상기 선택을 제공한다. 또다른 실시예에서, 상기 선택은, 하나 이상의 서버 노드들, 즉, 상기 선택된 데이터 파일에 구체적으로 연관된 서버 노드들 또는 서버-기반 FTA를 위해 일반적으로 이용가능한 것으로 확인된 서버 노드들에 전송된다. 후자 동작은 파일 미러링(file mirroring) 및 기타 진보된 형태의 데이터 리던던시(redundancy)를 통해 서버간에 로드가 균형잡힌 파일 처리를 도모한다.
데이터 파일의 선택을 제공한 후에, 상기 선택된 데이터 파일에 연관된 실행가능 프로그램을 실행시키라는 요청이 수신된다(단계 212). 전술한 바와 같이, 요청은, 마스터 서버 노드, 상기 선택된 데이터 파일을 호스팅하고 있는 서버 노드, 또는 상기 선택된 데이터 파일을 호스팅하고 있지 않은 서버 노드로부터 들어올 수 있다. 이에 답하여, 클라이언트 노드는 상기 데이터 파일에 연관된 실행가능 프로그램을 실행시킨다(단계 216).
일 실시예에서, 클라이언트 노드는 프로그램을 실행시키는 것에 의한 처리를 위해 상기 선택된 데이터 파일에 연관된 데이터를 수신한다(단계 220). 또다른 실시예에서, 클라이언트 노드는 상기 선택된 데이터 파일에 대한 포인터를 수신한다. 클라이언트 노드는 상기 제공된 포인터를 이용하여 순차적이거나 랜덤한 데이터에 대한 하나 이상의 요청을 생성하여, 전술한 바와 같이, 하나 이상의 서버 노드, 즉, 마스터 서버 노드, 상기 선택된 데이터 파일을 호스팅하고 있는 서버 노드 또 는 상기 선택된 데이터 파일을 호스팅하고 있지 않은 서버 노드에 의해 서비스받기 위하여 이를 제공한다. 일 실시예에서, 이러한 요청은, 하이퍼텍스트 전송 프로토콜(HTTP), 보안 HTTP(HTTPS)(즉,SSL 이용), 메시징 어플리케이션 프로그래밍 인터페이스(messaging application programming interface: MAPI) 프로토콜, 실시간 스트리밍 프로토콜(real-time streaming protocol:RTSP), 사용자 데이터그램 프로토콜 방식용으로 사용되는 실시간 스트리밍 프로토콜(real-time streaming protocol used for user datagram protocol scheme: RTSPU), RealNetworks, Inc.(워싱톤주 시에틀 소재)에 의해 개발된 프로그래시브 네트워크 멀티미디어(Progressive Networks Multimedia: PNM) 프로토콜, 또는 제조업체 메시지 사양(manufacturing message speicification:MMS) 프로토콜과 같은 프로토콜을 이용하여 전송된다.
선택된 데이터 파일에 연관된 데이터를 수신하면, 통상적으로 클라이언트 노드는 실행가능 프로그램을 이용하여 수신된 데이터를 처리한다(단계 224). 통상적으로, 클라이언트 노드는 최종 사용자에게 처리 결과를 디스플레이한다. 일 실시예에서, 사용자의 다음 제어 입력이 다음의 처리 및 디스플레이를 이끌고, 그 다음에는 사용자의 다음 제어 입력이 다시 이루어지는 등, 처리 및 디스플레이 사이클은 되풀이된다.
도 9b는 서버측 FTA에서 서버 노드의 전형적인 역할을 도시한다. 데이터 파일의 유형과 클라이언트 시스템상에서의 실행을 위한 실행가능 프로그램간의 연관성을 지정하는 매핑이 수신된다(단계 244). 저장된 데이터 파일의 선택이 서버 노드에 의해 수신되고(단계 248), 상기 선택된 데이터 파일에 연관된 실행가능 프로 그램이 수신된 매핑을 이용하여 식별된다(단계 252). 상기 식별된 실행가능 프로그램을 실행시키라는 요청이 클라이언트 스템에 전송된다(단계 256).
서버 노드에 의해 수신된(단계 240) 매핑은 데이터 파일과 실행가능 프로그램간의 연관성을 지정하고, 이러한 점에는 이는 클라이언트-기반 FTA에서 사용되는 매핑과 유사하다. 그러나, 상기 매핑은 클라이언트 노드상에서의 실행을 위한 실행가능 프로그램을 지정한다는 점에서 클라이언트-기반 FTA에서 사용되는 매핑과는 다르다. 어플리케이션이 클라이언트 노드 상에서 실행하는 실시예의 경우에, 연관 프로그램은 통상적으로 제2 실행가능 프로그램의 어플리케이션을 호출하는 딘-클라이언트 어플리케이션이 아니라 독립형 어플리케이션이다.
그러나, 일부 실시예에서, 클라이언트 노드는 서버 노드로부터 어플리케이션 실행 요청을 수신하고, 식별된 실행가능 프로그램을 실행시키는 (따라서 어플리케이션을 실행시키는) 대신에, 실행요청을 또다른 서버 노드에 다시 향하도록 한다. 따라서, 클라이언트 노드가 실행요청을 다시 향하도록 한 서버 노드가 식별된 실행가능 프로그램을 실행시키는 노드이다. 실시예에서, 클라이언트-기반 FTA는 서버측 매핑에 의해 식별된 노드가 아니라 클라이언트측 매핑에 의해 식별된 서버 노드가 어플리케이션을 실행시키기 때문에 서버-기반 FTA를 "무시한다(override)".
일 실시예에서, 매핑이 독립형 엔트리로서 수신된다. 또다른 실시예에서, 매핑이 그룹으로 집합화되어 제공되거나, 소프트웨어 갱신과 같은 다른 데이터와 집합화되어 전송된다. 매핑은 활성 전화통신망을 통해 제공되거나 하나 이상의 착탈식 저장 매체상에 이진 또는 텍스트 포맷으로 저장된다.
전술한 바와 같이, 매핑은 다양한 레벨의 세분성으로 데이터 파일과 실행가능 프로그램간의 연결성을 지정한다. 특정 매핑이 특정 데이터 파일 또는 특정 유형의 데이터 파일과 특정 실행가능 프로그램 또는 특정 유형의 실행가능 프로그램간을 연결한다. 실행가능 프로그램은 판매자 명칭 또는 파일 명칭에 의해 식별된다.
일 실시예에서, 수신된 매핑은 실행가능 프로그램들과 데이터 파일 또는 데이터 파일 유형간의 연관성을 추적하는 시스템 데이터베이스를 포함하는 파일에 포함된다. 또다른 실시예에서, 이들 매핑은 푸시 기법, 풀 기법 또는 이들 둘의 조합을 이용하여 주기적으로 또는 필요시에 갱신된다.
또다른 실시예에서, 서버 시스템은 식별된 연관 실행가능 프로그램이 클라이언트 시스템 또는 복수의 서버 시스템중 하나에서 실행될 것인지를 판단하기 위한 하나 이상의 규칙을 수신한다. 이러한 규칙들은, 클라이언트 시스템상의 실행 로드, 복수의 서버 시스템들중 하나에서의 실행 로드, 집합적인 복수의 서버 시스템들상의 실행 로드, 클라이언트 시스템과 복수의 서버 시스템들간의 연결 속도, 또는 이들 및 기타 요소들의 조합을 포함하는(그러나 이에 제한되는 것은 아닌) 하나 이상의 변수들의 함수이다.
동작에 있어서, 하나 이상의 데이터 파일들이 하나 이상의 서버 노드상에 저장된다(단계 244). 데이터 파일들은 활성 전화통신망을 통해 또는 하나 이상의 휴대용 저장 매체를 이용하여 오프라인으로 서버 노드에 제공된다. 데이터 파일들은 예정된 시간 윈도우내에서 예정된 시간에 제공되거나, 당해 클라이언트 노드가 유 휴상태이거나 선정된 수준 이하의 프로세서 실행 로드를 가질 때 제공된다.
서버 노드는 저장된 데이터 파일을 나타내는 그래픽 표시자에 대한 선택을 수신한다(단계 248). 선택이 수신되면, 서버는 수신된 매핑에서 식별되는 연관 실행가능 프로그램 또는 실행가능 프로그램의 유형을 식별한다(단계 252). 식별된 실행가능 프로그램을 실행시키라는 요청이 실행을 위한 클라이언트 노드에 전송된다(단계 356).
일 실시예에서, 실행가능 프로그램이 클라이언트 노드상에서 실행될 것인지, 복수의 서버 노드들중 하나에서 실행될 것인지, 분산 처리 환경에서와 같이 여러개의 서버들에서 실행될 것인지를 판단하기 위해, 연관 규칙들이 로드되어 평가된다. 규칙의 평가가 실행은 클라이언트 노드상에서 발생할 것임을 나타낸다면, 연관 실행가능 프로그램을 실행시키라는 요청이 클라이언트 노드에 전송된다(단계 256). 일 실시예에서, 규칙 평가가 상기 연관 실행가능 프로그램이 클라이언트 노드상에서 실행되어야 한다고 나타내면, 클라이언트 노드는 사용자에게 직접 실행가능 프로그램의 결과를 제공하고, 클라이언트 노드상에서 작동중인 임의의 딘-클라이언트 어플리케이션은 무시한다.
일 실시예에서, 서버 노드는 선택된 데이터 파일에 연관된 데이터를 처리를 위해 제공한다(단계 260). 전형적으로, 이러한 정보는 클라이언트 노드상에서 작동되는 실행가능 프로그램에 의해 처리되고 그 결과는 사용자에게 제공되며, 또다른 입력은 또다른 처리 및 디스플레이를 지시한다. 또다른 실시예에서, 서버 노드는 선택된 데이터 파일에 대한 포인터 또는 다른 레퍼런스를 제공한다. 클라이언 트 노드는, 제공된 레퍼런스를 이용하여, 예를 들어, 랜덤 또는 순차적인 데이터 요청을 생성한다. 요청은 서버 노드로 전송되고, 서버 노드는 이 요청에 응답하여 데이터를 제공함으로써 이에 서비스한다.
또다른 실시예에서, 서버 노드에 의해 제공되는 서비스, 예를 들어, 데이터 요청에 대하여 서비스하거나 선택된 파일에 연관된 데이터를 제공하는 것이, 제휴 동작하는 복수의 서버 노드(예, 서버 팜)에 의해 제공된다. 일 실시예에서, 마스터 서버 노드는 처리 요청 또는 데이터를 수신하고 직접 이들에 대하여 서비스한다. 또다른 실시예에서, 마스터 서버 노드는 클라이언트 요청을 다른 서버 노드들에게 위임한다. 이러한 기법은 서버 노드들간의 균형잡힌 처리를 도모한다. 또다른 실시예에서, 요청은 세분되고, 처리 또는 데이터 액세스를 병렬 처리하는 여러개의 서버 노드들에 분산된다.
웹-기반 FTA
도 10a를 참조하면, 일 실시예에서, 본 발명은 웹서버상에 위치한 데이터 파일들을 나타내도록 클라이언트 노드상에 제공되는 그래픽 표시자에 대한 선택을 통해 서버 노드상에서의 투명한 프로그램 실행을 가능케 한다. 클라이언트 노드는 웹 서버상에 저장된 데이터 파일의 그래픽 표시자를 제공한다(단계 280). 클라이언트 노드는 데이터 파일의 그래픽 표시자에 대한 선택을 수신하고(단계 284), 이를 웹서버에 제공한다(단계 288). 클라이언트 노드는 제1 실행가능 프로그램을 실행시키라는 요청을 수신하는데, 상기 요청은 클라이언트 시스템중 하나와 복수의 서버 시스템중 하나상에서의 실행을 위해 데이터 파일에 연관된 제2 실행가능 프로 그램에 관한 정보를 포함한다(단계 292). 클라이언트 노드는 제1 실행가능 프로그램을 실행시키고(단계 296), 제2 실행가능 프로그램을 실행시키라는 요청을 제공한다(단계 300). 클라이언트 노드는 제2 실행가능 프로그램의 실행으로부터의 어플리케이션 결과 데이터를 수신하고(단계 304) 이를 최종 사용자에게 디스플레이한다(단계 308).
계속해서 도 10a를 참조하면, 클라이언트 노드는 사용자에게 하나 이상의 웹 서버에 저장된 하나 이상의 데이터 파일들에 대한 그래픽 표시자를 제공한다(단계 280). 데이터 파일에 대한 그래픽 표시자는 아이콘과 같은 그래픽 표시자의 디스플레이 또는 SGML 문서의 하이퍼링크와 같은 파일 명칭의 디스플레이를 포함한다(이에 제한되지는 않는다). 일 실시예에서, 웹 서버상에 저장된 파일을 나타내는 표시자는 클라이언트 노드상에 저장된 파일 또는 하나 이상의 서버 노드상에 저장된 파일을 나타내는 표시자와 혼합될 수 있다. 이러한 실시예에서, 웹-기반 FTA는 웹서버상에 저장된 파일을 나타내는 아이콘이 선택될 때 작동된다. 또다른 실시예에서, 여러 형태의 FTA가 작동되고, 선택된 그래픽 표시자에 연관된 파일의 위치에 기반하여 적절한 형태의 FTA가 활성된다.
클라이언트 노드는, 키보드, 마우스, 광펜, 압력-민감형 타블렛, 촉각형 인터페이스, 또는 기타 입력 장치를 이용하는 특정 데이터 파일에 대한 사용자의 선택을 수신한다(단계 284). 클라이언트 노드는 전형적으로 HTTP와 같은 전화통신망을 이용하여 상기 선택을 웹서버에 제공한다(단계 288).
선택된 데이터 파일의 제공에 응답하여, 클라이언트 노드는 실행 요청을 수 신한다(단계 292). 요청은 상기 데이터 파일에 연관된 제1 실행가능 프로그램에 대한 레퍼런스 및 제2 실행가능 프로그램에 대한 레퍼런스를 포함한다(이에 제한되는 것은 아니다). 일 실시예에서, 실행가능 프로그램은 클라이언트 시스템에 의해, 파일 명칭, 경로 명칭 또는 소정의 실행가능 프로그램으로의 레퍼런스중 적어도 하나로 해석되는 파일 명칭 또는 판매자 명칭에 의해 식별된다. 이 요청은 전형적으로, URL과 같이, 웹 서버상에서 선택된 데이터 파일을 식별하는 파라미터를 포함한다.
일 실시예에서, 예시적인 요청은 "MetaFrame MOWORD.EXE http://12.34.127.128/doc/VendorList.RTF"이다. 첫 번째 파라미터인 "MetaFrame"은 클라이언트 노드상에서의 실행을 위한 제1 실행가능 프로그램을 나타내는 것으로서, 클라이언트 노드는 "C:\PROGR~1\CITRIX\MF.EXE"에 저장된 실행가능 프로그램으로서 식별한다. 제2 파라미터는 "MSWORD.EXE"는 서버 노드상에서의 분석 및 실행을 위한 제2 실행가능 프로그램을 지칭한다. 제3 파라미터는 "http://12.34.127.128/doc/VendorList.RTF"으로서, 이는 사용자가 선택한 웹서버상의 파일을 식별한다. 동작에 있어서, 클라이언트 노드는 MetaGFrame을 실행시키고 WORD를 실행시키라는 요청을 서버 노드에 포워딩한다.
다른 실시예에서, 서버 노드는 보안 토큰과 같은 제어 정보를 포함하는 요청을 클라이언트 노드에 전송한다. 예를 들어, 제1 실행가능 프로그램은 서버 노드상에서 제2 실행가능 프로그램을 실행시키라는 요청내에 제어 정보를 포함할 수 있다. 따라서, 제1 실행가능 프로그램(예, WORD)을 실행시키라는 요청을 수신한 후 에, 제어 정보는 서버 노드 또는 웹서버상에서의 제3 프로그램을 호출할 수 있다. 이러한 제3 프로그램은 어플리케이션의 전달 방식을 수정할 수 있다(예를 들어, 사용자에게, 전달 이전에, 패스워드와 같은 적절한 인증 증명서를 제공하도록 요구하고, 서버 노드에게 어플리케이션의 전달 이전에 또다른 노드로부터의 키를 기다리라고 요구한다). 또다른 실시예에서, 제어 정보는 서버 노드가 상기 서버 노드에 의해 이전에는 액세스가 가능하지 않았던 제2 실행가능 프로그램을 액세스할 수 있도록 해주는 표시자를 서버 노드에 제공할 수 있다.
일 실시예에서, 웹 서버상에서 선택된 파일은 클라이언트 노드에 의해 수신되고, 클라이언트 노드는 편집을 위해 상기 파일을 캐싱한다. 이 실시예에서, 클라이언트 노드는 파일에 연관된 데이터를 실행가능 프로그램에 의한 처리를 위해 서버 노드에 제공한다. 또다른 실시예에서, 클라이언트 노드는 서버 노드에 상기 캐싱된 파일에 대한 레퍼런스를 제공한다. 서버 노드는 상기 제공된 레퍼런스를 이용하여 크랄이언트 노드가 서비스하는 데이터에 대한 요청을 생성한다. 또다른 실시예에서, 상기 선택된 데이터 파일을 식별해주는 파라미터가 서버 노드에 직접 제공되고, 서버 노드는 상기 선택된 파일에 연관된 데이터를 위해 직접 웹사이트를 접촉하거나 상기 요청을 서버 팜내의 다른 서버에 위임한다.
클라이언트 노드는 제1 실행가능 프로그램을 실행시키는데(단계 296), 일 실시예에서, 이는 어플리케이션 결과 데이터를 수신하고 이를 최종 사용자에게 디스플레이하기 위한 METAFRAME과 같은 딘-클라이언트 어플리케이션이다. 일 실시예에서, 클라이언트 노드는 필요시마다 또는 예정에 따라 푸시 기법, 풀 기법, 또는 이 들이 결합된 기법을 이용하여 서버 노드 또는 웹 서버로부터 제1 실행가능 프로그램을 수신한다.
클라이언트 노드는, 마스터 서버 노드, 서버 노드, 또는 복수의 서버 노드들에 제2 실행가능 프로그램을 실행시키라는 요청을 제공한다(단계 300). 일 실시예에서, 복수의 서버 노드들은 실행 타스크들을 조정하고 공유한다. 이러한 기능은 서버 팜 또는 서버 어레이내에서 로드 밸런싱의 실시를 허용한다.
일 실시예에서, 클라이언트 노드는 제2 실행가능 프로그램이 클라이언트 시스템상에서 실행될지 또는 복수의 서버 시스템중 하나에서 실행될지 여부를 판단하기 위한 하나 이상의 규칙들을 수신한다. 이들 규칙은 클라이언트 시스템상의 실행 로드, 복수의 서버 시스템들중 하나에서의 실행 로드, 집합적인 복수의 서버 시스템들상의 실행 로드, 클라이언트 시스템과 복수의 서버 시스템들간의 연결 속도, 또는 이들 및 기타 요소들의 조합을 포함하는(그러나 이에 제한되는 것은 아닌) 하나 이상의 변수들의 함수이다. 동작에 있어서, 제2 실행가능 프로그램이 클라이언트 노드상에서 실행될 것인지, 복수의 서버 노드들중 하나에서 실행될 것인지, 분산 처리 환경에서와 같이 여러개의 서버 노드들에서 실행될 것인지를 판단하기 위해, 연관 규칙들이 로드되어 평가된다. 일 실시예에서, 규칙 평가 결과 실행은 클라이언트 노드상에서 발생할 것으로 나타난다면, 클라이언트 노드는 사용자에게 직접 상기 실행가능 프로그램의 결과를 제공하고, 클라이언트 노드상에서 작동중인 임의의 딘-클라이언트 어플리케이션은 무시한다.
연관 어플리케이션 프로그램은 실행후에 전형적으로 하나 이상 형태의 결과 데이터를 생성하는데, 이는 그래픽적인 결과 데이터 또는 사운드를 포함할 수 있으며 이에 제한되는 것은 아니다. 일 실시예에서, 클라이언트 노드는 서버 노드와의 연결을 통해 어플리케이션 결과 데이터를 수신하고(단계 304), 그것을 최종 사용자에게 디스플레이한다(단계 308). 일 실시예에서, 어플리케이션 결과 데이터는, 클라이언트 노드에 의해 직접적으로, 또는 제1 실행가능 프로그램 또는 클라이언트 노드상에서 실행되는 또다른 실행가능 프로그램에 의해 지원되는 하나 이상의 포맷으로 제공된다. 또다른 실시예에서, 어플리케이션 데이터는, 압축되거나 압축되지 않는 그래픽 데이터를 나타내는 하나 이상의 비트 스트림, 디스플레이용 벡더 그래픽을 나타내는 마크업 언어, 텍스트 또는 실행시에 사용자를 위한 클라이언트 노드상에 어플리케이션 결과 데이터를 디스플레이하는 일련의 시스템-종속 또는 API 호출이다.
도 10b는 웹-기반 FTA에서 웹서버의 역할을 예시한다. 웹 서버는 데이터 파일의 그래픽 표시자를 제공한다(단계 320). 웹 서버는 후속하여 클라이언트 노드에 실행 요청을 전송한다(단계 324).
일 실시예에서, 웹 서버는 최종 사용자에 의한 선택을 위해 이용가능하며 그가 호스팅하는 데이터 파일에 관련된 그래픽 표시자를 제공한다(단계 320). 또다른 실시예에서, 웹서버는 각각의 호스팅된 파일에 연관된 표시자들에 대하여 인증 또는 신분 표시자를 비교함으로써 데이터 파일이 상기 최종 사용자에게 이용가능한지를 판단한다(단계 320). 또다른 실시예에서, 웹 서버는 접속된 다른 서버들 또는 웹서버들에게 그들이 호스팅하되 사용자들에 의해 액세스될 수 있는 파일들에 대한 그래픽 표시자를 제공하도록 명령하여, 상기 표시자를 모아서 스스로 그들을 표시해주거나, 각각의 개별 서버들로 하여금 표시하도록 위임한다.
일반적으로, 웹 서버는 표시된 파일에 연관된 표시자의 선택을 수신한다. 선택된 파일이 연결된 서버와 연관되어 있는 실시예에서, 수신 웹서버는 수신된 선택을 적절한 서버에 위임하거나, 적절한 서버로부터 상기 선택된 파일에 연관된 데이터를 검색하여, 실행가능한 데이터 요청을 스스로 처리할 수도 있다. 일 실시예에서, 이들 선택사항들중에서의 선택은 서버간에 로드 밸런싱을 하도록 설계된 평가에 따라 이루어진다.
일 실시예에서, 웹 서버는 이후에 사용되기 위한 데이터 파일로의 통합을 위해 개별 매핑들을 수신한다. 또다른 실시예에서, 웹 서버는 그룹으로 되거나 소프트웨어 갱신과 같은 다른 데이터와 집합화된 매핑을 수신한다. 매핑은 활성 전화통신 링크를 통해 전송되거나 하나 이상의 착탈식 저장매체상에 데이터 파일로 저장될 수 있다. 일 실시예에서, 이들 매핑은 푸시 기법, 풀 기법, 또는 이들의 결합 기술을 이용하여 필요시마다 또는 주기적으로 갱신된다.
웹 서버는 수신된 매핑을 활용하여 상기 선택된 데이터 파일이 웹-기반 FTA 메커니즘을 이용하여 실행하기 위한 실행가능 프로그램에 연관되어 있는지 여부를 판단한다. 일반적으로, 매핑은 다양한 수준의 세분성으로 실행가능 프로그램들 또는 데이터 파일들간의 연관성을 지정한다. 일 실시예에서, 매핑은 특정 데이터 파일 또는 데이터 파일 유형과, 판매자 명칭 또는 파일 명칭에 의해 식별되는 특정 실행가능 프로그램 또는 실행가능 프로그램의 유형을 링크시킨다. 또다른 실시예 에서, 매핑은 사용자 신원에 관련된 파라미터들도 포함하는데, 여기에는 하나 이상의 사용자 명칭, 공개키 및 IP 어드레스가 포함된다(이에 한정되는 것은 아니다). 이러한 기능은 웹 서버들이 개별 사용자들마다 달라지는 파일-유형 연관성 집합을 복수개 유지할 수 있도록 해준다.
웹 서버는, 수신된 매핑 정보를 이용하여, 클라이언트 노드에 실행 요청을 전송하고(단계 324), 클라이언트 노드는 전술한 바와 같이 후속 실행한다. 일 실시예에서, 웹 서버는 실행을 위해 클라이언트 노드에 제1 실행가능 프로그램을 또한 제공한다. 또다른 실시예에서, 웹 서버는 다른 컴퓨팅 노드들이 상기 선택된 데이터 파일에 연관된 데이터에 대한 요청을 공식화하는 것을 가능케 하기 위해 상기 선택된 데이터 파일에 대한 레퍼런스를 또한 제공한다. 또다른 실시예에서, 웹 서버는 다른 컴퓨팅 노드들로부터 상기 제공된 레퍼런스를 이용하여 공식화된 데이터 요청에 대하여 또한 서비스한다. 또다른 실시예에서, 서버 노드는 이후의 처리를 도모하기 위해 상기 선택된 데이터 파일에 연관된 데이터를 클라이언트 노드 또는 복수의 서버 노드중 하나에 제공한다.
또다른 실시예에서, 웹 서버는 클라이언트 노드가, 클라이언트 시스템상의 로드, 특정 서버 시스템상의 로드, 복수의 서버 시스템상의 로드, 하나 이상의 클라이언트와 웹 서버와 서버 노드 똔느 복수의 서버 노드간의 연결의 가용 또는 이론적 대역폭을 포함하는 요소(이에 한정되는 것은 아님)에 기반하여, 제2 실행가능 프로그램이 클라이언트 노드, 복수의 서버 노드중 하나, 또는 복수의 서버 노드들중 어디에서 실행될 지를 판단할 수 있도록 허용하기 위해, 하나 이상의 규칙을 클 라이언트 노드에 제공한다.
본 발명은 하나 이상의 제조물상에 구현된 하나 이상의 컴퓨터 판독가능 매체로서 제공될 수 있다. 제조물은, 플로피 디스크, 하드 디스크, CD ROM, 플래시 메모리 카드,PROM, RAM, ROM, 또는 자기 테이프를 들 수 있다. 일반적으로, 컴퓨터 판도가능 프로그램은 임의의 프로그래밍 언어로 구현될 수 있다. 사용될 수 있는 언어의 일부 예에는 C, C++, 또는 JAVA가 포함된다. 소프트웨어 객체는 하나 이상의 제조물내에 목적 코드로서 저장될 수 있다.
본 발명의 정신 및 범위를 벗어남없이 본 기술 분야의 당업자들에 의해 다양한 변형 및 변경이 이루어질 수 있다. 따라서, 상기 도시된 실시예들은 단지 예시적으로 도시된 것이고 본 발명을 제한하려는 의도는 아니며, 본 발명의 범위는 이하의 청구항에 의해 정의됨이 명확히 이해될 것이다. 청구항들은 문언적으로 기재된 것들뿐만 아니라, 상기 실시예에서 도시되고 설명된 것들과 다른 측면에서는 동일하지 않더라도, 실질적으로 차이가 거의 없는 균등 요소들도 포함하는 것으로 이해되어야 할 것이다.

Claims (96)

  1. 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 있어서, 상기 방법은,
    (a) 복수의 서버 시스템중 하나의 서버 시스템으로부터 데이터 파일의 유형과 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행하기 위한 실행가능 프로그램간의 연관성(association)을 지정하는 매핑(mapping)을 클라이언트 시스템에서 수신하는 단계와,
    (b) 상기 클라이언트 시스템에 의해, 상기 클라이언트 시스템에 저장된 데이터 파일의 그래픽 표시자를 제공하는 단계와,
    (c) 상기 클라이언트 시스템에 의해, 상기 데이터 파일의 그래픽 표시자에 대한 선택을 수신하는 단계와,
    (d) 상기 클라이언트 시스템에 의해, 선택된 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일의 유형과 연관된 실행가능 프로그램을 상기 매핑을 이용하여 식별하는 단계와,
    (e) 상기 클라이언트 시스템에 의해, 식별된 상기 실행가능 프로그램을 실행시키라는 요청을 전송하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서, 상기 단계(a)는 데이터 파일 유형, 서버 시스템과의 연결을 개설하기 위한 프로그램, 상기 데이터 파일을 처리하기 위한 실행가능 프로그램, 및 상기 실행가능 프로그램에 의해 사용되기 위한 파라미터들간의 연관성을 지정하는 매핑을 수신하는 단계를 포함하는 방법.
  3. 제1항에 있어서,
    상기 클라이언트 시스템상에 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에 상기 매핑을 저장하는 단계를 더 포함하는, 방법.
  4. 제1항에 있어서,
    어플리케이션 결과 데이터를 디스플레이하기 위한 제2 실행가능 프로그램을 상기 클라이언트상에서 실행시키는 단계를 더 포함하는 방법.
  5. 제1항에 있어서, 상기 실행가능 프로그램으로부터 어플리케이션 결과 데이터를 수신하는 단계를 더 포함하는 방법.
  6. 제1항에 있어서,
    주기적-근거(periodic basis) 및 필요-근거(as-needed basis)중 적어도 하나에 따라 상기 매핑을 갱신하는 단계를 더 포함하는 방법.
  7. 제1항에 있어서, 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하는 규칙을 수신하는 단계를 더 포함하는 방법.
  8. 제1항에 있어서, 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위하여, 상기 클라이언트 시스템상의 로드(load), 상기 복수의 서버 시스 템중 하나의 서버 시스템상의 로드, 상기 복수의 서버 시스템상의 로드 및 상기 클라이언트 시스템과 상기 복수의 서버 시스템간의 연결 속도중 적어도 하나에 대한 함수로서 상기 클라이언트 시스템과 상기 복수의 서버 시스템중 하나의 서버 시스템간의 판단을 규정하는 규칙을 수신하는 단계를 더 포함하는 방법.
  9. 제1항에 있어서, 단계(e)는
    (e-a) 식별된 실행가능 프로그램이 상기 클라이언트 시스템에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지 여부를 판단하는 규칙을 수신하는 단계와,
    (e-b) 상기 식별된 실행가능 프로그램이 상기 클라이언트 시스템에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지 여부를 판단하기 위하여 상기 규칙을 평가하는 단계와,
    (e-c) 상기 (e-b)의 평가에 근거하여 상기 식별된 실행가능 프로그램을 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행시키라는 요청을 전송하는 단계
    를 포함하는 방법.
  10. 제1항에 있어서, 상기 단계(e)는,
    (e-a) 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될 지를 판단하기 위하여, 상기 클라이언트 시스템상의 로드, 상기 복수의 서버 시스템중 하나의 서버 시스템상의 로드, 상기 복수의 서버 시스템상의 로드 및 상기 클라이언트 시스템과 상기 복수의 서버 시스템간의 연결 속도중 적어도 하나에 대한 함수로서 상기 클라이언트 시스템과 상기 복수의 서버 시스템중 하나의 서버 시스템간의 판단을 규정하는 규칙을 수신하는 단계와,
    (e-b) 상기 식별된 실행가능 프로그램이 상기 클라이언트 시스템에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지 여부를 판단하기 위하여 상기 규칙을 평가하는 단계와,
    (e-c) 상기 (e-b)의 평가에 근거하여 상기 식별된 실행가능 프로그램을 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행시키라는 요청을 전송하는 단계
    를 포함하는 방법.
  11. 제1항에 있어서,
    (f) 상기 클라이언트 시스템에 의해, 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일을 포함하는 데이터 - 상기 데이터의 적어도 일부는 상기 실행가능 프로그램에 의해 처리하기 위한 것임- 를 전송하는 단계를 더 포함하는 방법.
  12. 제11항에 있어서,
    상기 단계(f)는,
    (f-a) 상기 클라이언트 시스템에 의해, 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일에 대한 포인터를 제공하는 단계와,
    (f-b) 상기 클라이언트 시스템에 의해, 제공된 상기 포인터를 이용하여 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일과 연관된 데이터에 대한 요청에 응답하는 단계
    를 포함하는 방법.
  13. 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 있어서, 상기 방법은,
    (a) 클라이언트 시스템상에 저장된 데이터 파일의 유형과 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될 실행가능 프로그램간의 연관성을 지정하는 매핑을 제공하는 단계와,
    (b) 상기 실행가능 프로그램을 실행시키라는 요청을 수신하는 단계와,
    (c) 상기 복수의 서버 시스템중 하나의 시스템상에서 상기 실행가능 프로그램을 실행시키는 단계
    를 포함하는 방법.
  14. 제13항에 있어서, 상기 단계(a)는 데이터 파일 유형, 서버 시스템과의 연결을 개설하기 위한 프로그램, 상기 데이터 파일을 처리하기 위한 실행가능 프로그램, 및 상기 실행가능 프로그램에 의해 사용되기 위한 파라미터들간의 연관성을 지정하는 매핑을 제공하는 단계를 포함하는 방법.
  15. 제13항에 있어서, 상기 실행가능 프로그램을 실행시키는 상기 서버 시스템으로부터 어플리케이션 결과 데이터를 클라이언트 시스템에 제공하는 단계를 더 포함 하는 방법.
  16. 제13항에 있어서, 상기 실행가능 프로그램을 실행시키는 상기 서버 시스템으로부터의 어플리케이션 결과 데이터를 디스플레이하기 위한 제2 어플리케이션을 제공하는 단계를 더 포함하는 방법.
  17. 제13항에 있어서, 주기적-근거 및 필요-근거중 적어도 하나에 따라 상기 매핑을 갱신하는 단계를 더 포함하는 방법.
  18. 제13항에 있어서,
    (d) 상기 실행가능 프로그램에 의해 처리하기 위한 데이터 파일에 연관된 데이터를 수신하는 단계를 더 포함하는 방법.
  19. 제18항에 있어서, 상기 단계(d)는,
    (d-a) 상기 데이터 파일에 대한 포인터를 수신한 단계와,
    (d-b) 상기 수신된 포인터를 이용하여 상기 데이터 파일에 연관된 데이터에 대한 요청을 전송하는 단계
    를 포함하는 방법.
  20. 제18항에 있어서, 상기 실행가능 프로그램을 이용하여 상기 수신된 데이터를 처리하는 단계를 더 포함하는 방법.
  21. 제20항에 있어서, 상기 처리된 데이터를 제공하는 단계를 더 포함하는 방법.
  22. 제13항에 있어서, 실행가능 프로그램이 클라이언트 시스템상에서 실행될지 또는 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위해 규칙을 제공하는 단계를 더 포함하는 방법.
  23. 제13항에 있어서, 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나에서 실행될지를 판단하기 위하여, 상기 클라이언트 시스템상의 로드, 상기 복수의 서버 시스템중 하나의 서버 시스템상의 로드, 상기 복수의 서버 시스템상의 로드 및 상기 클라이언트 시스템과 상기 복수의 서버 시스템간의 연결 속도중 적어도 하나에 대한 함수로서 상기 클라이언트 시스템과 상기 복수의 서버 시스템중 하나의 서버 시스템 사이의 판단을 규정하는 규칙을 제공하는 단계를 더 포함하는 방법.
  24. 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 있어서, 상기 방법은,
    (a) 상기 클라이언트 시스템상에 저장된 데이터 파일의 유형과 복수의 서버 시스템들중 하나의 서버 시스템상에서 실행하기 위한 실행가능 프로그램간의 연관성을 지정하는 매핑을 상기 클라이언트 시스템이 수신하는 단계와,
    (b) 상기 클라이언트 시스템상에 저장된 데이터 파일의 그래픽 표시자를 상기 클라이언트 시스템이 제공하는 단계와,
    (c) 상기 데이터 파일의 그래픽 표시자에 대한 선택을 상기 클라이언트 시스템이 수신하는 단계와,
    (d) 선택된 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일의 유형과 연관된 실행가능 프로그램을 상기 클라이언트 시스템이 상기 매핑을 이용하여 식별하는 단계와,
    (e) 상기 복수의 서버 시스템들중 하나의 서버 시스템에 식별된 상기 실행가능 프로그램을 실행시키라는 요청을 전송하는 단계
    를 포함하는 방법.
  25. 제24항에 있어서, 상기 단계(a)는, 데이터 파일의 유형, 서버 시스템과의 연결을 개설하기 위한 프로그램, 상기 데이터 파일을 처리하기 위한 실행가능 프로그램 및 상기 실행가능 프로그램에 의해 사용되기 위한 파라미터들간의 연관성을 지정하는 매핑을 수신하는 단계를 포함하는 방법.
  26. 제24항에 있어서,
    상기 클라이언트 시스템상에 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에 상기 매핑을 저장하는 단계를 더 포함하는 방법.
  27. 제24항에 있어서, 어플리케이션 결과를 디스플레이하기 위한 제2 실행가능 프로그램을 상기 클라이언트 시스템에 제공하는 단계를 더 포함하는 방법.
  28. 제24항에 있어서, 주기적 근거 및 필요 근거중 적어도 하나에 따라 상기 매핑을 상기 복수의 서버 시스템중 하나의 서버 시스템이 갱신하는 단계를 더 포함하는 방법.
  29. 제24항에 있어서, 상기 실행가능 프로그램을 상기 복수의 서버 시스템중 하나의 서버 시스템이 실행하는 단계를 더 포함하는 방법.
  30. 제29항에 있어서, 상기 실행가능 프로그램을 실행시키는 상기 서버 시스템이 어플리케이션 결과 데이터를 제공하는 단계를 더 포함하는 방법.
  31. 제24항에 있어서,
    (f) 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일을 포함하는 데이터 - 상기 데이터의 적어도 일부는 상기 실행가능 프로그램에 의해 처리하기 위한 것임- 를 상기 클라이언트 시스템이 전송하는 단계를 더 포함하는 방법.
  32. 제31항에 있어서, 상기 단계(f)는
    (f-a) 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일에 대한 포인터를 상기 클라이언트 시스템이 제공하는 단계와,
    (f-b) 제공된 상기 포인터를 이용하여 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일과 연관된 데이터에 대한 요청에 상기 클라이언트 시스템이 응답하는 단계
    를 포함하는 방법.
  33. 제31항에 있어서, 상기 실행가능 프로그램을 이용하여 상기 제공된 데이터를 상기 복수의 서버 시스템중 하나의 서버 시스템이 처리하는 단계를 더 포함하는 방법.
  34. 제33항에 있어서, 상기 처리된 데이터를 상기 복수의 서버 시스템중 하나의 서버 시스템이 제공하는 단계를 더 포함하는 방법.
  35. 제24항에 있어서, 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하는 규칙을 상기 클라이언트 시스템에서 수신하는 단계를 더 포함하는 방법.
  36. 제24항에 있어서, 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위하여, 상기 클라이언트 시스템상의 로드, 상기 복수의 서버 시스템중 하나의 서버 시스템상의 로드, 상기 복수의 서버 시스템상의 로드 및 상기 클라이언트 시스템과 상기 복수의 서버 시스템간의 연결 속도중 적어도 하나에 대한 함 수로서 상기 클라이언트 시스템과 상기 복수의 서버 시스템중 하나의 서버 시스템간의 판단을 규정하는 규칙을 상기 클라이언트 시스템에서 수신하는 단계를 더 포함하는 방법.
  37. 제24항에 있어서, 단계(e)는
    (e-a) 식별된 실행가능 프로그램이 상기 클라이언트 시스템에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지 여부를 판단하는 규칙을 수신하는 단계와,
    (e-b) 상기 식별된 실행가능 프로그램이 상기 클라이언트 시스템에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지 여부를 판단하기 위하여 상기 규칙을 평가하는 단계와,
    (e-c) 상기 (e-b)의 평가에 근거하여 상기 식별된 실행가능 프로그램을 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행시키라는 요청을 전송하는 단계
    를 포함하는 방법.
  38. 제24항에 있어서, 상기 단계(e)는,
    (e-a) 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될 지를 판단하기 위하여, 상기 클라이언트 시스템상의 로드, 상기 복수의 서버 시스템중 하나의 서 버 시스템상의 로드, 상기 복수의 서버 시스템상의 로드 및 상기 클라이언트 시스템과 상기 복수의 서버 시스템간의 연결 속도중 적어도 하나에 대한 함수로서 상기 클라이언트 시스템과 상기 복수의 서버 시스템중 하나의 서버 시스템간의 판단을 규정하는 규칙을 상기 클라이언트 시스템에서 수신하는 단계와,
    (e-b) 상기 식별된 실행가능 프로그램이 상기 클라이언트 시스템에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지 여부를 판단하기 위하여 상기 규칙을 평가하는 단계와,
    (e-c) 상기 (e-b)의 평가에 근거하여 상기 식별된 실행가능 프로그램을 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행시키라는 요청을 전송하는 단계
    를 포함하는 방법.
  39. 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 있어서, 상기 방법은,
    (a) 복수의 서버 시스템중 하나의 서버 시스템상에 저장된 데이터 파일에 대한 그래픽 표시자를 제공하는 단계와,
    (b) 상기 데이터 파일의 상기 그래픽 표시자에 대한 선택을 수신하는 단계와,
    (c) 상기 데이터 파일의 상기 그래픽 표시자에 대한 선택을 상기 복수의 서버 시스템중 하나의 서버 시스템에 전송하는 단계와,
    (d) 선택된 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일과 연관된 실행가능 프로그램을 실행시키라는 요청을 상기 복수의 서버 시스템중 하나의 서버 시스템으로부터 수신하는 단계와,
    (e) 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일과 연관된 실행가능 프로그램을 실행시키는 단계
    를 포함하는 방법.
  40. 제39항에 있어서,
    (f) 상기 실행가능 프로그램에 의한 처리를 위해 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일과 연관된 데이터를 수신하는 단계를 더 포함하는 방법.
  41. 제40항에 있어서,
    상기 단계(f)는
    (f-a) 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일에 대한 포인터를 수신하는 단계
    를 포함하는 방법.
  42. 제41항에 있어서, 상기 단계(f)는
    (f-b) 상기 수신된 포인터를 이용하여 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일과 연관된 데이터를 상기 복수의 서버 시스템중 하나의 서버 시스템으로부터 검색하는 단계
    를 더 포함하는 방법.
  43. 제40항에 있어서,
    상기 단계(f)는
    (f-a) 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol: HTTP) 및 메시징 어플리케이션 프로그래밍 인터페이스(messaging application programming interface: MAPI) 프로토콜중 적어도 하나를 이용하여 처리를 위해 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일과 연관된 데이터를 수신하는 단계
    를 포함하는 방법.
  44. 제40항에 있어서, 상기 실행가능 프로그램을 이용하여 상기 수신된 데이터를 처리하는 단계를 더 포함하는 방법.
  45. 제44항에 있어서, 상기 처리된 데이터를 제공하는 단계를 더 포함하는 방법.
  46. 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 있어서, 상기 방법은,
    (a) 데이터 파일의 유형과 클라이언트 시스템상에서의 실행을 위한 실행가능 프로그램간의 연관성을 지정하는 매핑을 수신하는 단계와,
    (b) 복수의 서버 시스템중 하나의 서버 시스템상에 데이터 파일을 저장하는 단계와,
    (c) 상기 저장된 데이터 파일의 선택을 수신하는 단계와,
    (d) 상기 매핑을 이용하여 상기 선택된 데이터 파일의 유형에 연관된 실행가능 프로그램을 식별하는 단계와,
    (e) 상기 식별된 실행가능 프로그램을 실행시키라는 요청을 클라이언트 시스템에 전송하는 단계
    를 포함하는 방법.
  47. 제46항에 있어서,
    상기 클라이언트 시스템상에 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에 상기 매핑을 저장하는 단계를 더 포함하는 방법.
  48. 제46항에 있어서, 주기적-근거 및 필요-근거중 적어도 하나에 따라 상기 매핑을 갱신하는 단계를 더 포함하는 방법.
  49. 제46항에 있어서, 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위한 규칙을 수신하는 단계를 더 포함하는 방법.
  50. 제46항에 있어서, 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될 지를 판단하기 위하여, 상기 클라이언트 시스템상의 로드, 상기 복수의 서버 시스템중 하나의 서버 시스템상의 로드, 상기 복수의 서버 시스템상의 로드 및 상기 클라이언트 시스템과 상기 복수의 서버 시스템간의 연결 속도중 적어도 하나에 대한 함수로서 상기 클라이언트 시스템과 상기 복수의 서버 시스템중 하나의 서버 시스템간의 판단을 규정하는 규칙을 수신하는 단계를 더 포함하는 방법.
  51. 제46항에 있어서, 상기 단계(e)는,
    (e-a) 상기 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템 중 하나의 서버 시스템상에서 실행될지 여부를 판단하기 위한 규칙을 평가하는 단계
    를 포함하는 방법.
  52. 제51항에 있어서, 상기 단계(e)는,
    (e-b) 상기 (e-a)의 평가에 근거하여 상기 클라이언트 시스템상에서 상기 식별된 실행가능 프로그램을 실행시키라는 요청을 전송하는 단계
    를 더 포함하는 방법.
  53. 제46항에 있어서,
    (f) 상기 실행가능 프로그램에 의한 처리를 위해 상기 선택된 데이터 파일에 연관된 데이터를 제공하는 단계를 더 포함하는 방법.
  54. 제53항에 있어서, 상기 단계(f)는
    (f-a) 상기 선택된 데이터 파일에 대한 포인터를 제공하는 단계
    를 포함하는 방법.
  55. 제54항에 있어서,
    (f-b) 상기 수신된 포인터를 이용하여 상기 선택된 데이터 파일에 연관된 데이터에 대한 요청에 응답하는 단계
    를 더 포함하는 방법.
  56. 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 있어서, 상기 방법은,
    (a) 데이터 파일의 유형과 클라이언트 시스템상에서의 실행을 위한 실행가능 프로그램간의 연관성을 지정하는 매핑을 복수의 서버 시스템중 하나의 서버 시스템이 수신하는 단계와,
    (b) 복수의 서버 시스템중 하나의 서버 시스템상에 데이터 파일을 저장하는 단계와,
    (c) 상기 저장된 데이터 파일에 대한 선택을 클라이언트 시스템에서 수신하는 단계와,
    (d) 상기 데이터 파일에 대한 선택을 상기 복수의 서버 시스템중 하나의 서버 시스템에 전송하는 단계와,
    (e) 상기 매핑을 이용하여 상기 선택된 데이터 파일의 유형에 연관된 실행가능 프로그램을 상기 복수의 서버 시스템중 하나의 서버 시스템에서 식별하는 단계와,
    (f) 상기 식별된 실행가능 프로그램을 실행시키라는 요청을 상기 클라이언트 시스템에 전송하는 단계와,
    (g) 상기 선택된 데이터 파일에 연관된 상기 실행가능 프로그램을 상기 클라이언트 시스템에서 실행하는 단계
    를 포함하는 방법.
  57. 제56항에 있어서,
    (h) 상기 선택된 데이터 파일에 연관된 데이터를 상기 클라이언트 시스템이 검색하는 단계
    를 더 포함하는 방법.
  58. 제57항에 있어서, 상기 단계(h)는
    (h-a) 하이퍼텍스트 전송 프로토콜(HTTP) 및 메시징 어플리케이션 프로그래밍 인터페이스(MAPI) 프로토콜중 적어도 하나를 이용하여 처리를 위해 상기 선택된 데이터 파일에 연관된 데이터를 검색하는 단계
    를 포함하는 방법.
  59. 제56항에 있어서, 상기 선택된 데이터 파일에 대한 포인터를 상기 클라이언트 시스템에 제공하는 단계를 더 포함하는 방법.
  60. 제59항에 있어서, 상기 제공된 포인터를 이용하여 상기 선택된 데이터 파일 에 연관된 데이터를 상기 클라이언트 시스템이 검색하는 단계를 더 포함하는 방법.
  61. 제56항에 있어서, 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위한 규칙을 수신하는 단계를 더 포함하는 방법.
  62. 제56항에 있어서, 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위하여, 상기 클라이언트 시스템상의 로드, 상기 복수의 서버 시스템중 하나의 서버 시스템상의 로드, 상기 복수의 서버 시스템상의 로드 및 상기 클라이언트 시스템과 상기 복수의 서버 시스템간의 연결 속도중 적어도 하나에 대한 함수로서 상기 클라이언트 시스템과 상기 복수의 서버 시스템중 하나의 서버 시스템간의 판단을 규정하는 규칙을 수신하는 단계를 더 포함하는 방법.
  63. 제56항에 있어서, 단계(f)는
    (f-a) 상기 식별된 실행가능 프로그램이 상기 클라이언트 시스템에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지 여부를 판단하기 위한 규칙을 상기 복수의 서버 시스템중 하나의 서버 시스템이 평가하는 단계
    를 포함하는 방법.
  64. 제63항에 있어서, 단계(f)는
    (f-b) 상기 (f-a)의 평가에 근거하여 상기 식별된 실행가능 프로그램을 상기 클라이언트 시스템상에서 실행시키라는 요청을 전송하는 단계
    를 더 포함하는 방법.
  65. 제56항에 있어서, 상기 실행가능 프로그램을 이용하여 상기 수신된 데이터를 처리하는 단계를 더 포함하는 방법.
  66. 제65항에 있어서, 상기 처리된 데이터를 제공하는 단계를 더 포함하는 방법.
  67. 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서, 분산 프로그램 실행을 가능하게 하기 위한 방법에 있어서, 상기 방법은,
    (a) 웹서버상에 저장된 데이터 파일의 그래픽 표시자를 제공하는 단계와,
    (b) 제1 실행가능 프로그램을 실행시키라는 요청- 상기 요청은 상기 데이터 파일에 연관된 제2 실행가능 프로그램에 관한 정보를 포함하고, 상기 제2 실행가능 프로그램은 상기 클라이언트 시스템 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행됨-을 수신하는 단계와,
    (c) 상기 제2 실행가능 프로그램으로부터 어플리케이션 결과 데이터를 수신하는 단계와,
    (d) 상기 제1 실행가능 프로그램이 상기 수신된 어플리케이션 결과 데이터를 프레젠테이션하기 위해 포맷팅하는 단계
    를 포함하는 방법.
  68. 제67항에 있어서, 상기 제1 실행가능 프로그램을 수신하는 단계를 더 포함하는 방법.
  69. 제67항에 있어서, 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위한 규칙을 수신하는 단계를 더 포함하는 방법.
  70. 제67항에 있어서, 식별된 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위하여, 상기 클라이언트 시스템상의 로드, 상기 복수의 서버 시스템중 하나의 서버 시스템상의 로드, 상기 복수의 서버 시스템상의 로드 및 상기 클라이언트 시스템과 상기 복수의 서버 시스템간의 연결 속도중 적어도 하나에 대한 함수로서 상기 클라이언트 시스템과 상기 복수의 서버 시스템중 하나의 서버 시스템간의 판단을 규정하는 규칙을 수신하는 단계를 더 포함하는 방법.
  71. 제67항에 있어서,
    (e) 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일과 연관된 상기 제2 실행가능 프로그램을 실행시키라는 요청을 전송하는 단계를 더 포함하는 방법.
  72. 제71항에 있어서, 상기 단계 (e)는
    (e-a) 상기 제2 실행가능 프로그램이 상기 클라이언트 시스템 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위해 규칙을 평가하는 단계와,
    (e-b) 상기 (e-a)의 평가 단계에 근거하여 상기 복수의 서버 시스템중 하나상에서 상기 제2 실행가능 프로그램을 실행시키라는 요청을 전송하는 단계
    를 포함하는 방법.
  73. 제67항에 있어서, 상기 제2 실행가능 프로그램으로부터 어플리케이션 결과 데이터를 수신하는 단계를 더 포함하는 방법.
  74. 제73항에 있어서, 상기 제1 실행가능 프로그램을 이용하여 상기 어플리케이션 결과 데이터를 디스플레이하는 단계를 더 포함하는 방법.
  75. 제67항에 있어서, 상기 데이터 파일에 연관된 데이터를 수신하는 단계를 더 포함하는 방법.
  76. 제75항에 있어서, 상기 제2 실행가능 프로그램을 실행시키는 컴퓨터에 상기 수신된 데이터를 제공하는 단계를 더 포함하는 방법.
  77. 제67항에 있어서, 상기 데이터 파일에 대한 포인터를 수신하는 단계를 더 포함하는 방법.
  78. 제77항에 있어서, 상기 수신된 포인터를 이용하여 상기 데이터 파일에 연관된 데이터를 요청하는 단계를 더 포함하는 방법.
  79. 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 있어서, 상기 방법은,
    (a) 데이터 파일의 그래픽 표시자를 전송하는 단계와,
    (b) 클라이언트 시스템상에서 어플리케이션 결과 데이터를 수신하기 위한 제1 실행가능 프로그램을 실행시키라는 요청을 제공하는 단계를 포함하고, 상기 요청은 상기 클라이언트 시스템 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서의 실행을 위한 제2 실행가능 프로그램에 관한 정보를 포함하는 방법.
  80. 제79항에 있어서, 상기 제1 실행가능 프로그램을 제공하는 단계를 더 포함하는 방법.
  81. 제79항에 있어서, 상기 데이터 파일에 대한 포인터를 제공하는 단계를 더 포 함하는 방법.
  82. 제81항에 있어서, 상기 제공된 포인터를 이용하여 상기 데이터 파일에 연관된 데이터의 요청에 대하여 서비스하는 단계를 더 포함하는 방법.
  83. 제79항에 있어서, 상기 데이터 파일의 콘텐트를 제공하는 단계를 더 포함하는 방법.
  84. 제79항에 있어서, 상기 제2 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위한 규칙을 제공하는 단계를 더 포함하는 방법.
  85. 제79항에 있어서, 상기 제2 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위하여, 상기 클라이언트 시스템상의 로드, 상기 복수의 서버 시스템중 하나의 서버 시스템상의 로드, 상기 복수의 서버 시스템상의 로드 및 상기 클라이언트 시스템과 상기 복수의 서버 시스템간의 연결 속도중 적어도 하나에 대한 함수로서 상기 클라이언트 시스템과 상기 복수의 서버 시스템중 하나의 서버 시스템간의 판단을 규정하는 규칙을 제공하는 단계를 더 포함하는 방법.
  86. 클라이언트 시스템과 복수의 서버 시스템을 포함하는 네트워크에서 분산 프로그램 실행을 가능하게 하기 위한 방법에 있어서, 상기 방법은,
    (a) 웹서버상에 저장된 데이터 파일의 그래픽 표시자를 웹서버가 전송하는 단계와,
    (b) 클라이언트 시스템상에서 어플리케이션 결과 데이터를 수신하기 위한 제1 실행가능 프로그램을 실행시키라는 요청- 상기 요청은 상기 클라이언트 시스템 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서의 실행을 위한 제2 실행가능 프로그램에 관한 정보를 포함함-을 상기클라이언트 시스템에 제공하는 단계와,
    (c) 상기 클라이언트 시스템상에서 상기 제1 실행가능 프로그램을 상기 클라이언트 시스템이 실행하는 단계
    를 포함하는 방법.
  87. 제86항에 있어서, 상기 제1 실행가능 프로그램을 상기 클라이언트 시스템에 제공하는 단계를 더 포함하는 방법.
  88. 제86항에 있어서, 상기 제2 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위한 규칙을 상기 클라이언트 시스템에서 수신하는 단계를 더 포함하는 방법.
  89. 제79항에 있어서, 상기 제2 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위하여, 상기 클라이언트 시스템상의 로드, 상기 복수의 서버 시스템중 하나의 서버 시스템상의 로드, 상기 복수의 서버 시스템상의 로드 및 상기 클라이언트 시스템과 상기 복수의 서버 시스템간의 연결 속도중 적어도 하나에 대한 함수로서 상기 클라이언트 시스템과 상기 복수의 서버 시스템중 하나의 서버 시스템간의 판단을 규정하는 규칙을 상기 클라이언트 시스템에서 수신하는 단계를 더 포함하는 방법.
  90. 제86항에 있어서,
    (d) 상기 그래픽 표시자에 의해 식별된 상기 데이터 파일과 연관된 상기 제2 실행가능 프로그램을 실행시키라는 요청을 상기 복수의 서버 시스템중 하나의 서버 시스템에 제공하는 단계
    를 더 포함하는 방법.
  91. 제90항에 있어서, 상기 단계 (d)는
    (d-a) 상기 제2 실행가능 프로그램이 상기 클라이언트 시스템상에서 실행될지 또는 상기 복수의 서버 시스템중 하나의 서버 시스템상에서 실행될지를 판단하기 위하여 상기 클라이언트 시스템이 규칙을 평가하는 단계와,
    (d-b) 상기 단계 (d-a)의 평가에 근거하여 상기 복수의 서버 시스템중 하나 의 서버 시스템상에서 상기 제2 실행가능 프로그램을 실행시키라는 요청을 상기 클라이언트 시스템이 전송하는 단계
    를 포함하는 방법.
  92. 제86항에 있어서, 상기 제2 실행가능 프로그램으로부터 어플리케이션 결과 데이터를 상기 클라이언트 시스템이 수신하는 단계를 더 포함하는 방법.
  93. 제92항에 있어서, 상기 제1 실행가능 프로그램을 이용하여 상기 어플리케이션 결과 데이터를 상기 클라이언트 시스템이 디스플레이하는 단계를 더 포함하는 방법.
  94. 제86항에 있어서,
    상기 그래픽 표시자에 의해 식별된 상기 데이터 파일과 연관된 데이터를 상기 웹서버가 제공하는 단계를 더 포함하는 방법.
  95. 제86항에 있어서,
    상기 그래픽 표시자에 의해 식별된 상기 데이터 파일에 대한 포인터를 상기 웹서버가 제공하는 단계를 더 포함하는 방법.
  96. 제95항에 있어서, 상기 제공된 포인터를 이용하여 상기 선택된 데이터 파일에 연관된 데이터를 상기 클라이언트 시스템이 요청하는 단계를 더 포함하는 방법.
KR1020047004890A 2001-10-02 2002-10-01 클라이언트-서버 네트워크에서 파일-유형 연관성을 이용한분산 프로그램 실행 방법 KR100998515B1 (ko)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US09/970,462 US7330872B2 (en) 2001-10-02 2001-10-02 Method for distributed program execution with web-based file-type association
US09/970,038 2001-10-02
US09/970,462 2001-10-02
US09/970,037 2001-10-02
US09/970,037 US6952714B2 (en) 2001-10-02 2001-10-02 Method for distributed program execution with server-based file type association
US09/970,038 US7117243B2 (en) 2001-10-02 2001-10-02 Methods for distributed program execution with file-type association in a client-server network
PCT/US2002/031261 WO2003029977A2 (en) 2001-10-02 2002-10-01 Methods for distributed program execution with file-type association in a client-server network

Publications (2)

Publication Number Publication Date
KR20040066097A KR20040066097A (ko) 2004-07-23
KR100998515B1 true KR100998515B1 (ko) 2010-12-07

Family

ID=27420761

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047004890A KR100998515B1 (ko) 2001-10-02 2002-10-01 클라이언트-서버 네트워크에서 파일-유형 연관성을 이용한분산 프로그램 실행 방법

Country Status (8)

Country Link
EP (5) EP2383649A1 (ko)
JP (1) JP2005505051A (ko)
KR (1) KR100998515B1 (ko)
CN (1) CN100354830C (ko)
AU (1) AU2002332001B2 (ko)
CA (1) CA2462271C (ko)
IL (2) IL161141A0 (ko)
WO (1) WO2003029977A2 (ko)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU2005292324A1 (en) * 2004-09-30 2006-04-13 Citrix Systems, Inc. Method and apparatus for virtualizing window information
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8613048B2 (en) * 2004-09-30 2013-12-17 Citrix Systems, Inc. Method and apparatus for providing authorized remote access to application sessions
US8171479B2 (en) 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
JP4700700B2 (ja) * 2005-02-25 2011-06-15 エヌエイチエヌ コーポレーション アクティブエックスコントロール設置方法
US7634578B2 (en) * 2005-07-14 2009-12-15 Microsoft Corporation Node-to-node communication pipelines
US8131825B2 (en) 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
CA2527447C (en) * 2005-11-18 2015-05-05 Allen Vi Cuong Chan Message oriented construction of web services
US7634717B2 (en) 2006-01-23 2009-12-15 Microsoft Corporation Multiple conditional formatting
US7441113B2 (en) * 2006-07-10 2008-10-21 Devicevm, Inc. Method and apparatus for virtualization of appliances
WO2008060300A1 (en) * 2006-11-16 2008-05-22 Dynomedia, Inc. Systems and methods for distributed digital rights management
JP4789819B2 (ja) * 2007-01-31 2011-10-12 株式会社日立製作所 アプリケーションとデータの管理方法、管理システム、それに用いられるシンクライアント端末、管理サーバ、および、リモート計算機
US7853669B2 (en) 2007-05-04 2010-12-14 Microsoft Corporation Mesh-managing data across a distributed set of devices
JP2009048386A (ja) 2007-08-20 2009-03-05 Chepro:Kk 通信システム、通信方法、通信制御プログラムおよびこのプログラムを記憶した記録媒体
CN101378400B (zh) * 2007-08-30 2013-01-30 国际商业机器公司 实现桌面应用和Web应用聚合的方法、服务器和系统
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
CN101436148B (zh) * 2007-11-14 2011-11-02 华为技术有限公司 集成客户端及进行桌面应用与网络应用交互的方法
EP2241081B1 (en) 2008-01-26 2018-05-02 Citrix Systems, Inc. Systems and methods for fine grain policy driven cookie proxying
US8484174B2 (en) 2008-03-20 2013-07-09 Microsoft Corporation Computing environment representation
US8572033B2 (en) 2008-03-20 2013-10-29 Microsoft Corporation Computing environment configuration
US9753712B2 (en) 2008-03-20 2017-09-05 Microsoft Technology Licensing, Llc Application management within deployable object hierarchy
KR100953841B1 (ko) * 2008-04-14 2010-04-20 주식회사위즈베라 액티브엑스 컨트롤의 설치 방법
GB2479068B (en) 2008-10-28 2013-10-02 Hewlett Packard Development Co File type association in a remote computing session
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
CN102075571A (zh) * 2010-12-31 2011-05-25 成都市华为赛门铁克科技有限公司 应用程序的执行方法、设备及系统
CN103095758B (zh) * 2011-11-01 2016-09-21 北大方正集团有限公司 一种分布式文件系统及该系统中处理文件数据的方法
TWI451268B (zh) * 2011-11-08 2014-09-01 Inst Information Industry 提供虛擬桌面之雲端系統、於虛擬桌面播放多媒體之方法以及其電腦可讀取記錄媒體
CN103823821B (zh) * 2012-11-19 2018-02-23 华为终端(东莞)有限公司 网络数据处理方法及设备
CN105210032B (zh) * 2013-03-14 2021-06-25 黑莓有限公司 应用程序的登记和交互
US9292280B2 (en) 2013-03-15 2016-03-22 Google Inc. Systems and methods for multi-tiered format registration for applications
US9489430B2 (en) 2013-05-14 2016-11-08 Google Inc. System and method for identifying applicable third-party applications to associate with a file
US20150365469A1 (en) * 2014-06-17 2015-12-17 Google Inc. System and method for integrating web and native applications from web-based contexts
US20160085765A1 (en) * 2014-09-22 2016-03-24 Amazon Technologies, Inc. Computing environment selection techniques
CN108345619A (zh) * 2017-01-24 2018-07-31 中兴通讯股份有限公司 一种数据删除方法、终端及服务器
KR102137891B1 (ko) * 2018-11-21 2020-07-24 전자부품연구원 Bmc 환경에서의 사용자 특화 운용 메커니즘에 의한 서버 관리 방법, 기록매체, 및 서버
CN112486559B (zh) * 2020-12-15 2023-06-20 青岛海尔科技有限公司 产品调整方法、装置和存储介质及电子装置
CN114257628A (zh) * 2021-11-03 2022-03-29 北京思特奇信息技术股份有限公司 一种注册响应式数据推送方法及系统、电子设备、存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838906A (en) 1994-10-17 1998-11-17 The Regents Of The University Of California Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document
JP2001202319A (ja) 1999-11-30 2001-07-27 Internatl Business Mach Corp <Ibm> パーベイシブ・コンピューティング装置のアプリケーション/プリファランスを制御するための方法、システムおよびコンピュータ・プログラム製品
US6362836B1 (en) 1998-04-06 2002-03-26 The Santa Cruz Operation, Inc. Universal application server for providing applications on a variety of client devices in a client/server network
US6421673B1 (en) 1999-12-13 2002-07-16 Novient, Inc. Method for mapping applications and or attributes in a distributed network environment

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6128642A (en) * 1997-07-22 2000-10-03 At&T Corporation Load balancing based on queue length, in a network of processor stations
AU1807801A (en) * 1999-11-29 2001-06-04 Glaxo Group Limited Thread-based methods and systems for using the idle processing power of one or more networked computers to solve complex scientific problems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5838906A (en) 1994-10-17 1998-11-17 The Regents Of The University Of California Distributed hypermedia method for automatically invoking external application providing interaction and display of embedded objects within a hypermedia document
US6362836B1 (en) 1998-04-06 2002-03-26 The Santa Cruz Operation, Inc. Universal application server for providing applications on a variety of client devices in a client/server network
JP2001202319A (ja) 1999-11-30 2001-07-27 Internatl Business Mach Corp <Ibm> パーベイシブ・コンピューティング装置のアプリケーション/プリファランスを制御するための方法、システムおよびコンピュータ・プログラム製品
US6421673B1 (en) 1999-12-13 2002-07-16 Novient, Inc. Method for mapping applications and or attributes in a distributed network environment

Also Published As

Publication number Publication date
CA2462271A1 (en) 2003-04-10
CN100354830C (zh) 2007-12-12
IL161141A (en) 2008-12-29
KR20040066097A (ko) 2004-07-23
JP2005505051A (ja) 2005-02-17
CA2462271C (en) 2014-03-25
EP1684176A3 (en) 2010-05-05
AU2002332001B2 (en) 2006-11-30
CN1599901A (zh) 2005-03-23
IL161141A0 (en) 2004-08-31
EP2383649A1 (en) 2011-11-02
EP1755041A2 (en) 2007-02-21
EP1755041A3 (en) 2010-09-22
EP1470482A2 (en) 2004-10-27
EP2383650A1 (en) 2011-11-02
WO2003029977A3 (en) 2004-08-19
WO2003029977A2 (en) 2003-04-10
EP1684176A2 (en) 2006-07-26

Similar Documents

Publication Publication Date Title
KR100998515B1 (ko) 클라이언트-서버 네트워크에서 파일-유형 연관성을 이용한분산 프로그램 실행 방법
US7117243B2 (en) Methods for distributed program execution with file-type association in a client-server network
US6952714B2 (en) Method for distributed program execution with server-based file type association
US7330872B2 (en) Method for distributed program execution with web-based file-type association
CA2293127C (en) An apparatus and method for determining a program neighborhood for a client node in a client-server network using markup language techniques
AU2002332001A1 (en) Methods for distributed program execution with file-type association in a client-server network
US7627658B2 (en) Presentation service which enables client device to run a network based application
RU2237275C2 (ru) Сервер и способ (варианты) определения программного окружения клиентского узла в сети с архитектурой клиент/сервер
KR20040068106A (ko) 분산 컴퓨팅 환경에서 집합화된 서비스의 공급
US20160269446A1 (en) Template representation of security resources
KR100678252B1 (ko) 클라이언트-서버 네트워크에서 클라이언트 노드에 대해 근접지대 프로그램을 판별하기 위한 장치 및 방법
EP1411429A2 (en) An apparatus and method for determining a program neighbourhood for a client node in a client-server network
AU2006233277B2 (en) Methods for distributed program execution with file-type association in a client-server network
AU2006233857B2 (en) Methods for distributed program execution with file-type association in a client-server network

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
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: 20131101

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141107

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20171110

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20200130

Year of fee payment: 10