KR20140001798A - 애플리케이션 디스커버리 - Google Patents

애플리케이션 디스커버리 Download PDF

Info

Publication number
KR20140001798A
KR20140001798A KR1020130075982A KR20130075982A KR20140001798A KR 20140001798 A KR20140001798 A KR 20140001798A KR 1020130075982 A KR1020130075982 A KR 1020130075982A KR 20130075982 A KR20130075982 A KR 20130075982A KR 20140001798 A KR20140001798 A KR 20140001798A
Authority
KR
South Korea
Prior art keywords
application
discovery
screen
screen device
request
Prior art date
Application number
KR1020130075982A
Other languages
English (en)
Other versions
KR102109985B1 (ko
Inventor
쟝-마리 화이트
다니엘 단시우
Original Assignee
넷플릭스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 넷플릭스, 인크. filed Critical 넷플릭스, 인크.
Publication of KR20140001798A publication Critical patent/KR20140001798A/ko
Application granted granted Critical
Publication of KR102109985B1 publication Critical patent/KR102109985B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/41Structure of client; Structure of client peripherals
    • H04N21/4104Peripherals receiving signals from specially adapted client devices
    • H04N21/4126The peripheral being portable, e.g. PDAs or mobile phones
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4363Adapting the video stream to a specific local network, e.g. a Bluetooth® network
    • H04N21/43637Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wireless protocol, e.g. Bluetooth, RF or wireless LAN [IEEE 802.11]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/442Monitoring of processes or resources, e.g. detecting the failure of a recording device, monitoring the downstream bandwidth, the number of times a movie has been viewed, the storage space available from the internal hard disk
    • H04N21/44227Monitoring of local network, e.g. connection or bandwidth variations; Detecting new devices in the local network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/462Content or additional data management, e.g. creating a master electronic program guide from data received from the Internet and a Head-end, controlling the complexity of a video stream by scaling the resolution or bit-rate based on the client capabilities
    • H04N21/4622Retrieving content or additional data from different sources, e.g. from a broadcast channel and the Internet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4782Web browsing, e.g. WebTV

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 발명은, 스마트 폰과 같은 제2 스크린 애플리케이션으로 하여금 인터넷 접속 인에이블드(Internet enabled) 고화질 텔레비전과 같은 제1 스크린 디바이스에서 제1 스크린 애플리케이션을 발견(discover)하고 론치할 수 있게 해주는 방법 또는 통신 프로토콜을 설명한다. 제2 스크린 디바이스는 제1 스크린 디바이스에서 디스커버리 서버들(discovery servers)의 프레즌스(presence)를 찾기 위해 로컬 네트워크들을 검색할 수 있다. RESTful HTTP 서비스 및 UPnP(Universal Plug and Play)와 같은 잘 알려진 프로토콜들은 디스커버리 서버를 구현하는데 활용될 수 있다. 일단 위치가 확인되면, 디스커버리 서버는, 지정된 애플리케이션이 제1 스크린 디바이스에서 론치되고 제2 스크린 디바이스에서 로컬 애플리케이션으로부터 제어될 수 있도록, 제1 스크린 및 제2 스크린 디바이스들 사이의 통신 및 상호 작용을 지원한다. 지정된 애플리케이션은 이전에 설치되지 않은 경우 설치될 수 있고, 또한, 로컬 네트워크 외부에 액세스가능한 클라우드 서버, 예를 들어, 인터넷에서 웹 애플리케이션으로서 호스트될 수 있다.

Description

애플리케이션 디스커버리{APPLICATION DISCOVERY}
관련 출원의 상호 참조: 이익 청구
본원은 2012년 7월 25일자로 출원된 가출원 61/675,756 및 2012년 6월 28일자로 출원된 가출원 61/665,827의 이익을 주장하며, 이에 따라 이들 가출원의 전체 내용은 본 명세서에서 충분히 설명되는 바와 같이 모든 목적을 위해 본 명세서에 참고로 포함된다.
기술 분야
본 발명은 일반적으로 네트워크에서 컴퓨터 프로그램 애플리케이션들의 존재를 발견하기 위한 기술들과 관련된다. 본 발명은 구체적으로 제1 스크린 오디오비주얼 디바이스들 및 제2 스크린 컴퓨팅 디바이스들을 조정하는 데 유용한 애플리케이션 디스커버리 기술들에 관한 것이다.
이 섹션에서 설명되는 접근법들은 추구될 수 있는 접근법들이지만, 반드시 이전에 구상 또는 추구된 접근법들은 아니다. 따라서, 달리 지시되지 않는 한, 이 섹션에서 설명되는 임의의 접근법들은 그들의 이 섹션 내의 포함에 의해서만 종래 기술로서의 자격을 갖는 것으로 여겨지지 않아야 한다.
가정 및 상업적 환경들 내의 비디오 기반 엔터테인먼트 시스템들은 텔레비전, 디지털 비디오 레코더, 디스크 플레이어, 및 케이블 또는 위성 텔레비전 시그널링 시스템들과 호환되는 셋톱 박스와 같은 다양한 주요 시청 시스템들을 포함할 수 있다. 그러한 주요 시청 시스템들은 종종 엔터테인먼트 또는 다른 기능들과 관련된 애플리케이션 프로그램들을 호스트할 수 있고 일반적으로 프로그램을 구동하거나 대형 스크린 디스플레이 또는 디스플레이 유닛 상에 표시할 수 있는 완전한 특수 목적 컴퓨터들을 포함한다. 동일 환경들에서, 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북 컴퓨터 및 다른 컴퓨터 및 워크스테이션과 같은 다른 특수 목적 컴퓨팅 디바이스들 및 범용 컴퓨팅 디바이스들의 사용은 일반적이다. 그러나, 로컬 네트워크 상에서 디바이스들을 발견하기 위해 SSDP 및 Bonjour/mDNS와 같은 소정의 프로토콜들이 이용 가능하지만, 현재의 기술에서는 컴퓨팅 디바이스들 상에서 호스트되는 애플리케이션들이 동작들을 식별하고, 동작들로부터 데이터를 획득하고, 주요 시청 시스템들 상에서 실행될 수 있는 애플리케이션들과 동작들을 조정하는 것은 어려웠다. 다른 예로서, 로컬 네트워크 상의 랩톱 컴퓨터는 주요 시청 시스템 상에서 호스트되는 특정 엔터테인먼트 지향 컴퓨터 프로그램 애플리케이션을 식별한 후에 주요 시청 시스템 상에서의 론치(launching)를 유도하는 어떠한 방법도 갖지 못할 수 있다. 결과적으로, 과거에 사용자들은 통상적으로 주요 시청 시스템 상에서 호스트되는 애플리케이션들을 식별, 론치, 사용 및 셧다운하기 위해 주요 시청 시스템과 직접 상호작용해야 했다.
도 1a는 다양한 실시예들을 구현하는 데 사용될 수 있는 컴퓨터 시스템 아키텍처를 나타낸다.
도 1b는 일 실시예에 따른 애플리케이션들을 발견하는 방법을 나타낸다.
도 2는 DIAL 서비스 디스커버리 컴포넌트의 일 구현을 나타내는 메시지 시퀀스 도면이다.
도 3은 M-SEARCH 요청의 일례이다.
도 4는 M-SEARCH 응답의 일례이다.
도 5는 디바이스 디스크립션 요청의 일례이다.
도 6은 디바이스 디스크립션 응답의 일례이다.
도 7은 애플리케이션 론치를 나타내는 메시지 시퀀스 도면이다.
도 8은 예시적인 애플리케이션 론치 요청을 나타낸다.
도 9는 애플리케이션 론치 응답을 나타낸다.
도 10은 애플리케이션 정보 요청을 나타낸다.
도 11a는 애플리케이션 정보 응답을 위한 XML 스키마를 나타낸다.
도 11b는 애플리케이션 정보 응답을 나타낸다.
도 12는 일 실시예를 구현할 수 있는 컴퓨터 시스템을 나타낸다.
아래의 설명에서는, 설명의 목적으로, 본 발명의 충분한 이해를 제공하기 위해 다수의 특정 상세가 설명된다. 그러나, 본 발명은 이러한 특정 상세 없이도 실시될 수 있다는 것이 명백할 것이다. 다른 예들에서는, 본 발명을 불필요하게 불명확하게 하지 않기 위해 공지 구조들 및 디바이스들은 블록도 형태로 표시된다.
1.0 기술 소개
일 실시예에서, 본 명세서는 제2 스크린 애플리케이션들이 제1 스크린 디바이스 상에서 제1 스크린 애플리케이션들을 발견하고 론치할 수 있게 하는 방법들 또는 통신 프로토콜들을 설명한다. 본 발명의 하나의 목적은 소비자 전자 디바이스 소유자들이 오디오비주얼 지향 엔터테인먼트 경험의 일부로서 스마트폰 및 태블릿 컴퓨터 애플리케이션들의 고른(seamless) 통합을 향유할 수 있게 하는 것이다.
1.1 용어
본 명세서에서, 아래의 용어들은 아래의 의미들을 가질 수 있다.
제1 스크린: 주로 오디오비주얼 프로그램의 비주얼 디스플레이를 실행 또는 생성할 수 있는 텔레비전, 디스크 플레이어, 셋톱 박스, 게임 콘솔, 디지털 비디오 레코더 또는 유사한 디바이스. 제1 스크린 디바이스는 종종 사용자 환경에서의 주요 시청 시스템이다.
제2 스크린: 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북 컴퓨터 또는 다른 개인용 컴퓨팅 디바이스. 제2 스크린 디바이스는 종종 보조 시청 시스템이지만, 종종 제1 스크린 디바이스보다 강력한 또는 일반화된 컴퓨팅 및 입력 능력들을 갖는다.
디스커버리 서버: 본 명세서에서 설명되는 프로토콜들의 서버 측을 호스트, 실행 또는 구현하는 컴퓨팅 디바이스. 일 실시예에서, 디스커버리 서버는 제1 스크린 디바이스이다.
디스커버리 클라이언트: 디스커버리 서버 상에 위치하거나 호스트되는 컴퓨터 프로그램 애플리케이션들을 발견하고 론치를 요청할 수 있는 컴퓨팅 디바이스. 일 실시예에서, 디스커버리 클라이언트는 제2 스크린 디바이스이다.
명확한 예들을 설명하려는 목적으로, 본 명세서의 소정 섹션들은 Netflix 및 YouTube와 같은 소정의 상용 서비스들을 참조하며, iPhone 스마트폰 및 Android 기반 태블릿 컴퓨터와 같은 소정의 상용 컴퓨팅 디바이스들을 참조한다. 그러나, 본 명세서에서 식별되는 특정 서비스들 및 디바이스들은 단지 예로서 언급되며, 다른 실시예들은 임의의 다른 형태의 컴퓨팅 디바이스 또는 애플리케이션과 관련하여 구현될 수 있다.
2.0 시스템 아키텍처
도 1a는 다양한 실시예들을 구현하는 데 사용될 수 있는 컴퓨터 시스템 아키텍처를 나타낸다. 일 실시예에서, 제1 스크린 디바이스(102) 및 제2 스크린 컴퓨팅 디바이스(110)는 로컬 네트워크(114)에 결합된다. 예를 들어, 제1 스크린 디바이스(102)는 프로세서를 구비한 텔레비전, 셋톱 박스, 게임 콘솔, 디지털 비디오 레코더, 디스크 플레이어, 또는 비디오 디스플레이(108)를 포함하거나 구동할 수 있는 소비자 전자 디바이스의 다른 요소를 포함할 수 있다. 제1 스크린 디바이스(102)는 제1 스크린 애플리케이션(104) 및 디스커버리 서버(106)를 호스트하고 실행한다. 임의 수의 제1 스크린 애플리케이션들(104)이 다양한 실시예들에서 지원될 수 있으며, 도 1a에는 단지 명확한 예를 설명하기 위해 단일 제1 스크린 애플리케이션이 도시된다. 제1 스크린 애플리케이션들의 예들은 Netflix 호환 플레이어들과 같은 비디오 플레이어들을 포함한다.
디스커버리 서버(106)는 제1 스크린 디바이스들 내의 호환 애플리케이션들의 가용성을 발견하기 위한 디스커버리 클라이언트(112)로부터의 요청들에 응답하고 이들을 처리하기 위해 본 명세서에서 더 설명되는 기능들을 구현하는 하나 이상의 컴퓨터 프로그램들을 포함한다. 일 실시예에서, 디스커버리 서버(106)는 본 명세서에서 더 설명되는 기능들을 수행하도록 구성되는 DIAL 서비스 디스커버리 컴포넌트(106A) 및 DIAL REST 서비스 컴포넌트(106B)를 포함한다. 이와 관련하여, DIAL은 디스커버리 및 론치를 지칭하며, 도 1a에 도시된 소정의 동작 유닛들의 일반 기능들을 나타낸다.
일반적으로, DIAL 서비스 디스커버리 컴포넌트(106A)는 디스커버리 서버(106)를 발견하기 위한 디스커버리 클라이언트(112)의 요청들에 응답하며, DIAL REST 서비스 컴포넌트(106B)는 디스커버리 클라이언트(112)의 애플리케이션 론치 요청들과 제1 스크린 디바이스(102)의 애플리케이션 관리자 사이의 인터페이스로서 기능한다. 일 실시예에서, 제1 스크린 디바이스(102)는 제1 스크린 애플리케이션(104) 및 제1 스크린 디바이스(102)에서 호스트되는 다른 애플리케이션들에 관한 정보에 대한 액세스를 제공하도록 구성되는 유니버설 플러그 앤 플레이(UPnP) 서버(107) 또는 대안으로서 HTTP 서버를 더 포함한다. 일 실시예에서, UPnP 서버(107)는, 본 발명의 범위 밖인 수단을 통해, 가용 UPnP 서비스들의 리스트를 포함하는 제1 스크린 디바이스(102)의 메타데이터를 지시하는 디바이스 디스크립션(109)을 갖도록 구성된다. 예를 들어, 디바이스 디스크립션(109)은 제1 스크린 디바이스(102)에 대한 "Smart HDTV XYZ-900"의 이름을 제공하기 위한 "friendlyName" 필드를 포함할 수 있다. 게다가, 디바이스 디스크립션(109)에 대한 HTTP 요청에 대한 HTTP 응답 내에 "애플리케이션-URL" 헤더 필드가 제공될 수 있다. 이 애플리케이션-URL은 디스커버리 서버(106)의 DIAL REST 서비스 컴포넌트(106B)를 가리킬 수 있다. 이 애플리케이션-URL을 관심 있는 특정 애플리케이션 이름과 연결함으로써, 제2 스크린 컴퓨팅 디바이스(110)와 같은 UPnP 클라이언트 디바이스들은 제1 스크린 애플리케이션(104) 및 제1 스크린 디바이스(102)에서 호스트되는 0개 이상의 다른 애플리케이션들에 조회하고 제어할 수 있다. 명명 일관성을 위해, UPnP 클라이언트들은 아래의 섹션 7.0에서 설명되는 바와 같이 DIAL 레지스트리 내에 등록된 잘 정의된 애플리케이션 이름들을 이용할 수 있다. 애플리케이션-URL을 통해 액세스 가능한 애플리케이션들은 디바이스 디스크립션(109)에서 제공되는 UPnP 서비스들의 리스트와 다르고 별개라는 점에 유의한다.
제2 스크린 컴퓨팅 디바이스(110)는 스마트폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북 컴퓨터, 또는 다른 컴퓨터 또는 워크스테이션 중 임의의 것을 포함할 수 있다. 제2 스크린 컴퓨팅 디바이스(110)는 디스커버리 클라이언트(112) 및 제2 스크린 애플리케이션(113)을 호스트하거나 실행한다. 디스커버리 클라이언트(112)는 로컬 네트워크(114)에 결합되는 제1 스크린 디바이스(102) 또는 다른 비디오 지향 또는 엔터테인먼트 지향 디바이스들을 발견하기 위한 디스커버리 요청들을 개시하기 위해 본 명세서에서 더 설명되는 기능들을 구현한다. 제2 스크린 애플리케이션(113)은 제1 스크린 애플리케이션(104)으로부터 획득되거나 그에 제공되는 데이터로부터 이익을 얻거나 이를 이용할 수 있는 임의 종류의 실행 가능 애플리케이션을 포함할 수 있다. 예를 들어, 제2 스크린 애플리케이션(113)은 텔레비전 프로그램 스케줄, 미디어 파일 관리자, 및/또는 인터넷 서버들 상에서 호스트되는 애플리케이션들에 액세스하기 위한 인터넷 브라우저를 제공할 수 있다.
로컬 네트워크(114)는 유선 네트워크 링크들, 무선 네트워킹 라우터, 또는 네트워크 기반구조의 다른 요소들을 포함할 수 있다. 일 실시예에서, 로컬 네트워크(114)는 케이블 모뎀, DSL 모뎀, 또는 공중 네트워크(118) 또는 인터넷으로 알려진 인터네트워크들의 글로벌 모음과 같은 인터네트워크에 대한 다른 액세스 장비와 같은 액세스 라우터(116)에 결합된다. 제1 스크린 디바이스(102) 및 제2 스크린 컴퓨팅 디바이스(110)에 대한 로컬 네트워크(114)의 링크들은 유선 링크들 또는 무선 링크들을 포함할 수 있으며; 예를 들어, 액세스 라우터(116)는 무선 근거리 네트워크(WLAN) 라우터와 케이블 모뎀, DSL 모뎀 또는 다른 액세스 장비의 결합을 나타낼 수 있으며, 디바이스들(102, 110)은 호환형 무선 네트워크 인터페이스 카드들을 구비할 수 있다.
일 실시예에서, 디스커버리 리포지토리(120)가 네트워크(118)에 결합되며, 디스커버리 서버(106) 및 디스커버리 클라이언트(112)로부터의 네트워킹 프로토콜들을 이용하여 액세스될 수 있다. 일반적으로, 디스커버리 리포지토리(120)는 관계형 데이터베이스, 플랫(flat) 파일 시스템, 또는 광범위하게 이용 가능한 제1 스크린 애플리케이션들(104) 또는 제2 스크린 애플리케이션들(113)의 공지된 이름들과 같은 중앙화된 정보를 유지하는 다른 데이터 저장 장치와 같은 데이터 저장소를 포함한다. 디스커버리 리포지토리(120)의 구성 및 사용은 본 명세서에서 더 설명된다.
도 1a 내의 파선들은 디스커버리 클라이언트(112)와 도 1a의 다른 요소들 간의 가상 통신 경로들을 나타낸다.
3.0 사용 예들
다양한 실시예들에서, 이 섹션에서 설명되는 일반적인 방식으로 제2 스크린 디바이스들과 제1 스크린 애플리케이션들 사이의 통신을 설정하기 위한 본 명세서에서의 기술들을 이용하기 위해 상이한 방법들이 구현될 수 있다.
도 1b는 일 실시예에 따른 애플리케이션들을 발견하는 방법을 나타낸다. 블록 130에서, 제2 스크린 디바이스 상에서 실행되는 디스커버리 서비스 클라이언트는 제2 스크린 디바이스 및 하나 이상의 제1 스크린 디바이스들 양자가 결합된 로컬 네트워크에서 디스커버리 요청을 개시한다. 디스커버리 요청은 멀티스크린 서비스를 지정하며, 따라서 멀티스크린 엔터테인먼트 지향 서비스들을 지원하는 청취 서버들은 요청을 인식하고 요청에 응답할 수 있다. 블록 132에서, 디스커버리 서비스 클라이언트는 제1 스크린 디바이스들 중 하나로부터 제1 스크린 디바이스 상의 디스커버리 서버의 이름 및 위치를 식별하는 디스커버리 응답을 수신한다. 제1 스크린 디바이스가 SSDP 또는 UPnP를 지원하는 경우, 응답은 제1 스크린 디바이스에서 SSDP 서버 또는 UPnP 서버로부터 올 수 있으며; 다른 실시예들은 멀티스크린 서비스 또는 등가물을 지시하는 디스커버리 요청들을 인식하고 그에 응답하기 위해 제1 스크린 디바이스에서 다른 서버들을 구현할 수 있다. 이 시점에서, 제2 스크린 디바이스의 디스커버리 서비스 클라이언트는 호환 서버가 네트워크 내에 있고 특정 애플리케이션들에 대한 추가적인 데이터를 얻기 위해 접촉될 수 있다는 것을 안다. 본 명세서에서 더 설명되는 바와 같이, 디스커버리 서버는 임의의 여러 가지 기술 및 프로토콜을 이용하여 구현될 수 있다.
블록 134에서, 디스커버리 서비스 클라이언트는 제1 스크린 디바이스에서 이용 가능한 하나 이상의 애플리케이션들에 대한 위치 및 옵션으로서 이름 정보를 제공하도록 디스커버리 서버에 요청한다. 블록 134는 먼저 DIAL REST API를 호출하기 위한 위치를 식별한 후에 애플리케이션 정보에 대해 DIAL REST API에 조회하는 2 단계 프로세스를 이용하여 달성될 수 있다. 예를 들어, 디스커버리 서비스 클라이언트는 먼저 디스커버리 서버의 UPnP 장치 디스크립션에 대한 HTTP 요청을 전송할 수 있다. HTTP 응답은 UPnP 장치 디스크립션을 포함하며, DIAL REST API를 가리키는 애플리케이션-URL 헤더 필드도 포함한다. 이어서, 애플리케이션-URL은 구조화된 문서 또는 다른 형태의 응답으로서 구성되는 공지의 설치된 애플리케이션들에 대한 이름 및/또는 위치 정보를 조회하는 데 사용될 수 있다. 일부 실시예들에서, 디스커버리 서비스 클라이언트는 잠재적으로 설치된 애플리케이션들의 이름들을 갖도록 사전 구성되며, 특정 이름의 설치된 애플리케이션들에 대한 정보를 반환하도록 디스커버리 서버에 요청한다. 따라서, 디스커버리 서비스 클라이언트는 예를 들어 애플리케이션-URL과 특정 애플리케이션 이름의 연결을 통해 디스커버리 서버에 조회함으로써 특정 애플리케이션이 제1 스크린 장치에 설치되었는지를 결정할 수 있다. 소정 실시예들에서, 블록 134는 옵션으로서 생략될 수 있는데, 그 이유는 디스커버리 서비스 클라이언트가 블록 136에 응답하는 액션에 기초하여 특정 애플리케이션이 설치되었는지를 결정할 수 있기 때문이다.
블록 136에서, 디스커버리 서비스 클라이언트는 옵션으로서 하나 이상의 지정된 파라미터 값들을 이용하여 제1 스크린 장치 상에서 지정된 애플리케이션을 론치하도록 디스커버리 서버에 요청한다. 이에 응답하여, 디스커버리 서버는 운영 체제의 애플리케이션 관리자 또는 제1 스크린 장치 상의 다른 설비와 상호작용하여, 지정된 애플리케이션의 론치를 야기시킬 수 있다. 이러한 접근법에서, 디스커버리 서비스 클라이언트는 제1 스크린 장치 상의 애플리케이션들을 직접 호출 또는 론치하도록 기능하는 정보 또는 코드를 갖도록 구성될 필요가 없다. 결과적으로, 제1 스크린 장치는 디스커버리 서비스 클라이언트 또는 제2 스크린 장치 또는 제2 스크린 애플리케이션들의 특수한 구성 없이 프로세서, 운영 체제, 또는 애플리케이션들을 관리하기 위한 다른 플랫폼의 임의 조합을 이용할 수 있지만, 제2 스크린 장치는 궁극적으로 제1 스크린 장치 상의 애플리케이션들을 론치 또는 호출할 수 있을 것이다.
더구나, 아래의 표 1에서 설명되는 바와 같이, 론치 요청에 응답하여 다양한 액션들이 또한 수행될 수 있다. 예를 들어, 론치 요청이 "404 미발견" 액션을 유발하는 경우, 디스커버리 서비스 클라이언트는 특정 애플리케이션이 설치되지 않은 것으로 결정할 수 있다.
블록 138에서, 디스커버리 클라이언트는 제1 스크린 애플리케이션을 식별하는 데이터를 제2 스크린 장치 상에서 실행되거나 호스트되는 로컬 애플리케이션에 제공한다. 블록 140에서, 제1 스크린 애플리케이션 및 제2 스크린 애플리케이션은 로컬 네트워크를 통해 직접 통신하고 상호작용한다. 디스커버리 클라이언트는 본 명세서에서 더 설명되는 바와 같이 제1 스크린 장치 상에서 호스트되는 중개 서비스를 통해 제1 스크린 애플리케이션으로 전송될 수 있는 URL들 또는 기타 구조화된 식별자들을 통해 그러한 통신들을 수행하도록 구성될 수 있다. 결과적으로, 제2 스크린 애플리케이션은 제1 스크린 애플리케이션과 효율적으로 통신하여, 동작들을 조정하거나, 데이터를 공유하거나, 기능들 또는 실행을 모니터링할 수 있다.
다양한 실시예들에서, 도 1b의 일반적인 방법들은 아래의 예시적인 접근법들에서 제1 스크린 서비스, 제2 스크린 서비스 또는 클라우드 기반 서비스로서 구현될 수 있다.
3.1 제1 스크린 서비스
일 실시예에서, iPhone 스마트폰에서 실행되는 Netflix 애플리케이션은 Netflix-인에이블드 텔레비전을 발견한 후에, TV 상에서 Netflix 애플리케이션의 론치를 야기시켜서 사용자로 하여금 영화를 볼 수 있게 해준다. 이와 관련하여, "Netflix-인에이블드 텔레비전"은 Netflix 애플리케이션이 이미 설치되어 있는 컴퓨팅 능력을 갖춘 텔레비전 디스플레이 디바이스를 지칭한다. 그러한 실시예는 다음과 같은 일반 프로세스를 포함할 수 있다.
(a) iPhone 상의 Netflix 애플리케이션이 네트워킹된 TV 상의 디스커버리 서비스를 발견한다.
(b) iPhone 상의 Netflix 애플리케이션은 디스커버리 서비스를 이용하여, TV 상에서 Netflix 애플리케이션을 론치하도록 네트워킹된 TV에 요청한다.
(c) iPhone 상의 Netflix 애플리케이션은 TV 상의 Netflix 애플리케이션을 발견한다.
(d) iPhone 상의 Netflix 애플리케이션 및 TV 상의 Netflix 애플리케이션은 영화를 보여주기 위해 통신한다.
3.2 제2 스크린 서비스
일 실시예에서, Android 태블릿 상의 YouTube 애플리케이션은 YouTube-인에이블드 TV를 발견한 후에, TV 상에서 YouTube 애플리케이션을 론치하고, TV 상에서 비디오를 재생하며, 비디오가 끝난 후에 TV는 이전의 재생하고 있던 TV 쇼로 복귀한다. 이러한 실시예는 다음과 같은 일반 프로세스를 포함할 수 있다.
(a) 태블릿 상의 YouTube 애플리케이션은 네트워킹된 TV 상의 디스커버리 서비스를 발견한다.
(b) 태블릿 상의 YouTube 애플리케이션은 디스커버리 서비스를 이용하여, YouTube 애플리케이션을 론치하도록 TV에 요청하면서, 태블릿 상의 YouTube 애플리케이션에 대응하는 (IP 어드레스 및 포트 값과 같은) 네트워크 어드레스를 전달한다.
(c) TV 상의 YouTube 애플리케이션은 태블릿 상의 YouTube 애플리케이션과 통신하여 비디오를 보여준 후에, 통상의 TV 사용자 인터페이스로 복귀한다.
3.3 클라우드 기반 서비스
일 실시예에서, Android 기반 스마트폰 상의 WebcamX 애플리케이션은 WebcamX-인에이블드 TV를 발견한 후에, TV 상에서 브라우저 기반 HTML5 WebcamX 애플리케이션을 론치하여 웹캠 스트림을 표시한다. 이 예에서, WebcamX 애플리케이션은 본 명세서에서의 기술들의 실행 가능한 잠재적 이용을 예시하기 위한 목적으로 설명되는 가상적인 예이다. 이러한 실시예는 아래의 일반적인 프로세스를 포함할 수 있다.
(a) 전화 상의 WebcamX 애플리케이션은 네트워킹된 TV 상의 디스커버리 서비스를 발견한다.
(b) 전화 상의 WebcamX 애플리케이션은 디스커버리 서비스를 이용하여, WebcamX 애플리케이션에 대한 URL로 시작하는 HTML5 기반 브라우저를 론치하도록 TV에 요청하면서, 난수 또는 의사 난수에 기초하여 고유한 토큰을 전달한다.
(c) 전화 상의 WebcamX 애플리케이션은 클라우드 기반 WebcamX 서버를 이용하여, 서버로 하여금 2개의 애플리케이션 사이에서 트래픽을 올바르게 라우팅할 수 있게 하는 고유 토큰을 이용하여, TV 상의 WebcamX 애플리케이션과 통신한다.
4.0 예시적인 디스커버리 방법의 개요
명확한 예들을 설명하기 위해, 본 명세서의 소정 섹션들은 DIAL과 같은 특정 용어들을 속기로서 사용한다. 그러나, 다른 실시예들은 상이한 명칭들, 라벨들 또는 식별자들을 이용하여 기능적으로 등가인 방법들 또는 메커니즘들을 구현할 수 있으며, 따라서 DIAL과 같은 용어들은 단지 예로서 제공된다.
일 실시예에서, 본 명세서에서의 기술들은 DIAL 서비스 디스커버리 컴포넌트(106A) 및 DIAL REST 서비스 컴포넌트(106B)를 통해 구현될 수 있다. 이와 관련하여, REST는 분산형 시스템들에 대한 소프트웨어 아키텍처의 표현 상태 전이 스타일(Representational State Transfer style)을 지칭한다. 본 명세서에서는 명확한 예를 설명하기 위해 REST 서비스의 사용을 설명하지만, 다른 실시예들에서는 SOAP 또는 WSDL이 사용될 수 있다. 일 실시예에서, DIAL 서비스 디스커버리 컴포넌트는 디스커버리 클라이언트 디바이스로 하여금 그의 로컬 네트워크 세그먼트 상의 디스커버리 서버들을 발견하고 그러한 디바이스들 상의 DIAL REST 서비스에 대한 액세스를 획득할 수 있게 해준다.
일 실시예에서, DIAL REST 서비스는 디스커버리 클라이언트로 하여금 디스커버리 서버 디바이스 상에서 호스트되거나 실행되는 애플리케이션들에 조회하고, 이들을 론치하고, 옵션으로 이들을 중단시킬 수 있게 해준다.
5.0 DIAL 서비스 디스커버리
일 실시예에서, DIAL 서비스 디스커버리 컴포넌트(106A)는 UPnP(Universal Plug and Play) 디바이스 디스크립션에 대한 HTTP(Hypertext Transfer Protocol) 요청에 응답하여, SSDP(Simple Service Discovery Protocol)를 이용하여 구조화된 메시지들 내의 지정된 검색 타겟, 및 지정된 헤더를 이용하여 구현된다. SSDP 프로토콜은 본 명세서의 작성시에 HTTP 서버 upnp.org의 폴더 /sdcps-and-certification/standards/device-architecture-documents/에서 이용 가능한 2008년 10월 15일자의 UPnP 디바이스 아키텍처 1.1에 설명되어 있다.
일 실시예에서, DIAL REST 서비스 컴포넌트(106B)는 The Internet Society에 의해 발표된 R. Fielding 등이 저술한, "Hypertext Transfer Protocol - HTTP/1.1," Request for Comment (RFC) 2616, June 1999에 설명된 바와 같이 HTTP를 이용하여 액세스된다. 일 실시예에서, 디스커버리 클라이언트들 및 디스커버리 서버들은 UPnP 프로토콜의 섹션 2.1의 요구들을 지원하며, 특히 HTTP 1.0은 통상적으로 항상 지원되며, HTTP 1.1이 지원될 수 있다.
이러한 구성의 효과는, 제1 스크린 디바이스 상에 존재하는 UPnP 서버가 이용 가능한 경우에는 지원되지만, 제1 스크린 디바이스 내에 갖는 것은 필수적이 아니라는 점이다. 대안으로서, 제1 스크린 디바이스는 등가의 기능들을 제공하도록 HTTP 서버를 구현할 수 있다. 또한, 본원의 구성은 최신 웹 상호작용 표준들과 호환되는 잘 정의된 통신 메커니즘들을 이용하여 디스커버리 클라이언트(112) 및 제2 스크린 애플리케이션(113)에 의해 제1 스크린 애플리케이션(104)을 효율적으로 발견하는 것을 이용하게 한다.
도 2는 DIAL 서비스 디스커버리 컴포넌트의 일 구현을 나타내는 메시지 흐름도이다. 도 2에서, 도 1a의 UPnP 서버(107)와 디스커버리 클라이언트(112)에 각각 대응할 수 있는 UPnP 서버와 DIAL 클라이언트 사이에서 네트워크를 통해 일련의 메시지들이 전달된다.
도 2의 메시지 (1)은 M-SEARCH 요청이며, 그 일례가 도 3에 도시되어 있다. 일 실시예에서, 하나 이상의 디스커버리 서버들을 발견하려고 시도하는 디스커버리 클라이언트는 UPnP 디바이스 아키텍처의 섹션 1.3.2에 정의된 바와 같은 M-SEARCH 요청을 UDP를 통해 멀티캐스트 어드레스 239.255.255.250 및 UDP 포트 1900으로 전송한다. 도 2에 도시된 바와 같이, 요청은 제1 스크린 디바이스 상의 UPnP 서버로 지향되어, UPnP를 지원하는 제1 스크린 디바이스들에 대한 UPnP 서버 능력들의 이용을 가능하게 한다. 요청은 urn:dial-multiscreen-org:service:dial:1의 값을 갖는 검색 타겟(ST) 헤더를 포함한다.
다른 실시예들에서는 상이한 ST 값들이 사용될 수 있으며, 위에서 제공된 예시적인 특정 값은 중요하지 않다. 위에서 주어진 멀티캐스트 어드레스는 IPv4에 대한 것이지만, 다른 실시예들에서는 IPv6과 호환되는 등가의 멀티캐스트 어드레스에 기초하여 IPv6 어드레스들에 대해 유사한 프로세스가 사용될 수 있다.
도 2의 메시지 (2)는 M-SEARCH 응답이며, 그 일례가 도 4에 도시되어 있다. 일 실시예에서, 위에서 정의된 ST 헤더를 포함하는 M-SEARCH 요청을 수신하는 SSDP 서버 또는 UPnP 서버는 UPnP 디바이스 아키텍처의 섹션 1.3.3에서 정의된 바와 같이 응답한다. 응답은 루트(root) 디바이스의 UPnP 디스크립션에 대한 절대(absolute) HTTP URL을 포함하는 LOCATION 헤더를 포함한다. 루트 디바이스는 제1 스크린 디바이스 상에서 또한 실행되고 있는 하위 서비스에 대한 디스크립션이 아니라 제1 스크린 디바이스(102)에 적용 가능한 최고 순위의 UPnP 디스크립션의 반환을 보증하기 위해 참조된다. URL의 호스트 부분은 IP 어드레스로 변하거나 IP 어드레스를 포함한다. 응답의 ST 헤더는 이전 단락에서 지정된 것과 동일한 식별자를 포함한다. 도 2에 도시된 바와 같이, 메시지 (2)가 DIAL 클라이언트에 의해 수신되면, DIAL 인에이블드 TV를 발견하는 프로세스가 완료된다.
도 2의 메시지 (3)은 디바이스 디스크립션 요청이며, 그 일례가 도 5에 도시되어 있다. 일 실시예에서, 메시지 (2)로 표시된 M-SEARCH 응답의 수신에 응답하여, 디스커버리 클라이언트는 HTTP GET 요청을 M-SEARCH 응답의 LOCATION 헤더에서 수신된 URL로 전송한다. 일 실시예에서, SSDP 헤더 필드 명칭들의 매칭은 민감한 문제가 아니다.
도 2의 메시지 (4)는 디바이스 디스크립션 응답이며, 그 일례가 도 6에 도시되어 있다. 일 실시예에서, 디바이스 디스크립션에 대한 유효 HTTP GET 요청의 수신에 응답하여, 디스커버리 서버는 UPnP 디바이스 아키텍처의 섹션 2에 정의된 바와 같은 UPnP 디바이스 디스크립션을 포함하는 HTTP 응답으로 응답한다. 게다가, 일 실시예에서, 요청은 재지향되지 않는다. 요청이 성공적인 경우, HTTP 응답은 애플리케이션-URL로 표시되는 헤더 필드를 포함하며, 그 값은 본 명세서에서 DIAL REST 서비스 URL로서 지칭되는 DIAL REST 서비스를 식별하는 절대 HTTP URL이다. URL의 호스트 부분은 IP 어드레스를 지정하거나 IP 어드레스로 분해한다(resolve). 도 2에 도시된 바와 같이, 메시지 (4)가 DIAL 클라이언트에 의해 수신되면, DIAL REST 서비스를 탐색하는 프로세스가 완료된다.
일 실시예에서, ABNF 표시법에서, 애플리케이션-URL 헤더의 포맷은 Application-URL = "Application-URL"":"absoluteURI이다.
일 실시예에서, 본 명세서에서 더 설명되는 바와 같이, 그러한 응답을 수신하는 디스커버리 클라이언트는 제공된 URL을 이용하여, DIAL REST 서비스에 액세스한다. 일 실시예에서, UPnP에 정의된 바와 같은 디바이스 디스크립션의 "friendlyName" 필드는 디스커버리 클라이언트 디바이스 사용자 인터페이스에서의 프레젠테이션을 위해 사용될 수 있으며, 예를 들어 그러한 명칭들은 상호작용할 디스커버리 서버 디바이스들의 선택을 사용자들에게 제공하는 리스트들 또는 메뉴들 내에 표시될 수 있다.
위의 접근법을 이용하여, 제2 스크린 클라이언트 컴퓨터는 먼저 제1 스크린 디바이스에서의 응답 디스커버리 서비스의 존재를 발견한 후에 제1 스크린 디바이스 상에서 이용 가능한 애플리케이션들을 설명하는 다른 정보의 위치를 학습할 수 있다. 이어서, 제2 스크린 클라이언트 컴퓨터는 제1 스크린 디바이스(102)의 애플리케이션 관리자와 인터페이스하기 위해 DIAL REST 서비스 컴포넌트와 같은 중개 수단을 이용하여, 관심 있는 기능들을 수행하기 위한 제1 스크린 디바이스의 애플리케이션들 중 하나 이상을 선택적으로 호출할 수 있다.
6.0 DIAL REST 서비스
6.1 애플리케이션 자원들
일 실시예에서, DIAL REST 컴포넌트(106B)는 URL들에 의해 식별되는 자원들인 애플리케이션들(예를 들어, Netflix 또는 YouTube)과 연동한다. 특정 애플리케이션과 관련된 동작들은 애플리케이션 자원 URL로 표시될 수 있는 그러한 특정 애플리케이션에 대한 특정 URL에 기초하여 HTTP 요청들을 전송함으로써 수행된다. DIAL REST 컴포넌트(106B)가 일례로서 도시되지만, 다른 실시예들은 SOAP, 독점 TCP 기반 프로토콜, 또는 XMPP에 기초하는 인스턴트 메시징 Jabber-스타일 프로토콜을 포함하는 REST에 대한 대안들을 사용할 수 있다.
일 실시예에서, 애플리케이션 자원 URL은 애플리케이션-URL과 애플리케이션 명칭을 연결함으로써 형성된다. 이와 관련하여, 플랫폼 애플리케이션 관리자는 애플리케이션들의 론치, 프로세스들의 분기 또는 스포닝(spawning), 관리자로서의 기능 또는 유사한 기능들의 수행을 담당하는 제1 스크린 디바이스(102)의 임의의 기능 유닛이며, 애플리케이션 관리자는 제1 스크린 디바이스(102)를 제어하는 운영 체제의 유닛 또는 서비스일 수 있다.
각각의 애플리케이션에 대한 애플리케이션 명칭은 애플리케이션 제공자에 의해 정의된다. 애플리케이션 명칭들은 본 명세서의 섹션 7에서 더 설명되는 DIAL 레지스트리에 등록된다.
6.2 애플리케이션 론치
도 7은 애플리케이션 론치를 나타내는 메시지 시퀀스 도면이다. 도 7에서, 도 1a의 DIAL REST 서비스 컴포넌트(106B)와 디스커버리 클라이언트(112)에 각각 대응할 수 있는 DIAL REST 서비스와 DIAL 클라이언트 사이에서 네트워크를 통해 일련의 메시지들이 전달된다.
애플리케이션 론치 요청을 전송하기 전에, DIAL 클라이언트는 먼저 옵션으로서 메시지 (1) 또는 애플리케이션 정보 요청을 전송함으로써 특정 애플리케이션의 기존 설치를 확인할 수 있다. 이에 응답하여 DIAL REST 서비스로부터 "200 OK"를 지시하는 메시지 (2)가 수신되는 경우, DIAL 클라이언트는 메시지 (3)의 전송을 진행할 수 있다. 그러나, 상이한 메시지 (2)가 수신되는 경우, DIAL 클라이언트는 도 10, 도 11a, 도 11b 및 표 2와 관련하여 아래에 더 설명되는 바와 같이 그에 따라 응답할 수 있다. 예를 들어, 특정 애플리케이션이 설치되지 않았지만 설치 가능한 경우, DIAL 클라이언트는 특정 애플리케이션의 설치를 시작하여, 확인의 성공을 가능하게 할 수 있다.
일 실시예에서, 도 7의 메시지 (3)에 표시된 바와 같이, 디스커버리 서비스 상의 애플리케이션 론치를 시도하는 디스커버리 클라이언트는 HTTP POST 요청 형태의 애플리케이션 론치 요청을 원하는 애플리케이션에 대한 애플리케이션 자원 URL로 전송하며, 그 일례가 도 8에 도시되어 있다. 일 실시예에서, 어떤 애플리케이션들이 본 명세서에서의 방법들을 이용하여 론치될 수 있는지는 디스커버리 서버를 구현하고 있는 당사자의 재량으로 구성된다. 다양한 실시예들에서, 디스커버리 서버는 제1 스크린 디바이스 상에서 실행되는 하나의, 일부 또는 모든 애플리케이션들이 본 명세서에서의 기술들을 이용하여 호출되게 할 수 있다. POST 요청의 메시지 본문은 비어 있을 수 있거나, 론치 시에 애플리케이션으로 전달될 인수 스트링(argument string)을 포함할 수 있다. 일 실시예에서, POST 요청의 메시지 본문이 비어 있지 않은 경우, MIME 타입은 "텍스트/평문"이고, 문자 인코딩은 통상적으로 UTF-8이며, 문자 인코딩은 "charset" MIME 파라미터를 포함함으로써 명시적으로 지시된다.
다양한 실시예들에서, 인수 스트링이 애플리케이션으로 전달되는 방법은 다양한 플랫폼들 및 애플리케이션들에서 상이하게 구현될 수 있으며, 중요하지 않거나 본 발명의 범위 내에 있지 않다. 인수의 포맷은 론치되는 애플리케이션의 요구들과 매칭되어야 한다. 예를 들어, 키 값 쌍들인 JSON 또는 XML이 사용될 수 있으며, 인수 포맷의 특정 선택은 중요하지 않다. 일 실시예에서, 디스커버리 서버는 인수 스트링을 직접 애플리케이션으로 전달할 수 있으며, 애플리케이션들은 임의의 보안 체크들이 행해진 것으로 추정하지 않는다. 따라서, 애플리케이션들은 통상적으로 인수 데이터에 대해 그들 자신의 보안 체크들을 행한다. 예시적인 보안 체크들은 문자 인코딩 체크들을 포함한다.
유효 POST 요청의 수신에 응답하여, 디스커버리 서버는 먼저 POST URL로부터 애플리케이션 명칭을 추출한다. POST URL이 무효이거나 애플리케이션 명칭을 추출하기 위해 처리될 수 없는 경우, 디스커버리 서버는 HTTP 프로토콜 사양에서 지정된 바와 같은 HTTP 응답 코드를 반환한다.
일 실시예에서, 도 7의 메시지(4)에 도시된 바와 같이, 디스커버리 서비스는 애플리케이션 론치 응답을, 도 8에 그 예가 도시되는, HTTP 응답의 형태로 디스커버리 클라이언트에게 전송한다. 디스커버리 서버는: 애플리케이션 명칭이 인식되는지 여부; 메시지 본문의 내용 길이가 디스커버리 서버에서 지원하는 최대 크기를 초과하는지 여부; 미착수(Not Started)(애플리케이션이 실행중이지 않음), 시작중(Starting)(애플리케이션이 또 다른 DIAL REST 서비스 요청으로 인해 또는 또 다른 이유로 재시작을 겪고 있음)을 포함하는 현재 애플리케이션 상태; 실행중(Running)(애플리케이션이 실행중); 메시지 본문이 비어 있는지 여부와 같은 팩터들에 따라 복수의 응답 액션을 수행한다. 특정 응답 액션은 애플리케이션 론치 응답에 반영될 수 있다. 표 1은 일 실시예에서 구현될 수 있는 액션들을 요약한 것이다.
우선 순위 애플리케이션이 인식되었나 메시지 본문 애플리케이션
상태
액션
1 아니오 임의의 것 n/a 404 미발견
2 너무 길다 n/a 413 너무 큰 요청 엔티티
3 비어 있다 실행중이지 않다 201 시작 애플리케이션이 작성됨
4 비어 있지 않다 실행중이지 않다 201 만약에 있다면, 인수가 제공된 시작 애플리케이션 작성
5 비어 있다 시작중 액션 없음
6 비어 있지 않다 시작중 액션 없음
7 비어 있다 실행중 액션 없음
8 비어 있지 않다 실행중 애플리케이션에 새로운 인수를 제공
애플리케이션 시작 액션들
애플리케이션이 위에서 지정된 액션 후에 실행중인 경우, 디스커버리 서버는 도 7에서 메시지(4)에 의해 도시된 바와 같이, 응답 코드 201 작성됨(Created)을 갖는 HTTP 응답을 리턴한다. 이 경우, 응답 헤더는 애플리케이션 인스턴스 URL을 나타내는, 애플리케이션의 실행중인 인스턴스를 식별하는 절대 URL를 포함한다. URL의 호스트 부분은 IP 주소이거나 IP 주소로 분해하고, 응답 본문은 널(null)이다.
그렇지 않으면 - 예를 들어, 애플리케이션이 성공적으로 시작하거나 재시작할 수 없는 경우에 - , 디스커버리 서버는 응답 코드 503 서비스 사용불가(Service Unavailable)를 갖는 HTTP 응답을 리턴한다. 다양한 실시예에서, 애플리케이션이 이미 실행중이고 인수(argument)가 제공되고, 제1 스크린 디바이스가 실행중인 애플리케이션에 새로운 인수의 제공을 지원하지 않는 경우에, 애플리케이션은 새로운 인수로 재시작될 수 있다. 또한, 애플리케이션을 실행하기 위해, 호스트 시스템은 일반적으로 논-블로킹 형태의 포크(fork), 실행(exec), 스폰(spawn), 또는 임의의 즉각적인 시스템 에러를 잡아내서 HTTP 503 서비스 사용불가 에러(Service Unavailable error)를 리턴하게 하는 등가물을 사용한다. 어떠한 에러도 발생하지 않고 애플리케이션을 실행하는 시스템 명령이 성공하는 경우에, 애플리케이션은 본원의 용도에 맞게 실행된다. 따라서, 애플리케이션 론치 응답 메시지 (4)에서 404 미발견(Not Found) 또는 503 서비스 사용불가(Service Unavailable)의 수신은 특정 애플리케이션의 가용성을 나타낼 수 있음에 따라, 도 7의 메시지들 (1) 및 (2)에서 특정 애플리케이션의 기존 설치를 위한 체크는 선택적으로 생략될 수 있다.
본 명세서에서 더 설명된 바와 같이, 애플리케이션 인스턴스 URL은 그에 관한 정보를 요청하고, 애플리케이션의 실행중인 인스턴스를 중지하는데 사용될 수 있다.
6.3 애플리케이션 중지(Stopping an Application)
일 실시예에서, 디스커버리 서버에서 애플리케이션의 실행중인 인스턴스를 중지하려고 시도하는 디스커버리 클라이언트는 애플리케이션 인스턴스 URL에 HTTP DELETE 요청을 전송한다. 일 실시예에서, 디스커버리 서버는 애플리케이션 인스턴스를 중지하는 것을 허용하기 위해 HTTP DELETE 요청을 선택적으로 지원한다. DELETE 요청이 지원되지 않는 경우, 디스커버리 서버는 응답 코드 501 미구현(Not Implemented)을 갖는 HTTP 응답을 리턴한다. HTTP DELETE 요청이 지원되는 경우, DELETE 요청의 수신에 응답하여, 디스커버리 서버는 먼저 요청의 URL이 실행중인 애플리케이션 인스턴스에 대응하는지 여부를 결정한다. 그렇다면, 디스커버리 서버는 HTTP 사양에 정의된 대로 적절한 HTTP 응답 코드를 갖는 응답을 전송한다. 제공된 URL가 현재 실행중인 애플리케이션 인스턴스에 대응하지 않는 경우, 서버는 응답 코드 404 미발견(Not Found)을 갖는 HTTP 응답을 리턴한다.
그렇지 않으면, 디스커버리 서버가 응답 코드 200 OK를 갖는 HTTP 응답을 전송하고, 실행중인 애플리케이션하는데, 이러한 동작들은 비동기적으로 수행될 수 있다.
6.4 애플리케이션 정보에 대한 조회(Querying for Application Information)
일 실시예에서, 애플리케이션에 관한 정보를 발견하기를 희망하는 디스커버리 클라이언트는, 상기 섹션 6.1에서 설명된 바와 같이, 애플리케이션 리소스 URL에 HTTP GET 요청을 전송한다. 도 10은 애플리케이션 정보 요청(Application Information Request)을 도시한다.
일 실시예에서, 이러한 GET 요청의 수신에 응답하여, 디스커버리 서버는 먼저 요청 URL로부터 애플리케이션 이름(Application Name)을 추출한다. GET 요청이 유효하지 않거나 애플리케이션 이름을 추출하기 위해 처리될 수 없는 경우에, 디스커버리 서버는 HTTP 사양에 정의된 대로 적절한 HTTP 응답 코드를 리턴한다.
애플리케이션 이름이 인식되지 않은 경우, 서버는 응답 코드 404 미발견(Not Found)을 갖는 HTTP 응답을 리턴한다.
그렇지 않으면, 디스커버리 서버는, 도 11b에 그 예가 도시되는, 응답 코드 200 OK를 갖는 HTTP 응답의 형태로 애플리케이션 정보 응답을 전송한다. 응답의 MIME 유형은 "text/xml"일 수 있고, 문자 인코딩은 UTF-8일 수 있으며, "charset" MIME 파라미터를 사용하여 표시될 수 있다. XML 문서는, 디스커버리 클라이언트가 인식되지 않은 XML 요소와 속성을 무시하도록 구성되어 있다는 것을 제외하고, 도 11a에 명시된 스키마를 준수할 수 있다. 표 2는 하나의 예시적인 실시예에 대한 스키마의 의미를 요약한 것이다.
요소 또는 속성 정의
Name 애플리케이션 이름을 포함한다
Options
@allowStop 참(true)인 경우, 위에서 설명한 DELETE 동작이 지원된다는 것을 나타낸다. 거짓(false)인 경우, DELETE 동작이 지원되지 않는다는 것을 나타낸다.
State "running"은 애플리케이션이 설치되고 실행중이라는 것을 나타낸다.
"stopped"은 애플리케이션이 설치되고 실행중이지 않다는 것을 나타낸다. 문자열 도입부 "installable="는 애플리케이션이 설치되지 않았지만 설치를 위해 사용가능하다는 나타낸다. 임의의 다른 값은 유효하지 않고 무시된다.
Link
애플리케이션이 실행중일 때 선택적인 요소가 포함되어야 한다. 예외는, 애플리케이션의 중지가 지원되지 않을 때이고; 이러한 경우에, <link>는 제공될 필요가 없다. "rel" 속성의 값은 "run"이다. "href" 속성은 "run" 또는 "pid-25352"와 같은 실행 애플리케이션의 리소스 이름을 포함한다. 이러한 이름은 일반적으로 201 작성(Created) 응답으로 리턴된 이름의 마지막 부분과 매치한다.
애플리케이션 정보 스키마 요약
6.5 애플리케이션의 설치 트리거
일 실시예에서, 디스커버리 서버는 현재 설치되어 있지 않은 특정 애플리케이션에 대한 애플리케이션 설치의 클라이언트 트리거를 지원할 수 있다.
일 실시예에서, 애플리케이션 이름이 인식되고, 애플리케이션은 설치되지 않으며, 디스커버리 서버가 이러한 특정 애플리케이션에 대한 애플리케이션 설치의 클라이언트 트리거를 지원하지 않는 경우에, 디스커버리 서버는 문자열 "installable="를 갖는 "state" 요소 도입부를 리턴한다. 요소의 나머지 부분은 절대 URL이 포함되어 있다. URL의 호스트 부분은 IP 주소이거나 IP 주소로 분해한다. 그 후, 디스커버리 클라이언트는 지정된 URL에 HTTP GET 요청을 전송하여 디스커버리 서버에 애플리케이션의 설치를 개시할 수 있다.
디스커버리 서버에서 이러한 요청의 수신에 응답하여, 애플리케이션 이름이 인식되고, 애플리케이션이 설치되지 않으며, 디스커버리 서버가 지정된 애플리케이션 이름에 대한 애플리케이션 설치의 트리거를 지원하지 않는 경우에, 디스커버리 서버는 응답 코드 404 미발견(Not found)을 갖는 HTTP 응답을 리턴한다.
일 실시예에서, 애플리케이션이 설치가능한 경우에, 디스커버리 클라이언트는, GET 요청을 통해 제공되는 설치가능한 URL을 요청할지 여부를 선택할 수 있다. 예를 들어, 디스커버리 클라이언트가 실행중인 동일한 컴퓨터에서 호스팅되는 제2 스크린 애플리케이션은 "애플리케이션이 설치되어 있지 않습니다. 그것을 지금 설치하시겠습니까?"와 같은 사용자 인터페이스 메시지를 생성할 수 있다. 제1 스크린 디바이스가 설치 요청을 처리하는 프로세스는 본 발명의 범위 외의 것이고, 다양한 옵션은 마켓 또는 구매 시설에서 애플리케이션의 즉각적인 설치, 애플리케이션의 제시 등을 포함한다.
7.0 디스커버리 레지스트리(DISCOVERY REGISTRY)
일 실시예에서, 각 애플리케이션에 대한 정확한 이름이 잘 정의되도록 보장하고, 명명 충돌(naming conflicts)을 방지하기 위해, 애플리케이션 이름은 다이얼 레지스트리(DIAL Registry)라고 하는 데이터 리포지토리에 등록된다. 일 실시예에서, 서비스 제공자는, 본 명세서에서 설명된 바와 같은 디스커버리 서버나 디스커버리 클라이언트를 구현하는 임의의 다른 측(party)에 사용가능한 레지스트리를 유지한다. 애플리케이션 이름은 명시적으로 등록될 수도 있고, 공통 접두사를 갖는 애플리케이션 이름의 집합은 단지 애플리케이션 접두사(Application Prefix)만을 등록하여 등록될 수 있다.
일 실시예에서, 각 애플리케이션 이름 및 애플리케이션 접두사는, 위에서 언급된, 버너스-리(Berners-Lee)에서 설명된 "pchar" 생산(RFC 3986)과 매치하는 문자의 시퀀스로 구성되어 있다. 일부 실시예에서, 애플리케이션 접두사는, 예를 들어, "Acme", "com.acme" 등의 인식가능한 회사 이름을 포함한다.
일 실시예에서, 애플리케이션이 마켓에서 실제로 사용가능하고 이전에 등록 된 이름이나 접두사와 충돌이 없는 경우에, 애플리케이션 이름이 등록될 수 있다. 접두사 내의 회사 이름이 그들을 마켓으로 실어 나르는 애플리케이션들이나 디바이스들을 활발히 전달하고 있는 경우에, 애플리케이션 접두사가 등록될 수 있다. 이전 등록들과 혼동될 수 있거나 본 명세서에 설명된 디스커버리 서비스들을 위한 것이 아닌 이름들 또는 접두사들은 등록되어서는 안 된다.
8.0 구현 예 - 하드웨어 개요
도 12는 본 발명의 실시예가 구현될 수 있는 컴퓨터 시스템(1200)을 도시하는 블록도이다. 컴퓨터 시스템(1200)은 버스(1202) 또는 정보 통신을 위한 다른 통신 메커니즘, 및 정보를 처리하기 위한 버스(1202)와 결합된 프로세서(1204)를 포함한다. 컴퓨터 시스템(1200)은 또한 정보 및 프로세서(1204)에 의해 실행될 명령어들을 저장하기 위한 버스(1202)에 결합된, 랜덤 액세스 메모리(RAM) 또는 다른 동적 저장 디바이스와 같은, 메인 메모리(1206)를 포함한다. 메인 메모리(1206)는 또한 프로세서(1204)에 의해 실행될 명령어들의 실행 동안 일시적 변수 또는 다른 중간 정보를 저장하기 위해 사용될 수 있다. 컴퓨터 시스템(1200)은 또한 프로세서(1204)에 대한 정적 정보와 명령어들을 저장하기 위한 버스(1202)에 결합된 판독 전용 메모리(ROM)(1208) 또는 다른 정적 저장 디바이스를 포함한다. 자기 디스크 또는 광학 디스크와 같은 저장 디바이스(1210)는 정보와 명령어들을 저장하기 위해 제공되고 버스(1202)에 결합된다.
컴퓨터 시스템(1200)은, 컴퓨터 사용자에게 정보를 표시하기 위한, 음극선관(CRT)과 같은, 디스플레이(1212)에 버스(1202)를 통해 결합될 수 있다. 문자 숫자식(alphanumeric) 및 다른 키를 포함하는 입력 디바이스(1214)는 프로세서(1204)에 정보와 명령 선택을 전달하기 위한 버스(1202)에 결합된다. 사용자 입력 디바이스의 또 다른 유형은, 마우스, 트랙볼, 또는 프로세서(1204)에 방향 정보와 명령 선택을 전달하고, 디스플레이(1212)에서 커서 이동을 제어하기 위한 커서 방향키와 같은 커서 컨트롤(1216)이다. 이러한 입력 디바이스는 일반적으로 디바이스로 하여금 평면에서 위치를 지정하게 하는 2개의 축, 즉, 제1 축(예컨대, x) 및 제2 축(예컨대, y)에서 2개의 자유도를 갖는다.
본 발명은 본 명세서에 설명된 기법들을 구현하기 위한 컴퓨터 시스템(1200)의 사용과 관련되어 있다. 본 발명의 하나의 실시예에 따르면, 이러한 기법들은 메인 메모리(1206)에 포함된 하나 이상의 명령어의 하나 이상 시퀀스를 실행하는 프로세서(1204)에 응답하여 컴퓨터 시스템(1200)에 의해 수행된다. 이러한 명령어들은, 저장 디바이스(1210)와 같은, 또 다른 머신-판독가능한 매체로부터 메인 메모리(1206)로 판독될 수 있다. 메인 메모리(1206)에 포함된 명령어들의 시퀀스의 실행은 프로세서(1204)로 하여금 본 명세서에서 설명된 프로세스 단계들을 수행하게 한다. 대안적인 실시예에서, 하드-와이어드 회로가 본 발명을 구현하기 위해 소프트웨어 명령어들 대신에 또는 그들과 조합하여 사용될 수 있다. 따라서, 본 발명의 실시예들은 하드웨어 회로와 소프트웨어의 임의의 특정 조합으로 제한되지 않는다.
본 명세서에서 사용된 용어 "머신-판독가능한 매체(machine-readable medium)"는 머신이 특정 방식으로 동작하게 하는 데이터를 제공하는데 있어서 참여하는 임의의 매체를 지칭한다. 컴퓨터 시스템(1200)을 사용하여 구현된 일 실시예에서, 예를 들어, 실행을 위해 프로세서(1204)에 명령어들을 제공하는데 있어서 다양한 머신-판독가능한 매체가 관여된다. 이러한 매체는, 이로 제한되는 것은 아니지만, 저장 매체와 전송 매체를 포함하는 많은 형태를 취할 수 있다. 저장 매체는 비-휘발성 매체와 휘발성 매체 모두를 포함한다. 비-휘발성 매체는, 예를 들어, 저장 디바이스(1210)와 같은, 광학 또는 자기 디스크를 포함한다. 휘발성 매체는, 메인 메모리(1206)와 같은, 동적 메모리를 포함한다. 전송 매체는 버스(1202)를 구성하는 와이어를 포함하는 동축 케이블, 구리 와이어 및 광섬유를 포함한다. 전송 매체는 또한 라디오-파 및 적외선 데이터 통신 동안 생성되는 것과 같은, 음파 또는 광파의 형태를 취할 수 있다. 이러한 모든 매체는, 매체에 의해 운반된 명령어들이, 머신으로 명령어들을 판독하는 물리적 메커니즘에 의해 검출되는 것을 가능하게 하기 위해 유형이어야 한다.
머신-판독가능한 매체의 일반적인 형태는, 예를 들어, 플로피 디스크, 플렉서블 디스크, 하드 디스크, 자기 테이프, 또는 임의의 다른 자기 매체, CD-ROM, 임의의 다른 광학 매체, 펀치카드(punchcards), 페이퍼테이프(papertape), 홀의 패턴을 갖는 임의의 다른 물리적 매체, RAM, PROM, 및 EPROM, FLASH-EPROM, 임의의 다른 메모리 칩 또는 카트리지, 이하에 설명된 바와 같은 반송파, 또는 컴퓨터가 판독할 수 있는 임의의 다른 매체를 포함한다.
다양한 형태의 머신-판독가능한 매체는 실행을 위한 프로세서(1204)에 하나 이상의 명령어들의 하나 이상의 시퀀스를 운반하는데 관여할 수 있다. 예를 들어, 명령어들은 초기에 원격 컴퓨터의 자기 디스크 상에 소지되어 있을 수 있다. 원격 컴퓨터는 그의 동적 메모리로 명령어들을 로드하고, 모뎀을 사용하여 전화 회선을 통해 명령어들을 전송할 수 있다. 컴퓨터 시스템(1200)에 로컬 모뎀은 전화 회선에서 데이터를 수신하고, 적외선 송신기를 사용하여 데이터를 적외선 신호로 변환할 수 있다. 적외선 검출기는 적외선 신호로 운반된 데이터를 수신할 수 있고, 적절한 회로는 데이터를 버스(1202)에 배치할 수 있다. 버스(1202)는, 프로세서(1204)가 그로부터 명령어들을 검색하고 실행하는, 메인 메모리(1206)에 데이터를 운반한다. 메인 메모리(1206)에 의해 수신된 명령어들은 프로세서(1204)에 의한 실행 전이나 후에 선택적으로 저장 디바이스(1210)에 저장될 수 있다.
컴퓨터 시스템(1200)은 또한 버스(1202)에 결합된 통신 인터페이스(1218)를 포함한다. 통신 인터페이스(1218)는 로컬 네트워크(1222)에 접속되는 네트워크 링크(1220)에 결합하는 양방향 데이터 통신을 제공한다. 예를 들어, 통신 인터페이스(1218)는, 대응하는 유형의 전화 회선에 데이터 통신 접속을 제공하는, 통합 서비스 디지털 네트워크(ISDN) 카드 또는 모뎀일 수 있다. 또 다른 예로서, 통신 인터페이스(1218)는 호환가능한 LAN에 데이터 통신 접속을 제공하는 로컬 영역 네트워크(LAN) 카드일 수 있다. 무선 링크 또한 구현될 수 있다. 이러한 임의의 구현에서, 통신 인터페이스(1218)는 정보의 다양한 유형을 표현하는 디지털 데이터 스트림을 운반하는 전기, 전자기 또는 광학 신호를 전송 및 수신한다.
네트워크 링크(1220)는 일반적으로 다른 데이터 디바이스에 하나 이상의 네트워크를 통해 데이터 통신을 제공한다. 예를 들어, 네트워크 링크(1220)는 인터넷 서비스 공급자(ISP)(1226)에 의해 동작된 데이터 장비에 또는 호스트 컴퓨터(1224)에 로컬 네트워크(1222)를 통해 접속을 제공할 수 있다. 그 다음 ISP(1226)는 현재 일반적으로 "인터넷"(1228)이라고 불리는 월드 와이드 패킷 데이터 통신 네트워크를 통해 데이터 통신 서비스를 제공한다. 로컬 네트워크(1222) 및 인터넷(1228) 둘 다 디지털 데이터 스트림을 운반하는 전기, 전자기 또는 광학 신호를 사용한다. 컴퓨터 시스템(1200)으로 및 그로부터 디지털 데이터를 운반하는, 다양한 네트워크를 통한 신호들, 및 네트워크 링크(1220) 상의 신호들과 통신 인터페이스(1218)를 통한 신호들은 정보를 수송하는 반송파의 예시적인 형태이다.
컴퓨터 시스템(1200)은 메시지를 전송하고, 네트워크(들), 네트워크 링크(1220) 및 통신 인터페이스(1218)를 통해, 프로그램 코드를 포함하는, 데이터를 수신할 수 있다. 인터넷의 예에서, 서버(1230)는 인터넷(1228), ISP(1226), 로컬 네트워크(1222) 및 통신 인터페이스(1218)를 통해 애플리케이션 프로그램에 대한 요청 코드를 송신할 수 있다.
수신된 코드는, 코드가 수신되고, 및/또는 저장 디바이스(1210)에 또는 추후 실행을 위해 다른 비-휘발성 저장소에 저장되는 경우에, 프로세서(1204)에 의해 실행될 수 있다. 이러한 방식으로, 컴퓨터 시스템(1200)은 반송파의 형태로 애플리케이션 코드를 얻을 수 있다.
9.0 개시의 다른 양태들(OTHER ASPECTS OF DISCLOSURE)
전술한 명세서에서, 본 발명의 실시예들은 구현에 따라 다를 수 있는 수많은 구체적인 세부 사항을 참조하여 설명되었다. 따라서, 단독의 독점적인 표시자의 본 발명이 무엇인지, 그리고 출원인에 의해 무엇이 본 발명이라고 의도되는지는 임의의 후속 보정이 포함되는 이러한 청구항들이 공표하는 특정 형태로 된 본 출원에서 공표하는 청구항들의 집합이다. 그러한 청구항들에 포함된 용어들에 대해 본 명세서에서 분명히 설명한 임의의 정의는 청구항들에서 사용되는 용어들의 의미를 좌우한다. 따라서, 청구항에서 분명히 인용되지 않은 제한, 요소, 속성, 특징, 장점 또는 특성은 어떤 식으로든 그러한 청구항들의 범위를 제한해서는 안 된다. 명세서 및 도면은, 따라서, 제한적인 의미보다는 예시적인 것으로 간주될 것이다.
본 명세서에서 설명된 요지에 대한 양태들은 다음과 같이 넘버링된 조항들(clauses)에 명시되어 있다:
1. 네트워크에서 디스커버리 요청(discovery request)을 개시하는 단계; 상기 디스커버리 요청에 응답하여, 제1 스크린 디바이스 상의 디스커버리 서버를 식별하는 디스커버리 응답을 수신하는 단계; 상기 제1 스크린 디바이스 상에서 특정 애플리케이션의 론치를 야기시키기 위해 상기 디스커버리 서버에 론치 요청을 전송하는 단계; 제2 스크린 디바이스 상에서 실행되는 로컬 애플리케이션에 대한 상기 특정 애플리케이션을 식별하는 단계; 및 상기 네트워크를 통해, 상기 로컬 애플리케이션과 상기 특정 애플리케이션 사이의 상호 작용을 야기시키는 단계를 포함하는 방법으로서, 상기 방법은 하나 이상의 컴퓨팅 디바이스에서 수행된다.
2. 조항 1의 방법에서, 상기 하나 이상의 컴퓨팅 디바이스는 상기 제2 스크린 디바이스이다.
3. 조항 1-2 중 어느 하나의 방법에서, 상기 상호 작용은 상기 특정 애플리케이션을 사용하여 상기 제1 스크린 디바이스 상에서 무비를 표시하는 것을 포함하고, 상기 무비는 상기 로컬 애플리케이션을 사용하여 선택된다.
4. 조항 1-3 중 어느 하나의 방법에서, 상기 상호 작용은 상기 특정 애플리케이션을 사용하여 상기 제1 스크린 디바이스 상에서 비디오를 표시하는 것을 포함하고, 상기 비디오는 로컬 애플리케이션에 대응하는 네트워크 주소를 상기 로컬 애플리케이션으로부터 상기 특정 애플리케이션으로 전달함으로써 선택된다.
5. 조항 4의 방법에서, 상기 특정 애플리케이션은 상기 비디오의 표시 이후에 종료한다.
6. 조항 1-5 중 어느 하나의 방법에서, 상기 특정 애플리케이션은 상기 제1 스크린 디바이스의 웹 브라우저 내에서 실행하는 브라우저 기반 애플리케이션이고, 상기 론치 요청은 상기 브라우저 기반 애플리케이션의 네트워크 주소를 지정한다.
7. 조항 6의 방법에서, 상기 브라우저 기반 애플리케이션의 상기 네트워크 주소는 상기 네트워크 외부의 클라우드 주소이다.
8. 조항 1-7 중 어느 하나의 방법에서, 상기 론치 요청을 전송하는 단계에 앞서, 상기 디스커버리 서버에 애플리케이션 정보 요청을 전송하고, 상기 디스커버리 서버로부터 애플리케이션 정보 응답을 체크함으로써, 상기 특정 애플리케이션의 가용성을 확인하는 단계를 더 포함한다.
9. 조항 8의 방법에서, 상기 애플리케이션 정보 응답의 체크는, 상기 특정 애플리케이션이 설치되지 않았지만 설치가능하다는 것을 나타내고, 상기 확인하는 단계는 상기 특정 애플리케이션의 설치를 개시하는 것에 응답하여 이루어진다.
10. 조항 1-9 중 어느 하나의 방법에서, 상기 네트워크는 로컬 네트워크이다.
11. 조항 1-10 중 어느 하나의 방법에서, 상기 디스커버리 서버는 복수의 디스커버리 서버로부터 선택된다.
12. 조항 1-11 중 어느 하나의 방법에서, 상기 디스커버리 응답은 상기 디스커버리 서버의 위치와 이름을 식별한다.
13. 조항 1-12 중 어느 하나의 방법에서, 상기 디스커버리 요청은 UPnP(Universal Plug and Play)를 사용하여 전송된다.
14. 조항 1-13 중 어느 하나의 방법에서, 상기 론치 요청은 하나 이상의 지정된 파라미터 값을 더 포함한다.
15. 조항 1-14 중 어느 하나의 방법에서, 상기 제1 스크린 디바이스는 텔레비전, 셋톱 박스, 게임 콘솔, 디지털 비디오 레코더, 디스크 플레이어, 또는 시청각 프로그램의 시각적 디스플레이를 주로 재생하거나 생성할 수 있는 유사한 디바이스 중 임의의 것을 포함한다.
16. 조항 1-15 중 어느 하나의 방법에서, 상기 제2 스크린 디바이스는 스마트 폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북 컴퓨터, 또는 기타 범용 컴퓨팅 디바이스나 워크스테이션 중 임의의 것을 포함한다.
17. 실행될 때, 하나 이상의 프로세서가, 조항 1-16에서 인용된 방법들 중 어느 하나를 수행하게 하는 명령어들의 하나 이상의 시퀀스를 저장하는 비-일시적 컴퓨터-판독가능한 데이터 저장 매체.
18. 하나 이상의 프로세서에서 구현될 때, 조항 1-16의 방법들 중 어느 하나를 수행하는 명령어들을 포함하는 컴퓨터 프로그램 제품.
19. 조항 1-16의 방법들 중 어느 하나를 수행하도록 구성된 프로세서를 포함하는 제2 스크린 컴퓨팅 디바이스.

Claims (15)

  1. 방법으로서,
    네트워크에서 디스커버리 요청(discovery request)을 개시하는 단계;
    상기 디스커버리 요청에 응답하여, 제1 스크린 디바이스 상의 디스커버리 서버를 식별하는 디스커버리 응답을 수신하는 단계;
    상기 제1 스크린 디바이스 상에서 특정 애플리케이션의 론치(launching)를 야기시키기 위해 상기 디스커버리 서버에 론치 요청을 전송하는 단계;
    제2 스크린 디바이스 상에서 실행되는 로컬 애플리케이션에 대한 상기 특정 애플리케이션을 식별하는 단계; 및
    상기 네트워크를 통해, 상기 로컬 애플리케이션과 상기 특정 애플리케이션 사이의 상호 작용을 야기시키는 단계
    를 포함하고,
    상기 방법은 하나 이상의 컴퓨팅 디바이스를 사용하여 수행되는 방법.
  2. 제1항에 있어서, 상기 하나 이상의 컴퓨팅 디바이스 중 하나의 컴퓨팅 디바이스는 상기 제2 스크린 디바이스인 방법.
  3. 제1항에 있어서, 상기 상호 작용은 상기 특정 애플리케이션을 사용하여 상기 제1 스크린 디바이스 상에서 무비(movie)를 표시(showing)하는 것을 포함하고, 상기 무비는 상기 로컬 애플리케이션을 사용하여 선택되는 방법.
  4. 제1항에 있어서, 상기 상호 작용은 상기 특정 애플리케이션을 사용하여 상기 제1 스크린 디바이스 상에서 비디오를 표시하는 것을 포함하고, 상기 비디오는 상기 로컬 애플리케이션에 대응하는 네트워크 주소를 상기 로컬 애플리케이션으로부터 상기 특정 애플리케이션으로 전달함으로써 선택되는 방법.
  5. 제4항에 있어서, 상기 특정 애플리케이션은 상기 비디오의 표시 이후에 종료되는 방법.
  6. 제1항에 있어서, 상기 특정 애플리케이션은 상기 제1 스크린 디바이스의 웹 브라우저 내에서 실행되는 브라우저 기반 애플리케이션이고, 상기 론치 요청은 상기 브라우저 기반 애플리케이션의 네트워크 주소를 지정하는 방법.
  7. 제6항에 있어서, 상기 브라우저 기반 애플리케이션의 상기 네트워크 주소는 상기 네트워크 외부의 클라우드 주소 또는 로컬 주소 중 하나인 방법.
  8. 제1항에 있어서, 상기 론치 요청을 전송하는 단계에 앞서, 상기 디스커버리 서버에 애플리케이션 정보 요청을 전송하고 상기 디스커버리 서버로부터의 애플리케이션 정보 응답을 체크함으로써, 상기 특정 애플리케이션의 가용성을 확인하는 단계를 더 포함하는 방법.
  9. 제8항에 있어서, 상기 애플리케이션 정보 응답의 체크는, 상기 특정 애플리케이션이 설치되어 있지 않지만 설치가능하다는 것을 나타내고, 상기 확인하는 단계는 상기 특정 애플리케이션의 설치를 개시하는 것에 응답하여 이루어지는 방법.
  10. 제1항에 있어서, 상기 디스커버리 서버는 복수의 디스커버리 서버로부터 선택되는 방법.
  11. 제1항에 있어서, 상기 디스커버리 요청은 UPnP(Universal Plug and Play)를 사용하여 전송되고, 상기 디스커버리 응답은 상기 디스커버리 서버의 위치와 이름을 식별하는 방법.
  12. 제1항에 있어서, 상기 론치 요청은 하나 이상의 지정된 파라미터 값을 더 포함하는 방법.
  13. 제1항에 있어서, 상기 제1 스크린 디바이스는 텔레비전, 셋톱 박스, 게임 콘솔, 디지털 비디오 레코더, 디스크 플레이어, 또는 시청각 프로그램의 시각적 디스플레이를 주로 재생하거나 또는 생성할 수 있는 유사한 디바이스 중 임의의 것을 포함하고, 상기 제2 스크린 디바이스는 스마트 폰, 태블릿 컴퓨터, 랩톱 컴퓨터, 넷북 컴퓨터, 또는 기타 범용 컴퓨팅 디바이스나 워크스테이션 중 임의의 것을 포함하는 방법.
  14. 제1항 내지 제13항 중 어느 한 항의 방법을 수행하도록 구성된 하나 이상의 디바이스를 포함하는 장치.
  15. 하나 이상의 프로세서에 의해 실행될 때, 제1항 내지 제13항 중 어느 한 항의 방법의 수행을 야기시키는 명령어들을 포함하는 컴퓨터-판독가능한 저장 매체.
KR1020130075982A 2012-06-28 2013-06-28 애플리케이션 디스커버리 KR102109985B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261665827P 2012-06-28 2012-06-28
US61/665,827 2012-06-28
US201261675756P 2012-07-25 2012-07-25
US61/675,756 2012-07-25
US13/827,720 US10931735B2 (en) 2012-06-28 2013-03-14 Application discovery
US13/827,720 2013-03-14

Publications (2)

Publication Number Publication Date
KR20140001798A true KR20140001798A (ko) 2014-01-07
KR102109985B1 KR102109985B1 (ko) 2020-05-12

Family

ID=48747371

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130075982A KR102109985B1 (ko) 2012-06-28 2013-06-28 애플리케이션 디스커버리

Country Status (7)

Country Link
US (1) US10931735B2 (ko)
EP (1) EP2680500B1 (ko)
JP (1) JP6396005B2 (ko)
KR (1) KR102109985B1 (ko)
AU (2) AU2013206552B2 (ko)
CA (1) CA2820342C (ko)
DK (1) DK2680500T3 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150135959A (ko) * 2014-05-26 2015-12-04 삼성전자주식회사 무선 통신 시스템에서 응용 프로그램 실행 방법 및 장치
KR20180096737A (ko) * 2015-12-21 2018-08-29 오픈티브이 인코포레이티드 제2 스크린 장치 상의 대화형 어플리케이션 관리자
US11006187B2 (en) 2013-09-23 2021-05-11 Samsung Electronics Co., Ltd. Method and apparatus for executing application in wireless communication system

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9565475B2 (en) * 2012-10-11 2017-02-07 Netflix, Inc. System and method for managing playback of streaming digital content
US9727321B2 (en) 2012-10-11 2017-08-08 Netflix, Inc. System and method for managing playback of streaming digital content
US9769503B2 (en) * 2012-11-14 2017-09-19 Saturn Licensing Llc Information processor, information processing method and program
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
US11210076B2 (en) * 2013-01-28 2021-12-28 Samsung Electronics Co., Ltd. Downloading and launching an app on a second device from a first device
CN105594177B (zh) 2013-06-06 2019-03-08 谷歌有限责任公司 用于呈现媒体内容的系统、方法以及介质
US9838241B2 (en) * 2014-02-06 2017-12-05 Avago Technologies General Ip (Singapore) Pte. Ltd. Discovery of services over infrastructure networks
CN103856807A (zh) * 2014-03-25 2014-06-11 北京奇艺世纪科技有限公司 一种跨屏互动控制方法及装置
US20150319506A1 (en) 2014-04-30 2015-11-05 Netflix, Inc. Displaying data associated with a program based on automatic recognition
US10069832B2 (en) * 2014-11-14 2018-09-04 Google Llc Ephemeral applications
US9614828B1 (en) * 2015-01-05 2017-04-04 Amazon Technologies, Inc. Native authentication experience with failover
US9992307B2 (en) * 2015-02-03 2018-06-05 Google Llc Interoperability of discovery and connection protocols between client devices and first screen devices
EP3104577A1 (en) * 2015-06-09 2016-12-14 Thomson Licensing Method for launching a remote application, and corresponding communication device, system, computer readable program product and computer readable storage medium
WO2017059307A1 (en) 2015-09-30 2017-04-06 Sonifi Solutions, Inc. Methods and systems for enabling communications between devices
US10327035B2 (en) 2016-03-15 2019-06-18 Sonifi Solutions, Inc. Systems and methods for associating communication devices with output devices
GB2553295B (en) * 2016-08-25 2020-12-16 Samsung Electronics Co Ltd Managing communications between a broadcast receiver and a security module
US10628424B2 (en) 2016-09-15 2020-04-21 Oracle International Corporation Graph generation for a distributed event processing system
CN109716322B (zh) 2016-09-15 2023-03-21 甲骨文国际公司 用于微批次流传输的复杂事件处理
US10075838B2 (en) 2016-11-28 2018-09-11 Microsoft Technology Licensing, Llc Smart discovery of wireless receivers
EP3560192A4 (en) 2016-12-22 2020-07-22 Sonifi Solutions, Inc. METHODS AND SYSTEMS FOR IMPLEMENTING OLD REMOTE CONTROL AND BUTTON PRESSURE DEFLECTIONS
WO2018169429A1 (en) * 2017-03-17 2018-09-20 Oracle International Corporation Framework for the deployment of event-based applications
WO2018169430A1 (en) 2017-03-17 2018-09-20 Oracle International Corporation Integrating logic in micro batch based event processing systems
US10469474B2 (en) * 2017-05-23 2019-11-05 Google Llc Mobile assisted television sign in using discovery and launch protocol
FR3082983B1 (fr) * 2018-06-20 2020-05-22 Overkiz Procede de configuration d’une unite centrale de commande appartenant a une installation domotique
KR102509071B1 (ko) * 2018-08-29 2023-03-10 삼성전자주식회사 전자 장치 및 이의 외부 장치를 제어하는 방법
KR102502577B1 (ko) 2018-08-30 2023-02-22 삼성전자주식회사 외부 전자 장치 내에서 멀티미디어 콘텐트를 이어서 재생하기 위한 전자 장치 및 방법
US10779054B2 (en) * 2018-12-20 2020-09-15 Arris Enterprises Llc System and method for authentication and login portability for multiscreen discovery and launch of first screen content
CN109891385B (zh) * 2019-01-10 2023-02-10 福建联迪商用设备有限公司 一种安装pos机初始化配置信息的方法及终端
US11496414B2 (en) * 2019-03-18 2022-11-08 Tencent America LLC Interoperable cloud based media processing using dynamic network interface
CN111654753B (zh) * 2020-05-22 2022-06-03 青岛海信传媒网络技术有限公司 一种应用程序启动方法及显示设备
US11652894B2 (en) * 2020-09-08 2023-05-16 Arris Enterprises Llc Device capability over dial
CN114428618A (zh) * 2020-10-28 2022-05-03 华为技术有限公司 一种跨设备应用交互方法、电子设备与服务器
CN114697348B (zh) * 2020-12-25 2023-08-22 华为终端有限公司 分布式实现方法、分布式系统、可读介质及电子设备
CN114786058B (zh) * 2022-04-27 2024-02-06 南京欧珀软件科技有限公司 多媒体数据展示方法、装置、终端及存储介质
CN118377495A (zh) * 2023-01-20 2024-07-23 华为技术有限公司 应用程序安装方法和设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060258289A1 (en) * 2005-05-12 2006-11-16 Robin Dua Wireless media system and player and method of operation
US20090111453A1 (en) * 2007-10-31 2009-04-30 International Business Machines Corporation Auto-deploying an application from a mobile device to a host in a pervasive computing environment
JP2010160748A (ja) * 2009-01-09 2010-07-22 Nippon Hoso Kyokai <Nhk> ネットワーク制御装置およびコンピュータプログラム
US20120272148A1 (en) * 2011-04-21 2012-10-25 David Strober Play control of content on a display device

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020002039A1 (en) 1998-06-12 2002-01-03 Safi Qureshey Network-enabled audio device
US6725281B1 (en) * 1999-06-11 2004-04-20 Microsoft Corporation Synchronization of controlled device state using state table and eventing in data-driven remote device control model
AU2001260549A1 (en) * 2000-06-12 2001-12-24 Preworx (Proprietary) Limited System for controlling a display of the user interface of a software application
US6618593B1 (en) 2000-09-08 2003-09-09 Rovingradar, Inc. Location dependent user matching system
US7206853B2 (en) * 2000-10-23 2007-04-17 Sony Corporation content abstraction layer for use in home network applications
US6931429B2 (en) * 2001-04-27 2005-08-16 Left Gate Holdings, Inc. Adaptable wireless proximity networking
US8931010B2 (en) * 2002-11-04 2015-01-06 Rovi Solutions Corporation Methods and apparatus for client aggregation of media in a networked media system
US8028038B2 (en) 2004-05-05 2011-09-27 Dryden Enterprises, Llc Obtaining a playlist based on user profile matching
US8028323B2 (en) 2004-05-05 2011-09-27 Dryden Enterprises, Llc Method and system for employing a first device to direct a networked audio device to obtain a media item
US20060248121A1 (en) * 2005-04-15 2006-11-02 Michael Cacenco System and method for supporting packaging, publishing and republishing of wireless component applications
US9294729B2 (en) * 2006-01-19 2016-03-22 At&T Intellectual Property I, L.P. System and method for providing content over a television network
US8195650B2 (en) * 2007-02-28 2012-06-05 Samsung Electronics Co., Ltd. Method and system for providing information using a supplementary device
US8209398B2 (en) * 2006-03-16 2012-06-26 Exceptional Innovation Llc Internet protocol based media streaming solution
US7590703B2 (en) * 2006-03-27 2009-09-15 Exceptional Innovation, Llc Set top box for convergence and automation system
US8271881B2 (en) * 2006-04-20 2012-09-18 Exceptional Innovation, Llc Touch screen for convergence and automation system
WO2008087713A1 (ja) * 2007-01-16 2008-07-24 Mitsubishi Electric Corporation クライアント端末、アプリケーション提供サーバ及びアプリケーション提供システム
JP4737250B2 (ja) 2007-11-22 2011-07-27 ソニー株式会社 情報処理装置及び情報処理方法
US8250179B2 (en) * 2007-11-30 2012-08-21 At&T Intellectual Property I, L.P. Systems, methods, and computer products for providing podcasts via IPTV
US8234351B2 (en) * 2008-07-24 2012-07-31 Go Daddy Operating Company, LLC Systems for generating and registering enhanced domain names
US20110154270A1 (en) 2008-08-29 2011-06-23 Yasuyuki Sonoda Image display system, image display device, program, and recording medium
US9154942B2 (en) * 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
US8156530B2 (en) * 2008-12-17 2012-04-10 At&T Intellectual Property I, L.P. Method and apparatus for managing access plans
US20110145581A1 (en) * 2009-12-14 2011-06-16 Verizon Patent And Licensing, Inc. Media playback across devices
US8792429B2 (en) * 2010-12-14 2014-07-29 Microsoft Corporation Direct connection with side channel control
EP2772073B1 (en) * 2011-10-24 2019-01-09 Iot Holdings, Inc. Methods, systems and apparatuses for application service layer (asl) inter-networking
CN103975603A (zh) * 2011-12-08 2014-08-06 Lg电子株式会社 网络tv及其操作方法
JP5389195B2 (ja) * 2012-01-06 2014-01-15 株式会社東芝 情報処理システム、携帯端末及び情報処理方法
KR101952682B1 (ko) * 2012-04-23 2019-02-27 엘지전자 주식회사 이동 단말기 및 그 제어방법
TWI511537B (zh) * 2012-04-27 2015-12-01 Wistron Corp 智慧型電視系統、智慧型電視、行動裝置及其輸入操作方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060258289A1 (en) * 2005-05-12 2006-11-16 Robin Dua Wireless media system and player and method of operation
US20090111453A1 (en) * 2007-10-31 2009-04-30 International Business Machines Corporation Auto-deploying an application from a mobile device to a host in a pervasive computing environment
JP2010160748A (ja) * 2009-01-09 2010-07-22 Nippon Hoso Kyokai <Nhk> ネットワーク制御装置およびコンピュータプログラム
US20120272148A1 (en) * 2011-04-21 2012-10-25 David Strober Play control of content on a display device

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11006187B2 (en) 2013-09-23 2021-05-11 Samsung Electronics Co., Ltd. Method and apparatus for executing application in wireless communication system
US12034993B2 (en) 2013-09-23 2024-07-09 Samsung Electronics Co., Ltd. Method and apparatus for executing application in wireless communication system
KR20150135959A (ko) * 2014-05-26 2015-12-04 삼성전자주식회사 무선 통신 시스템에서 응용 프로그램 실행 방법 및 장치
KR20180096737A (ko) * 2015-12-21 2018-08-29 오픈티브이 인코포레이티드 제2 스크린 장치 상의 대화형 어플리케이션 관리자

Also Published As

Publication number Publication date
AU2018205094A1 (en) 2018-07-26
US20140006474A1 (en) 2014-01-02
EP2680500B1 (en) 2019-10-23
AU2013206552A1 (en) 2014-01-16
JP2014010842A (ja) 2014-01-20
CA2820342A1 (en) 2013-12-28
US10931735B2 (en) 2021-02-23
EP2680500A1 (en) 2014-01-01
AU2013206552B2 (en) 2018-05-24
KR102109985B1 (ko) 2020-05-12
DK2680500T3 (da) 2020-01-02
JP6396005B2 (ja) 2018-09-26
CA2820342C (en) 2018-06-19

Similar Documents

Publication Publication Date Title
KR102109985B1 (ko) 애플리케이션 디스커버리
US10771525B2 (en) System and method of discovery and launch associated with a networked media device
US9967295B2 (en) Automated discovery and launch of an application on a network enabled device
US12034993B2 (en) Method and apparatus for executing application in wireless communication system
US10382543B2 (en) System and device for enabling any network functionality client or server in a HTML5 application
US9961388B2 (en) Exposure of public internet protocol addresses in an advertising exchange server to improve relevancy of advertisements
US8667076B2 (en) Mapping universal plug and play discovered items to an SMB location
US20100115053A1 (en) Method and apparatus for managing state information of remote user interface
US10757195B2 (en) Device interconnection and service discovery via a communication cloud
CN111988660A (zh) 一种dlna设备投屏方法、网关、终端和系统
CN109474646B (zh) 通信连接方法、装置、系统及存储介质
JP5257659B2 (ja) 映像データ送出方法、並びに、その方法を実行する映像データ送出装置、その方法をコンピュータに実行させるための映像データ送出プログラム、およびそのプログラムが書き込まれた記録媒体
Carlson et al. An ad-hoc smart gateway platform for the web of things
Lee et al. Remote application control technology and implementation of HTML5-based Smart TV platform

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant