KR102067276B1 - 어플리케이션 실행 방법 및 그 장치 - Google Patents

어플리케이션 실행 방법 및 그 장치 Download PDF

Info

Publication number
KR102067276B1
KR102067276B1 KR1020130062112A KR20130062112A KR102067276B1 KR 102067276 B1 KR102067276 B1 KR 102067276B1 KR 1020130062112 A KR1020130062112 A KR 1020130062112A KR 20130062112 A KR20130062112 A KR 20130062112A KR 102067276 B1 KR102067276 B1 KR 102067276B1
Authority
KR
South Korea
Prior art keywords
application
terminal
virtualization
server
virtual
Prior art date
Application number
KR1020130062112A
Other languages
English (en)
Other versions
KR20140140986A (ko
Inventor
박호연
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Priority to KR1020130062112A priority Critical patent/KR102067276B1/ko
Priority to US14/291,533 priority patent/US10073688B2/en
Publication of KR20140140986A publication Critical patent/KR20140140986A/ko
Application granted granted Critical
Publication of KR102067276B1 publication Critical patent/KR102067276B1/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/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/549Remote execution
    • 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

Abstract

단말에서 어플리케이션 서버가 제공하는 어플리케이션을 실행하는 방법에 있어서, 상기 어플리케이션 서버로부터 상기 어플리케이션에 대한 실행 환경 정보를 수신하는 단계; 상기 실행 환경 정보를 참조하여 가상 어플리케이션을 실행할지 여부를 결정하는 단계; 상기 결정에 기초하여 어플리케이션 가상화를 수행하는 가상화 서버에게 가상화를 요청하기 위한 메뉴를 디스플레이하는 단계; 및 상기 메뉴를 통한 사용자 입력에 기초하여 상기 가상화 서버에게 상기 어플리케이션에 대한 가상화를 요청하는 단계를 포함하는 것을 특징으로 하는 본 발명의 일 실시예에 따른 어플리케이션을 실행하는 방법이 개시된다.

Description

어플리케이션 실행 방법 및 그 장치 {APPARATUS AND METHOD FOR EXECUTING APPLICATION}
본 발명은 단말에서 어플리케이션을 실행하는 방법 및 장치에 관한 것이다. 보다 구체적으로, 본 발명은 단말에서 어플리케이션이 실행 가능한지 여부를 기초로 가상 어플리케이션을 실행하는 방법 및 그 장치에 관한 것이다.
현재 모바일 장치나 TV 등 다양한 단말들은, 외부 어플리케이션 서버로부터 사용자가 원하는 어플리케이션을 다운로드 받아, 인스톨하여 사용할 수 있는 형태로 구성되어 있다. 또한, 단말과 서버간 통신 속도가 빠르게 발전하고 있으며, 단말에서 실행할 수 있는 어플리케이션의 종류가 늘어나고 있고, 그 기능 또한 다양해지고 있다.
따라서, 단말에서 리소스 부족, 하드웨어 성능 또는 소프트웨어 문제로 어플리케이션을 실행할 수 없는 경우 또한 증가하고 있다. 이러한 문제를 해결하기 위해, 서버에서 어플리케이션의 일부 또는 전부를 실행시키고 단말이 그 처리 결과를 수신하는 어플리케이션 가상화가 요구되고 있다.
단말이 임의의 어플리케이션을 실행할 수 없거나, 성능이 부족한 경우라도 단말에서 어플리케이션을 원활히 실행시키기 위한 방법 및 장치에 관한 것이다.
또한, 단말 상황, 어플리케이션 특성, 현재 네트워크 상태 등을 고려하여 어플리케이션 실행을 최적화하기 위한 방법 및 장치에 관한 것이다.
상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 본 발명의 제 1 측면은, 어플리케이션 서버로부터 상기 어플리케이션에 대한 실행 환경 정보를 수신하는 단계; 상기 실행 환경 정보를 참조하여 가상 어플리케이션을 실행할지 여부를 결정하는 단계; 상기 결정에 기초하여 어플리케이션 가상화를 수행하는 가상화 서버에게 가상화를 요청하기 위한 메뉴를 디스플레이하는 단계; 및 상기 메뉴를 통한 사용자 입력에 기초하여 상기 가상화 서버에게 상기 어플리케이션에 대한 가상화를 요청하는 단계를 포함하는 것을 특징으로 하는 단말에서 어플리케이션 서버가 제공하는 어플리케이션을 실행하는 방법을 제공할 수 있다.
또한, 상기 가상화 서버로부터 상기 가상화 서버에서 실행되는 어플리케이션의 실행 결과 화면을 구성하는 데이터를 수신하는 단계; 상기 데이터를 이용하여 상기 실행 결과 화면을 렌더링하는 단계를 더 포함할 수 있다.
또한, 상기 결정하는 단계는, 상기 단말에서 상기 어플리케이션이 실행 가능하지 않은 경우 가상 어플리케이션을 실행하고, 상기 단말에서 상기 어플리케이션이 실행 가능한 경우 상기 어플리케이션을 다운로드 하는 것으로 결정할 수 있다.
또한, 상기 결정하는 단계는, 상기 어플리케이션이 구동되는 플랫폼, 상기 어플리케이션을 구동하기 위한 하드웨어 또는 소프트웨어 구비 여부를 기초로 상기 단말에서 상기 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함할 수 있다.
또한, 상기 결정하는 단계는, 상기 단말의 리소스가 상기 어플리케이션을 수행하기에 적합한지 여부를 기초로 상기 단말에서 상기 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함할 수 있다.
또한, 상기 결정하는 단계는, 상기 단말의 가상 어플리케이션 실행을 위한 리소스 또는 상기 가상화 서버와의 통신을 위한 네트워크의 상태 중 적어도 하나에 기초하여 상기 단말에서 상기 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함할 수 있다.
또한, 본 발명의 제 2 측면은, 어플리케이션 가상화를 수행하는 가상화 서버가 단말로부터 어플리케이션 가상화 요청 메시지를 수신하는 단계; 상기 수신한 메시지를 참조하여 상기 단말에게 어플리케이션 가상화 서비스를 제공할 것인지 여부를 결정하는 단계; 및 상기 결정에 기초하여 상기 메시지가 가리키는 어플리케이션에 대한 가상화를 수행하는 단계를 포함하는 어플리케이션 가상화 방법을 제공할 수 있다.
또한, 상기 가상화를 수행하는 단계는 상기 가상화 서버가 상기 어플리케이션을 실행하는 단계; 및 상기 어플리케이션의 실행 결과 화면을 구성하는 데이터를 상기 단말로 송신하는 단계를 포함할 수 있다.
또한, 상기 어플리케이션 가상화 요청 메시지는 어플리케이션 정보, 어플리케이션 서버 정보, 단말 정보, 단말 사용자 정보 중 적어도 하나를 포함할 수 있다.
또한, 상기 단말로부터 수신하는 가상화 요청 메세지에 기초하여 어플리케이션 실행을 위한 가상 머신을 설정하는 단계를 더 포함할 수 있다.
또한, 상기 가상화를 수행하는 단계는, 상기 가상화 서버에 어플리케이션이 기 다운로드 되어 있는지 여부를 판단하는 단계; 및 상기 기 다운로드 되어 있는지에 대한 판단 결과에 기초하여 어플리케이션 서버로부터 상기 어플리케이션을 다운로드 받는 단계를 더 포함할 수 있다.
또한, 본 발명의 제 3 측면은, 네트워크와 통신하는 통신부; 상기 통신부를 통해 상기 어플리케이션 서버로부터 수신한 어플리케이션에 대한 실행 환경 정보를 참조하여 가상 어플리케이션을 실행할지 여부를 결정하는 가상 실행 결정부; 상기 결정에 기초하여 어플리케이션 가상화를 수행하는 가상화 서버에게 가상화를 요청하기 위한 메뉴를 상기 단말에 표시하는 표시부; 및 상기 메뉴를 통한 사용자 입력에 기초하여 상기 가상화 서버에게 상기 어플리케이션에 대한 가상화를 요청하는 가상 실행부를 포함하는 것을 특징으로 하는 어플리케이션을 실행하는 단말을 제공할 수 있다.
또한, 상기 가상 실행부는 상기 가상화 서버로부터 상기 가상화 서버에서 실행되는 어플리케이션의 실행 결과 화면을 구성하는 데이터를 수신하고, 상기 데이터를 이용하여 상기 실행 결과 화면을 렌더링하는 것을 더 포함할 수 있다.
또한, 상기 결정은, 상기 단말에서 상기 어플리케이션이 실행 가능하지 않은 경우 가상 어플리케이션을 실행하고, 상기 단말에서 상기 어플리케이션이 실행 가능한 경우 상기 어플리케이션을 다운로드 하는 것으로 결정하는 것을 포함할 수 있다.
또한, 상기 결정은, 상기 어플리케이션이 구동되는 플랫폼, 상기 어플리케이션을 구동하기 위한 하드웨어 또는 소프트웨어 구비 여부를 기초로 상기 단말에서 상기 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함할 수 있다.
또한, 상기 결정은, 상기 단말의 리소스가 상기 어플리케이션을 수행하기에 적합한지 여부를 기초로 상기 단말에서 상기 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함할 수 있다.
또한, 상기 결정은, 상기 단말의 가상 어플리케이션 실행을 위한 리소스 또는 상기 가상화 서버와의 통신을 위한 네트워크의 상태 중 적어도 하나에 기초하여 상기 단말에서 가상 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함할 수 있다.
또한, 본 발명의 제 4 측면은, 네트워크와 통신하는 통신부; 상기 통신부를 통해 단말로부터 어플리케이션 가상화 요청 메세지를 수신하고, 상기 수신한 메세지를 참조하여 상기 단말에게 어플리케이션 가상화 서비스를 제공할 것인지 여부를 결정하는 가상화 결정부; 및 상기 결정에 기초하여 상기 메시지가 가리키는 어플리케이션에 대한 가상화를 수행하는 가상화부를 포함하는 가상화 서버를 제공할 수 있다.
또한, 상기 가상화부는 상기 어플리케이션을 실행하고, 상기 실행되는 어플리케이션의 실행 결과 화면을 구성하는 데이터를 상기 단말로 송신하는 것을 포함할 수 있다.
또한, 상기 어플리케이션 가상화 요청 메시지는 어플리케이션 정보, 어플리케이션 서버 정보, 단말 정보, 단말 사용자 정보 중 적어도 하나를 포함할 수 있다.
또한, 상기 가상화부는 상기 단말로부터 수신하는 가상화 요청 메시지에 기초하여 어플리케이션 실행을 위한 가상 머신을 설정하는 것을 더 포함할 수 있다.
또한, 상기 가상화 서버에 어플리케이션이 기 다운로드 되어 있는지 여부를 판단 하고, 상기 기 다운로드 되어 있는지에 대한 판단결과에 기초하여 어플리케이션 서버로부터 상기 어플리케이션을 다운로드 받는 다운로드부를 더 포함할 수 있다.
또한, 본 발명의 제 5 측면은, 제 1 측면의 방법을 컴퓨터에서 실행시키기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체를 제공할 수 있다.
어플리케이션이 실행되는 플랫폼이 다르거나, 플랫폼 버전이 다른 경우 또는 가용 저장 공간, 단말의 CPU, 메모리, GPU 성능 등이 어플리케이션을 실행하기에 충분하지 않은 경우 등 어플리케이션을 실행할 수 없는 환경에서도 단말의 상황, 어플리케이션의 실행 정보, 네트워크 상황에 따라 어플리케이션 실행을 최적화할 수 있다.
도 1은 본 발명의 바람직한 일 실시예에 따른 어플리케이션 가상화 시스템의 개요도이다.
도 2a는 본 발명의 바람직한 일 실시예에 따른 단말(200)에서 가상 어플리케이션을 실행하는 방법 흐름도이다.
도 2b는 본 발명의 바람직한 일 실시예에 따른 가상화 서버(300)가 어플리케이션 가상화를 수행하는 방법 흐름도이다.
도 3는 본 발명의 바람직한 일 실시예에 따른 단말(200)과 가상화 서버(300)의 기능 블록도이다.
도 4는 본 발명의 바람직한 일 실시예에 따른 단말(200)에서 가상 어플리케이션을 실행하는 방법의 흐름도이다.
도 5a는 본 발명의 바람직한 일 실시예에 따른 단말(200)이 가상화 서버(300)에게 어플리케이션 가상화를 요청하기 위해 송신하는 가상화 요청 메시지의 일부이다.
도 5b는 본 발명의 바람직한 일 실시예에 따른 어플리케이션 가상화 요청 메시지를 XML 형태로 구성한 도면이다.
도 6는 본 발명의 바람직한 일 실시예에 따른 가상화 서버(300)가 어플리케이션 가상화를 수행하는 방법의 흐름도이다.
도 7은 본 발명의 바람직한 일 실시예에 따른 단말(200)에서 가상 어플리케이션을 실행하는 방법을 어플리케이션 서버(100), 단말(200), 가상화 서버(300)간 동작 흐름도로 예시한 도면이다.
도 8은 본 발명의 바람직한 일 실시예에 따른 단말(200)에서 가상 어플리케이션을 실행하는 방법을 어플리케이션 서버(100), 단말(200), 가상화 서버(300)간 동작 흐름도로 예시한 또 다른 도면이다.
도 9는 본 발명의 바람직한 일 실시예에 따른 단말(200)에서 가상 어플리케이션을 실행하는 방법을 어플리케이션 서버(100), 단말(200), 가상화 서버(300)간 동작 흐름도로 예시한 또 다른 도면이다.
도 10은 본 발명의 바람직한 일 실시예에 따른 가상화 서버(300)가 어플리케이션을 가상화하는 단계를 예시한 도면이다.
도 11a 내지 도 11d는 본 발명의 바람직한 일 실시예에 따른 어플리케이션 가상화 가능 여부에 따라 단말(200)에서 변화되는 화면 UI의 예시이다.
도 12a 내지 도 12d는 본 발명의 바람직한 일 실시예에 따른 어플리케이션 가상화 가능 여부에 따라 단말(200)에서 변화되는 또 다른 화면 UI의 예시이다.
아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.
명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
이하, 첨부된 도면을 참조하여 바람직한 실시예에 따른 본 발명을 상세히 설명하기로 한다.
본 발명의 바람직한 일 실시예에 따른, 어플리케이션 가상화란, 실제 어플리케이션을 단말에 다운로드하여 단말에서 전체 어플리케이션을 실행하는 것은 아니지만, 외부 기기의 리소스를 이용하여 어플리케이션의 전부 또는 일부를 실행하게 하고 그 처리 결과를 수신받아, 사용자에게 단말에서 전체 어플리케이션을 실행하는 것과 동일하거나 비슷한 효과를 제공하는 것을 말한다.
예를 들어, 가상화 서버가 어플리케이션을 실행하고, 실행 중 사용자에게 제공되어야 하는 이미지나 소리를 실시간으로 인코딩하여 스트리밍 형태로 변환할 수 있다. 가상화 서버는 변환된 스트리밍을 단말로 송신하고, 단말은 스트리밍 컨텐츠를 재생하여 가상 어플리케이션을 실행시킬 수 있다.
예를 들어, 어플리케이션이 동영상 컨텐츠인 경우, 동영상 컨텐츠의 해상도가 단말에서 재생할 수 있는 범위를 넘거나 단말의 리소스가 부족하여 재생이 불가능 할 수 있다. 이러한 경우, 서버가 동영상 컨텐츠를 수신하여 단말이 처리할 수 있는 해상도로 인코딩한 후 단말로 전송할 수 있다.
예를 들어, 단말의 웹 브라우저가 웹 페이지의 모든 부분을 렌더링하는 대신, 가상화 서버가 웹 페이지를 렌더링한 후 이미지화하여 단말로 전송할 수 있다.
예를 들어, 어플리케이션의 일부 중 리소스를 많이 필요로 하는 모듈을 서버에서 실행시킴으로써, 단말(200)은 어플리케이션 실행 중 RPC(remote procedure call)와 같은 방식으로 서버에 있는 모듈을 호출하여 처리 결과를 수신할 수 있다.
본 발명에서 실제 어플리케이션 또는 어플리케이션이란 어플리케이션 서버로부터 다운받아 실행하는 어플리케이션을 의미하며, 가상 어플리케이션이란 단말에서 실행되는 가상화된 어플리케이션을 의미한다.
본 발명에서 가상 어플리케이션을 실행한다는 의미는 실제 어플리케이션을 가상화하여 실행한다는 것을 의미한다.
도 1은 본 발명의 바람직한 일 실시예에 따른 어플리케이션 가상화 시스템의 개요도이다.
도 1에 도시된 바와 같이, 본 발명의 일 실시예에 따른 어플리케이션 가상화 시스템은 단말(200), 어플리케이션을 저장하고 있는 어플리케이션 서버(100) 및 어플리케이션을 가상화 하는 가상화 서버(300)를 포함한다.
단말(200)은 어플리케이션 서버(100)로부터 어플리케이션을 다운받아 어플리케이션을 실행할 수 있다. 그러나, 단말(200)의 하드웨어, 소프트웨어, 리소스 부족 등 여러 가지 문제로 단말에서 어플리케이션을 실행할 수 없는 경우, 단말(200)은 가상화 서버(300)에게 어플리케이션 가상화를 요청할 수 있다.
가상화 서버(300)는, 단말(200)이 요청하는 경우, 어플리케이션 서버(100)로부터 어플리케이션을 다운받아 어플리케이션을 실행하고, 실행되는 어플리케이션의 출력을 단말에게 실시간으로 전송한다.
단말(200)은 가상화 서버(300)로부터 어플리케이션 출력을 실시간으로 수신받아 어플리케이션을 가상적으로 실행할 수 있으며, 사용자의 조작 정보 또는 단말 상태 정보 등을 가상화 서버(300)로 전송할 수 있다.
단말(200)은 미디어 플레이어 기능을 갖는 컴퓨터, 미디어 플레이어 기능을 갖는 모바일 기기, 및 유무선 네트워크에 연결될 수 있는 TV와 같은 디바이스일 수 있다. 모바일 기기는 휴대폰, 스마트폰(SmartPhone), PDA(Personal Digital Assistant), PMP(Portable Multi-media Player), 및 네비게이션(Navigation) 디바이스와 같은 휴대용 기기일 수 있다.
단말(200)은 어플리케이션 서버(100) 또는 어플리케이션 가상화 서버(200)와 유선 또는 무선으로 연결되어 있으며, 소정 규격에 따른 유선 또는 무선 통신을 할 수 있다.
어플리케이션 서버(100)는 어플리케이션을 저장하고, 저장된 어플리케이션을 단말 또는 외부 기기로 송신하는 서버이며, 다수의 어플리케이션 서버의 집합을 의미할 수 있다. 어플리케이션 서버(100)는 어플리케이션뿐만 아니라 동영상, 오디오와 같은 컨텐츠를 저장하거나 웹 페이지를 저장하고 있는 서버일 수 있다.
어플리케이션 서버(100)는 각각의 어플리케이션에 대한 정보를 저장하고 있으며, 어플리케이션에 대한 정보만을 송신할 수 있다.
가상화 서버(300)는 어플리케이션 서버(100)에게 어플리케이션을 요청하고 어플리케이션 서버(100)로부터 어플리케이션을 수신할 수 있다. 또한, 가상화 서버(300)는 어플리케이션을 실행하고, 실행된 어플리케이션의 출력을 단말로 송신하여 단말(200)에서 가상 어플리케이션이 실행되도록 할 수 있다.
가상화 서버(300)는 각각의 기능을 하는 여러 개의 서버로 이루어진 시스템일 수 있다. 예를 들어, 가상화 서버(300)는 실질적으로 어플리케이션을 실행하고 실행결과를 단말에 전송하는 어플리케이션 실행 서버와, 단말(200)과 어플리케이션 실행 서버간의 정보 전달을 위한 백 앤드 서버로 나뉘어 질 수 있다.
도 2a는 본 발명의 바람직한 일 실시예에 따른 단말(200)에서 가상 어플리케이션을 실행하는 방법 흐름도이다.
S210 단계에서, 단말(200)은 어플리케이션 서버(100)로부터 어플리케이션에 대한 정보를 수신한다. S220 단계에서, 단말(200)은 어플리케이션에 대한 정보를 기초로 가상 어플리케이션을 실행할지 여부를 판단한다. 예를 들어, 단말(200)이 어플리케이션에 대한 정보를 기초로 어플리케이션 실행이 가능한지 여부를 판단한 결과, 어플리케이션 실행이 불가능하다고 판단한 경우, 가상 어플리케이션을 실행할지 여부를 판단한다. 가상 어플리케이션을 실행할지 여부에 대한 판단은 단말(200)에서 가상 어플리케이션이 실행 가능한지 여부에 기초하여 판단할 수 있다.
S230 단계에서, 단말(200)은 가상 어플리케이션을 실행할지 여부에 기초하여 가상화를 요청할 수 있는 메뉴를 단말(200)에 표시한다.
S240 단계에서, 단말(200)은 메뉴를 통한 사용자 입력에 기초하여 어플리케이션 가상화를 수행하는 가상화 서버에 어플리케이션 가상화를 요청한다. 예를 들어, 사용자가 어플리케이션 가상화를 요청할 수 있는 메뉴를 선택한 경우, 단말(200)은 가상화 서버(300)에 어플리케이션 가상화를 요청할 수 있다.
도 2b는 본 발명의 바람직한 일 실시예에 따른 가상화 서버(300)가 어플리케이션 가상화를 수행하는 방법 흐름도이다.
S310 단계에서, 가상화 서버(300)는 단말(200)로부터 어플리케이션 가상화 요청 메시지를 수신한다. S320 단계에서, 가상화 서버(300)는 수신한 가상화 요청 메시지에 기초하여 단말(200)에게 어플리케이션 가상화 서비스를 제공할 수 있는지 여부를 판단한다. S330 단계에서, 단말(200)에게 어플리케이션 가상화 서비스를 제공 할 수 있는 것으로 판단한 경우 가상화 서버(300)는 가상화를 수행한다.
도 3는 본 발명의 바람직한 일 실시예에 따른 단말(200)과 가상화 서버(300)의 기능 블록도이다.
도 3을 참조하면, 단말(200)은 표시부(250), 가상 실행 결정부(260), 가상 실행부(270), 통신부(280)로 구성될 수 있다.
통신부(280)는 가상 실행 결정부(260), 가상 실행부(270)에 의해 제어된다. 또한, 통신부(280)는 유선 또는 무선 네트워크를 통해 어플리케이션 서버(200), 가상화 서버(300)와 통신할 수 있다.
가상 실행 결정부(260)는 단말(200)에서 가상 어플리케이션을 실행할지 여부를 판단한다.
가상 실행 결정부(260)는 어플리케이션에 대한 정보와 단말의 소프트웨어, 하드웨어 사양 또는 리소스 상태를 기초로 사용자가 선택한 어플리케이션을 단말에서 실행할 수 있는지 여부를 판단할 수 있다.
또한, 가상 실행 결정부(260)는 가상화 서버(300)에게 어플리케이션 가상화 요청 메세지를 송신하고, 가상화 서버(300)로부터 어플리케이션 가상화 서비스를 제공 받을 수 있는지 여부에 대한 정보를 수신할 수 있다.
또한, 가상 실행 결정부(260)는 가상화 서버(300)로부터 수신받은 어플리케이션 가상화 서비스를 제공받을 수 있는지 여부와 단말의 리소스 상태, 가상 실행을 위한 소프트웨어 또는 네트워크 상태에 기초하여 단말에서 가상 어플리케이션을 실행 할 수 있는지 여부를 판단할 수 있다.
가상 실행부(270)는 가상화 서버(300)에게 어플리케이션 가상화를 요청하고, 가상화 서버(300)에서 실행되는 어플리케이션의 출력을 수신받아 데이터를 처리하고, 사용자에게 처리된 결과를 제공한다. 또한, 단말의 사용자 입력이나, 단말 상태와 같은 정보를 가상화 서버(300)에게 송신한다. 가상화 서버(300)에서 실행되는 어플리케이션의 출력은 어플리케이션의 실행 결과 화면을 구성하는 데이터 일 수 있다.
예를 들어, 서버에서 실행되는 어플리케이션의 출력이 스트리밍 형태로 전송 된 경우, 가상화 서버(300)로부터 동영상 스트리밍을 수신하여 재생할 수 있다. 가상 실행부(270)는 비디오 또는 오디오를 재생할 수 있으며, HTTP,RTSP/RTP 등과 같은 스트리밍 프로토콜에 따라 데이터를 처리할 수 있다.
또한, 가상 실행부(270)는 가상화 서버(300)로부터 진동이나, 알림음과 같은 동영상 스트리밍 외의 정보도 수신하여 단말 사용자에게 제공할 수 있다. 가상 실행부(270)는 사용자의 단말 조작이나, 배터리와 같은 단말 상태에 대한 정보를 가상화 서버(300)로 송신할 수 있다. 즉, 가상 실행부(270)가 OS로부터 이벤트를 받은 경우, 이벤트 정보를 가상화 서버(300)로 송신할 수 있다.
표시부(250)는, 사용자에게 어플리케이션 실행 화면과 어플리케이션을 조작할 수 있는 사용자 인터페이스를 제공할 수 있다.
도 3을 참조하면, 가상화 서버(300)는 다운로드부(350), 가상화부(360), 통신부(370), 가상화 결정부(380)로 구성될 수 있다.
통신부(370)는 다운로드부(350), 가상화부(360), 가상화 결정부(380)에 의해 제어된다. 통신부(370)는 유선 또는 무선 네트워크를 통해 어플리케이션 서버(100), 단말(200)과 통신할 수 있다.
가상화 결정부(380)는 단말(200)로부터 전송된 어플리케이션 가상화 요청 메세지에 기초하여 가상화 서버(300)가 단말(200)에게 가상화 서비스를 제공할 수 있는지 여부를 판단한다. 단말(200)로부터 전송된 어플리케이션 가상화 요청 메세지는 하기 도 5에서 설명한다.
다운로드부(350)는 어플리케이션 서버(100)로부터 어플리케이션을 다운받는다. 또한, 가상화 서버(300)에 어플리케이션이 이미 존재하는지 여부를 판단하고, 존재하지 않는 경우, 어플리케이션 서버(100)에 어플리케이션을 요청할 수 있다.
가상화부(360)는 어플리케이션 서버(100)로부터 다운로드 받은 어플리케이션을 실행하고, 단말(200)과 연동하여 단말(200)에서 가상 어플리케이션이 실행 되도록 한다.
가상화부(360)에서 실행 가능한 어플리케이션은 한정되지 않는다. 가상화를 요청한 단말(200)에서 실행 가능한 어플리케이션뿐만 아니라, 단말(200)의 하드웨어나 소프트웨어의 기능 부족 등으로 실행할 수 없는 어플리케이션 또한 실행할 수 있다. 또한, 가상화부(360)는 게임과 같은 어플리케이션뿐만 아니라 동영상 또는 오디오 컨텐츠를 실행할 수 있다.
가상화부(360)는 어플리케이션 서버(100)로부터 다운받은 다양한 종류의 어플리케이션을 실행할 수 있도록 다양한 종류의 하드웨어 또는 소프트웨어 플랫폼 또는 가상머신을 구비하고 있을 수 있다.
예를 들어, 어플리케이션 서버(100)로부터 다운받은 어플리케이션이 안드로이드 플랫폼의 진저브레드 버전에서 최적화되어 동작할 경우, 가상화부(360)는 진저 브레드 플랫폼 가상 머신을 구비하여 실제 어플리케이션을 동작시킬 수 있다.
예를 들어, 어플리케이션을 동작시키기 위해 3D 그래픽 가속기가 필요한 경우, 실제 3D 그래픽 가속기가 구비되어 있거나 이를 대신할 수 있는 소프트웨어가 구비되어 있을 수 있다.
가상화부(360)는 어플리케이션이 실행되는 동안 사용자에게 제공되어야 하는 비디오 또는 오디오를 실시간으로 인코딩하여 스트리밍 형태로 단말에 전송 할 수 있다.
예를 들어, 가상화부(360)는 비디오, 오디오 인코딩을 위한 MPEG, h.264 등 다양한 종류의 코덱을 구비하고 있을 수 있다. 또한, RTP/RTSP, Adaptive HTTP 등 다양한 종류의 스트리밍 프로토콜을 지원할 수 있다.
예를 들어, 가상화부(360)는 단말(200)과 가상화 서버(300)간 네트워크 상태 또는 가상화부(360)가 실행중인 어플리케이션의 화면 변화 속도에 따라 인코딩 속도와 전송 속도를 적응적으로 변화시킬 수 있다.
가상화부(360)는 가상화 되는 어플리케이션이 웹 어플리케이션인 경우, 웹 페이지를 렌더링하고, 이미지화하여 단말(200)로 전송 할 수 있다.
가상화부(360)는 어플리케이션 실행 중 사용자에게 제공되는 진동 또는 알림음과 같은 정보를 단말로 전송할 수 있다.
가상화부(360)는 단말(200)로부터 사용자 입력이나 단말 상태에 대한 정보를 수신받아 실행 중인 어플리케이션에 적용할 수 있다.
도4는 본 발명의 바람직한 일 실시예에 따른 단말(200)에서 가상 어플리케이션을 실행하는 방법의 흐름도이다.
S400 단계에서, 단말(200)에서 사용자가 임의의 어플리케이션을 선택한 경우, 단말(200)은 어플리케이션 서버(100)에게 사용자가 선택한 어플리케이션에 대한 정보를 요청한다.
S405단계에서, 단말(200)은 어플리케이션 서버(100)로부터 어플리케이션에 대한 정보를 수신한다. 어플리케이션 서버(100)로부터 수신받은 정보는 어플리케이션 크기, 실행하는데 필요한 저장용량, 어플리케이션이 실행되는 OS 정보, 실행되기 위해 필요한 하드웨어 정보 또는 소프트웨어 정보를 포함할 수 있다. 또한, 권장되는 CPU 사양이나 램(RAM)과 같은 리소스 정보 일 수 있다. 또한, 어플리케이션을 다운받을 수 있는 서버ID, 서버 URL 일 수 있다.
또한, 가상화 서버(300)에서 요청된 어플리케이션이 가상화가 가능한지 여부에 대한 정보가 포함될 수 있다. 이러한 경우 어플리케이션 서버(100)에 어플리케이션 가상화 가능 여부에 대한 정보가 미리 저장되어 있을 수 있으며, 가상화 서버(300)에 대한 URL과 같은 접근 정보가 포함될 수 있다.
S410단계에서, 단말(200)은 수신받은 어플리케이션 정보와, 단말(200) 자신의 소프트웨어 정보, 하드웨어 정보 또는 리소스 정보를 기초로 어플리케이션이 실행 가능한지 판단한다.
예를 들어, 어플리케이션의 OS 플랫폼이 iOS이고 단말(200)의 OS 플랫폼이 안드로이드일 경우, 실행 불가능하다고 판단할 수 있다. 또한, 어플리케이션을 실행하기 위해 특정 소프트웨어 라이브러리를 필요로 하는 경우 실행 불가능하다고 판단 할 수 있다.
예를 들어, 어플리케이션이 단말(200)의 CPU 성능, GPU 성능, RAM 용량, 데이터 저장용량, 디스플레이 해상도가 일정 수준 이상을 필요로 하거나, 3D 그래픽 가속기 등을 필요로 하는 경우, 단말(200)에 그러한 하드웨어 사양이 구비되어 있지 않으면 실행 불가능하다고 판단할 수 있다.
예를 들어, 단말(200)의 하드웨어 사양은 어플리케이션을 실행하기에는 충분하나, 다른 여러 가지 어플리케이션을 실행하는 등의 이유로, 사용자가 선택한 어플리케이션이 실행되기 위해 필요한 단말(200)의 리소스가 부족한 경우 실행 불가능하다고 판단할 수 있다.
S410 단계에서 단말(200)에서 실제 어플리케이션의 실행이 불가능하다고 판단한 경우, S435 단계에서, 단말에서 가상 어플리케이션을 실행하기 위해, 가상 실행부(270)가 실행 가능한지 판단할 수 있다.
가상 실행부(270)는 스트리밍 플레이어 일 수 있으며, 스트리밍 플레이어를 실행하기 위한 리소스가 부족한 경우, 가상 실행부(270)가 실행 불가능한 것으로 판단될 수 있다. 가상 실행부(270)가 실행 불가능한 경우, 어플리케이션을 실행시키지않고 종료한다.
S435 단계에서 가상 어플리케이션의 실행이 가능하다고 판단한 경우, S440 단계에서, 단말(200)은 가상화 서버(300)로 어플리케이션 가상화 요청 메세지를 송신하고 어플리케이션 가상화를 요청한다.
S450 단계에서, 단말(200)은 가상 어플리케이션을 실행한다.
예를 들면, 단말(200)이 가상화 서버(300)로부터 수신하는, 가상화 서버(300)에서 실행되는 어플리케이션의 출력은 어플리케이션이 실행됨에 따라 사용자에게 제공되어야 하는 영상, 소리, 진동과 같은 정보일 수 있다. 또는, 영상과 소리가 실시간으로 인코딩되는 스트리밍 컨텐츠 일 수 있다. 이러한 경우 가상 어플리케이션 실행은 스트리밍 컨텐츠 재생을 포함한 단말(200)과 가상화 서버(300)간의 연동이다.
예를 들면, 어플리케이션 실행에 있어 리소스를 많이 사용하는 모듈만이 가상화 서버(300)에 분리되어있는 경우, 가상 어플리케이션 실행은 단말(200)에서 실행되는 모듈과 가상화 서버(300)에서 실행되는 모듈간의 연동이다. 이러한 경우 가상화 서버(300)에서 실행되는 어플리케이션의 출력이 단말로 전송되는 방법은 스트리밍이 아닌 RPC일 수 있으며, 출력 결과는 스트리밍 컨텐츠가 아닌 하나의 객체(object)일 수 있다.
S455 단계에서, 단말(200)은 사용자 입력 또는 단말 상태와 같은 정보를 가상화 서버(300)로 송신한다. 즉, 단말(200)의 가상 실행부(270)가 단말(200)의 OS로부터 받은 사용자 입력 또는 단말 상태 변화에 따른 이벤트들을 가상화 서버(300)로 송신한다.
S450 단계와 S455 단계는 선후가 있지 않으며, S455 단계는 S450 단계에 포함될 수 있다.
S410 단계에서 단말(200)에서 실제 어플리케이션의 실행이 가능하다고 판단한 경우, S415단계에서, 단말(200)은 어플리케이션 서버(100)로부터 실제 어플리케이션을 다운로드 한다.
S420단계에서, 단말(200)은 다운받은 어플리케이션을 실행한다.
S425단계에서, 단말(200)은 실제 어플리케이션을 실행한 후에도, 단말(200)의 실제 어플리케이션이 정상적으로 동작할 수 있을 만큼 리소스가 충분한지 여부를 판단한다. 리소스가 충분 하지 않다고 판단한 경우, 단말(200)에서 어플리케이션을 가상화하여 실행 가능한지 여부를 판단하고(S435), 가상화 서버(300)에 어플리케이션 가상화를 요청한다.
실제 어플리케이션을 실행하기 위한 단말(200)의 리소스가 충분한 경우, S430단계에서, 단말(200)은 실제 어플리케이션을 계속 실행한다.
도 4에 도시되지 않았으나, 단말(200)에서 가상 어플리케이션을 실행하는 경우, 사용자의 어플리케이션 사용 정보 즉, 사용자의 아이템이나 랭킹 정보 등을 가상화 서버(300)의 저장부(미도시)나 단말(200)에 저장할 수 있다. 이후 사용자가 다시 어플리케이션을 실행하려고 하는 경우, 저장된 사용 정보를 이용하여 사용자 정보를 업데이트 할 수 있다.
도 4에 도시되지 않았으나, 단말(200)에서 가상 어플리케이션을 실행하는 경우, 가상화 서버(300)로부터 수신한 스트리밍 정보를 단말(200)에서 저장할 수 있다. 예를 들어, 단말(200)에서 가상 어플리케이션을 실행하는 동시에 스트리밍 정보를 녹화할 수 있다.
도 5a는 본 발명의 바람직한 일 실시예에 따른 단말(200)이 가상화 서버(300)에게 어플리케이션 가상화를 요청하기 위해 송신하는 가상화 요청 메시지의 일부이다.
도 5a를 참조하면, 어플리케이션 가상화를 요청할 때 송신하는 정보는 어플리케이션 정보(510), 어플리케이션 서버 정보(520), 단말 정보(530), 단말 사용자 정보(540)를 포함할 수 있다.
어플리케이션 정보(510)는 단말(200)이 실행하고자 하는 어플리케이션에 대한 정보이다.
어플리케이션 정보(510)는 어플리케이션에 대한 Unique ID가 되거나 어플리케이션 URL 형태가 될 수 있다. 또한, 어플리케이션의 크기 정보, 어플리케이션이 실행되기 위해 필요한 하드웨어 일 수 있으며, 실행되는 환경 정보 및 어플리케이션이 실행되기 위한 최소한의 플랫폼 버전, OS버전, 실행되기 위해 필요한 권장 리소스 등 과 같은 정보가 포함될 수 있다.
또한, 어플리케이션 정보(510)는 가상화 하려는 어플리케이션에 대한 정보이다. 어플리케이션 정보(510)는 단말(200)이 어플리케이션 실행 가능 여부를 판단할 때 사용될 수 있으며, 가상화 서버(300)가 단말(200)에게 가상화 서비스를 제공할 수 있는지 여부를 판단할 때 사용될 수 있다. 또한 가상화 서버(300)에서 어플리케이션에 필요한 가상머신을 설정할 때 사용될 수 있다.
어플리케이션 서버 정보(520)는 단말(200) 또는 가상화 서버(300)가 어플리케이션을 다운로드 받을 수 있는 어플리케이션 서버(100)에 대한 정보이다. 어플리케이션 서버(100)에 대한 정보는 어플리케이션 서버(100)의 ID 또는 어플리케이션 서버(100)의 URL 정보 일 수 있다.
다만, 어플리케이션 정보(510)에 기재된 어플리케이션 ID가 URL 형태로 기재되어, 어플리케이션 정보(510)에서 어플리케이션 서버(100) 정보를 알 수 있는 경우에는 어플리케이션 서버 정보(520)는 존재하지 않을 수 있다.
단말 정보(530)는 가상화 서버(300)에 어플리케이션의 가상화를 요청하는 단말(200)의 정보이다. 단말 정보(530)는 단말의 해상도나 펌웨어의 종류 및 버전 일 수 있다. 단말 정보(530)는 스트리밍 플레이어 버전 정보, 지원 코덱 정보 또는 지원 가능한 스트리밍 프로토콜과 같은 가상 어플리케이션 플레이어에 대한 정보 일 수 있다
단말 정보(530)는 가상화 서버(300)가 어플리케이션을 실행하여 실행 결과를 스트리밍으로 인코딩 할 때 인코딩 방법을 결정하기 위해 사용될 수 있다.
단말 사용자 정보(540)는 어플리케이션 가상화를 요청하는 단말(200)의 사용자 정보이다. 예를 들어, 사용자의 ID 또는 패스워드 등 일 수 있다.
단말 사용자 정보(540)는 가상화 서버(300)에서 사용자를 인증하기 위해 사용될 수 있다.
도 5b는 본 발명의 바람직한 일 실시예에 따른 어플리케이션 가상화 요청 메시지를 XML 형태로 구성한 도면이다. 510b는 어플리케이션 정보(510a), 520b는 어플리케이션 서버 정보(520a), 530b는 단말 정보(530a), 540b는 단말 사용자 정보(530a)를 XML 형태로 예시하고 있다.
도 6는 본 발명의 바람직한 일 실시예에 따른 가상화 서버(300)가 어플리케이션 가상화를 수행하는 방법의 흐름도이다.
S600 단계에서, 가상화 서버(300)는 단말(200)로부터 어플리케이션 가상화 요청 메세지(500)를 수신한다. 어플리케이션 가상화 요청 메세지는 도 5에서 설명하였다.
S605 단계에서, 가상화 서버(300)는 단말로부터 수신한 어플리케이션 정보(510) 또는 어플리케이션 서버(100)로부터 직접 수신한 어플리케이션 정보에 기초하여 어플리케이션의 실행을 위해 요구되는 하드웨어, 펌웨어, OS, 소프트웨어 플랫폼 등을 설정할 수 있다.
예를 들어, 실행되어야 하는 어플리케이션이 모션 센서가 구비된 단말에서 동작 되어야 하는 경우, 사용자가 단말(200)에 입력하는 모션에 대한 정보를 단말(200)로부터 수신하여 실행 중이 어플리케이션에 입력할 수 있는 소프트웨어를 설정 할 수 있다.
예를 들어, 어플리케이션이 일정 버전이상의 펨웨어를 요구하는 경우 또는 특정 OS 버전 이상에서만 동작하는 경우, 요구되는 펌웨어 또는 OS를 설정할 수 있다.
S610 단계에서, 가상화 서버(300)는 어플리케이션 서버 정보(520)와 어플리케이션 정보(510)에 기초하여 어플리케이션 서버(100)로부터 어플리케이션을 다운로드 한다. 예를 들어, 어플리케이션 서버(100)의 URL, ID 또는 어플리케이션의 URL에 접속하여 요청된 어플리케이션을 다운로드 할 수 있다.
S615 단계에서, 가상화 서버(300)는 어플리케이션을 실행한다.
S620 단계에서, 가상화 서버(300)는 실행되는 어플리케이션의 출력을 실시간으로 단말(200)로 송신한다.
예를 들어, 실행되는 어플리케이션의 출력을 스트리밍으로 인코딩하는 경우, 가상화 서버(300)는 단말 정보(S530)에 기초하여 단말이 지원하는 코덱, 스트리밍 프로토콜 및 해상도에 맞춰 비디오 오디오 등과 같은 출력을 실시간으로 인코딩하여 단말(200)로 송신할 수 있다. 어플리케이션 실행 중 비디오 또는 오디오 정보뿐 만아니라, 진동과 같은 정보도 특정한 프로토콜로 인코딩되어 단말(200)로 전송될 수 있다.
또한, 어플리케이션 실행에 있어 리소스를 많이 사용하는 모듈만이 가상화 서버(300)에서 실행되는 경우, 실시간으로 실행 결과가 RPC를 이용하여 단말로 전송될 수 있다.
S625 단계에서, 가상화 서버(300)는 단말(200)로부터 수신한 사용자 입력 또는 단말 상태에 대한 정보를 실행 중인 어플리케이션에 적용할 수 있다. 일례로, 사용자가 가상 어플리케이션 실행 중 터치나 키를 입력하거나, 배터리가 방전되어 어플리케이션이 종료되어야 하는 경우, 가상화 서버(300)는 이러한 정보를 단말(200)로부터 수신하여 실행중인 어플리케이션에 적용할 수 있다.
S620 단계와 S625 단계는 순서가 있지 않으며, 어플리케이션이 가상화되는 동안 반복될 수 있다.
도 7은 본 발명의 바람직한 일 실시예에 따른 단말에서 가상 어플리케이션을 실행하는 방법을 어플리케이션 서버(100), 단말(200), 가상화 서버(300)간 동작 흐름도로 예시한 도면이다.
상기 설명한 바와 같이, 가상화 서버는 백앤드 서버(340)과 어플리케이션 실행 서버(390)로 구성될 수 있다.
S705단계에서, 단말(200)은 어플리케이션 서버(100)에게 실행하려는 어플리케이션에 대한 정보를 요청한다. 어플리케이션 정보 요청은 어플리케이션 다운로드 요청의 일부분일 수 있다. S710단계에서, 어플리케이션 서버(100)는 요청된 어플리케이션에 대한 어플리케이션 정보를 단말(200)로 전송한다. 어플리케이션에 대한 정보는 어플리케이션 저장용량, 어플리케이션이 실행되기 위해 필요한 하드웨어, 소프트웨어 사양, 권장 리소스, 어플리케이션 서버 ID, URL, 가상화 서버(300)에서 가상화 가능 여부 등이 포함될 수 있다.
S705와 S710은 단말(200)이 어플리케이션 서버(100)로부터 어플리케이션의 정보를 전송받는 과정으로, 도 4의 S400과 S405에 대응된다.
S715단계에서, 단말(200)은 단말(200)에서 실제 어플리케이션 실행이 가능한지 여부를 판단한다. 실제 어플리케이션 실행이 가능한지 여부에 대한 판단은 상기 S410에서 설명되었다.
S715단계에서 어플리케이션 실행이 가능한 것으로 판단한 경우, 단말(200)은 어플리케이션 서버(100)에게 어플리케이션 다운로드를 요청한다.
S715단계에서 어플리케이션 실행이 불가능한 것으로 판단한 경우, 단말은 가상화 서버(300)에게 어플리케이션 가상화 요청 메세지(500)를 송신하고 가상화를 요청한다.
다른 실시예로서, 단말(200)에서 어플리케이션 실행이 불가능한 것으로 판단한 경우, 가상화 요청에 대한 사용자 입력을 수신하는 경우에만 가상화 서버(300)에게 어플리케이션 가상화 요청 메시지(500)를 송신 할 수 있다.
S725단계에서, 단말(200)은 어플리케이션 실행 서버(390)에게 어플리케이션 가상화 요청 메세지를 송신하고 가상화를 요청한다. 어플리케이션 가상화 요청 메세지는 상기 도 5에서 설명되었다.
S730단계에서, 어플리케이션 실행 서버(390)는 단말(200)로부터 수신한 어플리케이션 가상화 요청 메세지 중 어플리케이션 정보(510) 에 기초하여 어플리케이션 실행에 필요한 가상 플랫폼을 설정 할 수 있다.
S735단계에서, 어플리케이션 실행 서버(390)는 어플리케이션 서버(100)에 어플리케이션을 요청한다. 어플리케이션 서버(100) 주소는 단말(200)로부터 수신한 어플리케이션 정보(510) 또는 어플리케이션 서버 정보(510)를 참조 할 수 있다.
S740단계에서, 가상화 서버(300)는 어플리케이션 서버(100)로부터 어플리케이션을 다운로드 받는다.
S745단계에서, 어플리케이션 실행 서버(390)는 다운로드 받은 어플리케이션을 실행한다.
S750단계에서, 어플리케이션 실행 서버(390)는 백앤드 서버(340)에게 스트리밍 주소를 전송하고, S755단계에서, 백앤드 서버(340)는 단말(200)로 스트리밍 주소를 전송한다.
S760단계에서, 단말(200)은 어플리케이션 실행 서버(390)에 스트리밍을 수신받기 위해 접속한다. 스트리밍 주소 설정은 단말(200)과 어플리케이션 실행 서버(390)간 스트리밍을 위한 준비 단계이며, 스트리밍 프로토콜에 따라 변경될 수 있다. 또한, 가상화 서버(300)가 어플리케이션을 실행(S745)하기 이전에 스트리밍을 위한 준비 단계(S750 내지 S760)가 실시될 수 있다.
S765단계에서, 어플리케이션 실행 서버(390)는 실행되는 어플리케이션의 출력을 실시간으로 단말로 송신한다.
S770단계에서, 단말은 가상 어플리케이션을 실행한다. 가상 어플리케이션을 실행하는 것은 어플리케이션 실행 서버(390)로부터 스트리밍을 수신받아 스트리밍 컨텐츠를 재생하는 것일 수 있다.
S775단계에서, 단말은 가상 어플리케이션 실행 중 사용자 입력 또는 단말 상태에 대한 정보를 어플리케이션 실행 서버(390)로 전송한다. 사용자 입력 또는 단말 상태에 대한 정보 외에도 실제 어플리케이션이 단말(200)에서 실행되었다면 실제 어플리케이션이 수신받아야 할 이벤트들 또한 어플리케이션 실행 서버(390)로 전송 될 수 있다.
사용자 입력 또는 단말 상태에 대한 정보는 단말(200)과 어플리케이션 실행 서버(390)가 특별히 정한 프로토콜에 의해서 전송될 수 있다.
S780단계에서, 어플리케이션 실행 서버(390)는 수신한 사용자 입력 또는 단말 상태에 대한 정보를 실행 중인 어플리케이션에 적용한다. 이후 실행된 어플리케이션의 출력을 단말(200)로 송신한다.
도 7에 도시되지 않았으나, 가상 어플리케이션이 종료되는 경우, 어플리케이션 실행과 관련된 사용자 정보가 단말(200) 또는 가상화 서버(300)에 저장될 수 있다.
도 8은 본 발명의 바람직한 일 실시예에 따른 단말(200)에서 가상 어플리케이션을 실행하는 방법을 어플리케이션 서버(100), 단말(200), 가상화 서버(300)간 동작 흐름도로 예시한 또 다른 도면이다.
S805 단계 내지 S820 단계는 단말(200)이 어플리케이션 정보를 기초로 실제 어플리케이션이 실행 가능한지 여부를 판단하는 단계로 상기 도 7의 S705 단계 내지 S720 단계에 대응된다.
S825 단계에서, 단말(200)은 가상화 서버(300)에게 어플리케이션 가상화 요청 메세지(500)를 송신한다.
S830 단계에서, 가상화 서버(300)는 단말(200)에 어플리케이션 가상화 서비스를 제공할지 여부를 판단한다.
가상화 서버(300)는 단말 사용자 정보(540)를 기초로 요청된 어플리케이션 가상화 서비스를 제공할지 여부를 판단할 수 있다.
예를 들어, 어플리케이션 가상화 서비스가 유료인 경우, 단말 사용자 정보(540)의 사용자 ID에 기초하여 서비스 제공 여부를 결정할 수 있다. 또한, 단말 사용자가 미성년자인 경우에는 성인 어플리케이션 가상화 서비스는 제공하지 않을 수 있다.
가상화 서버(300)는 어플리케이션 정보(510)에 기초하여 요청된 어플리케이션 가상화 서비스를 제공할지 여부를 판단할 수 있다.
예를 들어, 요청된 어플리케이션 정보에 기초하여 판단 한 결과, 어플리케이션이 실행되는데 필요한 플랫폼이 가상화 서버(300)에 구비되어 있지 않거나, 어플리케이션이 실행되는데 필요한 하드웨어를 대신할 수 있는 가상 머신이 구비되지 않은 경우 등과 같이 가상화 서버(300)에서 어플리케이션을 실행할 수 없는 경우에는 가상 어플리케이션 서비스를 제공할 수 없다고 판단할 수 있다.
S835 단계에서, 가상화 서버(300)는, S830 단계에서 판단한, 단말에서 가상화 서비스 가능한지에 대한 정보를 단말(200)로 전송한다.
S840 단계에서, 단말(200)은 단말에서 가상 어플리케이션이 실행 가능한지 여부에 대해 판단한다. 단말에서 가상 어플리케이션이 실행 가능한지 여부에 대해 판단은 가상화 서버(300)에서 어플리케이션 가상화 가능한지 여부, 단말(200)의 하드웨어 정보, 소프트웨어 정보 또는 리소스 상태, 네트워크 상태를 확인하여 판단할 수 있다.
예를 들어, S835단계에서 가상화 서버(300)로부터, 어플리케이션 실행에 필요한 가상머신이 구비되지 않아 가상화가 불가능하다는 정보를 수신한 경우, 가상 어플리케이션을 실행할 수 없다고 판단하여 어플리케이션 실행을 종료할 수 있다. 또한 단말 사용자가 인증된 사용자가 아닌 이유로, 단말(200)이 가상화 서비스를 제공 할 수 없다는 정보를 수신한 경우 가상 어플리케이션을 실행할 수 없다고 판단할 수 있다.
예를 들어, 단말(200)이 요청한 어플리케이션이 가상화 서버(300)에서 가상화가 가능하지만, 단말(200)에서 스트리밍을 재생할 수 없는 경우, 또는 단말(200)의 네트워크 상태가 기준치 이하라서 스트리밍 재생을 정상적으로 할 수 없는 경우, 가상 어플리케이션을 실행시키지 않고 종료할 수 있다.
다른 실시예로서, S815 단계에서 실제 어플리케이션 실행이 불가능한 경우, 가상화 서버(300)에게 가상화 요청 메시지(500)를 전송하지 않고 바로 가상 어플리케이션이 실행 가능한지 여부에 대해 판단할 수 있다. 이 경우 단말(200)은 단말의 리소스 상태, 가상 실행을 위한 소프트웨어 구비 여부 또는 네트워크 상태 정보를 기초로 판단할 수 있다.
S840 단계에서 가상 어플리케이션이 실행 가능하다고 판단된 경우, S845단계에서, 단말(200)은 가상화 서버(300)에게 어플리케이션 가상화를 요청한다.
다른 실시예로서, 단말(200)에서 가상 어플리케이션이 실행 가능한 것으로 판단된 경우, 가상화 요청에 대한 사용자 입력을 수신하는 경우에만 가상화 서버(300)에게 어플리케이션 가상화 요청 메시지(500)를 송신할 수 있다.
S850 단계는, 단말(200)이 어플리케이션 서버(100), 가상화 서버(300)와 연동하여 가상 어플리케이션을 실행하는 단계로서, 상기 도 7의 S730 내지 S780에 대응될 수 있다.
도 9는 본 발명의 바람직한 일 실시예에 따른 단말(200)에서 가상 어플리케이션을 실행하는 방법을 어플리케이션 서버(100), 단말(200), 가상화 서버(300)간 동작 흐름도로 예시한 또 다른 도면이다.
S905 단계 내지 S920 단계는 상기 도 7의 S705 단계 내지 S720 단계에 대응된다.
S915 단계에서 어플리케이션 실행이 불가능하다고 판단된 경우, S925 단계에서, 단말(200)은 어플리케이션 서버(100)로부터 어플리케이션을 다운로드 받는다.
S930 단계에서, 단말(200)은 다운로드 받은 어플리케이션을 실행한다.
S935 단계에서, 다운로드 받은 어플리케이션을 실행하는 도중, 단말(200)은 어플리케이션의 리소스가 부족한지 여부를 판단한다. 단말(200)은 단말(200)의 리소스 상태를 항상 확인할 수 있는 별도의 모듈을 구비하고 있을 수 있다.
S935 단계에서 단말의 리소스 부족 등의 이유로 어플리케이션의 실행이 정상적으로 이루어 지지 않는 것으로 판단된 경우, S940 단계에서, 단말(200)은 가상화 서버(300)에 어플리케이션 가상화 요청 메시지(500)와 가상화 요청을 송신할 수 있다.
다른 실시예로서, S935 단계에서 단말의 리소스 부족 등의 이유로 어플리케이션의 실행이 정상적으로 이루어 지지 않는 것으로 판단된 경우에도, 가상화 요청에 대한 사용자 입력을 수신하는 경우에만 가상화 서버(300)에게 어플리케이션 가상화를 요청한다.
S945 단계를 포함한 S940 단계 이후의 단계는 단말(200)이 어플리케이션 서버(100), 가상화 서버(300)와 연동하여 가상 어플리케이션을 실행하는 단계로서, 도 7의 S725단계 또는 도 8의 S825단계 이후 단계에 대응될 수 있다.
도 9에 도시되지 않았으나, 가상 어플리케이션 실행 중, 네트워크의 통신 속도 저하나 서버 부하 등을 이유로 가상 어플리케이션의 실행이 원활하지 않거나, 단말(200)의 리소스가 어플리케이션을 실행하기에 충분해 진 경우, 단말(200)은 어플리케이션 가상화 모드에서 실제 어플리케이션 실행 모드로 전환할 수 있다.
도 10은 본 발명의 바람직한 일 실시예에 따른 가상화 서버(300)가 어플리케이션을 가상화하는 단계를 예시한 도면이다.
S1000 단계에서, 가상화 서버(300)는 단말(200)로부터 어플리케이션 가상화 요청 메세지(500)와 가상화 요청을 수신한다. S1000은 도 7의 S725단계 또는 도 8의 S845단계에 대응될 수 있다.
S1005 단계에서, 가상화 서버(300)는 어플리케이션 실행에 필요한 가상 플랫폼을 설정한다. S1005 단계는 도 6의 S605 단계와 대응될 수 있다.
S1010 단계에서, 가상화 서버(300)는 요청된 어플리케이션이 이미 가상화 서버(300)에 존재하는 여부를 판단한다. 한번 이상 가상화가 실행된 어플리케이션은 가상화 서버(300)의 저장부(미도시)에 저장될 수 있다. 따라서, 요청된 어플리케이션이 가상화 서버(300)의 저장부(미도시)에 저장되어 있는 경우, 어플리케이션 서버(100)로부터 어플리케이션을 다운로드 하지 않을 수 있다.
S1010 단계에서 요청된 어플리케이션이 가상화 서버(300)의 저장부(미도시)에 저장되어 있지 않은 경우, S1015 단계에서, 가상화 서버(300)가 어플리케이션 서버(100)에게 어플리케이션을 요청하고, S1020 단계에서, 어플리케이션을 다운로드 받는다.
S1010 단계에서 요청된 어플리케이션이 가상화 서버(300)의 저장부(미도시)에 저장되어 있는 경우, S1025 단계에서, 가상화 서버(300)는 기 저장된 어플리케이션을 실행한다.
S1030 단계는 도 7의 S725단계 또는 도 8의 S825단계 이후 단계에 대응 될 수 있다.
도 11a내지 도 11d는 본 발명의 바람직한 일 실시예에 따른 어플리케이션 가상화 가능 여부에 따라 단말(200)에서 변화되는 화면 UI의 예시이다.
도 11a에서, 어플리케이션 실행(1100)은 단말(200)에서 사용자가 어플리케이션을 실행하기 위해 선택하는 UI이다. 사용자가 어플리케이션 실행(1100)을 선택한 경우, 상기 설명한 바와 같이, 단말(200)은 어플리케이션 정보, 단말 정보, 네트워크 정보를 기초로 단말(200)에서 어플리케이션을 다운로드 받아 실행할지, 가상화 서버에게 가상 어플리케이션을 요청하여 가상 어플리케이션을 실행할지 여부를 판단하여 어플리케이션을 실행한다. 이러한 경우 단말(200)이 현재 상황에 적합하게 자동으로 어플리케이션 실행 방법을 선택할 수 있다.
도 11b내지 도 11d에서, '가상 실행'은 단말(200)에서 가상 어플리케이션을 실행하기 위해 선택하는 UI의 예시이다. '내려 받기'는 어플리케이션 서버(100)로부터 직접 어플리케이션을 다운받아 실행하기 위해 선택하는 UI의 예시이다.
도 11b는, 단말(200)에서 실제 어플리케이션이 실행 가능하고, 가상 어플리케이션도 실행 가능하다고 판단한 경우의 화면 UI이다. 사용자는 어플리케이션을 사용하기 위해 가상 실행(1110)과 내려 받기(1120) 중 하나를 선택할 수 있다. 가상 어플리케이션 실행과 실제 어플리케이션의 실행이 가능한지 여부에 대한 판단은 도 7 내지 도 9에서 설명되었다.
도 11c는, 단말(200)에서 실제 어플리케이션은 실행 불가능하나, 가상 어플리케이션은 실행 가능 한 경우의 화면 UI이다. 가상 실행(1130)은 선택이 가능하지만 내려 받기(1140)는 선택이 불가능 하도록 설정 될 수 있다.
도 11d는, 단말(200)에서 실재 어플리케이션은 실행 가능하지만, 가상 어플리케이션은 실행이 불가능한 경우의 화면 UI이다. 내려 받기(1160)는 선택이 가능하지만 가상 실행(1150)은 선택이 불가능 하도록 설정 될 수 있다.
상기 설명된 바와 같이, 단말(200)은 어플리케이션이 단말에서 실행 가능한지, 가상화를 통해 실행 가능하지 여부를 판단할 수 있다. 따라서 단말(200)에서 어플리케이션을 실행하기에 충분하지 않은 경우 또는 어플리케이션을 실행 할 수 없는 환경에서도 어플리케이션을 실행 시킬 수 있고, 나아가 실행 환경이 변하더라도 어플리케이션 실행을 최적화 시킬 수 있다. 또한, 사용자가 실행 방법을 선택할 수 있어 사용자 편의를 향상시킬 수 있다.
도 12a 내지 도 12d는 본 발명의 바람직한 일 실시예에 따른 어플리케이션 가상화 가능 여부에 따라 단말(200)에서 변화되는 또 다른 화면 UI의 예시이다.
도 12a는, 어플리케이션이 실행 되는 동안 단말(200)의 리소스가 부족하여, 단말(200)이 가상화 서버(300)에게 어플리케이션 가상화를 요청한 경우, 사용자에게 어플리케이션 가상화가 진행 중이라는 사실을 화면 표시하여 제공할 수 있다. 어플리케이션 실행 중 리소스 확인은 상기 도 9에서 설명되었다.
도 12b는, 네트워크 통신 속도 저하나 서버 부하 등을 이유로 가상 어플리케이션의 실행이 원활하지 않은 경우, 어플리케이션 가상화 모드에서 실제 어플리케이션 실행 모드로 전환 중이라는 사실을 화면에 표시하여 사용자에게 제공하는 UI의 일 실시예이다.
단말(200)은 어플리케이션이 실행되는 모드를 화면에 표시하여 사용자에게 제공할 수 있다. 또한, 사용자에 의해 어플리케이션 실행 모드가 전환 될 수 있도록, 어플리케이션 실행 모드 전환을 위한 버튼이 구비될 수 있다.
상기 설명된 바와 같이 단말(200)이 어플리케이션 실행 가능여부 또는 가상 어플리케이션 실행 가능 여부를 판단하여, 가능한 실행모드에 대해서는 사용자가 실행 모드를 선택하기 위한 UI를 화면에 표시할 수 있다. 불가능한 실행 모드에 대해서는 버튼을 비활성화와 하는 등으로 불가능 하다는 사실을 화면에 표시할 수 있다.
도 12c는, 단말(200)에서 실제 어플리케이션이 실행 중이라는 표시와, 가상 어플리케이션 실행 가능 여부를 표시하는 화면 UI이다. 사용자가 가상화 전환 버튼(1220)을 선택한 경우, 단말(200)은 가상화 서버(300)에게 어플리케이션 가상화를 요청할 수 있다.
도 12d는, 단말(200)에서 가상 어플리케이션이 실행 중이라는 표시와, 실제 어플리케이션 실행 가능여부를 표시하는 화면 UI이다. 사용자가 다운로드 어플로 전환(1230) 버튼을 선택한 경우, 단말(200)은 가상화 서버(300)에게 어플리케이션 가상화 종료를 요청하고 실제 어플리케이션을 실행할 수 있다.
100: 어플리케이션 서버
200: 단말
300: 가상화 서버

Claims (23)

  1. 단말에서 어플리케이션 서버가 제공하는 어플리케이션을 실행하는 방법에 있어서,
    상기 어플리케이션 서버로부터 상기 어플리케이션에 대한 실행 환경 정보를 수신하는 단계;
    상기 실행 환경 정보를 참조하여 가상 어플리케이션을 실행할지 여부를 결정하는 단계;
    상기 결정에 기초하여 어플리케이션 가상화를 수행하는 가상화 서버에게 가상화를 요청하기 위한 메뉴를 디스플레이하는 단계; 및
    상기 메뉴를 통한 사용자 입력에 기초하여 상기 가상화 서버에게 상기 어플리케이션에 대한 가상화를 요청하는 단계를 포함하는 것을 특징으로 하는 어플리케이션 실행 방법.
  2. 제 1 항에 있어서,
    상기 가상화 서버로부터 상기 가상화 서버에서 실행되는 어플리케이션의 실행 결과 화면을 구성하는 데이터를 수신하는 단계; 및
    상기 데이터를 이용하여 상기 실행 결과 화면을 렌더링하는 단계를 더 포함하는 어플리케이션 실행 방법.
  3. 제 1 항에 있어서,
    상기 결정하는 단계는,
    상기 단말에서 상기 어플리케이션이 실행 가능하지 않은 경우 가상 어플리케이션을 실행하는 것으로 결정하고,
    상기 단말에서 상기 어플리케이션이 실행 가능한 경우 상기 어플리케이션을 다운로드 하는 것으로 결정하는 것을 특징으로 하는 어플리케이션 실행 방법.
  4. 제 1 항에 있어서,
    상기 결정하는 단계는,
    상기 어플리케이션이 구동되는 플랫폼, 상기 어플리케이션을 구동하기 위한 하드웨어 또는 소프트웨어 구비 여부를 기초로 상기 단말에서 상기 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함하는 어플리케이션 실행 방법.
  5. 제 1 항에 있어서,
    상기 결정하는 단계는,
    상기 단말의 리소스가 상기 어플리케이션을 수행하기에 충분한지 여부를 기초로 상기 단말에서 상기 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함하는 어플리케이션 실행 방법.
  6. 제 1 항에 있어서,
    상기 결정하는 단계는,
    상기 단말의 가상 어플리케이션 실행을 위한 리소스 또는 상기 가상화 서버와의 통신을 위한 네트워크의 상태 중 적어도 하나에 기초하여 상기 단말에서 상기 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함하는 어플리케이션 실행 방법.
  7. 어플리케이션 가상화를 수행하는 가상화 서버가 단말로부터 어플리케이션 가상화 요청 메시지를 수신하는 단계;
    상기 수신한 메시지를 참조하여 상기 단말에게 어플리케이션 가상화 서비스를 제공할 것인지 여부를 결정하는 단계; 및
    상기 결정에 기초하여 상기 메시지가 가리키는 어플리케이션에 대한 가상화를 수행하는 단계를 포함하고,
    상기 가상화 서버는, 상기 단말에서 상기 어플리케이션 실행이 가능해짐에 따라, 상기 어플리케이션에 대한 가상화 수행을 정지하는 어플리케이션 가상화 방법.
  8. 제 7 항에 있어서,
    상기 가상화를 수행하는 단계는
    상기 가상화 서버가 상기 어플리케이션을 실행하는 단계; 및
    상기 어플리케이션의 실행 결과 화면을 구성하는 데이터를 상기 단말로 송신하는 단계를 포함하는 어플리케이션 가상화 방법.
  9. 제 7 항에 있어서,
    상기 어플리케이션 가상화 요청 메시지는
    어플리케이션 정보, 어플리케이션 서버 정보, 단말 정보, 단말 사용자 정보 중 적어도 하나를 포함하는 어플리케이션 가상화 방법.
  10. 제 7 항에 있어서,
    상기 단말로부터 수신하는 가상화 요청 메시지에 기초하여 어플리케이션 실행을 위한 가상 머신을 설정하는 단계를 더 포함하는 어플리케이션 가상화 방법.
  11. 제 7 항에 있어서,
    상기 가상화를 수행하는 단계는,
    상기 가상화 서버에 어플리케이션이 기 다운로드 되어 있는지 여부를 판단하는 단계; 및
    상기 기 다운로드 되어 있는지에 대한 판단 결과에 기초하여 어플리케이션 서버로부터 상기 어플리케이션을 다운로드 받는 단계를 더 포함하는 어플리케이션 가상화 방법.
  12. 어플리케이션 서버가 제공하는 어플리케이션을 실행하는 단말에 있어서,
    네트워크와 통신하는 통신부;
    상기 통신부를 통해 상기 어플리케이션 서버로부터 수신한 어플리케이션에 대한 실행 환경 정보를 참조하여 가상 어플리케이션을 실행할지 여부를 결정하는 가상 실행 결정부;
    상기 결정에 기초하여 어플리케이션 가상화를 수행하는 가상화 서버에게 가상화를 요청하기 위한 메뉴를 상기 단말에 표시하는 표시부; 및
    상기 메뉴를 통한 사용자 입력에 기초하여 상기 가상화 서버에게 상기 어플리케이션에 대한 가상화를 요청하는 가상 실행부를 포함하는 것을 특징으로 하는 어플리케이션을 실행하는 단말.
  13. 제 12 항에 있어서,
    상기 가상 실행부는
    상기 가상화 서버로부터 상기 가상화 서버에서 실행되는 어플리케이션의 실행 결과 화면을 구성하는 데이터를 수신하고,
    상기 데이터를 이용하여 상기 실행 결과 화면을 렌더링하는 것을 더 포함하는 어플리케이션을 실행하는 단말.
  14. 제 12 항에 있어서,
    상기 결정은,
    상기 단말에서 상기 어플리케이션이 실행 가능하지 않은 경우 가상 어플리케이션을 실행하고,
    상기 단말에서 상기 어플리케이션이 실행 가능한 경우 상기 어플리케이션을 다운로드 하는 결정인 것을 특징으로 하는 어플리케이션을 실행하는 단말.
  15. 제 12 항에 있어서,
    상기 결정은,
    상기 어플리케이션이 구동되는 플랫폼, 상기 어플리케이션을 구동하기 위한 하드웨어 또는 소프트웨어 구비 여부를 기초로 상기 단말에서 상기 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함하는 어플리케이션을 실행하는 단말.
  16. 제 12 항에 있어서,
    상기 결정은,
    상기 단말의 리소스가 상기 어플리케이션을 수행하기에 충분한지 여부를 기초로 상기 단말에서 상기 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함하는 어플리케이션을 실행하는 단말.
  17. 제 12 항에 있어서,
    상기 결정은,
    상기 단말의 가상 어플리케이션 실행을 위한 리소스 또는 상기 가상화 서버와의 통신을 위한 네트워크의 상태 중 적어도 하나에 기초하여 상기 단말에서 가상 어플리케이션이 실행 가능한지 여부를 판단하는 것을 포함하는 어플리케이션을 실행하는 단말.
  18. 네트워크와 통신하는 통신부;
    상기 통신부를 통해 단말로부터 어플리케이션 가상화 요청 메시지를 수신하고, 상기 수신한 메시지를 참조하여 상기 단말에게 어플리케이션 가상화 서비스를 제공할 것인지 여부를 결정하는 가상화 결정부; 및
    상기 결정에 기초하여 상기 메시지가 가리키는 어플리케이션에 대한 가상화를 수행하고, 상기 단말에서 상기 어플리케이션 실행이 가능해짐에 따라, 상기 어플리케이션에 대한 가상화 수행을 정지하는 가상화부를 포함하는 가상화 서버.
  19. 제 18 항에 있어서,
    상기 가상화부는
    상기 어플리케이션을 실행하고, 상기 실행되는 어플리케이션의 실행 결과 화면을 구성하는 데이터를 상기 단말로 송신하는 것을 포함하는 가상화 서버.
  20. 제 18 항에 있어서,
    상기 어플리케이션 가상화 요청 메시지는
    어플리케이션 정보, 어플리케이션 서버 정보, 단말 정보, 단말 사용자 정보 중 적어도 하나를 포함하는 가상화 서버.
  21. 제 18 항에 있어서,
    상기 가상화부는
    상기 단말로부터 수신하는 가상화 요청 메시지에 기초하여 어플리케이션 실행을 위한 가상 머신을 설정하는 것을 더 포함하는 가상화 서버.
  22. 제 18 항에 있어서,
    상기 가상화 서버에 어플리케이션이 기 다운로드 되어 있는지 여부를 판단 하고,
    상기 기 다운로드 되어 있는지에 대한 판단결과에 기초하여 어플리케이션 서버로부터 상기 어플리케이션을 다운로드 받는 다운로드부를 더 포함하는 가상화 서버.
  23. 제 1 항 내지 제 11 항 중 어느 한 항에 의한 방법을 수행하기 위한 프로그램이 기록된 컴퓨터로 읽을 수 있는 기록매체.
KR1020130062112A 2013-05-30 2013-05-30 어플리케이션 실행 방법 및 그 장치 KR102067276B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020130062112A KR102067276B1 (ko) 2013-05-30 2013-05-30 어플리케이션 실행 방법 및 그 장치
US14/291,533 US10073688B2 (en) 2013-05-30 2014-05-30 Method and apparatus for executing application

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130062112A KR102067276B1 (ko) 2013-05-30 2013-05-30 어플리케이션 실행 방법 및 그 장치

Publications (2)

Publication Number Publication Date
KR20140140986A KR20140140986A (ko) 2014-12-10
KR102067276B1 true KR102067276B1 (ko) 2020-02-11

Family

ID=51986385

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130062112A KR102067276B1 (ko) 2013-05-30 2013-05-30 어플리케이션 실행 방법 및 그 장치

Country Status (2)

Country Link
US (1) US10073688B2 (ko)
KR (1) KR102067276B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9870247B2 (en) * 2014-06-16 2018-01-16 Cyber Reliant Corporation System and method for dynamic provisioning of applications
TWI604382B (zh) * 2014-07-08 2017-11-01 緯創資通股份有限公司 應用程式分享方法以及使用該方法的系統
CN107432050B (zh) * 2015-03-27 2021-03-30 华为技术有限公司 一种移动终端、基站、系统及运行应用的方法
KR20160147449A (ko) * 2015-06-15 2016-12-23 한국전자통신연구원 적응형 가상 데스크탑 운영체제 서비스 제공장치 및 그 방법
US10958713B2 (en) * 2019-04-30 2021-03-23 Verizon Digital Media Services Inc. Function manager for an edge compute network

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009124631A (ja) * 2007-11-19 2009-06-04 Ntt Docomo Inc 仮想端末サーバ、移動通信端末、通信制御システム、及び通信制御方法
US20110289513A1 (en) 2010-04-17 2011-11-24 Code Systems Corporation Method of hosting a first application in a second application
US20120072487A1 (en) 2006-05-25 2012-03-22 Shuki Binyamin Method and system for providing remote access to applications
JP2012133822A (ja) * 2012-04-10 2012-07-12 Seiko Epson Corp アプリケーション実行システム、アプリケーション実行システムのアプリケーション実行方法およびプログラム

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6119155A (en) * 1995-12-11 2000-09-12 Phone.Com, Inc. Method and apparatus for accelerating navigation of hypertext pages using compound requests
US5727159A (en) * 1996-04-10 1998-03-10 Kikinis; Dan System in which a Proxy-Server translates information received from the Internet into a form/format readily usable by low power portable computers
US5918013A (en) * 1996-06-03 1999-06-29 Webtv Networks, Inc. Method of transcoding documents in a network environment using a proxy server
US5911776A (en) * 1996-12-18 1999-06-15 Unisys Corporation Automatic format conversion system and publishing methodology for multi-user network
US6128663A (en) * 1997-02-11 2000-10-03 Invention Depot, Inc. Method and apparatus for customization of information content provided to a requestor over a network using demographic information yet the user remains anonymous to the server
IL121071A0 (en) * 1997-03-27 1997-11-20 El Mar Software Ltd Automatic conversion server
US6134598A (en) * 1997-05-23 2000-10-17 Adobe Systems Incorporated Data stream processing on networked computer system lacking format-specific data processing resources
US6345293B1 (en) * 1997-07-03 2002-02-05 Microsoft Corporation Personalized information for an end user transmitted over a computer network
US6711611B2 (en) * 1998-09-11 2004-03-23 Genesis Telecommunications Laboratories, Inc. Method and apparatus for data-linking a mobile knowledge worker to home communication-center infrastructure
US6076108A (en) * 1998-03-06 2000-06-13 I2 Technologies, Inc. System and method for maintaining a state for a user session using a web system having a global session server
US6509913B2 (en) * 1998-04-30 2003-01-21 Openwave Systems Inc. Configurable man-machine interface
US6310601B1 (en) * 1998-05-12 2001-10-30 International Business Machines Corporation Resizing images to improve network throughput
US6412015B1 (en) * 1998-06-24 2002-06-25 New Moon Systems, Inc. System and method for virtualizing and controlling input and output of computer programs
US6925595B1 (en) * 1998-08-05 2005-08-02 Spyglass, Inc. Method and system for content conversion of hypertext data using data mining
US6359633B1 (en) * 1999-01-15 2002-03-19 Yahoo! Inc. Apparatus and method for abstracting markup language documents
US6654814B1 (en) * 1999-01-26 2003-11-25 International Business Machines Corporation Systems, methods and computer program products for dynamic placement of web content tailoring
US6658167B1 (en) * 1999-01-31 2003-12-02 Hewlett-Packard Development Company, L.P. On the fly server for modifying data characteristics for client-server network applications
US6701143B1 (en) * 1999-12-15 2004-03-02 Vert, Inc. Apparatus, methods, and computer programs for displaying information on mobile signs
US6701362B1 (en) * 2000-02-23 2004-03-02 Purpleyogi.Com Inc. Method for creating user profiles
US6622168B1 (en) * 2000-04-10 2003-09-16 Chutney Technologies, Inc. Dynamic page generation acceleration using component-level caching
US7747782B2 (en) * 2000-04-26 2010-06-29 Novarra, Inc. System and method for providing and displaying information content
US20020073235A1 (en) * 2000-12-11 2002-06-13 Chen Steve X. System and method for content distillation
AU2010201379B2 (en) * 2010-04-07 2012-02-23 Limelight Networks, Inc. System and method for delivery of content objects
GB0601917D0 (en) * 2006-01-31 2006-03-15 Cognima Ltd A method of configuring a mobile telephone to interact with external services
US20080075049A1 (en) * 2006-09-27 2008-03-27 Motorola, Inc. Thin client wireless communication device
FR2918189B1 (fr) * 2007-06-29 2009-10-09 Alcatel Lucent Sas Procede d'execution d'une application d'interface utilisateur comprenant une sequence d'inversion temporaire.
US8725874B2 (en) * 2007-09-27 2014-05-13 International Business Machines Corporation Dynamic determination of an ideal client-server for a collaborative application network
FR2940688B1 (fr) * 2008-12-30 2011-02-25 Sagem Comm Systeme comprenant un serveur et un terminal munis d'interfaces graphiques communiquant via un protocole de partage d'images
US8494964B1 (en) * 2009-02-06 2013-07-23 Symantec Corporation Software as a service via virtualization
US9104517B2 (en) * 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US8745239B2 (en) * 2010-04-07 2014-06-03 Limelight Networks, Inc. Edge-based resource spin-up for cloud computing
KR101181508B1 (ko) * 2010-07-29 2012-09-10 팬터로그인터액티브 주식회사 가상 호스팅 서비스를 제공하는 시스템, 장치 및 그 방법
US9021015B2 (en) * 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
KR101761409B1 (ko) 2010-10-27 2017-07-25 주식회사 엘지유플러스 가상화 플랫폼 제공 방법 및 장치
US9197720B2 (en) * 2011-12-07 2015-11-24 Yahoo! Inc. Deployment and hosting of platform independent applications
US9705813B2 (en) * 2012-02-14 2017-07-11 Airwatch, Llc Controlling distribution of resources on a network
KR101361032B1 (ko) 2012-03-05 2014-04-03 주식회사 제이티엘소프트 기업의 기밀 노출 위험이 없는 하이브리드 클라우드 기반 모바일 엔터프라이즈 애플리케이션 플랫폼 서비스 시스템 및 그 방법
CN103379217B (zh) * 2012-04-28 2015-09-09 阿里巴巴集团控股有限公司 一种手持设备中输入内容自动补全的方法、装置和服务器
US9183012B2 (en) * 2012-06-22 2015-11-10 Microsoft Technology Licensing, Llc Adaptive rendering based on runtime capability check
US9721036B2 (en) * 2012-08-14 2017-08-01 Microsoft Technology Licensing, Llc Cooperative web browsing using multiple devices
US9264478B2 (en) * 2012-10-30 2016-02-16 Microsoft Technology Licensing, Llc Home cloud with virtualized input and output roaming over network
US9473570B2 (en) * 2013-03-13 2016-10-18 Cisco Technology, Inc. Instantiating an application flow into a chain of services in a virtual data center
US9525586B2 (en) * 2013-03-15 2016-12-20 Intel Corporation QoS based binary translation and application streaming

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072487A1 (en) 2006-05-25 2012-03-22 Shuki Binyamin Method and system for providing remote access to applications
JP2009124631A (ja) * 2007-11-19 2009-06-04 Ntt Docomo Inc 仮想端末サーバ、移動通信端末、通信制御システム、及び通信制御方法
US20110289513A1 (en) 2010-04-17 2011-11-24 Code Systems Corporation Method of hosting a first application in a second application
JP2012133822A (ja) * 2012-04-10 2012-07-12 Seiko Epson Corp アプリケーション実行システム、アプリケーション実行システムのアプリケーション実行方法およびプログラム

Also Published As

Publication number Publication date
US10073688B2 (en) 2018-09-11
KR20140140986A (ko) 2014-12-10
US20140358998A1 (en) 2014-12-04

Similar Documents

Publication Publication Date Title
KR102067276B1 (ko) 어플리케이션 실행 방법 및 그 장치
US11012385B2 (en) App powered extensibility of messages on an existing messaging service
US9451043B2 (en) Remote virtualization of mobile apps
US20110191516A1 (en) Universal touch-screen remote controller
US20150082239A1 (en) Remote Virtualization of Mobile Apps with Transformed Ad Target Preview
CN113646828B (zh) 可在蓝牙低功耗(ble)模式下操作的游戏控制器
EP2795911A1 (en) Method and apparatus to adapt a remote control user interface
EP2932389A1 (en) Mobile computing device application sharing
JP6710201B2 (ja) メディア・コンテンツのインテリジェントなストリーミング
US20120278796A1 (en) Automatically installing device drivers
US20130023340A1 (en) System and method for providing cloud game service
US9389881B2 (en) Method and apparatus for generating combined user interface from a plurality of servers to enable user device control
CN114902689A (zh) 用于媒体应用的多媒体重定向
GB2479164A (en) Provisioning of customised media content
JP6673980B2 (ja) デジタルデバイスを利用して遠隔地pcと接続する方法
JP5820844B2 (ja) ツールバーを用いてウェブサイトで抽出した動画を符号化及び保存する方法、クラウドサービスとツールバーを用いてウェブページ上のオブジェクトをアップロードする方法及びサーバ
KR101531284B1 (ko) 클라우드 스트리밍 서비스를 제공하기 위한 장치, 이를 위한 방법 및 이를 위한 시스템
KR101078603B1 (ko) 멀티미디어 서비스를 위한 플랫폼, 스마트 카드 및 방법
KR20160131827A (ko) 클라우드 스트리밍 서비스 시스템, 알파 레벨을 이용한 이미지 클라우드 스트리밍 서비스 방법 및 이를 위한 장치
KR20120079622A (ko) 게임 서비스 시스템 및 그의 게임 실행 방법
US9824059B2 (en) Child serial device discovery protocol
CN116700552B (zh) 应用接续方法和终端设备
KR102204223B1 (ko) 원격 접속을 위한 장치, 시스템 및 방법
CN112579233A (zh) 一种应用的流化方法及装置
CN115175002A (zh) 一种视频播放方法及设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right