KR101871025B1 - 디바이스들의 애플리케이션들로의 제시 기법 - Google Patents

디바이스들의 애플리케이션들로의 제시 기법 Download PDF

Info

Publication number
KR101871025B1
KR101871025B1 KR1020147006685A KR20147006685A KR101871025B1 KR 101871025 B1 KR101871025 B1 KR 101871025B1 KR 1020147006685 A KR1020147006685 A KR 1020147006685A KR 20147006685 A KR20147006685 A KR 20147006685A KR 101871025 B1 KR101871025 B1 KR 101871025B1
Authority
KR
South Korea
Prior art keywords
application
user
options
virtualization
content
Prior art date
Application number
KR1020147006685A
Other languages
English (en)
Other versions
KR20140060309A (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 KR20140060309A publication Critical patent/KR20140060309A/ko
Application granted granted Critical
Publication of KR101871025B1 publication Critical patent/KR101871025B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1206Improving or facilitating administration, e.g. print management resulting in increased flexibility in input data format or job format or job type
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1224Client or server resources management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1244Job translation or job parsing, e.g. page banding
    • G06F3/1247Job translation or job parsing, e.g. page banding by conversion to printer ready format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1284Local printer device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)
  • Stored Programmes (AREA)

Abstract

하나 이상의 관리 구성요소들은 애플리케이션들 사이의 양방향 상호 작용을 중재한다. 상기 구성요소들은 워드 프로세싱, 화상 회의 또는 멀티미디어 애플리케이션과 같은 제 1 애플리케이션 및 프린터, 카메라 또는 멀티미디어 디바이스와 같은 물리적인 디바이스의 가상화인 제 2 애플리케이션 사이의 상호 작용을 중재한다. 게다가, 실시예들은 또한 서비스 제공자, 온라인 사업자 등에 대한 인터페이스를 제공하는 제 2 애플리케이션을 지원한다. 관리 구성요소(들)는 운영 시스템(OS)의 일부로 기능하여, OS가 상호 작용에 대한 공통 사용자 경험을 제시하고/하거나 제 2 애플리케이션으로부터 생성되는 경험을 제시하기 위하여 중개자 역할을 하는 것을 포함하여 상호 작용을 중재하는 것이 가능하고 유연성을 더 크게 하고 사용자 경험을 더 풍부하게 할 수 있는 것이 가능할 수 있다. 실시예들은 또한 애플리케이션들이 OS의 관리 구성요소(들)를 통해 서로 상호 작용하는 것이 가능하도록 통합 애플리케이션 프로그래밍 인터페이스(API)를 포함한다.

Description

디바이스들의 애플리케이션들로의 제시 기법{PRESENTING DEVICES AS APPLICATIONS}
대부분 사용자들의 우세한 관점에서는, 애플리케이션의 디바이스와의 상호 작용은 간단하다. 예를 들어, 워드 프로세싱 프로그램의 사용자가 문서를 인쇄하고자 할 때, 사용자는 단지 버튼을 누르고(또는 다이얼로그와 상호 작용하고) 그 후에 프린터에 있는 인쇄된 종이 시트를 얻는다. 그러나, 소프트웨어 및 하드웨어 레벨에서의 보이지 않는 측면에서, 이 프로세스는 여러 시스템 서비스들의 복잡한 통합을 수반함으로써, 인쇄기 트레이(tray)에서 대기하는 인쇄 시트를 만들어 낼 수 있다. 이 복잡성으로 인해 많은 경우들에서 애플리케이션들 및 디바이스들 사이의 상호 작용에서의 유연성을 억제할 수 있는 밀접한 결속(binding)이 발생한다.
디바이스들은 전형적으로 디바이스 드라이버를 통해 컴퓨팅 디바이스에 표시된다. 디바이스 드라이버는 애플리케이션들 및/또는 시스템 서비스들이 드라이버와 연관되는 디바이스와 직접적으로 상호 작용할 수 있도록 하는, 강력하게 유형화된 구성요소(strongly typed component)이다. 전형적인 디바이스 드라이버는 주로 호스팅 컴퓨팅 디바이스 및 호스팅 컴퓨팅 디바이스가 접속되는 디바이스 사이에 통신을 가능하게 하는 일을 한다. 이 통신은 중앙 처리 장치(CPU) 상에서의 특정한 핀과 연관되는 회로 보드에서의 직접적인 링크를 통하거나, 주변 구성요소 상호접속(Peripheral Component Interconnect; PCI), 내부 집적 회로(Inter-Integrated Circuit; I2C) 또는 범용 직렬 버스(Universal Serial Bus; USB)와 같은 일반화된 확장 버스를 통하거나 또는 이더넷과 같은 네트워크 매체를 통하는 것일 수 있다. 이 링크를 통하는 통신은 데이터 교환뿐만 아니라 명령 및 제어 이 둘 모두를 수반한다. 디바이스 드라이버는 또한 특정한 디바이스의 정규화된(예를 들어 시스템에 규정된) 뷰(view)를 제공하여 이 드라이버가 디바이스들의 클래스(class)를 표현하거나 논의 중인 특정 디바이스에 대한 특수화된 구현을 표현하게 된다.
예를 들어, 애플리케이션으로부터의 종래의 인쇄는 도 1에 도시된 바와 같이 진행될 수 있다. 도시된 바와 같이, 프로세스(100)는 블록 102에서 문서가 특정한 인쇄 디바이스에서 인쇄되어야 한다고 사용자가 애플리케이션(예를 들어 워드프로세싱 애플리케이션, 영상 편집기,스프레드쉬트 프로그램 등)에 표시함으로써 시작된다. 블록 104에서, 애플리케이션은 요청된 프린터에 대한 특정한 디바이스 컨텍스트를 로딩한다. 디바이스 컨텍스트는 흔히 실제 디바이스의 시스템 제공 추상화(abstraction)이며 인쇄 출력을 생성하기 위해 애플리케이션, 시스템 서비스들 및 프린터 디바이스 드라이버 사이의 상호 작용을 가능하게 한다. 디바이스 컨텍스트에서 제공되는 정보에 기초하여, 애플리케이션은 특정한 인쇄 디바이스에 인쇄하는 데 이용 가능한 하나 이상의 세팅들 및/또는 옵션들을 결정한다. 블록 106에서, 애플리케이션은 사용자에 의해 지정되는 세팅들 및/또는 옵션들에 기초하여, 인쇄될 문서의 각각의 페이지에 대해 형식화 기술(formalized description)된 고정된 페이지 레이아웃을 만든다. 일부 경우들에서, 고정된 페이지 레이아웃을 만드는 대신, 각각의 페이지가 활용된다(예를 들어, 많은 잉크젯 프린터들에서와 같이). 블록 108에서, 애플리케이션은 디바이스 컨텍스트를 통해 각각의 페이지에 대한 형식화 기술을 제출하고, 이의 결과로서 형식화된 페이지 기술(들)이 프린터에 직접적으로 스풀링(spooling)되거나 이 형식화된 페이지 기술(들)이 인쇄 서버를 통해 제출된다. 이 예에서, 애플리케이션은 인쇄 레이아웃을 만들고 나서 출력에 대한 포맷을 직접적으로 교섭(negotiation)하기 위해 디바이스 컨텍스트를 통해 디바이스와 직접적으로 상호 작용한다. 디바이스 컨텍스트는 그 후에 출력을 인쇄 서브시스템으로 넘겨주고 그 후에 인쇄 서브시스템이 인쇄한다. 그러므로, 애플리케이션은 프린터 또는 다른 유형의 디바이스와 다소 직접적으로 상호 작용을 하여, 애플리케이션 및 디바이스 사이에서는 밀접한 결속이 발생된다.
본 발명은 애플리케이션들 및 디바이스들 사이의 상호 작용을 위한 새로운 패러다임을 제시한다. 후술되는 바와 같이, 하나 이상의 관리 구성요소들은 애플리케이션들 사이의 양방향 상호 작용(bi-directional interaction)을 관리 및 중재한다. 이것은 물리적 디바이스(예를 들어, 프린터, 웹캠, 비디오 디스플레이 또는 다른 디바이스)의 가상화(virtualization)이거나 서비스 제공자, 온라인 사업체 등에 인터페이스를 제공하는 제 1 애플리케이션 및 제 2 애플리케이션 사이의 상호 작용을 가능하게 한다. 이 방식에서, 디바이스들은 다른 애플리케이션과 인터페이스하는 서비스들로서 처리될 수 있다. 예를 들어, 제 2 애플리케이션이 물리적인 프린터 디바이스의 가상화인 그러한 경우들에서, 제 2 애플리케이션은 디바이스의 기능이 서비스 계약으로 가상화되도록, 물리적 인쇄 디바이스보다는 인쇄 서비스의 표현(representation) 역할을 한다.
관리 구성요소(들)는 운영 시스템(operating system; OS)의 일부로서 기능하여, OS가 양방향 애플리케이션-대-애플리케이션 상호 작용을 중재하는 것이 가능하고 이 상호 작용에서 유연성을 더 크게 하는 것이 가능할 수 있다. 일부 실시예들은 애플리케이션들이 OS의 관리 구성요소(들)를 통해 서로 상호 작용하는 것을 가능하게 하는 애플리케이션 프로그래밍 인터페이스(application programming interface; AP)를 포함한다. 본원에서 기술되는 실시예들에 의해 표현되는 패러다임에서는, 명령 및 제어 대신에, 양 애플리케이션들의 상황에서 사용자 상호 작용에 의해 중재되는 데이터 교환에 더 역점을 둔다. 이것은 사용자에 의한 제한된 중재를 지원하고 명령 및 제어가 전체 드라이버 설계의 더 중요한 일부임을 나타내는 종래의 디바이스 드라이버 모델과는 대조된다.
이 요약은 아래 상세한 설명에서 더 설명되는 개념들 중 선택된 것을 간소화된 형태로 도입하여 제공된다. 본 요약은 청구되는 특정 대상의 핵심 특징들 또는 필수적인 특징들을 나타내도록 의도되지 않고 또한 청구되는 특허 대상의 범위를 제한하기 위해 사용되도록 의도되지 않는다.
상세한 설명은 첨부 도면들을 참조하여 기술된다. 도면들에서, 참조 번호의 최 좌측 자리수(들)는 참조 번호가 처음 등장하는 도면을 식별한다. 상이한 도면들에서 동일한 참조 번호들을 사용하여 유사하거나 동일한 아이템들을 나타낸다.
도 1은 애플리케이션으로부터의 문서를 인쇄하는 종래의 프로세스를 도시하는 도면.
도 2는 하나 이상의 실시예들이 동작할 수 있는 예시 환경을 도시하는 개략도.
도 3은 하나 이상의 실시예들에 대하여, 도 2의 예시 환경의 일부로서 배치될 수 있는 예시 컴퓨팅 디바이스에 대한 도면.
도 4는 하나 이상의 실시예들에 대하여, 애플리케이션들 사이의 양방향 상호 작용을 중재하는 예시 구성에 대한 도면.
도 5a는 하나 이상의 실시예들에 대하여, 애플리케이션들 사이의 양방향 상호 작용을 중재하는 실례의 프로세스를 도시하는 도면.
도 5b는 하나 이상의 실시예들에 대하여, 애플리케이션들 사이의 양방향 상호 작용의 상황에서 사용자 경험을 제공하는 실례의 프로세스를 도시하는 도면.
도 5c는 하나 이상의 실시예들에 대하여, 애플리케이션 수명 관리를 위한 실례의 프로세스를 도시하는 도면.
도 6은 하나 이상의 실시예들에 대하여, 애플리케이션들 사이의 양방향 상호 작용을 중재하는 예시 구성에 대한 도면.
도 7a 및 도 7b는 하나 이상의 실시예들에 대하여, 애플리케이션들 사이의 양방향 상호 작용을 중재하는 실례의 프로세스를 도시하는 도면들.
도 8은 하나 이상의 실시예들에 대하여, 애플리케이션들 사이의 양방향 상호 작용을 중재하는 예시 구성에 대한 도면.
도 9a 및 도 9b는 하나 이상의 실시예들에 대하여, 애플리케이션들 사이의 양방향 상호 작용을 중재하는 실례의 프로세스를 도시하는 도면들.
개요
간략하게 기술하면, 실시예들은 애플리케이션들 사이의 상호 작용을 중재하는 관리 구성요소(management component)(관리 애플리케이션에 대한)에 관한 것이다. 이 중재를 통해, 하나의 애플리케이션은 다른 애플리케이션에 의해 소모되고/되거나 프로세싱되는 출력을 생성한다. 관리 구성요소는 이 상호 작용을 중개하고 이 상호 작용과 연관되는 사용자 경험을 관리한다. 일부 실시예들에서, 관리 구성요소는 제 1 애플리케이션(예를 들어 워드 프로세싱 애플리케이션 또는 다른 애플리케이션과 같은 사용자 애플리케이션) 및 제 2 애플리케이션 사이의 양방향 상호 작용을 중재할 수 있다. 제 2 애플리케이션은 디바이스(예를 들어 프린터와 같은 주변 장치)를 가상화할 수 있거나, 제 2 애플리케이션은 서비스 공급자(예를 들어, 온라인 인쇄 서비스 사업)에 대한 인터페이스 또는 프론트 엔드(front end)일 수 있다.
본원에서 사용되는 바와 같이, 경험 또는 사용자 경험은 사용자로부터 정보를 수집하고/하거나 사용자에게 정보를 제공하기 위하여 제시되는 하나 이상의 다이얼로그들, 디스플레이들, 윈도들, 제어들 및 이들의 프리젠테이션의 플로우, 배열 및/또는 타이밍을 칭한다. 본원에서 용어 다이얼로그가 사용될지라도, 이 용어는 설명의 명료성을 위하여 사용되고 개별 다이얼로그로 제한되지 않는 광범위한 경험을 기술하는 것으로 해석되어야만 하는 것이 인정될 것이다.
본원에서 사용되는 바와 같이, 가상화(virtualization)는 애플리케이션을 통해 디바이스 및 다른 구성요소 사이에 상호 작용이 발생하도록 상기 애플리케이션이 하드웨어 디바이스를 다른 하드웨어 또는 소프트웨어 구성요소로 시뮬레이팅(simulating)하거나, 모방하거나 가장(impersonate)하는 프로세스를 기술한다. 통신 초점이 흔히 디바이스의 명령 및 제어에 있는 종래의 디바이스 드라이버 설계들과는 달리, 본원에서 기술되는 가상화는 프로세스 시에 교환되는 데이터 및 동작의 의도에 더 큰 초점을 맞춘다. 이 상이한 초점은 인쇄 시나리오를 예로서 사용하여 도시될 수 있다. 페이지 상에 컨텐츠를 인쇄하라고 프린터에 명령하기 위하여 종래의 인쇄 드라이버들이 프린터에 정보를 제공하는 방법에 초점을 맞추는데 반해, 본원에서 기술되는 가상화는 인쇄 자체의 동작에 초점을 맞추고 인쇄가 달성되는 방법에 대한 구현은 가상화 애플리케이션에 맡긴다. 이 가상화가 디바이스 드라이버를 포함할 수 있을지라도, 이것은 또한 디바이스 드라이버보다 더 풍부한 기능을 제공하는 가상화된 애플리케이션들을 포함할 수 있다.
일부 실시예들에서, 관리 구성요소는 클라이언트 디바이스 상에서 운영되는 OS의 일부이다. 게다가, 일부 실시예들은 제 1 애플리케이션(예를 들어 워드 프로세싱 애플리케이션과 같은 사용자 애플리케이션)이 관리 구성요소와 인터페이스하여 디바이스의 가상화 또는 온라인 서비스에 대한 프론트 엔드인 제 1 애플리케이션과 제 2 애플리케이션 사이의 양방향 상호 작용이 가능하게 하는 관리 API를 포함한다.
상호 작용이 양방향성이기 때문에, 제 1 사용자 애플리케이션은 제 2 애플리케이션에 의해 소비되는 컨텐츠를 생성할 수 있거나, 제 2 애플리케이션에 의해 생성되는 컨텐츠를 소비할 수 있다. 제 1 시나리오의 예는 프린터 디바이스에 의해 인쇄되거나 온라인 인쇄 서비스 제공자에게 인쇄 작업으로서 제출되는 문서를 생성하는 워드 프로세싱 애플리케이션(예를 들어 Microsoft® Word™, Corel™ WordPerfect® 등)이다. 이 예에서, 제 2 애플리케이션은 프린터 디바이스의 가상화 역할을 하거나 인쇄 서비스 제공자에 대한 프론트 엔드/인터페이스 역할을 한다. 제 2 시나리오의 예는 웹캠 또는 다른 카메라 디바이스에 의해 제작되는 오디오/비디오 컨텐츠 스트림을 소비하는 온라인 비디오 회의 또는 채팅 프로그램(예를 들어 Skype™, Windows Live™ 메신저, Yahoo!® 메신저 등)이다. 이 예에서, 제 2 애플리케이션은 카메라 디바이스의 가상화 역할을 한다. 이들 시나리오들 모두는 더 상세하게 후술된다.
더욱이, 본원에 기재되는 예들이 양방향 상호 작용을 기술할지라도, 실시예들은 그렇게 제한되지 않는다. 관리 구성요소 및 연관되는 API는 애플리케이션들(가상 디바이스 애플리케이션들을 포함하는)이 서로 통신하는 공통 프레임워크를 생성하기 때문에, 실시예들은 임의의 수효의 애플리케이션들 및 디바이스들 사이에서 다-방향 통신이 가능한 유연한 패러다임을 지원한다. 예를 들어, 일부 실시예들에서 제 1 사용자 애플리케이션은 제 2 애플리케이션에 송신되는 컨텐츠의 제작자 및 제 3 애플리케이션으로부터 수신되는 다른 컨텐츠의 소비자 이 둘 모두의 역할을 할 수 있고, 여기서 애플리케이션들 사이의 각각의 쌍대(pairwise) 상호 작용은 OS의 관리 구성요소에 의해 중재된다.
본원에서 기술되는 실시예들은 관리 구성요소가 두 애플리케이션들 사이의 상호 작용을 중재하고 이 애플리케이션들이 서로 상호 작용하는 데 더 큰 유연성을 제공하도록 한다. 이 증가된 유연성은 인쇄 기능을 예로 사용하여 설명될 수 있다. 종래에, 워드 프로세싱 애플리케이션은 문서에 대한 인쇄 레이아웃을 만들고 그 후에 프린터 디바이스 컨텍스트와 상호 작용하여 상기 디바이스와 문서에 대한 출력 포맷을 직접적으로 교섭한다. 그 후에 디바이스 컨텍스트는 인쇄 레이아웃을 인쇄 서브시스템으로 넘기고 이 서브시스템이 프린터에서 문서를 인쇄한다. 그러므로, 문서를 출력 인쇄 레이아웃으로 전달하는 것은 디바이스 컨텍스트를 통한 프린터 디바이스로의 직접적인 인가에 의해 수행된다. 디바이스 컨텍스트 및 디바이스 드라이버 사이의 종래의 결속을 고려하면 이 결과로서 프린터가 이해하는 일부 페이지 정의 언어(예를 들어 포스트 스크립트(PostScript) 즉 PCL)로 프린터에 송신되는 특정한 명령들의 세트가 발생된다. 이 명령들은 접속된 프린터 하드웨어에 의한 동작들로 직접적으로 변환된다.
본원에서 기술되는 실시예들은, 인쇄 시나리오를 예시로 사용하면, 관리 구성요소가 소스 애플리케이션(예를 들어 워드 프로세싱 애플리케이션) 및 인쇄의 개념을 가상화하는 애플리케이선 사이의 중재자 역할을 하는 점에서 이 종래의 시나리오와 상이하다. 프린터 디바이스와 직접적으로 상호 작용하는 대신, 소스 애플리케이션은 이후에 소스 애플리케이션 대신 가상화된 애플리케이션과 통신하는 중개자 관리 구성요소와 상호 작용한다. 그러므로, 소스 애플리케이션은 프린터 디바이스에 대한 특정한 디바이스 드라이버와 어떠한 직접적인 상호 작용 없이도 동작할 수 있다.
관리 구성요소가 소스 애플리케이션 및 가상화 애플리케이션 사이의 중재자이므로, 이 교환에서 소스 애플리케이션에는 인쇄 구성요소에 의해 지원되는 특징들과 관현하여 종래의 프린터 컨텍스트 기반 모델에서보다 다소 더 제한된 세트의 정보가 제공될 수 있다. 예를 들어 제공되는 정보는 목표 출력(예를 들어 종이의 문자 크기 피스)의 크기, 이의 방향성, 목표 출력의 해상도와 같은 정보로 제한될 수 있다. 이 케이퍼빌리티들은 더 아래에서 기술되는 바와 같이, 관리 구성요소에 의해 결정될 수 있다. 그러므로, 실시예들은 직접적으로 명령하고 애플리케이션으로 제어하는 종래의 모델로부터 더 요약된 동작의 표현으로 시프트하는 것을 가능하게 한다. 예시 인쇄 시나리오에서, 이의 결과로써 인쇄 출력을 만들기 위해 프린터가 하드웨어를 어떻게 조작해야 하는지에 대한 이산적인 명령들이 교환되는 대신 인쇄 컨텐츠가 OpenXPS 또는 Adobe® 포터블 도큐먼트 포맷(Portable Document Format;PDF)과 같은 고레벨 문서 교환의 형태로 교환된다.
일부 실시예들에서, 관리 구성요소는 가상화된 애플리케이션들이 특정한 데이터 교환 시나리오들에 참여하는 자신들의 능력을 등록할 수 있게 한다. 예를 들어, 인쇄를 위해 가상화된 애플리케이션은 인쇄를 위한 관리 구성요소에 자신이 인쇄 기능을 위한 목표로서 사용되는 데 이용 가능하다는 것을 고지할 수 있다. 관리형 데이터 교환에서 목표 애플리케이션 역할을 하기 위한 목적으로 가상화된 애플리케이션들을 관리 구성요소에 등록하기 위한 다양한 모델들이 이용될 수 있다.
더욱이, 동작을 위한 목표의 선택을 소스 애플리케이션 외부로 그리고 관리 구성요소 내로 이동시킴으로써, 전체 시스템에 더 큰 유연성이 도입되어 이 전체 시스템은 디바이스들 또는 서비스들의 새로운 혁신들 또는 새로운 케이퍼빌리티들에 적응된다. 예를 들어, 관리 구성요소가 OS의 일부인 경우, 소스 애플리케이션에 어떠한 변경들도 요구하지 않고, 업데이트들을 통해 시간의 경과에 따라 상이한 유형들의 가상화 애플리케이션들을 지원하는 새로운 양태들이 도입될 수 있다. 이는 새 양태들이 소스 애플리케이션의 수정을 통해 지원되고 특정한 새 양태에 대한 지원을 추가하는 점에서 종래의 디바이스 드라이버 모델과 상이하다.
더욱이, 관리 구성요소를 중재자로 사용함으로써 그 결과적인 사용자 경험에 유연성이 더 크게 제공된다. 예를 들어, 일부 실시예들에서, 관리 구성요소는 프린터 디바이스의 케이퍼빌리티들 및 이용 가능한 인쇄 옵션들을 결정하기 위해 프린터 디바이스에 질의할 수 있다(프린터 디바이스의 역할을 수행하는 가상 애플리케이션과의 상호 작용을 통해). 더욱이, 관리 구성요소는 사용자가 인쇄 옵션들(예를 들어, 페이지 크기, 페이지 수, 다면의, 컬러 팔레트 등)을 선택하고 워드 프로세싱 애플리케이션에게 상기 임무를 면제해 줄 수 있는 공통 다이얼로그를 제시할 수 있다. 유사하게, 관리 구성요소는 또한 사용자가 인쇄될 문서를 미리 보고 또한 워드 프로세싱 애플리케이션에게 상기 임무를 면제해 주기 위하여 사용자 인터페이스를 제공할 수 있다.
다른 실시예들에서 관리 구성요소는 가상화된 애플리케이션에 사용자 인터페이스에 대한 책임을 위임할 수 있다. 이는 가상화 프로세스가 더 이상 디바이스 드라이버 추상화의 종래의 제한들에 의해 속박되지 않으므로 이 가상화 프로세스에 현저한 이점을 제공한다. 일반적으로, 실시예들은 워드 프로세싱 애플리케이션으로부터 인쇄 기능 및 사용자 경험을 완전히 추상화하고(또는 다른 디바이스 관련 상호작용을 완전히 추상화하고) 포맷 교섭 기능을 컨텐츠 플로우로부터 분리하도록 동작한다. 이 방식에서, 실시예들은 인쇄(또는 다른 유형들의 애플리케이션-대-디바이스 상호 작용)와 관련되는 더 풍부한 사용자 경험의 프리젠테이션을 가능하게 한다.
더욱이, 본원에서 기술되는 실시예들은 온라인 서비스 제공자에 대한 프론트 엔드 및/또는 인터페이스 역할을 하는 애플리케이션을 사용하는 것을 용이하게 한다. 다시 예로서 인쇄를 사용함으로써, 워드 프로세싱 애플리케이션의 사용자는 인쇄 서비스 제공자에 대한 애플리케이션을 인쇄 목표로서 선택할 수 있다. 사용자의 관점으로부터, 사용자는 목표로 인쇄할 것을 선택하지만 대신 관리 구성요소는 인쇄 경험을 완료하기 위해 가상화 애플리케이션을 가동한다. 일부 경우들에서, 이 가상화 애플리케이션은 물리적인 프린터 디바이스와 비교하여 상이한 사용자 경험을 제공할 수 있다. 예를 들어, 사용자들은 지불 또는 감사를 관리하기 위해 어떤 형태의 식별(identification) 또는 승인을 제공할 필요가 있을 수 있다. 또한 프린트 서비스에서 이용 가능한 기능의 유형들은 종래의 인쇄 디바이스로부터 이용 가능한 유형들과는 상이할 수 있다. 일단 적절한 정보가 수집되면, 관리 구성요소는 인쇄되는 인쇄 디바이스에 문서를 송신하는 대신 문서를 인쇄 작업 요청의 일부로서 인쇄 서비스 제공자에게 제출할 수 있다. 사용자는 그 후에 출력 인쇄 문서, 출간된 책, 팜플렛, 포스터 또는 가상의 임의의 다른 형태의 간행물을 선택하기 위해 인쇄 서비스 제공자의 스토어(store)로 나아갈 수 있다. 이 방식에서, 실시예들은, 디바이스 드라이버를 생성하는 간접비용을 요구하지 않으면서도 사용자가 그와 같은 서비스 제공자의 서비스들을 더 용이하게 이용하는 것이 가능하도록 상기 서비스 제공자가 인쇄 디바이스를 효율적으로 가장하도록 한다.
더욱이, 사용자 애플리케이션(예를 들어 워드 프로세싱 애플리케이션)이 디바이스들(예를 들어 프린터들) 또는 온리안 서비스 제공자들(예를 들어 온라인 인쇄 샵들)과 상호 작용하도록 하기 위하여 관리 구성요소 및 API는 통합 사용자 경험을 제공하므로, 상이한 클래스들의 디바이스들 또는 다양한 온라인 서비스 제공자 인터페이스들을 지원하기 위해 사용자 애플리케이션 개발자들이 자신들의 애플리케이션을 더 이상 기록할 필요가 없다. 관리 구성요소 및 통합 API는 사용자 애플리케이션과 동떨어진 상기 기능을 추상화함으로써, 공통의, 잠재적으로 더 풍부한 특징의 사용자 경험을 생성한다.
일부 실시예들에서, 관리 구성요소는 또한 가상화 애플리케이션들을 통해 디바이스와 같은 행동들을 지원하기 위해 더 풍부한 생태계를 가능하게 한다. 예를 들어, 종래의 디바이스 드라이버 모델에서 디바이스 드라이버의 설치는 디바이스가 존재하는 것을 조건으로 한다. 디바이스의 존재는 관리 구성요소가 동작하고 있는 많은 공통 주변 상호접속 버스들(예를 들어, PCI, I2C, USB 등) 중 하나를 통해 상기 디바이스가 호스트 컴퓨터에 직접적으로 물리적 접속함으로써 결정될 수 있다. 더욱이, 디바이스의 존재는 또한 네트워크 상에서의 디바이스의 존재에 의해 결정될 수 있다. 이 종래의 모델에서, 디바이스 존재는 전형적으로 당업자가 인식할 수 있는 많은 가능한 네트워크 디바이스 발견 프로토콜들 중 하나를 통해 결정될 수 있다.
이 종래의 경험은 본원에서 기술되는 실시예들에 따른 가상화 애플리케이션 모델과는 상이하다. 인쇄 서비스의 예에서와 같이, 물리적 디바이스 하드웨어가 요구되지 않는 경우들에서, 상기 기능의 발견은 가상화 애플리케이션의 설치를 통해 용이해질 수 있다. 이 애플리케이션은 서비스 제공자로부터 또는 어떤 형태의 애플리케이션 시장으로부터 직접 입수 가능할 수 있다. 일부 실시예들에서, 시장 환경들을 통해 입수 가능한 애플리케이션 수명 관리 기능은 더 간단한 자동 업데이트 절차들, 더 유연한 프로그래밍 환경들 등을 통해 애플리케이션 개발자들에게 더 큰 유연성을 제공한다. 이 수명 관리 기능들로 인해 특정한 시나리오를 전달하는 것은 종래의 디바이스 드라이버 모델에서보다 더 용이하게 된다.
예시 환경
도 2는 실시예들에 동작하는 예시 환경(200)을 도시한다. 도시된 바와 같이, 환경(200)의 다양한 디바이스들은 통신을 가능하게 하는 임의의 유형의 네트워크를 포함할 수 있는 하나 이상의 네트워크들(202)을 통해 서로 통신할 수 있다. 예를 들어, 네트워크들(202)은 인터넷과 같은 공용 네트워크들, 기관 및/또는 개인 인트라넷과 같은 사설 네트워크들 또는 사설 및 공용 네트워크들의 어떤 결합을 포함할 수 있다. 네트워크들(202)은 또한 근거리 네트워크(local area network; LAN)들, 광대역 네트워크(wide area network; WAN)들), Wi-Fi™, WiMax™ 및 모바일 통신 네트워크들(예를 들어, 3G, 4G 등)을 포함하는 임의의 유형의 유선 및/또는 무선 네트워크를 포함할 수 있으나 이로 제한되지 않는다. 네트워크들(202)은 인터넷 프로토콜(IP), 전송 제어 프로토콜(transmission control protocol; TCP), 사용자 데이터그램 프로토콜(user datagram protocol; UDP) 또는 다양한 유형들의 프로토콜들과 같은 패킷-기반 또는 데이터그램-기반 프로토콜들을 포함하는 통신 프로토콜들을 활용할 수 있다. 더욱이, 네트워크들(202)은 또한 네트워크 통신들을 용이하게 하고/하거나 스위치들, 라우터들, 게이트웨이들, 액세스 포인트들, 방화벽들, 기지국들, 중계기들, 백본 디바이스(backbone device)들 등과 같이, 네트워크들에 대한 하드웨어 베이스를 형성하는 다수의 디바이스들을 또한 포함할 수 있다.
환경(200)은 사용자(들)와 연관되는 하나 이상의 클라이언트 디바이스(들)(204)를 더 포함할 수 있다. 간략하게 기술하면, 클라이언트 디바이스(들)(204)는 사용자가 네트워크들(202)을 통해 정보를 송신하고 수신하는 데 이용할 수 있는 임의의 유형의 컴퓨팅 디바이스를 포함할 수 있다. 예를 들어, 클라이언트 디바이스(들)(204)는 데스트탑 컴퓨터들, 랩탑 컴퓨터들, 패드 컴퓨터들, 착용 가능 컴퓨터들, 미디어 플레이어들, 자동차용 컴퓨터들, 모바일 컴퓨팅 디바이스들, 스마트 폰들, 개인용 데이터 보조장치(personal data assistant; PDA)들, 게임 콘솔들/플랫폼들, 모바일 게임 디바이스들, 셋탑 박스들 등을 포함할 수 있으나, 이로 제한되지 않는다. 클라이언트 디바이스(들)(204)는 일반적으로 사용자가 웹 브라우저들, 이메일 클라이언트 애플리케이션들, 채팅 및 인스턴트 매시징(instant messaging) 클라이언트들 및 다른 애플리케이션들을 포함하는 웹 및/또는 인터넷을 통해 정보를 송신 및 수신할 수 있도록 하는 하나 이상의 애플리케이션들을 포함하지만 이로 제한되지 않는다.
클라이언트 디바이스(들)(204)은 또한 워드 프로세싱, 회계업무, 프리젠테이션들의 준비, 멀티미디어 프로세싱(예를 들어, 비디오, 오디오, 이미지, 그래픽 등을 프로세싱하기 위한), 게임, 소셜 네트워킹, 채팅/인스턴트 메시징(IM)에 대한 하나 이상의 애플리케이션들 또는 다른 유형들의 애플리케이션들을 포함할 수 있다. 클라이언트 디바이스(들)(204)은 본원에서 더 기술되는 바와 같이, 양방향 애플리케이션-애플리케이션 상호 작용을 중재하기 위해 중재 및/또는 관리 구성요소들을 포함하는 OS를 가동할 수 있다.
도 2에 도시되는 바와 같이, 환경(200)은 또한 하나 이상의 네트워크식 주변 디바이스(들)(206)를 포함할 수 있다. 그와 같은 디바이스들은 인쇄, 멀티미디어 디스플레이, 통신들 등을 포함하는 기능을 제공하기 위해 네트워크(들)(202)를 통해 클라이언트 디바이스(들)(204) 및/또는 원격 서버 디바이스(들)(208)와 같은 다른 디바이스들에 통신할 수 있으나, 이로 제한되지 않는다. 본원에서 더 기술되는 바와 같이, 그와 같은 네트워크식 주변 디바이스(들)(206)는 디바이스의 가상화인 애플리케이션을 제시할 수 있다. 그와 같은 애플리케이션은 클라이언트 디바이스(204) 상에서 가동 중인 애플리케이션과 양방향 상호 작용이 가능하도록 관리 API를 소환할 수 있다.
환경(200)은 하나 이상의 원격 서버 디바이스(들)(208)를 더 포함할 수 있다. 일부 실시예들에서, 원격 서버 디바이스(들)(208)는 온라인 서비스들, 전자상거래 등을 제공하는 서버 디바이스(들)를 포함할 수 있다. 본원에서 기술되는 실시예들을 이용하여, 원격 서버 디바이스는 클라이언트 디바이스 상에서 가동 중인 애플리케이션과의 양방향 애플리케이션-대-애플리케이션 통신에 종사하는 애플리케이션의 형태로 인터페이스를 제공하여 사용자가 온라인 서비스를 이용하는 것을 가능하게 할 수 있다.
예를 들어, 원격 서버 디바이스(206)는 문서들을 인쇄하고, 광고/시장 자료들을 작성하고, 원고들을 발행하는 것 들을 위해 인쇄 서비스 제공자에 의해 관리될 수 있다. 그와 같은 인쇄 서비스 제공자는 클라이언트 디바이스(204) 상에서 가동되는 워드 프로세싱 애플리케이션과 양방향 상호 작용이 가능하도록 관리 API를 소환하는 애플리케이션을 사용할 수 있다. 이 방식에서, 워드 프로세싱 애플리케이션을 가동하고 있는 사용자는 애플리케이션으로부터 “인쇄” 옵션을 선택하고, 문서를 클라이언트 디바이스의 OS의 일부로서 가동 중인 관리 구성요소(들)를 통해 인쇄 서비스 제공자에게 인쇄 작업으로서 송신할 수 있다. 그러므로, 실시예들에 의해서 인쇄 서비스 제공자는 이용자가 마치 인쇄 서비스 제공자가 인쇄 디바이스인 것처럼 편리하게 자신의 서비스들을 이용 가능하게 할 수 있다.
서비스 디바이스(들)(208)는 또한 사용자들에 의한 애플리케이션들의 발견, 설치 및/또는 관리를 용이하게 하는 애플리케이션 시장(marketplace) 서버들을 나타낼 수 있다. 일부 실시예들에서, 그와 같은 시장 서버들은 온라인 서비스들, 이-비즈니스(e-business) 서비스들을 제공하기 위해 물리적 하드웨어 디바이스뿐만 아니라 원격 서버 애플리케이션들을 지원하는 가상화 애플리케이션들의 보급을 용이하게 한다.
환경(200)은 또한 PCI, I2C, USB 등과 같은 컴퓨터 버스를 통해, 또는 다른 접속 모델들을 통해 클라이언트 디바이스(들)(204)에 직접적으로 접속되는 하나 이상의 국지적 주변 디바이스들(210)을 포함할 수 있다. 그와 같은 국지적 주변 디바이스(들)(210)는 인쇄, 멀티미디어 디스플레이, 통신 등을 포함하는 기능을 제공할 수 있으나, 이로 제한되지 않는다. 본원에서 더 기술되는 바와 같이, 그와 같은 국지 주변 디바이스(들)(210)는 디바이스의 가상화인 애플리케이션을 제시할 수 있다. 그와 같은 애플리케이션은 하나 이상의 클라이언트 디바이스(204) 상에서 가동 중인 애플리케이션과 양방향 상호 작용이 가능하도록 관리 API를 소환할 수 있다.
명시적으로 도시되지 않을지라도, 환경(200)은 본원에서 기술되는 다양한 동작들과 관련된 데이터를 저장하도록 구성되는 하나 이상의 데이터베이스들 또는 저장 디바이스들을 더 포함할 수 있다. 그와 같은 저장 디바이스들은 도시된 디바이스들 중 하나 이상에 통합될 수 있거나 상기 디바이스들 중 하나 이상과 분리되어 있으나 통신하고 있는 외부 저장 디바이스들일 수 있다. 저장되는 데이터는 또한 클라이언트 디바이스(들)(204), 네트워크식 주변 디바이스(들)(206), 원격 서버 디바이스(들)(208) 및/또는 국지 주변 디바이스(들)(210)의 동작들에 관한 정보를 포함할 수 있다.
일반적으로, 도 2에 도시되는 디바이스들 중 하나 이상의 각각은 워크로드(workload)를 형성하기(공유하기) 위하여 클러스터(cluster), 서버 팜(server farm) 또는 다른 그룹화로 배열되는 다수의 컴퓨팅 디바이스들을 포함할 수 있다. 그와 같은 디바이스들의 그룹들은 부하에 균형을 이루거나 그와 다른 방식으로 더 효율적인 동적들을 제공하도록 관리될 수 있다. 더욱이, 환경(200)의 다양한 컴퓨팅 디바이스들이 클라이언트들 또는 서버들로서 기술될지라도, 각각의 디바이스는 다양한 실시예들과 관련되는 동작들을 수행할 어떠한 용량으로도 동작할 수 있다. 그러므로, 디바이스를 클라이언트 또는 서버로서 기술하는 것은 실례의 목적을 위해 제공되고 디바이스에 수행될 수 있는 활동들의 범위를 제한하지 않는다.
실례의 컴퓨팅 디바이스 아키텍처
도 3은 도 2에 도시된 다양한 디바이스들에 대한 예시 컴퓨터 시스템 아키텍처의 블록도를 도시한다. 도시되는 바와 같이, 컴퓨팅 디바이스(300)는 프로세싱 유닛(302)을 포함한다. 프로세싱 유닛(302)은 하나 이상의 프로세싱 유닛들(예를 들어 프로세서들)을 포함할 수 있고 하드웨어, 소프트웨어 또는 이들의 어떤 결합으로서 구현될 수 있다. 본원에서 사용되는 바와 같이, 프로세서는 하드웨어 구성요소를 칭한다. 프로세싱 유닛(302)은 본원에서 기술되는 다양한 기능들을 수행하기 위해 임의의 적절한 프로그래밍 언어로 기록되는 컴퓨터 실행 가능, 프로세서 실행 가능 그리고/또는 기계 실행 가능한 명령들을 포함할 수 있다. 일부 실시예들에서, 프로세싱 유닛(302)은 하나 이상의 그래픽 프로세싱 유닛(graphics processing unit; GPU)들을 더 포함할 수 있다.
컴퓨팅 디바이스(300)는 랜덤 액세스 메모리(random access memory; RAM), 정적 랜덤 액세스 메모리(static RAM; SRAM), 동적 랜덤 액세스 메모리(dynamic RAM; DRAM) 등과 같은 휘발성 메모리를 포함할 수 있는 시스템 메모리(304)를 더 포함한다. 시스템 메모리(304)는 또한 판독 전용 메모리(read only memory; ROM), 플래시 메모리 등과 같은 비휘발성 메모리를 포함할 수 있다. 시스템 메모리(304)는 또한 캐시 메모리를 포함할 수 있다. 도시되는 바와 같이, 시스템 메모리(304)는 Windows®, Linux®, iOS® 등과 같은 하나 이상의 OS(들)(306)를 포함한다. 아래에서 더 기술되는 바와 같이, OS(들)(306)은 또한 애플리케이션들 및/또는 디바이스들 사이의 양방향 상호 작용을 관리 및/또는 중재하도록 동작하는 하나 이상의 관리 구성요소(들)(308)를 포함할 수 있다.
시스템 메모리(304)는 또한 프로세싱 유닛(들)(302)에 의해 로딩 가능하고 실행 가능한 프로그램들, 애플리케이션들 및/또는 프로세스들을 포함할 수 있는 하나 이상의 실행 가능 구성요소들(310)을 포함할 수 있다. 이것들은 또한 워드 프로세싱, 회계업무, 프리젠테이션들의 준비, 멀티미디어 프로세싱(예를 들어, 비디오, 오디오, 이미지, 그래픽 등을 프로세싱하기 위한), 게임, 소셜 네트워킹, 채팅/인스턴트 메시징(IM)에 대한 애플리케이션(들)(312) 또는 다른 유형들의 애플리케이션들을 포함할 수 있다. 실행 가능 구성요소들(310)은 또한 다른 구성요소들(314)을 포함할 수 있다. 시스템 메모리(304) 내의 다양한 구성요소들, 애플리케이션들, OS(들)는 이들의 다양한 기능들과 관련되는 데이터를 저장하기 위해 구성요소 데이터(316)를 저장 에어리어로서 사용할 수 있다.
도 3에 도시되는 바와 같이, 컴퓨팅 디바이스(300)는 또한 자기 디스크 저장소, 광 디스크 저장소, 테이프 저장소 등을 포함하는 그러나 이에 제한하지 않는 제거 가능 저장소(320) 및/또는 제거 불가능 저장소(322)를 포함할 수 있다. 디스크 드라이브들 및 연관되는 컴퓨터 판독 가능 매체는 컴퓨팅 디바이스(300)의 동작을 위해 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들 및 다른 데이터의 비휘발성 저장소를 제공할 수 있다.
일반적으로, 컴퓨터 판독 가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함한다.
컴퓨터 저장 매체는 컴퓨터 판독 가능 명령들, 데이터 구조, 프로그램 모듈들 및 다른 데이터와 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 제거 가능 및 제거 불가능 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, 소거 가능 프로그램 가능 판독 전용 메모리(erasable programmable read only memory; EEPROM), SRAM, DRAM, 플래시 메모리 또는 다른 메모리 기술, 컴팩트 디스크 판독 전용 메모리(CD-ROM), 디지털 다목적 디스크(digital versatile disk; DVD)들 또는 다른 광 저장소, 자기 카세트들, 자기 테이프, 자기 디스크 저장소 또는 다른 자기 저장 디바이스들 또는 컴퓨팅 디바이스에 의한 액세스를 위해 정보를 저장하는 데 사용될 수 있는 임의의 다른 비-전송 매체를 포함하나, 이로 제한되지 않는다.
대조적으로, 통신 매체는 컴퓨터 판독 가능 명령들, 데이터 구조들, 프로그램 모듈들 또는 다른 데이터를 반송파 또는 다른 전송 메커니즘과 같이 변조된 데이터 신호로 구현할 수 있다. 본원에서 규정되는 바와 같이, 컴퓨터 저장 매체는 통신 매체를 포함하지 않는다.
컴퓨팅 디바이스(300)는 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스, 게임 제어기 등을 포함하지만 이로 제한되지 않는 입력 디바이스(들)(324)을 포함할 수 있다. 컴퓨팅 디바이스(300)는 디스플레이, 프린터, 오디오 스피커들, 햅틱 출력 인터페이스 등을 포함하지만 이로 제한되지 않는 출력 디바이스(들)(326)를 더 포함할 수 있다. 컴퓨팅 디바이스(300)는 컴퓨팅 디바이스(300)가 클라이언트 디바이스(들)(204), 원격 서버 디바이스(들)(208), 데이터베이스, 네트워크식 주변 디바이스(들)(206) 또는 네트워크(들)(202)를 통해 액세스 가능한 다른 컴퓨팅 디바이스들을 포함하는 다른 컴퓨팅 디바이스들(330)과 통신하는 것을 가능하게 하는 통신 접속(들)(328)을 더 포함할 수 있다. 통신 접속(들)(328)은 네트워크 인터페이스 제어기(network interface controller; NIC), 네트워크 어댑터, 송수신기 등을 포함할 수 있다.
통신 접속(들)(328)은 또한 통신 디바이스(300)와 물리적으로 분리되어 있으나 네트워크(들)(202)를 통해 또는 직렬, 병렬, 범용 직렬 버스(Universal Serial Bus™; USB), 고선명도 멀티미디어 인터페이스(High Definition Multimedia Interface™; HDMI), 오디오-비주얼(Audio-Visual; AV) 또는 다른 유형의 접속을 통해 접속되는 하나 이상의 주변 디바이스(들)(332)와 통신하는 것이 가능할 수 있다. 그와 같은 주변 디바이스들은 국지의 주변 디바이스(들)(210)를 포함하고 프린터, 디스플레이, 외부 저장 디바이스 등과 같은 디바이스들을 포함할 수 있다.
실례의 동작들
도 4, 도 6 및 도 8은 애플리케이션들 및/또는 디바이스들 사이의 상호 작용을 중재하는 관리 구성요소(들)에 대한 예시 구성들을 도시한다. 이 도면들에서 도시되는 요소들은 구성요소들, 모듈들, 프로세스들, 객체들 및/또는 하드웨어, 소프트웨어 또는 이들의 결합으로 구현될 수 있는 애플리케이션들을 표현한다. 도시되는 요소들의 배열들은 실례가 되도록 의도되고 임의의 동작들의 순서, 제어 플로우 또는 요소들의 특정한 위치에 관하여 제한하는 것으로 의도되지 않는다. 그러므로, 도시되는 요소들 중 하나 이상은 동일한 디바이스의 또는 상이한 디바이스의 구성요소들일 수 있다. 더욱이, 도면들이 양방향 화살표들을 도시할지라도, 이들 화살표들은 다양한 요소들 사이의 통신을 예시하는 것으로 의도되고 그와 같은 통신은 다양한 환경들 하에서 단방향 및/또는 양방향일 수 있다.
도 4는 애플리케이션들 사이의 양방향 상호 작용을 중재하는 예시 구성에 대한 도면이다. 도 4에 도시되는 바와 같이, OS(306)는 제 1 애플리케이션(402) 및 제 2 애플리케이션(406) 사이의 상호 작용을 중재하는 하나 이상의 관리 구성요소(들)(308)를 포함한다. 일부 실시예들에서, 제 1 애플리케이션(402)은 제 1 디바이스(404)와 같은 물리적 디바이스의 가상화일 수 있다. 이 방식에서, 제 1 애플리케이션(402)은 관리 구성요소(들)(308) 및 제 2 애플리케이션(408)과 관련하여 제 1 디바이스(404)를 효율적으로 가장하고 있을 수 있다. 유사하게, 일부 실시예들에서 제 2 애플리케이션(406)은 제 2 디바이스(408)와 같은 물리적 디바이스(408)의 가상화이고, 제 2 디바이스(408)를 효율적으로 가장할 수 있다. 관리 구성요소(들)(308)는 애플리케이션들 사이의 통신들이 통과하고 관리 구성요소(들)(308)에 의해 관리되도록, 제 1 애플리케이션(402) 및 제 2 애플리케이션(406) 사이의 상호 작용을 중재한다. 일부 실시예들에서, 제 1 애플리케이션(402) 및/또는 제 2 애플리케이션(406)은 물리적 디바이스 대신 외부 애플리케이션 서버에 결속되는 디바이스 행동의 가상화일 수 있다.
제 1 애플리케이션(402) 및/또는 제 2 애플리케이션(406)이 동일한 디바이스(예를 들어 클라이언트 디바이스) 상에서 OS(306)로서 실행되는 사용자 애플리케이션일 수 있을지라도, 실시예들은 그렇게 제한되지 않는다. 특정한 시나리오의 요건들을 고려하여, 상이한 디바이스들 또는 동일한 디바이스 상에서 다양한 실시예들이 실행되고 있을 수 있도록, 가상으로 도 4의 요소들의 임의의 배열이 지원된다.
더욱이, 일부 실시예들은, 기능들, 방법들, 프로세스들, 인터페이스들, 변수들 등과 같은 기능을 드러내는 관리 API를 지원한다. 제 1 애플리케이션(402) 및/또는 제 2 애플리케이션(406)은 관리 구성요소(들)(308)와 통신하기 위하여 관리 API의 기능을 이용할 수 있다.
일부 실시예들에서, 관리 구성요소(들)(308)는 사용자가 특정한 디바이스와 상호 작용하기 위해 옵션들 중에서 선택할 수 있는 공통 디바이스 다이얼로그를 통해 풍부한 사용자 경험을 제공할 수 있다. 이 옵션들은 디바이스에 의해 요구되는 디바이스 케이퍼비리티들 및/또는 정보를 결정하기 위해 자신과 연관되는 가상화 애플리케이션을 통해 디바이스에 질의하는 관리 구성요소(들)(308)에 의해 결정될 수 있다. 대안의 실시예들에서, 관리 구성요소(들)(308)는 사용자가 디바이스에 의해 요구되는 바대로 하나 이상의 옵션들을 구성하고 완료할 수 있도록 하기 위해 가상화된 디바이스 애플리케이션의 사용자 경험이 사용자에게 제시되도록 할 수 있다. 그와 같은 실시예들은 도 6 내지 도 9와 관련하여 더 상세하게 기술된다.
도 5a, 도 5b, 도 5c, 도 7a, 도 7b, 도 9a 및 도 9b는 다양한 실시예들에 따른 예시 프로세스들을 도시하는 흐름도를 도시한다. 이 프로세스들의 동작들은 개별 블록들에서 설명되고 상기 블록들을 참조하여 요약된다. 상기 프로세스들은 논리 플로우 그래프들로서 도시되고, 이 그래프들 각각의 동작은 하드웨어, 소프트웨어 또는 이 둘의 결합으로 구현될 수 있는 동작들의 세트를 표현할 수 있다. 소프트웨어의 맥락에서, 상기 동작들은 하나 이상의 컴퓨터 저장 매체 상에 저장되고 하나 이상의 프로세서들에 의해 실행될 때 하나 이상의 프로세서들이 열거된 동작들을 수행할 수 있도록 하는 컴퓨터 실행 가능 명령들을 표현한다. 일반적으로, 컴퓨터 실행 가능 명령들은 특정한 기능들을 수행하거나 특정한 추상 데이터 유형들을 구현하는 루틴들, 프로그램들, 객체들, 모듈들, 구성요소들, 데이터 구조들 등을 포함한다. 동작들이 기술되는 순서는 제한하는 것으로 해석되도록 의도되지 않고, 임의의 수의 기술되는 동작들은 프로세스를 구현하기 위해 임의의 순서로 결합되고, 하위 동작들로 분리되고, 그리고/또는 동시에 수행될 수 있다. 다양한 실시예들에 따른 프로세스들은 논리 플로우 그래프들에 도시되는 동작들 일부 또는 모두를 포함할 수 있다.
도 5a는 두 애플리케이션들 사이의 양방향 상호 작용을 중재하는 실례의 프로세스(500)를 도시한다. 일부 실시예들에서, 프로세스(500)는 관리 구성요소(들)(308)의 일부로서 실행된다. 도 4에 도시되는 바와 같이, 상기 애플리케이션들 중 하나 또는 둘 모두는 물리적 디바이스(예를 들어, 프린터, 카메라 등과 같은 주변 디바이스) 또는 온라인 서비스에 대한 프론트 엔드(예를 들어, 인쇄 서비스)의 가상화일 수 있다.
블록 502에서, 제 1 애플리케이션과 상호 작용하는 제 2 애플리케이션의 선택을 나타내는 표시가 수신된다. 일부 실시예들에서, 제 1 애플리케이션은 사용자 애플리케이션(예를 들어 워드 프로세싱 애플리케이션, 화상 회의 애플리케이션 등)일 수 있고, 제 2 애플리케이션은 사용자가 제 1 애플리케이션과 상호 작용하기를 바라는 프린터 또는 웹캠과 같은 목표 디바이스의 가상화 또는 인쇄 서비스 제공자와 같은 온라인 서비스에 대한 프론트 엔드일 수 있다. 이 표시는 지원되는 통신 프로토콜에 따라 제 1 애플리케이션으로부터 관리 구성요소로 통신되는 통신 패킷의 일부로서 수신될 수 있다. 일부 실시예들에서, 제 1 애플리케이션에 의해 생성되는 데이터를 소비하거나 또는 제 1 애플리케이션에 의해 소비되는 데이터를 생성하기 위해 제 2 애플리케이션의 표시는 제 1 애플리케이션 또는 관리 구성요소(들)(308)의 다이얼로그 내에서, 가상 디바이스 및/또는 서비스를 사용자가 선택함으로써 트리거(trigger)될 수 있다.
일부 실시예들이 가상화 애플리케이션을 관리 구성요소에 등록하는 것을 포함할 수 있음이 인정된다. 이 등록으로 제 1 애플리케이션의 사용자에 의해 고지된 제 2 애플리케이션의 결정이 가능하다. 예를 들어, 제 2 애플리케이션을 관리 구성요소에 등록함으로써 관리 구성요소 또는 제 1 애플리케이션는 사용자에게 제 1 애플리케이션과 상호 작용하기 위한 가능한 목표들의 목록을 제시할 수 있다. 사용자는 그 후에 상호 작용을 위해 특정한 제 2 애플리케이션을 선택할 수 있다. 가상 애플리케이션 수명 관리의 등록 또는 다른 양태들은 도 5c와 관련하여 더 상세하게 기술된다.
블록 504에서, 제 1 및 제 2 애플리케이션들 사이의 상호 작용을 중재하는 관리 객체가 인스턴스화(instantiate)될 수 있다. 일부 실시예들에서, 관리 객체는 클래스로서 구현되는 관리 구성요소의 실행 인스턴스(instance)일 수 있고, 제 1 애플리케이션 및 제 2 애플리케이션 사이의 특별히 요청된 상호 작용을 중재하기 위해 특정한 관리 객체의 인스턴스가 생성된다. 관리 객체가 특정한 애플리케이션(예를 들어 제 2 애플리케이션)과의 상호 작용을 중재하는 것으로 인스턴스화되기 때문에, 관리 객체는 제 2 애플리케이션에 결부되는 것으로 기술될 수 있다.
일부 실시예들에서, 특정한 관리 객체의 인스턴스는 제 1 애플리케이션이 제 2 애플리케이션과 상호 작용하고 있는 한 존재한다. 일부 실시예들에서, 특정한 인스턴스는 제 1 및 제 2 애플리케이션들 사이의 후속 상호 작용들 및/또는 다른 애플리케이션 및 제 2 애플리케이션 사이의 후속 상호 작용들을 처리하기 위해 은닉되거나 다른 방식으로 저장 및 재사용될 수 있다. 일부 실시예들에서, 관리 객체는 제 2 애플리케이션들(예를 들어 프린터 디바이스와 같은 특정한 유형의 디바이스의 가상화들인 애플리케이션들)의 특정한 클래스에 포괄적일 수 있다.
블록 506에서, 관리 객체는 제 2 애플리케이션의 케이퍼빌리티들을 결정하기 위해 제 2 애플리케이션에 질의할 수 있다. 예를 들어, 제 2 애플리케이션이 프린터 디바이스에 대한 가상화 역할을 하고 있을 때 관리 객체는 인쇄 케이퍼빌리티들(예를 들어 양면 인쇄, 이용 가능한 컬러 팔레트들, 횡 대 종 레이아웃들, 페이지수 메기기, 워터마킹(watermarking) 등)을 결정하기 위해 질의할 수 있다. 블록 508에서, 블록 506에서 결정된 제 2 애플리케이션의 케이퍼빌리티들에 기초하여 제 1 및 제 2 애플리케이션들 사이에서 상호 작용하기 위한 하나 이상의 옵션들이 생성될 수 있다.
블록 510에서, 사용자에게는 관리 객체에 의해 경험이 제공될 수 있다. 이 경험은 사용자가 블록 510에서 결정된 하나 이상의 옵션 중에서부터 선택하는 것을 가능하게 한다. 일부 실시예들에서, 제시되는 경험은 제 2 애플리케이션(예를 들어 프린터 디바이스들의 가상화들인 상기 애플리케이션들)의 특정한 클래스에 포괄적인 공통 경험일 수 있다. 다른 실시예들에서, 경험은 특정한 제 2 애플리케이션 및 이의 케이퍼빌리티들에 특정할 수 있다. 경험의 제공은 도 5b와 관련하여 아래에서 더 상세하게 기술된다.
블록 512에서, 제 1 및 제 2 애플리케이션들 사이의 양방향 상호 작용은 블록 510에서 제공되는 경험을 통해 사용자에 의해 선택되는 상기 옵션들에 기초하여 개시될 수 있다. 일부 실시예들에서, 상호 작용은 사용자 선택 옵션들을 제 1 및/또는 제 2 애플리케이션들에 제공하는 관리 객체의 추가 단계 또는 단계들(도시되지 않음) 이후에 개시될 수 있다. 이 제공에 의해 제 1 및/또는 제 2 애플리케이션이 사용자에 의해 선택된 상기 옵션들에 기초하여 특정한 데이터 및/또는 컨텐츠를 생성하는 것이 가능할 수 있다. 예를 들어, 인쇄 시나리오에서, 인쇄 옵션에 대한 사용자의 선택은 제 1 애플리케이션(예를 들어 워드 프로세싱 애플리케이션)에 재공될 수 있고, 이 제 1 애플리케이션은 그 후에 상기 옵션들에 기초하여, 인쇄될 문서의 페이지들의 형식화 기술을 리플로우 및 생성할 수 있다. 이 예는 도 6, 도 7a 및 도 7b와 관련하여 더 상세하게 기술된다.
도 5b는 하나 이상의 실시예들에 대하여, 애플리케이션들 사이의 양방향 상호 작용의 상황에서 사용자 경험을 제공하는 실례의 프로세스(530)를 도시한다. 일부 실시예들에서, 사용자 경험을 제공하는 것은 애플리케이션들 사이의 양방향 상호 작용을 중재하는 프로세스(500)의 일부일 수 있고, 도 5a의 단계(510)에 관하여 기술되는 바와 같이 다이얼로그를 제공하는 것을 포함할 수 있다.
단계 532에서, 사용자에게 공통 경험(예를 들어 공통 다이얼로그)을 제공할지 또는 물리적 디바이스 또는 온라인 서비스 제공자에 대한 프론트 엔드의 가상화를 표현하는 제 2 애플리케이션에 의해 생성되거나 상기 제 2 애플리케이션으로부터 기원하는 경험을 제공할지가 결정된다. 일부 실시예들에서, 이 결정은 제 2 애플리케이션이 관리 구성요소에 등록될 때(도 5c와 관련하여 기술되는 바와 같이) 이 제 2 애플리케이션에 의해 제공되는 정보에 기초할 수 있다. 예를 들어, 제 2 애플리케이션이 관리 구성요소에 특정할 수 있는 등록 중에 상기 관리 구성요소는 자신이 제 1 및 제 2 애플리케이션들 사이의 상호 작용을 중재하는 것의 일부로서 공통 다이얼로그를 제공할 수 있다. 대안으로, 제 2 애플리케이션은 관리 구성요소가 제 2 애플리케이션에 특정하고/하거나 상기 제 2 애플리케이션으로부터 생성되고 상기 2 애플레케이션에 특정한 옵션들 및/또는 요건들을 포함하는 다이얼로그를 제공할 수 있음을 명시할 수 있다.
대안의 실시예에서, 관리 구성요소는 제 2 애플리케이션에 의해 제공되는 다이얼로그를 사용하거나 공통 다이얼로그를 사용할지를 자동으로 결정할 수 있다. 일부 시나리오들에서, 관리 구성요소는 제 2 애플리케이션과의 상호 작용을 위해 공통 다이얼로그를 항상 사용할 것을 결정할 수 있다. 다른 경우들에서, 관리 구성요소는 가상화된 애플리케이션에 의해 제공되는 다이얼로그를 항상 사용할 것을 결정할 수 있다. 더욱이, 일부 경우들에서 관리 구성요소는 양방향 통신이 완료되는 특정한 상화에 따라 어떤 다이얼로그를 나타낼지를 결정할 수 있다. 양방향 인쇄 통신을 완료하기 위한 하나의 비제한적인 예에서, 관리 구성요소는 모든 가상의 프린터 디바이스들이 공통 다이얼로그를 사용할 수 있다고 결정할 수 있는 반면에 모든 가상화된 프린터 서비스들이 자기 자신의 사용자 경험을 제시할 수 있다.
제 2 애플리케이션에 적어도 부분적으로 특정하거나 맞춤화된 경험을 제공한다고 결정이 되면, 프로세스(530)는 블록 534로 진행하고 여기서 관리 구성요소는 제 2 애플리케이션에 의해 생성되는 다이얼로그가 제시되도록 한다. 이 경우에, 관리 구성요소는 제 2 애플리케이션에 의해 제공되는 경험을 제시하므로 제 1 및 제 2 애플리케이션 상이의 구성 정보의 이동을 중개하는 중개자 역할을 한다. 사용자 경험이 제 2 애플리케이션에 의해 제시되도록 하기 위해 관리 구성요소에 대한 다양한 모델들이 사용될 수 있음이 인정된다. 하나의 비제한적인 예에서, 관리 구성요소는 제 2 애플리케이션이 자신의 사용자 경험을 제시할 수 있는 호스팅 모델(hosting model)을 제공할 수 있다. 다른 비제한적인 예에서, 관리 구성요소는 제 2 애플리케이션으로부터 사용자 경험의 선언형 기술(declarative description)을 수신하고 제 2 애플리케이션 대신 사용자 경험을 완전하게 제시할 수 있다. 일부 실시예들에서, 이 시나리오는 관리 구성요소가 다이얼로그 등의 특정한 케이퍼빌리티들을 관리하는 대신 제 2 애플리케이션에 의해 생성되는 사용자 경험을 제시하는 전달자(conduit) 역할을 하는 것으로 고려되면, 구현이 덜 복잡한 관리 구성요소를 가능하게 할 수 있다.
대안으로, 공통 경험을 제공하는 것으로 결정이 되면, 프로세스(530)는 블록 536으로 진행되고, 여기서 관리 구성요소는 공통 경험에 대한 다이얼로그를 생성한다. 일부 실시예들에서, 공통 경험에 대한 다이얼로그는 제 2 애플리케이션을 포함하는 애플리케이션의 클래스에 공통일 수 있다. 예를 들어, 제 2 애플리케이션이 프린터 디바이스의 가상화인 경우, 공통 다이얼로그는 프린터 디바이스의 클래스에 대한 가상화된 애플리케이션들에 공통일 수 있다. 그와 같은 클래스는 클래스 내에 또는 특정 제조사에 의한 디바이스들 같은 어떤 서브세트 내의 모든 디바이스들(예를 들어 모든 프린터 디바이스들), 특정한 기술을 사용하는 디바이스들(예를 들어 레이저 프린터들 또는 잉크젯 프린터들), 특정한 기능(예를 들어 컬러 팔레트, 블랙-앤-화이트(black-and-white), 다중 인쇄, 특정 인쇄 해상도들 등)을 지원하는 디바이스들 또는 다른 분류들을 포함할 수 있다.
일부 실시예들에서 공통 다이얼로그 모델은 관리 구성요소가 널리 공지되어 있는 디바이스들의 클래스를 처리하기 위해 제 2 애플리케이션의 사용자 경험을 프리젠테이션하는 것이 가능한 특수화된 모델로서 간주될 수 있음이 인정된다. 그와 같은 실시예들에서, 공통 다이얼로그를 제공하는 것은 널리 공지되어 있는 디바이스들의 클래스에 대한 공통 경험을 제공하는 다른 가상화된 애플리케이션의 설치를 통해 달성될 수 있다. 예를 들어, 양방향 인쇄 경험을 위한 관리 구성요소는 제 2 애플리케이션으로부터의 경험을 보여주도록 구성될 수 있다. 경험에 대한 공통 클래스가 예를 들어 모든 프린터 디바이스들의 클래스에 대한 기능을 제시하도록 요구되는 경우, 예를 들어 관리 구성요소는 이 목적을 위해 관리 구성요소에 직접적으로 공지되는 미리 설치된 애플리케이션을 자동으로 선택하고 사용할 수 있다. 이 방식에서, 관리 구성요소는 모든 사용자 경험들의 프리젠테이션을 위한 공통 모델을 유지하면서 널리 공지되어 있는 디바이스들의 클래스 대신 공통 사용자 경험을 여전히 제공할 수 있다.
블록 538에서, 다이얼로그가 사용자에게 제공(예를 들어 디스플레이)되고 다이얼로그를 통해 사용자에 의해 제공되는 정보는 도 5a와 관련하여 도시되는 바와 같이, 부가 프로세싱을 위해 사용된다.
도 5b에 도시되지 않을지라도, 일부 실시예들에서 관리 구성요소는 사용자에게 제 2 디바이스에 특정한 경험과 공통 경험이 결합된 경험을 제공할 수 있다. 예를 들어, 관리 구성요소는 제 2 애플리케이션에 더 특정한 제 2 다이얼로그뿐만 아니라 디바이스들의 특정 클래스에 대한 공통 다이얼로그를 제공할 수 있다. 이 제 2 다이얼로그는 제 2 애플리케이션과 상호 작용하기 위해 추가 옵션들을 디스플레이하고/하거나 사용자의 요청을 서비스하기 위해 제 2 애플리케이션에 의해 요구되는 정보를 수집하는 동반 다이얼로그(companion dialog)일 수 있다. 동반 다이얼로그를 포함하는 그와 같은 실시예들이 아래에서 더 상세하게 기술된다.
더욱이, 일부 실시예들에서 제 2 애플리케이션은 임의로 특정하게 요구되는 제 2 애플리케이션의 정보를 결정하기 위해 관리 구성요소에 의해 질의를 받을 수 있다. 예를 들어, 제 2 애플리케이션이 온라인 서비스 제공자(예를 들어 e-비즈니스)에 대한 프론트 엔트인 경우, 요구되는 정보는 이름, 주소, 전화번호, 이메일 주소, 신용 카드 번호, 배달/픽업 정보, 사용자의 포장 선호도 등과 같이, 서비스 제공자의 고객으로서의 사용자의 식별 및/또는 지불 정보를 포함할 수 있다. 일부 실시예들에서, 임의의 개인, 사적 및 민감 정보를 공유하기 전에 정보 공유 정책에 참여하거나 임의의 그와 같은 정보를 공유하는 것을 방지하기 위해 데이터 공유 정책으로부터 탈퇴하는 사용자의 능력에 사생활 고려사항들이 제공될 수 있다.
도 5c는 하나 이상의 실시예들에 대하여, 애플리케이션 수명 관리를 위한 실례의 프로세스(560)를 도시한다. 그와 같은 수명 관리는 본원에서 제 1 및 제 2 애플리케이션들로 기술되고 물리적 디바이스의 가상화 또는 온라인 서비스에 대한 프론트 엔드를 제공하는 애플리케이션들을 포함하는 하나 이상의 애플리케이션들에 대한 것이다. 도 5c에 도시되는 동작들은 관리 구성요소(들)에 의해 또는 대한으로 관리 구성요소(들) 및 일반적으로 애플리케이션의 수명 관리를 지원하도록 설계되는 다른 시스템 구성요소들에 의해 수행될 수 있다.
단계 562에서, 프로세스 560는 관리 구성요소에 등록되고 소스 애플리케이션과의 양방향 상호 작용에 참여하는 데 이용 가능하게 될 하나 이상의 애플리케이션을 발견한다. 일부 실시예들에서 이 발견 프로세스는 관리 구성요소에 등록하는 데 이용 가능한 애플리케이션에 대해 질의하는 통신을 송신하는 관리 구성요소에 의해 개시되는 능동 프로세스이다. 일부 실시예들에서, 발견 프로세스는 관리 구성요소가 등록을 요청하는 통신들을 송신하는 애플리케이션에 대해 청취하는 점에서 수동적이다.
단계 564에서, 하나 이상의 발견되거나 검출된 애플리케이션들은 관리 구성요소에서 등록된다. 일부 실시예들에서, 관리 구성요소는 가상화된 애플리케이션들이 소스 애플리케이션과의 특정한 데이터 교환 시나리오들에 참여하는 자신들의 능력을 등록할 수 있게 한다. 예를 들어, 인쇄를 위해 가상화된 애플리케이션은 인쇄를 위한 관리 구성요소에 자신이 인쇄 기능을 위한 목표로서 사용되는 데 이용 가능하다는 것을 고지할 수 있다. 관리형 데이터 교환에서 목표 애플리케이션 역할을 하기 위한 목적으로 가상화된 애플리케이션들을 관리 구성요소에 등록하는 다양한 모델들이 이용될 수 있다. 일부 실시예들에서, 가상화 애플리케이션의 등록은 관리 구성요소에 가상화된 애플리케이션 및/또는 가상화 애플리케이션이 가상화한 물리적 디바이스 또는 서비스의 다양한 케이퍼빌리티들 및/또는 요건들을 통신하는 것을 포함할 수 있다.
단계 566에서, 프로세스는 등록된 애플리케이션(들)을 사용하는 것을 지원한다. 이 사용은 일반적으로 도 5 내지 도 9와 관련하여 본원에 다른 곳에 기술되는 바와 같이 진행된다. 단계 568에서, 하나 이상의 등록된 애플리케이션들이 업데이트될 수 있다. 그와 같은 업데이트들은, 관리 구성요소가 사용자에게 제공되는 경험(또는 다이얼로그)에서의 새로운 옵션들 및/또는 요건들을 포함할 수 있도록, 관리 구성요소에 애플리케이션의 새롭고/새롭거나 상이한 기능이 통신되는 것을 가능하게 한다. 동작 570에서, 하나 이상의 등록된 애플리케이션들은 자신이 관리 구성요소에 의해 중재되는 양방향 상호 작용에 참여하는 데 더 이상 이용 가능하지 않도록 관리 구성요소로부터 제거되고/되거나 등록 해제될 수 있다.
도 6은 애플리케이션들 사이의 양방향 상호 작용을 중재하는 예시 구성에 대한 도면이다. 도 6은 도 4의 요소들과 유사한 요소들을 도시하고, 도 4의 설명은 일반적으로 도 6에 적용된다. 그러나, 도 6은 도 4와는 다소 상이하고 도 6은 제 1 애플리케이션(602)이 제 2 애플리케이션(604)에 의해 프로세싱되고/되거나 소비되는 데이터 및/또는 컨텐츠를 생성하는 실시예들을 도시한다. 그와 같은 상황은 제 1 애플리케이션(602)이 인쇄될 하나 이상의 문서들을 생성하는 워드 프로세싱 애플리케이션인 경우에 적용될 수 있다. 그와 같은 실시예들에서, 제 2 애플리케이션(604)은 제 2 디바이스(606)와 같은 물리적 프린터 디바이스의 가상화이거나 인쇄 서비스 제공자와 같은 온라인 서비스 제공자(608)에 대한 프론트 엔드/인터페이스일 수 있다.
도 6, 도 7a 및 도 7b의 설명이 예로서 인쇄 기능을 사용할지라도, 실시예들은 그렇게 제한되지 않는다. 실시예들은 사용자 애플리케이션이 디바이스 또는 서비스 제공자를 나타내는 제 2 애플리케이션에 의해 소비되는 컨텐츠를 생성하는 다른 시나리오들을 지원한다. 예를 들어, 이 시나리오는 멀티미디어 컨텐츠를 생성하는 제 1 애플리케이션 및 프로세싱(예를 들어 서비스 제공자(608)가 비디오 마감 및/또는 편집 서비스인 경우), 디스플레이(예를 들어, 제 2 디바이스(606)가 비디오 모니터, 텔레비전, 레코딩 디바이스 등인 경우) 또는 다른 목적들을 위해 멀티미디어 컨텐츠를 소비하는 제 2 애플리케이션을 지원할 수 있다.
다른 예시 시나리오에서, 제 1 애플리케이션은 내비게이션 디바이스에 의해 소비되는 경로점(waypoint), 라우트 및/또는 다른 지리 또는 위치 정보를 생성하는 매핑 프로그램(mapping program)일 수 있다. 부가적인 예로서, 제 1 애플리케이션은 가정, 사무실 또는 다른 환경에서 다양한 전자 디바이스들을 관리하는 명령들의 세트를 생성하는 자동화 프로그램일 수 있다. 이 방식에서, 실시예들은 소스 애플리케이션 및 가상화 디바이스 사이의 데이터 특히 포맷의 교환으로서 기술될 수 있는 임의의 시나리오를 가상으로 지원함으로써 디바이스에 직접적으로 프로그램할 필요성이 제거된다.
도 7a 및 도 7b는 제 1 애플리케이션이 제 2 애플리케이션에 의해 소비되는 데이터 및/또는 컨텐츠를 생성하는 실시예들에 따라, 두 애플리케이션들 사이의 양방향 상호 작용을 중재하는 실례의 프로세스(700)를 도시한다. 일부 실시예들에서, 프로세스(700)는 관리 구성요소(들)(308)의 일부로서 실행된다.
블록 702에서, 선택이 수신될 수 있고, 상기 선택은 제 1 애플리케이션에 의해 생성되는 컨텐츠를 프로세싱 및/또는 소비하는 제 2 애플리케이션을 나타낸다. 일부 실시예들에서, 제 2 애플리케이션은 제 1 애플리케이션의 사용자에 의해 선택되고 관리 구성요소의 제어, 다이얼로그 또는 다른 사용자 인터페이스 요소의 사용을 통해 제작된다. 예를 들어, 인쇄 기능과 관련되는 일부 실시예들에서, 제 1 애플리케이션은 워드 프로세싱, 이미지 편집 또는 다른 문서 프로세싱 사용자 애플리케이션일 수 있다. 사용자는 인쇄 메뉴를 개방하거나 관리 요소(308)로 하여금 사용자 경험을 제시하도록 하는 인쇄 버튼을 누를 수 있고, 이 사용자 경험으로부터 사용자는 문서를 인쇄 또는 프로세스하기 위한 목표들을 위한 옵션들의 목록을 통해 제 2 애플리케이션을 선택할 수 있다. 이 선택은 인쇄 목표를 위한 사용자의 선택을 나타내는 관리 구성요소 및/또는 OS로 통신을 트리거할 수 있다. 블록 704에서, 관리 객체는 도 5a와 관련하여 기술되는 바와 같이, 제 1 및 제 2 애플리케이션들 사이의 상호 작용을 중재하기 위해 인스턴스화(instantiate)된다.
일부 실시예들에서, 제 2 애플리케이션은 제 1 애플리케이션에 의해 생성되는 컨텐츠를 프로세싱하거나, 소비하거나 또는 다른 방식으로 사용할 수 있는 목표 디바이스의 가상화이다. 예를 들어, 제 2 애플리케이션은 워드 프로세싱 애플리케이션에 의해 생성되는 문서를 인쇄하기 위한 인쇄 디바이스, 또는 제 1 애플리케이션에 의해 생성되거나 제 1 애플리케이션으로부터 스트리밍되는 멀티미디어 컨텐츠를 디스플레이하기 위한 디스플레이 디바이스, 모니터 또는 텔레비전의 가상화일 수 있다. 다른 실시예들에서, 제 2 애플리케이션은 온라인 서비스 제공자, 예를 들어 어떠한 방식으로 제 1 애플리케이션에 의해 생성되는 컨텐츠를 프로세싱함으로써 서비스를 제공할 수 있는 사업자 또는 다른 엔티티에 대한 프론트 엔드 또는 인터페이스이다. 예를 들어, 그러한 온라인 서비스 제공자는 출판 회사, 인쇄 서비스 제공자, 이미지 프로세싱 회사, 오디오/비디오 프로세싱 또는 다른 엔티티일 수 있다.
블록 706에서, 관리 객체 및/또는 제 2 애플리케이션의 케이퍼빌리티들 및/또는 제 2 애플리케이션의 요건들을 결정하기 위해 제 2 애플리케이션에 질의한다. 케이퍼빌리티들은 제 1 애플리케이션에서 생성되는 컨텐츠를 프로세싱하거나 소비하는 제 2 애플리케이션의 능력에 관한 제한들, 옵션들 또는 다른 정보를 포함할 수 있다. 예를 들어, 제 2 애플리케이션이 인쇄 디바이스를 가상화하는 경우, 결정되는 케이퍼빌리티들은 인쇄 디바이스의 인쇄 케이퍼빌리티들(예를 들어, 이용 가능한 컬러 팔레트, 2면 인쇄, 종이 유형, 출력 크기, 확대 횡 대 종 레이아웃, 페이지 수 메기기, 워터마킹 등)을 포함할 수 있다. 다른 예로서, 제 2 애플리케이션이 디스플레이 디바이스 또는 비디오 프로세싱 디바이스를 가상화하는 경우, 결정되는 케이퍼빌리티들은 지원되는 오디오/비디오 포맷들, 디스플레이 크기 등을 포함할 수 있다. 일부 실시예들에서, 도 5b와 관련하여 상술한 바와 같이, 제 2 애플리케이션은 제 2 애플리케이션의 임의의 특정한 요구되는 정보를 결정하기 위해 더 질문을 받을 수 있다.
블록 708에서, 결정된 케이퍼빌리티들 및/또는 제 2 애플리케이션의 요건들에 기초하여, 컨텐츠를 프로세싱하기 위한 하나 이상의 옵션들이 결정된다. 이 옵션들은 블록 710에서 사용자에게 다이얼로그의 일부로서 제시될 수 있다. 사용자는 컨텐츠를 프로세싱하기 위한 하나 이상의 옵션들을 선택하고/하거나 제 2 애플리케이션에 의해 요구되는 임의의 정보를 제공하기 위해 다이얼로그를 이용할 수 있다. 일부 실시예들에서, 다이얼로그는 모든 유형들의 제 2 애플리케이션에 걸쳐 공통일 수 있다. 다른 실시예들에서, 다이얼로그는 특정한 유형 또는 유형들의 제 2 애플리케이션에 걸쳐 공통(예를 들어, 인쇄 디바이스를 가상화하는 애플리케이션들에 일반적인)일 수 있다. 다이얼로그는 제 2 디바이스의 케이퍼빌리티들 및/또는 요건들에 특정한 옵션들로 채워져 있다. 도 5b에 관하여 기술되는 바와 같이, 다이얼로그는 관리 구성요소에 의해 생성되는 공통 사용자 경험이거나 또는 제 2 애플리케이션에 더 특정하고 제 2 애플리케이션으로부터 생성되는 경험인 사용자 경험의 일부일 수 있다.
일부 실시예들에서 제 2 다이얼로그는 블록 710에서 더 제시될 수 있다. 이 제 2 다이얼로그는 컨텐츠를 프로세싱하기 위한 옵션들의 제 2 세트를 사용자에게 제시할 수 있다. 일부 실시예들에서, 이 옵션들의 제 2 세트는 제 2 애플리케이션에 특정할 수 있고 블록 706에서 제 2 애플리케이션으로부터 질의의 일부로서 또는 관리 구성요소 또는 객체 및 제 2 애플리케이션 사이의 별개의 통신의 일부로서 수신될 수 있다.
제 2 애플리케이션이 디바이스를 가상화하는 실시예들에서, 이 옵션들의 제 2 세트는 상기 디바이스의 클래스에 대해 공통인 상기 케이퍼빌리티들을 넘는 디바이스의 특정한 케이퍼빌리티들을 표현할 수 있다. 예를 들어, 프린터 디바이스는 프린터들이 이용 가능한 통상적인 케이퍼빌리티들 및/또는 옵션들 중 다수를 가질 수 있으나, 더 선명한 이미지 프린터, 이용 가능한 더욱 생생한 컬러 팔레트들 등과 같이 프린터 모델 및/또는 제조사에 대한 추가 케이퍼빌리티들을 가질 수 있다. 제 2 다이얼로그(예를 들어, 동반 다이얼로그)로 인해 특정한 디바이스 제조사는 제 2 다이얼로그에 디바이스에 특정한 옵션들을 포함하거나, 디바이스 모델 및/또는 제조사에 특정한 추가 정보를 (선택적으로) 브랜딩하거나 마케팅함으로써 상기 디바이스에 특정한 사용자 경험을 생성하는 것이 가능하다.
그와 같은 동반 다이얼로그는 또한, 제 2 애플리케이션이 온라인 서비스 제공자 또는 e-비즈니스(예를 들어 인쇄 샵)을 표현하는 경우에 특히 유용할 수 있다. 이 경우에, 동반 다이얼로그는 서비스 제공자에 의해 사용자의 요구들(예를 들어 상술한 요청 정보)를 서비스하는데 필요한 고객, 지불 및 다른 정보를 수집하도록 구성될 수 있다. 동단 다이얼로그는 또한 서비스 제공자에게 특정한 브랜딩, 마케팅, 컨택 정보 등을 디스플레이할 수 있다.
일부 실시예들에서, 상술한 다이얼로그들은 OS 내에서 가동되고 있는 관리 구성요소 또는 객체로부터 디스플레이되지만 제 1 애플리케이션으로부터는 디스플레이되지 않는다. 그러므로, 본원에서 기술되는 실시예로 인해 제 1 애플리케이션이 이 기능을 제공해야 하는 것으로부터 면제된다. 애플리케이션 대신 관리 구성요소로부터 다이얼로그들을 제공함으로써, 사용자에게는 디바이스들과 상호 작용하기 위하여 공통적이고 특징이 더 풍부한 경험이 제공될 수 있다.
도 7b로 진행하면, 블록 712에서, 선택된 옵션들이 제 1 애플리케이션에 제공된다. 이 옵션들은 상술한 제 1 및/또는 제 2 다이얼로그(들)를 통해 사용자에 의해 선택되는 상기 옵션들을 포함할 수 있고, 또한 사용자에 의해 구체적으로 선택되지 않은 하나 이상의 디폴트 옵션들을 포함할 수 있다. 블록 714에서, 출력 스트림은 제 1 애플리케이션으로부터 수신된다. 이 출력 스트림은 블록 712에서 컨텐츠에 대해 제 1 애플리케이션에 제공되는 상기 옵션들에 기초하여 생성될 수 있다. 예를 들어, 인쇄 시나리오에서, 옵션들은 사용자에 의해 선택되는 상기 인쇄 옵션들을 포함할 수 있다. 상기 옵션들이 제 1 애플리케이션(예를 들어 워드 프로세싱 애플리케이션)에 제공될 때, 애플리케이션은 이 옵션들에 기초하여 문서를 리플로우할 수 있고, 이 옵션들에 기초하여 인쇄될 각각의 페이지의 형식화 기술을 만들 수 있다. 일부 실시예들에서, 형식화 기술은 Adobe® PostScript® 또는 XML 페이퍼 사양(XML Paper Specification; XPS)과 같은 문서 교환 포맷-페이지에 정보를 기술하기 위한 공통 추상 포맷-으로 되어 있다.
그러므로, 프린트 예에서, 수신되는 출력 스트림은 기록 보관(archival) 출력 스트림일 수 있다. 그러나 실시예들은 특정한 유형의 스트림으로 제한되지 않는다. 수신되는 출력 스트림은 카메라 또는 다른 디바이스가 컨텐츠(예를 들어, 라이브, 연속 데이터 스트림)를 스트리밍하고 있는 한 스트리밍되는 비디오 스트림과 같이 미리 규정된 한계들이 없는 스트림일 수 있다. 스트림은 또한 텍스트, 그래픽, 멀티미디어, 또는 다른 유형의 데이터를 포함하는 스트림형 데이터 파일과 같이, 공지되어 있는 한계들로 고정되는 스트림일 수 있다. 본원에서 기술되는 실시예들의 정신 또는 범위를 벗어나지 않고 출력 스트림에 대한 다양한 포맷들이 지원될 수 있다. 게다가, 출력 스트림이 명료함을 위해 스트림으로서 기술될지라도, 실시예들은 스트림 유형 및 파일 유형 모두를 포함하는 다양한 유형들의 데이터 패키지들 또는 객체들을 포함하는 출력 스트림을 지원한다.
선택적으로, 블록 716에서, 출력 스트림의 미리보기가 사용자에게 제시될 수 있다. 인쇄 예에서, 미리보기는 인쇄될 출력 스트림의 인쇄 미리보기일 수 있다. OS 내의 관리 구성요소로부터 그러한 미리보기를 제공함으로써 애플리케이션은 그러한 기능을 제공해야만 것으로부터 면제되고, 더 풍부한 공통 사용자 경험이 제공되는 것이 가능할 수 있다. 도시되지 않을지라도, 미리보기는 또한 사용자가 선택된 옵션들을 변경하여 출력 스트림을 제 2 애플리케이션에 계속 송신하기 전에 이 출력 스트림을 바꾸거나 미세 조정하는 것을 가능하게 할 수 있다. 다른 실시예들에서, 미리보기를 제시하는 책임은 관리 구성요소에 위임되지만 미리보기를 위한 컨텐츠의 실제 생성은 애플리케이션의 제어 하에 남는다.
블록 718에서, 제 2 애플리케이션에 의해 소비되거나, 프로세싱되거나 다른 방식으로 사용되는 출력 스트림이 제 2 애플리케이션으로 제공된다. 제 2 애플리케이션이 디바이스(예를 들어 프린터)의 가상화인 실시예들에서, 출력 스트림은 블록 720에서 스풀링(spooling)되거나 아니면 제 2 애플리케이션을 통해 디바이스로 제공될 수 있다. 제 2 애플리케이션이 온라인 서비스(예를 들어, 인쇄 서비스)의 프론트 엔드인 실시예들에서, 출력 스트림은 온라인 서비스에 제출된다(예를 들어, 사용자의 특정한 옵션들에 따라 완료되는 인쇄 작업으로서). 출력 스트림을 최종 목적지로 전달하는 방법은 실시예들에 의해 제한되지 않고, 출력 스트림의 컨텐츠를 목적지로 전달하는 임의의 방법이 지원된다.
일부 실시예들에서, 컨텐츠를 디바이스에 직접적으로 송신하는 대신, 컨텐츠는 서버 디바이스(예를 들어, 인쇄 시나리오에서 인쇄 서버)를 통해 송신된다. 게다가, 일부 실시예들에서 목표 디바이스 또는 서비스가 스트림의 컨텐츠를 직접적으로 지원하지 않는 경우, 스트림이 디바이스에 의해 지원되는 포맷(예를 들어 인쇄 경우에 PDL)으로 변환되는 중간 단계가 있을 수 있다. 일부 경우들에서, 이 변환은 스트림을 디바이스 또는 서버로 송신하기 전에 수행될 수 있다. 컨텐츠들이 서버(예를 들어 인쇄 서버)로 송신되고 상기 서버가 스트림을 목표 디바이스로 계속 전송하는 실시예들에서 상기 변환은 스트림이 서버로 송신된 후에 또는 스트림이 목표 디바이스로 송신되기 전에 발생할 수 있다. 일부 실시예들에서, 상기 변환은 디바이스 드라이버(예를 들어 프린터 드라이버)에 의해 수행된다.
도 8은 애플리케이션들 사이의 양방향 상호 작용을 중재하는 예시 구성에 대한 도면이다. 도 8은 도 4의 요소들과 유사한 요소들을 도시하고, 도 4의 설명은 일반적으로 도 8에 적용된다. 그러나, 도 8은 도 4와는 다소 상이하고 도 8은 제 1 애플리케이션(802)이 제 2 애플리케이션(804)에 의해 생성되는 데이터 및/또는 컨텐츠를 소비하는 실시예들을 도시한다. 그와 같은 상황은 제 1 애플리케이션(802)이 화상 회의 또는 비디오 채팅 애플리케이션인 경우에 제 2 디바이스(806)에 의해 생성되고 제 2 디바이스(806)의 가상화 역할을 하는 제 2 애플리케이션(804)을 통해 제공되는 비디오 컨텐츠를 사용하여 적용될 수 있다.
도 8, 도 9a 및 도 9b의 설명이 예로서 카메라 기능을 사용할지라도, 실시예들은 그렇게 제한되지 않는다. 실시예들은 사용자 애플리케이션이 디바이스를 가상화하는 제 2 애플리케이션에 의해 생성되는 컨텐츠를 소비하는 다른 시나리오들을 포함한다. 예를 들어 하나의 시나리오에서 건강 애플리케이션은 운동 디바이스(예를 들어 운동 기구), 생물학적 통계 모니터(예를 들어 심박동 모니터)로부터 스트리밍된 데이터 및 다른 데이터를 수신할 수 있다. 다른 예로서, 제 1 애플리케이션은 온도 또는 압력, 습도, 풍속, 대기중 오염물들/입자상 물질을 측정하는 환경 센서들로부터 실시간, 반-실시간 및/또는 이력 데이터 또는 다른 데이터를 수신하는 환경, 날씨 또는 다른 모니터링 프로그램일 수 있다. 일반적으로, 제 1 애플리케이션에 의해 수신되고/되거나 송신되는 데이터는 실시간 스트림 또는 하나 이상의 이산 파일들의 스트림의 형태일 수 있다.
도 9a 및 도 9b는 제 1 애플리케이션이 제 2 애플리케이션에 의해 생성되는 데이터를 소비하는 실시예들에 따라, 두 애플리케이션들 사이의 양방향 상호 작용을 중재하는 실례의 프로세스(900)를 도시한다. 일부 실시예들에서, 프로세스(900)는 관리 구성요소(들)(308)의 일부로서 실행된다.
블록 902에서, 선택이 수신될 수 있고, 상기 선택은 제 1 애플리케이션에 의해 소비될 컨텐츠를 제공하는 제 2 애플리케이션을 나타낸다. 일부 실시예들에서, 제 2 애플리케이션은 제 1 애플리케이션의 사용자에 의해 선택되고 관리 구성요소의 제어, 다이얼로그 또는 다른 사용자 인터페이스 요소의 사용을 통해 제작된다. 예를 들어, 카메라와 관련된 실시예들에서, 제 1 애플리케이션은 비디오 채팅 또는 비디오 회의 애플리케이션일 수 있다. 사용자는 회의 또는 채팅 세션에서 사용될 비디오 데이터의 소스를 선택하기 위해 메뉴 또는 다른 사용자 인터페이스 요소를 개방하고, 따라서 관리 구성요소로 하여금 비디오 데이터를 스트리밍하는 디바이스(예를 들어 웹캠 또는 다른 카메라)의 가상화일 수 있는 제 2 애플리케이션을 선택하기 위하여 사용자 경험을 제시하도록 할 수 있다. 이 선택은 비디오 소스를 위한사용자의 선택을 나타내는 관리 구성요소 및/또는 OS로 통신을 트리거할 수 있다. 블록 904에서, 관리 객체는 도 5a와 관련하여 기술되는 바와 같이, 제 1 및 제 2 애플리케이션들 사이의 상호 작용을 중재하기 위해 인스턴스화된다.
블록 906에서, 관리 객체 및/또는 관리 구성요소는 컨텐츠를 제공하기 위해 제 2 애플리케이션의 케이퍼빌리티들 및/또는 제 2 애플리케이션의 요건들을 결정하기 위해 제 2 애플리케이션에 질의한다. 예를 들어, 제 2 애플리케이션이 카메라 디바이스를 가상화하는 경우, 결정되는 케이퍼빌리티들은 밝기, 색, 컬러 팔레트, 지원되는 비디오 포맷들, 이미지 크기들을 세팅하는 능력, 효과들을 발생시키는 능력, 얼굴 인식을 수행하는 능력 등을 포함하는 카메라의 비디오 또는 오디오 케이퍼빌리티들을 포함할 수 있으나, 이로 제한되지 않는다.
블록 908에서, 결정된 케이퍼빌리티들 및/또는 제 2 애플리케이션의 요건들에 기초하여, 컨텐츠를 제공하기 위한 하나 이상의 옵션들이 결정된다. 이 옵션들은 블록 910에서, 사용자 경험의 일부(예를 들어 하나 이상의 다이얼로그들)로서 사용자에게 제시될 수 있다. 본원에서 논의되는 바와 같이, 일부 실시예들에서 다이얼로그는 관리 구성요소로부터 제시될 수 있다. 그러나, 다른 실시예들에서, 다이얼로그는 제 2 애플리케이션(예를 들어 가상화 애플리케이션)으로부터 제시될 수 있다. 사용자는 그 후에 컨텐츠를 제공하기 위해 그리고/또는 제 2 애플리케이션에 의해 요구되는 임의의 정보를 제공하기 위해 다이얼로그를 이용하여 제 2 애플리케이션에 대한 하나 이상의 옵션들을 선택할 수 있다. 상술한 바와 같이, 일부 실시예들에서, 다이얼로그는 모든 유형들의 제 2 애플리케이션에 걸쳐 공통일 수 있다. 다른 실시예들에서, 다이얼로그는 특정한 클래스 또는 유형의 제 2 애플리케이션에 걸쳐 공통(예를 들어, 카메라 디바이스를 가상화하는 애플리케이션들에 일반적인)일 수 있다. 다이얼로그는 제 2 디바이스의 케이퍼빌리티들 및/또는 요건들과 연관되는 옵션들로 채워져 있다.
도 5b에 관하여 기술되는 바와 같이, 다이얼로그는 관리 구성요소에 의해 생성되는 공통 사용자 경험이거나 또는 제 2 애플리케이션에 더 특정하고 제 2 애플리케이션으로부터 생성되는 경험인 사용자 경험의 일부일 수 있다. 더욱이, 일부 실시예들에서 제 2 다이얼로그는 블록 910에서 더 제시될 수 있다. 이 제 2 다이얼로그는 도 7a와 관련하여 상술한 바와 같이 특정한 제 2 애플리케이션 및/또는 제 2 애플리케이션이 가상화할 수 있는 디바이스에 지정된 옵션들의 제 2 세트를 사용자에게 제시할 수 있다.
도 9b로 진행하면, 블록 912에서, 선택된 옵션들이 제 2 애플리케이션에 제공된다. 이 옵션들은 상술한 다이얼로그(들)를 통해 사용자에 의해 선택되는 상기 옵션들을 포함할 수 있고, 또한 사용자에 의해 구체적으로 선택되지 않은 하나 이상의 디폴트 옵션들을 포함할 수 있다. 제 2 애플리케이션은 그 후에 명시된 옵션들에 기초하여 원하는 컨텐츠를 생성할 수 있다. 블록 914에서, 출력 스트림은 제 2 애플리케이션으로부터 수신되고 블록 916에서 출력 스트림은 제 1 애플리케이션에 의해 소비되거나, 프로세스되거나, 또는 다른 방식으로 사용되도록 제 1 애플리케이션으로 공급된다. 이전의 예들에 있어서와 같이, 제 2 애플리케이션은 디바이스(예를 들어 카메라)를 가상화할 수 있다. 제 2 애플리케이션은 또한 온라인 서비스(예를 들어 소스 비디오 피드 또는 다른 컨텐츠를 제공하는 서비스)에 대한 프론트 엔드/인터페이스일 수 있다. 실시예들은 출력 스트림을 수신하기 위해 임의의 방법 및/또는 모델을 가상으로 활용할 수 있다.
결론
상기 기술들은 구조 특징들 및/또는 방법론적인 행위들에 특정한 언어로 기술되었을지라도, 첨부된 청구항들은 반드시 기술되는 특정한 특징들 또는 행위들로 제한되지 않는 것이 이해되어야 한다. 오히려, 특징들 및 행위들은 그와 같은 기술들을 구현하는 예시 형태들로서 개시된다.

Claims (20)

  1. 시스템으로서,
    하나 이상의 프로세서와,
    상기 하나 이상의 프로세서에 의해 실행되고 동작들을 수행하는 관리 구성요소를 포함하고, 상기 동작들은
    제 1 애플리케이션에 의해 생성되는 컨텐츠를 프로세싱하기 위해 목표 디바이스의 가상화(virtualization)인 제 2 애플리케이션을 결정하는 것과,
    상기 컨텐츠를 프로세싱하는 것에 대한 상기 목표 디바이스의 하나 이상의 케이퍼빌리티(capability)를 결정하도록 상기 제 2 애플리케이션에 질의하는(interrogating) 것과,
    하나 이상의 옵션에 기초하여 상기 컨텐츠에 대해 생성되는 출력 스트림을 상기 제 1 애플리케이션으로부터 수신하는 것과,
    상기 제 2 애플리케이션에 의해 소비될 출력 스트림을 제공하는 것을 포함하는
    시스템.
  2. 삭제
  3. 제 1 항에 있어서,
    상기 출력 스트림은 인쇄될 문서이고, 상기 제 2 애플리케이션은 프린터 디바이스의 가상화이고, 상기 출력 스트림을 소비하는 것은 상기 프린터 디바이스에서 상기 출력 스트림을 인쇄하는 것을 포함하는
    시스템.
  4. 제 1 항에 있어서,
    상기 출력 스트림은 인쇄될 문서이고, 상기 제 2 애플리케이션은 인쇄 서비스이고, 상기 출력 스트림을 소비하는 것은 인쇄 작업 요청에서의 출력 스트림을 상기 인쇄 서비스에 제출하는 것을 포함하는
    시스템.
  5. 제 1 항에 있어서,
    상기 동작들은 상기 제 2 애플리케이션에 의해 소비될 출력 스트림을 제공하기 전에 상기 출력 스트림의 미리보기를 제시하는 것을 더 포함하는
    시스템.
  6. 제 1 항에 있어서,
    상기 출력 스트림은 멀티미디어 컨텐츠 스트림이고, 상기 제 2 애플리케이션은 상기 멀티미디어 컨텐츠 스트림을 소비할 수 있는 상기 목표 디바이스의 가상화인
    시스템.
  7. 제 1 항에 있어서,
    상기 동작들은 상기 출력 스트림을 생성하기 위해 사용자가 하나 이상의 이용 가능한 옵션으로부터 하나 이상의 옵션을 선택하는 것이 가능하도록 하는 경험을 제공하는 것을 더 포함하고, 상기 하나 이상의 이용 가능한 옵션은 상기 제 2 애플리케이션의 하나 이상의 케이퍼빌리티에 기초하는
    시스템.
  8. 제 7 항에 있어서,
    상기 경험은 상기 관리 구성요소에 의해 생성되고, 상기 경험은 상기 제 2 애플리케이션을 포함하는 애플리케이션들의 클래스에 공통인
    시스템.
  9. 제 7 항에 있어서,
    상기 경험은 상기 제 2 애플리케이션에 의해 생성되고 상기 제 2 애플리케이션에 특정한
    시스템.
  10. 컴퓨팅 디바이스에 의해 구현되는 방법으로서,
    상기 컴퓨팅 디바이스 상에서 수행되는 관리 애플리케이션에서, 제 1 애플리케이션에 의해 생성되는 컨텐츠를 소비하는 제 2 애플리케이션의 표시를 수신하는 단계 - 상기 제 2 애플리케이션은 목표 디바이스의 가상화임 - 와,
    상기 관리 애플리케이션에서, 상기 컨텐츠를 소비하는 것에 대한 상기 목표 디바이스의 하나 이상의 케이퍼빌리티(capability)에 기초하여, 상기 컨텐츠를 소비하기 위한 옵션들의 세트를 결정하기 위해 상기 제 2 애플리케이션에 질의하는 단계와,
    사용자에게 공통 경험을 제공할지 또는 상기 사용자에게 상기 제 2 애플리케이션에 적어도 부분적으로 맞춤화된 경험을 제공할지 결정하는 단계 - 상기 공통 경험은 상기 제 2 애플리케이션을 포함하는 애플리케이션들의 클래스에 공통임 - 와,
    상기 사용자에게 상기 공통 경험을 제공할지 또는 상기 사용자에게 상기 제 2 애플리케이션에 적어도 부분적으로 맞춤화된 경험을 제공할지 결정한 것에 응답하여, 상기 옵션들의 세트로부터의 선택이 가능하도록 상기 관리 애플리케이션으로부터 다이얼로그를 제공하는 단계와,
    상기 선택되는 옵션들을 상기 관리 애플리케이션으로부터 상기 제 1 애플리케이션으로 제공하는 단계와,
    상기 관리 애플리케이션에서, 상기 선택된 옵션들에 따라 상기 컨텐츠에 대해 생성되는 컨텐츠 스트림을 상기 제 1 애플리케이션으로부터 수신하는 단계와,
    상기 컨텐츠 스트림을 상기 관리 애플리케이션으로부터 상기 제 2 애플리케이션으로 제공하는 단계를 포함하는
    컴퓨팅 디바이스에 의해 구현되는 방법.
  11. 제 10 항에 있어서,
    상기 사용자에게 상기 공통 경험을 제공할지 또는 상기 사용자에게 상기 제 2 애플리케이션에 적어도 부분적으로 맞춤화된 경험을 제공할지 결정하는 단계는, 상기 관리 애플리케이션에 상기 제 2 애플리케이션을 등록하는 동안 수신된 정보에 적어도 부분적으로 기초하는
    컴퓨팅 디바이스에 의해 구현되는 방법.
  12. 삭제
  13. 제 10 항에 있어서,
    상기 제 2 애플리케이션은 상기 컨텐츠 스트림을 소비하는 온라인 서비스 공급자에 의해 제공되는
    컴퓨팅 디바이스에 의해 구현되는 방법.
  14. 제 10 항에 있어서,
    상기 제 2 애플리케이션은 프린터 디바이스의 가상화이고,
    상기 제 1 애플리케이션에 의해 생성된 컨텐츠는 인쇄될 적어도 하나의 문서를 포함하며,
    상기 방법은, 상기 결정하는 단계 이후 및 상기 다이얼로그를 제공하는 단계 이전에, 상기 공통 경험이 상기 프린터 디바이스의 가상화인 상기 제 2 애플리케이션에 적어도 부분적으로 기초하여 상기 사용자에게 제공될지 결정하는 단계를 더 포함하는
    컴퓨팅 디바이스에 의해 구현되는 방법.
  15. 제 10 항에 있어서,
    상기 제 2 애플리케이션은 디스플레이 디바이스의 가상화이고,
    상기 제 1 애플리케이션에 의해 생성된 컨텐츠는 비디오 컨텐츠를 포함하며,
    상기 옵션들의 세트는 상기 비디오 컨텐츠를 디스플레이하는 것 또는 상기 비디오 컨텐츠를 프로세싱하는 것 중 적어도 하나를 위한 옵션들의 세트를 포함하고,
    상기 컨텐츠 스트림은 상기 디스플레이 디바이스 상에 디스플레이될 비디오 스트림인
    컴퓨팅 디바이스에 의해 구현되는 방법.
  16. 제 10 항에 있어서,
    상기 제 2 애플리케이션은 인쇄 서비스의 가상화이고,
    상기 제 1 애플리케이션에 의해 생성된 컨텐츠는 인쇄될 적어도 하나의 문서를 포함하며,
    상기 방법은, 상기 결정하는 단계 이후 및 상기 다이얼로그를 제공하는 단계 이전에, 상기 인쇄 서비스의 가상화인 상기 제 2 애플리케이션에 적어도 부분적으로 기초하여 상기 사용자에게 상기 제 2 애플리케이션에 적어도 부분적으로 맞춤화된 경험이 제공될지 결정하는 단계를 더 포함하는
    컴퓨팅 디바이스에 의해 구현되는 방법.
  17. 컴퓨팅 디바이스에게 동작들을 수행하라고 지시하는 명령어를 저장하는 하나 이상의 컴퓨터 판독 가능 저장 매체로서, 상기 동작들은
    제 2 애플리케이션의 선택에 기초하여 제 1 애플리케이션과 상기 제 2 애플리케이션 사이의 상호 작용을 중재하기 위하여 관리 객체의 인스턴스를 인스턴스화(instantiate)하는 것 - 상기 제 2 애플리케이션은 목표 디바이스의 가상화임 - 과,
    상기 관리 객체로부터, 상기 제 2 애플리케이션과의 통신에 적어도 부분적으로 기초하여 상기 목표 디바이스의 하나 이상의 케이퍼빌리티를 결정하는 것과,
    상기 관리 객체로부터, 상기 상호작용에 대한 옵션들의 세트로부터의 선택을 위한 경험을 제공하는 것 - 상기 옵션들의 세트는 상기 제 2 애플리케이션의 하나 이상의 케이퍼빌리티에 기초하여 생성됨 - 과,
    상기 선택된 옵션들에 따라, 상기 제 1 애플리케이션과 상기 제 2 애플리케이션 사이의 상호 작용을 개시하는 것을 포함하는
    컴퓨터 판독 가능 저장 매체.
  18. 제 17 항에 있어서,
    상기 동작들은,
    상기 제 1 애플리케이션과 상기 제 2 애플리케이션 사이의 제 1 상호작용이 종료된 후에 상기 관리 객체의 상기 인스턴스를 저장하는 것과,
    상기 제 1 애플리케이션과 상기 제 2 애플리케이션 사이의 제 2 상호작용에 응답하여 상기 관리 객체의 상기 인스턴스를 인스턴스화하는 것 - 상기 제 2 상호작용은 상기 제 1 상호작용에 후속됨 - 을 더 포함하는
    컴퓨터 판독 가능 저장 매체.
  19. 제 17 항에 있어서,
    상기 제 2 애플리케이션은 카메라 디바이스의 가상화인
    컴퓨터 판독 가능 저장 매체.
  20. 제 17 항에 있어서,
    상기 제 2 애플리케이션은 카메라 디바이스의 가상화이고,
    상기 상호작용은 상기 제 1 애플리케이션이 상기 카메라 디바이스에 의해 생성된 이미지 데이터를 수신하는 것을 포함하는
    컴퓨터 판독 가능 저장 매체.
KR1020147006685A 2011-09-12 2011-10-11 디바이스들의 애플리케이션들로의 제시 기법 KR101871025B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/230,393 US9069498B2 (en) 2011-09-12 2011-09-12 Presenting devices as applications
US13/230,393 2011-09-12
PCT/US2011/055811 WO2013039531A1 (en) 2011-09-12 2011-10-11 Presenting devices as applications

Publications (2)

Publication Number Publication Date
KR20140060309A KR20140060309A (ko) 2014-05-19
KR101871025B1 true KR101871025B1 (ko) 2018-06-25

Family

ID=47728091

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020147006685A KR101871025B1 (ko) 2011-09-12 2011-10-11 디바이스들의 애플리케이션들로의 제시 기법

Country Status (6)

Country Link
US (1) US9069498B2 (ko)
EP (1) EP2756388A4 (ko)
JP (1) JP2014530397A (ko)
KR (1) KR101871025B1 (ko)
CN (1) CN102945142B (ko)
WO (1) WO2013039531A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10432452B2 (en) * 2014-04-11 2019-10-01 Oracle International Corporation System and method for enabling application-to-application communication in an enterprise computer system
US20160313958A1 (en) * 2015-04-27 2016-10-27 Microsoft Technology Licensing, Llc Cross-platform command extensibility
US10554726B1 (en) * 2017-03-22 2020-02-04 Amazon Technologies, Inc. Remote device drivers for internet-connectable devices
CN109582256B (zh) * 2018-11-29 2022-04-26 珠海奔图电子有限公司 打印方法、装置及系统
WO2021046704A1 (en) 2019-09-10 2021-03-18 Citrix Systems, Inc. Perhipheral device sharing over peer-to-peer connection
CN116036578B (zh) * 2023-01-28 2023-06-13 腾讯科技(深圳)有限公司 数据处理方法、装置及相关设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080028283A1 (en) 2006-07-28 2008-01-31 Canon Kabushiki Kaisha Document production support device, methods thereof and storage medium
JP2008059460A (ja) * 2006-09-01 2008-03-13 Fuji Xerox Co Ltd 情報処理装置、情報指示装置、情報指示処理システム、情報指示処理管理システム、情報処理プログラム及び情報指示プログラム
US20080165379A1 (en) * 1995-08-07 2008-07-10 Zuber Peter A Methods and apparatus for real time calibration of a print system marking engine

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0744338A (ja) * 1993-07-27 1995-02-14 Toshiba Corp コンピュータシステムの印刷処理装置および方法
JPH07134693A (ja) * 1993-11-10 1995-05-23 Matsushita Electric Ind Co Ltd アプリケーション連携装置
US5862377A (en) 1994-05-26 1999-01-19 Bay Networks Groups, Inc. Technique for sharing information between applications
US5956036A (en) 1997-03-31 1999-09-21 International Business Machines Corporation Shared modules graphical user interface
JPH1153203A (ja) * 1997-08-04 1999-02-26 Sumitomo Metal Ind Ltd タスク制御方法及びタスク制御システム
JPH1165795A (ja) * 1997-08-27 1999-03-09 Canon Inc 情報処理装置及び該装置におけるプログラムの起動方法
US6097499A (en) 1997-11-14 2000-08-01 Lexmark International, Inc. Methods and apparatus for isochronous printing with minimal buffering
JP2000222335A (ja) * 1998-06-30 2000-08-11 Seiko Epson Corp デバイス制御システム、デバイス制御方法、及び上記システムを構築するためのプログラムを記録した記録媒体
EP1208487A4 (en) 1999-02-17 2006-06-07 Diebold Inc METHOD AND SYSTEM FOR ESTABLISHING TRANSACTION SERVICE CONNECTIONS WITH AN AUTOMATIC TRANSACTION MACHINE
US7284203B1 (en) 1999-07-27 2007-10-16 Verizon Laboratories Inc. Method and apparatus for application sharing interface
US7031004B1 (en) * 1999-08-26 2006-04-18 Xerox Corporation Web print submission from within an application
JP4328426B2 (ja) 1999-11-02 2009-09-09 キヤノン株式会社 印刷制御方法および装置
JP3788206B2 (ja) * 2000-07-06 2006-06-21 セイコーエプソン株式会社 分散印刷制御装置および分散印刷制御方法並びに記録媒体
JP2002215361A (ja) 2001-01-16 2002-08-02 Canon Inc 情報処理装置及び印刷管理装置及び印刷管理システム及びその方法及びコンピュ―タ読み取り可能なプログラムが格納された記憶媒体及び印刷制御プログラム
US20030014529A1 (en) 2001-07-12 2003-01-16 Simpson Shell Sterling Mediated access to production device options in a distributed environment
US6943905B2 (en) 2001-12-20 2005-09-13 Sharp Laboratories Of America, Inc. Virtual print driver system and method
US7607102B2 (en) 2002-03-14 2009-10-20 Apple Inc. Dynamically changing appearances for user interface elements during drag-and-drop operations
US7111279B2 (en) 2002-10-30 2006-09-19 Hewlett-Packard Development Company, L.P. Intercepting calls to common dialog functions
WO2004046874A2 (en) 2002-11-18 2004-06-03 America Online, Inc. Sharing content based on prior sharing experience
US7925682B2 (en) 2003-03-27 2011-04-12 Microsoft Corporation System and method utilizing virtual folders
JP4298362B2 (ja) 2003-04-17 2009-07-15 キヤノン株式会社 情報処理装置及び印刷プレビュー表示方法
US7870199B2 (en) 2003-10-06 2011-01-11 Aol Inc. System and method for seamlessly bringing external services into instant messaging session
US7587723B2 (en) 2003-11-13 2009-09-08 International Business Machines Corporation Restarting a shared virtual resource
US7941439B1 (en) 2004-03-31 2011-05-10 Google Inc. Methods and systems for information capture
US20050235051A1 (en) 2004-04-19 2005-10-20 Brown Timothy D Method of establishing target device settings based on source device settings
JP2006155306A (ja) * 2004-11-30 2006-06-15 Canon Inc デバイスドライバの管理方法
US9270732B2 (en) 2005-03-14 2016-02-23 Rhapsody International Inc. System and method for automatically uploading updates
US7665028B2 (en) 2005-07-13 2010-02-16 Microsoft Corporation Rich drag drop user interface
US20070067726A1 (en) 2005-09-16 2007-03-22 Microsoft Corporation Content sharing user interface for mobile devices
JP2007088596A (ja) * 2005-09-20 2007-04-05 Canon Inc 画像読み取り装置
US8732614B2 (en) 2005-12-30 2014-05-20 Google Inc. Toolbar document content sharing
US20080098327A1 (en) 2006-09-21 2008-04-24 Allurent, Inc. Method and system for presenting information in a summarizing accordion view
US8001474B2 (en) 2006-09-25 2011-08-16 Embarq Holdings Company, Llc System and method for creating and distributing asynchronous bi-directional channel based multimedia content
JP2008165467A (ja) * 2006-12-28 2008-07-17 C4 Technology Inc 印刷システム、印刷方法、プログラムおよびコンピュータ読み取り可能な記録媒体
US20090037517A1 (en) 2007-08-02 2009-02-05 Randall Wayne Frei Method and system to share content between web clients
JP2009104421A (ja) * 2007-10-23 2009-05-14 Hitachi Ltd ストレージアクセス装置
CN101458632B (zh) 2007-12-12 2013-01-23 国际商业机器公司 数据对象复制/粘贴转移方法及装置
EP2075685B1 (en) 2007-12-28 2017-02-22 Canon Europa N.V. A print-job distribution program, a printer program and corresponding methods
US20090234876A1 (en) 2008-03-14 2009-09-17 Timothy Schigel Systems and methods for content sharing
US20100049788A1 (en) 2008-07-29 2010-02-25 Memeo, Inc. Media sharing using local application
US8149431B2 (en) 2008-11-07 2012-04-03 Citrix Systems, Inc. Systems and methods for managing printer settings in a networked computing environment
JP4851556B2 (ja) * 2009-04-10 2012-01-11 株式会社エヌ・ティ・ティ・ドコモ 連携サーバ装置、アプリケーション連携判断システム、及び、アプリケーション連携判断方法
JP5316363B2 (ja) * 2009-10-20 2013-10-16 ソニー株式会社 情報処理装置、機能管理方法、コンピュータプログラム及び情報処理システム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080165379A1 (en) * 1995-08-07 2008-07-10 Zuber Peter A Methods and apparatus for real time calibration of a print system marking engine
US20080028283A1 (en) 2006-07-28 2008-01-31 Canon Kabushiki Kaisha Document production support device, methods thereof and storage medium
JP2008059460A (ja) * 2006-09-01 2008-03-13 Fuji Xerox Co Ltd 情報処理装置、情報指示装置、情報指示処理システム、情報指示処理管理システム、情報処理プログラム及び情報指示プログラム

Also Published As

Publication number Publication date
EP2756388A4 (en) 2015-05-27
EP2756388A1 (en) 2014-07-23
US9069498B2 (en) 2015-06-30
JP2014530397A (ja) 2014-11-17
US20130063767A1 (en) 2013-03-14
CN102945142A (zh) 2013-02-27
CN102945142B (zh) 2017-03-01
KR20140060309A (ko) 2014-05-19
WO2013039531A1 (en) 2013-03-21

Similar Documents

Publication Publication Date Title
KR101871025B1 (ko) 디바이스들의 애플리케이션들로의 제시 기법
JP6096227B2 (ja) クラウドベースの印刷サービス
JP5519081B2 (ja) プリンタ用の仮想入力/出力装置
US9769335B2 (en) Information processing apparatus, information processing method, and storage medium
CN102937940B (zh) 连接设备的双向扩展
EP3066556B1 (en) Mobile device for automatically delivering print jobs to printers
US8542390B2 (en) Content printing system, print relay system, control method, and storage medium
US9519511B2 (en) Application activation framework
US8896857B2 (en) Content receipt via email addresses
JP6851972B2 (ja) 情報処理方法、プログラム及び端末
US8630009B2 (en) Systems and methods for providing content to a peripheral device
US9092164B2 (en) Printing using a platform-independent driver
US20120019865A1 (en) Content printing system, print relay system, control method, and storage medium
JP6095261B2 (ja) クライアント/サーバソフトウェアインターラクションにおける動的機能の利用方法及び装置
JP2014049098A (ja) 画像形成装置、画像形成装置の制御方法およびプログラム
US9513855B2 (en) Print driver installation
WO2014084839A1 (en) Determining optimal rendering systems
US20240143243A1 (en) System and method

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant