KR20160091663A - 멀티 플랫폼 기반의 어플리케이션 실행 방법 및 장치 - Google Patents
멀티 플랫폼 기반의 어플리케이션 실행 방법 및 장치 Download PDFInfo
- Publication number
- KR20160091663A KR20160091663A KR1020150012048A KR20150012048A KR20160091663A KR 20160091663 A KR20160091663 A KR 20160091663A KR 1020150012048 A KR1020150012048 A KR 1020150012048A KR 20150012048 A KR20150012048 A KR 20150012048A KR 20160091663 A KR20160091663 A KR 20160091663A
- Authority
- KR
- South Korea
- Prior art keywords
- application
- virtual
- virtual device
- address
- installation
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/62—Uninstallation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/102—Entity profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Transfer Between Computers (AREA)
- Power Engineering (AREA)
Abstract
다양한 실시예는 종류 및 버전이 상이한 복수의 플랫폼 및 상기 복수의 플랫폼에서 실행되는 복수의 어플리케이션이 설치된 가상 시스템과, 외부 장치로부터 플랫폼 및 어플리케이션의 설치 또는 삭제 요청을 수신하는 통신부와, 상기 요청에 응답하여 상기 가상 시스템에 플랫폼 및 어플리케이션의 설치 또는 삭제를 제어하는 제어부를 포함하는 멀티 플랫폼 기반의 어플리케이션 실행 방법 및 장치를 제공한다. 또한, 다른 실시예도 가능하다.
Description
다양한 실시예는 플랫폼별 어플리케이션을 효율적으로 실행하는 방안에 관한 것이다.
전자 장치 내 설치된 어플리케이션은 전자 장치의 플랫폼이 제공하는 기능적 범위 내에서 사용이 가능하다. 즉, 하나의 어플리케이션은 각 플랫폼에 맞게 특화되어 제작되는데, 하나의 어플리케이션에 대해서 복수의 플랫폼들 각각에 맞게 개별적으로 제작되고 있다. 따라서, 동일한 어플리케이션이라 할지라도 플랫폼이 다른 경우, 어플리케이션 간에 서로 연동되지 않는다.
한편, 종래의 어플리케이션 스트리밍(Application Streaming) 기술은 전자 장치의 요청이 있는 경우, 서버 상에 설치된 플랫폼과 호환되는 어플리케이션을 실행하여 어플리케이션 실행화면을 전자 장치로 전송해주고 있다. 때문에, 서버 상에서 실행되는 어플리케이션의 종류는 서버상의 플랫폼이 지원하는 어플리케이션의 종류에 의존적이다. 또한, 서버상에서 구동되는 어플리케이션이 사용 가능한 파일은 서버에 저장된 파일으로만 한정되어, 전자 장치 내에 포함된 파일은 접근이 어렵다.
전자 장치의 신규 플랫폼 버전이 출시되면, 신규 플랫폼 버전에 맞게 어플리케이션을 수정해야 한다. 그렇지 않으면, 신규 플랫폼과 어플리케이션이 호환되지 않아, 전자 장치에서 어플리케이션이 실행되지 않을 수도 있다. 따라서, 신규 플랫폼이 나올 때마다, 어플리케이션 제작사는 신규 플랫폼에 맞게 어플리케이션을 업데이트 해줘야 한다. 또한, 사용자는 신규 플랫폼에 맞는 어플리케이션이 업데이트될 때까지 기다리거나, 신규 플랫폼으로 업데이트할 경우 어플리케이션을 사용할 수 없게 되어 신규 플랫폼으로 업데이트하는 것을 미뤄야 한다.
또한, 플랫폼별 어플리케이션이 다른 경우, 사용자가 특정 플랫폼에 Lock in 되는 문제점도 있다. 예컨대, 사용자가 전자 장치를 변경하고자 하는데, 이전에 사용하던 전자 장치와 변경할 전자 장치가 플랫폼이 다른 경우, 이전 전자 장치에서 사용하던 어플리케이션을 변경할 전자 장치에서 사용하지 못하게 되어, 전자 장치를 변경하는데 어려움이 있다.
다양한 실시예들은 가상 장치에 멀티 플랫폼 버전, 멀티 플랫폼에 대응하는 어플리케이션을 설치하여, 전자 장치의 플랫폼과 다른 어플리케이션에 대해서도 전자 장치에서 용이하게 실행할 수 있도록 함으로써, 멀티 플랫폼 버전, 멀티 플랫폼에 대응하는 어플리케이션들을 용이하게 관리할 수 있는 방법 및 장치를 제공함을 목적으로 한다.
다양한 실시예들에 따른 가상 디바이스 관리 장치는 종류 및 버전이 상이한 복수의 플랫폼 및 상기 복수의 플랫폼에서 실행되는 복수의 어플리케이션이 설치된 가상 시스템과, 외부 장치로부터 플랫폼 및 어플리케이션의 설치 요청 또는 삭제 요청을 수신하는 통신부와, 상기 요청에 응답하여 상기 가상 시스템에 플랫폼 및 어플리케이션의 설치 또는 삭제를 제어하는 제어부를 포함할 수 있다.
다양한 실시예들에 따른 전자 장치는 어플리케이션 실행과 연관된 어플리케이션 클라이언트를 제어하는 프로세서와, 어플리케이션 실행을 위한 서비스 주소를 통해 가상 디바이스 관리 서버로부터 어플리케이션 실행 화면을 수신하는 통신부와, 상기 수신한 어플리케이션 실행 화면을 표시하는 표시부를 포함할 수 있다.
다양한 실시예들에 따른 가상 디바이스 관리 장치의 어플리케이션 실행 방법은 종류 및 버전이 상이한 복수의 플랫폼 및 상기 복수의 플랫폼에서 실행되는 복수의 어플리케이션이 설치된 가상 시스템을 마련하는 동작과, 외부 장치로부터 특정 플랫폼의 어플리케이션 실행 요청을 수신하는 동작과, 상기 실행 요청에 응답하여 상기 가상 시스템에 저장된 특정 플랫폼의 어플리케이션을 실행하는 동작과, 상기 실행된 어플리케이션 실행 화면을 제공하는 서비스 주소를 상기 외부 장치로 전송하는 동작을 포함할 수 있다.
다양한 실시예들에 따른 전자 장치의 어플리케이션 실행 방법은 가상 디바이스 관리 서버로 어플리케이션 ID를 포함하는 어플리케이션 실행 요청을 전송하는 동작과, 상기 실행 요청에 대한 응답으로 상기 가상 디바이스 관리 서버로부터 어플리케이션 실행을 위한 서비스 주소를 수신하는 동작과, 상기 서비스 주소를 통해 상기 가상 디바이스 관리 서버 내 포함된 가상 시스템으로부터 어플리케이션 실행 화면을 수신하는 동작과, 상기 수신한 어플리케이션 실행 화면을 표시부에 표시하는 동작을 포함할 수 있다.
다양한 실시예들에 따르면,
전자 장치에서 요청한 플랫폼에 대응하는 어플리케이션을 가상 시스템에서 실행하여 어플리케이션의 실행 화면을 상기 전자 장치로 제공함으로써, 전자 장치의 플랫폼과 상관없이 다양한 어플리케이션을 자유롭게 실행시킬 수 있다.
다양한 실시예들에 따르면, 신규 플랫폼이 나올 때마다 어플리케이션을 업데이트하거나, 신규 플랫폼으로의 업데이트를 미루지 않고도 원하는 어플리케이션을 언제든지 자유롭게 실행시킬 수 있다.
다양한 실시예들에 따르면, 멀티 플랫폼 버전, 멀티 플랫폼에 대응하기 위해 중간에 서비스 모듈을 두고 각 플랫폼 별 installer 주소를 받아서 어플리케이션을 설치하고 관리함으로써, 여러 종류 및 여러 버전의 플랫폼과 호환되는 어플리케이션들을 전자 장치에서 용이하게 실행할 수 있다.
다양한 실시예들에 따르면, 스트리밍 어플리케이션의 실행과 관련하여 로컬인 전자 장치에 저장된 파일을 자유롭게 접근할 수 있고, 전자 장치에 저장된 파일을 가상 장치에 업로드할 수 있다.
도 1은 다양한 실시예들에 따른 전자 장치와 서버 간의 네트워크 환경을 도시한 도면이다.
도 2는 다양한 실시예들에 따른 가상 디바이스 관리 서버의 구성을 도시한 블록도이다.
도 3은 다양한 실시예들에 따른 전자 장치의 구성을 도시한 블록도이다.
도 4는 다양한 실시예들에 따른 가상 디바이스를 등록하는 일례를 도시한 도면이다.
도 5는 다양한 실시예들에 따른 가상 시스템에 플랫폼을 설치하는 일례를 도시한 도면이다.
도 6은 다양한 실시예들에 따른 멀티 플랫폼 기반의 어플리케이션 제어 방법을 도시한 흐름도이다.
도 7은 다양한 실시예들에 따른 가상 시스템에 어플리케이션을 설치하는 일례를 도시한 도면이다.
도 8은 다양한 실시예들에 따른 어플리케이션을 실행하는 일례를 도시한 도면이다.
도 9는 다양한 실시예들에 따른 전자 장치와 서버 간의 통신 흐름을 도시한 도면이다.
도 10은 다양한 실시예들에 따른 전자 장치에 저장된 파일을 가상 시스템으로 전송하는 일례를 도시한 도면이다.
도 11은 다양한 실시예들에 따른 가상 시스템에서 어플리케이션을 삭제하는 일례를 도시한 도면이다.
도 2는 다양한 실시예들에 따른 가상 디바이스 관리 서버의 구성을 도시한 블록도이다.
도 3은 다양한 실시예들에 따른 전자 장치의 구성을 도시한 블록도이다.
도 4는 다양한 실시예들에 따른 가상 디바이스를 등록하는 일례를 도시한 도면이다.
도 5는 다양한 실시예들에 따른 가상 시스템에 플랫폼을 설치하는 일례를 도시한 도면이다.
도 6은 다양한 실시예들에 따른 멀티 플랫폼 기반의 어플리케이션 제어 방법을 도시한 흐름도이다.
도 7은 다양한 실시예들에 따른 가상 시스템에 어플리케이션을 설치하는 일례를 도시한 도면이다.
도 8은 다양한 실시예들에 따른 어플리케이션을 실행하는 일례를 도시한 도면이다.
도 9는 다양한 실시예들에 따른 전자 장치와 서버 간의 통신 흐름을 도시한 도면이다.
도 10은 다양한 실시예들에 따른 전자 장치에 저장된 파일을 가상 시스템으로 전송하는 일례를 도시한 도면이다.
도 11은 다양한 실시예들에 따른 가상 시스템에서 어플리케이션을 삭제하는 일례를 도시한 도면이다.
이하, 본 개시의 다양한 실시예가 첨부된 도면을 참조하여 기재된다. 그러나, 이는 본 개시를 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 개시의 실시예의 다양한 변경 (modification), 균등물 (equivalent), 및/또는 대체물 (alternative)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, "가진다", "가질 수 있다", "포함한다" 또는 "포함할 수 있다" 등의 표현은 해당 특징 (예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "A 또는 B", "A 또는/및 B 중 적어도 하나", 또는 "A 또는/및 B 중 하나 또는 그 이상"등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B", " A 및 B 중 적어도 하나", 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는 (3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
다양한 실시예에서 사용된 "제 1", "제 2", "첫째", 또는 "둘째" 등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 해당 구성요소들을 한정하지 않는다. 상기 표현들은 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 수 있다. 예를 들면, 제 1 사용자 기기와 제 2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 개시의 권리 범위를 벗어나지 않으면서 제 1 구성요소는 제 2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제 1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소 (예: 제 1 구성요소)가 다른 구성요소 (예: 제 2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어 ((operatively or communicatively) coupled with/to)" 있다거나 "접속되어 (connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소 (예: 제 3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소 (예: 제 1 구성요소)가 다른 구성요소 (예: 제 2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소 (예: 제 3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된 (또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한 (suitable for)," "~하는 능력을 가지는 (having the capacity to)," "~하도록 설계된 (designed to)," "~하도록 변경된 (adapted to)," "~하도록 만들어진 (made to)," 또는 "~를 할 수 있는 (capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성 (또는 설정)된"은 하드웨어적으로 "특별히 설계된 (specifically designed to)"것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성 (또는 설정)된 프로세서"는 해당 동작을 수행하기 위한 전용 프로세서 (예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서 (generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 다른 실시예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 개시의 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 일반적으로 사용되는 사전에 정의된 용어들은 관련 기술의 문맥 상 가지는 의미와 동일 또는 유사한 의미를 가지는 것으로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 개시의 실시예들을 배제하도록 해석될 수 없다.
본 개시의 다양한 실시예들에 따른 전자 장치는 통신 기능을 포함하는 모든 개념의 장치를 포함할 수 있다. 예를 들면, 전자 장치는 스마트폰 (smartphone), 홈 게이트웨이(Home Gateway), 홈 오토메이션(Home Automation), 건물 자동화(Building Automation), 태블릿 PC (tablet personal computer), 이동 전화기 (mobile phone), 화상 전화기, 전자북 리더기 (e-book reader), 데스크탑 PC (desktop personal computer), 랩탑 PC (laptop personal computer), 넷북 컴퓨터 (netbook computer), 워크스테이션 (workstation), 서버, PDA (personal digital assistant), PMP (portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라 (camera), 또는 웨어러블 장치 (wearable device)(예: 스마트 안경, 머리 착용형 장치 (head-mounted-device(HMD)), 전자 의복, 전자 팔찌, 전자 목걸이, 전자 앱세서리 (appcessory), 전자 문신, 스마트 미러, 또는 스마트 와치 (smart watch))중 적어도 하나를 포함할 수 있다.
어떤 실시예들에서, 전자 장치는 스마트 가전 제품 (smart home appliance)일 수 있다. 스마트 가전 제품은, 예를 들면, 텔레비전, DVD (digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기 청정기, 셋톱 박스 (set-top box), 홈 오토매이션 컨트롤 패널 (home automation control panel), 보안 컨트롤 패널 (security control panel), TV 박스 (예: 삼성 HomeSync™, 애플TV™, 또는 구글 TV™), 게임 콘솔 (예: Xbox™, PlayStation™), 전자 사전, 전자 키, 캠코더 (camcorder), 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시예에서, 전자 장치는, 각종 의료기기 (예: 각종 휴대용 의료측정기기 (혈당 측정기, 심박 측정기, 혈압 측정기, 또는 체온 측정기 등), MRA (magnetic resonance angiography), MRI (magnetic resonance imaging), CT (computed tomography), 촬영기, 또는 초음파기 등), 네비게이션 (navigation) 장치, GPS 수신기 (global positioning system receiver), EDR (event data recorder), FDR (flight data recorder), 자동차 인포테인먼트 (infotainment) 장치, 선박용 전자 장비(예: 선박용 항법 장치, 자이로 콤파스 등), 항공 전자기기 (avionics), 보안 기기, 차량용 헤드 유닛 (head unit), 산업용 또는 가정용 로봇, 금융 기관의 ATM (automatic teller’s machine), 상점의 POS (point of sales), 또는 사물 인터넷 장치 (internet of things)(예: 전구, 각종 센서, 전기 또는 가스 미터기, 스프링클러 장치, 화재경보기, 온도조절기 (thermostat), 가로등, 토스터 (toaster), 운동기구, 온수탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다.
어떤 실시예에 따르면, 전자 장치는 가구 (furniture) 또는 건물/구조물의 일부, 전자 보드 (electronic board), 전자 사인 수신 장치 (electronic signature receiving device), 프로젝터 (projector), 또는 각종 계측 기기 (예: 수도, 전기, 가스, 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시예에서, 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 어떤 실시예에 따른 전자 장치는 플렉서블 전자 장치일 수 있다. 또한, 본 개시의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 기술 발전에 따른 새로운 전자 장치를 포함할 수 있다.
본 실시예는 전자 장치의 사용자가 여러 종류 및 여러 버전의 플랫폼에 특화된 어플리케이션을 자유롭게 사용하도록 하기 위한 것이다. 즉, 본 실시예는 전자 장치의 플랫폼에 관계없이 다양한 어플리케이션을 실행할 수 있도록 하는 장치 및 방법을 제공한다. 참고로, 플랫폼은 소프트웨어가 구동 가능한 하드웨어 아키텍처나 소프트웨어 프레임워크(응용 프로그램 프레임워크를 포함하는)의 종류를 설명하는 단어이다. 예컨대, 플랫폼은 컴퓨터의 아키텍처, 운영 체제(OS), 프로그램 언어, 그리고 관련 런타임 라이브러리 또는 GUI를 포함할 수 있다. 이하에서, 플랫폼은 전자 장치 110 내 운영체제를 의미하는 것으로 설명한다.
본 실시예는 전자 장치의 플랫폼을 변경하지 않고, 사용자가 원하는 플랫폼에 맞게 변형된 어플리케이션의 설치만으로 자유롭게 원하는 어플리케이션을 실행할 수 있다. 이하에서 설명하는 어플리케이션은 '스트리밍 어플리케이션'을 의미하는 것일 수 있다. 즉, 가상 시스템에 플랫폼별 어플리케이션을 설치하고, 전자 장치의 요청이 있는 경우, 가상 시스템에서 요청된 플랫폼에 맞는 어플리케이션을 실행시켜, 어플리케이션 실행 화면을 전자 장치로 전송함으로써, 사용자에게 실제로 어플리케이션이 전자 장치에 실행되는 것과 동일하게 어플리케이션 실행 환경을 제공할 수 있다.
도 1은 다양한 실시예들에 따른 전자 장치와 서버 간의 네트워크 환경을 도시한 도면이다.
도 1을 참고하면, 전자 장치 110은 스마트폰, 패드, 노트북과 같은 전자 장치를 모두 포함하는 개념이다. 전자 장치 110은 사용자의 요청에 따라, 자격 서버(Entitlement Server) 120으로 가상 장치 등록을 위한 서비스를 신청할 수 있다. 이를 위해, 전자 장치 110은 전자 장치 110에 할당된 계정(account)을 자격 서버 120으로 전송할 수 있다. 상기 계정은 전자 장치 110에 고유하게 할당된 것으로, 전자 장치 110을 식별하기 위한 식별자로 해석될 수 있다. 전자 장치 110은 상기 서비스 신청에 대한 응답으로 자격 서버 120으로부터 권한 키 및 가상 디바이스 관리 서버 130으로의 접속 정보를 수신할 수 있다. 전자 장치 110은 상기 권한 키를 저장부에 저장할 수 있다.
또한, 전자 장치 110은 상기 접속 정보를 통해 가상 디바이스 관리 서버 130에 상기 권한 키를 포함하는 가상 디바이스 생성을 요청할 수 있다. 전자 장치 110은 가상 디바이스와 관련된 명령을 처리하기 위한 앱 매니저 및 어플리케이션 실행을 제어하기 위한 앱 플레이어를 포함할 수 있다. 전자 장치 110은 상기 가상 디바이스 생성에 대한 응답으로 가상 디바이스 관리 서버 130으로부터 가상 디바이스 ID를 수신할 수 있다. 전자 장치 110은 상기 수신된 가상 디바이스 ID를 저장부에 저장할 수 있다. 전자 장치 110은 어플리케이션 설치/실행/ 삭제 시, 상기 가상 디바이스 ID를 포함하는 요청을 자격 서버 120을 통해 가상 디바이스 관리 서버 130으로 전송할 수 있다.
예컨대, 전자 장치 110은 자격 서버 120을 통해 가상 디바이스 관리 서버 130으로 원하는 플랫폼의 어플리케이션 실행 요청을 전송할 수 있다. 이때, 전자 장치 110은 가상 디바이스 ID와 함께 플랫폼 정보 및 어플리케이션 ID를 포함하는 요청을 전송할 수 있다. 이에 대한 응답으로, 전자 장치 110은 가상 디바이스 관리 서버 130으로부터 어플리케이션 실행과 관련된 서비스 주소(예: URL)를 수신받아, 상기 서비스 주소를 통해 어플리케이션의 실행 화면을 제공받아 표시부에 표시할 수 있다. 이로써, 전자 장치 110은 플랫폼을 변경하거나, 전자 장치 110의 플랫폼과 다른 플랫폼의 어플리케이션을 로컬에 설치하지 않고도, 용이하게 원하는 어플리케이션을 실행시킬 수 있다.
자격 서버 120은 가상 디바이스 등록, 플랫폼 설치 및 삭제, 어플리케이션 설치 및 삭제, 실행에 필요한 권한을 부여하는 서버일 수 있다. 자격 서버 120은 전자 장치 110의 계정이 포함된 서비스 신청을 수신하면, 전자 장치 110의 계정이 유효한 지 여부를 판단하여 전자 장치 110에 가상 디바이스를 등록할 수 있는 권한을 부여할 수 있다. 자격 서버 120은 상기 계정이 유효한 경우, 권한 키(Authorization Key)를 전자 장치 110으로 발급할 수 있다. 상기 권한 키 발급 시, 자격 서버 120은 가상 디바이스 관리 서버 130으로의 접속 정보를 전자 장치 110으로 제공할 수 있다.
이러한, 자격 서버 120은 가상 디바이스 관리 서버 130에 포함되어 구성될 수도 있고, 별도의 서버로 구성될 수도 있다. 따라서, 자격 서버 120은 계정이 확인된 전자 장치에 한해서만 가상 디바이스 관리 서버 130으로의 접속 정보를 제공함으로써, 가상 디바이스 관리 서버 130의 보안을 유지할 수 있다. 자격 서버 120은 어플리케이션 설치/삭제/실행, 플랫폼 설치를 요청한 주체(예: 전자 장치 110)의 유효성을 판단하여, 가상 디바이스 관리 서버 130으로의 접속정보를 제공할 수 있다.
가상 디바이스 관리 서버 130은 가상 디바이스, 플랫폼, 어플리케이션 정보를 관리하는 서버일 수 있다. 가상 디바이스 관리 서버 130은 상기 가상 디바이스 생성을 요청받고, 전자 장치 110으로 가상 디바이스 ID를 발급할 수 있다. 가상 디바이스 관리 서버 130은 하나의 전자 장치에 하나의 가상 디바이스 ID를 발급할 수도 있고, 하나의 전자 장치에 복수의 가상 디바이스 ID를 발급할 수도 있다. 하나의 전자 장치에 하나의 가상 디바이스 ID를 발급하는 경우, 가상 디바이스 ID에 복수의 플랫폼 정보 및 어플리케이션 정보가 대응될 수 있다. 하나의 전자 장치에 복수의 가상 디바이스 ID를 발급하는 경우, 하나의 가상 디바이스 ID에 하나의 플랫폼 정보 및 어플리케이션 정보가 대응될 수 있다. 이렇게, 가상 디바이스 ID를 발급하고 나면, 가상 디바이스 관리 서버 130은 상기 가상 디바이스 ID와 권한 키를 매핑하여 데이터베이스 140에 저장할 수 있다. 또한, 가상 디바이스 관리 서버 130은 전자 장치 110의 요청이 있는 경우, 전자 장치 110으로 지원 가능한 플랫폼 정보 및 어플리케이션 정보를 전송할 수 있다.
가상 디바이스 관리 서버 130은 종류 및 버전이 상이한 복수의 플랫폼 및 상기 복수의 플랫폼에서 실행되는 복수의 어플리케이션이 설치된 가상 시스템 130a를 포함할 수 있다. 하나의 가상 시스템에는 하나의 플랫폼이 설치되고, 플랫폼에 하나 또는 하나 이상의 어플리케이션이 설치될 수 있다. 예를 들어, 가상 시스템 130b에는 Platform 1.0이 설치되고, Platform 1.0에 App1, App2, App3 등의 어플리케이션이 설치될 수 있다. 가상 시스템 130c에는 Platform 2.0이 설치되고, Platform 2.0에 App1, App2, App3 등의 어플리케이션이 설치될 수 있다. 가상 시스템 130d에는 Platform 3.0이 설치되고, Platform 3.0에 App1, App2, App3 등의 어플리케이션이 설치될 수 있다. 따라서, 가상 디바이스 관리 서버 130은 전자 장치 110로부터 특정 플랫폼의 어플리케이션 실행 요청이 있는 경우, 요청된 플랫폼의 어플리케이션을 실행 가능한 가상 시스템에 접속할 수 있는 서비스 주소를 전자 장치 110로 제공함으로써, 서비스 주소를 통해 가상 시스템으로부터 어플리케이션 실행 화면이 전자 장치 110로 전달될 수 있도록 제어할 수 있다.
예들 들어, 사용자는 하나의 전자 장치를 소유하고 있으며, 플랫폼이 다른 기기에서 실행 가능한 어플리케이션 실행을 요청할 수 있다. 이 경우, 전자 장치는 가상 디바이스 ID와, 실행하고자 하는 플랫폼과 어플리케이션에 대한 정보를 가상 디바이스 관리 서버 130로 전송할 수 있다. 또는, 사용자는 스마트폰, 패드, 노트북을 소유하고 있으며, 자신이 소유한 기기에서 각각 가상 디바이스 ID를 발급받을 수 있다. 제1 플랫폼을 사용하는 스마트폰으로 제2 플랫폼을 사용하는 패드에서 실행 가능한 어플리케이션 실행을 요청하는 경우, 패드와 연관된 가상 디바이스 ID와, 실행하고자 하는 플랫폼과 어플리케이션에 대한 정보를 전송할 수 있다. 또는, 제2 플랫폼을 사용하는 패드로 제3 플랫폼을 사용하는 노트북에서 실행 가능한 어플리케이션 실행을 요청하는 경우, 노트북과 연관된 가상 디바이스 ID와 실행하고자 하는 플랫폼과 어플리케이션에 대한 정보를 전송할 수 있다.
도 2는 다양한 실시예들에 따른 가상 디바이스 관리 서버의 구성을 도시한 블록도이다.
도 2를 참고하면, 가상 디바이스 관리 서버 200(또는 가상 디바이스 관리 장치)은 제어부 210 데이터베이스 220, 통신부 230, 및 가상 시스템 240을 포함할 수 있다.
가상 시스템 240은 복수의 플랫폼들이 설치되고, 각 플랫폼에 하나 또는 하나 이상의 어플리케이션이 설치되는 공간일 수 있다. 예를 들어, 제1 가상 시스템에는 제1 플랫폼 버전 1.0에 복수의 어플리케이션들이 설치되는 것이며, 제2 가상 시스템에는 제1 플랫폼 버전 2.0에 복수의 어플리케이션들이 설치되는 것이며, 제3 가상 시스템에는 제2 플랫폼 버전 1.3에 복수의 어플리케이션들이 설치되는 것일 수 있다.
제어부 210은 가상 디바이스 관리 서버 200의 전반적인 동작 및 내부 구성들 간의 신호 흐름을 제어하고, 데이터를 처리한다. 제어부 210은 권한 모듈 211, 발급 모듈 212, 설치 제어 모듈 213, 실행 모듈 214 및 업로드 제어 모듈 215를 포함할 수 있다.
권한 모듈 211은 가상 디바이스 등록, 플랫폼 설치 및 삭제, 어플리케이션 설치 삭제, 실행에 필요한 권한을 부여하는 역할을 할 수 있다. 권한 모듈 211은 통신부 230을 통해 전자 장치 110의 계정이 포함된 서비스 신청을 수신하고, 상기 서비스 신청이 가상 디바이스 등록을 위한 것으로 판단할 수 있다. 권한 모듈 211은 전자 장치 110의 계정이 유효한 지 여부를 판단하여 전자 장치 110에 가상 디바이스를 등록할 수 있는 권한을 부여할 수 있다. 권한 모듈 211은 상기 계정이 유효한 경우, 권한 키를 전자 장치 110으로 발급할 수 있다. 권한 모듈 211은 상기 권한 키 발급 시, 가상 디바이스 관리 서버 200으로의 접속 정보를 전자 장치 110으로 제공할 수 있다. 상기 권한 키는 가상 디바이스 ID를 발급받기 위한 전처리 과정일 수 있다. 권한 모듈 211은 플랫폼 제공자로부터 플랫폼 설치 또는 삭제 요청이 있는 경우, 상기 플랫폼 제공자의 유효성을 판단한 뒤, 플랫폼 설치 또는 삭제에 필요한 권한을 부여할 수 있다. 또한, 권한 모듈 211은 전자 장치 110로부터 어플리케이션 설치, 삭제, 또는 실행 요청이 있는 경우, 전자 장치 110의 유효성을 판단한 뒤, 어플리케이션 설치, 삭제, 또는 실행 에 필요한 권한을 부여할 수 있다.
발급 모듈 212는 통신부 230을 통해 전자 장치 110로부터 상기 권한 키를 포함하는 가상 디바이스 등록 요청을 받은 경우, 가상 디바이스 ID를 발급할 수 있다. 발급 모듈 212는 상기 권한 키를 기반으로 가상 디바이스 ID를 발급하여 통신부 230를 통해 전자 장치 110로 전송할 수 있도록 한다. 가상 디바이스 ID는 전자 장치 110의 플랫폼과 상관없이 원하는 플랫폼의 어플리케이션을 실행할 수 있는 가상의 물리적인 공간이 할당되는 것이다. 발급 모듈 212는 상기 권한 키와 상기 가상 디바이스 ID를 매핑하여 데이터베이스 220에 저장할 수 있다. 실시예로, 상기 권한 키와 함께 전자 장치 110의 계정도 함께 수신될 수도 있다. 이 경우, 발급 모듈 212는 전자 장치 110의 계정, 상기 권한 키, 상기 가상 디바이스 ID를 매핑하여 데이터베이스 220에 저장할 수 있다. 발급 모듈 212는 하나의 전자 장치에 한 개의 가상 디바이스 ID를 발급할 수도 있고, 하나의 전자 장치에 복수 개의 상기 가상 디바이스 ID를 발급할 수도 있다.
설치 제어 모듈 213은 플랫폼 및 어플리케이션의 설치를 제어할 수 있다. 예를 들어, 신규 플랫폼이 출시되면, 플랫폼 제공자는 가상 디바이스 관리 서버 200에 신규 플랫폼을 설치할 수 있다. 설치 제어 모듈 213은 통신부 230을 통해 플랫폼 제공자로부터 플랫폼 설치를 요청받을 수 있다. 권한 모듈 211에 의해 플랫폼 제공자의 유효성이 확인되면, 설치 제어 모듈 213은 플랫폼 제공자로부터 권한 모듈 211에서 발급한 권한 키와 함께 신규 플랫폼에 대한 설치정보를 수신할 수 있다. 예를 들어, 상기 유효성이 확인되면, 설치 제어 모듈 213은 권한 모듈 211을 통해 신규 플랫폼을 설치하기 위한 설치 주소(예: FTP)를 제공할 수 있다. FTP(File Transfer Protocol)는 파일을 전송하는데 사용되는 프로토콜이다. 설치 제어 모듈 213은 플랫폼 설치를 위한 파일을 수신하기 위해 설치 주소를 설정할 수 있다. 상기 설치 주소는 상기 플랫폼을 설치 가능한 가상 시스템 240에 접속할 수 있는 것이다. 상기 설치정보는 신규 플랫폼의 종류, 버전, 파일 등을 포함할 수 있다. 설치 제어 모듈 213은 상기 설치 주소를 통해 상기 신규 플랫폼에 대한 설치정보를 수신받아, 신규 플랫폼을 가상 시스템 240에 설치할 수 있다.
설치 제어 모듈 213은 통신부 230을 통해 전자 장치 110로부터 어플리케이션에 대한 설치를 요청받을 수 있다. 설치 요청 시, 설치 제어 모듈 213은 권한 모듈 211을 통해 가상 디바이스 ID와 함께 설치하고자 하는 어플리케이션에 대한 설치정보를 수신할 수 있다. 상기 설치정보는 어플리케이션을 실행하기 위한 플랫폼 정보, 어플리케이션 파일 이름을 포함할 수 있다. 설치 제어 모듈 213은 상기 설치정보를 기반으로 어플리케이션 ID를 할당할 수 있다. 어플리케이션 ID는 어플리케이션을 실행하기 위한 플랫폼과 어플리케이션을 식별하기 위한 것이다. 설치 제어 모듈 213은 권한 모듈 211을 통해 상기 어플리케이션 ID 및 어플리케이션을 설치하기 위한 설치 주소(예: FTP)를 제공할 수 있다. 상기 설치 주소는 상기 어플리케이션을 설치 가능한 가상 시스템 240에 접속할 수 있는 것이다. 설치 제어 모듈 213은 상기 설치 주소를 통해 상기 어플리케이션 설치를 위한 파일을 수신받아, 어플리케이션을 가상 시스템 240에 설치할 수 있다.
일반적으로, 어플리케이션은 UI(User Interface)를 제공하는 클라이언트와, 어플리케이션 실행을 위한 로직을 제공하는 호스트로 구분될 수 있다. 설치 제어 모듈 213은 로직에 해당하는 호스트를 가상 시스템 240에 설치하고, 상기 UI를 제공하는 클라이언트는 전자 장치 110에 설치할 수 있다.
설치 제어 모듈 213은 통신부 230을 통해 전자 장치 110로부터 어플리케이션에 대한 삭제를 요청받을 수 있다. 삭제 요청 시, 설치 제어 모듈 213은 권한 모듈 211을 통해 삭제를 요청한 어플리케이션 ID를 수신할 수 있다. 설치 제어 모듈 213은 상기 어플리케이션 ID가 가상 시스템 240에 설치되어 있는지 여부를 판단하여 상기 어플리케이션 ID에 대한 유효성을 판단할 수 있다. 상기 어플리케이션 ID가 유효한 경우, 설치 제어 모듈 213은 삭제를 위한 삭제 주소를 권한 모듈 211을 통해 전자 장치 110로 전송할 수 있다. 상기 삭제 주소는 상기 어플리케이션이 설치된 가상 시스템 240에 접속할 수 있는 URL일 수 있다. 설치 제어 모듈 213은 상기 삭제 주소를 통해 상기 어플리케이션 삭제를 위한 제어명령을 수신받아, 어플리케이션을 가상 시스템 240에서 삭제할 수 있다. 상기에서도 설명한 바와 같이, 가상 시스템 240에서 로직에 해당하는 호스트를 삭제한 경우, 전자 장치 110은 UI를 제공하는 클라이언트를 저장부에서 삭제할 수 있다.
실행 모듈 214는 통신부 230을 통해 전자 장치 110로부터 어플리케이션에 대한 실행을 요청받을 수 있다. 전자 장치 110은 사용자의 어플리케이션 실행을 요청받은 경우, 가상 디바이스 관리 서버 200으로 요청된 어플리케이션 ID를 포함하는 어플리케이션 실행을 위한 서비스 주소를 요청할 수 있다. 즉, 실행 요청 시, 실행 모듈 214는 권한 모듈 211을 통해 어플리케이션 ID를 수신받을 수 있다. 실행 모듈 214는 어플리케이션 ID에 해당하는 어플리케이션을 실행시킬 수 있는 서비스 주소(예: 가상 시스템 240에 접속할 수 있는 URL) 및 로컬 주소(예: 가상 시스템 240이 전자 장치 110에 저장된 파일을 접근할 수 있는 주소)를 권한 모듈 211을 통해 전자 장치 110으로 전달할 수 있다. 이때, 권한 모듈 211은 상기 서비스 주소 및 상기 로컬 주소를 전자 장치 110으로 전달할 때 권한 키를 함께 전달할 수 있다. 실행 모듈 214는 상기 서비스 주소를 통해 어플리케이션 실행과 관련된 제어명령, UI 관련 데이터를 송수신할 수 있다.
업로드 제어 모듈 215는 상기 로컬 주소를 통해 전자 장치 110에 저장된 로컬 파일을 수신할 수 있다. 어플리케이션 실행 시, 전자 장치 110 내 로컬 자원이 필요한 경우, 업로드 제어 모듈 215는 전자 장치 110 내 로컬 자원을 수신하여 실행되는 어플리케이션과 공유할 수 있다.
데이터베이스 220은 전자 장치의 계정, 권한 키, 가상 디바이스 ID를 매칭한 장치정보를 포함할 수 있다. 데이터베이스 220은 하나의 가상 디바이스 ID에 하나의 플랫폼에 대응하는 하나 이상의 어플리케이션 ID를 매칭하여 저장할 수 있다.
통신부 230은 제어부 210의 제어 하에, 네트워크(예: 이동통신망(예: LTE), 무선 또는 유선 랜(Wireless LAN) 등)를 통해 외부 장치와 데이터 통신을 수행할 수 있다. 통신부 230은 전자 장치 110 또는 플랫폼 제공자와 데이터 통신을 수행할 수 있다.
도 3은 다양한 실시예들에 따른 전자 장치의 구성을 도시한 블록도이다.
도 3을 참고하면, 전자 장치 300은 프로세서 310, 통신부 320, 오디오 처리부 330, 표시부 340, 입력부 350 및 저장부 360을 포함할 수 있다.
프로세서 310은 전자 장치 300의 전반적인 동작 및 전자 장치 300의 내부 구성들 간의 신호 흐름을 제어하고, 데이터를 처리하고, 배터리에서 상기 구성들로의 전원 공급을 제어한다. 프로세서 310은 어플리케이션 프로세서(Application Processor; AP), 커뮤니케이션 프로세서(CP: communication processor), 그래픽 처리 유닛(Graphic Processing Unit; GPU) 및 오디오 프로세서를 포함할 수 있다. 여기서 CP는 통신부 320의 구성 요소일 수도 있다.
프로세서 310(예: AP)은 연결된 비휘발성 메모리(예: 보조 메모리로써 활용되는 메모리) 또는 다른 구성요소 중 적어도 하나로부터 수신한 명령 또는 데이터를 휘발성 메모리(예: 메인 메모리로써 활용되는 메모리)에 로드(load)하여 처리할 수 있다. 또한, 프로세서 310은 다른 구성요소 중 적어도 하나로부터 수신하거나 다른 구성요소 중 적어도 하나에 의해 생성된 데이터를 비휘발성 메모리에 저장(store)할 수 있다.
프로세서 310은 앱 매니저 311, 앱 플레이어 312 및 가상 디바이스 매니저 313을 포함할 수 있다. 앱 매니저 311은 입력부 350을 통해 어플리케이션 설치/삭제/실행에 관한 요청을 수신할 수 있다. 앱 매니저 311은 상기 요청을 가상 디바이스 매니저 313에게 전달할 수 있다. 이러한, 앱 매니저 311은 Local App Downloader, App Uploader, App Installer Client, App Remover를 포함할 수 있다. 예컨대, 사용자에 의해 어플리케이션 설치 요청이 있는 경우, Local App Downloader는 앱 마켓으로부터 어플리케이션 설치와 관련된 데이터를 다운로드할 수 있다. 앱 매니저 311은 다운로드 받은 어플리케이션을 어플리케이션 클라이언트와 어플리케이션 호스트로 분리하고, 어플리케이션 클라이언트는 전자 장치 내에 설치를 할 수 있다. 또한, 앱 매니저 311은 가상 디바이스 매니저 313으로부터 어플리케이션 ID 및 상기 어플리케이션 설치주소를 전달받아, 상기 어플리케이션 설치주소를 기반으로 App Installer Client를 통해 어플리케이션 호스트를 가상 시스템 240에 설치할 수 있다. 또한, 어플리케이션 삭제 시, 앱 매니저 311은 가상 디바이스 매니저 313으로부터 어플리케이션 ID 및 상기 어플리케이션 삭제주소를 전달받아, 상기 어플리케이션 삭제주소를 기반으로 UI를 제공하는 어플리케이션 클라이언트를 저장부 360에서 삭제할 수 있다.
가상 디바이스 매니저 313은 사용자로부터 가상 디바이스 생성을 요청받은 경우, 통신부 320을 통해 자격 서버 120으로 전자 장치 300의 계정을 전송할 수 있다. 가상 디바이스 매니저 313은 상기 계정 전송에 대한 응답으로 통신부 320을 통해 자격 서버 120으로부터 권한 키를 수신할 수 있다. 가상 디바이스 매니저 313은 상기 권한 키를 기반으로 가상 디바이스 관리 서버 120에 가상 디바이스 생성을 요청할 수 있다. 가상 디바이스 매니저 313은 앱 매니저 311로부터 어플리케이션 설치를 요청받는 경우, 사용 가능한 플랫폼 정보를 자격 서버 120을 통해 가상 디바이스 관리 서버 130으로 요청할 수 있다. 가상 디바이스 매니저 313은 가상 디바이스 ID, 설치를 원하는 어플리케이션 파일 이름, 플랫폼 정보를 자격 서버 120으로 전달할 수 있다. 가상 디바이스 매니저 313은 자격 서버 120을 통해 가상 디바이스 관리 서버 130으로부터 어플리케이션 ID 및 어플리케이션 설치주소를 수신할 수 있다. 가상 디바이스 매니저 313은 상기 어플리케이션 ID 및 상기 어플리케이션 설치주소를 앱 매니저 311로 전달할 수 있다.
또한, 가상 디바이스 매니저 313은 앱 매니저 311로부터 어플리케이션 삭제를 요청받은 경우, 통신부 320을 통해 삭제할 어플리케이션 ID를 자격 서버 120으로 전송할 수 있다. 가상 디바이스 매니저 313은 통신부 320을 통해 자격 서버 120으로부터 삭제 주소를 수신받을 수 있다. 가상 디바이스 매니저 313은 상기 삭제 주소를 앱 매니저 311로 전달할 수 있다. 또한, 가상 디바이스 매니저 313은 앱 매니저 311로부터 어플리케이션 실행을 요청받은 경우, 통신부 320을 통해 실행할 어플리케이션 ID를 자격 서버 120으로 전송할 수 있다. 가상 디바이스 매니저 313은 통신부 320을 통해 자격 서버 120으로부터 권한 키와 함께, 어플리케이션을 실행시킬 수 있는 서비스 주소 및 로컬 주소를 수신받을 수 있다. 가상 디바이스 매니저 313은 상기 서비스 주소 및 상기 로컬 주소를 앱 플레이어 312로 전달할 수 있다.
어플리케이션 실행 시, 전자 장치 300 내 Local Storage Manager와 가상 디바이스 관리 서버 130의 Resource Manager간은 FTP로 연결이 이루어진다. 전자 장치 300 내 로컬 자원 사용이 요청된 경우, 가상 디바이스 매니저 313은 저장부 360에 저장된 자원(예: 데이터, 파일 등)을 가상 디바이스 관리 서버 130과 공유할 수 있다. 이때, 저장부 360은 전자 장치 300 내부에 메모리이거나, 전자 장치 300과 연관된 외부 메모리일 수 있다. 예컨대, 어플리케이션 실행 시, 표시부 340에 가상 디스크 드라이브(L:)이 아이콘 형태로 보여지게 되는데, 이를 클릭하면 전자 장치 300의 어플리케이션 폴더와 가상 디바이스 관리 서버 130의 어플리케이션 폴더 간의 동기화 여부를 확인할 수 있다. 이때, 동기화는 전자 장치 300로부터 가상 디바이스 관리 서버 130으로 데이터가 이동되는 단방향 동기화이고, 상기 로컬 주소를 통해 이루어 진다.
앱 플레이어 312는 어플리케이션 실행을 제어하는 역할을 한다. 이러한, 앱 플레이어 312는 App Selector 및 App Player를 포함할 수 있다. App Selector는 앱 플레이어 312에게 상기 서비스 주소, 상기 로컬 주소, 상기 권한 키를 전달할 수 있다. 앱 플레이어 312는 상기 서비스 주소를 기반으로 어플리케이션을 구동할 수 있다. 앱 플레이어 312는 상기 서비스 주소를 통해 가상 시스템 240에 접근하여 가상 시스템 240에서 실행한 어플리케이션 실행화면을 수신하여 표시부 340에 표시할 수 있다.
통신부 320은 프로세서 310의 제어 하에, 네트워크(예: 이동통신망(예: LTE), 무선 또는 유선 랜(LAN) 등)를 통해 외부 장치(예: 타 전자 장치, 서버 등)와 음성 통화, 화상 통화 또는 데이터 통신을 수행한다. 통신부 320은 송신되는 신호의 주파수를 상승변환 및 증폭하는 무선주파수 송신부와, 수신되는 신호의 주파수를 저잡음 증폭 및 하강 변환하는 무선주파수 수신부를 포함할 수 있다. 통신부 320은 셀룰러 모듈(예: 통신망(예: LTE, LTE-A, CDMA, WCDMA, UMTS, WiBro 또는 GSM 등)을 통해서 음성 통화, 영상 통화, 문자 서비스 또는 인터넷 서비스 등을 제공하는 통신 모듈 등), 디지털 방송 모듈(예컨대, DMB 모듈) 및 근거리 통신 모듈(예, 블루투스(bluetooth) 모듈, NFC(Near Field Communication) 모듈)을 포함할 수 있다.
오디오 처리부 330은 프로세서 310의 제어 하에 음성을 출력할 수 있다. 오디오 처리부 330은 스피커(Speaker; SPK) 및 마이크(Microphone; MIC)와 결합하여 음성 인식, 음성 녹음, 디지털 레코딩(recording) 및 통화를 위한 오디오 신호(예, 음성 데이터)의 입력 및 출력을 수행한다. 스피커는 프로세서 310으로부터 수신한 오디오 신호를 음파(sound wave)로 변환하여 출력한다. 마이크는 사람이나 기타 소리원(sound source)들로부터 전달된 음파를 오디오 신호로 변환한다. 즉, 오디오 처리부 330은 마이크 또는 통신부 320으로부터 오디오 신호를 수신하고, 수신한 오디오 신호를 아날로그로 D/A 변환하고 증폭한 후 스피커로 출력한다.
표시부 340은 프로세서 310의 제어 하에 다양한 정보를 표시할 수 있다. 표시부 340은 표시 패널 또는 홀로그램을 포함할 수 있다. 표시 패널은 예컨대, LCD(liquid-crystal display) 또는 AM-OLED(active-matrix organic light-emitting diode) 등일 수 있다. 표시 패널은, 예를 들면, 유연하게(flexible), 투명하게(transparent) 또는 착용할 수 있게(wearable) 구현될 수 있다. 홀로그램은 빛의 간섭을 이용하여 입체 영상을 허공에 보여줄 수 있다. 표시 패널은 사용자와 전자 장치 300 간의 상호 작용을 위한 입력부인 "터치 패널"을 포함할 수 있다. 그렇다면, 표시부 340는 터치스크린으로 바꾸어 지칭될 수 있다.
터치 패널은 표시부 340의 화면에 위치하는 애드 온 타입(add-on type)이나 표시부 340 내에 삽입되는 온 셀 타입(on-cell type) 또는 인 셀 타입(in-cell type)으로 구현될 수 있다. 터치 패널은 예를 들면, 정전식, 감압식, 적외선 방식 또는 초음파 방식 중 적어도 하나의 방식으로 사용자 입력을 감지하고, 사용자 입력에 대응되는 이벤트를 생성하여 프로세서 310으로 전달할 수 있다. 상기 사용자 입력은 전자 펜 또는 사용자의 신체의 일부를 이용한 터치, 제스쳐, 근접, 또는 호버링 입력을 포함할 수 있다. 터치 패널은 화면에 직접 접촉된(contact) 또는 터치 패널이 감지 가능한 일정 거리 이내로 화면에 인접된(proximate or hovering)된 전도성 물체(예: 손가락 또는 스타일러스)의 제스처를 감지할 수 있다. 터치 패널은 제스처에 대응되는 이벤트를 발생하고, 이를 프로세서 310으로 전달할 수 있다.
입력부 350은 표시부 340에 설치된 터치 패널과 다른 것으로써, 예를 들어, 터치 키를 포함할 수 있다. 터치 키는 인체 및 사물의 터치 또는 접근을 인식할 수 있다. 입력부 350은 사용자 입력에 응답하여 이벤트를 생성하고, 이를 프로세서 310으로 전달할 수 있다. 입력부 350은 터치 방식 외에 다른 방식의 키(예: 돔(dome) 키)를 더 포함하여 이루어질 수 있다. 예컨대, 사용자가 돔 키를 내리누르면, 돔 키가 변형되어 인쇄회로기판에 접촉되고, 이에 따라 인쇄회로기판에서 이벤트가 발생되어 프로세서 310으로 전달될 수 있다.
저장부 360은 프로세서 310의 제어 하에, 전자 장치 300에서 생성되거나 통신부 320을 통해 외부장치로부터 수신한 데이터를 저장한다. 즉, 저장부 360은 상기 권한 키, 상기 가상 디바이스 ID 및 어플리케이션 ID 등을 저장할 수 있다. 또한 저장부 360은 부팅 프로그램, 적어도 하나 이상의 운영체제 및 어플리케이션들을 저장한다. 저장부 360은 메인 메모리(main memory)와 보조 메모리(secondary memory)를 포함할 수 있다. 메인 메모리는 예컨대, 램(RAM) 등으로 구현될 수 있다. 보조 메모리는 디스크, 램(RAM), 롬(ROM) 또는 플래시 메모리 등으로 구현될 수 있다. 메인 메모리는 보조 메모리로부터 로딩된 각종 프로그램 예컨대, 부팅 프로그램, 운영체제(예: 커널), 미들웨어, API(Application Programming Interface) 및 어플리케이션을 저장할 수 있다.
프로세서 310으로 배터리의 전원이 공급되면 먼저 부팅 프로그램이 메인 메모리로 로딩(loading)될 수 있다. 이러한 부팅 프로그램은 운영체제를 메인 메모리로 로딩할 수 있다. 운영체제는 어플리케이션을 메인 메모리로 로딩할 수 있다. 프로세서 310은 메인 메모리에 액세스하여 프로그램의 명령어(루틴)를 해독하고, 해독 결과에 따른 기능을 실행할 수 있다. 저장부 360은 외장 메모리를 더 포함할 수도 있다. 예컨대, 저장부 360은 외장 메모리로써, CF(compact flash), SD(secure digital), Micro-SD(micro secure digital), Mini-SD(mini secure digital), xD(extreme digital) 또는 MemoryStick 등을 포함할 수 있다.
도 4는 다양한 실시예들에 따른 가상 디바이스를 등록하는 일례를 도시한 도면이다.
도 4를 참고하면, 동작 410에서, 전자 장치 110은 사용자의 요청에 따라, 전자 장치 110의 플랫폼과 상관없이 어플리케이션을 실행시키기 위하여, 자격 서버 120으로 서비스를 신청할 수 있다. 상기 서비스 신청은 가상 디바이스의 등록을 위한 권한을 부여받기 위한 것일 수 있다. 이를 위해, 전자 장치 110은 전자 장치 110에 할당된 계정(Account)을 자격 서버 120으로 전송할 수 있다.
자격 서버 120은 전자 장치 110의 계정이 포함된 서비스 신청을 수신하고, 상기 서비스 신청이 가상 디바이스 등록을 위한 것으로 판단할 수 있다. 자격 서버 120은 전자 장치 110의 계정이 유효한 지 여부를 판단하여 전자 장치 110에 가상 디바이스를 등록할 수 있는 권한을 부여할 수 있다. 동작 420에서, 자격 서버 120은 상기 계정이 유효한 경우, 권한 키를 전자 장치 110으로 발급할 수 있다. 상기 권한 키 발급 시, 자격 서버 120은 가상 디바이스 관리 서버 130으로의 접속 정보를 전자 장치 110으로 제공할 수 있다.
동작 430에서, 전자 장치 110은 상기 접속 정보를 통해 가상 디바이스 관리 서버 130에 상기 권한 키를 포함하는 가상 디바이스(Virtual Device) 생성을 요청할 수 있다.
동작 440에서, 가상 디바이스 관리 서버 130은 상기 가상 디바이스 생성을 요청받고, 전자 장치 110으로 가상 디바이스 ID를 발급할 수 있다. 가상 디바이스 관리 서버 130은 Virtual Device Info Registration API 131 및 Virtual Device DB 132(예: 도 2의 데이터베이스 220)를 포함할 수 있다. Virtual Device Info Registration API 131은 상기 권한 키를 기반으로 가상 디바이스 ID를 발급할 수 있다. Virtual Device Info Registration API 131은 상기 권한 키 및 상기 가상 디바이스 ID를 매핑하여 Virtual Device DB 132에 저장할 수 있다. 일례로, 가상 디바이스 관리 서버 130은 하나의 전자 장치에 하나의 가상 디바이스 ID를 발급할 수도 있고, 하나의 전자 장치에 복수의 가상 디바이스 ID를 발급할 수도 있다.
전자 장치 110은 상기 가상 디바이스 생성에 대한 응답으로 가상 디바이스 관리 서버 130으로부터 가상 디바이스 ID를 수신할 수 있다. 전자 장치 110은 상기 권한 키 및 상기 가상 디바이스 ID를 저장부에 저장할 수 있다.
도 5는 다양한 실시예들에 따른 가상 시스템에 플랫폼을 설치하는 일례를 도시한 도면이다.
도 5를 참고하면, 신규 플랫폼이 출시되면, 동작 510에서, 플랫폼 제공자 150은 가상 디바이스 관리 서버 200에 신규 플랫폼 설치를 요청할 수 있다. 동작 520에서, 플랫폼 제공자 150은 자격 서버 120으로 인증을 요청할 수 있다. 인증 요청 시, 플랫폼 제공자 150은 자신에 고유하게 할당된 플랫폼 제공자 ID를 자격 서버 120으로 전송할 수 있다.
동작 530에서, 자격 서버 120은 플랫폼 제공자 ID를 기반으로 플랫폼 제공자 150의 유효성을 판단하고, 유효성이 확인되면, 권한 키를 플랫폼 제공자 150으로 전송할 수 있다. 이때, 자격 서버 120은 가상 디바이스 관리 서버 130의 접속정보를 플랫폼 제공자 150으로 전송할 수 있다. 상기 접속정보는 신규 플랫폼을 설치하기 위한 설치 주소일 수 있다.
동작 540에서, 플랫폼 제공자 150은 상기 설치 주소를 기반으로 신규 플랫폼의 설치정보를 가상 디바이스 관리 서버 130에 등록할 수 있다. 플랫폼 제공자 150은 상기 설치정보 전송 시, 상기 권한 키를 함께 전송할 수 있다. 상기 설치정보는 신규 플랫폼의 종류, 버전, 파일 등을 포함할 수 있다.
가상 디바이스 관리 서버 130은 상기 설치 주소를 통해 상기 신규 플랫폼에 대한 설치정보를 수신받아, 신규 플랫폼을 가상 시스템에 설치할 수 있다. 가상 디바이스 관리 서버 130은 플랫폼 정보 API 133 및 신규 플랫폼 DB 134(예: 도 2의 데이터베이스 220)를 포함할 수 있다. 플랫폼 정보 API 133은 상기 신규 플랫폼에 대한 설치정보를 이용하여 신규 플랫폼 DB 134에 신규 플랫폼에 대한 정보를 저장할 수 있다.
도 6은 다양한 실시예들에 따른 멀티 플랫폼 기반의 어플리케이션 제어 방법을 도시한 흐름도이다.
도 2 및 도 6을 참고하면, 동작 610에서, 제어부 210은 전자 장치 110으로부터 가상 디바이스 ID를 포함하는 특정 플랫폼의 어플리케이션 설치 요청을 수신할 수 있다. 제어부 210은 통신부 230을 통해 상기 가상 디바이스 ID와 함께 설치하고자 하는 어플리케이션에 대한 설치정보를 수신할 수 있다. 상기 설치정보는 어플리케이션을 실행하기 위한 플랫폼 정보, 어플리케이션 파일 이름을 포함할 수 있다.
동작 620에서, 제어부 210은 통신부 230을 통해 전자 장치 110으로 어플리케이션을 설치하기 위한 설치 주소(예: FTP)를 제공할 수 있다. 이때, 제어부 210은 전자 장치 110의 유효성을 판단하고, 유효성이 있는 경우, 어플리케이션을 설치하기 위한 설치 주소를 제공할 수 있다. 제어부 210은 상기 설치정보를 수신하고, 상기 설치정보를 기반으로 어플리케이션 ID를 할당할 수 있다. 어플리케이션 ID는 어플리케이션을 실행하기 위한 플랫폼과 어플리케이션을 식별하기 위한 것이다. 제어부 210은 상기 설치 주소와 함께 상기 할당한 어플리케이션 ID를 전송할 수 있다.
동작 630에서, 제어부 210은 상기 설치 주소를 기반으로 접속한 전자 장치 110에 의해 가상 디바이스에 어플리케이션을 설치할 수 있다. 예컨대, 제어부 210은 상기 요청된 플랫폼 위에 상기 요청한 어플리케이션에 대한 어플리케이션 호스트를 설치할 수 있다. 또한, 전자 장치 110은 어플리케이션에 대한 UI를 제공하는 어플리케이션 클라이언트를 설치할 수 있다.
동작 640에서, 제어부 210은 통신부 230을 통해 전자 장치 110으로부터 어플리케이션 ID를 포함하는 어플리케이션 실행 요청을 수신할 수 있다. 이때, 제어부 210은 가상 디바이스 ID와 함께 플랫폼 정보 및 어플리케이션 ID를 포함하는 실행 요청을 수신할 수 있다.
동작 650에서, 제어부 210은 상기 실행 요청된 어플리케이션과 연관된 서비스 주소를 전자 장치 110으로 전송할 수 있다. 이때, 제어부 210은 전자 장치 110의 유효성을 판단하고, 유효성이 있는 경우, 어플리케이션 실행을 위한 서비스 주소를 제공할 수 있다. 상기 서비스 주소는 상기 실행 요청된 어플리케이션을 실행할 수 있는 가상 시스템에 접속할 수 있는 것이다.
동작 660에서, 제어부 210은 상기 서비스 주소를 통해 전자 장치 110으로 어플리케이션 실행 화면을 제공할 수 있다. 전자 장치 110은 상기 서비스 주소를 통해 어플리케이션의 실행 화면을 제공받아 표시부에 표시할 수 있다. 이로써, 전자 장치 110은 플랫폼을 변경하거나, 전자 장치 110의 플랫폼과 다른 플랫폼의 어플리케이션을 로컬에 설치하지 않고도, 용이하게 원하는 어플리케이션을 실행시킬 수 있다.
도 7은 다양한 실시예들에 따른 가상 시스템에 어플리케이션을 설치하는 일례를 도시한 도면이다.
도 7을 참고하면, 어플리케이션 개발자는 기존 어플리케이션 패키지에 어플리케이션 호스트 모듈과 어플리케이션 클라이언트 모듈을 포함해서 앱 마켓에 등록할 수 있다. 사용자는 앱 마켓에 등록된 다양한 플랫폼별 어플리케이션을 확인하고, 자신이 소유한 전자 장치 110의 플랫폼과 다른 종류 또는 다른 버전의 플랫폼에서 동작하는 어플리케이션에 대한 설치를 요청할 수 있다.
동작 710에서, 전자 장치 110은 사용자의 요청에 따라 앱 마켓 160으로부터 어플리케이션을 다운로드받을 수 있다. 이때, 전자 장치 110은 Local App Downloader 111, App Uploader 112, Virtual Device Manager 113, App Installer Client 114, Local Storage Manager 115를 포함할 수 있다. 어플리케이션 설치 요청은 Virtual Device Manager 113에게 전달된다. Virtual Device Manager 113은 상기 설치 요청을 기반으로 사용 가능한 플랫폼에 대한 정보를 가상 디바이스 관리 서버 130으로 요청할 수 있다.
또한, 동작 720에서, Virtual Device Manager 113은 자격 서버 120으로 어플리케이션 설치 요청을 전송할 수 있다. 이때, Virtual Device Manager 113은 상기 어플리케이션 설치 요청 시, Virtual Device ID, Application File Name, Platform 정보를 함께 전송할 수 있다,
동작 730에서, 자격 서버 120은 상기 설치 요청을 수신하여 가상 디바이스 관리 서버 130으로 전달할 수 있다. 즉, 자격 서버 120은 상기 수신된 Virtual Device ID, Application File Name, Platform 정보를 가상 디바이스 관리 서버 130으로 전달할 수 있다.
동작 740에서, 가상 디바이스 관리 서버 130은 어플리케이션 설치를 위한 설치 주소를 자격 서버 120으로 전달할 수 있다. 가상 디바이스 관리 서버 130은 Virtual Device ID, Application File Name, Platform 정보를 기반으로 어플리케이션 ID를 할당할 수 있다. 가상 디바이스 관리 서버 130은 상기 설치 주소(App Installer 주소)와 함께 어플리케이션 ID를 전송할 수 있다.
동작 750에서, 자격 서버 120은 상기 설치 주소를 전자 장치 110으로 전송할 수 있다.
동작 760에서, 전자 장치 110은 상기 설치 주소를 기반으로 어플리케이션의 설치를 제어할 수 있다. 예컨대, App Uploader 112는 상기 설치 주소 및 어플리케이션 ID를 수신하고, 상기 설치 주소 및 어플리케이션 ID를 App Installer Client 114로 전달할 수 있다. App Installer Client 114는 상기 설치 주소를 기반으로 Application File을 가상 시스템 위에 플랫폼 상에 설치할 수 있다. 설치 시, 가상 디바이스 관리 서버 130은 데이터베이스 140에 Account > Virtual Device ID > App ID의 구조로 폴더를 생성할 수 있다. 가상 시스템에 App 호스트 모듈이 설치되면, 전자 장치 110은 App Client를 설치하고 설치 과정을 종료할 수 있다. Local Storage Manager 115는 설치된 어플리케이션에 대한 로컬 폴더(전자 장치 110의 내부 저장부 또는 전자 장치 110과 연결된 외부 저장부)를 Account > Virtual Device ID > App ID폴더로 생성할 수 있다. 또는, Local Storage Manager 115는 가상 디바이스 ID > 플랫폼 + 어플리케이션 파일 이름 > 어플리케이션 ID > App URL + Virtual Device Local URL 구조로 폴더를 생성할 수 있다.
도 8은 다양한 실시예들에 따른 어플리케이션을 실행하는 일례를 도시한 도면이다.
도 8을 참고하면, 사용자가 전자 장치 110에서 어플리케이션을 실행한 경우, 동작 810에서, 전자 장치 110은 자격 서버 120으로 어플리케이션 실행 요청을 전송할 수 있다. 이는, 전자 장치 110이 어플리케이션 실행을 위한 서비스 주소를 요청하는 것으로, Account 정보와 어플리케이션 ID를 함께 전송할 수 있다.
동작 820에서, 자격 서버 120은 어플리케이션 ID를 수신하고, 가상 디바이스 관리 서버 130으로 전달할 수 있다.
동작 830에서, 가상 디바이스 관리 서버 130은 상기 어플리케이션 ID를 기반으로 어플리케이션 실행에 필요한 서비스 주소를 자격 서버 120으로 전달할 수 있다. 예컨대, 가상 디바이스 관리 서버 130은 APP Service URL, Virtual Device Local URL을 자격 서버 120으로 전달할 수 있다. APP Service URL은 서비스 주소에 해당하는 것으로, 어플리케이션을 실행할 수 있는 가상 시스템에 접속할 수 있는 것이다. Virtual Device Local URL은 로컬 주소에 해당하는 것으로, 가상 시스템이 전자 장치 110에 저장된 로컬 파일을 접속할 수 있는 것이다. 즉, 가상 시스템이 전자 장치 110에 저장된 로컬 파일을 업로드하여 사용할 수 있는 통로를 미리 설정하는 것이다.
동작 840에서, 자격 서버 120은 App Service URL, Virtual Device Local URL 및 Authorization Key를 전자 장치 110으로 전달할 수 있다.
동작 850에서, 전자 장치 110은 App Service URL, Virtual Device Local URL 및 Authorization Key를 수신하고, App Service URL를 기반으로 어플리케이션을 실행할 수 있다. App Service URL, Virtual Device Local URL 및 Authorization Key은 전자 장치 110의 App Selector 116으로 전달될 수 있다. App Selector 116은 App Player 117에게 App Service URL, Virtual Device Local URL, Authorization Key를 전달할 수 있다. App Player 117은 App Service URL을 기반으로 어플리케이션을 구동할 수 있다.
만약, 어플리케이션 실행 시, 전자 장치 110 내 자원이 필요한 경우, 동작 860에서, 전자 장치 110 내 Virtual Device Manager 113을 통해 스트리밍 어플리케이션을 복수의 플랫폼에서 실행되는 복수의 어플리케이션이 설치된 가상 시스템 130a와 공유 할 수 있다. 그리고, Local Storage Manager 115는 Virtual Device Manager 113의 서브 모듈로 구성될 수 있다. 즉, 실제로 어플리케이션과 어플리케이션 데이터를 저장 관리하는 공간은 가상 시스템 130a가 되고 전자 장치 110내의 파일 공유도 가상 시스템 130a와 이뤄질 수 있다. 그리고, Virtual Device Manager 113은 가상 디바이스 관리 서버 130과 가상 시스템 130a에 등록된 가상 디바이스 정보와 플랫폼 정보, 전자 장치 110에 설치된 앱 클라이언트 정보를 관리하는 Manager이다. Local Storage Manager 115는 전자 장치 110의 내부 또는 외부에 있는 저장부에 저장된 파일을 가상 시스템 130a로 전송할 수 있다. 이때, 전자 장치 110과 가상 시스템 130a는 상기 로컬 주소를 통해 상기 전자 장치 110 내 자원을 업로드하여 공유할 수 있다.
도 9는 다양한 실시예들에 따른 전자 장치와 서버 간의 통신 흐름을 도시한 도면이다.
도 9를 참고하면, 전자 장치와 서버 간의 통신은 전자 장치 내 App Player 910과 가상 디바이스 관리 서버 130의 Running Streaming App을 통해 이루어진다. 사용자 입력에 관한 제어명령은 Control flow 920을 이용하여 이루어 진다. 예컨대, 전자 장치 110은 터치스크린을 통해 입력된 사용자 입력 911을 인코딩하여(Encode Input Events 912) 인터넷을 통해 가상 시스템 내의 스트리밍 어플리케이션 호스트로 전송할 수 있다. 가상 시스템에 설치된 스트리밍 어플리케이션 호스트는 전송된 사용자 입력을 디코딩하여(Decode Input Events 952) 사용자 입력 951을 인식할 수 있다.
또한, 파일 전송은 File Data flow 930을 이용하여 이루어 진다. 예컨대, 전자 장치 110은 파일을 압축하여(Zipping File 913) FTP 914로 압축된 파일을 가상 시스템에 설치된 스트리밍 어플리케이션 호스트로 전송할 수 있다. 가상 디바이스 관리 서버 130은 FTP 954로 압축된 파일을 수신하여, 파일의 압축을 풀어 파일(Unzipping File 953)을 인식할 수 있다.
또한, 어플리케이션 실행과 연관된 정보(예: 음성, 오디오, 비디오 등)는 Streaming Data Flow 940을 통해서 이루어진다. 예컨대, 가상 시스템에 설치된 스트리밍 어플리케이션 호스트는 오디오 또는 비디오를 캡쳐하여(Audio/video Capture 955) Encoding 956한 후, RTSP/RTP/RTCP 957로 전자 장치 110으로 전송할 수 있다. 전자 장치 110은 RTSP/RTP/RTCP 917를 통해 인코딩한 오디오 또는 비디오를 수신하여 Decoding 916한 후, Audio/video Player 915로 출력할 수 있다.
도 10은 다양한 실시예들에 따른 전자 장치에 저장된 파일을 가상 시스템으로 전송하는 일례를 도시한 도면이다.
도 10을 참고하면, 어플리케이션이 실행되면 Local Storage Manager와 Resource Manager간에 FTP로 연결이 이루어진다. 어플리케이션 실행 시, 전자 장치 110 내 App UI 118은 표시부에 가상 디스크 드라이브(L:)를 아이콘 형태로 표시할 수 있다. 사용자가 상기 가상 디스크 드라이브를 클릭하면, 전자 장치 110의 App 폴더와 가상 디바이스 관리 서버 130의 App 폴더 간이 동기화될 수 있다. Local Storage Manager 115는 전자 장치 110 내부에 있는 Local Storage 115a 또는 전자 장치 110와 연결된 외부 Network Storage 115b에 저장된 파일을 가상 시스템에 전송할 수 있다. Local Storage Manager 115는 전자 장치 110가 속한 로컬 네트워크 상의 전자 장치 110과 연결된 로컬 네트워크 주소를 전자 장치 110에 입력을 하면 Network Storage 115b와 가상 디바이스 관리 서버 130의 App 폴더 간을 동기화할 수 있다. 예컨대, Local Storage Manager 115는 사용자에 의해 파일이 선택되면, FTP로 전송전 ZIP 형태로 파일을 압축하여 가상 디바이스 관리 서버 130로 전송할 수 있다. 가상 시스템에 설치된 스트리밍 어플리케이션 호스트가압축한 파일을 수신하면, Resource Manager는 압축된 파일을 풀어 Virtual Device DB 141a에 저장할 수 있다.
도 11은 다양한 실시예들에 따른 가상 시스템에서 어플리케이션을 삭제하는 일례를 도시한 도면이다.
도 11을 참고하면, 동작 1110에서, 전자 장치 110은 사용자로부터 어플리케이션 삭제를 요청받은 경우, 자격 서버 120으로 어플리케이션 삭제(App Uninstall)를 요청할 수 있다. 전자 장치 110은 어플리케이션 삭제 요청 시, 자격 서버 120으로 삭제를 요청한 Account정보와 어플리케이션 ID를 전송할 수 있다.
동작 1120에서, 자격 서버 120은 상기 어플리케이션 ID를 포함하는 어플리케이션 삭제 요청을 수신하고, 가상 디바이스 관리 서버 130으로 상기 어플리케이션 ID를 전달할 수 있다. 가상 디바이스 관리 서버 130은 상기 어플리케이션 ID를 수신하고 상기 어플리케이션 ID가 유효한지 여부를 판단할 수 있다. 즉, 가상 디바이스 관리 서버 130은 상기 어플리케이션 ID에 해당하는 어플리케이션이 전자 장치 110의 요청으로 이전에 설치된 적이 있는지 여부를 판단함으로써, 상기 어플리케이션 ID의 유효성 여부를 판단할 수 있다.
동작 1130에서, 가상 디바이스 관리 서버 130은 상기 어플리케이션 ID가 유효한 경우, 어플리케이션 삭제를 위한 삭제 주소(App Uninstaller)를 자격 서버 120으로 전송할 수 있다. 상기 삭제 주소는 상기 삭제를 요청한 어플리케이션 호스트가 설치된 가상 시스템에 접속할 수 있는 URL에 대한 것이다. 자격 서버 120은 상기 삭제 주소를 전자 장치 110으로 전송할 수 있다.
동작 1140에서, 전자 장치 110은 상기 삭제 주소를 수신할 수 있다. 전자 장치 내 App Remover 119는 어플리케이션 ID를 파라미터로 하여 Streaming App Unintaller 주소를 호출할 수 있다. 동작 1150에서, Uninstaller를 통해 어플리케이션 삭제가 완료되면, App Remover 119는 가상 디바이스 관리 서버 130으로 어플리케이션 ID를 포함하는 App 삭제 요청을 전송할 수 있다. 가상 시스템의 App uninstaller는 어플리케이션 ID에 해당하는 어플리케이션 호스트 모듈을 삭제할 수 있다.
동작 1160에서, 전자 장치 110 내 App Remover 119는 가상 디바이스 매니저 115로 App Client 삭제를 요청할 수 있다. 즉, 가상 시스템에서 어플리케이션 호스트 모듈의 삭제가 완료되면, 전자 장치 110도 App Client를 삭제함으로써, 어플리케이션 삭제를 완료할 수 있다.
그리고 본 명세서와 도면에 개시된 실시 예들은 본 발명의 내용을 쉽게 설명하고, 이해를 돕기 위해 특정 예를 제시한 것일 뿐이며, 본 발명의 범위를 한정하고자 하는 것은 아니다. 따라서 본 발명의 범위는 여기에 개시된 실시 예들 이외에도 본 발명의 기술적 사상을 바탕으로 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.
200: 가상 디바이스 관리 서버
210: 제어부 220: 데이터베이스
230: 통신부 240: 가상 시스템
300: 전자 장치
310: 프로세서 320: 통신부
330: 오디오 처리부 340: 표시부
350: 입력부 360: 저장부
210: 제어부 220: 데이터베이스
230: 통신부 240: 가상 시스템
300: 전자 장치
310: 프로세서 320: 통신부
330: 오디오 처리부 340: 표시부
350: 입력부 360: 저장부
Claims (20)
- 가상 디바이스 관리 장치에 있어서,
종류 및 버전이 상이한 복수의 플랫폼 및 상기 복수의 플랫폼에서 실행되는 복수의 어플리케이션이 설치된 가상 시스템과,
외부 장치로부터 플랫폼 및 어플리케이션의 설치 요청 또는 삭제 요청을 수신하는 통신부와,
상기 요청에 응답하여 상기 가상 시스템에 플랫폼 및 어플리케이션의 설치 또는 삭제를 제어하는 제어부를 포함하는 장치. - 제1항에 있어서,
상기 제어부는,
상기 통신부를 통해 상기 외부 장치로부터 상기 외부 장치의 계정을 수신하면, 상기 외부 장치의 계정이 유효한 지 여부를 판단하여 권한 키를 부여하는 권한 모듈을 포함하는 장치. - 제2항에 있어서,
상기 제어부는,
상기 통신부를 통해 상기 외부 장치로부터 상기 권한 키를 포함하는 가상 디바이스 등록 요청을 수신하면, 상기 권한 키를 기반으로 가상 디바이스 ID를 발급하는 발급 모듈을 더 포함하는 장치. - 제3항에 있어서,
상기 제어부는,
상기 통신부를 통해 상기 외부 장치로부터 가상 디바이스 ID 및 어플리케이션에 대한 설치정보를 포함하는 어플리케이션의 설치를 요청받은 경우, 상기 설치정보를 기반으로 어플리케이션 ID를 할당하고, 상기 어플리케이션 ID 및 어플리케이션을 설치하기 위한 설치 주소를 상기 통신부를 통해 상기 외부 장치로 전송하여 상기 가상 시스템에 상기 요청한 어플리케이션을 설치하는 설치 제어 모듈을 포함하는 장치. - 제1항에 있어서,
상기 제어부는,
상기 통신부를 통해 상기 외부 장치로부터 어플리케이션 ID를 포함하는 어플리케이션의 삭제를 요청받은 경우, 상기 어플리케이션 ID의 유효성을 판단하여 어플리케이션을 삭제하기 위한 삭제 주소를 상기 통신부를 통해 상기 외부 장치로 전송하여 상기 가상 시스템으로부터 상기 요청한 어플리케이션을 삭제하는 설치 제어 모듈을 포함하는 장치. - 제1항에 있어서,
상기 제어부는,
상기 통신부를 통해 상기 외부 장치로부터 플랫폼의 설치 또는 삭제 요청을 수신하면, 상기 외부 장치의 유효성을 확인하여 상기 가상 시스템에 플랫폼의 설치 또는 삭제를 제어하는 설치 제어 모듈을 더 포함하는 장치. - 제1항에 있어서,
상기 제어부는,
상기 통신부를 통해 상기 외부 장치로부터 어플리케이션 ID를 포함하는 어플리케이션 실행을 요청받은 경우, 상기 어플리케이션 ID에 해당하는 어플리케이션의 실행을 위한 서비스 주소 및 가상 디바이스 로컬 주소를 전송하여 상기 요청한 어플리케이션을 실행하는 실행 모듈을 더 포함하는 장치. - 제7항에 있어서,
상기 제어부는,
상기 가상 디바이스 로컬 주소를 통해 상기 외부 장치에 저장된 로컬 파일을 수신하여 상기 가상 시스템에 저장하는 업로드 제어 모듈을 더 포함하는 장치. - 전자 장치에 있어서,
어플리케이션 실행과 연관된 어플리케이션 클라이언트를 제어하는 프로세서와,
어플리케이션 실행을 위한 서비스 주소를 통해 가상 디바이스 관리 서버로부터 어플리케이션 실행 화면을 수신하는 통신부와,
상기 수신한 어플리케이션 실행 화면을 표시하는 표시부를 포함하는 장치. - 제9항에 있어서,
상기 프로세서는,
상기 통신부를 통해 상기 가상 디바이스 관리 서버로 상기 전자 장치의 계정을 전송하고, 상기 계정에 대한 응답으로 부여된 권한 키를 기반으로 상기 가상 디바이스 관리 서버로 가상 디바이스 ID를 요청하는 장치. - 제10항에 있어서,
상기 프로세서는,
상기 통신부를 통해 상기 가상 디바이스 관리 서버로 상기 가상 디바이스 ID와 특정 플랫폼의 어플리케이션 설치정보를 포함하는 어플리케이션 설치를 요청하고, 상기 가상 디바이스 관리 서버로부터 상기 설치 요청된 어플리케이션에 대응하는 어플리케이션 ID 및 어플리케이션 설치주소를 수신하고, 상기 어플리케이션 설치주소를 기반으로 상기 설치 요청된 어플리케이션 클라이언트를 설치하는 장치. - 제9항에 있어서,
상기 프로세서는,
상기 통신부를 통해 상기 가상 디바이스 관리 서버로부터 삭제를 요청한 어플리케이션 ID 및 어플리케이션 삭제주소를 수신하여, 상기 어플리케이션 삭제주소를 기반으로 상기 삭제 요청된 어플리케이션 클라이언트를 삭제하는 장치. - 제9항에 있어서,
데이터 또는 파일을 저장하는 저장부를 더 포함하고,
상기 프로세서는,
상기 저장부와 상기 가상 디바이스 관리 서버를 동기화하여, 상기 저장부에 저장된 데이터 또는 파일을 상기 통신부를 통해 상기 가상 디바이스 관리 서버로 전송하는 장치. - 가상 디바이스 관리 장치의 어플리케이션 실행 방법에 있어서,
종류 및 버전이 상이한 복수의 플랫폼 및 상기 복수의 플랫폼에서 실행되는 복수의 어플리케이션이 설치된 가상 시스템을 마련하는 동작과,
외부 장치로부터 특정 플랫폼의 어플리케이션 실행 요청을 수신하는 동작과,
상기 실행 요청에 응답하여 상기 가상 시스템에 저장된 특정 플랫폼의 어플리케이션을 실행하는 동작과,
상기 실행된 어플리케이션 실행 화면을 제공하는 서비스 주소를 상기 외부 장치로 전송하는 동작을 포함하는 방법. - 제14항에 있어서,
상기 외부 장치로부터 가상 디바이스 ID 및 어플리케이션에 대한 설치정보를 포함하는 어플리케이션의 설치를 요청받는 동작과,
상기 설치정보를 기반으로 어플리케이션 ID를 할당하는 동작과,
상기 어플리케이션 ID 및 어플리케이션을 설치하기 위한 설치 주소를 상기 외부 장치로 전송하는 동작과,
상기 설치 주소를 통한 상기 외부 장치의 제어에 따라 상기 가상 시스템에 상기 요청한 어플리케이션을 설치하는 동작을 더 포함하는 방법. - 제14항에 있어서,
상기 외부 장치로부터 어플리케이션 ID를 포함하는 어플리케이션의 삭제를 요청받는 동작과,
상기 어플리케이션 ID의 유효성을 판단하여 어플리케이션을 삭제하기 위한 삭제 주소를 상기 외부 장치로 전송하는 동작과,
상기 삭제 주소를 통한 상기 외부 장치의 제어에 따라 상기 가상 시스템으로부터 상기 요청한 어플리케이션을 삭제하는 동작을 더 포함하는 방법. - 제14항에 있어서,
상기 서비스 주소를 상기 외부 장치로 전송하는 동작은,
상기 실행 요청된 어플리케이션 ID에 해당하는 어플리케이션의 실행을 위한 서비스 주소 및 가상 디바이스 로컬 주소를 상기 외부 장치로 전송하는 동작과,
상기 가상 디바이스 로컬 주소를 통해 상기 외부 장치에 저장된 로컬 파일을 수신하여 상기 가상 시스템에 저장하는 동작을 포함하는 방법. - 전자 장치의 어플리케이션 실행 방법에 있어서,
가상 디바이스 관리 서버로 어플리케이션 ID를 포함하는 어플리케이션 실행 요청을 전송하는 동작과,
상기 실행 요청에 대한 응답으로 상기 가상 디바이스 관리 서버로부터 어플리케이션 실행을 위한 서비스 주소를 수신하는 동작과,
상기 서비스 주소를 통해 상기 가상 디바이스 관리 서버 내 포함된 가상 시스템으로부터 어플리케이션 실행 화면을 수신하는 동작과,
상기 수신한 어플리케이션 실행 화면을 표시부에 표시하는 동작을 포함하는 방법. - 제18항에 있어서,
상기 가상 디바이스 관리 서버로 가상 디바이스 ID와 특정 플랫폼의 어플리케이션 설치정보를 포함하는 어플리케이션 설치를 요청하는 동작과,
상기 설치 요청에 대한 응답으로 가상 디바이스 관리 서버로부터 어플리케이션 ID 및 어플리케이션 설치주소를 수신하는 동작과,
상기 어플리케이션 설치주소를 기반으로 저장부에 상기 어플리케이션 실행 화면을 제어하는 어플리케이션 클라이언트를 설치하는 동작을 더 포함하는 방법. - 제18항에 있어서,
상기 어플리케이션 실행 시, 상기 가상 디바이스 관리 서버로의 데이터 전송을 위한 동기화를 수행하는 동작과,
상기 동기화 완료 후, 저장부에 저장된 데이터 또는 파일을 상기 가상 디바이스 관리 서버로 전송하는 동작을 더 포함하는 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150012048A KR20160091663A (ko) | 2015-01-26 | 2015-01-26 | 멀티 플랫폼 기반의 어플리케이션 실행 방법 및 장치 |
US15/005,201 US10101986B2 (en) | 2015-01-26 | 2016-01-25 | Method and apparatus for executing applications |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150012048A KR20160091663A (ko) | 2015-01-26 | 2015-01-26 | 멀티 플랫폼 기반의 어플리케이션 실행 방법 및 장치 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160091663A true KR20160091663A (ko) | 2016-08-03 |
Family
ID=56434488
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150012048A KR20160091663A (ko) | 2015-01-26 | 2015-01-26 | 멀티 플랫폼 기반의 어플리케이션 실행 방법 및 장치 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10101986B2 (ko) |
KR (1) | KR20160091663A (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11093184B2 (en) | 2017-09-29 | 2021-08-17 | Hewlett-Packard Development Company, L.P. | Installation of application based on platform |
WO2023075425A1 (ko) * | 2021-10-27 | 2023-05-04 | 삼성전자 주식회사 | 외부 전자 장치를 제어하는 어플리케이션을 결정하는 전자 장치 및 그 동작 방법 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102016205002A1 (de) * | 2016-03-24 | 2017-09-28 | Volkswagen Aktiengesellschaft | Verfahren zum Verwalten von gesammelten Fahrzeugdaten |
US10901752B2 (en) | 2018-07-20 | 2021-01-26 | Vmware, Inc. | Message based discovery and management of applications |
US10944547B2 (en) * | 2018-08-10 | 2021-03-09 | International Business Machines Corporation | Secure environment device management |
US10977020B2 (en) | 2018-12-14 | 2021-04-13 | Vmware, Inc. | Providing context-based application suggestions |
US11392362B2 (en) * | 2020-07-31 | 2022-07-19 | Jpmorgan Chase Bank, N.A. | Cross platform configuration domain translation |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090133129A1 (en) * | 2006-03-06 | 2009-05-21 | Lg Electronics Inc. | Data transferring method |
US8959248B2 (en) * | 2008-02-22 | 2015-02-17 | Microsoft Corporation | Personal computing environment with virtual computing device |
KR101081489B1 (ko) | 2009-03-25 | 2011-11-08 | 주식회사 케이티 | 클라우드 컴퓨팅 기반 통합사용자환경 제공방법 및 장치 |
US9342329B2 (en) * | 2011-12-20 | 2016-05-17 | Blackberry Limited | Method and system for cross-operating systems execution of software applications |
US9460276B2 (en) * | 2012-02-22 | 2016-10-04 | Panasonic Intellectual Property Corporation Of America | Virtual machine system, confidential information protection method, and confidential information protection program |
US9497221B2 (en) * | 2013-09-12 | 2016-11-15 | The Boeing Company | Mobile communication device and method of operating thereof |
US9734325B1 (en) * | 2013-12-09 | 2017-08-15 | Forcepoint Federal Llc | Hypervisor-based binding of data to cloud environment for improved security |
US20150347170A1 (en) * | 2014-05-27 | 2015-12-03 | Vmware, Inc. | Grouping virtual machines in a cloud application |
US9712604B2 (en) * | 2014-05-30 | 2017-07-18 | Vmware, Inc. | Customized configuration of cloud-based applications prior to deployment |
-
2015
- 2015-01-26 KR KR1020150012048A patent/KR20160091663A/ko not_active Application Discontinuation
-
2016
- 2016-01-25 US US15/005,201 patent/US10101986B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11093184B2 (en) | 2017-09-29 | 2021-08-17 | Hewlett-Packard Development Company, L.P. | Installation of application based on platform |
WO2023075425A1 (ko) * | 2021-10-27 | 2023-05-04 | 삼성전자 주식회사 | 외부 전자 장치를 제어하는 어플리케이션을 결정하는 전자 장치 및 그 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20160216955A1 (en) | 2016-07-28 |
US10101986B2 (en) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20160091663A (ko) | 멀티 플랫폼 기반의 어플리케이션 실행 방법 및 장치 | |
CN106354451B (zh) | 用于操作电子设备的方法和电子设备 | |
US10678527B2 (en) | Apparatus and method for managing application | |
KR102320151B1 (ko) | 어플리케이션을 설치하는 전자 장치 및 그 제어 방법 | |
KR102327016B1 (ko) | 권한 제어 방법 및 이를 운용하는 전자 장치 | |
US11227278B2 (en) | Method for providing payment service having plug-in service, and electronic device therefor | |
KR102373225B1 (ko) | 전자 장치 및 전자 장치에서 기능 제공 방법 | |
US10181028B2 (en) | Method and apparatus to sandbox run-time android applications with lightweight container | |
KR20170096408A (ko) | 어플리케이션을 표시하는 방법 및 이를 지원하는 전자 장치 | |
US10929523B2 (en) | Electronic device and method for managing data in electronic device | |
US20160147499A1 (en) | Method of exchanging information with external device and electronic device for the same | |
US9985692B2 (en) | Method for preloading content and electronic device supporting the same | |
CN105809028B (zh) | 在移动设备中运行相同应用的多个实例的装置和方法 | |
KR102445719B1 (ko) | 테마 패키지 설치 속도 개선 방법 및 전자장치 | |
CN108702806B (zh) | 电子设备及用于其的操作方法 | |
US20170078269A1 (en) | Method for managing application and electronic device supporting the same | |
US10430091B2 (en) | Electronic device and method for storing security information thereof | |
KR20170073930A (ko) | 웹푸시를 이용한 푸시 서비스 제공 방법 및 이를 지원하는 전자 장치 | |
US11042565B2 (en) | Electronic device and container-based data management method by electronic device | |
EP3346672B1 (en) | Electronic device and application sharing method thereof | |
US10482237B2 (en) | Method for processing security of application and electronic device supporting the same | |
KR102320149B1 (ko) | 어플리케이션을 실행하는 전자 장치 및 그 제어 방법 | |
KR20170120333A (ko) | 보안 로그인 서비스를 수행하는 전자 장치 및 방법 | |
US10908806B2 (en) | Method for processing card information and electronic device thereof | |
KR102692431B1 (ko) | 애플리케이션을 상호 연동하는 전자 장치 및 이를 위한 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |