KR20150116875A - 네트워크를 거치는 애드-혹 디바이스 공유 - Google Patents

네트워크를 거치는 애드-혹 디바이스 공유 Download PDF

Info

Publication number
KR20150116875A
KR20150116875A KR1020157023556A KR20157023556A KR20150116875A KR 20150116875 A KR20150116875 A KR 20150116875A KR 1020157023556 A KR1020157023556 A KR 1020157023556A KR 20157023556 A KR20157023556 A KR 20157023556A KR 20150116875 A KR20150116875 A KR 20150116875A
Authority
KR
South Korea
Prior art keywords
computing device
access
resources
host computing
resource
Prior art date
Application number
KR1020157023556A
Other languages
English (en)
Inventor
라이언 타보네
에드워드 웨이리 치앙
Original Assignee
구글 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 구글 인코포레이티드 filed Critical 구글 인코포레이티드
Publication of KR20150116875A publication Critical patent/KR20150116875A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/70Admission control; Resource allocation
    • H04L47/78Architectures of resource allocation
    • H04L47/781Centralised allocation of resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/023Services making use of location information using mutual or relative location information between multiple location based services [LBS] targets or of distance thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • 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
    • 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
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/18
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

본 발명의 기술은 하나 이상의 마스터 컴퓨팅 디바이스가 활용되도록 이용가능한 하나 이상의 호스트 컴퓨팅 디바이스의 상이한 리소스에 액세스하는(예를 들어, 마스터 컴퓨팅 디바이스(들) 및 각각의 디바이스의 개별적인 기능의 원하는 사용에 의존함) 단-대-단 접속성을 위한 애드-혹 공유 서비스를 제공하는 애드-혹 공유 서비스에 대한 구현예를 개시한다. 주어진 디바이스 상의 예시적인 리소스는 디스플레이, 오디오, 네트워크, 스토리지, 처리, 입력 및 출력 주변 기기, 등을 포함하지만 이들로 제한되지는 않는다. 애드-혹 공유 서비스는 각각의 디바이스의 공유되기 위한 이용가능한 리소스를 처음에 결정할 수 있다.

Description

네트워크를 거치는 애드-혹 디바이스 공유{AD-HOC DEVICE SHARING OVER A NETWORK}
통상적으로, 다른 컴퓨팅 디바이스(예를 들어, 컴퓨터, 랩탑, 넷북, 태블릿, 등)가 호스트 컴퓨팅 디바이스 및/또는 임의의 이것의 주변 기기에 액세스하려면, 호스트 컴퓨팅 디바이스(주변 기기 디바이스로의 물리적 연결을 가짐)의 제어, 및/또는 컴퓨팅 디바이스로의 전용 링크가 요구된다. 추가적으로, 몇몇 솔루션은 전문화된 소프트웨어가 각각의 디바이스에 설치되도록 요구하거나 다수의 구성 단계를 요구하는데, 이것이 상이한 디바이스 사이에서 리소스를 공유하는 것이 더욱 곤란하게 한다.
본 발명의 기술은 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법을 제공한다. 이러한 방법은 마스터 컴퓨팅 디바이스로부터의 액세스를 위하여 이용가능한 복수 개의 호스트 컴퓨팅 디바이스를 결정하는 단계; 결정된 복수 개의 호스트 컴퓨팅 디바이스에 대한 이용가능한 리소스의 세트를 결정하는 단계; 이용가능한 리소스의 세트 중 이용가능한 리소스에 액세스하기 위한 디바이스를 결정된 복수 개의 호스트 컴퓨팅 디바이스 중에서 선택하는 단계; 선택된 디바이스 상의 상기 이용가능한 리소스에 액세스하기 위한 최적 물리적 통신 채널을 결정하는 단계; 및
선택된 디바이스 상에서 결정된 최적 물리적 통신 채널을 통하여 상기 리소스에 액세스하는 단계를 포함한다.
본 발명의 기술은 디바이스의 애드-혹 공유를 위한 요청을 처리하기 위한 컴퓨터-구현 방법을 더 제공한다. 이러한 방법은 마스터 컴퓨팅 디바이스의 지리적 위치가 호스트 컴퓨팅 디바이스에 대한 임계 근접도 이내인 경우, 제 1 물리적 통신 채널을 통하여, 상기 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하기 위한 마스터 컴퓨팅 디바이스로부터의 요청을 수신하는 단계로서, 상기 호스트 컴퓨팅 디바이스는 네트워크를 거친 공유를 위하여 등록된 하나 이상의 리소스를 포함하는, 단계; 상기 마스터 컴퓨팅 디바이스가 상기 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하도록 인가되는지를 결정하는 단계; 제 2 물리적 통신 채널을 통하여, 선택된 디바이스 상의 리소스에 액세스하려는 요청을 수신하는 단계; 상기 마스터 컴퓨팅 디바이스에 상기 리소스로의 액세스가 이미 승인된 바 있는지를 결정하는 단계; 및 상기 리소스로의 액세스가 상기 마스터 컴퓨팅 디바이스에 이전에 승인되었다면 상기 마스터 컴퓨팅 디바이스로 통지를 송신하는 단계를 포함한다. 몇몇 구성들에서, 제 2 물리적 통신 채널은 제 1 물리적 통신 채널과 동일하다.
본 발명의 기술의 또다른 양태는 네트워크를 거친 디바이스의 애드-혹 공유를 위한 시스템을 제공한다. 시스템은 메모리, 하나 이상의 프로세서, 및 메모리에 저장되며 하나 이상의 프로세서에 의하여 실행되도록 구성되는 하나 이상의 모듈을 포함한다. 이러한 시스템은, 마스터 컴퓨팅 디바이스로부터의 액세스에 대하여 이용가능한 복수 개의 호스트 컴퓨팅 디바이스를 결정하고, 네트워크를 거친 액세스를 위하여, 결정된 복수 개의 호스트 컴퓨팅 디바이스에 대한 이용가능한 리소스의 세트를 결정하도록 구성되는 디바이스 이용가능성 모듈; 이용가능한 리소스의 세트 중 이용가능한 리소스에 액세스하기 위한, 결정된 복수 개의 호스트 컴퓨팅 디바이스 중에서의 디바이스의 선택을 수행하도록 구성되는 디바이스 선택 모듈로서, 디바이스의 선택은 상기 마스터 컴퓨팅 디바이스로부터의 네트워크를 거친 요청에 기초하는, 상기 디바이스 선택 모듈; 및 이용가능한 리소스에 액세스하기 위하여, 네트워크를 거쳐 선택된 디바이스와 통신하기 위한 최적 물리적 통신 채널을 결정하도록 구성되는 디바이스 통신 모듈을 포함한다.
본 발명의 기술은 저장된 명령을 포함하는 비-일시적 머신-판독가능 매체를 더 제공하는데, 상기 명령은 머신에 의하여 실행되면 상기 머신이: 마스터 컴퓨팅 디바이스로부터의 액세스에 대하여 이용가능한 복수 개의 호스트 컴퓨팅 디바이스를 결정하는 것; 결정된 복수 개의 호스트 컴퓨팅 디바이스에 대한 이용가능한 리소스의 세트를 결정하는 것; 상기 마스터 컴퓨팅 디바이스로부터의 요청에 기초하여 이용가능한 리소스의 세트 중 이용가능한 리소스에 액세스하기 위한 디바이스를 결정된 복수 개의 호스트 컴퓨팅 디바이스로부터 선택하는 것; 및 상기 선택된 디바이스 상의 이용가능한 리소스에 액세스하기 위한 최적 물리적 통신 채널을 결정하는 것을 포함하는 동작을 수행하도록 한다.
본 발명의 기술의 다른 구성들이 후속하는 발명을 실시하기 위한 구체적인 내용으로부터 당업자에게 용이하게 명백해질 것이라는 것이 이해되는데, 본 발명의 기술의 다양한 구성들은 예로써 도시되고 설명된다. 이해될 바와 같이, 본 발명의 기술은 다르고 상이한 구성들이 가능하고 이것의 여러 세부사항들은 모두 본 발명의 기술에서 벗어나지 않으면서 다양한 다른 관점들에서의 수정이 가능하다. 이에 상응하여, 도면 및 발명을 실시하기 위한 구체적인 내용은 성질상 예시적인 것이고 한정적인 것이 아니라고 간주되어야 한다.
본 발명의 기술의 피쳐들이 첨부된 청구항에서 설명된다. 그러나, 설명의 목적을 위하여, 본 발명의 기술의 여러 구성들은 다음 도면들에서 설명된다.
도 1 은 디바이스들 사이의 리소스의 애드-혹 공유를 위한 예시적 구성에서 마스터 및 호스트 컴퓨팅 디바이스를 개념적으로 도시한다.
도 2 는 네트워크를 거친 디바이스의 애드-혹 공유를 위한 예시적 프로세스를 개념적으로 도시한다.
도 3 은 네트워크를 거친 디바이스의 애드-혹 공유를 위한 요청의 처리를 위한 예시적 프로세스를 개념적으로 도시한다.
도 4 는 하나의 예시적인 컴퓨팅 환경을 개념적으로 도시한다.
도 5 는 예시적인 애플리케이션 프로그래밍 인터페이스(API) 아키텍처를 개념적으로 도시한다.
도 6 은 본 기술의 몇몇 구현예들이 구현될 수도 있는 시스템을 개념적으로 도시한다.
아래에 설명되는 발명을 실시하기 위한 구체적인 내용은 본 발명의 기술의 다양한 구성들의 설명으로서 의도되며 본 발명의 기술이 실시될 수도 있는 유일한 구성을 나타내는 것으로 의도되지 않는다. 첨부된 도면들은 본 명세서에 통합되고 상세한 설명의 일부를 구성한다. 상세한 설명은 본 발명의 기술의 완전한 이해를 제공하기 위한 목적을 위하여 구체적인 세부내용들을 포함한다. 그러나, 본 발명의 기술이 본 명세서에 설명되는 구체적인 세부내용들로 한정되지 않으며 이러한 구체적인 세부내용들이 없어도 실시될 수도 있다는 것이 명확해지고 명백해질 것이다. 다른 예시에서, 주지의 구조들 및 컴포넌트들이 본 발명의 기술의 개념이 흐려지는 것을 방지하기 위하여 블록도로 도시된다.
주어진 컴퓨팅 디바이스는 상이한 리소스 또는 기능(예를 들어, 디스플레이, 오디오, 네트워크, CPU, 내부 및/또는 외부 주변 기기 디바이스, 등)을 포함한다. 종래의 시스템에 대하여, 하나 이상의 컴퓨팅 디바이스가 네트워크 기반구조(인터넷, 인트라넷, 등) 또는 다른 통신 채널(예를 들어, 디바이스-대-디바이스 통신을 위한 물리적 통신 채널 등)을 거쳐서 하나 이상의 다른 컴퓨팅 디바이스 및 그들의 이용가능한 리소스에 액세스하기 위한 애드-혹 솔루션(예를 들어, 전문화된 기술적 지식, 전문화된 소프트웨어 및/또는 하드웨어, 또는 귀찮은 구성 단계 등이 없는 솔루션)이 존재하지 않는다.
통상적으로, 다른 컴퓨팅 디바이스(예를 들어, 컴퓨터, 랩탑, 넷북, 태블릿, 등)가 호스트 컴퓨팅 디바이스 및/또는 임의의 이것의 주변 기기에 액세스하려면, 호스트 컴퓨팅 디바이스(주변 기기 디바이스로의 물리적 연결을 가짐)의 제어, 및/또는 컴퓨팅 디바이스로의 전용 링크가 요구된다. 추가적으로, 종래의 시스템은 전문화된 소프트웨어가 각각의 디바이스에 설치되도록 요구하거나 다수의 구성 단계를 요구할 수 있는데, 이것이 상이한 디바이스 사이에서 리소스를 공유하는 것이 더욱 곤란하게 한다.
하나의 예시적인 시나리오에서, 사용자는 주말 여행 목적지의 지도와 같은 정보를 사용자가 그 주말에 함께 여행하는 네 명의 친구들의 컴퓨팅 디바이스의 개별적인 스크린에 디스플레이하려고 한다. 사용자는 파일, 데이터가 있는 사이트로의 링크, 또는 데이터의 몇몇 다른 컨테이너인 맵을 네 명의 친구들에게 직접적으로 로 송신하고, 이들은 이제 맵을 그들의 개별적인 디스플레이에서 디스플레이한다. 대안적으로는, 네 명의 친구들은 그들의 디스플레이가, 그 사용자가 네 명의 친구들과 공유하기를 원하는 모든 것을 디스플레이하는 것에 전용인 컴퓨팅 디바이스(들)에 연결되게 한다.
그러나, 앞선 예는 구성해야 할 다수의 단계, 전문화된 소프트웨어 또는 하드웨어, 및/또는 전문화된 기술적 지식을 통상적으로 요구한다. 예를 들면, 각각의 사용자는 그들의 컴퓨터에 설치된 원격 공유 솔루션(예를 들어, 원격 데스크탑 프로토콜, 가상 네트워크 컴퓨팅, 등)을 가지도록 요구될 수도 있다. 그러면 일차 사용자는 사용자가 공유하려고 했던 것을 이차 사용자의 컴퓨터들 각각에서 공유하기 위해서는, 다른 사용자("이차 사용자")의 컴퓨터들 각각에 원격으로 접속하도록 요구될 것이다. 다른 예에서, 일차 사용자는 그룹 화상 회의를 시작하도록 요구되고, 각각의 이차 사용자는 일차 사용자가 콘텐츠를 각각의 이차 사용자와 공유하게 하기 위하여 화상 회의에 참여할 필요가 있을 것이다.
위의 예들과 관련된 문제점은, 각각의 사용자(예를 들어, 일차 및 모든 이차 사용자)가 포털에 방문하거나 독점적 소프트웨어를 사용하고, 그 이후에 일차 사용자가 어떤 것을 각각의 이차 사용자와 공유하기를 원했는지 보기 위해서는 참여 또는 인가 단계를 수행하도록 요구된다는 것이다. 그러나, 통상적 솔루션은 디스플레이 디바이스(예를 들어, 모니터, 등) 외의 주변 기기의 일-대-다 제어를 제공하지 않을 수도 있다. 추가적으로, 통상적 솔루션은 일차 사용자가 이차 사용자와 공유하기를 원하는 각각의 실례에 대하여 인가 및/또는 전문화된 소프트웨어의 설치를 요구할 수도 있다.
앞서 언급된 문제점을 다루기 위해서, 본 발명의 기술은 애드-혹 디바이스 공유 솔루션을 제공하기 위한 3 개의 상이한 메인 컴포넌트: 1) 네트워크 기반구조 또는 백본(예를 들어, 인터넷, 인트라넷, 등)을 제공하기 위한 물리적 계층, 2) 인증 및 통신 채널 셋업을 위한 소프트웨어 계층, 및 3) 공유하기 위한 상이한 디바이스를 이용한다. 일 양태에서, 본 발명의 기술은 하나 이상의 마스터 컴퓨팅 디바이스가 주어진 네트워크 기반구조를 통하여 임의의 개수의 호스트 컴퓨팅 디바이스에서 이용가능한 상이한 리소스에 액세스하고 이를 이용하게 하는 애드-혹 공유 서비스(예를 들어, 하나의 예시적인 구현형태에서는 클라우드에 위치된 웹 서비스)를 제공한다. 결과적으로, 본 발명의은 임의의 디바이스가 임의의 명수의 사람에 의하여 공유되도록 하고, 그 디바이스에 액세스하기 위한 복수 개의 발견 방법(예를 들어, 독점적 클라우드 공유 서비스와 같은, 인터넷 상의 독점적 서비스로 엄격하게 한정되지 않음)을 이용할 수도 있다.
좀 더 구체적으로는, 애드-혹 공유 서비스는, 하나 이상의 마스터 컴퓨팅 디바이스가 활용되도록 이용가능한 하나 이상의 호스트 컴퓨팅 디바이스의 상이한 리소스에 액세스하는(예를 들어, 마스터 컴퓨팅 디바이스(들) 및 각각의 디바이스의 개별적인 기능의 원하는 사용에 의존함) 단-대-단 접속성을 위한 애드-혹 공유 서비스를 제공한다. 주어진 디바이스 상의 예시적인 리소스는 디스플레이, 오디오, 네트워크, 스토리지, 처리, 입력 및 출력 주변 기기, 등을 포함하지만 이들로 제한되지는 않는다. 애드-혹 공유 서비스는 각각의 디바이스의 공유되기 위한 이용가능한 리소스를 처음에 결정할 수 있다.
예를 들면, 마스터 컴퓨팅 디바이스는 애드-혹 공유 서비스를 이용하여 하나 이상의 이용가능한 호스트 컴퓨팅 디바이스를 결정할 수 있다(예를 들어, 인터넷 또는 근거리 네트워크와 같은 주어진 네트워크 기반구조를 통하여 애드-혹 공유 서비스에 액세스함으로써). 일 예로서는, 애드-혹 공유 서비스는 마스터 컴퓨팅 디바이스 및 임의의 이용가능한 호스트 컴퓨팅 디바이스에 대한 인증 프로시저를 개시한다. 사용자는 그 사용자와 연관된 하나 이상의 디바이스를 가질 수 있고, 인증 시에는 그 디바이스(또는 다른 사용자의 다른 디바이스)로 액세스할 수 있을 수 있다. 각각의 호스트 컴퓨팅 디바이스의 이용가능성은 네트워크 기반구조(또는 마이크로-네트워크, 블루투스, 등과 같은 다른 물리적 통신 채널)를 통한 호스트 컴퓨팅 디바이스의 액세스가능성에 기초하여 결정될 수 있다.
일 예에서, 애드-혹 공유 서비스는, 다수의 발견 방법을 통하여, 각각의 디바이스의 상이한 이용가능한 통신 채널(예를 들어, 블루투스, 서로 인접한 디바이스들의 마이크로-네트워크, 애드-혹 네트워크, 유선, 무선, 등)을 결정하여, 개별적인 디바이스들 사이의 통신을 가능하게 한다(예를 들어, 통신을 위한 최적 물리적 통신 채널을 결정하기 위함). 이러한 방식으로, 애드-혹 공유 서비스는 이용가능한 디바이스의 인증(필요하다면) 및 초기 결정을 이용할 수도 있고, 이제 호스트 컴퓨팅 디바이스(들) 상의 리소스에 액세스하기 위한 통신 채널을 구축하기 위하여 상이한 물리적 통신 채널(예를 들어, 마이크로-네트워크, 애드-혹 네트워크, 블루투스, 등)을 이용할 수도 있다. 그러나, 본 발명의 기술은 상이한 채널을 이용하도록 요구되지 않을 수도 있다는 것이 이해되어야 한다. 몇 가지 예들에서는, 동일한 통신 채널이 이용될 수도 있고, 여전히 본 발명의 기술의 범위 내에 있을 수도 있다. 더 나아가, 몇몇 구성은 인증을 아예 요구하지 않는다.
위에서 언급된 문제점들을 해결하기 위한 하나의 예시적인 구현예(본 발명의 기술 범위를 반드시 한정하는 것은 아님)는 다른 컴퓨팅 디바이스("마스터" 디바이스)에 의한 네트워크를 거친 호스트 컴퓨팅 디바이스의 액세스를 가능하게 하는 웹 서비스를 포함한다. 일 예에서, 웹 서비스는 컴퓨팅 디바이스 상의 애플리케이션(예를 들어, 웹 브라우저, 웹 브라우저에서 호스팅된 웹 애플리케이션, 클라이언트 프론트엔드 애플리케이션, 등)이 네트워크를 거쳐서 액세스하기 위한 디바이스를 결정하도록 하는 API를 제공한다. 웹 서비스는 이용가능한 디바이스의 목록을 네트워크를 거쳐 제공하고 인증을 수행하여(필요하다면) 디바이스 중 임의의 것에 액세스한다. 일 예에서, 이용가능한 디바이스는 사용자의 지리적 위치, 소셜 네트워크의 공유 설정 및/또는 사용자의 특정된 세트에 기초한다. 예를 들면, 본 발명의 기술은 사용자에 의하여 공유되는 지리적 위치를 검출하고, 하나 이상의 이용가능한 디바이스를 공유된 지리적 위치에 기초하여(예를 들어, 사용자의 지리적 위치에 가깝거나 거리 임계 내에 있는 디바이스의 세트를 결정하기 위하여) 결정한다. 다른 예에서, 하나 이상의 디바이스는 소셜 네트워크를 이용하거나 그 디바이스를 소유하는 사용자에 의한 하나 이상의 특정된 사용자 세트에 기초한다. 더 나아가, 사용자-인터페이스는 네트워크를 거쳐 디바이스에 액세스하기 위하여 웹-기초 운영 체제 또는 브라우저(또는 임의의 다른 애플리케이션)에서 제공될 수 있다.
다른 예에서, 본 발명의 기술은 네트워크를 거친 액세스에 대하여 이용가능한 상이한 디바이스(예를 들어, 입력 및 출력 디바이스)를 결정한다. 결정된 디바이스 각각은 마스터 컴퓨팅 디바이스에 의한 액세스에 대하여 이용가능한 하나 이상의 리소스를 포함한다. 디바이스의 이용가능한 리소스에 기초하여, 사용자(또는 애플리케이션)는 상이한 디바이스들 중에서 하나의 디바이스를 선택한다. 네트워크를 거쳐 선택된 디바이스와 통신하기 위한 웹 서비스 인터페이스가 결정된다. 이러한 웹 서비스 인터페이스를 이용하여, 디바이스로의 통신 채널이 구축된다. 디바이스 상의 리소스(예를 들어, 디스플레이, 오디오, 또는 네트워킹 컴포넌트, 등)에 액세스하기 위한 요청이 통신 채널을 통하여 송신된다. 일 예로서는, 요청은 웹 서비스에 의하여 수신되고 그 디바이스로의 액세스를 승인하기 위하여 요청된 디바이스의 소유자에게 송신될 수 있다. 그러면 요청이 통신 채널을 통하여 승인되었는지가 결정된다. 일 예에서, 디바이스로의 액세스를 승인하는 인증 토큰이 통신 채널을 통하여 수신된다. 그러면 요청이 승인되었다면 리소스는 통신 채널을 통하여 디바이스 상에서 액세스된다.
도 1 은 디바이스들 사이의 리소스의 애드-혹 공유를 위한 예시적 구성(100)에서 마스터 및 호스트 컴퓨팅 디바이스를 개념적으로 도시한다. 좀 더 구체적으로는, 도 1 은 현존 네트워크 기반구조를 통하여 호스트 컴퓨팅 디바이스에 액세스하는 마스터 컴퓨팅 디바이스를 도시한다. 단순성을 위하여 그리고 예에 대한 설명을 모호하게 하지 않기 위하여, 도 1 은 하나의 마스터 컴퓨팅 디바이스가 클라우드(예를 들어, 네트워크) 내에 위치된 서버에 제공되는 웹 서비스(소프트웨어 계층)를 이용함으로써, 현존 네트워크 기반구조(물리적 계층)를 거쳐 호스트 컴퓨팅 디바이스에 의하여 제공되는 하나 이상의 리소스에 액세스하는 일 예를 도시한다. 당업자는 두 개 이상의 호스팅 컴퓨팅 디바이스 및 두 개 이상의 마스터 컴퓨팅 디바이스가 제공될 수도 있고 여전히 본 발명의 기술의 범위 내에 속할 수도 있다는 것을 인정할 것이다.
본 발명의 기술은 마스터 컴퓨팅 디바이스가 애드-혹 방식에서 공유하기 위한 이용가능한 리소스를 가지는 하나 이상의 호스트 컴퓨팅 디바이스를 결정하게 한다. 도 1 의 예에서 도시된 바와 같이, 마스터 컴퓨팅 디바이스(110)는 네트워크(150)를 거쳐 서버(105)에 액세스한다. 네트워크(150)는 로컬 네트워크, 광역 네트워크, 또는 네트워크들의 네트워크(예를 들어, 인터넷) 등일 수 있다. 일 예에서, 서버(105)는 호스트 컴퓨팅 디바이스(120)로부터의 리소스(125)의 애드-혹 공유를 가능하게 하기 위하여, 마스터 컴퓨팅 디바이스(110)와 호스트 컴퓨팅 디바이스(120) 사이의 통신을 가능하게 하기 위한 웹 서비스를 제공한다. 예를 들면, 마스터 컴퓨팅 디바이스(110)는 마스터 컴퓨팅 디바이스(110) 상에서 실행 중인 클라이언트 애플리케이션(예를 들어, 웹 브라우저, 모바일 애플리케이션, 등)을 이용하여, 서버(105)에 의하여 제공된 웹 서비스와 최초에 통신함으로써 호스트 컴퓨팅 디바이스(120) 상의 액세스에 대하여 이용가능한 리소스를 결정할 수 있다. 호스트 컴퓨팅 디바이스(120) 상의 이용가능한 리소스는 호스트 컴퓨팅 디바이스(120)에 외부로 연결되거나 및/또는 그 내부에 연결되는 주변 기기를 포함할 수 있다. 추가적으로, 마스터 컴퓨팅 디바이스(110)는 위에서 서버(105)에 의하여 제공된 웹 서비스를 이용하여 설명된 것과 유사한 방식으로 액세스할, 다른 호스트 컴퓨팅 디바이스(들)(130)로부터의 리소스(135)를 결정할 수 있다.
호스트 컴퓨팅 디바이스(120) 상의 하나 이상의 이용가능한 리소스에 액세스하기 위하여, 마스터 컴퓨팅 디바이스(110)는 서버(105) 및/또는 호스트 컴퓨팅 디바이스(120)와 최초로 통신하기 위한 통신 인터페이스와는 상이한 통신 인터페이스를 이용할 수도 있다. 예를 들면, 제 1 타입의 통신 인터페이스가 마스터 컴퓨팅 디바이스(110)에 의하여 이용되어 호스트 컴퓨팅 디바이스(120)에 의하여 제공되는 리소스로의 액세스(예를 들어, 서버(105)와의 통신에 의함)를 협상 및 인가할 수도 있고, 제 2 타입의 통신 인터페이스는 마스터 컴퓨팅 디바이스(110)에 의하여 리소스에 액세스하기 위하여 이용될 수도 있다. 상이한 통신 인터페이스들 대신에, 몇몇 구성은 리소스로의 액세스(들)를 협상 및/또는 인가하기 위하여 동일한 통신 인터페이스를 이용할 수도 있다. 추가적으로, 모든 실례에서 인가가 요구되는 것은 아니다.
추가적으로, 비록 도 1 에 도시되는 예가 서버(105)를 포함하지만, 일 예에서, 리소스의 애드-혹 공유는 마스터 컴퓨팅 디바이스(110)와 호스트 컴퓨팅 디바이스(120) 및/또는 다른 호스트 컴퓨팅 디바이스(들)(130) 사이의 피어-투-피어 통신을 통하여 달성될 수도 있다. 이러한 예에서, 서버(105)에 의하여 제공되는 웹 서비스의 기능성은 마스터 컴퓨팅 디바이스(110) 및/또는 호스트 컴퓨팅 디바이스들 중 임의의 것에 의하여 구현된다. 일 예에서, 단일 서버(105) 대신에, 구성(100)은 동일한 세트의 기능을 분산식 및/또는 부하 평형 방식에서 수행하는 서버/컴퓨터/컴퓨팅 디바이스의 개별적인 클러스터를 포함할 수 있다. 클러스터는 동일한 세트의 기능들을 끊김없이 수행하도록 서로 링크되는 서버/컴퓨터의 그룹으로서, 단일 서버/컴퓨터 아키텍처보다 성능, 신뢰성 및 이용가능성 장점을 제공할 수 있는 것이라고 이해될 수 있다. 서버들의 그룹이 있는 일 예에서, 서버들의 그룹은 마스터 컴퓨팅 디바이스(110)와 호스트 컴퓨팅 디바이스(120) 및 다른 호스트 컴퓨팅 디바이스(들)(130) 사이의 리소스의 애드-혹 공유를 가능하게 하기 위한 앞서 언급된 웹 서비스를 제공하도록 구성될 수도 있다.
도 2 는 네트워크를 거친 디바이스의 애드-혹 공유를 위한 예시적 프로세스를 개념적으로 도시한다. 프로세스(200)는 몇몇 구성들에서 하나 이상의 컴퓨팅 디바이스 또는 시스템에 의하여 수행될 수 있다.
프로세스(200)는 단계 205 에서 마스터 컴퓨팅 디바이스로부터의 액세스에 대하여 이용가능한 복수 개의 호스트 컴퓨팅 디바이스를 결정함으로써 시작한다. 마스터 컴퓨팅 디바이스로부터의 액세스에 대하여 이용가능한 복수 개의 호스트 컴퓨팅 디바이스를 결정하는 것은 일 예에서 네트워크 기반구조(개인 영역 네트워크, 근거리 네트워크, 광역 네트워크, 네트워크들의 네트워크, 등과 같음)를 거쳐 발생한다. 더 나아가, 복수 개의 호스트 컴퓨팅 디바이스를 결정하는 것은 일 예에서 사용자의 지리적 위치에 기초한다. 이러한 예에서, 사용자의 지리적 위치는 마스터 컴퓨팅 디바이스의 위치에 대응할 수도 있다. 예를 들면, 프로세스(200)는 복수 개의 호스트 컴퓨팅 디바이스를 마스터 컴퓨팅 디바이스로부터의 물리적 거리에 기초한 근접성 임계에 기초하여 결정할 수도 있다. 따라서, 마스터 컴퓨팅 디바이스(사용자의 지리적 위치에 대응함)로부터의 근접성 임계(예를 들어, 선결정된 거리) 내에 있는 복수 개의 호스트 컴퓨팅 디바이스가 발견될 수도 있다.
프로세스(200)는 단계 210 에서 복수 개의 결정된 호스트 컴퓨팅 디바이스에 대한 이용가능한 리소스의 세트를 결정한다. 결정된 호스트 컴퓨팅 디바이스의 각각은 마스터 컴퓨팅 디바이스에 대하여 액세스되도록 이용가능한 가용 리소스의 세트를 포함할 수도 있다. 프로세스(200)는 단계 215 에서 이용가능한 리소스의 세트 중 하나의 이용가능한 리소스에 액세스하기 위한, 결정된 복수 개의 호스트 컴퓨팅 디바이스 중에서 한 디바이스를 선택한다. 일 예에서, 호스트 컴퓨팅 디바이스는 적어도 하나의 입력 디바이스(예를 들어, 키보드, 마우스, 스캐너, 디지털 카메라 및 조이스틱, 등을 포함하는 임의의 주변 기기) 및 하나의 출력 디바이스(예를 들어, 모니터, 디스플레이, LED, 오디오 디바이스, 스피커, 등)를 포함한다. 하나의 출력 디바이스는 몇몇 구성들에서 모니터이다. 다른 타입의 리소스들이 포함될 수도 있고 여전히 대상 기술의 범위 내에 있을 수도 있다.
프로세스(200)는 단계 220 에서 선택된 디바이스 상의 이용가능한 리소스에 액세스하기 위한 최적 물리적 통신 채널을 결정한다. 일 예에서, 프로세스(200)는 상이한 기준들에 기초하여 최적 채널을 결정함으로써, 선택된 디바이스 상의 이용가능한 리소스에 액세스하기 위한 최적 물리적 통신 채널을 결정한다. 기준들은 일 예에서 이용가능한 대역폭, 신호 강도, 신호 품질, 및 레이턴시를 포함한다. 기준들의 다른 타입들이 이용될 수도 있고 여전히 대상 기술의 범위 내에 있을 수도 있다. 물리적 통신 채널은 일 예에서 몇몇 형태의 네트워크 연결이다. 좀 더 구체적으로는, 네트워크 연결은 개인 영역 네트워크, 근거리 네트워크, 애드-혹 네트워크, 광역 네트워크 또는 네트워크들의 네트워크, 등 안에 포함되고, 유선 및/또는 무선 기술을 포함하는 임의의 적합한 형태의 통신을 이용할 수도 있다. 다른 타입의 네트워크 연결들이 이용될 수도 있고 여전히 대상 기술의 범위 내에 있을 수도 있다. 물리적 통신 채널은 일 예에서, 마스터 컴퓨팅 디바이스가 호스트 컴퓨팅 디바이스에 의하여 제공되는 이용가능한 리소스에 직접적으로 액세스하게 하는 단-대-단 통신 채널이다.
프로세스(200)는 단계 225 에서 선택된 디바이스 상의 리소스에 결정된 최적 물리적 통신 채널을 통하여 액세스한다. 몇몇 구성들에서, 리소스는 디바이스의 디스플레이 컴포넌트, 오디오 컴포넌트 또는 네트워킹 컴포넌트, 또는 디바이스 상의 임의의 주변 기기 등을 포함한다. 일 예에서, 선택된 디바이스 상의 리소스에 액세스하는 것은 데이터를 선택된 디바이스의 디스플레이 컴포넌트 상에 디스플레이되도록 네트워크를 거쳐 송신하는 것을 포함한다. 리소스로의 다른 타입의 액세스가 제공될 수도 있고 여전히 대상 기술의 범위 내에 있을 수도 있다. 리소스가 디바이스 상에서 액세스되면, 사용자는 그 리소스를 적합한 방식으로 이용할 수도 있다. 일 예로서는, 만일 리소스가 디스플레이 디바이스라면, 사용자는 이제 이차 사용자로의 디스플레이를 위하여 콘텐츠를 공유할 수도 있다. 그러면 프로세스(200)는 끝난다.
도 3 은 네트워크를 거친 디바이스의 애드-혹 공유를 위한 요청의 처리를 위한 예시적 프로세스(300)를 개념적으로 도시한다. 프로세스(300)는 몇몇 구성들에서 하나 이상의 컴퓨팅 디바이스 또는 시스템에 의하여 수행될 수 있다.
프로세스(300)는 단계 305 에서, 마스터 컴퓨팅 디바이스의 지리적 위치가 호스트 컴퓨팅 디바이스에 대한 임계 근접도 이내인 경우 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하기 위한 요청을 마스터 컴퓨팅 디바이스로부터 제 1 물리적 통신 채널을 통하여 수신함으로써 시작한다. 예를 들면, 근접성 임계는 호스트 컴퓨팅 디바이스가 마스터 컴퓨팅 디바이스로부터의 임계 물리적 거리 내에 있는지 여부를 표시하여 디바이스(들)에 의하여 제공되는 애드-혹 공유의 애드-혹 공유를 가능하게 할 수도 있다. 이러한 관점에서, 호스트 컴퓨팅 디바이스는 일 예에서 네트워크를 거친 공유를 위하여 등록되는 하나 이상의 리소스를 포함한다. 요청은 네트워크 어댑터(무선, 유선, 이더넷, 등), 모뎀, 광섬유 채널, 위성, 등과 같은 하드웨어에 의하여 제공되는 물리적 통신 채널을 통하여 호스트 컴퓨팅 디바이스와의 사이에 구축되는 네트워크 연결을 통해서 수신될 수도 있다. 다른 타입의 물리적 통신 채널이 제공될 수도 있고 여전히 대상 기술의 범위 내에 있을 수도 있다.
프로세스(300)는 단계 310 에서 마스터 컴퓨팅 디바이스가 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하도록 인가되는지를 결정한다. 일 예에서, 마스터 컴퓨팅 디바이스가 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하도록 인가되는지를 결정하는 것은, 인가 문자열이 마스터 컴퓨팅 디바이스로부터의 요청 내에 포함되는지를 결정하는 것을 포함한다. 예를 들면, 인가 문자열은 마스터 컴퓨팅 디바이스가 호스트 컴퓨팅 디바이스에 의하여 인가된 바 있다고 결정하기 위하여 이용될 수 있다.
프로세스(300)는 단계 315 에서 선택된 디바이스 상의 리소스에 액세스하려는 요청을 제 2 물리적 통신 채널을 통하여 수신한다. 제 1 및 제 2 물리적 통신 채널은 몇몇 구성들에서 상이한 타입의 통신 인터페이스이다. 대안적으로는, 제 1 및 제 2 물리적 통신 채널은 동일한 타입의 통신 인터페이스이고, 또는 몇 가지 실례들에서 동일한 물리적 통신 채널이다. 이러한 방식으로, 프로세스(300)는 요청을 처리하기 위하여, 하나 이상의 물리적 통신 채널, 또는 동일한 물리적 통신 채널을 이용하도록 된다.
프로세스(300)는 단계 320 에서 마스터 컴퓨팅 디바이스에게 리소스로의 액세스가 이미 승인된 바 있는지를 결정한다. 리소스로의 액세스가 마스터 컴퓨팅 디바이스에 이미 승인된 바 있는지를 결정하는 것은 일 예에서 리소스로의 액세스를 승인하는 인증 토큰을 수신하는 것을 포함한다. 인증 토큰은 호스트 컴퓨팅 디바이스 또는 호스트와 마스터 컴퓨팅 디바이스 사이에서의 통신을 가능하게 하는 웹 서비스에 의하여 발급될 수도 있다. 다른 타입의 인증 방법/기법들이 이용될 수도 있고 여전히 대상 기술의 범위 내에 있을 수도 있다.
프로세스(300)는 단계 325 에서, 리소스로의 액세스가 마스터 컴퓨팅 디바이스에게 이전에 승인되었다면 마스터 컴퓨팅 디바이스로 통지를 송신한다. 통지를 마스터 컴퓨팅 디바이스로 송신하는 것은, 일 예에서 리소스로의 액세스를 승인하는 인증 토큰을 송신하는 것을 포함한다. 추가적으로, 통지는 몇몇 구성들에서 액세스가 이전에 승인되었다는 것을 표시하는 확인 메시지이다. 그러면 프로세스(300)는 끝난다.
비록 도 3 에서 예시적 프로세스(300)가 리소스로의 액세스를 인가하는 것을 설명하지만, 본 발명의 기술의 몇몇 구성들이 인가 동작을 요구하지 않을 수도 있다는 것이 이해되어야 한다. 이런 경우들에서, 액세스는 원하는 리소스에게 자동적으로 승인될 수도 있다.
도 4 는 이러한 시스템을 포함하는 하나의 예시적인 컴퓨팅 환경(400)을 개념적으로 예시한다. 특히, 도 4 는 도 2 및 도 3 에서 설명된 프로세스들을 구현하기 위한 시스템(405)을 도시한다. 몇몇 구성들에서, 시스템(405)은 특정 머신(예를 들어, 클라이언트 컴퓨터, 랩탑, 노트북, 넷북, 등)을 실행시키는 구현형태의 일부이다.
시스템(405)은 메모리, 하나 이상의 프로세서, 및 메모리에 저장되며 하나 이상의 프로세서에 의하여 실행되도록 구성되는 하나 이상의 모듈을 포함할 수 있다. 도 4 에 도시된 바와 같이, 시스템(405)은 상이한 기능성을 제공하기 위한 여러 모듈들을 포함한다. 시스템(405)은 디바이스 이용가능성 모듈(410), 디바이스 선택 모듈(415), 디바이스 통신 모듈(420) 및 리소스 액세스 모듈(425)을 포함하도록 구성된다.
디바이스 이용가능성 모듈(410)은 마스터 컴퓨팅 디바이스로부터의 액세스에 대하여 이용가능한 복수 개의 호스트 컴퓨팅 디바이스를 결정하고, 네트워크를 거친 액세스를 위하여, 결정된 복수 개의 호스트 컴퓨팅 디바이스에 대한 이용가능한 리소스의 세트를 결정하도록 구성된다. 디바이스 선택 모듈(415)은 이용가능한 리소스의 세트 중 이용가능한 리소스에 액세스하기 위한, 결정된 복수 개의 호스트 컴퓨팅 디바이스 중 한 디바이스의 선택을 수행하도록 구성되는데, 디바이스의 선택은 마스터 컴퓨팅 디바이스로부터의 네트워크를 거친 요청에 기초한다. 디바이스 통신 모듈(420)은 이용가능한 리소스에 액세스하기 위하여, 선택된 디바이스와 네트워크를 거쳐 통신하기 위한 최적 물리적 통신 채널을 결정하도록 구성된다.
시스템(405) 은 결정된 최적 물리적 통신 채널을 통하여 선택된 디바이스 상에서 리소스에 액세스하도록 구성되는 리소스 액세스 모듈(425)을 더 포함한다. 리소스 액세스 모듈은, 제 1 물리적 통신 채널을 통하여, 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하기 위한 마스터 컴퓨팅 디바이스로부터의 요청을 수신하되, 호스트 컴퓨팅 디바이스는 네트워크를 거친 공유를 위하여 등록된 하나 이상의 리소스를 포함하고, 마스터 컴퓨팅 디바이스가 상기 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하도록 인가되는지를 결정하며, 제 2 물리적 통신 채널을 통하여, 선택된 디바이스 상의 리소스에 액세스하려는 요청을 수신하고, 마스터 컴퓨팅 디바이스에 리소스로의 액세스가 이미 승인된 바 있는지를 결정하며, 그리고 리소스로의 액세스가 마스터 컴퓨팅 디바이스에 이전에 승인되었다면 마스터 컴퓨팅 디바이스로 통지를 송신하도록 더욱 구성된다.
도 4 에 더욱 도시되는 바와 같이, 앞서 언급된 모듈들 각각은 서로 통신하도록 구성될 수 있다. 예를 들면, 상이한 데이터, 메시지, API 호출 및 반환이 시스템(405) 내의 상이한 모듈 사이에서 전달될 수 있다.
시스템(405)은 네트워크(450)를 거쳐 마스터 컴퓨팅 디바이스(들)(460)와 통신할 수 있다. 마스터 컴퓨팅 디바이스(들)(460)는 각각 시스템(405)의 앞서 언급된 모듈과 통신하도록 구성될 수 있다. 예를 들면, 마스터 컴퓨팅 디바이스(들)(460)는 호스트 컴퓨팅 디바이스(들)(470) 상의 하나 이상의 리소스에 대한 요청을 네트워크(450)를 거쳐 시스템(405)으로 송신할 수 있다. 도 4 에 더욱 도시되는 바와 같이, 시스템(405)은 호스트 컴퓨팅 디바이스(들)(470)에 의하여 제공되는 하나 이상의 이용가능한 리소스로의 액세스를 협상하기 위하여, 네트워크(450)를 거쳐 호스트 컴퓨팅 디바이스(들)(470)과 통신할 수 있다.
머신 판독가능 스토리지 위에서 설명된 피쳐 및 애플리케이션들 중 많은 것들이 머신 판독가능 저장 매체(또한 컴퓨터 판독가능 매체라고도 지칭됨)에 기록되는 명령들의 세트로서 특정되는 소프트웨어 프로세스로서 구현된다. 이러한 명령들이 하나 이상의 처리 유닛(들)(예를 들어, 하나 이상의 프로세서, 프로세서의 코어, 또는 다른 처리 유닛)에 의하여 실행되면, 이들은 프로세스 유닛(들)이 그 명령에 표시된 동작을 수행하게 한다. 머신 판독가능 컴퓨터 판독가능 미디어의 예들은 CD-ROM, 플래시 드라이브, RAM 칩, 하드 드라이브, EPROM, 등을 포함하지만 그것들로 제한되지는 않는다. 머신 판독가능 미디어는 일시적이지 않고, 무선으로 또는 유선 접속을 거쳐 전달하는 반송파 및 전자적 신호를 포함하지 않는다.
본 명세서에서, 용어 "소프트웨어"는 판독-전용 메모리 내에 상주하는 펌웨어 및/또는 프로세서에 의한 처리를 위하여 메모리로 독출될 수 있는 자기적 스토리지에 저장되는 애플리케이션들을 포함하는 것을 의미한다. 또한, 몇 가지 구현형태에서, 다중 컴포넌트 컴포넌트들은 별개의 소프트웨어 컴포넌트들을 유지하면서 더 큰 프로그램의 서브-부분으로서 구현될 수 있다. 몇 가지 구현형태에서, 다중 소프트웨어 대상 컴포넌트들은 또한 별개의 프로그램들로서 구현될 수 있다. 마지막으로, 본 개시물에서 설명되는 소프트웨어 컴포넌트(들)를 함께 구현하는 별개의 프로그램의 임의의 조합은 대상 기술의 범위 내에 속한다. 몇 가지 구현형태에서, 소프트웨어 프로그램은 하나 이상의 시스템에서 동작하도록 설치될 때, 그 소프트웨어 프로그램들의 동작을 실행하고 수행하는 하나 이상의 특정한 머신 구현예를 정의한다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 애플리케이션, 스크립트, 또는 코드라고도 알려짐)은 컴파일되거나 해석된 언어, 선언적 또는 절차적 언어를 포함하는 프로그래밍 언어의 임의의 형태로 작성될 수 있으며, 이것은 독립형 프로그램으로서 또는 모듈, 컴포넌트, 서브루틴, 오브젝트, 또는 컴퓨팅 환경에서의 사용에 적합한 다른 유닛을 포함하는 임의의 형태로 구현될 수 있다. 컴퓨터 프로그램은 파일 시스템 내의 파일에 대응할 수도 있지만 대응해야 하는 것은 아니다. 프로그램은 다른 프로그램 또는 데이터를 보유하는 파일(예를 들어, 마크업 언어 문서에 저장된 하나 이상의 스크립트) 내에, 문제가 되는 프로그램 전용의 단일 파일 내에, 또는 여러 개의 조율된 파일들)예를 들어, 하나 이상의 모듈, 서브-프로그램, 또는 코드의 일부를 저장하는 파일) 내에 저장될 수 있다. 컴퓨터 프로그램은 하나의 컴퓨터 상에서 또는 하나의 사이트에 위치되거나 여러 사이트들에 걸쳐서 분산되고 통신 네트워크에 의하여 상호접속되는 여러 컴퓨터들 상에서 실행되도록 구현될 수 있다.
몇몇 구성들은 하나 이상의 인터페이스를 통하여 호출되고 있는 다른 프로그램 코드와 상호작용하는 호출 프로그램 코드가 있는 환경에서 하나 이상의 애플리케이션 프로그래밍 인터페이스(application programming interfaces; API)를 포함하는 소프트웨어 프로세스로서 구현된다. 다양한 기능 호출(call), 메시지 또는 다양한 종류의 파라미터들을 포함할 수 있는 다른 타입의 호출들(invocations)은, API들을 통해서 호출하는 프로그램 및 호출되는 코드 사이에서 전송될 수 있다. 추가적으로, API는 호출 프로그램 코드에게 API에서 정의되고 호출된 프로그램 코드에서 구현되는 데이터 타입 또는 클래스를 사용하는 능력을 제공할 수 있다.
하나 이상의 API들이 몇몇 구성들에서 사용될 수도 있다. API는 상이한 프로그램 코드 컴포넌트 또는 하드웨어 컴포넌트("API 호출 컴포넌트")가 하나 이상의 기능, 방법, 프로시저, 데이터 구조, 클래스, 및/또는 API 구현 컴포넌트에 의하여 제공되는 다른 서비스에 액세스하고 사용하도록 하는 프로그램 코드 컴포넌트 또는 하드웨어 컴포넌트("API 구현 컴포넌트")에 의하여 구현되는 인터페이스이다. API는 API 호출 컴포넌트 및 API 구현 컴포넌트 사이에서 전달되는 하나 이상의 파라미터를 정의할 수 있다.
API는 API 호출 컴포넌트의 개발자(제 3 자 개발자일 수 있음)가 API 구현 컴포넌트에 의하여 제공되는 특정된 피쳐를 이용하도록 한다. 하나의 API 호출 컴포넌트가 있을 수도 있고 또는 두 개 이상의 이러한 컴포넌트가 존재할 수도 있다. API는 애플리케이션으로부터의 서비스에 대한 요청을 지원하도록 컴퓨팅 시스템 또는 프로그램 라이브러리가 제공하는 소스 코드 인터페이스일 수 있다. 운영 체제(OS)는 OS 상에서 실행중인 애플리케이션이 하나 이상의 그러한 API를 호출하게 하는 다수의 API를 가질 수 있고, 서비스(프로그램 라이브러리와 같음)는 그 서비스를 사용하는 애플리케이션이 하나 이상의 그러한 API를 호출하게 할 수 있는 다수의 API를 가질 수 있다. API는 애플리케이션이 제작되면 해석되거나 컴파일될 수 있는 프로그래밍 언어의 관점에서 특정될 수 있다.
몇몇 구성들에서, API 구현 컴포넌트는 두 개 이상의 API를 제공할 수도 있는데, 각각은 API 구현 컴포넌트에 의하여 구현되는 상이한 양태의 기능성에 액세스하는 상이한 양태의 또는 상이한 양태를 가지는 상이한 뷰를 제공한다. 예를 들어, API 구현 컴포넌트의 하나의 API는 제 1 세트의 기능을 제공할 수 있고 제 3 자 개발자에 노출될 수 있고, API 구현 컴포넌트의 다른 API는 감춰질 수 있고(노출되지 않음) 제 1 세트의 기능의 서브세트를 제공하고, 또한 다른 세트의 기능, 예컨대 제 1 세트의 기능에 없는 테스팅 또는 디버깅 기능을 제공할 수 있다. 다른 구성에서, API 구현 컴포넌트는 스스로 하나 이상의 다른 컴포넌트를 하재(下在) API를 통하여 호출하고, 따라서 API 호출 컴포넌트 및 API 구현 컴포넌트 모두일 수도 있다.
API는 API 구현 컴포넌트의 특정된 피쳐에 액세스하고 이를 사용할 경우 API 호출 컴포넌트가 사용하는 언어 및 파라미터를 정의한다. 예를 들어, API 호출 컴포넌트는 API에 의하여 노출되는 하나 이상의 API 호출 또는 소환(invocation)(예를 들어 기능 또는 방법 호출에 의하여 구현됨)을 통하여 API 구현 컴포넌트의 특정된 피쳐에 액세스하고, 데이터 및 제어 정보를 파라미터를 사용하여 호출 또는 소환을 통하여 전달한다. API 구현 컴포넌트는 API 호출 컴포넌트로부터의 API 호출에 응답하여, API를 통해서 값을 반환할 수도 있다. API가 API 호출의 신택스 및 결과(예를 들어, API 호출을 어떻게 소환할 것인지 및 API 호출이 무엇을 하는지)를 정의하는 반면에, API는 API 호출이 API 호출에 의하여 특정되는 기능을 어떻게 달성하는지를 드러내지 않을 수도 있다. 다양한 API 호출이 호출측(API 호출 컴포넌트)과 API 구현 컴포넌트 사이의 하나 이상의 애플리케이션 프로그래밍 인터페이스를 통하여 전송된다. API 호출을 전송하는 것은, 기능 호출 또는 메시지를 발급(issuing), 개시, 소환(invoking), 호출(calling), 수신, 반환하는 것, 또는 이에 응답하는 것을 포함할 수도 있다. 다르게 말하면, 전송은 API 호출 컴포넌트 또는 API 구현 컴포넌트 중 하나에 의한 동작을 기술할 수 있다. 기능 호출 또는 API의 다른 호출은 하나 이상의 파라미터를 파라미터 목록 또는 다른 구조를 통하여 전송 또는 수신할 수도 있다. 파라미터는 상수, 키, 데이터 구조, 오브젝트, 오브젝트 클래스, 변수, 데이터 타입, 포인터, 어레이, 목록 또는 API을 통하여 전달될 데이터 또는 다른 아이템을 참조하기 위한 기능 또는 방법 또는 다른 방식으로의 포인터일 수 있다.
더욱이, 데이터 타입 또는 클래스는 API에 의하여 제공되고 API 구현 컴포넌트에 의하여 구현될 수도 있다. 그러므로, API 호출 컴포넌트는 변수를 선언하고, 포인터를 사용하며, API 내에 제공되는 정의를 사용하여, 이러한 타입 또는 클래스의 상수 값을 사용하거나 인스턴스화할 수 있다.
일반적으로, API는 API 구현 컴포넌트에 의하여 제공되는 서비스 또는 데이터에 액세스하거나, API 구현 컴포넌트에 의하여 제공되는 동작 또는 계산의 수행을 개시하도록 사용될 수 있다. 일 예로서는, API 구현 컴포넌트 및 API 호출 컴포넌트는 각각 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 또는 다른 모듈 중 임의의 하나일 수도 있다(API 구현 컴포넌트 및 API 호출 컴포넌트가 동일하거나 서로 상이한 타입의 모듈일 수도 있다는 것이 이해되어야 한다). API 구현 컴포넌트는 몇 가지 경우들에서 적어도 부분적으로 펌웨어, 마이크로코드, 또는 다른 하드웨어 로직으로 구현될 수도 있다. 몇몇 구성들에서, API는 클라이언트 프로그램이 소프트웨어 개발 키트(Software Development Kit; SDK) 라이브러리에 의하여 제공되는 서비스를 사용하도록 허용할 수도 있다. 다른 구성에서, 애플리케이션 또는 다른 클라이언트 프로그램은 애플리케이션 프레임워크에 의하여 제공되는 API를 사용할 수도 있다. 이러한 구성에서, 애플리케이션 또는 클라이언트 프로그램은 SDK에 의하여 제공되고 API에 의하여 제공되는 기능 또는 방법으로의 호(call)를 통합하거나, SDK에서 정의되고 API에 의하여 제공되는 데이터 타입 또는 오브젝트를 사용할 수도 있다. 애플리케이션 프레임워크는 이러한 구성에서, 프레임워크에 의하여 정의되는 다양한 이벤트에 응답하는 프로그램에 대한 메인 이벤트 루프를 제공할 수도 있다. API는 애플리케이션이 이벤트 및 이벤트에 대한 응답을 애플리케이션 프레임워크를 사용하여 규정하도록 한다. 몇 가지 구현형태들에서, API 호출은 입력 기능 및 상태, 출력 기능 및 상태, 처리 기능, 전력 상태, 스토리지 용량 및 상태, 통신 능력, 등과 같은 양태에 관련되는 것들을 포함하는, 하드웨어 디바이스의 기능 또는 상태를 애플리케이션에 보고할 수 있고, API는 부분적으로 펌웨어, 마이크로코드, 또는 부분적으로 하드웨어 컴포넌트에서 실행되는 다른 저레벨 로직에 의하여 구현될 수도 있다.
API 호출 컴포넌트는 네트워크를 거쳐 API를 통해 API-구현 컴포넌트와 통신하는, 로컬 컴포넌트(즉, API 구현 컴포넌트와 동일한 데이터 처리 시스템 상의 컴포넌트) 또는 원격 컴포넌트(즉, API-구현 컴포넌트와는 상이한 데이터 처리 시스템 상의 컴포넌트)일 수도 있다. API 구현 컴포넌트가 API 호출 컴포넌트로서도 역할을 할 수 있다는 것(즉, 이것은 상이한 API 구현 컴포넌트에 의하여 노출된 API로 API 호출을 할 수도 있음) 및 API 호출 컴포넌트가 상이한 API 호출 컴포넌트로 노출되는 API를 구현함으로써 API 구현 컴포넌트로서의 역할을 역시 할 수도 있다는 것이 이해되어야 한다.
API는 상이한 프로그래밍 언어로 작성된 다수의 API 호출 컴포넌트가 API 구현 컴포넌트와 통신하게 할 수 있다(따라서 API는 호출 및 반환을 API 구현 컴포넌트와 API 호출 컴포넌트 사이에서 전환하기 위한 피쳐를 포함할 수도 있다). 그러나 API는 특정한 프로그래밍 언어의 관점에서 구현될 수 있다. API 호출 컴포넌트는, 하나의 구성에서, 상이한 제공자로부터의 API, 즉, OS 제공자로부터의 한 세트의 API 및 플러그-인 제공자로부터의 다른 세트의 API 및 다른 제공자(예를 들어 소프트웨어 라이브러리의 제공자) 또는 다른 세트의 API의 제작자로부터의 다른 세트의 API를 호출할 수 있다.
후속하는 설명은 본 발명의 기술의 몇 가지 구성들이 구현될 수 있는 하나의 예시적인 API 아키텍처를 설명한다.
도 5 는 본 발명의 기술의 몇몇 구성들에서 사용될 수 있는 예시적인 API 아키텍처를 도시하는 블록도이다. 도 5 에 도시된 바와 같이, API 아키텍처(500)는 API(510)를 구현하는 API 구현 컴포넌트(515)(예를 들어, 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)를 포함한다. API(510)는 API-호출 컴포넌트(505)에 의하여 사용될 수 있는 하나 이상의 기능, 방법, 클래스, 오브젝트, 프로토콜, 데이터 구조, 포맷 및/또는 API-구현 컴포넌트의 다른 피쳐를 규정한다. API(510)는 어떻게 API 구현 컴포넌트 내의 기능이 API 호출 컴포넌트로부터 파라미터를 수신하는지 그리고 어떻게 그 기능이 결과를 API 호출 컴포넌트로 반환하는지를 규정하는 적어도 하나의 호출 규약을 규정할 수 있다. API 호출 컴포넌트(505)(예를 들어, 운영 체제, 라이브러리, 디바이스 드라이버, API, 애플리케이션 프로그램, 소프트웨어 또는 다른 모듈)는 API(510)에 의하여 규정되는 API 구현 컴포넌트(515)의 피쳐를 액세스하고 사용하는 API 호출을 API(510)를 통해서 한다. API 구현 컴포넌트(515)는 API 호에 응답하여 값을 API(510)를 통해 API 호출 컴포넌트(505)로 반환할 수 있다.
API 구현 컴포넌트(515)가 추가적 기능, 방법, 클래스, 데이터 구조, 및/또는 API(510)에 의하여 규정되지 않고 API 호출 컴포넌트(505)에게 이용가능하지 않는 다른 피쳐를 포함할 수 있다는 것이 인정될 것이다. API 호출 컴포넌트(505)가 API 구현 컴포넌트(515)와 동일한 시스템에 있을 수 있거나 원격으로 위치될 수 있고 API 구현 컴포넌트(515)에 API(510)를 사용하여 네트워크를 거쳐 액세스할 수 있다는 것이 이해되어야 한다. 도 5 가 API(510)와 상호작용하는 단일 API 호출 컴포넌트(505)를 예시하는 반면에, API 호출 컴포넌트(505)와 상이한 언어(또는 동일한 언어)로 작성될 수 있는 다른 API 호출 컴포넌트가 그 API(510)를 사용할 수 있다는 것이 이해되어야 한다.
API 구현 컴포넌트(515), API(510), 및 API 호출 컴포넌트(505)는 머신-판독가능 매체에 저장될 수 있고, 이것은 정보를 머신(예를 들어, 컴퓨터 또는 다른 데이터 처리 시스템)에 의하여 판독가능한 형태로 저장하기 위한 임의의 메커니즘을 포함한다. 예를 들어, 머신-판독가능 매체는 자기 디스크, 광학 디스크, 랜덤 액세스 메모리, 판독 전용 메모리, 플래시 메모리 디바이스, 등을 포함한다.
후속하는 설명은 대상 기술의 양태들이 구현될 수 있는 하나의 예시적인 시스템을 설명한다.
도 6 은 본 기술의 몇몇 구현예들이 구현될 수 있는 시스템(600)을 개념적으로 예시한다. 시스템(600)은 컴퓨터, 폰, PDA, 또는 다른 종류의 전자 디바이스일 수 있다. 몇몇 구성들에서, 시스템(600)은 그 안에 하나 이상의 프로세서가 내장되는 텔레비전을 포함한다. 이러한 시스템은 다양한 다른 타입의 컴퓨터 판독가능 미디어에 대한 다양한 타입의 컴퓨터 판독가능 미디어 및 인터페이스를 포함한다. 시스템(600)은 버스(605), 처리 유닛(들)(610), 시스템 메모리(615), 판독-전용 메모리(ROM)(620), 스토리지 디바이스(625), 선택적 입력 디바이스 인터페이스(630), 출력 디바이스 인터페이스(635), 및 네트워크 인터페이스(640)를 포함한다.
버스(605)는 총괄하여 모든 시스템, 주변 기기 장치, 및 전자 시스템(600)의 다수의 내부 디바이스들을 통신하도록 연결하는 칩셋 버스들을 나타낸다. 예를 들면, 버스(605)는 처리 유닛(들)(610)을 판독-전용 메모리(620), 시스템 메모리(615), 및 스토리지 디바이스(625)와 통신하도록 연결한다.
이러한 다양한 메모리 유닛들로부터, 처리 유닛(들)(610)은 대상 기술의 프로세스들을 실행하기 위하여 실행하기 위한 명령 및 처리할 데이터를 취출한다. 처리 유닛(들)은 단일 프로세서 또는 상이한 구현형태들에서의 멀티코어 프로세서일 수 있다.
판독-전용 메모리(620)는 정적 데이터 및 처리 유닛(들)(610) 및 전자 시스템(600)의 다른 모듈에 의하여 요구되는 명령들을 저장한다. 반면에, 스토리지 디바이스(625)는 읽고 쓰는 메모리 디바이스이다. 이러한 디바이스는 시스템(600)이 오프일 때에 명령 및 데이터를 저장하는 비-휘발성 메모리 유닛이다. 대상 기술의 몇몇 구현예들은 대용량-스토리지 디바이스(자기적 또는 광학적 디스크 및 이것의 대응하는 디스크 드라이브와 같음)를 스토리지 디바이스(625)로서 사용한다.
다른 구현예들은 착탈식 스토리지 디바이스(플래시 드라이브, 플로피 디스크, 및 이것의 대응하는 디스크 드라이브와 같음)를 스토리지 디바이스(625)로서 사용한다. 스토리지 디바이스(625)와 유사하게, 시스템 메모리(615)는 읽고 쓰는 메모리 디바이스이다. 그러나, 스토리지 디바이스(625)와 다르게, 시스템 메모리(615)는 랜덤 액세스 메모리와 같은 휘발성 읽고 쓰는 메모리이다. 시스템 메모리(615)는 런타임에 프로세서가 필요로 하는 명령 및 데이터 중 일부를 저장한다. 몇 가지 구현형태들에서, 대상 기술의 프로세스는 시스템 메모리(615), 스토리지 디바이스(625), 및/또는 판독-전용 메모리(620)에 저장된다. 예를 들어, 다양한 메모리 유닛은 몇몇 구현형태에 따라서 멀티미디어 아이템을 처리하기 위한 하나의 명령들을 포함한다. 이러한 다양한 메모리 유닛들로부터, 처리 유닛(들)(610)은 몇 가지 구현예들의 프로세스들을 실행하기 위하여 실행하기 위한 명령 및 처리할 데이터를 취출한다.
버스(605)는 또한 선택적인 입력 및 출력 인터페이스(630 및 635)에 연결된다. 선택적인 입력 디바이스 인터페이스(630)는 사용자가 정보 및 선택 커맨드를 시스템으로 통신하도록 한다. 선택적인 입력 인터페이스(630)는 영숫자 키보드 및 포인팅 디바이스("커서 제어 디바이스"라고도 불림)와 인터페이싱할 수 있다. 선택적인 출력 인터페이스(635)는 시스템(600)에 의하여 제공되는 디스플레이 이미지를 제공할 수 있다. 선택적인 출력 인터페이스(635)는 프린터 및 디스플레이 디바이스, 예컨대 음극선관(CRT) 또는 액정 디스플레이(LCD)와 인터페이싱 할 수 있다. 몇몇 구현형태는 입력 및 출력 디바이스 모두로서 기능하는 터치스크린과 같은 디바이스들과 인터페이싱할 수 있다.
마지막으로, 도 6 에 도시된 바와 같이, 버스(605)는 또한 시스템(600)을 네트워크 어댑터(미도시)를 통하여 네트워크 인터페이스(640)로 커플링한다. 이러한 방식으로, 컴퓨터는 컴퓨터의 네트워크(근거리 네트워크("LAN"), 광역 네트워크("WAN"와 같음), 또는 인트라넷, 또는 네트워크들의 상호접속된 네트워크, 예컨대 인터넷의 일부일 수 있다. 전자 시스템(600)의 임의의 또는 모든 컴포넌트들이 본 기술과 공동으로 사용될 수 있다.
위에서 설명된 이러한 기능들은 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 디지털 전자적 회로부 내에서 구현될 수 있다. 기법들은 하나 이상의 컴퓨터 프로그램 제품을 사용하여 구현될 수 있다. 프로그래밍가능한 프로세서 및 컴퓨터들이 모바일 디바이스 내에 포함되거나 이로서 패키징될 수 있다. 프로세스 및 로직 흐름은 하나 이상의 프로그래밍가능한 프로세서에 의하여 그리고 하나 이상의 프로그래밍가능한 로직 회로부에 의하여 수행될 수 있다. 범용 및 특수 목적 컴퓨팅 디바이스 및 스토리지 디바이스는 통신 네트워크를 통해서 상호접속될 수 있다.
몇몇 구현예들은 전자적 컴포넌트, 예컨대 마이크로프로세서, 스토리지 및 컴퓨터 프로그램 명령을 머신-판독가능 또는 컴퓨터-판독가능 매체(대안적으로 컴퓨터-판독가능 저장 미디어, 머신-판독가능 미디어, 또는 머신-판독가능 스토리지 미디어라고 지칭됨) 내에 저장하는 메모리를 포함한다. 이러한 컴퓨터-판독가능 미디어의 몇몇 예들은 RAM, ROM, 판독-전용 콤팩트 디스크(CD-ROM), 기록가능한 콤팩트 디스크(CD-R), 재기록가능 콤팩트 디스크(CD-RW), 판독-전용 디지털 다기능 디스크(예를 들어, DVD-ROM, 듀얼-층 DVD-ROM), 다양한 기록가능한/재기록가능 DVD(예를 들어, DVD-RAM, DVD-RW, DVD+RW, 등), 플래시 메모리(예를 들어, SD 카드, mini-SD 카드, 마이크로-SD 카드, 등), 자기적 및/또는 고상 하드 드라이브, 판독-전용 및 기록가능한 블루레이(Blu-Rayㄾ) 디스크, 고밀도 광학 디스크, 임의의 다른 광학적 또는 자기적 미디어, 및 플로피 디스크를 포함한다. 컴퓨터-판독가능 미디어는 적어도 하나의 처리 유닛에 의하여 실행가능한 컴퓨터 프로그램을 저장할 수 있고 다양한 동작들을 수행하기 위한 명령들을 세트를 포함한다. 컴퓨터 프로그램 또는 컴퓨터 코드의 예들은 머신 코드, 예컨대 컴파일러에 의하여 생성되는 것, 및 해독기(interpreter)를 사용하여 컴퓨터, 전자적 컴포넌트, 또는 마이크로프로세서에 의하여 실행되는 고레벨 코드를 포함하는 파일들을 포함한다.
위의 논의가 주로 소프트웨어를 실행하는 마이크로프로세서 또는 멀티코어 프로세서를 참조하지만, 몇몇 구현예들은 하나 이상의 집적 회로, 예컨대 주문형 집적회로(ASICs) 또는 필드 프로그램가능 게이트 어레이(FPGAs)에 의하여 수행된다. 몇 가지 구현형태에서, 이러한 집적 회로는 회로 자체에 저장된 명령들을 실행한다.
본 명세서 및 본 출원의 임의의 청구항에서 사용될 때, 용어 "컴퓨터", "서버", "프로세서", 및 "메모리"는 모두 전자 또는 다른 기술적인 디바이스를 지칭한다. 이러한 용어는 사람 또는 사람들의 그룹을 제외한다. 구체화의 목적을 위하여, 디스플레이 또는 디스플레이함이라는 용어는 전자 디바이스 상에서의 디스플레이를 의미한다. 비-일시적 본 명세서 및 본 출원의 임의의 청구항에서 사용될 때, 용어 "컴퓨터 판독가능 매체" 및 "컴퓨터 판독가능 미디어"는 전체적으로 정보를 컴퓨터에 의하여 판독가능한 형태로 저장하는 비일시적, 유형의(tangible), 물리적 오브젝트로 한정된다. 이러한 용어는 임의의 무선 신호, 유선 다운로드 신호, 및 임의의 다른 한시적(ephemeral) 신호를 제외한다.
사용자와의 상호작용을 제공하기 위하여, 본 명세서에서 설명된 기술 요지의 구현형태는 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스, 예를 들어, CRT(cathode ray tube), 또는 LCD(liquid crystal display) 모니터 및 사용자가 입력을 컴퓨터에 제공할 수 있도록 사용하는 키보드 및 포인팅 디바이스, 예를 들어, 마우스 또는 트랙볼을 포함하는 컴퓨터 상에 구현될 수 있다. 디바이스의 다른 종류가 사용자와의 상호작용을 제공하기 위하여 역시 사용될 수 있다; 예를 들어, 사용자에게 제공된 피드백은 감지 피드백의 임의의 형태, 예를 들어, 시각적 피드백, 청각적 피드백, 또는 촉각적 피드백일 수 있다; 그리고 사용자로부터의 입력은 음향, 발화, 또는 촉각적 입력을 포함하는 임의의 형태로 수신될 수 있다. 추가적으로, 컴퓨터는 문서를 사용자에 의하여 사용되는 디바이스로 전송하고 이로부터 문서를 수신함으로써 그 사용자와 상호작용할 수 있다; 예를 들어, 웹 페이지를 사용자의 클라이언트 디바이스 상의 웹 브라우저로 웹 브라우저로부터 수신된 요청에 응답하여 전송함으로써 상호작용할 수 있다.
본 명세서에서 설명된 기술 요지의 구성들은 백 엔드 컴포넌트, 예를 들어, 데이터 서버로서 포함하거나 미들웨어 컴포넌트, 예를 들어, 애플리케이션 서버를 포함하거나, 또는 프론트 엔드 컴포넌트, 예를 들어, 사용자가 본 명세서에서 설명된 기술 요지의 구현형태와 상호작용하기 위하여 사용할 수 있는 그래픽 사용자 인터페이스 또는 웹 브라우저를 가지는 클라이언트 컴퓨터, 또는 하나 이상의 이러한 백 엔드, 미들웨어, 또는 프론트 엔드 컴포넌트의 조합을 포함하는 컴퓨팅 시스템으로 구현될 수 있다. 이 시스템의 컴포넌트는 디지털 데이터 통신의 임의의 형태 또는 매체, 예를 들어, 통신 네트워크에 의하여 상호접속될 수 있다. 통신 네트워크의 예들은 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터-네트워크(예를 들어 인터넷), 및 단대단 네트워크(예를 들어, 애드혹 단대단 네트워크)를 포함한다.
컴퓨팅 시스템은 클라이언트 및 서버를 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 멀리 떨어져 있으며 통상적으로 통신 네트워크를 통하여 상호작용한다. 클라이언트 및 서버의 관련성은 개별적인 컴퓨터에서 실행하며 서로 클라이언트-서버 관련성을 가지는 컴퓨터 프로그램에 힘입어 대두한다. 몇몇 구성들에서 서버는 데이터(예를 들어, HTML 페이지)를 클라이언트 디바이스 디바이스로 송신한다(예를 들어, 데이터를 클라이언트 디바이스와 상호작용하고 있는 사용자에게 디스플레이하고 그로부터 사용자 입력을 수신하기 위한 목적). 클라이언트 디바이스에서 생성되는 데이터(예를 들어, 사용자 상호작용의 결과)는 서버에 있는 클라이언트 디바이스로부터 수신될 수 있다.
개시된 프로세스에서의 단계들의 특정한 순서 또는 계층구조는 예시적인 접근법 중의 일 예임이 이해된다. 설계 선호도에 기초하여, 프로세스에서의 단계의 특정 순서 또는 계층구조는 재정렬될 수 있다는 것 또는 모든 예시된 단계들이 실행될 수 있다는 것이 이해된다. 단계들 중 일부는 동시에 수행될 수 있다. 예를 들어, 어떤 상황에서는 멀티태스킹 및 병렬 처리가 이로울 수 있다. 더구나, 위에서 설명된 구성들에서의 여러 시스템 컴포넌트들의 분리는 모든 구성들에서 그러한 분리를 요구한다고 이해되지 않아야 하고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 함께 통합될 수 있거나 또는 다수의 소프트웨어 제품들로 패키지화될 수 있다는 것이 이해되어야 한다.
이전의 상세한 설명은 당업자가 본 명세서에 설명된 다양한 측면들을 실시하도록 제공된다. 이러한 양태에 대한 다양한 변형예는 이 기술분야의 숙련된 자에게 쉽사리 명확하게 될 것이고, 여기에 정의된 일반 원리들은 다른 양태에 적용될 수 있다. 따라서, 청구항들은 본 명세서에 도시된 측면들로 한정되도록 의도되지 않으며, 기술된 청구항과 일관되는 전체 범위와 상응한 것으로 이해되어야 하고, 단수 형태에서의 요소에 대한 참조는 구체적으로 진술되지 않는 한 "하나" 또는 "오직 하나"를 의미하도록 의도되지 않고 "하나 이상"을 의미하도록 의도된다. 그렇지 않다고 구체적으로 진술되지 않으면, 용어 "몇몇"은 하나 이상을 지칭한다. 남성 대명사(예를 들어, 그의)는 여성 및 중성(예를 들어, 그녀의 및 그것의)을 포함하고 그 반대의 경우도 마찬가지이다. 존재한다면, 문서의 머리말 및 하부 머리말은 편의성의 위해서 사용된 것일 뿐이고 대상 기술을 한정하지 않는다.
"양태"와 같은 어구는 이러한 양태가 본 발명의 기술에 본질적이라는 것, 또는 이러한 양태가 본 발명의 기술의 모든 구성들에 적용된다는 것을 암시하지 않는다. 일 양태에 관련되는 개시는 모든 구성, 또는 하나 이상의 구성에 적용할 수 있다. 일 양태와 같은 어구는 하나 이상의 양태를 지칭할 수 있고 그 반대의 경우도 마찬가지이다. "구성"과 같은 어구는 이러한 구성이 본 발명의 기술에 본질적이라는 것, 또는 이러한 구성이 본 발명의 기술의 모든 구성들에 적용된다는 것을 암시하지 않는다. 하나의 구성에 관련되는 개시는 모든 구성, 또는 하나 이상의 구성들에 적용할 수 있다. 일 구성이라는 어구는 하나 이상의 구성을 지칭할 수 있고 그 반대의 경우도 마찬가지이다.
예시적 단어 "예시적인(exemple)" 은 본 명세서에서 "일 예 또는 예시로서의 역할을 하는"을 의미하도록 사용된다. "예시적인" 것으로서 본원에서 설명되는 임의의 양태 또는 디자인은 반드시 다른 양태 또는 디자인보다 바람직하거나 유익하다고 생각할 필요가 없다.
당업자에게 알려지거나 추후에 알려질, 본 개시물 전체에서 설명된 다양한 양태의 구성요소들에 대한 모든 구조적 및 기능성 명시적 균등물은 참조에 의하여 본원에 명시적으로 통합되고, 청구항에 의하여 망라되는 것으로 의도된다.

Claims (24)

  1. 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법으로서,
    마스터 컴퓨팅 디바이스로부터의 액세스를 위하여 이용가능한 복수 개의 호스트 컴퓨팅 디바이스를 결정하는 단계;
    결정된 복수 개의 호스트 컴퓨팅 디바이스에 대한 이용가능한 리소스의 세트를 결정하는 단계;
    상기 이용가능한 리소스의 세트 중 이용가능한 리소스에 액세스하기 위한 디바이스를 결정된 복수 개의 호스트 컴퓨팅 디바이스 중에서 선택하는 단계;
    상기 선택된 디바이스 상의 상기 이용가능한 리소스에 액세스하기 위한 최적 물리적 통신 채널을 결정하는 단계; 및
    결정된 최적 물리적 통신 채널을 통하여 상기 선택된 디바이스 상의 상기 리소스에 액세스하는 단계를 포함하는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  2. 제 1 항에 있어서,
    상기 복수 개의 호스트 컴퓨팅 디바이스를 결정하는 단계는 사용자의 지리적 위치(geolocation)에 기초하는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  3. 제 1 항에 있어서,
    상기 마스터 컴퓨팅 디바이스로부터의 액세스를 위하여 이용가능한 복수 개의 호스트 컴퓨팅 디바이스를 결정하는 단계는, 네트워크 기반구조를 통해 발생하는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  4. 제 1 항에 있어서,
    상기 최적 물리적 통신 채널은 네트워크 연결을 포함하는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  5. 제 4 항에 있어서,
    상기 네트워크 연결은 근거리 네트워크 또는 애드-혹 네트워크에 포함되는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  6. 제 4 항에 있어서,
    상기 네트워크 연결은 광역 네트워크 또는 네트워크들의 네트워크에 포함되는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  7. 제 1 항에 있어서,
    상기 최적 물리적 통신 채널은 단-대-단 통신 채널을 포함하는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  8. 제 1 항에 있어서,
    상기 디바이스는 적어도 하나의 입력 디바이스 및 하나의 출력 디바이스를 포함하는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  9. 제 8 항에 있어서,
    상기 하나의 출력 디바이스는 모니터인, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  10. 제 1 항에 있어서,
    상기 이용가능한 리소스는 상기 디바이스의 디스플레이 컴포넌트, 오디오 컴포넌트 또는 네트워킹 컴포넌트를 포함하는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  11. 제 1 항에 있어서,
    상기 선택된 디바이스 상의 상기 리소스에 액세스하는 단계는,
    상기 선택된 디바이스의 디스플레이 컴포넌트 상의 디스플레이를 위하여 네트워크를 거쳐 데이터를 송신하는 단계를 포함하는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  12. 제 1 항에 있어서,
    상기 선택된 디바이스 상의 상기 이용가능한 리소스에 액세스하기 위한 최적 물리적 통신 채널을 결정하는 단계는,
    복수 개의 기준들에 기초하여 최적 채널을 결정하는 단계를 포함하는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  13. 제 12 항에 있어서,
    상기 복수 개의 기준들은 이용가능한 대역폭, 신호 강도, 신호 품질, 및 레이턴시를 포함하는, 디바이스의 애드-혹 공유를 위한 컴퓨터-구현 방법.
  14. 디바이스의 애드-혹 공유에 대한 요청을 처리하기 위한 컴퓨터-구현 방법으로서,
    마스터 컴퓨팅 디바이스의 지리적 위치가 호스트 컴퓨팅 디바이스에 대한 임계 근접도 이내인 경우, 제 1 물리적 통신 채널을 통하여, 상기 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하기 위한 마스터 컴퓨팅 디바이스로부터의 요청을 수신하는 단계로서, 상기 호스트 컴퓨팅 디바이스는 네트워크를 거친 공유를 위하여 등록된 하나 이상의 리소스를 포함하는, 요청 수신 단계;
    상기 마스터 컴퓨팅 디바이스가 상기 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하도록 인가되는지를 결정하는 단계;
    제 2 물리적 통신 채널을 통하여, 선택된 디바이스 상의 리소스에 액세스하려는 요청을 수신하는 단계;
    상기 마스터 컴퓨팅 디바이스에 상기 리소스로의 액세스가 이미 승인된 바 있는지를 결정하는 단계; 및
    상기 리소스로의 액세스가 상기 마스터 컴퓨팅 디바이스에 이전에 승인되었다면 상기 마스터 컴퓨팅 디바이스로 통지를 송신하는 단계를 포함하는, 디바이스의 애드-혹 공유에 대한 요청을 처리하기 위한 컴퓨터-구현 방법.
  15. 제 14 항에 있어서,
    상기 마스터 컴퓨팅 디바이스가 상기 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하도록 인가되는지를 결정하는 것은,
    인가 문자열이 상기 마스터 컴퓨팅 디바이스로부터의 요청 내에 포함되어 있는지를 결정하는 것을 포함하는, 디바이스의 애드-혹 공유에 대한 요청을 처리하기 위한 컴퓨터-구현 방법.
  16. 제 14 항에 있어서,
    상기 마스터 컴퓨팅 디바이스에 상기 리소스로의 액세스가 이미 승인된 바 있는지를 결정하는 단계는,
    상기 리소스로의 액세스를 승인하는 인증 토큰을 수신하는 것을 포함하는, 디바이스의 애드-혹 공유에 대한 요청을 처리하기 위한 컴퓨터-구현 방법.
  17. 제 16 항에 있어서,
    상기 마스터 컴퓨팅 디바이스로 통지를 송신하는 단계는,
    상기 리소스로의 액세스를 승인하는 상기 인증 토큰을 송신하는 것을 포함하는, 디바이스의 애드-혹 공유에 대한 요청을 처리하기 위한 컴퓨터-구현 방법.
  18. 제 14 항에 있어서,
    상기 제 1 및 제 2 물리적 통신 채널은 상이한 타입의 통신 인터페이스를 포함하는, 디바이스의 애드-혹 공유에 대한 요청을 처리하기 위한 컴퓨터-구현 방법.
  19. 제 14 항에 있어서,
    상기 제 1 및 제 2 물리적 통신 채널은 동일한 타입의 통신 인터페이스를 포함하는, 디바이스의 애드-혹 공유에 대한 요청을 처리하기 위한 컴퓨터-구현 방법.
  20. 디바이스의 애드-혹 공유를 위한 시스템으로서,
    메모리;
    하나 이상의 프로세서; 및
    상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의하여 실행되도록 구성되는 하나 이상의 모듈을 포함하고, 상기 모듈은,
    마스터 컴퓨팅 디바이스로부터의 액세스에 대하여 이용가능한 복수 개의 호스트 컴퓨팅 디바이스를 결정하고, 네트워크를 거친 액세스를 위하여, 결정된 복수 개의 호스트 컴퓨팅 디바이스에 대한 이용가능한 리소스의 세트를 결정하도록 구성되는 디바이스 이용가능성 모듈;
    상기 결정된 복수 개의 호스트 컴퓨팅 디바이스 중에서 상기 이용가능한 리소스의 세트 중 이용가능한 리소스에 액세스하기 위한 디바이스의 선택을 수행하도록 구성되는 디바이스 선택 모듈로서, 디바이스의 선택은 상기 마스터 컴퓨팅 디바이스로부터의 네트워크를 거친 요청에 기초하는, 상기 디바이스 선택 모듈; 및
    상기 이용가능한 리소스에 액세스하기 위하여, 상기 네트워크를 거쳐 상기 선택된 디바이스와 통신하기 위한 최적 물리적 통신 채널을 결정하도록 구성되는, 디바이스 통신 모듈을 포함하는, 디바이스의 애드-혹 공유를 위한 시스템.
  21. 제 20 항에 있어서,
    상기 결정된 최적 물리적 통신 채널을 통하여 상기 선택된 디바이스 상의 리소스에 액세스하도록 구성되는 리소스 액세스 모듈을 더 포함하는, 디바이스의 애드-혹 공유를 위한 시스템.
  22. 제 21 항에 있어서,
    상기 리소스 액세스 모듈은:
    제 1 물리적 통신 채널을 통하여, 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하기 위한 마스터 컴퓨팅 디바이스로부터의 요청을 수신하되, 상기 호스트 컴퓨팅 디바이스는 네트워크를 거친 공유를 위하여 등록된 하나 이상의 리소스를 포함하고;
    상기 마스터 컴퓨팅 디바이스가 상기 호스트 컴퓨팅 디바이스 상의 리소스에 액세스하도록 인가되는지를 결정하며;
    제 2 물리적 통신 채널을 통하여, 상기 선택된 디바이스 상의 리소스에 액세스하려는 요청을 수신하고;
    상기 마스터 컴퓨팅 디바이스에 상기 리소스로의 액세스가 이미 승인된 바 있는지를 결정하며; 그리고
    상기 리소스로의 액세스가 상기 마스터 컴퓨팅 디바이스에 이전에 승인되었다면 상기 마스터 컴퓨팅 디바이스로 통지를 송신하도록 더욱 구성되는, 디바이스의 애드-혹 공유를 위한 시스템.
  23. 저장된 명령을 포함하는 비-일시적 머신-판독가능 매체로서,
    상기 명령은 머신에 의하여 실행되는 경우 상기 머신으로 하여금:
    마스터 컴퓨팅 디바이스로부터의 액세스에 대하여 이용가능한 복수 개의 호스트 컴퓨팅 디바이스를 결정하는 것;
    결정된 복수 개의 호스트 컴퓨팅 디바이스에 대한 이용가능한 리소스의 세트를 결정하는 것;
    상기 마스터 컴퓨팅 디바이스로부터의 요청에 기초하여 상기 이용가능한 리소스의 세트 중 이용가능한 리소스에 액세스하기 위한 디바이스를 상기 결정된 복수 개의 호스트 컴퓨팅 디바이스로부터 선택하는 것; 및
    상기 선택된 디바이스 상에서 이용가능한 리소스에 액세스하기 위한 최적 물리적 통신 채널을 결정하는 것을 포함하는 동작을 수행하도록 하는, 비-일시적 머신-판독가능 매체.
  24. 제 23 항에 있어서,
    상기 머신에 의하여 실행되는 경우 상기 머신으로 하여금:
    상기 마스터 컴퓨팅 디바이스가 상기 선택된 디바이스 상의 이용가능한 리소스에 액세스하도록 인가되는지 결정하는 것; 및
    상기 마스터 컴퓨팅 디바이스가 인가되면 상기 결정된 최적 물리적 통신 채널을 통하여 상기 선택된 디바이스 상의 이용가능한 리소스에 액세스하는 것을 포함하는 추가적 동작을 수행하도록 하는, 저장된 추가적 명령을 포함하는, 비-일시적 머신-판독가능 매체.
KR1020157023556A 2013-02-07 2014-02-03 네트워크를 거치는 애드-혹 디바이스 공유 KR20150116875A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/762,293 US20140222941A1 (en) 2013-02-07 2013-02-07 Ad-hoc device sharing over a network
US13/762,293 2013-02-07
PCT/US2014/014477 WO2014123820A1 (en) 2013-02-07 2014-02-03 Ad-hoc device sharing over a network

Publications (1)

Publication Number Publication Date
KR20150116875A true KR20150116875A (ko) 2015-10-16

Family

ID=51260250

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157023556A KR20150116875A (ko) 2013-02-07 2014-02-03 네트워크를 거치는 애드-혹 디바이스 공유

Country Status (7)

Country Link
US (1) US20140222941A1 (ko)
EP (1) EP2954652A4 (ko)
KR (1) KR20150116875A (ko)
CN (1) CN105027525A (ko)
AU (1) AU2014215584B2 (ko)
CA (1) CA2900320A1 (ko)
WO (1) WO2014123820A1 (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102285158B1 (ko) 2014-09-01 2021-08-03 삼성전자주식회사 데이터 제공 방법 및 전자 장치
US9819902B2 (en) * 2015-03-19 2017-11-14 Microsoft Technology Licensing, Llc Proximate resource pooling in video/audio telecommunications
US10129085B2 (en) 2016-04-15 2018-11-13 Google Llc Determining network configurations for a modular computing entity
US10530851B1 (en) 2018-01-31 2020-01-07 Vivint, Inc. Distributed data center

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7212827B1 (en) * 2000-11-09 2007-05-01 Agere Systems Inc. Intelligent reminders for wireless PDA devices
US20040203797A1 (en) * 2002-09-05 2004-10-14 Jeremy Burr Method and apparatus for communications using distributed services in a mobile ad hoc network (MANET)
US8150907B2 (en) * 2003-05-29 2012-04-03 Brother Kogyo Kabushiki Kaisha Composite service providing system for a plurality of communicatively connected electronic devices
US7603494B2 (en) * 2005-01-05 2009-10-13 At&T Intellectual Property I, L.P. Home networking resource management
US8484178B1 (en) * 2006-02-27 2013-07-09 Marvell International Ltd. File sharing
EP3986043A1 (en) * 2006-07-03 2022-04-20 Nokia Technologies Oy A user-portable electronic device
US8285259B2 (en) * 2007-05-29 2012-10-09 Microsoft Corporation Resource aggregation in an opportunistic network
US8968087B1 (en) * 2009-06-01 2015-03-03 Sony Computer Entertainment America Llc Video game overlay
KR101527993B1 (ko) * 2008-04-05 2015-06-10 소우셜 커뮤니케이션즈 컴퍼니 가상 환경과의 인터페이스 방법
US8850052B2 (en) * 2008-09-30 2014-09-30 Apple Inc. System and method for simplified resource sharing
CN101459526B (zh) * 2008-12-15 2010-10-13 北京航空航天大学 基于服务发现的投影仪共享会议系统
KR20110020694A (ko) * 2009-08-24 2011-03-03 삼성전자주식회사 네트워크를 통한 기능 공유 방법 및 장치
US9306813B2 (en) * 2009-12-23 2016-04-05 Apple Inc. Efficient service advertisement and discovery in a peer-to-peer networking environment with cooperative advertisement
US8520613B2 (en) * 2010-05-17 2013-08-27 Qualcomm Incorporated Optimization of the presence information refresh for a wireless device
US8516039B2 (en) * 2010-10-01 2013-08-20 At&T Intellectual Property I, L.P. Apparatus and method for managing mobile device servers
CN102006680A (zh) * 2010-11-25 2011-04-06 北京格致璞科技有限公司 一种分体式电子相框系统、其操作方法和相框管理系统
US8621056B2 (en) * 2010-12-02 2013-12-31 Microsoft Corporation Enabling plural computing devices to communicate using a master account
US9332551B2 (en) * 2011-12-28 2016-05-03 Intel Corporation Opportunistic resource sharing between devices
US9270763B2 (en) * 2013-01-25 2016-02-23 Sony Corporation Method and apparatus for sharing electronic content

Also Published As

Publication number Publication date
WO2014123820A1 (en) 2014-08-14
CN105027525A (zh) 2015-11-04
EP2954652A1 (en) 2015-12-16
EP2954652A4 (en) 2016-09-21
AU2014215584A1 (en) 2015-08-13
US20140222941A1 (en) 2014-08-07
AU2014215584B2 (en) 2017-05-25
CA2900320A1 (en) 2014-08-14

Similar Documents

Publication Publication Date Title
WO2021164545A1 (zh) 在线文档显示方法、装置、设备及介质
TWI483120B (zh) 元資料驅動的應用程式與網路服務間的合作
US10725972B2 (en) Continuous and concurrent device experience in a multi-device ecosystem
US8392617B1 (en) Browsing context continuation across multiple devices
CA2889933C (en) Seamless tethering setup between phone and laptop using peer-to-peer mechanisms
JP6676039B2 (ja) ホストデバイスコンピューティング環境へのターゲットデバイスリソースの貸与
AU2013256430B2 (en) Determining access to comments
US10579442B2 (en) Inversion-of-control component service models for virtual environments
US20140040761A1 (en) Providing an update associated with a user-created point of interest
US10637804B2 (en) User terminal apparatus, communication system, and method of controlling user terminal apparatus which support a messenger service with additional functionality
US8200833B1 (en) Security mode based management of cookie data stores
US20160147400A1 (en) Tab based browser content sharing
US9436762B1 (en) Sharing a plug-in instance in a web client
KR20150004817A (ko) 사용자 인터페이스 웹 서비스
KR20150116875A (ko) 네트워크를 거치는 애드-혹 디바이스 공유
KR101739664B1 (ko) 이벤트 생성을 위한 시스템 및 방법
US9373148B2 (en) Connect social networking users who simultaneously check-in at a geolocation
US10904171B2 (en) Application based display layout system and method

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid