KR20140036220A - 웹-브라우저 기반 데스크탑 및 어플리케이션 원격화 솔루션 - Google Patents
웹-브라우저 기반 데스크탑 및 어플리케이션 원격화 솔루션 Download PDFInfo
- Publication number
- KR20140036220A KR20140036220A KR1020137032662A KR20137032662A KR20140036220A KR 20140036220 A KR20140036220 A KR 20140036220A KR 1020137032662 A KR1020137032662 A KR 1020137032662A KR 20137032662 A KR20137032662 A KR 20137032662A KR 20140036220 A KR20140036220 A KR 20140036220A
- Authority
- KR
- South Korea
- Prior art keywords
- video
- session
- client
- remote presentation
- graphic data
- Prior art date
Links
Images
Classifications
-
- 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/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- 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/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- 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
-
- 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/08—Protocols specially adapted for terminal emulation, e.g. Telnet
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 클라이언트와 원격 프리젠테이션 세션을 실시하기 위한 발명이 개시된다. 실시예들에 있어서, 프록시 서버는 원격 프리젠테이션 서버와 클라이언트 사이에 존재한다. 프록시 서버는 클라이언트와 HTTP 세션을 그리고 클라이언트와 원격 프리젠테이션 세션을 확립한다. 서버는 원격 프리젠테이션 프로토콜로 인코딩된 그래픽들을 생성하고, 이들을 프록시로 전송하며, 이 프록시는 이 그래픽들을 비디오로서 재-인코딩하고 이들을 웹 브라우저에서의 디스플레이를 위해 클라이언트로 전송한다. 클라이언트는 웹 브라우저에서 사용자 입력을 포착하고 이를 프록시로 전송하며, 이 프록시는 그 입력을 원격 프리젠테이션 프로토콜로 인코딩하고 이를 프로세싱되도록 서버로 전송한다.
Description
원격 프리젠테이션 세션에 있어서, 클라이언트 컴퓨터 및 서버 컴퓨터는 통신 네트워크를 통해 통신한다. 클라이언트는 마우스 커서 움직임들 및 키보드 누름과 같은 국부적으로 수신된 입력을 서버로 전송한다. 결국, 서버는 이 입력을 수신하고, 사용자 세션에서 어플리케이션을 실행하는 것과 같은 그 입력과 연관된 프로세싱을 수행한다. 서버가 그래픽 출력 또는 사운드와 같은 출력을 발생시키는 프로세싱을 수행할 경우, 서버는 이 출력을 프리젠테이션을 위해 클라이언트로 전송한다. 이러한 방식으로, 어플리케이션들이 실제로 서버 상에서 실행될 경우에 이들 어플리케이션들은 클라이언트의 사용자에게 클라이언트 상에서 국부적으로 실행되는 것처럼 보인다.
종래의 원격 프리젠테이션 세션들의 문제는, 원격 프리젠테이션 세션에 참가하는 클라이언트가 원격 프리젠테이션 세션 어플리케이션 - 원격 프리젠테이션 세션 프로토콜에 따라 서버와 통신하도록 구성된 어플리케이션 - 을 설치해야 할 필요가 있다는 것이다. 이러한 요건은, 원격 프리젠테이션 세션 서버와 통신할 수도 있는 네트워크 접속을 갖는, 사용자에 액세스가능한 다수의 컴퓨터들이 존재할 수도 있지만 원격 프리젠테이션 세션을 실시할 원격 프리젠테이션 세션 어플리케이션이 부족함을 의미한다.
또한, 클라이언트가 원격 프리젠테이션 세션 특정 어플리케이션보다는 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 기술들이 존재한다. 이들 기술들에 있어서, 일반적으로, 원격화된 데스크탑 이미지는 복수의 타일들로 세분화되고, 이들 이미지 타일들 각각은 클라이언트(또는 타일의 표시, 여기서, 클라이언트는 타일을 캐싱하였음)로 전송되고 클라이언트의 웹 브라우저에 디스플레이된다. 원격화된 데스크탑 이미지가 변할 경우, "더티(dirty)" 타일들이 결정되고 - 그 타일들은 이미지가 변하였던 타일들임 -, 그 더티 타일들은 웹 브라우저를 통한 디스플레이를 위해 클라이언트로 전송된다.
클라이언트가 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 이들 기술들의 다수의 문제들이 존재하며, 이들 중 일부는 널리 공지되어 있다.
클라이언트가 이미지 타일들을 디스플레이하는 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 클라이언트가 실시하는 것의 하나의 문제는 성능의 문제이다. 특정한 원격 프리젠테이션 세션 어플리케이션을 사용하는 원격 프리젠테이션 세션과 비교하면, 웹 브라우저 및 이미지 타일들의 기술들은 훨씬 더 낮은 프레임 레이트를 제공한다. 프레임 레이트가 훨씬 더 낮을 뿐 아니라, 빈번하게는, 프레임 레이트가 너무 낮아 사용자 경험에 부정적으로 영향을 준다. 즉, 프레임 레이트는 종종 너무 낮아 원격 프리젠테이션 세션에서 디스플레이된 모션들이 단속적이며, 사용자가 제공하는 입력과 그 입력을 프로세싱하는 그래픽 결과를 사용자가 볼 때 사이에 단절이 존재한다.
따라서, 원격 프리젠테이션 세션 어플리케이션이 부족한 클라이언트가 이미지 타일들보다는 비디오를 사용하여 서버와 원격 프리젠테이션 세션을 실시하는 발명을 제공하기 위한 개선이 있을 것이다. 본 발명의 실시예들에 있어서, 클라이언트는, 웹 브라우저 어플리케이션으로 지향된 사용자 입력을 수신하고 또한 비디오를 디스플레이하도록 구성된 웹 브라우저 어플리케이션을 갖는다. 클라이언트는 웹 브라우저를 사용하여, 접속을 개방하기 위해 서버와의 Ajax(비동기식 자바스크립트 및 XML-확장성 마크업 언어) 접속을 확립한다. 그 후, 클라이언트 및 서버는 정보를 교환하여 클라이언트를 서버에 인증한다.
그 후, 클라이언트는 웹 브라우저 윈도우로 지향된 사용자 입력(예를 들어, 마우스, 키보드, 또는 터치)을 포착하고, 이 입력을, 예를 들어, XML 또는 JSON으로서 포맷팅된 서버로 비동기식으로 전송하며, 서버는 이 입력을 수신하고, 이를 적절한 어플리케이션 또는 사용자 세션에 주입한다. 어플리케이션 또는 사용자 세션이 그래픽 출력을 생성함에 따라, 서버는 이 그래픽 출력을 포착하고, 이를 비디오로 인코딩하며, 이를 웹 브라우저를 통한 디스플레이를 위해 클라이언트로 전송한다.
도 1은 본 발명의 실시예들이 구현될 수도 있는 예시적인 범용 컴퓨팅 환경을 도시한 것이다.
도 2는 본 발명의 실시예들이 구현될 수도 있는 예시적인 원격 프리젠테이션 세션 서버를 도시한 것이다.
도 3은 클라이언트가 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 것을 도시한 것이고, 여기서, 프록시는 원격 프리젠테이션 세션 데이터를 비디오로 변환한다.
도 4는 클라이언트가 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 것을 도시한 것이고, 여기서, 서버는, 원격화되고 있는 어플리케이션 또는 데스크탑의 인스턴스에 의해 생성된 그래픽 출력으로부터 비디오를 생성한다.
도 5는 2개의 클라이언트들이 서버와 원격 프리젠테이션 세션을 실시하는 것을 도시한 것이고, 일 클라이언트는 웹 브라우저를 사용하고 프록시를 통해 통신하며 그래픽들을 비디오로서 수신하며, 일 클라이언트는 서버와 직접 통신하고 원격 프리젠테이션 세션 데이터로서 인코딩된 그래픽들을 수신한다.
도 6은 비디오로서 인코딩될 그래픽 데이터의 2개의 프레임들을 도시한 것이고, 여기서, 각각의 프레임의 부분은 상이한 위치에 있을지라도 동일한 이미지를 포함하며, 일 프레임은 다른 프레임의 인코딩에 기초하여 인코딩될 수도 있다.
도 7은 비디오로서 인코딩될 그래픽 데이터의 프레임을 도시한 것이고, 여기서, 프레임은 이전 프레임과 공통 피처들을 공유하며 프레임들이 상이한 "더티" 영역들을 갖는다.
도 8은 원격 프리젠테이션 세션에서 웹 브라우저를 사용하는 클라이언트와 원격 프리젠테이션 세션을 실시하는 서버에 대한 예시적인 동작 절차들을 도시한 것이다.
도 9는 원격 프리젠테이션 세션에서 웹 브라우저를 사용하는 클라이언트와 원격 프리젠테이션 세션 서버 사이에서 원격 프리젠테이션 세션을 용이하게 하는 프록시 서버에 대한 예시적인 동작 절차들을 도시한 것이다.
도 10은 웹 브라우저를 사용하여 서버와 원격 프리젠테이션 세션을 실시하는 클라이언트에 대한 예시적인 동작 절차들을 도시한 것이다.
도 11은 클라이언트와 원격 프리젠테이션 세션을 실시하는 하나 이상의 가상 머신들을 호스팅할 수도 있는 예시적인 가상 머신 서버를 도시한 것이고, 클라이언트는 웹 브라우저를 사용하고 원격 프리젠테이션 그래픽들을 비디오로서 수신한다.
도 12는 클라이언트와 원격 프리젠테이션 세션을 실시하는 하나 이상의 가상 머신들을 호스팅할 수도 있는 다른 예시적인 가상 머신 서버를 도시한 것이고, 클라이언트는 웹 브라우저를 사용하고 원격 프리젠테이션 그래픽들을 비디오로서 수신한다.
도 13은 복수의 가상 머신들을 호스팅하는 가상 머신 서버를 포함하는 예시적인 시스템을 도시한 것이고, 각각의 가상 머신은 클라이언트와 원격 프리젠테이션 세션을 실시하고, 클라이언트는 웹 브라우저를 사용하고 원격 프리젠테이션 그래픽들을 비디오로서 수신한다.
도 2는 본 발명의 실시예들이 구현될 수도 있는 예시적인 원격 프리젠테이션 세션 서버를 도시한 것이다.
도 3은 클라이언트가 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 것을 도시한 것이고, 여기서, 프록시는 원격 프리젠테이션 세션 데이터를 비디오로 변환한다.
도 4는 클라이언트가 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 것을 도시한 것이고, 여기서, 서버는, 원격화되고 있는 어플리케이션 또는 데스크탑의 인스턴스에 의해 생성된 그래픽 출력으로부터 비디오를 생성한다.
도 5는 2개의 클라이언트들이 서버와 원격 프리젠테이션 세션을 실시하는 것을 도시한 것이고, 일 클라이언트는 웹 브라우저를 사용하고 프록시를 통해 통신하며 그래픽들을 비디오로서 수신하며, 일 클라이언트는 서버와 직접 통신하고 원격 프리젠테이션 세션 데이터로서 인코딩된 그래픽들을 수신한다.
도 6은 비디오로서 인코딩될 그래픽 데이터의 2개의 프레임들을 도시한 것이고, 여기서, 각각의 프레임의 부분은 상이한 위치에 있을지라도 동일한 이미지를 포함하며, 일 프레임은 다른 프레임의 인코딩에 기초하여 인코딩될 수도 있다.
도 7은 비디오로서 인코딩될 그래픽 데이터의 프레임을 도시한 것이고, 여기서, 프레임은 이전 프레임과 공통 피처들을 공유하며 프레임들이 상이한 "더티" 영역들을 갖는다.
도 8은 원격 프리젠테이션 세션에서 웹 브라우저를 사용하는 클라이언트와 원격 프리젠테이션 세션을 실시하는 서버에 대한 예시적인 동작 절차들을 도시한 것이다.
도 9는 원격 프리젠테이션 세션에서 웹 브라우저를 사용하는 클라이언트와 원격 프리젠테이션 세션 서버 사이에서 원격 프리젠테이션 세션을 용이하게 하는 프록시 서버에 대한 예시적인 동작 절차들을 도시한 것이다.
도 10은 웹 브라우저를 사용하여 서버와 원격 프리젠테이션 세션을 실시하는 클라이언트에 대한 예시적인 동작 절차들을 도시한 것이다.
도 11은 클라이언트와 원격 프리젠테이션 세션을 실시하는 하나 이상의 가상 머신들을 호스팅할 수도 있는 예시적인 가상 머신 서버를 도시한 것이고, 클라이언트는 웹 브라우저를 사용하고 원격 프리젠테이션 그래픽들을 비디오로서 수신한다.
도 12는 클라이언트와 원격 프리젠테이션 세션을 실시하는 하나 이상의 가상 머신들을 호스팅할 수도 있는 다른 예시적인 가상 머신 서버를 도시한 것이고, 클라이언트는 웹 브라우저를 사용하고 원격 프리젠테이션 그래픽들을 비디오로서 수신한다.
도 13은 복수의 가상 머신들을 호스팅하는 가상 머신 서버를 포함하는 예시적인 시스템을 도시한 것이고, 각각의 가상 머신은 클라이언트와 원격 프리젠테이션 세션을 실시하고, 클라이언트는 웹 브라우저를 사용하고 원격 프리젠테이션 그래픽들을 비디오로서 수신한다.
본 발명의 실시예들은 하나 이상의 컴퓨터 시스템들 상에서 실행할 수도 있다. 도 1 및 다음의 논의는 본 발명의 실시예들이 구현될 수도 있는 적절한 컴퓨팅 환경의 간단한 일반적인 설명을 제공하도록 의도된다.
도 1은 예시적인 범용 컴퓨팅 시스템을 도시한 것이다. 범용 컴퓨팅 시스템은, 프로세싱 유닛(21)을 포함하는 종래의 컴퓨터(20) 등을 포함할 수도 있다. 프로세싱 유닛(21)은 하나 이상의 프로세서들을 포함할 수도 있으며, 그 각각은 하나 이상의 프로세싱 코어들을 가질 수도 있다. 1 초과의 프로세싱 코어를 갖는 프로세서들이 빈번히 지칭되는 바와 같은 멀티-코어 프로세서는 단일 칩 패키지 내에 포함된 다중의 프로세서들을 포함한다.
컴퓨터(20)는 또한 그래픽 프로세싱 유닛(GPU)(90)을 포함할 수도 있다. GPU(90)는 컴퓨터 그래픽들을 조작하도록 최적화된 전문적인 마이크로 프로세서이다. 프로세싱 유닛(21)은 GPU(90)에 대한 작업을 오프로딩할 수도 있다. GPU(90)는 그 자신의 그래픽 메모리를 가질 수도 있고/있거나 시스템 메모리(22)의 일부에 액세스할 수도 있다. 프로세싱 유닛(21)에서와 같이, GPU(90)는 하나 이상의 프로세싱 유닛들을 포함할 수도 있고, 그 각각은 하나 이상의 코어들을 갖는다.
컴퓨터(20)는 또한 시스템 메모리(22), 및 시스템이 동작 상태에 있을 경우, 시스템 메모리(22)를 포함한 다양한 시스템 컴포넌트들을 프로세싱 유닛(21)에 통신가능하게 커플링시키는 시스템 버스(23)를 포함할 수도 있다. 시스템 메모리(22)는 판독 전용 메모리(ROM)(24) 및 랜덤 액세스 메모리(RAM)(25)를 포함할 수 있다. 스타트 업 동안과 같이 컴퓨터(20) 내의 엘리먼트들 간에 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는 기본 입력/출력 시스템(26)(BIOS)이 ROM(24)에 저장된다. 시스템 버스(23)는 메모리 버스 또는 메모리 제어기, 주변기기 버스, 또는 로컬 버스를 포함하는 임의의 수개의 타입들의 버스 구조들일 수도 있으며, 이는 임의의 다양한 버스 아키텍처들을 구현한다. 프로세싱 유닛(21)과 무관하게 메모리로부터 판독하고/하거나 메모리에 기입하도록 구성된 직접 메모리 액세스(DMA) 제어기(80)가 시스템 버스(23)에 커플링될 수도 있다. 부가적으로, 저장 디바이스 I/F(32) 또는 자기 디스크 드라이브 I/F(33)와 같이 시스템 버스(23)에 접속된 디바이스들은 또한, DMA 제어기(80)의 사용없이, 프로세싱 유닛(21)과 무관하게 메모리로부터 판독하고/하거나 메모리에 기입하도록 구성될 수도 있다.
컴퓨터(20)는 하드 디스크(도시 안됨) 또는 솔리드-스테이트 디스크(SSD)(도시 안됨)로부터 판독하고 그에 기입하기 위한 저장 드라이브(27), 착탈가능 자기 디스크(29)로부터 판독하거나 그에 기입하기 위한 자기 디스크 드라이브(28), 및 CD ROM 또는 다른 광학 매체와 같은 착탈가능 광학 디스크(31)로부터 판독하거나 그에 기입하기 위한 광학 디스크 드라이브(30)를 더 포함할 수도 있다. 하드 디스크 드라이브(27), 자기 디스크 드라이브(28), 및 광학 디스크 드라이브(30)는, 각각, 하드 디스크 드라이브 인터페이스(32), 자기 디스크 드라이브 인터페이스(33), 및 광학 드라이브 인터페이스(34)에 의해 시스템 버스(23)에 접속되는 것으로서 도시된다. 드라이브들 및 그 관련 컴퓨터-판독가능 저장 매체는 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 및 컴퓨터(20)에 대한 다른 데이터의 비휘발성 저장을 제공한다.
비록 본 명세서에서 설명되는 예시적인 환경이 하드 디스크, 착탈가능 자기 디스크(29) 및 착탈가능 광학 디스크(31)를 채용하지만, 플래시 메모리 카드들, 디지털 비디오 디스크들 또는 디지털 다기능 디스크들(DVDs), 랜덤 액세스 메모리들(RAMs), 판독 전용 메모리들(ROMs) 등과 같이 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 다른 타입들의 컴퓨터 판독가능 매체가 또한 예시적인 오퍼레이팅 환경에서 사용될 수도 있음이 당업자에 의해 이해되어야 한다. 일반적으로, 그러한 컴퓨터 판독가능 저장 매체는, 본 개시의 양태들을 구현하는 프로세서 실행가능 명령들을 저장하도록 일부 실시예들에서 사용될 수 있다. 컴퓨터(20)는 또한, 소형 컴퓨터 시스템 인터페이스(SCSI) 버스(56)를 통하여 저장 디바이스(62)에 접속하는 호스트 어댑터(55)를 포함할 수도 있다.
컴퓨터-판독가능 명령들을 포함하는 다수의 프로그램 모듈들은 오퍼레이팅 시스템(35), 하나 이상의 어플리케이션 프로그램들(36), 다른 프로그램 모듈들(37), 및 프로그램 데이터(38)를 포함하여, 하드 디스크, 자기 디스크(29), 광학 디스크(31), ROM(24) 또는 RAM(25)과 같은 컴퓨터-판독가능 매체 상에 저장될 수도 있다. 프로세싱 유닛에 의한 실행 시, 컴퓨터-판독가능 명령들은, 하기에 더 상세히 설명되는 액션들이 수행되게 하거나 또는 다양한 프로그램 모듈들이 인스턴스화되게 한다. 사용자는 키보드(40) 및 포인팅 디바이스(42)와 같은 입력 디바이스들을 통해 컴퓨터(20)에 커맨드들 및 정보를 입력할 수도 있다. 다른 입력 디바이스들(도시 안됨)은 마이크로폰, 조이스틱, 게임 패드, 위성 디스크, 스캐너 등을 포함할 수도 있다. 이들 및 다른 입력 디바이스들은 종종, 시스템 버스에 커플링된 직렬 포트 인터페이스(46)를 통해 프로세싱 유닛(21)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버셜 직렬 버스(USB)와 같은 다른 인터페이스들에 의해 접속될 수도 있다. 디스플레이(47) 또는 다른 타입의 디스플레이 디바이스가 또한 비디오 어댑터(48)와 같은 인터페이스를 통해 시스템 버스(23)에 접속될 수 있다. 디스플레이(47)에 부가하여, 컴퓨터들은 통상적으로, 스피커들 및 프린터들과 같은 다른 주변기기 출력 디바이스들(도시 안됨)을 포함한다.
컴퓨터(20)는, 원격 컴퓨터(49)와 같은 하나 이상의 원격 컴퓨터들에 대한 논리 접속부들을 사용하는 네트워킹된 환경에서 동작할 수도 있다. 원격 컴퓨터(49)는 다른 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 디바이스 또는 다른 일반적인 네트워크 노드일 수도 있으며, 오직 메모리 저장 디바이스(50)만이 도 1에 도시되었지만, 통상, 컴퓨터(20)에 대하여 상기 설명된 엘리먼트들 중 다수 또는 그 모두를 포함할 수 있다. 도 1에 도시된 논리 접속부들은 로컬 영역 네트워크(LAN)(51) 및 광역 네트워크(WAN)(52)를 포함할 수 있다. 그러한 네트워킹 환경들은 사무실들, 기업측 컴퓨터 네트워크들, 인트라넷들 및 인터넷에서 일반적이다.
LAN 네트워킹 환경에서 사용될 경우, 컴퓨터(20)는 네트워크 인터페이스 또는 어댑터(53)를 통하여 LAN(51)에 접속될 수 있다. WAN 네트워킹 환경에서 사용될 경우, 컴퓨터(20)는 통상적으로, 인터넷과 같은 광역 네트워크(52)를 통한 통신을 확립하기 위한 모뎀(54) 또는 다른 수단을 포함할 수 있다. 내부 또는 외부에 존재할 수도 있는 모뎀(54)은 직렬 포트 인터페이스(46)를 통해 시스템 버스(23)에 접속될 수 있다. 네트워킹된 환경에 있어서, 컴퓨터(20) 또는 그 부분들에 대하여 나타낸 프로그램 모듈들은 원격 메모리 저장 디바이스에 저장될 수도 있다. 도시된 네트워크 접속들은 예시적이며, 컴퓨터들 간의 통신 링크를 확립하는 다른 수단이 사용될 수도 있음이 이해될 것이다.
컴퓨터(20)가 네트워킹된 환경에서 동작하도록 구성된 실시예에 있어서, OS(35)는 네트워크 상에 원격으로 저장되고, 컴퓨터(20)는, 국부적으로 저장된 OS로부터 부팅하는 것보다는 이러한 원격적으로 저장된 OS를 넷부팅할 수도 있다. 일 실시예에 있어서, 컴퓨터(20)는, 네트워킹을 처리하고 출력을 예를 들어 모니터(47) 상에 디스플레이하도록 구성된 커널보다는, OS(35)가 풀 OS 미만인 씬 클라이언트(thin client)를 포함한다.
도 2는 일반적으로, 본 발명의 양태들이 구현될 수 있는 예시적인 환경을 도시한 것이다. 예를 들어, 서버(204)는 도 8의 동작 절차들을 구현할 수도 있다. 당업자는, 도 2에 의해 도시된 예시적인 엘리먼트들이 본 발명을 설명하기 위한 동작 프레임워크를 제공하도록 도시됨을 이해할 수 있다. 이에 따라, 일부 실시예들에 있어서, 각각의 환경의 물리적 레이아웃은 상이한 구현 방식들에 의존하여 상이할 수도 있다. 따라서, 예시적인 동작 프레임워크는 단지 예시적인 것으로서 처리되어야 하고 결코 청구항들의 범위를 한정하지 않아야 한다.
원격 프리젠테이션 세션 서버를 실시하도록 구성된 회로를 포함할 수도 있는 서버(204)가 도 2에 도시되거나, 또는 다른 실시예들에 있어서, 서버(204)는 원격 데스크탑 접속들을 지원하도록 구성된 회로를 포함할 수 있다. 도시된 예에 있어서, 서버(204)는 세션들 1 내지 N(여기서, N은 2 초과의 정수임)과 같이, 클라이언트들을 접속시키기 위한 하나 이상의 세션들을 생성하도록 구성될 수 있다. 요컨데, 본 발명의 예시적인 실시예들에서의 세션은 일반적으로, 서버(204)의 커널(214)과 상호작용하도록 구성되는 복수의 서브시스템들, 예를 들어, 소프트웨어 코드에 의해 실시되는 동작 환경을 포함할 수 있다. 예를 들어, 세션은 데스크탑 윈도우와 같은 사용자 인터페이스를 인스턴스화하는 프로세스, 윈도우 내에서 마우스 움직임을 추적하는 서브시스템들, 아이콘 상의 마우스 클릭을, 프로그램의 인스턴스를 실시하는 커맨드들로 전환하는 서브시스템 등을 포함할 수 있다. 예를 들어, 서버(204)가 클라이언트(201)로부터 네트워크 접속을 통해 접속 요청을 수신할 경우, 세션은 서버(204)에 의한 사용자별 기반으로 서버(204)에 의해 생성될 수 있다. 일반적으로, 접속 요청은, 예를 들어, 서버(204)의 회로에 의해 실시될 수 있는 전송 로직(210)에 의해 먼저 처리될 수 있다. 전송 로직(210)은 일부 실시예들에 있어서 네트워크 어댑터; 펌웨어, 및 접속 메시지들을 수신하고 이들을 엔진(212)으로 포워딩하도록 구성될 수 있는 소프트웨어를 포함할 수 있다. 도 2에 도시된 바와 같이, 전송 로직(210)은 일부 실시예들에 있어서 각 세션에 대한 프로토콜 스택 인스턴스들을 포함할 수 있다. 일반적으로, 각각의 프로토콜 스택 인스턴스는 사용자 인터페이스 출력을 클라이언트로 라우팅하고, 클라이언트로부터 수신된 사용자 입력을 그 세션과 연관된 세션 코어(244)로 라우팅하도록 구성될 수 있다.
도 2의 일반적인 설명을 계속하면, 본 발명의 일부 예시적인 실시예들에 있어서의 엔진(212)은 세션들에 대한 요청들을 프로세싱하고; 각 세션에 대한 기능을 결정하고; 세션에 대한 물리적 리소스들의 세트를 할당함으로써 세션들을 생성하며; 세션에 대한 프로토콜 스택 인스턴스를 인스턴스화하도록 구성될 수 있다. 일부 실시예들에 있어서, 엔진(212)은, 상기 언급된 동작 절차들의 일부를 구현할 수 있는 전문화된 회로 컴포넌트들에 의해 실시될 수 있다. 예를 들어, 일부 예시적인 실시예들에 있어서의 회로는 메모리, 및 엔진(212)을 실시하는 코드를 실행하도록 구성된 프로세서를 포함할 수 있다. 도 2에 의해 도시된 바와 같이, 일부 경우들에 있어서, 엔진(212)은 접속 요청들을 수신하고, 예를 들어, 라이센스가 이용가능하고 세션이 요청에 대해 생성될 수 있음을 결정할 수 있다. 서버(204)가 원격 데스크탑 능력들을 포함하는 원격 컴퓨터인 상황에 있어서, 엔진(212)은 라이센스에 대한 체크없이 접속 요청에 응답하여 세션을 생성하도록 구성될 수 있다. 도 2에 의해 도시된 바와 같이, 세션 매니저(216)는 엔진(212)으로부터의 메시지를 수신하도록 구성될 수 있고, 그 메시지에 응답하여, 세션 매니저(216)는 세션 식별자를 테이블에 부가하고; 메모리를 세션 식별자에게 할당하며; 세션 식별자에 할당된 메모리에서 시스템 환경 변수들 및 서브시스템 프로세스들의 인스턴스들을 생성하도록 구성될 수 있다.
도 2에 의해 도시된 바와 같이, 세션 매니저(216)는, 세션 코어(244)와 같은 커널 모드 부분을 포함할 수 있는 런타임 서브시스템(240)과 같은 환경 서브시스템들을 인스턴스화할 수 있다. 예를 들어, 일 실시예에 있어서의 환경 서브시스템은 서비스들의 일부 서브세트를 어플리케이션 프로그램들에 노출하고 오퍼레이팅 시스템(214)의 커널에 액세스 포인트를 제공하도록 구성된다. 예시적인 실시예들에 있어서, 런타임 서브시스템(240)은 프로세스들 및 스레드들의 실행을 제어할 수 있고, 세션 코어(244)는 커널(214)의 관리부로 요청들을 전송하여 스레드들에 대한 메모리 및 실행될 스레드들에 대한 스케줄 시간을 할당할 수 있다. 일 실시예에 있어서, 세션 코어(244)는 그래픽 디스플레이 인터페이스(246)(GDI), 보안 서브시스템(250), 및 입력 서브시스템(252)을 포함할 수 있다. 입력 서브시스템(252)은 이들 실시예들에 있어서 클라이언트(201)로부터의 사용자 입력을, 세션과 연관된 프로토콜 스택 인스턴스를 통해 수신하고, 그 입력을 적절한 세션에 대해 세션 코어(244)로 송신하도록 구성될 수 있다. 사용자 입력은 일부 실시예들에 있어서, 절대적인 및/또는 상대적인 마우스 움직임 커맨드들을 나타내는 신호들, 마우스 좌표들, 마우스 클릭들, 키보드 신호들, 조이스틱 움직임 신호들 등을 포함할 수 있다. 사용자 입력, 예를 들어, 아이콘 상의 마우스의 더블 클릭은 세션 코어(244)에 의해 수신될 수 있고, 입력 서브시스템(252)은, 아이콘이 더블 클릭과 연관된 좌표에 위치됨을 결정하도록 구성될 수 있다. 그 후, 입력 서브시스템(252)은, 아이콘과 연관된 어플리케이션에 대한 프로세스를 실행할 수 있는 통지를 런타임 서브시스템(240)으로 전송하도록 구성될 수 있다.
클라이언트(201)로부터 입력을 수신하는 것에 부가하여, 묘화 커맨드들이 어플리케이션 및/또는 데스크탑으로부터 수신되고 GDI(246)에 의해 프로세싱될 수 있다. GDI(246)는 일반적으로, 그래픽 오브젝트 묘화 커맨드들을 생성할 수 있는 프로세스를 포함할 수 있다. 예시적인 실시예에 있어서의 GDI(246)는 그 출력을 원격 디스플레이 서브시스템(254)으로 전달하도록 구성될 수 있고, 여기서, 커맨드들은 세션에 접속된 디스플레이 드라이버에 대해 포맷팅된다. 특정한 예시적인 실시예들에 있어서, 하나 이상의 물리적 디스플레이들은 예를 들어 원격 데스크탑 상황에서의 서버(204)에 접속될 수 있다. 이들 예시적인 실시예들에 있어서, 원격 디스플레이 서브시스템(254)은 원격 컴퓨터 시스템의 디스플레이 드라이버(들)에 의해 렌더링되는 묘화 커맨드들을 미러링하고, 미러링된 정보를 세션과 연관된 스택 인스턴스를 통해 클라이언트(201)로 송신하도록 구성될 수 있다. 서버(204)가 원격 프리젠테이션 세션 서버인 다른 예시적인 실시예에 있어서, 원격 디스플레이 서브시스템(254)은 서버(204)에 물리적으로 어택된 디스플레이들과 연관되지 않을 수도 있는 가상 디스플레이 드라이버(들)를 포함하도록 구성될 수 있으며, 예를 들어, 서버(204)는 헤드없이 구동하고 있을 수 있다. 이 실시예에 있어서의 원격 디스플레이 서브시스템(254)은 하나 이상의 가상 디스플레이들에 대한 묘화 커맨드들을 수신하고, 이들을 세션과 연관된 스택 인스턴스를 통해 클라이언트(201)로 송신하도록 구성될 수 있다. 본 발명의 일 실시예에 있어서, 원격 디스플레이 서브시스템(254)은 각각의 디스플레이 드라이버에 대한 디스플레이 해상도를 결정하고, 예를 들어, 가상 디스플레이들과 연관된 가상 디스플레이 드라이버(들)의 디스플레이 해상도 또는 물리적 디스플레이들과 연관된 디스플레이 드라이버들의 디스플레이 해상도를 결정하고; 패킷들을, 관련 프로토콜 스택 인스턴스를 통해 클라이언트(201)로 라우팅하도록 구성될 수 있다.
일부 예시적인 실시예들에 있어서, 세션 매니저(216)는 부가적으로, 세션에 대한 로그온 및 로그오프를 처리하도록 구성될 수 있는 세션의 세션 식별자와 연관된 로그온 프로세스의 인스턴스를 인스턴스화할 수 있다. 이들 예시적인 실시예들에 있어서, 로그온 프로세스와 연관된 그래픽 사용자 인터페이스를 나타내는 묘화 커맨드들은 클라이언트(201)로 송신될 수 있으며, 여기서, 클라이언트(201)의 사용자는 어카운트 식별자, 예를 들어, 사용자명/패스워드 조합, 스마트 카드 식별자, 및/또는 바이오메트릭 정보를 로그온 스크린 상에 입력할 수 있다. 그 정보가 서버(204)로 송신되고, 엔진(212) 및 세션 코어(244)의 보안 서브시스템(250)으로 라우팅될 수 있다. 예를 들어, 특정한 예시적인 실시예들에 있어서, 엔진(212)은 사용자 어카운트가 라이센스와 연관되는지를 결정하도록 구성될 수 있고; 보안 서브시스템(250)은 세션에 대한 보안 토큰을 생성하도록 구성될 수 있다.
도 3은 클라이언트가 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 것을 도시한 것이고, 여기서, 프록시는 원격 프리젠테이션 세션 데이터를 비디오로 변환한다. 실시예들에 있어서, 서버(304)는 도 2의 서버(204)로 구현될 수도 있고, 프록시(306) 및 클라이언트(308)는 도 1의 컴퓨터(20)로 구현될 수도 있다. 실시예들에 있어서, 서버(304)는 원격 프리젠테이션 프로토콜 인코딩형 데이터를 수신 및 전송함으로써 원격 프리젠테이션 세션을 실시하고 있고, 클라이언트(308)는 HTTP 인코딩형 데이터(비디오 포함)를 수신 및 전송함으로써 원격 프리젠테이션 세션을 실시하고 있다. 프록시(306)는 서버(304)로부터 원격 프리젠테이션 프로토콜 인코딩형 데이터(예를 들어, 그래픽 출력)를 수신하고, 이를 비디오로서 인코딩하며, 이를 HTTP 인코딩형 데이터로서 클라이언트(308)로 전송한다. 유사하게, 프록시(306)는 클라이언트(308)로부터 HTTP 인코딩형 데이터(예를 들어, 사용자 입력)를 수신하고, 이를 원격 프리젠테이션 프로토콜 인코딩형 데이터로서 인코딩하며, 이를 서버(304)로 전송한다.
클라이언트(308)는 프록시(306)와의 HTTP 접속을 확립함으로써 원격 프리젠테이션 세션을 개시할 수도 있다. HTTP 접속은 HTTPS (HTTP 보안) 접속과 같이 HTTP의 변이체일 수도 있다. 이러한 HTTP 접속을 확립하는 것은, 프록시(306)와의 HTTP 접속을 확립하는 것과 연관된 웹 페이지를 개방하도록 클라이언트(308)의 웹 브라우저에 대한 사용자 입력을 제공하는 클라이언트(308)의 사용자에 의해서와 같이 실시될 수도 있다. HTTP 접속은 클라이언트(308)와 프록시(306) 간의 Ajax 접속일 수도 있다.
HTTP 접속이 확립되면, 클라이언트(308)는 그 자체를 프록시(306)에 인증할 수도 있다(이는, 결국, 서버(304)에 인증하기 위한 인증과 연관된 크리덴셜을 사용할 수도 있음). 이러한 인증은, 예를 들어, 클라이언트가 사용자 식별 및 패스워드를 프록시(306)로 전송하는 것을 포함할 수도 있으며, 이 프록시(306)는 사용자-패스워드 쌍들의 데이터베이스에 대해 인증할 수도 있다. 실시예들에 있어서, 프록시(306)는 서버(304)와 원격 프리젠테이션 세션을 확립함에 있어서, 클라이언트 자체를 인증하지 않지만, 대신, 클라이언트(308)로부터의 크리덴셜을 사용하여 그 자체를 인증한다. 프록시(306)가 서버(304)와 원격 프리젠테이션 세션을 확립하는 것에 성공할 경우, 클라이언트(308)는 프록시(306)에 인증된다고 결정할 수도 있다.
프록시(306)는 또한, (프록시(306)가 이미 그렇게 수행되지 않았다면) 클라이언트(308)와 연관되는 서버(304)와 원격 프리젠테이션 세션을 확립한다. 이러한 원격 프리젠테이션 세션에 있어서, 프록시(306)는 (도 2의 클라이언트(201)와 같이) 원격 프리젠테이션 세션 클라이언트로서 기능하고, 서버(304)는 (도 2의 서버(204)와 같이) 원격 프리젠테이션 세션 서버로서 기능한다. 실시예들에 있어서, 서버(304)가 프록시(306)와 원격 프리젠테이션 세션을 확립한 경우, 서버(304)는 그 세션과 연관된 로그인의 표시를 사용하여, 원격 프리젠테이션 세션에서 원격화하기 위한 세션 또는 어플리케이션을 결정한다. 예를 들어, 서버(304)가 재접속하는 로그인과 연관된 접속해제된 세션이 존재할 수도 있거나, 또는 어떠한 세션도 존재하지 않을 수도 있다(이 경우, 서버(304)는 로그인에 대한 새로운 세션을 인스턴스화할 수도 있음). 어플리케이션의 세션 출력이 (하나 이상의 어플리케이션들을 포함할 수도 있는) 세션의 그래픽 출력보다 원격화될 경우, 동일한 프로세스 - 접속해제된 어플리케이션을 재접속시키는 것, 또는 접속해제된 어플리케이션이 없는 경우에 어플리케이션을 개시하는 것 - 가 발생할 수도 있다.
그 후, 서버(304)는 원격 프리젠테이션 세션을 통해, 프록시(306)에 원격화되고 있는 것의 그래픽 출력을 송신할 수도 있다. 이는, 도 2의 서버(204)가 그래픽 출력을 클라이언트(201)로 원격화하는 방법과 유사한 방식으로 수행될 수도 있다. 프록시(306)는 이러한 원격 프리젠테이션 프로토콜 인코딩형 그래픽 데이터를 수신하고, 이를 HTTP 접속을 통해 클라이언트(308)로 전송될 비디오로 변환한다. 실시예들에 있어서, 프록시(306)는 원격 프리젠테이션 프로토콜 인코딩형 그래픽 데이터를 디코딩하여 그래픽 데이터를 생성하고, 그 후, 그래픽 데이터를 비디오의 하나 이상의 프레임들로서 인코딩한다. 이러한 비디오는, 클라이언트가 고유하게 디코딩할 수도 있는 포맷으로 인코딩될 수도 있다. 예를 들어, 클라이언트의 웹 브라우저는, HTML5 <video> 태그에 의해 참조되는 하나 이상의 비디오 포맷들을 고유하게 디코딩하는 것을 포함하여, 데이터를 HTML5 포맷으로 프로세싱하도록 구성될 수도 있다. 그러한 포맷의 일 예는 H.264이다. 그래픽 데이터를 비디오 포맷으로 인코딩하였으면, 프록시(306)는 그 비디오를 클라이언트(308)로 송신하고, 여기서, 클라이언트(308)는 그 비디오를 디코딩하고, 이를 웹 브라우저에 디스플레이한다.
클라이언트(308)는, 서버(304)가 프로세싱하는 것에 영향을 주는 커맨드들을 발행할 수도 있다. 클라이언트(308)의 사용자는 클라이언트(308)의 웹 브라우저로 지향된 입력을 제공할 수도 있다. 이러한 입력은 마우스, 키보드, 및 터치 입력과 같은 입력과 함께, 입력이 비디오에 대하여 실시되었던 장소의 표시(예를 들어, 디스플레이된 비디오의 우측에 대해 50픽셀 및 좌상부 코너 아래로 50 픽셀)를 포함할 수도 있다. 클라이언트(308)는, 입력을 검출하기 위한 자바스크립트 기술들을 사용하여 웹 브라우저에서 이러한 입력을 포착할 수도 있다. 그 후, 클라이언트(308)는 입력을 프록시(306)로 전송할 수도 있다. 클라이언트(308)는, 예를 들어, JSON(자바스크립트 오브젝트 표기)과 같이 데이터 구조들 및 연관 어레이들을 나타내는 휴먼-판독가능 형태 또는 XML(확장성 마크업 언어)과 같은 태그-경계결정식 마크업 포맷으로 표현함으로써 입력을 프록시(306)로의 송신을 위해 준비할 수도 있다.
클라이언트(308)는 입력을 프록시(306)로 비동기식으로 전송할 수도 있어서, 입력을 전송하는 것은 비디오를 웹 페이지에 디스플레이하는 것과 독립적으로 수행될 수도 있다. 비동기식 통신에 있어서, 클라이언트(308)는, (예를 들어, 비디오가 웹 페이지에 계속 디스플레이되는 동안) 비디오가 웹 페이지에 디스플레이되는 것과 독립적으로 입력을 프록시(306)에 전송할 수도 있다. 그 후, 프록시(306)로부터 응답이 수신될 경우(예를 들어, 프록시(306)가 클라이언트(308)로, 입력을 프로세싱한 결과에 대응하는 더 많은 비디오를 전송), 클라이언트(308)는 그 응답을 프로세싱한다.
프록시(306)는 클라이언트(308)로부터 입력을 수신하고, 그 입력이 (JSON 또는 XML과 같은) 일 포맷으로 인코딩된 경우, 입력을 디코딩하고 입력을 원격 프리젠테이션 세션 데이터로서 재-인코딩한다. 그 후, 프록시(306)는 이러한 인코딩된 원격 프리젠테이션 세션 데이터를 서버(304)로 전송할 수도 있으며, 여기서, 서버(304)는 입력을, 원격 프리젠테이션 세션에 대한 적절한 어플리케이션 또는 사용자 세션으로 주입하고, 그 어플리케이션 또는 사용자 세션에 제공되는 입력과 연관된 프로세싱을 수행한다. 그 프로세싱이 원격 프리젠테이션 세션과 연관된 추가의 그래픽 출력이 생성되게 할 경우, 서버(304)는 이러한 부가적인 그래픽 출력을 인코딩하고, 이를 프록시(306)로 전송할 수도 있으며, 이 프록시(306)는 이 출력을 비디오로 변환하고 이를 클라이언트(308)로 디스플레이를 위해 전송한다.
실시예들에 있어서, 서버(304) 및 프록시(306)는 가상 머신들(VMs) 상에서 실행될 수도 있으며, 가상 머신들 양자는 동일한 물리적인 호스트 컴퓨터 상에서 실행한다. 그러한 시나리오에 있어서, 서버(304) 및 프록시(306)는 루프백 접속(127.0.0.1과 같이 자신을 사용하는 네트워크 인터페이스를 참조하는 IP 어드레스를 사용하는 접속)을 통해 통신할 수도 있다. 예를 들어, 서버(304)는 포트 3389 상에서 청취할 수도 있고, 프록시(306)는 포트 3390 상에서 청취할 수도 있다. 그 후, 서버(304)는 데이터를 127.0.0.1:3390으로 송신함으로써 프록시(306)와 통신할 수도 있고, 프록시(306)는 데이터를 127.0.0.1:3389로 송신함으로써 서버(304)와 통신할 수도 있다. 동일한 물리적인 머신 상에서 실행하는 서버(304)와 프록시(306) 간의 루프백 접속을 사용하는 것은 레거시 원격 프리젠테이션 서버로 하여금 변형없이 동작하게 한다. 이는, 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 클라이언트와 서버(304) 간의 매개물로서 프록시(306)를 사용하는 것이 레거시 서버로 하여금 변형없이 동작하게 하는 방법과 유사하다. 루프백 접속에 관하여, 데이터를 오직 통신 네트워크 인터페이스를 통하여 클라이언트로 송신하도록 구성된 레거시 원격 프리젠테이션 서버가 본 발명의 실시예들을 실시하도록 사용될 수도 있는데, 왜냐하면 그 서버는 네트워크 통신 인터페이스를 통해 클라이언트(또는 프록시)와 여전히 통신할 것이기 때문이다.
도 4는 클라이언트가 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 것을 도시한 것이고, 여기서, 서버는, 원격화되고 있는 어플리케이션 또는 데스크탑의 인스턴스에 의해 생성된 그래픽 출력으로부터 비디오를 생성한다. 서버(404)는 도 1의 컴퓨터(20)로 구현될 수도 있다. 도 4에 도시된 컴퓨터들이 도 3에 도시된 컴퓨터들과 상이한 하나의 방식은 서버(404)가 서버(304)와 상이하다는 점이다. 서버(304)는, 원격 프리젠테이션 프로토콜로 인코딩된 데이터를 클라이언트와 교환함으로써 원격 프리젠테이션 세션들을 실시하도록 구성된다. 서버(304)는, 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 클라이언트로, 원격 프리젠테이션 데이터를 비디오의 형태로 전송하도록 구성되지 않는다. 대신, 프록시(306)는 서버로부터 원격 프리젠테이션 프로토콜 인코딩형 데이터를 수신하고 이를 비디오로 변환하며, 클라이언트로부터 사용자 입력을 수신하고 그 사용자 입력을 원격 프리젠테이션 프로토콜로 인코딩하도록 구성된다.
이에 반하여, 도 4의 서버(404)는, 웹 브라우저를 사용하여 원격 프리젠테이션 세션을 실시하는 클라이언트(308)로, 원격 프리젠테이션 데이터를 비디오로서 전송하도록 구성된다. 클라이언트(306)는, 도 3에 관하여 설명된 바와 같이 클라이언트(306)가 프록시(306)와 HTTP 접속을 확립하는 것과 유사한 방식으로 서버(404)와 HTTP 접속을 확립할 수도 있다. 그 후, 서버(404)는 어플리케이션들 또는 사용자 세션들로부터 그래픽 출력을 취하고, 그 출력을 원격 프리젠테이션 프로토콜 인코딩형 데이터로 인코딩하는 중간 단계를 수행하지 않고 그 출력을 비디오로 인코딩하도록 구성된다. 예를 들어, 어플리케이션들 또는 사용자 세션들로부터의 그래픽 출력이 비트맵 이미지들을 포함할 경우, 이들 비트맵 이미지들은 서버(404)에 의해 비디오의 하나 이상의 프레임들로서 인코딩될 수도 있다.
서버(404)가 원격 프리젠테이션 프로토콜 인코딩형 데이터보다는 비디오를 클라이언트(308)로 전송함으로써 원격 프리젠테이션 세션을 실시할 수 있는 방법과 유사하게, 서버(404)는, 웹 브라우저로 지향되고 JSON 또는 XML과 같은 원격 프리젠테이션 프로토콜없이 인코딩된 사용자 입력을 클라이언트(308)로부터 수신할 수도 있다. 서버(404)는 이 입력을 디코딩하고, 이 입력을, 서버(404)가 원격 프리젠테이션 프로토콜로 인코딩된 입력을 어플리케이션 또는 사용자 세션으로 주입하는 방법과 유사한 방식으로, 관련 어플리케이션 또는 사용자 세션으로 주입할 수도 있다.
도 5는 2개의 클라이언트들이 서버와 원격 프리젠테이션 세션을 실시하는 것을 도시한 것이고, 일 클라이언트는 웹 브라우저를 사용하고 프록시를 통해 통신하며 그래픽들을 비디오로서 수신하며, 일 클라이언트는 서버와 직접 통신하고 원격 프리젠테이션 세션 데이터로서 인코딩된 그래픽들을 수신한다. 서버(504) 및 클라이언트(508)는 도 1의 컴퓨터(20)로 구현될 수도 있다. 서버(504)는 원격 프리젠테이션 프로토콜 인코딩형 데이터를 사용하여 클라이언트(508)와 같은 클라이언트와 원격 프리젠테이션 세션을 실시하도록 구성될 수도 있다. 서버(504)는 또한, 프록시를 통해 원격 프리젠테이션 세션을 실시하는 클라이언트와 원격 프리젠테이션 세션을 실시하도록 구성될 수도 있고, 여기서, 클라이언트는 웹 브라우저를 사용하고, 클라이언트 및 프록시는 클라이언트(308)와 같이 HTTP 세션을 통해 통신한다. 즉, 서버(504)는 (프록시(306)를 통해 웹 브라우저를 사용하는 클라이언트와 원격 프리젠테이션 세션을 실시하도록 구성된) 도 3의 서버(304)의 기능들 및 (웹 브라우저를 사용하는 클라이언트와 직접 원격 프리젠테이션 세션을 실시하도록 구성되는) 도 4의 서버(404)의 기능들을 수행하도록 구성될 수도 있다.
도 6 및 도 7은 원격 프리젠테이션 세션에서 송신될 비디오로서 그래픽 데이터를 인코딩하기 위한 기술들을 도시한 것이다. 프록시(306) 또는 서버(404)가 다중의 원격 프리젠테이션 세션들에 대한 그래픽 출력을 비디오로서 인코딩하고 있는 경우, 컴퓨터들의 프로세싱 능력들은 신속하게 부과되거나 강요될 수도 있다. 이러한 관점에서, 본 발명의 실시예들은 원격 프리젠테이션 세션의 그래픽 출력을 비디오로서 인코딩하는 효율적인 방식들을 제공한다. 이들 실시예들 중 일부가 도 6 및 도 7에 도시된다.
도 6은 비디오로서 인코딩될 그래픽 데이터의 2개의 프레임들을 도시한 것이고, 여기서, 각각의 프레임의 부분은 상이한 위치에 있을지라도 동일한 이미지를 포함하며, 일 프레임은 다른 프레임의 인코딩에 기초하여 인코딩될 수도 있다. 프레임(600)은 컴퓨터 데스크탑으로부터의 그래픽 데이터의 프레임이고, 프레임(650)은 그 동일한 데스크탑을 더 나중 시간에 나타낸 그래픽 데이터의 프레임이다. 프레임(600)은 부분(602)을 포함한다. 프레임(650)에 있어서, 프레임(600)의 그 부분(602)은 위치(652)로부터 위치(654)로 이동되었다. 따라서, 부분들(602 및 654)은 단지 상이한 위치일 뿐 동일한 이미지를 나타낸 것이다. 따라서, 프레임(650)의 부분(654)은 재-인코딩될 필요가 없을 수도 있다. 대신, 부분(654)을 배제한 프레임(650)은 인코딩될 수도 있고, 그 후, 이전에 인코딩된 부분(602)(부분(654)의 위치에 인코딩된 프레임으로 배치됨)과 결합되어 인코딩된 프레임(650)을 생성할 수도 있다. 프레임(650)을 인코딩하기 위해 이전에 인코딩된 데이터를 이용함에 있어서, 프레임(650)을 인코딩하는데 필요한 컴퓨팅 리소스들이 감소될 수도 있어서, 프레임을 인코딩하고 있는 서버 또는 프록시로 하여금, 그렇지 않으면 동시에 인코딩할 수 있는 것보다 더 많은 프레임들을 동시에 인코딩하게 한다(따라서, 더 많은 원격 프리젠테이션 세션들을 동시에 실시하게 함).
도 7은 비디오로서 인코딩될 그래픽 데이터의 프레임을 도시한 것이고, 여기서, 프레임은 이전 프레임과 공통 피처들을 공유하며 프레임들이 상이한 "더티" 영역들을 갖는다. 프레임(700)은 2개의 더티 영역들 - 더티 영역들(702 및 704) - 을 포함하고, 여기서, 프레임(700)은, 그 프레임보다 선행되고 인코딩되었던 프레임과는 상이하다. 프레임(700)은, 더티 영역들(702 및 704)을 인코딩하고 그 후 이들 인코딩된 더티 영역들을, 이전 프레임의 인코딩으로부터 취해지는 이전에 인코딩된 더티하지 않은 영역들과 결합함으로써 비디오로서 인코딩될 수도 있다. 도 6에 관하여 유사하게, 프레임(700)을 인코딩하기 위해 이전에 인코딩된 데이터를 이용함에 있어서, 프레임(700)을 인코딩하는데 필요한 컴퓨팅 리소스들이 감소될 수도 있어서, 프레임을 인코딩하고 있는 서버 또는 프록시로 하여금, 그렇지 않으면 동시에 인코딩할 수 있는 것보다 더 많은 프레임들을 동시에 인코딩하게 한다(따라서, 더 많은 원격 프리젠테이션 세션들을 동시에 실시하게 함).
도 8은 원격 프리젠테이션 세션에서 웹 브라우저를 사용하는 클라이언트와 원격 프리젠테이션 세션을 실시하는 서버에 대한 예시적인 동작 절차들을 도시한 것이다. 실시형태들에 있어서, 도 8의 동작 절차들은, 클라이언트(308)와 원격 프리젠테이션 세션을 실시하고 여기서 클라이언트(308)는 웹 브라우저를 사용하여 그 세션을 실시하기 때문에, 도 4의 서버(404)에 의해 실시될 수도 있다. 도 8(도 9 및 도 10)에 관하여, 도시된 동작들의 모두를 구현하지 않거나 도시된 동작들을 본 명세서에서 설명된 것과는 상이한 순서로 구현하는 본 발명의 실시예들이 존재함을 이해할 수도 있다.
동작(802)은 클라이언트와 하이퍼텍스트 전송 프로토콜(HTTP) 세션을 확립하는 것을 나타낸다. 이는, 예를 들어, 데이터에 대한 HTTP 요청을 HTTP 세션을 통해 서버로 전송하는 클라이언트에 의해 실시될 수도 있다. 데이터에 대한 이러한 요청은 원격화된 데스크탑의 스트리밍 비디오를 포함하는 웹 페이지에 대한 요청을 포함할 수도 있다. 서버는, HTTP 세션을 고유하게 식별하고 이를 클라이언트로 전송하는 HTTP 세션 토큰을 결정할 수도 있다. 클라이언트는 (HTTP 쿠키의 형태인 것과 같은) 이러한 토큰을 저장하고, 그 후, HTTP 세션을 식별하기 위한 추후 통신에서 서버로 송신할 수도 있다.
동작(804)은 HTTP 세션을 통해 수신된 클라이언트의 크리덴셜을 유효화하는 것을 나타낸다. 클라이언트는 크리덴셜을 사용하여, 서버와의 원격 프리젠테이션 세션을 실시하기 위한 그 인증을 유효화할 수도 있다. 실시예들에 있어서, 이러한 크리덴셜은 사용자 로그인 및 패스워드를 포함하고, 여기서, 사용자 로그인은 서버 상의 사용자의 어카운트와 연관된다. 서버는 크리덴셜들의 데이터베이스를 저장하고, 매칭을 위해, 제공된 크리덴셜을 데이터베이스에 대해 체크할 수도 있으며, 이는 크리덴셜이 유효화됨을 표시할 수도 있다.
동작(806)은 클라이언트의 크리덴셜에 대응하는 세션 또는 어플리케이션의 인스턴스를 결정하는 것을 나타내고, 그래픽 데이터는 그 인스턴스의 그래픽 출력을 포함한다. 실시예들에 있어서, 서버는 사용자 세션의 인스턴스를 인스턴스화하고 이를 실행하기 시작할 것이다. 크리덴셜에 대응하는 접속해제된 사용자 세션이 존재하는 경우, 서버는 그 세션을 재접속할 수도 있다. 크리덴셜이 다중의 가능한 어플리케이션들에 대응하는 경우와 같은 실시예들에 있어서, 서버는 원격화될 가능한 어플리케이션들 및/또는 세션들의 표시를 클라이언트로 전송하고, 가능한 어플리케이션들 및/또는 세션들 중 하나의 선택의 수신된 표시에 기초하여 어느 것이 그래픽 출력을 원격화할 지를 결정할 수도 있다.
동작(808)은 원격 프리젠테이션 세션에서 클라이언트로 전송될 그래픽 데이터를 결정하는 것을 나타낸다. 서버가 동작(806)에서 결정된 사용자 세션 또는 어플리케이션의 인스턴스를 실행하기 때문에, 그 실행은 그래픽 데이터가 생성되게 할 것이다. 이는, 원격 프리젠테이션 세션을 통해 전송될 그래픽 데이터이다(또는 그 표현이 전송될 것임). 클라이언트로 전송될 그래픽 데이터를 결정하는 것은 도 2의 서버(204)에 관하여 설명된 바와 유사한 방식으로 수행될 수도 있다.
동작(810)은 그래픽 데이터를 비디오로서 인코딩하는 것을 나타낸다. 실시예들에 있어서, 동작(810)은 제 2 그래픽 데이터를 제 2 비디오로서 이전에 인코딩하였던 것에 기초하여 그래픽 데이터를 비디오로서 인코딩하는 것을 포함한다. 즉, 인코딩되는 현재 비디오는 이전에 인코딩된 비디오와의 공통성들을 가질 수도 있으며, 서버는 이들 공통성들을 이용하여, 그래픽 데이터를 비디오로서 인코딩하는데 사용되는 프로세싱 리소스들을 감소시킬 수도 있다. 예를 들어, 이는 그래픽 데이터의 제 2 그래픽 데이터에 대한 더티 영역에 기초하여 그래픽 데이터를 인코딩하는 것, 및 제 2 비디오의 적어도 일부를 사용하여 그래픽 데이터를 인코딩하는 것을 포함할 수도 있다. 이는, 예를 들어, 도 7의 프레임(700)에 관하여 도시된 바와 같이 발생할 수도 있다. 그래픽 데이터와 제 2 그래픽 데이터 사이에 몇몇 업데이트들이 존재하는 경우, 이들 업데이트들은, 상이한 각각의 그래픽 데이터들의 영역들을 식별하는 "더티 영역들"로서 표현될 수도 있다. 그 후, 서버는 그래픽 데이터의 오직 더티 영역들만을 비디오로서 인코딩할 수도 있고, 이들 인코딩된 더티 영역들을, 그래픽 데이터의 비디오를 생성하기 위해 더티하지 않은 영역들의 비디오를 포함하는 제 2 비디오와 결합하였다.
제 2 그래픽 데이터를 제 2 비디오로서 이전에 인코딩하였던 것에 기초하여 그래픽 데이터를 비디오로서 인코딩하는 실시예들은 또한, 제 2 그래픽 데이터에 또한 나타내어지는, 그래픽 데이터에 나타낸 엘리먼트에 기초하여 그래픽 데이터를 인코딩하는 것 - 그 엘리먼트는 제 2 그래픽 데이터에서와는 그래픽 데이터에서의 상이한 위치에 나타내어짐-, 및 제 2 비디오의 적어도 일부를 사용하여 그래픽 데이터를 인코딩하는 것을 포함한다. 즉, 어플리케이션 윈도우(또는 그 밖의 유사한 것)는 그래픽 데이터와 제 2 그래픽 데이터 사이에서 이동되었을 수도 있다. 이는, 예를 들어, 도 6의 프레임들(600 및 650)에 관하여 도시된 바와 같이 발생할 수도 있다. 이러한 이동이 식별된 경우, 서버는 어플리케이션 윈도우에 대응하는 제 2 비디오의 부분을 취하고, 이를 이용하여 비디오를 생성할 수도 있다. 서버는 그 어플리케이션 윈도우가 아닌 그래픽 데이터의 그 부분들을 비디오로서 인코딩하고, 그것을 제 2 윈도우로부터의 어플리케이션 윈도우의 인코딩된 비디오와 결합할 수도 있다.
실시예들에 있어서, 동작(810)은 그래픽 데이터의 제 1 부분이 텍스트를 포함하고 그래픽 데이터의 제 2 부분이 이미지 또는 비디오를 포함한다는 표시를 수신하는 것; 및 그래픽 데이터의 제 1 부분이 텍스트를 포함하고 그래픽 데이터의 제 2 부분이 이미지 또는 비디오를 포함한다는 표시에 기초하여 그래픽 데이터를 비디오로서 인코딩하는 것을 포함한다. 일부 원격 프리젠테이션 서버들은, 그 그래픽 출력을 원격화하고 있는 어플리케이션들로부터 "힌트들"을 수신하도록 구성되고, 여기서, 이들 힌트들은 그래픽 출력 - 예를 들어, 텍스트, 단색 채우기(solid fill)들, 이미지들, 또는 비디오들 - 이 무엇인지를 나타낸다. 일부 원격 프리젠테이션 서버들은 그래픽 데이터를 분석하여 이러한 정보를 결정하도록 구성된다. 그러한 실시예들에 있어서, 비디오는 이러한 정보에 기초하여 인코딩될 수도 있다. 예를 들어, 사용자들은 압축 아티팩트들을 이미지들보다 텍스트로 보는 것에 더 민감할 수도 있다. 서버는 그래픽 출력을 비디오로 가변적으로 인코딩할 수도 있어서, 텍스트인 그래픽 출력의 부분들보다는 이미지들인 그래픽 출력의 부분들에 대해 더 많은 손실성 압축을 이용한다.
동작(812)은 클라이언트가 비디오를 웹 브라우저에 디스플레이하도록 비디오를 HTTP 세션을 통해 클라이언트로 전송하는 것을 나타낸다. 실시예들에 있어서, 동작(812)은 클라이언트가 비디오를, 웹 브라우저에 디스플레이된 웹 페이지에 임베딩된 비디오 엘리먼트로서 디스플레이하도록 비디오를 HTTP 세션을 통해 클라이언트로 전송하는 것을 포함한다. 예를 들어, 비디오는, 웹 페이지에서의 <video> 태그를 통해 참조되는 HTML5 웹 페이지에 임베딩될 수도 있다. 실시예들에 있어서, 비디오는 스트리밍 비디오여서, 서버가 하나 이상의 어플리케이션들 또는 사용자 세션들로부터 그래픽 데이터를 계속 생성함에 따라 그래픽 데이터는 스트리밍 비디오 내의 부가적인 비디오로서 인코딩되고 클라이언트로 전송된다.
동작(814)은 웹 브라우저로 지향된 사용자 입력을 클라이언트로부터 수신하는 것; 사용자 입력에 대응하는 어플리케이션을 결정하는 것 - 그 어플리케이션은 그래픽 데이터의 적어도 일부를 생성하였음 -; 및 어플리케이션이 사용자 입력에 대응하는 결과를 프로세싱하도록 사용자 입력을 어플리케이션에 주입하는 것을 나타낸다. 클라이언트가 웹 브라우저에 비디오를 디스플레이하기 때문에, 사용자는, 예를 들어, 마우스 커서를 이동시키거나 키보드에서 타이핑함으로써 웹 브라우저에 입력을 제공할 수도 있다. 이러한 정보는 클라이언트에 의해 포착되고 HTTP 세션을 통해 서버로 전송될 수도 있다. 서버는 입력을 수신할 경우, 사용자가 입력으로 참조된 어플리케이션을 결정할 수도 있다(예를 들어, 비디오의 좌상부 코너에서의 입력 - 특정 어플리케이션 윈도우가 그 지점에 도시됨 - 은 그 어플리케이션 윈도우로 지향된 입력인 것으로 결정될 수도 있음). 그 후, 도 2에 관하여 설명된 바와 같이, 서버는 입력을 결정된 어플리케이션으로 주입할 수도 있다.
도 9는 원격 프리젠테이션 세션에서 웹 브라우저를 사용하는 클라이언트와 원격 프리젠테이션 세션 서버 사이에서 원격 프리젠테이션 세션을 용이하게 하는 프록시 서버에 대한 예시적인 동작 절차들을 도시한 것이다. 도 9의 동작 절차들은, 서버(304)와 클라이언트(308) 간의 원격 프리젠테이션 세션을 용이하게 하기 때문에, 도 6의 프록시(306)로 구현될 수도 있다.
동작(902)은 클라이언트와 하이퍼텍스트 전송 프로토콜(HTTP) 세션을 확립하는 것을 나타낸다. 동작(902)은 도 8의 동작(802)이 실시되는 방법과 유사한 방식으로 실시될 수도 있다.
동작(904)은 서버와 원격 프리젠테이션 세션을 확립하는 것을 나타낸다. 동작(904)은, 도 2에 도시된 바와 같이, 서버(204)가 클라이언트(201)로부터의 네트워크 접속을 통한 접속 요청을 프로세싱하는 것과 유사한 방식으로 실시될 수도 있다. 동작(904)에 있어서, 원격 프리젠테이션 세션을 확립하기 위해, 프록시 서버(306)는 클라이언트(201)의 역할을 하고, 서버(304)는 서버(204)의 역할을 한다. 실시예들에 있어서, 클라이언트(201)는, 서버(204)와의 원격 프리젠테이션 세션을 실시하기 위한 클라이언트의 인증을 유효화하는데 사용될 수도 있는 크리덴셜을 프록시(306)로 전송한다. 프록시(306)는 크리덴셜 자체를 유효화하고/하거나 크리덴셜을 서버(204)로 전달할 수도 있다. 서버(204)는, 동작(806)에 도시된 바와 같이, 원격 프리젠테이션 세션을 확립하는 부분으로서 크리덴셜을 사용하여, 원격 프리젠테이션 세션을 확립하고/하거나 클라이언트의 크리덴셜에 대응하는 세션 또는 어플리케이션의 인스턴스, 즉, 원격 프리젠테이션 세션에서 전송되는 그래픽 출력을 결정하는 부분으로서 크리덴셜을 컴퓨터가 제공하였음을 유효화할 수도 있다.
동작(906)은, 원격 프리젠테이션 프로토콜로 인코딩된 그래픽 데이터를 서버로부터 및 원격 프리젠테이션 세션을 통해 수신하는 것을 나타낸다. 일단 원격 프리젠테이션 세션이 확립되었으면, 서버(204)는, 원격 프리젠테이션 세션 프로토콜로 인코딩된 (서버(204) 상에서 실행하는 어플리케이션 또는 사용자 세션에 의해 생성된 데이터와 같은) 그래픽 데이터를 프록시(306)로 전송한다.
동작(908)은 그래픽 데이터를 비디오로서 인코딩하는 것을 나타낸다. 실시예들에 있어서, 동작(908)은 그 원격 프리젠테이션 인코딩으로부터의 그래픽 데이터를 디코딩하여 하나 이상의 이미지들을 생성하고, 그 후, 하나 이상의 이미지들을 비디오로서 재-인코딩하는 것을 포함한다. 실시예들에 있어서, 동작(908)은, 그래픽 데이터를 디코딩하여 이미지를 생성하는 중간 단계를 수행하지 않고 그 원격 프리젠테이션 프로토콜 인코딩으로부터의 그래픽 데이터를 비디오 인코딩으로 변환하는 것을 포함한다.
동작(910)은 클라이언트가 비디오를 웹 브라우저에 디스플레이하도록 비디오를 HTTP 세션을 통해 클라이언트로 전송하는 것을 나타낸다. 실시예들에 있어서, 클라이언트의 웹 브라우저는, HTML5 (하이퍼텍스트 마크업 언어 5) 표준에 부합하는 정보를 수신 및 디스플레이하도록 구성될 수도 있다. 그러한 실시예들에 있어서, 비디오는, 예를 들어, HTML5 <video> 태그를 사용함으로써 웹 페이지 내에서 구현될 수도 있다. 예를 들어, 그래픽 데이터가, 임베딩되고 있는 웹 페이지와 동일한 디렉토리에서의 프록시 상에 위치된 "remote_presentation_session.avi"의 명칭인 비디오로서 인코딩된 경우, <video> 태그는 웹 페이지에 "<video src="remote_presentation_session.avi" autoplay="autoplay" />"로서 표현될 수도 있다. 이 예에 있어서, autoplay="autoplay"의 속성은 웹 브라우저가 비디오의 초기 부분을 수신 시 그 비디오를 자동으로 재생하기 시작할 것임을 나타낸다.
동작(912)은 웹 브라우저로 지향된 사용자 입력의 표시를 HTTP 세션을 통해 클라이언트로부터 수신하는 것을 나타낸다. 클라이언트는 동작(910)에 관하여 설명된 바와 같이 비디오를 웹 브라우저에 디스플레이할 수도 있고, 클라이언트는 커서 움직임들, 및 키보드 버튼들의 푸시들을 포함한 버튼 푸시들과 같은 입력을 웹 브라우저에 제공할 수도 있다. 이들은 클라이언트 상에서 포착되고 HTTP 세션을 통해 프록시로 송신될 수도 있다. 실시예들에 있어서, 입력이 제공되었던 위치가 또한 HTTP 세션을 통해 프록시로 송신된다.
동작(914)은 원격 프리젠테이션 프로토콜로 사용자 입력을 인코딩하는 것을 나타낸다. 프록시는 동작(912)에서 클라이언트로부터 수신된 사용자 입력을 취하고, 이를 원격 프리젠테이션 프로토콜에 따라 인코딩할 수도 있다. 예를 들어, 사용자 입력은 JSON(자바스크립트 오브젝트 표기) 표준으로 포맷팅된 바와 같이 수신될 수도 있으며, 이 JSON 표준은 스키마형 오브젝트 - 그 타입의 오브젝트들의 구조 및 컨텐츠에 대한 제약들을 갖는 오브젝트 - 에 따라 입력을 구조화한다. 그러한 경우, 프록시는 JSON 포맷으로부터 사용자 입력을 추출하고, 이를 원격 프리젠테이션 프로토콜에 따라 인코딩할 수도 있다.
동작(916)은 인코딩된 사용자 입력을 원격 프리젠테이션 세션을 통해 서버로 전송하는 것을 나타낸다. 이는, 프록시가 원격 프리젠테이션 프로토콜로 인코딩된 사용자 입력을 원격 프리젠테이션 세션 접속을 통해 서버로 전송하는 것을 포함한다.
동작(918)은, 원격 프리젠테이션 프로토콜로 인코딩된 제 2 그래픽 데이터를 서버로부터 및 원격 프리젠테이션 세션을 통해 수신하는 것을 나타내며, 제 2 그래픽 데이터는 사용자 입력과 연관된 동작을 서버 상에서 실행하는 그래픽 결과에 대응한다. 이는 동작(906)이 실시되는 방법과 유사하게 실시될 수도 있다. 여기서, 서버는 사용자 입력을 수신하였고, 사용자 입력과 연관된 프로세싱을 수행하였으며, 사용자 입력과 연관된 프로세싱을 수행하는 것으로부터 그래픽 결과(가능하게는 오디오 결과는 물론, 또는 아마도 오직 오디오 결과만)와 연관된 더 많은 원격 프리젠테이션 세션 그래픽 데이터를 생성하였다. 그래픽 결과를 생성하였으면, 서버는 이를 원격 프리젠테이션 프로토콜로 인코딩하였고 이를 프록시로 송신하였다.
동작(920)은 제 2 그래픽 데이터를 제 2 비디오로서 인코딩하는 것을 나타낸다. 동작(920)은 동작(908)과 유사한 방식으로 수행될 수도 있다. 제 2 비디오 및 동일한 비디오는 동일한 스트리밍 비디오의 부분일 수도 있으며, 제 2 비디오는 비디오 스트림에 있어서 제 1 비디오에 뒤따르는 하나 이상의 프레임들을 포함한다.
동작(922)은 클라이언트가 제 2 비디오를 웹 브라우저에 디스플레이하도록 제 2 비디오를 HTTP 세션을 통해 클라이언트로 전송하는 것을 나타낸다. 동작(922)은 동작(910)과 유사한 방식으로 수행될 수도 있다.
도 10은 웹 브라우저를 사용하여 서버와 원격 프리젠테이션 세션을 실시하는 클라이언트에 대한 예시적인 동작 절차들을 도시한 것이다. 예를 들어, 이들 동작 절차들은 도 3의 프록시(306) 또는 도 4의 서버(404)와 통신할 때에 실시될 수도 있다.
동작(1002)은 서버와 원격 프리젠테이션 세션을 확립하는 것을 나타낸다. 실시예들에 있어서, 원격 프리젠테이션 세션은 하이퍼텍스트 전송 프로토콜(HTTP) 세션을 포함한다. 동작(1002)은, 동작(802)이 클라이언트에 대하여 실시되는 방법의 설명과 유사하게 실시될 수도 있다.
동작(1004)은 크리덴셜을 HTTP 세션을 통해 서버로 전송하는 것을 나타내며, 크리덴셜은 서버와 원격 프리젠테이션 세션을 실시하도록 인가된 사용자와 연관된다. 동작(1004)은, 동작(804)이 클라이언트에 대하여 실시되는 방법의 설명과 유사하게 실시될 수도 있다. 실시예들에 있어서, 클라이언트는 사용자를 프롬프트하여 로그인 및 패스워드의 입력을 입력하고, 수신된 입력을 크리덴셜로서 사용할 수도 있다.
동작(1006)은 비디오를 서버로부터 HTTP 세션을 통해 수신하는 것을 나타내며, 비디오는 어플리케이션 또는 사용자 세션을 서버 상에서 실행하는 것으로부터의 그래픽 출력을 포함한다. 이는, <video> 엘리먼트를 포함하는 (HTML5 웹 페이지와 같은) 웹 페이지를 서버로부터 수신하는 것을 포함하고, 여기서, <video> 엘리먼트는, 어플리케이션 또는 사용자 세션을 서버 상에서 실행하는 것으로부터의 그래픽 출력을 포함하는 비디오를 참조한다.
동작(1008)은 비디오를 웹 브라우저에 디스플레이하는 것을 나타낸다. 클라이언트 상에서 실행하는 웹 브라우저는 비디오를 포함하는 웹 페이지를 렌더링하고, 결과를 모니터와 같은 클라이언트의 디스플레이 디바이스 상에 디스플레이할 수도 있다.
동작(1010)은 웹 브라우저로 지향된 사용자 입력을 수신하는 것을 나타내며, 사용자 입력은 비디오 내 위치에 대응한다. 비디오를 포함하는 웹 페이지는 또한, 웹 페이지로 지향된 사용자 입력을 검출 및 포착하도록 구성된 자바스크립트로 표현된 것과 같은 로직을 포함할 수도 있다. 이러한 사용자 입력은, 예를 들어, 커서 움직임들 및/또는 키보드 키 누름들을 포함할 수도 있다.
동작(1012)은 사용자 입력의 표시를 서버로 전송하는 것을 나타낸다. 실시예들에 있어서, 사용자 입력은 입력이 비디오에 대하여 실시되었던 장소의 표시(예를 들어, 커서가 비디오의 좌측 에지에 좌상부 코너로부터 50 픽셀 입력하였고 시간 t에서 우측으로 75픽셀 움직였음)와 함께 전송된다. 실시예들에 있어서, 입력은, JSON(자바스크립트 오브젝트 표기)과 같이 데이터 구조들 및 연관 어레이들을 나타내는 휴먼-판독가능 형태 또는 XML(확장성 마크업 언어)과 같은 태그-경계결정식 마크업 포맷으로 포맷팅되는 바와 같이 전송을 위해 포맷팅될 수도 있다.
동작(1014)은, 위치에 대응하는 서버 상에서 실행하는 어플리케이션에 사용자 입력을 주입하는 서버에 대응하는 제 2 비디오를 서버로부터 수신하는 것을 나타낸다. 이러한 제 2 비디오 및 비디오 양자는 하나의 스트리밍 비디오 - 원격화된 서버로부터의 그래픽 출력을 시간에 걸쳐 변하는 것으로서 도시한 스트리밍 비디오 - 의 부분일 수도 있다.
동작(1016)은 제 2 비디오를 웹 브라우저에 디스플레이하는 것을 나타낸다. 클라이언트는 제 2 비디오를 포함한 스트리밍 비디오를 계속 수신하기 때문에, 스트리밍 비디오를 웹 브라우저에 디스플레이할 수도 있다.
도 11 및 도 12는, 가상 머신들을 실시하도록 구성된 컴퓨터 시스템들(1100 및 1200)의 하이 레벨 블록 다이어그램들을 도시한 것이다. 본 발명의 예시적인 실시예들에 있어서, 컴퓨터 시스템들(1100 및 1200)은 도 1에서 설명된 엘리먼트들을 포함할 수 있다. 도면들에 의해 도시된 바와 같이, 상이한 아키텍처들이 존재할 수 있지만, 이 상이한 아키텍처들은 유사한 컴포넌트들을 갖는다. 예를 들어, 도 11은, 가상 머신 모니터로서 당업계에서 또한 지칭될 수도 있는 하이퍼바이저가 마이크로 커널(1102) 및 부모 파티션(1104)으로 분할된 동작 환경을 도시한 것이지만, 도 12는 도 11의 부모 파티션(1104)에서 발견된 엘리먼트들을 포함하는 것으로서 하이퍼바이저(1204)를 도시한 것이다.
도 11은 클라이언트와 원격 프리젠테이션 세션을 실시하는 하나 이상의 가상 머신들을 호스팅할 수도 있는 예시적인 가상 머신 서버를 도시한 것이고, 클라이언트는 웹 브라우저를 사용하고 원격 프리젠테이션 그래픽들을 비디오로서 수신한다. 하이퍼바이저 마이크로 커널(1102)은 컴퓨터 시스템(1100)의 하드웨어로의 액세스를 제어 및 중재하도록 구성될 수 있다. 대체로, 하이퍼바이저 마이크로 커널(1102)은 자식 파티션1(1150) 내지 자식 파티션N(1152)(여기서, N은 1보다 큰 정수임)과 같은 파티션들로 지칭된 실행 환경들을 생성할 수 있다. 실시예들에 있어서, 자식 파티션은 하이퍼바이저 마이크로 커널(1102)에 의해 지원된 분리의 기본 단위이다. 즉, 각각의 자식 파티션은 하이퍼바이저 마이크로 커널(1102)의 제어 하에 있는 하드웨어 리소스들, 예를 들어, 메모리, 디바이스들, 논리 프로세서 사이클들 등의 세트에 매핑될 수 있고, 하이퍼바이저 마이크로 커널(1102)은 일 파티션에서의 프로세스들을 다른 파티션의 리소스들에 액세스하는 것으로부터 분리할 수 있으며, 예를 들어, 일 파티션에서의 게스트 오퍼레이팅 시스템은 다른 파티션의 메모리로부터 분리될 수도 있으며, 따라서, 그 파티션 외부의 메모리 어드레스들을 검출할 수 없을 수도 있다. 실시예들에 있어서, 하이퍼바이저 마이크로 커널(1102)은 독립형 소프트웨어 제품일 수 있고, 오퍼레이팅 시스템의 부분일 수 있고, 마더보드의 펌웨어, 전문화된 집적 회로들, 또는 이들의 조합 내에 임베딩될 수 있다.
이러한 동작 환경에서의 부모 파티션(1104)은, 오픈 소스 커뮤니티에서 백-엔드 드라이버들로서 통상 지칭되는 가상화 서비스 제공자들(1128)(VSPs)을 사용함으로써 자식 파티션들1-N에서 실행하는 게스트 오퍼레이팅 시스템들에 리소스들을 제공하도록 구성될 수 있다. 대체로, VSP들(1128)은 가상화 서비스 클라이언트들(VSCs)(오픈 소스 커뮤니티에서 프론트-엔드 드라이버들로서 통상 지칭됨)에 의해 하드웨어 리소스들에 대한 인터페이스들을 멀티플렉싱하고, 통신 프로토콜들을 통해 가상화 서비스 클라이언트들과 통신하는데 사용될 수 있다. 도면들에 의해 도시된 바와 같이, 가상화 서비스 클라이언트들은 게스트 오퍼레이팅 시스템들의 문맥 내에서 실행할 수 있다. 이들 드라이버들은, 게스트가 아닌 하이퍼바이저가 공급될 수도 있다는 점에 있어서 게스트에서의 드라이버들의 나머지와는 상이하다.
마이크로 커널(1102)은 시스템 메모리의 게스트 오퍼레이팅 시스템들의 뷰를 제한함으로써 파티셔닝을 강제할 수 있다. 게스트 메모리는, 하이퍼바이저에 의해 제어되는 메모리의 파티션의 뷰이다. 게스트 물리 어드레스는, 하이퍼바이저에 의해 관리되는 시스템 물리 어드레스(SPA), 즉, 물리 컴퓨터 시스템의 메모리에 의해 지원될 수 있다. 도면에 의해 도시된 바와 같이, 실시예에 있어서, GPA들 및 SPA들은 메모리 블록들, 즉, 메모리의 하나 이상의 페이지들에 배열될 수 있다. 게스트가 그 페이지 테이블을 사용하여 블록에 기입할 경우, 데이터는 실제로, 하이퍼바이저에 의해 사용된 시스템측 페이지 테이블에 따라 상이한 시스템 어드레스를 갖는 블록에 저장된다.
도면에 의해 도시된 바와 같이, 본 개시의 실시예들에 있어서, IO 에뮬레이터들(1134 및 1136), 예를 들어, 가상화된 IDE 디바이스들, 가상화된 비디오 어댑터들, 가상화된 NIC들 등은 그 각각의 자식 파티션들 내에서 구동하도록 구성될 수 있다. 하기에 더 상세히 설명되지만, 에뮬레이터들을 자식 파티션들 내에서 구동하도록 구성함으로써, 계산 오버헤드는 물론 하이퍼바이저의 어택 표면이 감소된다.
각각의 자식 파티션은, 게스트 오퍼레이팅 시스템들(1120 및 1122)이 실행될 스레드들을 관리 및 스케줄링할 수 있는 하나 이상의 가상 프로세서들(1130 및 1132)을 포함할 수 있다. 일반적으로, 가상 프로세서들은, 물리적 프로세서의 표현에 특정 아키텍처를 제공하는 실행가능 명령들 및 관련 상태 정보이다. 예를 들어, 일 가상 머신은 인텔x86 프로세서의 특성들을 갖는 가상 프로세서를 가질 수도 있지만, 다른 가상 프로세서는 파워PC 프로세서의 특성들을 가질 수도 있다. 이 예에 있어서의 가상 프로세서들은 컴퓨터 시스템의 논리 프로세서들에 매핑될 수 있어서, 가상 프로세서들을 실시하는 명령들이 논리 프로세서들에 의해 지원될 것이다. 따라서, 다중의 논리 프로세서들을 포함하는 실시예에 있어서, 가상 프로세서들은, 예를 들어, 다른 논리 프로세서가 하이퍼바이저 명령들을 실행하는 동안 논리 프로세서들에 의해 동시에 실행될 수 있다. 파티션에서의 가상 프로세서들과 메모리의 조합은 가상 머신으로 간주될 수 있다.
게스트 오퍼레이팅 시스템들은, 예를 들어, 마이크로소프트 윈도우즈 오퍼레이팅 시스템의 상이한 버전들(예를 들어, 윈도우즈 XP 및 윈도우즈 7)과 같은 임의의 오퍼레이팅 시스템을 포함할 수 있다. 게스트 오퍼레이팅 시스템들은 사용자/커널 동작 모드들을 포함할 수 있으며, 스케줄러들, 메모리 매니저들 등을 포함할 수 있는 커널들을 가질 수 있다. 일반적으로 말하면, 커널 모드는, 적어도 특권 프로세서 명령들로의 액세스를 허여하는 논리 프로세서에서의 실행 모드를 포함할 수 있다. 각각의 게스트 오퍼레이팅 시스템은 단말 서버들, 전자 상거래 서버들, 이메일 서버들 등과 같은 어플리케이션들이 저장될 수 있는 관련 파일 시스템들, 및 게스트 오퍼레이팅 시스템들 자체를 가질 수 있다. 게스트 오퍼레이팅 시스템들은 가상 프로세서들 상에서 실행하도록 스레드들을 스케줄링할 수 있고, 그러한 어플리케이션들의 인스턴스들이 실시될 수 있다.
도 12는 클라이언트와 원격 프리젠테이션 세션을 실시하는 하나 이상의 가상 머신들을 호스팅할 수도 있는 다른 예시적인 가상 머신 서버를 도시한 것이고, 클라이언트는 웹 브라우저를 사용하고 원격 프리젠테이션 그래픽들을 비디오로서 수신한다. 도 12는 도 11에서 상기 설명된 것에 대한 대안적인 아키텍처를 도시한 것이다. 도 12는 도 11의 컴포넌트들과 유사한 컴포넌트들을 도시하지만, 이 예시적인 실시예에 있어서, 하이퍼바이저(1204)는, 가상화 서비스 제공자들(1128) 및 디바이스 드라이버들(1124)과 같은 도 11의 부모 파티션(1104)으로부터의 컴포넌트들 및 마이크로 커널 컴포넌트를 포함할 수 있지만, 관리 오퍼레이팅 시스템(1202)은 예를 들어, 하이퍼바이저(1204)를 구성하는데 사용된 구성 유틸리티들을 포함할 수도 있다. 이러한 아키텍처에 있어서, 하이퍼바이저(1204)는 도 11의 하이퍼바이저 마이크로 커널(1102)과 동일하거나 유사한 기능들을 수행할 수 있지만, 이러한 아키텍처에 있어서, 하이퍼바이저(1204)는 자식 파티션들에서 실행하는 게스트 오퍼레이팅 시스템들에 리소스들을 제공하도록 구성될 수 있다. 도 12의 하이퍼바이저(1204)는 독립형 소프트웨어 제품일 수 있고, 오퍼레이팅 시스템의 부분일 수 있고, 마더보드의 펌웨어 내에 임베딩될 수 있거나, 하이퍼바이저(1204)의 부분은 전문화된 집적 회로들에 의해 실시될 수 있다.
도 13은 복수의 가상 머신들을 호스팅하는 가상 머신 서버를 포함하는 예시적인 시스템을 도시한 것이고, 각각의 가상 머신은 클라이언트와 원격 프리젠테이션 세션을 실시하고, 클라이언트는 웹 브라우저를 사용하고 원격 프리젠테이션 그래픽들을 비디오로서 수신한다. 실시예들에 있어서, VM 호스트(1300)는 도 11의 컴퓨터 시스템(1100) 또는 도 12의 컴퓨터 시스템(1200)에서 구현될 수도 있다. 그러한 실시예들에 있어서, VM(1302a) 및 VM(1302b)은 도 11 및 도 12의 자식 파티션들(1150 또는 1152)에서 구현될 수도 있다.
도시된 바와 같이, VM(1302a 및 1302b)은 각각, 원격 프리젠테이션 세션을 통해 비디오를 수신하고 웹 브라우저를 통하여 원격 프리젠테이션 세션을 실시하는 하나 이상의 클라이언트와의 원격 프리젠테이션 세션들을 제공하도록 구성된다. 예를 들어, VM(1302a 및 1302b) 각각은 도 3의 서버(304)의 기능들을 실시하도록 구성될 수도 있다. 그러한 실시예들에 있어서, 클라이언트(308)는 VM 호스트(1300)에 접속될 수도 있으며, VM 호스트는 그 VM들 중 하나로 하여금 그 클라이언트와 원격 프리젠테이션 세션을 제공하도록 명령할 수도 있다. VM 호스트(1300)는, 예를 들어, 호스팅하는 각각의 VM의 부하를 밸런싱하는 것에 기초하여 이 명령을 실시할 수도 있다.
본 발명이 다양한 도면들에 도시된 바와 같은 선호된 양태들과 관련하여 설명되었지만, 다른 유사한 양태들이 사용될 수도 있거나, 또는 본 개시로부터 일탈함없이 본 개시의 동일한 기능을 수행하기 위해 설명된 양태들에 대한 변형예들 및 부가예들이 실시될 수도 있음을 이해한다. 따라서, 본 개시는 임의의 단일 양태로 한정되지 않아야 하며, 대신, 첨부된 청구항들에 따른 폭 및 범위에서 해석되어야 한다. 예를 들어, 본 명세서에서 설명된 다양한 절차들은 하드웨어나 소프트웨어, 또는 이들의 조합으로 구현될 수도 있다. 본 발명은 컴퓨터-판독가능 저장 매체 및/또는 컴퓨터-판독가능 통신 매체로 구현될 수도 있다. 따라서, 본 발명 또는 그 특정 양태들이나 그 부분들은 플로피 디스켓, CD-ROM들, 하드 드라이브들, 또는 임의의 다른 머신-판독가능 저장 매체와 같은 유형의 매체에 수록된 프로그램 코드(즉, 명령들)의 형태를 취할 수도 있다. 유사하게, 본 발명 또는 그 특정 양태들이나 그 부분들은 전파된 신호들, 또는 임의의 다른 머신-판독가능 통신 매체에 수록될 수도 있다. 프로그램 코드가 컴퓨터와 같은 머신으로 로딩되고 그 머신에 의해 실행될 경우, 머신은 개시된 실시예들을 실시하도록 구성된 장치가 된다. 본 명세서에 명시적으로 개시된 특정 구현예들에 부가하여, 다른 양태들 및 구현예들은 본 명세서에 개시된 명세의 고려로부터 당업자에게 자명할 것이다. 그 명세 및 예시된 구현예들은 단지 실시예들로서 고려될 뿐임이 의도된다.
Claims (11)
- 웹 브라우저를 사용하는 클라이언트와 원격 프리젠테이션 세션을 실시하는 방법으로서,
상기 클라이언트와 하이퍼텍스트 전송 프로토콜(HTTP) 세션을 포함하는 원격 프리젠테이션 세션을 확립하는 단계와,
상기 원격 프리젠테이션 세션에서 상기 클라이언트로 전송될 그래픽 데이터를 결정하는 단계와,
상기 그래픽 데이터를 비디오로서 인코딩하는 단계와,
상기 클라이언트가 상기 비디오를 상기 웹 브라우저에 디스플레이하도록 상기 비디오를 상기 HTTP 세션을 통해 상기 클라이언트로 전송하는 단계를 포함하는
원격 프리젠테이션 세션을 실시하는 방법.
- 제 1 항에 있어서,
상기 웹 브라우저로 지향된 사용자 입력을 상기 클라이언트로부터 수신하는 단계와,
상기 사용자 입력에 대응하는 어플리케이션을 결정하는 단계 - 상기 어플리케이션은 상기 그래픽 데이터의 적어도 일부를 생성하였음 - 와,
상기 어플리케이션이 상기 사용자 입력에 대응하는 결과를 프로세싱하도록 상기 사용자 입력을 상기 어플리케이션에 주입하는 단계를 더 포함하는
원격 프리젠테이션 세션을 실시하는 방법.
- 제 1 항에 있어서,
상기 클라이언트로 전송될 그래픽 데이터를 결정하는 동작은 제 1 컴퓨터에 의해 수행되고, 상기 그래픽 데이터를 비디오로서 인코딩하는 동작 및 상기 비디오를 상기 클라이언트로 전송하는 동작은 제 2 컴퓨터에 의해 수행되며,
상기 제 1 컴퓨터와 상기 제 2 컴퓨터 사이에 원격 프리젠테이션 세션을 확립하는 단계와,
상기 그래픽 데이터를 인코딩하기 전, 원격 프리젠테이션 프로토콜로 인코딩된 상기 그래픽 데이터를 상기 제 2 컴퓨터에 의해 상기 제 1 컴퓨터로부터 수신하는 단계와,
상기 원격 프리젠테이션 프로토콜로 인코딩된 상기 그래픽 데이터를 디코딩하여 상기 그래픽 데이터를 비디오로서 인코딩하기 전의 그래픽 데이터를 결정하는 단계를 더 포함하는
원격 프리젠테이션 세션을 실시하는 방법.
- 제 1 항에 있어서,
상기 그래픽 데이터를 비디오로서 인코딩하는 단계는, 제 2 그래픽 데이터를 제 2 비디오로서 이전에 인코딩하였던 것에 기초하여 상기 그래픽 데이터를 비디오로서 인코딩하는 단계를 포함하는
원격 프리젠테이션 세션을 실시하는 방법.
- 제 4 항에 있어서,
상기 제 2 그래픽 데이터를 비디오로서 이전에 인코딩하였던 것에 기초하여 상기 그래픽 데이터를 비디오로서 인코딩하는 단계는,
상기 그래픽 데이터의 상기 제 2 그래픽 데이터에 대한 더티 영역에 기초하여 상기 그래픽 데이터를 인코딩하는 단계와, 상기 제 2 비디오의 적어도 일부를 사용하여 상기 그래픽 데이터를 인코딩하는 단계를 포함하는
원격 프리젠테이션 세션을 실시하는 방법.
- 제 4 항에 있어서,
상기 제 2 그래픽 데이터를 비디오로서 이전에 인코딩하였던 것에 기초하여 상기 그래픽 데이터를 비디오로서 인코딩하는 단계는,
상기 제 2 그래픽 데이터에 또한 나타내어지는, 상기 그래픽 데이터에 나타낸 엘리먼트에 기초하여 상기 그래픽 데이터를 인코딩하는 단계 - 상기 엘리먼트는 상기 제 2 그래픽 데이터에서와는 상기 그래픽 데이터에서의 상이한 위치에 나타내어짐- 와, 상기 제 2 비디오의 적어도 일부를 사용하여 상기 그래픽 데이터를 인코딩하는 단계를 포함하는
원격 프리젠테이션 세션을 실시하는 방법.
- 제 1 항에 있어서,
상기 클라이언트가 상기 비디오를 상기 웹 브라우저에 디스플레이하도록 상기 비디오를 상기 HTTP 세션을 통해 상기 클라이언트로 전송하는 단계는,
상기 클라이언트가 상기 비디오를, 상기 웹 브라우저에 디스플레이된 웹 페이지에 임베딩된 비디오 엘리먼트로서 디스플레이하도록 상기 비디오를 상기 HTTP 세션을 통해 상기 클라이언트로 전송하는 단계를 포함하는
원격 프리젠테이션 세션을 실시하는 방법.
- 제 1 항에 있어서,
상기 원격 프리젠테이션 세션에서 상기 클라이언트로 전송될 그래픽 데이터를 결정하기 전, 상기 HTTP 세션을 통해 수신된 상기 클라이언트의 크리덴셜을 유효화하는 단계를 더 포함하는
원격 프리젠테이션 세션을 실시하는 방법.
- 제 1 항에 있어서,
상기 그래픽 데이터의 제 1 부분이 텍스트를 포함하고 상기 그래픽 데이터의 제 2 부분이 이미지 또는 비디오를 포함한다는 표시를 수신하는 단계를 더 포함하고,
상기 그래픽 데이터를 비디오로서 인코딩하는 단계는,
상기 그래픽 데이터의 제 1 부분이 텍스트를 포함하고 상기 그래픽 데이터의 제 2 부분이 이미지 또는 비디오를 포함한다는 상기 표시에 기초하여 상기 그래픽 데이터를 비디오로서 인코딩하는 단계를 포함하는
원격 프리젠테이션 세션을 실시하는 방법.
- 웹 브라우저를 사용하여 서버와 원격 프리젠테이션 세션을 실시하기 위한 시스템으로서,
프로세서와,
상기 시스템이 동작 중일 경우에 상기 프로세서에 통신가능하게 커플링된 메모리를 포함하고,
상기 메모리는, 상기 프로세서에 의해 실행될 경우, 상기 시스템으로 하여금 적어도,
상기 서버와 원격 프리젠테이션 세션을 확립하고 - 상기 원격 프리젠테이션 세션은 하이퍼텍스트 전송 프로토콜(HTTP) 세션을 포함함 -,
상기 HTTP 세션을 통해 상기 서버로부터 비디오를 수신하고 - 상기 비디오는 상기 서버 상에서의 어플리케이션 또는 사용자 세션의 실행으로부터의 그래픽 출력을 포함함 -, 그리고
상기 비디오를 상기 웹 브라우저에 디스플레이하게 하는
프로세서-실행가능 명령어들을 수록하는
원격 프리젠테이션 세션을 실시하기 위한 시스템.
- 제 10 항에 있어서,
상기 메모리는, 상기 프로세서에 의해 실행 시, 상기 시스템으로 하여금 적어도,
비디오를 상기 HTTP 세션을 통해 상기 서버로부터 수신하기 전, 크리덴셜을 상기 HTTP 세션을 통해 상기 서버로 전송하게 하는 - 상기 크리덴셜은 상기 서버와 원격 프리젠테이션 세션을 실시하도록 인가된 사용자와 연관됨 -
프로세서-실행가능 명령어들을 더 수록하는
원격 프리젠테이션 세션을 실시하기 위한 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/158,268 US9167020B2 (en) | 2011-06-10 | 2011-06-10 | Web-browser based desktop and application remoting solution |
US13/158,268 | 2011-06-10 | ||
PCT/US2012/039887 WO2012170237A2 (en) | 2011-06-10 | 2012-05-29 | Web-browser based desktop and application remoting solution |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140036220A true KR20140036220A (ko) | 2014-03-25 |
KR101916980B1 KR101916980B1 (ko) | 2018-11-08 |
Family
ID=47294086
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020137032662A KR101916980B1 (ko) | 2011-06-10 | 2012-05-29 | 웹-브라우저 기반 데스크탑 및 어플리케이션 원격화 솔루션 기법 |
Country Status (8)
Country | Link |
---|---|
US (1) | US9167020B2 (ko) |
EP (1) | EP2719148B1 (ko) |
JP (1) | JP6072018B2 (ko) |
KR (1) | KR101916980B1 (ko) |
CN (1) | CN103597797B (ko) |
CA (1) | CA2838287A1 (ko) |
MX (1) | MX2013014599A (ko) |
WO (1) | WO2012170237A2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017150792A1 (en) * | 2016-02-29 | 2017-09-08 | University-Industry Cooperation Group Of Kyung Hee University | Apparatus and method for providing contents using web-based virtual desktop protocol |
Families Citing this family (65)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009024006A1 (fr) * | 2007-08-21 | 2009-02-26 | China Mobile Communications Corporation | Contrôleur de session locale, sous-système multimédia ip et procédé d'enregistrement de session |
US11012480B2 (en) * | 2010-09-13 | 2021-05-18 | Jeffrey W. Mankoff | Modifying signal associations in complex computing networks |
WO2013023287A1 (en) | 2011-08-16 | 2013-02-21 | Destiny Software Productions Inc. | Script-based video rendering |
US9313100B1 (en) * | 2011-11-14 | 2016-04-12 | Amazon Technologies, Inc. | Remote browsing session management |
US8959591B2 (en) * | 2012-01-06 | 2015-02-17 | Elastic Path Software, Inc. | Follow location handler and selector functionality in a stateless microkernel web server architecture |
US9277237B2 (en) * | 2012-07-30 | 2016-03-01 | Vmware, Inc. | User interface remoting through video encoding techniques |
US20140108940A1 (en) * | 2012-10-15 | 2014-04-17 | Nvidia Corporation | Method and system of remote communication over a network |
US9189884B2 (en) | 2012-11-13 | 2015-11-17 | Google Inc. | Using video to encode assets for swivel/360-degree spinners |
US9930082B2 (en) | 2012-11-20 | 2018-03-27 | Nvidia Corporation | Method and system for network driven automatic adaptive rendering impedance |
US9479489B2 (en) | 2013-03-05 | 2016-10-25 | Comcast Cable Communications, Llc | Systems and methods for providing services |
JP6337499B2 (ja) * | 2013-03-15 | 2018-06-06 | 株式会社リコー | 配信制御システム、配信システム、配信制御方法、及びプログラム |
JP2014199648A (ja) | 2013-03-15 | 2014-10-23 | 株式会社リコー | 配信制御システム、配信システム、配信制御方法、及びプログラム |
JP6369043B2 (ja) * | 2013-03-15 | 2018-08-08 | 株式会社リコー | 配信制御システム、配信システム、配信制御方法、及びプログラム |
US9819604B2 (en) | 2013-07-31 | 2017-11-14 | Nvidia Corporation | Real time network adaptive low latency transport stream muxing of audio/video streams for miracast |
CN103533038A (zh) * | 2013-09-30 | 2014-01-22 | 华南理工大学 | 一种基于html5的远程控制系统及其远程控制方法 |
JP6337437B2 (ja) * | 2013-09-30 | 2018-06-06 | 富士通株式会社 | 情報処理装置、情報処理システム、及びプログラム |
US11076171B2 (en) | 2013-10-25 | 2021-07-27 | Microsoft Technology Licensing, Llc | Representing blocks with hash values in video and image coding and decoding |
WO2015058395A1 (en) | 2013-10-25 | 2015-04-30 | Microsoft Technology Licensing, Llc | Hash-based block matching in video and image coding |
CA2936358C (en) * | 2014-02-07 | 2021-09-07 | Oracle International Corporation | Mobile cloud service architecture |
US20150244835A1 (en) * | 2014-02-21 | 2015-08-27 | Andrew T. Fausak | Transcoding instance with multiple channels |
US9936002B2 (en) * | 2014-02-21 | 2018-04-03 | Dell Products L.P. | Video compose function |
EP3108632B1 (en) * | 2014-02-21 | 2018-01-10 | Dell Products L.P. | Generic transcoding service |
US9553925B2 (en) | 2014-02-21 | 2017-01-24 | Dell Products L.P. | Front-end high availability proxy |
US9392053B2 (en) * | 2014-02-21 | 2016-07-12 | Dell Products L.P. | Generic transcoding service with library attachment |
CN105556971B (zh) | 2014-03-04 | 2019-07-30 | 微软技术许可有限责任公司 | 针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定 |
EP3114838B1 (en) | 2014-03-04 | 2018-02-07 | Microsoft Technology Licensing, LLC | Hash table construction and availability checking for hash-based block matching |
KR102287779B1 (ko) | 2014-06-23 | 2021-08-06 | 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 | 해시 기반의 블록 매칭의 결과에 기초한 인코더 결정 |
US10437432B2 (en) * | 2014-06-27 | 2019-10-08 | Vmware, Inc. | Integration of user interface technologies |
US10448111B2 (en) | 2014-09-24 | 2019-10-15 | Microsoft Technology Licensing, Llc | Content projection |
US10025684B2 (en) | 2014-09-24 | 2018-07-17 | Microsoft Technology Licensing, Llc | Lending target device resources to host device computing environment |
US9769227B2 (en) | 2014-09-24 | 2017-09-19 | Microsoft Technology Licensing, Llc | Presentation of computing environment on multiple devices |
US10635296B2 (en) | 2014-09-24 | 2020-04-28 | Microsoft Technology Licensing, Llc | Partitioned application presentation across devices |
CA2961089C (en) | 2014-09-30 | 2023-03-28 | Microsoft Technology Licensing, Llc | Hash-based encoder decisions for video coding |
US11075976B2 (en) | 2014-12-24 | 2021-07-27 | Vmware, Inc. | Remoting application user interfaces |
US10693923B2 (en) | 2015-01-28 | 2020-06-23 | Vmware, Inc. | Establishing streaming sessions during remote sessions |
US20160283070A1 (en) * | 2015-03-25 | 2016-09-29 | Vmware, Inc. | Using reactive behaviors during remote sessions |
US10547711B2 (en) | 2015-03-25 | 2020-01-28 | Vmware, Inc. | Using off-screen user interface data during remote sessions |
US11750674B2 (en) * | 2015-05-05 | 2023-09-05 | Penguin Computing, Inc. | Ultra-low latency remote application access |
US9959607B2 (en) | 2015-07-07 | 2018-05-01 | Adp, Llc | Automatic verification of graphic rendition of JSON data |
US20170046013A1 (en) * | 2015-08-14 | 2017-02-16 | Microsoft Technology Licensing, Llc | Web-browser based desktop and application remoting solution |
US10404808B2 (en) * | 2015-09-14 | 2019-09-03 | Colorado Code Craft Patent Holdco, LLC | Secure, anonymous browsing with a remote browsing server |
CN105468322A (zh) * | 2015-11-20 | 2016-04-06 | 中电海康集团有限公司 | 一种基于分段视频播放的实时查看远程桌面方法 |
US10237566B2 (en) | 2016-04-01 | 2019-03-19 | Microsoft Technology Licensing, Llc | Video decoding using point sprites |
US10575007B2 (en) | 2016-04-12 | 2020-02-25 | Microsoft Technology Licensing, Llc | Efficient decoding and rendering of blocks in a graphics pipeline |
ES2728292T3 (es) | 2016-05-17 | 2019-10-23 | Nolve Dev S L | Servidor y método para proporcionar un acceso seguro a servicios basados en la red |
US10970101B2 (en) | 2016-06-03 | 2021-04-06 | Vmware, Inc. | System and method for dynamically configuring virtual displays and virtual inputs for different remote sessions that each present content for a virtual machine |
US10157480B2 (en) | 2016-06-24 | 2018-12-18 | Microsoft Technology Licensing, Llc | Efficient decoding and rendering of inter-coded blocks in a graphics pipeline |
US10469562B2 (en) | 2016-06-24 | 2019-11-05 | Vmware, Inc. | Virtual machine pixel remoting |
US10390039B2 (en) | 2016-08-31 | 2019-08-20 | Microsoft Technology Licensing, Llc | Motion estimation for screen remoting scenarios |
US10430378B1 (en) * | 2016-09-19 | 2019-10-01 | Tintri By Ddn, Inc. | Fast container distribution with storage acceleration |
US11197010B2 (en) | 2016-10-07 | 2021-12-07 | Microsoft Technology Licensing, Llc | Browser-based video decoder using multiple CPU threads |
US11095877B2 (en) | 2016-11-30 | 2021-08-17 | Microsoft Technology Licensing, Llc | Local hash-based motion estimation for screen remoting scenarios |
CN107124450A (zh) * | 2017-04-18 | 2017-09-01 | 恒泰艾普(北京)云技术有限公司 | 一种基于html5的远程桌面访问系统及远程桌面访问方法 |
US10666706B2 (en) * | 2017-11-22 | 2020-05-26 | Citrix Systems, Inc. | Rendering a web application in a cloud service |
CN108959455B (zh) * | 2018-06-15 | 2020-12-04 | 未鲲(上海)科技服务有限公司 | 单页Web应用实现方法、装置、计算机设备和存储介质 |
US11281744B2 (en) * | 2018-09-12 | 2022-03-22 | Citrix Systems, Inc | Systems and methods for improved remote display protocol for HTML applications |
US11314532B2 (en) * | 2018-10-11 | 2022-04-26 | Citrix Systems, Inc. | Systems and methods for traffic optimization via system on chip of intermediary device |
US10552639B1 (en) | 2019-02-04 | 2020-02-04 | S2 Systems Corporation | Local isolator application with cohesive application-isolation interface |
US10452868B1 (en) | 2019-02-04 | 2019-10-22 | S2 Systems Corporation | Web browser remoting using network vector rendering |
US10558824B1 (en) | 2019-02-04 | 2020-02-11 | S2 Systems Corporation | Application remoting using network vector rendering |
US11880422B2 (en) | 2019-02-04 | 2024-01-23 | Cloudflare, Inc. | Theft prevention for sensitive information |
CN110032427A (zh) * | 2019-04-19 | 2019-07-19 | 合肥谐桐科技有限公司 | 基于虚拟化实现在线云应用管理的系统及其方法 |
CN111093091A (zh) * | 2019-12-11 | 2020-05-01 | 西安万像电子科技有限公司 | 视频处理方法、服务器及系统 |
US11202085B1 (en) | 2020-06-12 | 2021-12-14 | Microsoft Technology Licensing, Llc | Low-cost hash table construction and hash-based block matching for variable-size blocks |
WO2023144758A2 (en) * | 2022-01-27 | 2023-08-03 | Bubble Workspace Ltd | Proxy gateway-based security for rdp-type communications sessions |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000116606A (ja) * | 1998-10-19 | 2000-04-25 | Access:Kk | 医療画像処理方法、医療画像伝送方法、医療画像処理装置、医療画像送信装置、および医療画像伝送装置 |
US6560637B1 (en) | 1998-12-02 | 2003-05-06 | Polycom, Inc. | Web-enabled presentation device and methods of use thereof |
SG99886A1 (en) * | 2000-02-24 | 2003-11-27 | Ibm | System and method for collaborative multi-device web browsing |
US7171444B2 (en) * | 2001-11-14 | 2007-01-30 | Sharp Laboratories Of America, Inc. | Remote desktop protocol compression system |
WO2005008448A2 (en) * | 2003-07-18 | 2005-01-27 | Remote Meeting Technologies, Inc. | Browser-based video meeting system |
US7614075B2 (en) | 2004-08-13 | 2009-11-03 | Microsoft Corporation | Dynamically generating video streams for user interfaces |
US7590750B2 (en) | 2004-09-10 | 2009-09-15 | Microsoft Corporation | Systems and methods for multimedia remoting over terminal server connections |
US7240111B2 (en) * | 2005-04-12 | 2007-07-03 | Belkin Corporation | Apparatus and system for managing multiple computers |
US8112513B2 (en) * | 2005-11-30 | 2012-02-07 | Microsoft Corporation | Multi-user display proxy server |
US20070220161A1 (en) | 2006-03-15 | 2007-09-20 | Microsoft Corporation | Broadcasting a presentation over a messaging network |
US7933955B2 (en) * | 2006-07-11 | 2011-04-26 | Igor Khalatian | One-click universal screen sharing |
US7953795B2 (en) * | 2007-01-03 | 2011-05-31 | Interwise Ltd. | Method and apparatus for participating in a conference session over a data communication network |
US9438662B2 (en) | 2007-04-30 | 2016-09-06 | Microsoft Technology Licensing, Llc | Enabling secure remote assistance using a terminal services gateway |
WO2008137432A2 (en) | 2007-05-01 | 2008-11-13 | Dyyno | Sharing of information and formatting information for transmission over a communication network |
US20080313545A1 (en) | 2007-06-13 | 2008-12-18 | Microsoft Corporation | Systems and methods for providing desktop or application remoting to a web browser |
US8184065B2 (en) * | 2007-11-12 | 2012-05-22 | Rgb Spectrum | Efficient mode switching in a video processor system |
WO2009096959A1 (en) * | 2008-01-30 | 2009-08-06 | Hewlett-Packard Development Company, L.P. | A method for streaming video data |
JP5003521B2 (ja) * | 2008-02-14 | 2012-08-15 | 日本電気株式会社 | 動き補償に伴う更新領域検出装置 |
JP5303192B2 (ja) * | 2008-06-03 | 2013-10-02 | 株式会社日立メディコ | 医療画像システム、医療画像システムの画像圧縮方法 |
US8910112B2 (en) | 2008-07-30 | 2014-12-09 | Sap Ag | Extended enterprise connector framework using direct web remoting (DWR) |
US8595371B2 (en) | 2008-09-19 | 2013-11-26 | Samsung Electronics Co., Ltd. | Sending a remote user interface |
US8254704B2 (en) * | 2008-10-30 | 2012-08-28 | Microsoft Corporation | Remote computing platforms providing high-fidelity display and interactivity for clients |
US20100131868A1 (en) * | 2008-11-26 | 2010-05-27 | Cisco Technology, Inc. | Limitedly sharing application windows in application sharing sessions |
JP2010157899A (ja) * | 2008-12-26 | 2010-07-15 | Sharp Corp | 画像処理装置、画像形成装置、画像処理方法、コンピュータプログラム及び記録媒体 |
US8195768B2 (en) | 2008-12-29 | 2012-06-05 | Apple Inc. | Remote slide presentation |
US9311618B2 (en) * | 2009-04-07 | 2016-04-12 | Clearslide, Inc. | Mixed content type presentation system |
US20100306406A1 (en) | 2009-05-29 | 2010-12-02 | Alok Mathur | System and method for accessing a remote desktop via a document processing device interface |
US9143570B2 (en) * | 2010-05-04 | 2015-09-22 | Microsoft Technology Licensing, Llc | Desktop screen sharing over HTTP |
GB2481613A (en) * | 2010-06-30 | 2012-01-04 | Skype Ltd | Updating regions of shared images using a server that records image status |
TWI495330B (zh) * | 2010-08-02 | 2015-08-01 | Ncomputing Inc | 有效地串流數位視訊的系統及方法 |
US8711844B2 (en) * | 2011-01-10 | 2014-04-29 | Vtech Telecommunications Limited | Peer-to-peer, internet protocol telephone system with proxy interface for configuration data |
-
2011
- 2011-06-10 US US13/158,268 patent/US9167020B2/en active Active
-
2012
- 2012-05-29 MX MX2013014599A patent/MX2013014599A/es active IP Right Grant
- 2012-05-29 JP JP2014514491A patent/JP6072018B2/ja active Active
- 2012-05-29 KR KR1020137032662A patent/KR101916980B1/ko active IP Right Grant
- 2012-05-29 CA CA2838287A patent/CA2838287A1/en not_active Abandoned
- 2012-05-29 WO PCT/US2012/039887 patent/WO2012170237A2/en active Application Filing
- 2012-05-29 EP EP12796804.8A patent/EP2719148B1/en active Active
- 2012-05-29 CN CN201280028279.3A patent/CN103597797B/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017150792A1 (en) * | 2016-02-29 | 2017-09-08 | University-Industry Cooperation Group Of Kyung Hee University | Apparatus and method for providing contents using web-based virtual desktop protocol |
US10868850B2 (en) | 2016-02-29 | 2020-12-15 | University-Industry Cooperation Group Of Kyung Hee University | Apparatus and method for providing contents using web-based virtual desktop protocol |
Also Published As
Publication number | Publication date |
---|---|
CN103597797B (zh) | 2016-05-11 |
JP6072018B2 (ja) | 2017-02-01 |
EP2719148B1 (en) | 2021-05-05 |
WO2012170237A2 (en) | 2012-12-13 |
CN103597797A (zh) | 2014-02-19 |
EP2719148A4 (en) | 2014-11-05 |
US20120317236A1 (en) | 2012-12-13 |
US9167020B2 (en) | 2015-10-20 |
EP2719148A2 (en) | 2014-04-16 |
WO2012170237A3 (en) | 2013-02-21 |
JP2014523669A (ja) | 2014-09-11 |
CA2838287A1 (en) | 2012-12-13 |
KR101916980B1 (ko) | 2018-11-08 |
MX2013014599A (es) | 2014-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101916980B1 (ko) | 웹-브라우저 기반 데스크탑 및 어플리케이션 원격화 솔루션 기법 | |
US20170046013A1 (en) | Web-browser based desktop and application remoting solution | |
US11029990B2 (en) | Delivering a single end user experience to a client from multiple servers | |
US8010679B2 (en) | Methods and systems for providing access to a computing environment provided by a virtual machine executing in a hypervisor executing in a terminal services session | |
US10387174B2 (en) | Extended desktops in virtual desktop environments | |
EP2375328A2 (en) | Methods and Systems for Providing Access to a Computing Environment | |
US11372658B2 (en) | Cross-device mulit-monitor setup for remote desktops via image scanning | |
WO2007100942A9 (en) | Methods and systems for providing access to a computing environment provided by a virtual machine executing in a hypervisor executing in a terminal services session | |
US8560817B2 (en) | Information processing apparatus, information processing system, computer program and information processing method, determining whether operating environment can be assigned | |
US9286088B2 (en) | User interface for interaction with virtual machine | |
US9549019B2 (en) | Managing a logical client for a virtual machine | |
US20120110478A1 (en) | System and method for supporting software | |
US10284668B2 (en) | Managing a logical client for an application | |
KR101951913B1 (ko) | 웹 가상화 시스템 및 서비스 방법 | |
CN116319765A (zh) | 一种云桌面连接方法及其相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |