KR20020034347A - 서버-씬 클라이언트 시스템 - Google Patents

서버-씬 클라이언트 시스템 Download PDF

Info

Publication number
KR20020034347A
KR20020034347A KR1020000064551A KR20000064551A KR20020034347A KR 20020034347 A KR20020034347 A KR 20020034347A KR 1020000064551 A KR1020000064551 A KR 1020000064551A KR 20000064551 A KR20000064551 A KR 20000064551A KR 20020034347 A KR20020034347 A KR 20020034347A
Authority
KR
South Korea
Prior art keywords
server
client
screen
software
clients
Prior art date
Application number
KR1020000064551A
Other languages
English (en)
Inventor
전윤호
Original Assignee
강태구
주식회사제스텔
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 강태구, 주식회사제스텔 filed Critical 강태구
Priority to KR1020000064551A priority Critical patent/KR20020034347A/ko
Publication of KR20020034347A publication Critical patent/KR20020034347A/ko

Links

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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본발명은 서버-클라이언트(server-client) 시스템에 관한 것으로서, 서버측에서 동작하는 자바를 이용하는 씬 클라이언트와 이 씬 클라이언트를 지원하기 위한 서버에 관한 것이다. 본 발명에 따른, 다수의 클라이언트가 접속할 수 있는 서버 장치는 하나의 자바 가상 머신과, 상기 하나의 자바 가상 머신에 의해 동작하는 다수의 클라이언트 세션을 포함하고 각 세션은 각 클라이언트에 해당하는 하나 이상의 응용 프로그램을 수행하도록 구성된다.

Description

서버-씬 클라이언트 시스템{SERVER-THIN CLIENT SYSTEM}
본발명은 서버-클라이언트(server-client) 시스템에 관한 것으로서, 보다 상세하게는, 서버측에서 동작하는 자바를 이용하는 씬 클라이언트와 이 씬 클라이언트를 지원하기 위한 서버에 관한 것이다.
서버-씬 클라이언트 시스템이란 개념은 클라이언트를 가능한 한 단순하게 구성하고 모든 정보 및 기능을 서버에 두는 것을 의미한다. 응용 소프트웨어를 서버에서 실행시키며 클라이언트의 하드웨어와 소프트웨어를 최대한 단순화하고 클라이언트에 정보를 저장하지 않는 씬 클라이언트 기술은 클라이언트 가격 및 유지 보수 비용의 절감, 데이터 백업의 용이성 등 여러 장점을 갖는다.
개인용 컴퓨터("PC")가 일반화되기 전에는 메인프레임(mainframe)에 연결된 더미 터미널(dummy terminal)의 경우처럼 거의 모든 컴퓨팅 환경이 서버-클라이언트 환경에 해당하였다. 그러나, 그 후 PC가 널리 보급되고 사용자들이 GUI(Graphical User Interface)에 익숙해지면서 PC측에서 여러 가지 작업을 수행하는 것이 일반화되었다.
PC의 사용자 층이 더욱 확대되고 수행하는 작업이 고도화되면서 PC의 관리를 포함한 전체 비용(TCO: Total Cost of Ownership)의 증가가 큰 문제로 대두되었다. 즉, PC 하드웨어의 가격은 비교적 저렴하지만 운영체계(OS)와 응용프로그램의 설치, 셋업, 업그레이드에 사용자의 많은 시간이 소요된다. 또한, 하드웨어의 고장, 바이러스 감염 등 운영상의 문제가 한 번 발생하면 그 PC를 사용하던 사용자는 물론이고 그 주위의 다른 사람들에게까지 시간 및 노력의 손실을 초래한다. 근래에 다시 대두된 씬 클라이언트의 개념은 TCO를 줄이기 위해 예전처럼 데이타를 중앙 집중식으로 처리하고 저장하는 방식으로서 크게 지금까지 다음과 같은 방식들이 제시되었거나 사용되고 있다.
(1) 자바 기반 네트워크 컴퓨터: 자바 가상 머신(Java virtual machine)을 탑재한 컴퓨터로서 자바 클래스 화일(Java class file)을 서버로부터 다운로드하여 클라이언트에서 실행한다. 원칙적으로 모든 정보는 서버에 저장되지만, 속도 문제 때문에 클래스 파일들을 로컬 하드디스크에 캐싱하는 것이 일반적이다. 이 기술은 자바 관련 기술이 성숙되지 못했을 때 나왔기 때문에 자바 버전이 바뀌는 것을 단말기가 쫓아가지 못한다는 문제가 있었다. 또한, 자바 프로그램을 고속으로 수행하기 위한 하드웨어 사양도 저가 PC와 별반 다르지 않았기 때문에 시장에서는 성공하지 못했다.
(2) 브라우저 기반 응용 프로그램 방식: 실질적인 데이타 처리는 서버에서 이루어지고 CGI(Common Gateway Interface), 서브릿(servlet)등을 사용하여 브라우저 기반의 인터페이스를 제공하는 방식이다. 현재 인터넷/인트라넷에서 가장 널리 사용되는 방식이지만 다음과 같은 몇가지 한계를 가지고 있다. 즉, 브라우저 기반 인터페이스에서 사용되는, 데이터를 먼저 입력하고 페이지를 리로드하는 방식은 상호작용(interactivity) 측면에서 근본적인 제약을 가진다. 이를 극복하기 위하여 자바애플릿(Java applet)이나 액티브엑스(ActiveX)등의 방법이 보조적으로 사용되지만 호환성, 보안성 등에서 여전히 문제가 있다.
또한, 브라우저 기반으로 보다 다양한 인터페이스를 제공하기 위해 HTML(HyperText Markup Language)에 계속 새로운 기능이 추가되고 새 버전이 발표되고 있으나 오래된 버전의 브라우저도 계속 지원해야 한다는 문제가 있다. 더욱이, 최근의 브라우저는 매우 복잡한 소프트웨어로서 다양한 플랫폼에 포팅되기가 어렵다. 최신 사양을 만족하고 다양한 부가 기능을 갖는 브라우저는 그 크기가 무척 크기 때문에 많은 양의 메모리를 필요로 한다.
(3) X11: 유닉스에서 널리 사용되는 GUI 환경인 X11은 애초부터 서버-클라이언트 환경에 적합하도록(network transparent) 설계되었기 때문에 전용 단말장치인 엑스 터미날에서 여러 서버 컴퓨터의 응용 프로그램을 수행하는 것이 가능하다. WAN(Wide Area Network)에서 사용할 때에는 네트워크 지연(network latency)와 대역에 제약을 많이 받으며 GUI의 여러 층 중 상당히 많은 부분이 클라이언트에서 수행되므로 버전에 따른 호환성 문제가 여전히 존재한다.
(4) 독립 컴퓨터 구조(ICA: Independent Computing Architecture)
미 시트릭스(Citrix)사의 기술로서 여러 사용자의 응용 프로그램을 동시에 가상 화면에서 수행할 수 있도록 특별히 개조된 윈도우스 NT를 서버로 하여 그 화면을 단말에 그대로 전송하고 단말에서의 사용자 입력을 다시 서버로 전송하는 방식이다. 단말기는 일반 PC의 소프트웨어이거나 전용 하드웨어를 사용한다. 현재 비교적 널리 사용되고 있으나 사용할 수 있는 소프트웨어가 윈도우스 소프트웨어 중 일부에 국한되며 서버의 확장성(scalability)에 문제가 있다.
이와 같은 종래의 씬 클라이언트 방식에 더하여, 최근에는 휴대전화나PDA(Personal Digital Assistance)등 휴대용 장치(Mobile Platform)가 무선 인터넷으로 연결되면서 씬 클라이언트로 사용될 수 있게 되었다. 이러한 휴대용 장치들은 CPU 성능이나 메모리 양이 제한적이고 하드디스크가 없기 때문에 씬 클라이언트 방식에 적합하다고 볼 수 있으나 반면 데스크탑 씬 클라이언트와 비교할 때 여러가지 제약을 갖고 있다. 우선 휴대용 장치는 화면의 크기가 작고 키보드 입력이 불편하다. 경우에 따라서는 마우스등 포인팅 디바이스가 없는 경우(휴대전화의 경우)도 있다. 또한, 화면이 흑백(B/W)이거나 그레이 레벨인 경우가 많고, 네트웍 대역폭이 작고 지연이 크다.
현재 이동장치(mobile platform)에서 씬 클라이언트로 기대되고 있는 방식은 크게 WAP/i-Mode등의 브라우저 방식과 자바 소형판(Java Micro Edition 또는 KVM), GVM(Game Virtual Machine)등 가상머신(virtual machine) 방식이 있다. 이 중 브라우저 방식은 앞서 언급한 브라우저 방식 고유의 인터페이스상의 제약을 가지고 있으며, 휴대전화 등의 경우 특히 한번 사용자에게 기기가 지급되고 나면 소프트웨어의 업그레이드가 힘들기 때문에 버전에 따른 호환성 문제가 있다. 또 휴대전화나 PDA등은 메모리 양이 매우 작고 API (Application Programming Interface)가 표준적이지 않기 때문에 다양한 기능을 갖는 브라우저를 개발하는 것이 용이하지 않다는 문제가 있다.
KVM은 JVM(Java Virtual Machine)의 일종으로서 휴대장치의 여러 제약을 고려하여 만든 가상머신이다. 자바로 작성된 프로그램을 다운로드하여 오프라인 상태에서도 수행할 수 있다는 점이 가장 큰 장점이지만 속도가 느리고 사용할 수 있는 기능이 매우 제한적이라는 단점이 있으며 표준 자바와 비교할 때 호환성이 많이 떨어져서 자바의 가장 큰 장점인 2진 호환성(binary compatibility)이 큰 의미가 없게 된다. 또한, GVM은 게임 전용 가상 머신으로서 다양한 응용 프로그램을 수행하는데 필요한 복잡한 데이터 구조를 사용하지 못하는 등의 여러가지 기술적 제약을 가지고 있다.
이와 같은 종래의 씬 클라이언트 운용 방식은 단말기에서도 어느정도의 연산이 수행되어야 하므로 클라이언트측이 단순해지는데 한계가 있었다. 또한, 씬 클라이언트의 기능이 단순해질수록 서버에서 여러개의 단말기를 지원하는 데에 상당한 부하가 걸리고 클라이언트와 서버간의 통신량도 증가한다는 문제점을 안고 있었다.
따라서 본 발명은 단순한 입출력만을 처리하도록 클라이언트 단말기를 단순화하는 한편, 하나의 서버 컴퓨터에서 보다 많은 수의 사용자 응용 소프트웨어를 동시에 동작시킬 수 있도록 하여 일정한 수의 사용자를 위해 필요한 서버 컴퓨터의 수와 용량을 줄이기 위한 것이다.
즉, 본 발명은 여러 사용자의 서로 다른 응용 소프트웨어를 동시에 동작시켜도 서버에 큰 부하가 걸리지 않도록 하는 서버의 구성과, 서버와 클라이언트간 통신량을 최소화하는 기술을 제공하기 위한 것이다. 또한 사용자와의 우수한 상호작용(interactivity)를 위해서는 사용자의 입력으로부터 서버를 통한 출력까지의 시간 지연을 최소화기 위한 것이다.
도 1은 본 발명에 따른 휴대용 장치가 사용되는 환경을 도시한 도면.
도 2는 본 발명에 따른 휴대용 장치의 내부 블록도.
도 3은 본 발명에 따른 서버의 동작 화면예.
도 4는 본 발명에 따른 서버의 프로그램 구조도.
도 5는 본 발명에서 그래픽 데이터 생성 및 전송과정을 도시한 도면.
<도면의 주요 부분에 대한 부호의 설명>
10, 20, 30 : 클라이언트
50 : 서버
220 : 영상복원부
230 : 오프스크린 버퍼
410 : 자바 가상 머신
420a : 세션 관리부
420b : 응용 프로그램 관리부
420c : 영상압축 라이브러리
420d : AWT 경량 컴포넌트 라이브러리(Lightweight Component Library)
본 발명에 일면에 따르면, 다수의 클라이언트가 접속할 수 있는 서버 장치에 있어서,
하나의 자바 가상 머신과,
상기 하나의 자바 가상 머신에 의해 동작하는 다수의 클라이언트 세션을 포함하고
각 세션은 각 클라이언트에 해당하는 하나 이상의 응용 프로그램을 수행하는 서버 장치가 제공된다.
본 발명의 다른 일면에 따르면, 하나의 자바 가상 머신과, 상기 하나의 자바 가상 머신에 의해 동작하는 하나 이상의 클라이언트 세션을 포함하는 서버 장치에 접속될 수 있는 클라이언트 장치에 있어서,
상기 서버와 통신하기 위한 수단과,
사용자의 입력을 받아들이기 위한 수단과,
상기 서버로부터 제공되는 영상을 디스플레이하기 위한 수단을 포함하고,
상기 세션에서 하나 이상의 응용 프로그램을 수행하도록 지시하는 사용자 입력을 입력받아 이를 서버로 전송하는 클라이언트 장치가 제공된다.
이하에서는 도면을 첨부 참조하여 본발명의 일실시예를 상세히 설명하기로 한다.
도 1에 도시된 바와 같이, 본 발명의 구성 요소는 크게 클라이언트(10, 20, 30)와 서버(50)로 나뉜다. 클라이언트는 사용자의 입력을 받아 서버(50)에 전달하고 서버의 출력을 화면이나 소리로 사용자에게 전달하는 장치로서 기존의 PC(10)에서 동작하는 소프트웨어, 웹 브라우저에서 동작하는 애플릿, PDA(20)용 소프트웨어, 휴대폰(30) 등에 내장된 소프트웨어 혹은 전용 단말 장치등의 형태를 가질 수 있다. 서버(50)는 JVM(자바 가상 머신)이 동작하는 일반적인 서버용 컴퓨터이다. 클라이언트와 서버는 TCP/IP등 1:1 통신이 가능한 임의의 네트워크(40)에 의해 연결된다.
도 2는 본 발명에 따른 씬 클라이언트의 구성을 도시한 도면이다. 스크린(210)은 일반적인 비트맵(bitmap) 디스플레이 장치이다. 키보드(240)는 일반적인 PC의 키보드일 수도 있고 PDA에서 사용되는 펜에 의한 문자 입력 장치이거나 혹은 휴대전화에서처럼 제한된 수의 키로 이루어져 있을 수도 있다. 포인팅 장치(250)는 마우스, 펜 등의 위치를 입력할 수 있는 장치이다. 키보드(240)와 포인팅 장치(250)에 의해 사용자 입력이 감지되면 이는 클라이언트의 송수신부(260)를 거쳐 네트워크상에서 서버측으로 전송된다. 영상 복원부(220)는 서버측에서 전송되는 압축된 영상을 화면에 표시하기 위한 장치 혹은 소프트웨어로서 화면의 깜박거림을 줄이거나 압축 효율을 향상시키기 위하여 오프스크린 버퍼(230)를 사용할 수 있다. 특정한 종류의 그래픽 연산은 이미지가 아닌 연산 코드(operation code)의 형태로 서버측으로부터 전달되어 스크린(210)이나 오프스크린 버퍼(230)에 이 연산의 결과가 적용될 수 있다.
송수신부(260)는 키보드(240) 또는 포인팅 장치(250)로부터의 사용자 입력을 서버측으로 전송하고, 서버측으로부터 화면 정보를 수신하기 위한 것으로, 유무선모뎀 등을 포함할 수 있다.
도 3은 서버 컴퓨터의 화면의 일례를 도시한 도면이다. 여러개의 클라이언트가 동시에 서버에 연결되어 있을 때, 서버의 화면은 도 3에 도시된 바와 같이 각 클라이언트의 화면을 모두 표시할 수 있다.
도 4는 서버 컴퓨터상에서 동작하는 응용서버 소프트웨어의 구성을 나타낸다. 서버소프트웨어는 하나의 JVM(410)에 의해 동작한다. 새로운 클라이언트가 접속을 하면 사용자 세션이 새로 생성된다. 하나의 사용자 세션 내에서 복수개의 사용자 응용 소프트웨어(440a, 440b 또는 440c, 440d)가 구동될 수 있다. 클라이언트측의 화면을 갱신하기 위하여, 이 응용 소프트웨어의 화면 출력을 가로채어서, 그래픽 연산 코드 혹은 결과 영상의 압축된 데이타를 클라이언트에 전송한다. 클라이언트로부터 전달되는 사용자 입력은 마치 사용자가 서버 컴퓨터의 콘솔에서 직접 키보드와 마우스등을 사용하여 입력한 것처럼 시스템의 이벤트 큐(event queue)를 거쳐 사용자 응용 프로그램(440)에 전달된다.
사용자 세션의 현상태(state)는 클라이언트와 서버간의 연결이 종료될 때 서버측의 DB나 파일 시스템 등에 저장되었다가 나중에 다시 연결이 재개되었을 때 로드될 수 있다. 이와 같이 함으로써, 클라이언트측에서는 마음대로 기기를 켜고 꺼도 항상 마지막 작업하던 상태에서 작업을 개시할 수 있다.
이하에서는 도 4에 도시된 서버 소프트웨어에 대해 보다 상세히 설명하기로 한다.
본 발명에 따른 서버 소프트웨어에서는 서로 다른 클라이언트가 사용하는 응용프로그램간의 영향을 최소화하기 위하여 이벤트 처리를 위한 쓰레드(thread)와 이벤트 큐는 각 사용자 세션마다 별도로 할당된다. 이는 종래 기술에서 이벤트 쓰레드와 큐가 일반적으로는 JVM 당 하나만 있는 것과 상이하다.
세션 관리부(420a)는 새로운 클라이언트가 접속하면 새로운 세션을 생성하고, 만일 클라이언트로부터의 통신이 어느정도 시간 이상 없으면, 클라이언트와의 접속이 중단된 것으로 판단하여, 해당 세션을 삭제한다.
응용프로그램 관리부(420b)는 본발명의 클라이언트-서버 장치에서 실행되는 응용 프로그램들의 리스트를 포함한다. 본 발명의 일실시예에서는 사용자에 따라 서로 다른 응용프로그램에 접근이 가능하도록 할 수 있다. 예를 들어 사용자를 유료 사용자와 무료 사용자로 나누어 유료 사용자만이 다양한 종류의 응용프로그램을 사용할 수 있고, 무료 사용자는 시험용의 몇가지 응용프로그램만 사용할 수 있도록 하는 것이 가능하다.
영상압축 라이브러리(420c)는 후술하는 바와 같이, 클라이언트측에 디스플레이될 영상 데이터를 압축하는데 사용되는 소프트웨어 컴포넌트들을 포함한다.
AWT 경량 컴포넌트 라이브러리(420d)는 버튼, 텍스트 필드, 스크롤 바 등의 경량 컴포넌트들의 세트로서 자바의 표준 라이브러리에 있는 것이 아닌 본발명의 환경에 맞도록 구현된 것이다.
클라이언트가 도 4에 도시된 세션 관리부(420a)에 접속하면 새로운 세션이 생성된다. 각 세션별로 ZAppletContext 객체(460)가 하나씩 생성된다. 각 ZAppletContext는 이벤트 큐, 클라이언트로부터의 입력을 처리하기 위한쓰레드(thread), GUI 이벤트를 처리하는 쓰레드(thread), 클라이언트 스크린 버퍼 및 오프스크린 버퍼 등을 포함한다. 이하에서는 그 각각에 대해 상세히 살펴보겠다.
이벤트 큐 : 일반적인 자바 응용프로그램은 JVM 전체에 하나의 이벤트 큐를 가지지만 본 발명의 서버에서는 각 사용자의 프로그램들이 독립적으로 동작할 수 있도록 각 세션별로 이벤트 큐를 가진다.
클라이언트로부터의 입력을 처리하는 쓰레드(thread) : 클라이언트의 키보드 및 포인팅 디바이스로부터의 이벤트 입력을 받아 이벤트 큐에 넣는 역할을 한다.
GUI 이벤트를 처리하는 쓰레드(thread) : 이벤트 큐(event queue)에 새로운 이벤트가 들어오면 응용 프로그램에 의해 미리 등록된 작업을 수행한다.
클라이언트 스크린 버퍼(Client screen buffer, 550) : 클라이언트의 마지막 화면 내용을 가지는 버퍼. 새로이 디스플레이될 화면을 압축하여 전송할 때 이전 화면과 차분을 계산하기 위해 사용된다.
오프스크린 버퍼(540) : 응용 프로그램 화면의 복사본을 갖는다. 일반적으로는 오프스크린 버퍼는 화면의 깜박임을 방지하기 위한 이중 버퍼링을 위해 사용되지만 본 발명의 서버에서는 영상 데이타를 직접 액세스하기 위해 사용된다.
클라이언트가 서버에 접속할 때 클라이언트는 클라이언트 디바이스의 화면 크기에 관한 정보를 서버 측으로 보내고, 클라이언트 스크린 버퍼(550)와 오프스크린 버퍼(540)의 크기는 이 정보에 의해 클라이언트 디바이스의 화면 크기와 같도록 정해진다. 마찬가지로, 클라이언트 스크린 버퍼와 오프스크린 버퍼의 깊이(depth,화소당 비트)도 클라이언트 디바이스의 스크린 깊이(screen depth)와 동일하도록 정해진다.
도 4에 도시된 바와 같이, 응용 프로그램은 자바애플릿의 형태를 취하지만 일반적인 애플릿이 상속하는 애플릿 클래스 대신 본 발명에서 정의된 지애플릿(ZApplet, 450) 클래스를 상속한다. 지애플릿은 애플릿의 getGraphics() 함수를 오버라이드(override)하여 응용 프로그램의 모든 그래픽 연산이 지그래픽스(ZGraphics) 객체(도 5의 520)를 통해 이루어지도록 하는 것이다. 클라이언트로부터 입력에 의해 실행되는 각 응용 프로그램은 지애플릿 클래스에서 상속(inherit)된 새로운 클래스로서 구현된다.
도 5는 응용 프로그램의 동작에 따른 화면 정보의 갱신 및 전송 과정을 도시한 도면이다. 먼저, 응용 프로그램에서 소정의 동작의 결과 화면이 갱신되어야 하는 경우, 지그래픽스(ZGraphics) 객체(520)를 통해 그래픽 연산을 행한다(1). 다음단계에서는 그래픽 연산결과가 서버의 실제 윈도우(physical window, 530)에 그려지고(2) 또한, 오프스크린 버퍼(540)에 그려진다(3).
본 발명에서는 화면의 갱신을 위해 클라이언트로 전달될 데이터의 양을 최소화하기 위하여 다음에 설명하는 것과 같이, 연산 코드와 차분 영상 데이터를 동시에 전송하는 방법을 사용한다. 즉, 그래픽 연산 중 파라미터의 양은 적지만 화면의 변화는 많은 연산, 예를 들어 화면의 스크롤 중 비트맵의 블록카피와 같은 연산은 클라이언트 스크린 버퍼(550)에 적용되고(4) 동시에 클라이언트에, 연산 코드의 형태로 전달된다. 이때 연산 코드는 매우 적은 양의 데이타로 표현될 수 있음은주지의 사실이다.
응용 프로그램의 화면 갱신 과정이 완료되면 이때까지의 오프스크린 버퍼와 클라이언트 스크린 버퍼의 차분을 구한다(5). 이 차분을 압축하여, 상기 연산 코드와 함께 클라이언트에 전송한다(6). 차분은 영상압축부(560)에서 다양한 공지의 영상 압축 방식 또는 부호화 방식을 사용하여 압축된다.
또는 본 발명의 다른 실시예에서는 차분이 아닌 원영상을 클라이언트측으로 전송하거나, 차분 또는 원영상을 선택적으로 압축하여 클라이언트에 전송할 수도 있다. 이때, 차분과 원영상중 어느쪽을 보낼지의 기준은 두가지를 모두 압축해 보고, 효율이 좋은 쪽을 보내도록 할 수 있다.
응용 프로그램에서 이를 판단하여 ZAppletContext에 알려주도록 하는 것도 가능하다.
클라이언트로의 전송이 완료되면, 오프스크린 버퍼의 내용을 클라이언트 스크린 버퍼로 복사하여(7), 클라이언트 스크린 버퍼의 내용을 최근의 데이터로 갱신한다.
실제 윈도우(Physical window, 530)는 모니터링 등에 이용되지만 클라이언트의 동작에 반드시 필요하지는 않다. 따라서 생략될 수 있고 동시 접속 가능한 클라이언트의 수가 실제 윈도우의 크기에 의해 제약을 받지 않는다.
다시 도 2로 돌아가서, 클라이언트 측에서 화면이 갱신되는 과정은 다음과 같다. 클라이언트는 연산 코드와 압축된 차분영상 정보를 송수신부(도시되지 않음)를 통해 서버로부터 수신한다. 클라이언트 측의 영상 복원부(220)에서는 압축된 영상 정보를 복원한다. 또한, 클라이언트측의 비디오 메모리(도시되지 않음)에 저장되어 있는 이전 영상 정보에 연산 코드에 해당하는 그래픽 연산을 수행한다. 그후, 복원한 차분 영상을 그래픽 연산이 수행된 후의 영상 정보에 가산하여 디스플레이한다. 혹은 깜박임을 방지하기 위해 위의 과정을 별도의 오프스크린 버퍼(도 2, 230)에 적용한 후 한꺼번에 비디오 메모리에 복사할 수도 있다.
도 5로 돌아가서, 본 발명에 따른 서버에서는 ZGraphics 객체(520)를 통해 모든 그래픽 연산이 이루어지므로 ZGraphics 객체(520)는 화면의 변화된 영역의 경계를 알 수 있다. 이 정보를 이용하여 차분을 구하고 클라이언트에 전송하는 화면의 영역을 제한할 수 있다.
또, 일반적인 GUI프로그램을 작성하는 방법에 있어서 화면의 변화가 없는 부분까지도 매번 새로 그리도록 하는 경우가 흔하다. 이를 방지하기 위하여 실제 윈도우(530)와 오프스크린 버퍼(540)의 내용을 비교하여 변화된 영역만을 구하도록 할 수 있다.
GUI 컴포넌트 (버튼, 텍스트 필드 등의 경량 컴포넌트)은 자바의 표준 라이브러리에 있는 것이 아닌 본발명의 환경에 맞도록 구현된 것을 사용한다. 이 컴포넌트들은 클라이언트 장치의 화면 해상도나 깊이(depth)에 따라 적절한 형태로 디스플레이될 수 있다. 예를 들어 흑백 화면의 경우 버튼의 테두리를 간단한 선으로 나타내지만 해상도도 높고 색도 지원되는 클라이언트의 경우 입체감을 표시하는 등으로 다르게 디스플레이될 수 있다. 이러한 디스플레이의 적응은 본 발명의 서버의 실제 스크린과는 관계없이 각 세션별로 클라이언트 장치의 스크린에 따라 이루어진다.
본 발명의 서버-클라이언트 시스템에서는, HTTP의 쿠키(cookie)와 유사한 방법으로 서버에서 클라이언트에 적은 양의 데이타를 보내 저장토록 하고 다음 번 접속시 다시 전송 받은 것이 가능하다. 이와 같은 정보는 시용자 아이디나 간단한 정보의 저장의 용도로 사용될 수 있다.
또한, 지금까지는 클라이언트 장치가 화면만 포함하는 경우에 대해 설명하였으나, 사운드 기능도 있는 경우 서버의 응용 프로그램에서 클라이언트 디바이스로 사운드 데이타를 보내 출력하게 하는 것이 가능하다. 이 경우, 클라이언트 디바이스는 예를 들어 MP3 플레이어 등으로 동작할 수 있을 것이다. 이 외에는 GUI의 오디오 피드백 예를 들어 잘못된 선택을 했을 때 삑 소리가 나게 하는 등의 용도에도 이용될 수 있다.
그래픽 연산의 종류나 해당 GUI 컴포넌트의 종류에 따라 다른 압축 알고리듬을 선택하도록 할 수 있다. 이러한 기능에 의해 예를 들어 동영상을 클라이언트에 디스플레이하기 위해서는 MPEG4등의 손실압축기법(lossy compression)을 사용하여 비디오 스트리밍(video streaming)을 효율적으로 할 수 있다.
또한, 본 명세서에서는 하나의 클라이언트당 하나의 세션이 생성되는 것으로 설명하였으나, 하나의 세션에 둘 이상의 클라이언트가 접속되도록 하는 것도 가능하다. 이 경우 들 이상의 클라이언트가 원격 공유 작업을 할 수도 있다.
본 발명은 휴대용 장치에서 다양한 응용 프로그램을 수행할 수 있는 것을 목적으로 개발된 씬 클라이언트 기술이다. 본 발명의 서버는 자바 응용 프로그램의 형태로서 JVM을 탑재한 임의의 서버 컴퓨터에서 실행될 수 있다. 본 발명의 클라이언트는 그래픽 화면 출력과 키보드 및 포인팅 장치를 가진 여러 휴대용 장치에 포팅될 수 있다. 
본 발명과 가장 유사한 기술은 시트릭스(Citrix)사의 ICA(Independent Computing Architecture)와 AT&T사의 VNC등이 있다. 이들 종래기술과 본 발명의 큰 차이점 중 하나는, 본 발명의 서버에서는 여러 사용자의 여러 응용 소프트웨어가 하나의 JVM 상에서 동작한다는 점이다. 기존의 서버에서는 각 응용 소프트웨어를 별도의 프로세스로 동작시켰기 때문에 서버 컴퓨터의 자원을 많이 차지하였으나 본 발명에서는 동일 JVM상에서 여러 사용자의 응용 소프트웨어가 동작하므로 자바에서 메모리를 많이 차지하는 클래스 파일 및 클래스 파일의 JIT (Just-in Time) 컴파일된 코드 등이 공유되어 다수의 사용자가 하나의 서버를 사용할 때 서버의 부하를 줄일 수 있다.
또한, ICA는 운영체계 레벨에서 그래픽 연산을 가로채므로 특수한 운영 체계가 필요하지만 본 발명에서는 자바 클래스 라이브러리 수준에서 이루어지므로 자바가 지원되는 모든 일반적인 운영체계를 사용할 수 있다.

Claims (4)

  1. 다수의 클라이언트가 접속할 수 있는 서버 장치에 있어서,
    하나의 자바 가상 머신과,
    상기 하나의 자바 가상 머신에 의해 동작하는 다수의 클라이언트 세션을 포함하고
    각 세션은 각 클라이언트에 해당하는 하나 이상의 응용 프로그램을 수행하는 서버 장치.
  2. 제1항에 있어서, 상기 각 세션은 상기 각 클라이언트에, 해당 클라이언트에 디스플레이될 영상정보를 제공하는 서버 장치.
  3. 제1항에 있어서, 상기 서버는 각 클라이언트에 디스플레이될 영상정보를 제공하는 수단을 포함하고, 상기 영상 정보는 연산 코드(operation code)와 차분영상정보를 포함하는 서버 장치.
  4. 하나의 자바 가상 머신과, 상기 하나의 자바 가상 머신에 의해 동작하는 하나 이상의 클라이언트 세션을 포함하는 서버 장치에 접속될 수 있는 클라이언트 장치에 있어서,
    상기 서버와 통신하기 위한 수단과,
    사용자의 입력을 받아들이기 위한 수단과,
    상기 서버로부터 제공되는 영상을 디스플레이하기 위한 수단을 포함하고,
    상기 세션에서 하나 이상의 응용 프로그램을 수행하도록 지시하는 사용자 입력을 입력받아 이를 서버로 전송하는 클라이언트 장치.
KR1020000064551A 2000-11-01 2000-11-01 서버-씬 클라이언트 시스템 KR20020034347A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020000064551A KR20020034347A (ko) 2000-11-01 2000-11-01 서버-씬 클라이언트 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020000064551A KR20020034347A (ko) 2000-11-01 2000-11-01 서버-씬 클라이언트 시스템

Publications (1)

Publication Number Publication Date
KR20020034347A true KR20020034347A (ko) 2002-05-09

Family

ID=19696596

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020000064551A KR20020034347A (ko) 2000-11-01 2000-11-01 서버-씬 클라이언트 시스템

Country Status (1)

Country Link
KR (1) KR20020034347A (ko)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100422679B1 (ko) * 2000-12-18 2004-03-12 주식회사 파인디지털 혼합 컨텐츠 서버-클라이언트 시스템
KR20040033926A (ko) * 2002-10-16 2004-04-28 김인규 윈도우 기반 터미널용 키보드
KR100593468B1 (ko) * 2002-09-27 2006-06-26 주식회사 케이티 공중망에서의 네트워킹 pc 서비스 장치 및 제공 방법
KR100657317B1 (ko) * 2005-06-24 2006-12-14 삼성전자주식회사 클라이언트 방식을 변경하는 방법, 단말기 및 시스템
KR100739795B1 (ko) 2006-02-14 2007-07-13 삼성전자주식회사 리모트 유저 인터페이스 프로토콜 기반 네트워크 시스템 및그 방법과 그 방법을 수행하는 프로그램이 기록된 기록매체
WO2012092257A3 (en) * 2010-12-28 2012-12-06 Microsoft Corporation Virtualizing embedded devices
WO2013180729A1 (en) * 2012-05-31 2013-12-05 Intel Corporation Rendering multiple remote graphics applications
US9705964B2 (en) 2012-05-31 2017-07-11 Intel Corporation Rendering multiple remote graphics applications

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100422679B1 (ko) * 2000-12-18 2004-03-12 주식회사 파인디지털 혼합 컨텐츠 서버-클라이언트 시스템
KR100593468B1 (ko) * 2002-09-27 2006-06-26 주식회사 케이티 공중망에서의 네트워킹 pc 서비스 장치 및 제공 방법
KR20040033926A (ko) * 2002-10-16 2004-04-28 김인규 윈도우 기반 터미널용 키보드
KR100657317B1 (ko) * 2005-06-24 2006-12-14 삼성전자주식회사 클라이언트 방식을 변경하는 방법, 단말기 및 시스템
KR100739795B1 (ko) 2006-02-14 2007-07-13 삼성전자주식회사 리모트 유저 인터페이스 프로토콜 기반 네트워크 시스템 및그 방법과 그 방법을 수행하는 프로그램이 기록된 기록매체
WO2012092257A3 (en) * 2010-12-28 2012-12-06 Microsoft Corporation Virtualizing embedded devices
US9043754B2 (en) 2010-12-28 2015-05-26 Microsoft Corporation Virtualizing embedded devices
WO2013180729A1 (en) * 2012-05-31 2013-12-05 Intel Corporation Rendering multiple remote graphics applications
US9705964B2 (en) 2012-05-31 2017-07-11 Intel Corporation Rendering multiple remote graphics applications

Similar Documents

Publication Publication Date Title
US5485570A (en) Display station controller
KR101413126B1 (ko) 원격 상호작용에 응답한 비디오 콘텐츠의 전송 아키텍처
US10353718B2 (en) Providing access to a remote application via a web client
US8677022B2 (en) Method and apparatus for updating a graphical display in a distributed processing environment using compression
US8904012B2 (en) Client-server input method editor architecture
US20030200254A1 (en) Methods and techniques for delivering rich java applications over thin-wire connections with high performance and scalability
WO2013043716A2 (en) Remote process execution management
KR20090106454A (ko) 상태기반 브라우징
CN114816585B (zh) 一种跨运行环境的远程输入重定向方法
US20040049530A1 (en) Distributed computer system using a graphical user interface toolkit
US20130342467A1 (en) Dynamically updating a smart physical keyboard
US20030182469A1 (en) Distributed computer system using a graphical user interface toolkit
KR20020034347A (ko) 서버-씬 클라이언트 시스템
KR100422679B1 (ko) 혼합 컨텐츠 서버-클라이언트 시스템
KR20030012064A (ko) 서버-씬 클라이언트 구성용 분산형 음성 인식 시스템
Kim et al. An application streaming service for mobile handheld devices
Lok et al. A graphical user interface toolkit approach to thin-client computing
Revett et al. Network computing: a tutorial review
US20040044728A1 (en) Application program sharing systems, processing devices and application program sharing methods
KR20040065833A (ko) 가상장치를 통한 서버 무선단말기간의 애플릿의 실행 이미지 전송방식에 관한 방법 및 시스템
Patel et al. Mobile virtual network computing system
Grisby A Distributed Adaptive Window System
Wang et al. A portable AWT/Swing architecture for Java game development
Tavares et al. A remote display system for Java-based mobile applications
Liu Principle and Practice of Distributing Low and High Resolution Display Content from One Computer to Many Computers in Stand-alone or Display Wall Configurations

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E601 Decision to refuse application