KR20100133382A - 배포가능 개체 계층구조 내에서의 응용 프로그램 관리 - Google Patents
배포가능 개체 계층구조 내에서의 응용 프로그램 관리 Download PDFInfo
- Publication number
- KR20100133382A KR20100133382A KR1020107020791A KR20107020791A KR20100133382A KR 20100133382 A KR20100133382 A KR 20100133382A KR 1020107020791 A KR1020107020791 A KR 1020107020791A KR 20107020791 A KR20107020791 A KR 20107020791A KR 20100133382 A KR20100133382 A KR 20100133382A
- Authority
- KR
- South Korea
- Prior art keywords
- application
- user
- component
- devices
- hierarchy
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/468—Specific access rights for resources, e.g. using capability register
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
컴퓨팅 환경에서의 응용 프로그램들의 관리가 종종, 응용 프로그램을 획득하는 것, 데이터 개체들을 다양한 장소들에 배포하는 것, 및 배포된 장치와 관련하여 응용 프로그램을 구성하는 것 등의 상당한 수의 컴퓨팅 동작들을 포함한다. 종래의 컴퓨팅 환경들은 통상적인 응용 프로그램 수명 주기에 걸쳐 부적절한 지원을 제공할 수 있으며, 많은 장치들에 걸쳐 분산되어 있는 컴퓨팅 환경의 경우 특히 그렇다. 그 대신에, 컴퓨팅 환경이 다양한 장치들로 분배될 수 있는 배포가능한 개체 계층구조에 표현될 수 있다. 따라서, 응용 프로그램의 표현들을 개체 계층구조에 설치하고 응용 프로그램 검색, 공유, 업데이트 및 제거 등의 응용 프로그램 수명 주기의 많은 다른 측면들을 지원하기 위해 응용 프로그램 관리 서비스가 제공될 수 있다. 따라서, 장치들이 컴퓨팅 메쉬를 포함하는 장치들 간의 감소된 수동 관리에 의해 일관성있는 방식으로 컴퓨팅 환경의 응용 프로그램들을 사용자에게 제공할 수 있다.
Description
많은 컴퓨팅 환경들은 일련의 개체 시스템들에 의해 관리되는 일련의 많은 다양한 개체들을 포함한다. 예를 들어, 컴퓨팅 환경은 파일 시스템에 의해 관리되는 일련의 파일들, 데이터베이스 시스템에 의해 관리되는 하나 이상의 데이터베이스들, 응용 프로그램들을 나타내고 또 어셈블리 캐시(assembly cache)에 의해 관리되는 일련의 실행가능 이진 파일들(executable binaries), 운영 체제의 사용자 프로필 구성요소에 의해 관리되는 일련의 사용자 프로필들 및 운영 체제의 복사 버퍼(copy buffer)에 의해 관리되는 일련의 복사된 항목들 등의 데이터 캐싱 구성요소들에 의해 관리되는 다양한 데이터 캐시들, 운영 체제의 실행취소 구성요소에 의해 관리되는 일련의 실행취소 동작들, 운영 체제의 항목 사용 추적 구성요소에 의해 관리되는 일련의 "가장 최근에 사용된" 항목들을 포함할 수 있다. 게다가, 이러한 개체들이 하나 이상의 동작들(예를 들어, 2개의 개체 세트를 병합시키는 개체 동기화 동작 및 소스 개체 세트와 일치하도록 대상 개체 세트를 조정하는 개체 미러링 동작)에 따라 하나 이상의 사용자들에 의해 동작되는 복수의 장치들 간에 교환될 수 있다. 이러한 방식으로, 개체들이 일련의 개체 시스템들을 통해 느슨하게 구성되어 있고 또 컴퓨팅 환경을 나타내도록 통합되어 있다.
종래의 컴퓨팅 환경들 내에서의 응용 프로그램 관리는 종종 상당한 사용자 개입을 필요로 한다. 예를 들어, 사용자가 원하는 응용 프로그램을 독립적으로 검색할 수 있고, 설치 실행파일(setup executable) 또는 설치 파일들을 포함하는 CD-ROM 등의 설치 관리자 패키지(installer package)를 획득할 수 있다. 사용자는 이어서, 파일들을 특정의 장소들에 복사하고 등록 정보를 생성하는 등에 의해, 컴퓨팅 환경에서의 응용 프로그램의 배포를 용이하게 해주는 응용 프로그램 설치 관리자를 이용할 수 있다. 그렇지만, 응용 프로그램 배포 이후에, 컴퓨팅 환경들은 통상적으로 응용 프로그램들에 대한 계속적인 지원을 거의 제공하지 않으며, 때때로 제거 관리자(uninstaller) 응용 프로그램만을 포함하고 있다. 실행, 공유, 동기화 및 업데이트 등의 통사의 유지관리 작업들이 보통 응용 프로그램에 위임된다. 게다가, 비록 동일한 사용자에 의해 동작되고 2개 이상의 이러한 플랫폼들 상에서 공통의 목적을 위해 이용되더라도, 하나의 컴퓨터 시스템 또는 장치에 응용 프로그램을 배포하는 것이 다른 컴퓨터 시스템들 또는 장치들에 응용 프로그램을 배포하는 것을 가능하게 해주거나 용이하게 해주는 경우가 극히 드물다.
요약
이 요약은 이하에서 상세한 설명에 더 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된 것이다. 이 요약은 청구된 발명 대상의 주요 인자들 또는 필수적인 특징들을 확인하기 위한 것이 아니며, 청구된 발명 대상의 범위를 제한하는 데 사용되기 위한 것도 아니다.
컴퓨팅 시스템 내의 개체들을 체계가 없이 느슨하게 통합된 일련의 개체 시스템들로서 구성하는 것은 몇가지 문제점들을 야기할 수 있다. 예를 들어, 다양한 장치들을 통해 사용자에게 일관성있는 컴퓨팅 환경을 제공하는 것이 어려울 수 있으며, 장치들이 능력면에서 차이가 있는 경우(예를 들어, 고성능 퍼스널 워크스테이션, 브라우저-기반 공중 단말기(public terminal), 및 저성능 휴대폰 장치) 특히 그렇다. 다른 일례로서, 개체들에 동기화 및 백업 등의 서비스를 적용하는 것은 그에 의해 관리되는 개체들에 영향을 주기 위해 각각의 개체 시스템과의 인터페이싱을 필요로 할 수 있고, 이러한 인터페이싱이 개체 시스템들 간에 다를 수 있다. 제3 일례로서, 관리하는 개체 시스템들의 불완전한 협력으로 인해 일련의 다양한 개체들(응용 프로그램을 포함하는 모든 개체들 등)을 관련시키는 것이 어려울 수 있다.
컴퓨팅 환경들을 포함하는 개체들을 표현하는 대안의 기법은 컴퓨팅 환경 호스트에 의해 호스팅될 수 있는 개체 계층구조로 개체들을 구성하는 것을 포함한다. 개체들이 균일한 방식으로 표현되고 개체 시스템에 의해 일관된 방식으로 관리되는 경우, 컴퓨팅 환경의 모든 개체들에 적용할 일련의 서비스들이 고안될 수 있다. 게다가, 동일한 컴퓨팅 환경(동일한 사용자 프로필, 응용 프로그램, 데이터 파일, 기타를 포함함)을 표현하는 개체 계층구조가 다양한 장치들로 전달될 수 있고, 각각의 장치는 일관되지만 장치의 능력에 기초하여 커스터마이즈된 방식으로 컴퓨팅 환경을 렌더링할 수 있다(예를 들어, 워크스테이션에 연결된 키보드 장치로부터 데이터 입력을 수신하는 하드 키보드 인터페이스 및 휴대폰 장치로부터 데이터 입력을 수신하는 터치스크린 소프트웨어 키보드 인터페이스).
이러한 성질의 개체 계층구조 내에서, 응용 프로그램 관리 작업들이 수행될 수 있다. 컴퓨팅 환경 호스트는 응용 프로그램을 획득하는 것, 응용 프로그램을 장치와 연관시키는 것, 및 응용 프로그램을 장치 상에 배포하는 것을 용이하게 해줄 수 있다. 배포가능한 개체 계층구조에서 응용 프로그램을 일련의 개체들로서 표현하는 것은 통상의 응용 프로그램 관리 작업들을 용이하게 해줄 수 있다. 제1 일례로서, 응용 프로그램이 개체 계층구조에 표현되어 있는 복수의 컴퓨터 시스템들 및 장치들에 용이하게 배포될 수 있고 또, 많은 시나리오들에서, 자동으로 배포될 수 있다. 예를 들어, 응용 프로그램의 제1 버전은 워크스테이션으로 배포될 수 있고, 응용 프로그램의 제2 버전은 공중 단말기(public terminal)에서 사용하기 위해 웹 또는 웹-지원 응용 프로그램으로서 배포될 수 있으며, 응용 프로그램의 제3 버전은 저성능 휴대폰 장치에서 사용하기 위해 기능이 제한된 응용 프로그램으로서 배포될 수 있다. 제2 일례로서, 컴퓨팅 환경 호스트는 응용 프로그램을 업데이트하는 것(예를 들어, 응용 프로그램 리소스들을 업데이트된 버전들로 패치하는 것 또는 응용 프로그램에서 사용하기 위한 새로운 컨텐츠를 배포하는 것)을, 그에 따라 개체 계층구조를 조절하고 개체 계층구조의 호스팅된 버전과 배포된 버전을 동기화시키는 것에 의해 이 조절들을 장치들에 배포함으로써, 용이하게 해줄 수 있다.
게다가, 배포가능한 개체 계층구조에서 응용 프로그램을 일련의 개체들로서 표현하는 것이 또한 새로운 특징들을 가능하게 해줄 수 있다. 제1 일례로서, 컴퓨팅 환경은, 개체 계층구조의 특정의 부분을 제2 사용자의 장치, 컴퓨터 시스템 또는 컴퓨팅 환경 호스트로 배포함으로써, 사용자가 응용 프로그램을 제2 사용자 또는 응용 프로그램 세션의 한 측면과 공유할 수 있게 해줄 수 있다. 예를 들어, 제1 사용자는 미디어 플레이어 응용 프로그램을 통해 제1 컴퓨터 상에서 재생할 일련의 노래 개체들을 선택할 수 있고, (예를 들어, 미디어 플레이어 응용 프로그램의 오디오를 제2 사용자로 스트리밍함으로써) 미디어 플레이어 응용 프로그램 세션을 제2 사용자와 공유하기로 할 수 있다. 제2 일례로서, 응용 프로그램의 구성이 개체 계층구조의 일부인 장치들 및 컴퓨터 시스템들에 걸쳐 동기화될 수 있다. 장치-독립적인 응용 프로그램 속성들(예를 들어, 맞춤법-검사 사전에 추가된 사용자 지정 단어)은 모든 이러한 장치들 및 컴퓨터 시스템들로 자동으로 전파될 수 있는 반면, 장치-관련 응용 프로그램 속성들은 컴퓨팅 환경 호스트에 의해 각자의 장치들에 대해 지정될 수 있다. 이러한 방식으로, 컴퓨팅 환경 호스트에 대한 응용 프로그램 관리 서비스는 하나 이상의 사용자에 의해 작동되는 다양한 컴퓨터 시스템들 및 장치들 상에서 응용 프로그램들의 검색, 배포, 사용 및 제거를 지원할 수 있다.
이상의 목적들 및 관련 목적들을 달성하기 위해, 이하의 설명 및 첨부 도면들은 어떤 예시적인 측면들 및 구현들에 대해 기술하고 있다. 이들은 하나 이상의 측면들이 이용될 수 있는 다양한 방식들 중 단지 몇개만을 나타낸 것이다. 본 발명의 다른 측면들, 이점들 및 새로운 특징들이, 첨부 도면들과 관련하여 살펴볼 때, 이하의 상세한 설명으로부터 명백하게 될 것이다.
도 1은 컴퓨팅 환경 내에서의 통상적인 응용 프로그램 수명 주기를 나타낸 도면.
도 2는 컴퓨팅 환경 호스트와 다양한 컴퓨팅 환경 렌더링 장치들 간의 예시적인 상호작용을 나타낸 도면.
도 3은 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조에서 응용 프로그램의 배포를 관리하는 예시적인 방법을 나타낸 흐름도.
도 4는 응용 프로그램 저장소에 의해 관리되는 적어도 하나의 응용 프로그램을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 예시적인 시스템을 나타낸 구성요소 블록도.
도 5는 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 다른 예시적인 시스템을 나타낸 구성요소 블록도.
도 6은 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 또 다른 예시적인 시스템을 나타낸 구성요소 블록도.
도 7은 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 예시적인 시스템의 일부분을 나타낸 구성요소 블록도.
도 8은 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 예시적인 시스템의 다른 일부분을 나타낸 구성요소 블록도.
도 9는 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 예시적인 시스템의 또 다른 일부분을 나타낸 구성요소 블록도.
도 10은 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 또 다른 예시적인 시스템을 나타낸 구성요소 블록도.
도 11은 본 명세서에 기술된 발명 내용들 중 하나 이상이 구현될 수 있는 예시적인 컴퓨팅 환경을 나타낸 도면.
도 2는 컴퓨팅 환경 호스트와 다양한 컴퓨팅 환경 렌더링 장치들 간의 예시적인 상호작용을 나타낸 도면.
도 3은 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조에서 응용 프로그램의 배포를 관리하는 예시적인 방법을 나타낸 흐름도.
도 4는 응용 프로그램 저장소에 의해 관리되는 적어도 하나의 응용 프로그램을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 예시적인 시스템을 나타낸 구성요소 블록도.
도 5는 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 다른 예시적인 시스템을 나타낸 구성요소 블록도.
도 6은 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 또 다른 예시적인 시스템을 나타낸 구성요소 블록도.
도 7은 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 예시적인 시스템의 일부분을 나타낸 구성요소 블록도.
도 8은 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 예시적인 시스템의 다른 일부분을 나타낸 구성요소 블록도.
도 9는 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 예시적인 시스템의 또 다른 일부분을 나타낸 구성요소 블록도.
도 10은 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 배포하는 것을 관리하는 또 다른 예시적인 시스템을 나타낸 구성요소 블록도.
도 11은 본 명세서에 기술된 발명 내용들 중 하나 이상이 구현될 수 있는 예시적인 컴퓨팅 환경을 나타낸 도면.
이제부터 첨부 도면들을 참조하여 청구된 발명 대상에 대해 기술하며, 도면 전체에 걸쳐 유사한 참조 번호들이 유사한 구성요소들을 가리키는 데 사용되고 있다. 이하의 설명에서, 설명의 목적상, 청구된 발명 대상에 대한 완전한 이해를 제공하기 위해 수많은 구체적인 상세가 기술되어 있다. 그렇지만, 청구된 발명 대상이 이러한 구체적인 상세들이 없어도 실시될 수 있다는 것이 명백할 수 있다. 다른 경우들에, 청구된 발명 대상의 설명을 용이하게 해주기 위해 공지의 구조들 및 장치들이 블록도 형태로 도시되어 있다.
종래의 컴퓨팅 환경은 통상적으로 시계 및 계산기 등의 간단한 목적을 가진 작은 도구들로부터 소프트웨어 통합 개발 환경 및 생산성 제품군 등의 복잡하고 상호관련된 응용 프로그램들로 된 대형 제품군에 이르는 많은 다양한 일련의 응용 프로그램들을 포함하고 있다. 응용 프로그램들은 또한 멀티미디어 플레이어 및 그에 의해 렌더링되는 미디어 개체들 등의 미디어[예를 들어, 리더 응용 프로그램(reader application)에 의해 렌더링되는 하나 이상의 전자책], 게임, 스크린 세이버, 다양한 유형의 하드웨어를 관리하는 장치 드라이버, 기타도 포함할 수 있다. 응용 프로그램들은 로컬적으로(예를 들어, 사용자의 장치로 배포되는 실행가능 이진 파일 및 리소스를 통해), 원격적으로(예를 들어, 원격 서버 상에서 실행되고 웹 브라우저를 통해 사용자와 통신하는 웹 응용 프로그램), 또는 이들의 조합으로(예를 들어, 네트워크를 통해 액세스가능한 이메일 아카이브에 액세스하도록 구성되어 있는 이메일 클라이언트 등의, 원격 리소스들을 이용하는 로컬적으로 설치된 응용 프로그램) 배포될 수 있다. 운영 체제는 보통 응용 프로그램들을 호스팅하고 유지 관리하기 위해 또 응용 프로그램 시작 관리자 및 그와 관련된 데이터 개체들과의 연관관계를 통해 응용 프로그램들에 대한 사용자 액세스를 제공하기 위해 제공되어 있다.
도 1은 컴퓨팅 환경에서 응용 프로그램이 나타내는 전형적인 응용 프로그램 수명 주기(10)를 나타낸 것이다. 통상적인 컴퓨팅 환경 내에서 수행되는 응용 프로그램 수명 주기(10)는 데이터 개체들을 복사하는 것, 구성 정보를 기록 및 판독하는 것, 그리고 컴퓨터 네트워크를 통해 서버들에 개체들을 요청하여 수신하는 것 등의 상당한 수의 동작들을 포함할 수 있다. 응용 프로그램 수명 주기(10)는 보통 사용자가 컴퓨팅 환경에서 액세스할 수 있게 될 응용 프로그램을 선택하는 구매(procurement)(12)로 시작된다. 구매(12)는 통상적으로 사용자가 응용 프로그램 라이브러리 또는 광고 제안의 사용자-주도의 브라우징을 통해 응용 프로그램을 알게 되는 검색(discovery)(14)을 포함한다. 구매(12)는 또한 통상적으로 사용자가 응용 프로그램의 리소스들을 얻고 또 그 응용 프로그램을 사용할 권한(permission)을 조정하는 획득(acquisition)(16)을 포함한다. 로컬적으로 설치된 응용 프로그램의 경우, 획득(16)은 응용 프로그램 서버로부터 설치 관리자 응용 프로그램을 다운로드하는 것을 포함할 수 있는 반면, 웹-액세스가능 응용 프로그램들은 웹메일 서비스를 위한 사용자 계정을 생성하는 것 등에 의해 웹 응용 프로그램의 공급자에 가입하는 것을 필요로 할 수 있다. 획득(16)은 또한 금전의 지급 등의 거래, 및 EULA(end-user license agreement, 최종 사용자 사용권 계약)를 사용자에게 제시하고 그의 사용 약관의 수락을 요청하는 것 등의 라이선싱(licensing)을 포함할 수 있다. 새로운 컴퓨팅 환경의 기본 구성요소들로서 사용자가 이용할 수 있게 되는 사전 설치된 응용 프로그램들을 통하는 등에 의해 구매(12)의 일부 또는 그 전부가 때때로 생략될 수 있다.
구매(12) 이후에 또는 그와 동시에, 응용 프로그램 수명 주기(10)는 종종 로컬 컴퓨팅 환경이 프로그램에의 액세스를 제공하도록 구성되는 설치(18)를 포함한다. 설치(18)는 때때로 특정의 장치가 응용 프로그램을 사용하도록 구성되는 매핑(mapping)(20)을 포함한다. 매핑(20)은 사용자가 소프트웨어에 액세스하기 위한 특정의 장치를 지정하는 것(예를 들어, 응용 프로그램이 배포될 휴대폰 장치를 선택하는 것) 및/또는 (예를 들어, 정품 인증을 통해) 장치가 소프트웨어를 사용하도록 허가하는 것을 포함할 수 있다. 설치(18)는 또한 응용 프로그램을 포함한 리소스들이 하나 이상의 매핑된 장치 상에 배포되는 배포(deployment)(22)(예를 들어, 응용 프로그램 폴더들을 생성하는 것, 이러한 폴더들에 응용 프로그램 이진 파일들을 두는 것, 코드 라이브러리들을 등록하는 것, 및 구성 정보를 시스템 레지스트리들 및 구성 파일들에 기록하는 것)도 포함할 수 있다. 배포(22)는 또한, 응용 프로그램을 응용 프로그램 시작 관리자에 등록하는 것, 응용 프로그램을 그에 관련된 데이터 개체들과 연관시키는 것(예를 들어, 미디어 응용 프로그램을 어떤 유형의 미디어 개체들에 대한 미디어 플레이어로서 식별하는 것), 및/또는 시스템 초기화 시에 또는 특정의 이벤트들에 응답하여 자발적으로 응용 프로그램을 시작하도록 컴퓨팅 환경을 구성하는 것 등에 의해, 응용 프로그램에의 액세스를 제공하도록 컴퓨팅 환경을 구성하는 것도 포함할 수 있다. 배포(22)는 또한 사용자가 응용 프로그램을 사용하는 것을 돕기 위해 설명서(documentation)를 디스플레이하는 것도 포함할 수 있다. 어떤 시나리오들에서, 설치(18)는 장치를 네트워크 서버에 등록하는 것 또는 장치에 대한 응용 프로그램을 호스팅하도록 네트워크 서버를 구성하는 것 등의 원격 리소스들을 구성하는 것도 포함할 수 있다. 다른 시나리오들에서, 설치(18)가 축소되거나 생략될 수 있고, 예를 들어, 로컬적으로 배포된 응용 프로그램이 구성 또는 설치 없이 실행되는 실행가능 이진 파일을 포함할 수 있고, 웹 응용 프로그램이 로컬 장치 상에의 어떤 유형의 설치도 필요로 하지 않을 수 있다.
구매(12) 및 설치(18) 이후에, 응용 프로그램은 하나 이상의 사용자들에 의해 사용(24)될 준비가 되어 있을 수 있다. 사용(use)(24)은 통상적으로, 예를 들어, 응용 프로그램을 시작하는 것 또는 응용 프로그램과 연관된 데이터 개체를 활성화시키는 것에 의해 시작될 수 있는 실행(execution)(26)을 포함한다. 실행(26)은 또한 미디어 플레이어에 의해 렌더링될 수 있는 새로운 미디어 개체들 등의 부가의 컨텐츠를 획득하는 것도 포함할 수 있다. 사용(24)은 또한 응용 프로그램의 새로운 버전들을 제공하기 위해 패치하는 것 또는 그에 의해 이용되는 리소스들(예를 들어, 새로운 형태의 멀웨어를 탐지하여 해결하기 위한 정보를 수신하여 구현하는 바이러스 백신 패키지)의 유지 관리 등의, 응용 프로그램에 대한 계속적인 변경들을 포함하는, 업데이트(28)도 포함한다. 이러한 업데이트(28)는 때때로 응용 프로그램 서버에 의해 원격 리소스들에 대해 수행될 수 있고, 예를 들어, 웹메일 공급자(webmail provider)가 사용자 또는 사용자 장치들을 개입시키지 않고 또 심지어 사용자가 모른 채로 그의 백-엔드 소프트웨어를 빈번히 업데이트시킬 수 있다.
응용 프로그램 수명 주기(10)는 또한 응용 프로그램이 하나 이상의 장치들로부터 제거되는 제거(uninstallation)(30)를 포함할 수 있다. 제거(30)는 하나 이상의 장치들이 응용 프로그램을 사용할 권한을 잃게 되는 매핑 해제(unmapping)(32)를 포함할 수 있다. 예를 들어, 웹 응용 프로그램이 어떤 장치들 상에서만 액세스가능할 수 있고, 장치가 응용 프로그램 서버에 저장되어 있는 인증된 장치들의 목록으로부터 제거됨으로써 매핑 해제될 수 있다. 제거(30)는 또한 응용 프로그램의 리소스들이 하나 이상의 장치들로부터 제거될 수 있는 서비스 해제(decommissioning)(34)도 포함할 수 있다. 서비스 해제(34)는 사용자에 의해 요청될 수 있거나, 자발적으로 호출될 수 있다(예를 들어, 응용 프로그램이 제한된 기간 동안만 사용자에게 라이선싱될 수 있고, 컴퓨팅 환경이 라이선스 기한의 만료 시에 자동으로 응용 프로그램을 서비스 해제하도록 구성되어 있을 수 있다).
응용 프로그램 수명 주기가 아주 다양한 응용 프로그램들에 대해 널리 이용되고 있지만, 많은 종래의 컴퓨팅 환경들은 응용 프로그램 수명 주기가 몇가지 단점들을 나타내도록 구성되어 있다. 한 일례로서, 종래의 컴퓨팅 환경들에서는 이러한 응용 프로그램 수명 사이클을 수행하는 데 상당한 정도의 사용자 참여를 필요로 할 수 있다. 구매(12) 동안에, 컴퓨팅 환경이 응용 프로그램들을 검색 또는 획득하는 것에 대한 지원을 거의 또는 전혀 제공하지 않을 수 있고, 사용자가 조사(예를 들어, 웹 검색)을 통해 유용한 응용 프로그램들을 찾고 응용 프로그램 설치 패키지를 다운로드해야만 할지도 모른다. 구매(12)는 또한 라이선스의 사용자 수락을 포함할 수 있지만, 이는 때때로 생략될 수 있다(예를 들어, 사용자가 특정의 보일러 플레이트(boilerplate) 최종사용자 사용권 계약 하에서 제공되는 임의의 응용 프로그램을 사전 허가받을 수 있다). 최근의 컴퓨팅 환경들은 통상적으로 매핑(20)에 대한 지원을 거의 또는 전혀 제공하지 않으며, 사용자들은 일련의 장치들 상에 응용 프로그램을 개별적으로 배포하도록 준비해야만 할지도 모른다. 많은 종래의 컴퓨팅 환경들은, 자동화된 설치 관리자 도구 등, 배포(22)에 대한 어떤 지원을 제공한다. 그렇지만, 이러한 설치 관리자 도구들은, 웹 응용 프로그램에서 사용자 계정을 생성하는 동안에 사용자 정보(이름, 이메일 주소, 기타)를 입력하는 것, 라이선스를 구입하기 위해 신용 카드 정보를 제공하는 것, 및 물리적 매체(설치 CD 등)에 포함된 직렬 키(serial key)를 입력하는 것 등, 그렇지 않았으면 회피할 수 있을 수 있는 상당한 양의 상호작용을 사용자에게 여전히 위임할 수 있다. 종래의 컴퓨팅 환경들은 또한 종종 응용 프로그램들에, 또는 심지어 사용자가 시작한 소프트웨어 패치들의 검색, 다운로드 및 적용에 위임되는 업데이트(28)에 대한 부적절한 지원을 제공할 수 있다. 마지막으로, 매핑 해제(34) 및 서비스 해제(34)가 설치 관리자 응용 프로그램에 의해 용이하게 될 수 있지만, 장치별 관리로 제한될 수 있고, 예를 들어, 사용자가 각각의 장치 상에서 제거를 시작해야만 할지도 모르며, 이러한 모든 장치들 간의 중앙 관리 배포(centrally managed deployment)가 어려울지도 모른다.
최근의 컴퓨팅 환경 사용과 관련하여 이러한 단점들이 악화될 수 있고 기타 단점들이 생길 수 있으며, 이는 종종 일련의 장치들에 걸쳐 확장될 수 있다. 컴퓨팅 환경의 사용자는 협력하여 워크스테이션, 노트북 또는 태블릿 등의 휴대용 컴퓨터 시스템, 게임 콘솔, 휴대폰, 및 미디어 플레이어를 관리하고 이용할 수 있다. 게다가, 사용자는 공중 워크스테이션 상의 컴퓨팅 환경의 전부 또는 그 일부에 액세스하거나 컴퓨팅 환경의 일부 또는 그 전부에 대한 액세스를 다른 사용자들에게 허용하고자(예를 들어, 게스트가 컴퓨팅 환경을 이용하거나 컴퓨팅 환경 내에서 관리되는 데이터 개체들에 액세스할 수 있게 해주고자) 할 수 있다. 컴퓨팅 환경과 관련하여 사용자가 작동시킬 수 있는 장치들의 계속된 확산에도 불구하고, 종래의 운영 체제들은 이러한 장치들 간에 컴퓨팅 환경을 일관성 있게 제시하는 것 또 그로써 데이터 개체들의 분산, 액세스 및 동기화를 증진시키는 것에 대한 지원을 거의 제공하지 않을 수 있다. 이러한 제한된 지원은 응용 프로그램들과 관련하여 특히 명백하다. 일반적으로, 사용자들은 종종, 임의의 다른 장치의 구성과 독립적으로, 각각의 장치 상에서 수동으로 응용 프로그램 수명 주기(10)의 많은 측면들을 수행한다. 예를 들어, 사용자가 사용자의 기본 설정(preferences)에 따라 특정의 응용 프로그램을 구성할 수 있지만, 응용 프로그램이 실행되는 각각의 장치를 유사한 방식으로 구성하는 것은 종종 각각의 응용 프로그램 배포의 수동 구성을 필요로 한다. 그에 부가하여, 다수의 장치들을 협력적 방식으로 사용하는 것은 새로운 문제들을 야기할 수 있으며, 예를 들어, 사용자가 어떤 사람에 대한 일련의 연락처 정보를 제1 장치 상에 가지고 있는데 이 정보가 제2 장치 상에 있는 동일한 사람에 대한 일련의 연락처 정보와 모순될 수 있고 또 어느 일련의 연락처 정보가 보다 최근의 것인지를 확인할 수 없을 수 있다.
일관성있고 배포가능하며 확장가능한 방식으로 일련의 장치들 간에 컴퓨팅 환경에 대한 액세스를 제공하는 기법들을 개발하려는 최근의 시도들이 있었다. 이러한 기법들은 또한 협력하는 장치들 간에 공통된 응용 프로그램 세트를 제공하고 또 이러한 장치들 간의 응용 프로그램들의 구매, 설치, 사용 및 제거를 관리하는 중앙 서비스를 제공하려고 시도하고 있다. 응용 프로그램 세트가 다양한 장치들 간에 반드시 동일할 필요는 없고, 예를 들어, 워크스테이션이 휴대폰 장치에서는 잘 실행되지 않을 수 있는 고성능 응용 프로그램들(예를 들어, 사진 편집 소프트웨어 및 그래픽을 많이 사용하는 게임)을 포함하고 있을 수 있으며, 휴대폰 장치는 비휴대용 워크스테이션과 관련이 없는 이식성 응용 프로그램들(예를 들어, GPS-기반 지도 소프트웨어)을 포함할 수 있다. 그렇지만, 많은 응용 프로그램들 및 그에 관련된 데이터 개체들이 이러한 장치들 간에 공유될 수 있고(예를 들어, 사용자 캘린더 개체를 관리하도록 구성되어 있는 캘린더 응용 프로그램), 컴퓨팅 환경이 이러한 장치들 간에 응용 프로그램 및 데이터 개체들을 분산 및 동기화하는 것을 가능하게 해주도록 구성되어 있을 수 있다. 응용 프로그램은 또한 각각의 이러한 장치에 적합하게 되어 있을 수 있고, 예를 들어, 응용 프로그램의 제1 버전 또는 구성이 워크스테이션 등의 고성능 장치들에 적합하게 되어 있을 수 있는 반면, 응용 프로그램의 제2 버전 또는 구성은 제한된 화면 크기 및 입력 기능을 갖는 저성능 장치들에 적합하게 되어 있을 수 있다. 그렇지만, 동일한 응용 프로그램의 응용 프로그램 구성(예를 들어, 비주얼 스타일 등의 사용자 기본 설정)의 다른 부분들이 장치들 간에 공유될 수 있고, 다양한 장치들 간에 컴퓨팅 환경에서의 사용자 경험의 일관성을 증진시킬 수 있다.
따라서, 유익하게도 컴퓨터 시스템이 일련의 장치들 간에 응용 프로그램 세트를 비롯한 컴퓨팅 환경을 배포하는 것을 가능하게 해주는 방식으로 표현될 수 있다는 것을 잘 알 수 있다. 한가지 이러한 기법에서, 컴퓨팅 환경 - 응용 프로그램 세트, 응용 프로그램 리소스들 및 그에 의해 사용되는 데이터 개체들 - 이 장치의 능력에 따라 렌더링하기 위해 장치들로 전달될 수 있는 방식으로 표현된다. 이 표현은 개체 계층구조에 따라 구성되고 공용 문법에 따라 표현되어 있는 일련의 개체들을 포함한다. 개체들은, 사용자에 의해 생성된 사용자 파일들 및 데이터 등의, 컴퓨터 시스템의 데이터 개체들을 포함한다. 개체들은 또한 쉘(shell) 등의 운영 체제 구성요소들 및 그 안에서 제공되는 응용 프로그램들을 포함한 실행가능 이진 파일 및 클래스 라이브러리들도 포함한다. 개체들은 또한 쉘 기본 설정(예를 들어, 비쥬얼 테마, 응용 프로그램 시작 메뉴 및 두번 클릭 임계값), 사용자 계정들 및 특권들, 보안 정보(예를 들어, 암호, 보안 토큰, 및 인증서), 응용 프로그램 이진 파일들 및 구성 정보, 사용자 데이터 및 메타데이터(예를 들어, 파일 공유 정보), 그리고 데이터 캐시들(예를 들어, 가장 최근에 사용된 파일 목록 및 브라우저 이력)을 비롯한 컴퓨팅 환경의 사용자 인터페이스를 지정하는 정보도 포함한다. 이러한 개체들의 다양한 성질 및 용도에도 불구하고, 개체들이 개체 계층구조에서 공통의 방식으로 표현되고, 계층구조에서 임의적으로 구성될 수 있다. 따라서, 각각이 한 유형의 개체를 포함하고 있는 일련의 격리된 데이터 저장소들(예를 들어, 파일들을 포함하는 파일 시스템, 구성 정보를 포함하는 레지스트리, 및 브라우저 이력을 포함하는 데이터 캐시)을 포함하는 종래의 컴퓨터 시스템들과 달리, 이 방식에서의 개체 계층구조는 개체 계층구조에서 공통의 방식으로 모든 이러한 개체들을 구성한다.
이러한 방식으로 표현된 컴퓨팅 환경이 임의의 장치로 전달될 수 있고 또 장치의 능력에 적합한 방식으로 렌더링될 수 있다. 예를 들어, 워크스테이션은 정보를 강력한 범용 컴퓨팅 환경으로서 렌더링할 수 있는 반면, 공중 워크스테이션은 (예를 들어, 사용자의 세션 끝에서 제거될 수 있는 가상 컴퓨터로서) 웹 브라우저를 통해 다른 컴퓨팅 환경 경험을 렌더링할 수 있고, 휴대폰은 휴대폰-관련 정보(예를 들어, 연락처, 캘린더 및 내비게이션 데이터)에 보다 빠르게 액세스하는 보다 단순한 인터페이스를 제공할 수 있다. 게다가, 정보 세트에 대한 업데이트(예를 들어, 기본 설정 변경 및 그 안에 포함된 데이터 파일들에 대한 업데이트)가 정보 세트의 정식 소스(canonical source)에 적용될 수 있고, 그로써 정보 세트가 전달되는 모든 다른 장치들로 전파될 수 있다. 또한, 하나의 장치가 정보 세트에서 식별된 다른 장치들과 상호작용할 수 있도록, 예를 들어, 제1 장치 상에 저장된 데이터가 제2 장치에 의해 액세스될 수 있고 제1 장치가 통신 통로를 통해 제2 장치에 의해 제어될 수 있도록, 컴퓨팅 환경을 공유하는 장치들이 공유된 정보 세트를 통해 통합될 수 있다. 따라서, 어쩌면 많은 수의 다양한 장치들에 걸쳐 통합된 컴퓨팅 경험을 제공하기 위해, 정보 세트는, 각각의 장치의 역할, 능력 및 리소스들과 더불어, 컴퓨팅 환경을 공유하는 장치들의 모음을 식별해줄 수 있다.
도 2는 개체 계층구조(44)를 저장하고 관리할 수 있는 컴퓨팅 환경 호스트(42)에 의해 컴퓨팅 환경이 호스팅될 수 있는 한가지 이러한 시나리오(40)를 나타낸 것이다. 컴퓨팅 환경 호스트(42)는 또한 휴대폰 장치(46), 퍼스널 노트북 컴퓨터(50) 및 공중 워크스테이션(54) 등의 다양한 장치들을 위해 또한 서로 다른 액세스 권한을 갖는 서로 다른 유형의 사용자들을 위해 서로 다른 방식으로 개체 계층구조(44)를 렌더링할 수 있다. 따라서, 컴퓨팅 환경의 렌더링은 동일한 응용 프로그램들, 사용자 프로필들, 쉘 구성, 사용자 데이터 개체들, 기타를 노출시키는 모든 장치들에 걸쳐 일관성있는 컴퓨팅 환경을 반영하고 있다. 따라서, 사용자는 고성능 노트북 컴퓨터를 통해 컴퓨팅 환경의 모든 기능을 제공하는 버전(full-featured version)(52)에 액세스할 수 있고, 저성능 휴대폰 장치(46)를 통해 컴퓨팅 환경의 축소 버전(stripped-down version)(48)에 액세스할 수 있으며, 공중 단말기(54)의 웹 브라우저(46)를 통해 컴퓨팅 환경의 브라우저-호환 및 개인 정보 보호에 적합한 버전(58)에 액세스할 수 있다. 각각의 이러한 장치의 능력이 컴퓨팅 환경의 렌더링을 지원하는 한, 각각의 장치의 능력에 따라 조절된 개체 계층구조(44)를 렌더링하는 것으로 인해 일관성있는 사용자 인터페이스 및 데이터 세트가 제시될 수 있다. 컴퓨팅 환경에 대한 업데이트들이 컴퓨팅 환경 호스트(42)로 다시 전파될 수 있고 다른 장치들과 자동으로 동기화될 수 있다. 다양한 장치들이 또한 로컬적으로 저장된 데이터를 다른 장치들과 공유하는 것에 의해 또한 다른 장치들을 제어하거나 다른 장치들에 의해 제어되는 것에 의해 협력을 할 수 있다. 따라서, 컴퓨팅 환경이 동일한 컴퓨팅 환경에 대해 (장치-고유 속성들을 갖는) 협력하는 포털들의 메쉬를 형성하는 모든 장치들("클라이언트들")에 걸쳐 일관성있는 렌더링으로서 나타내어지는 장치-독립적인 표현("클라우드")을 포함하는 클라우드 컴퓨팅 아키텍처로서 안출되어 제시될 수 있다. 구체적으로는, 컴퓨팅 환경의 응용 프로그램들과 관련하여, 개체 계층구조(44)는 응용 프로그램 세트, 응용 프로그램 리소스들 및 그에 의해 생성된 데이터 개체들의 표현을 포함할 수 있다. 게다가, 컴퓨팅 환경 호스트(42)는 개체 계층구조(44)를 구성하는 다양한 개체들에 서비스들을 적용할 수 있고, 개체들이 개체 계층구조에 저장되는 공용 포맷은, 서비스들에 적용되는 개체들의 성질에 상관없이, 서비스들의 일관성있는 이용가능성 및 적용을 용이하게 해줄 수 있다.
이러한 목적들을 증진시키기 위해, 개체 계층구조의 개체들을 특정의 방식으로 구성하기 위한 개체 계층구조 스키마가 안출될 수 있다. 예를 들어, 데이터 개체들(파일 등), 사용자들 및 사용자 계정들, 및 컴퓨팅 환경에서 일어나는 이벤트들은 물론 파생, 소유권 및 이들 간의 상호관련성을 표현하기 위해 개체들이 안출되어 구조화될 수 있다. 개체들을 구성하는 이 방식은 개체들의 다른 구성들에 대해 특정의 이점들을 가져올 수 있고 및/또는 단점들을 감소시킬 수 있다. 따라서, 개체 계층구조 스키마(이에 따라 개체들이 구성될 수 있음)는 이러한 개체들의 용도 및 컴퓨팅 환경을 고려하여 안출된다. 예를 들어, 각자의 개체들을 다양한 일련의 권한들을 갖는 하나 이상의 사용자 계정들과 연관시킴으로써 보안 권한(security permission)이 모델링될 수 있다(예를 들어, 제1 사용자 계정은 개체에 대한 읽기/쓰기 권한을 갖고, 제2 사용자 계정은 개체에 대한 읽기-전용 권한을 가지며, 제3 사용자 계정은 개체에 대한 어떤 권한도 갖지 않음). 컴퓨팅 환경은 개체 계층구조 스키마의 구조 및 의미에 따라 개체 계층구조의 개체들을 이용하도록 구성될 수 있으며, 그로써 각각의 장치의 구성 및 능력에 적절하지만 모든 이러한 장치들 간에 일관성있는 방식으로 복수의 장치들에 걸쳐 배포가능한 컴퓨팅 환경을 제시하는 것을 가능하게 해준다.
이러한 성질의 개체 계층구조 내에서, 각각의 응용 프로그램의 응용 프로그램 수명 주기와 일관성있는 방식으로 일련의 응용 프로그램들이 관리될 수 있다. 예를 들어, 컴퓨팅 환경 호스트(42)는 응용 프로그램을 획득하는 것, 응용 프로그램을 하나 이상의 장치들과 연관시키는 것, 및 응용 프로그램을 장치 상에 배포하는 것을 용이하게 해줄 수 있다. 개체 계층구조(44)에서 응용 프로그램을 일련의 개체들로서 표현하는 것은 통상의 응용 프로그램 관리 작업들을 용이하게 해줄 수 있다. 제1 일례로서, 응용 프로그램이 개체 계층구조(44)에 표현되어 있는 복수의 컴퓨터 시스템들 및 장치들에 용이하게 배포될 수 있고 또, 많은 시나리오들에서, 자동으로 배포될 수 있다. 예를 들어, 응용 프로그램의 제1 버전은 퍼스널 노트북 컴퓨터(50)로 배포될 수 있고, 응용 프로그램의 제2 버전은 공중 워크스테이션(54)에서 사용하기 위해 웹 또는 웹-지원 응용 프로그램으로서 배포될 수 있으며, 응용 프로그램의 제3 버전은 저성능 휴대폰 장치(46)에서 사용하기 위해 기능이 제한된 응용 프로그램으로서 배포될 수 있다. 제2 일례로서, 컴퓨팅 환경 호스트(42)는 응용 프로그램을 업데이트하는 것(예를 들어, 응용 프로그램 리소스들을 업데이트된 버전들로 패치하는 것 또는 응용 프로그램에서 사용하기 위한 새로운 컨텐츠를 배포하는 것)을, 그에 따라 개체 계층구조(44)를 조절하고 개체 계층구조(44)의 호스팅된 버전과 배포된 버전을 동기화시키는 것에 의해 이 조절들을 장치들에 배포함으로써, 용이하게 해줄 수 있다.
배포가능한 개체 계층구조(44)에서 응용 프로그램 세트를 일련의 개체들로서 표현하는 것이 또한 새로운 특징들을 가능하게 해줄 수 있다. 제1 일례로서, 컴퓨팅 환경은, 개체 계층구조(44)의 특정의 부분을 제2 사용자의 장치, 컴퓨터 시스템 또는 컴퓨팅 환경 호스트(42)로 배포함으로써, 사용자가 응용 프로그램을 제2 사용자 또는 응용 프로그램 세션의 한 측면과 공유할 수 있게 해줄 수 있다. 예를 들어, 제1 사용자는 미디어 플레이어 응용 프로그램을 통해 제1 컴퓨터 상에서 재생할 일련의 노래 개체들을 선택할 수 있고, (예를 들어, 미디어 플레이어 응용 프로그램의 오디오를 제2 사용자로 스트리밍함으로써) 미디어 플레이어 응용 프로그램 세션을 제2 사용자와 공유하기로 할 수 있다. 제2 일례로서, 응용 프로그램의 구성이 개체 계층구조의 일부인 장치들 및 컴퓨터 시스템들에 걸쳐 동기화될 수 있다. 장치-독립적인 응용 프로그램 속성들(예를 들어, 맞춤법-검사 사전에 추가된 사용자 지정 단어)은 모든 이러한 장치들 및 컴퓨터 시스템들로 자동으로 전파될 수 있는 반면, 장치-관련 응용 프로그램 속성들은 컴퓨팅 환경 호스트(42)에 의해 각자의 장치들에 대해 지정될 수 있다. 이러한 방식으로, 컴퓨팅 환경 호스트(42)에 대한 응용 프로그램 관리 서비스는 하나 이상의 사용자에 의해 작동되는 다양한 컴퓨터 시스템들 및 장치들 상에서 응용 프로그램들의 검색, 배포, 사용 및 제거를 지원할 수 있다. 이러한 작업들의 많은 부분들이 개체 계층구조(44)를 조정하는 것 및 개체 계층구조 내에 표현된 다양한 장치들로 개체 계층구조를 배포하는 것을 동기화하는 것에 의해 수행될 수 있고, 이는, 자동화된 프로세스로서, 컴퓨팅 환경 및 전체적인 사용자 경험의 일관성에 상당한 개선을 제공할 수 있다.
도 3은 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조로 응용 프로그램 저장소에 저장되어 있는 응용 프로그램을 배포하는 것을 관리하는 예시적인 방법(60)으로서 구현되는, 이러한 기법들의 일 실시 형태를 나타낸 것이다. 도 2를 참조하면, 이 예시적인 방법(60)은, (적어도 일부가) 장치들로 분배되는 배포가능한 개체 계층구조(44)에 응용 프로그램을 표현함으로써, 휴대폰 장치(40), 노트북 컴퓨터(50) 및 공중 워크스테이션(54) 등의 하나 이상의 장치들 상에서 응용 프로그램을 설치 및 관리하는 데 이용될 수 있다. 예시적인 방법(60)은 62에서 시작하고, 응용 프로그램을 장치로 배포하라는 요청을 수신하는 단계(64)를 포함한다. 이 요청은 응용 프로그램을 설치하고자 하는 컴퓨팅 환경의 사용자에 의해, 장치 상의 컴퓨팅 환경의 표현에서의 실행 중인 프로그램에 의해, 적어도 하나의 사전 설치된 응용 프로그램을 갖는 새로운 컴퓨팅 환경을 생성하도록 구성된 프로그램에 의해, 기타에 의해 발생될 수 있다. 예시적인 방법(60)은 또한 응용 프로그램 저장소로부터 응용 프로그램을 획득하는 단계(66)도 포함한다. 응용 프로그램이 웹 응용 프로그램인 경우, 획득하는 단계(66)는 단순히 (예를 들어,) 제공된 URL에서 응용 프로그램을 입수할 수 있는지를 확인하는 단계를 포함할 수 있다. 예시적인 방법(60)은 또한 개체 계층구조에 표현된 장치를 응용 프로그램에 매핑하는 단계(68)도 포함한다. 매핑하는 단계(68)는 개체 계층구조 내의 장치의 표현을 개체 계층구조 내의 응용 프로그램의 표현과 연관시키는 것, 장치와 관련하여 응용 프로그램에 대한 개체 계층구조 내의 일련의 구성 정보를 생성하는 것, 기타를 포함할 수 있다.
도 3의 예시적인 방법(60)은 또한 개체 계층구조 내의 응용 프로그램을 배포하는 단계(70)도 포함한다. 배포하는 단계(70)는 개체 계층구조 내의 응용 프로그램의 표현을 생성하는 것, 개체 계층구조의 응용 프로그램 표현에 하나 이상의 실행가능 이진 파일을 나타내는 것, 장치와 관련하여 응용 프로그램을 추가적으로 구성하는 것, 기타를 포함할 수 있다. 웹 응용 프로그램들의 경우, 배포하는 단계(70)는, 예를 들어, 장치와 연관된 응용 프로그램 시작 관리자 표현에 웹 사이트에 대한 링크를 삽입하는 것, 및/또는 세션들 사이에서 웹 응용 프로그램의 지속성을 용이하게 해주기 위해 장치 상에 하나 이상의 쿠키들을 생성하는 것을 포함할 수 있다. 예시적인 방법(60)은 또한 개체 계층구조의 적어도 일부분을 장치로 전송하는 단계(72)도 포함한다. 예를 들어, 노트북 컴퓨터(50)와 같은 고성능 컴퓨터 시스템은 개체 계층구조의 전체 버전을 수신할 수 있는 반면, 비교적 저성능의 휴대폰 장치(46)는, 휴대폰 장치(46)와 호환되는 새로운 응용 프로그램의 배포를 비롯한, 휴대폰 장치(46)와 관련성 있는 개체 계층구조의 일부분만을 수신할 수 있다. 응용 프로그램을 장치와 연관시키도록 개체 계층구조를 구성하였고 개체 계층구조를 장치로 배포하였으며, 따라서 예시적인 방법(60)은 장치와 관련하여 배포된 응용 프로그램의 관리를 완수하며, 따라서 74에서 종료한다.
도 4는 응용 프로그램 저장소(84)에 저장되어 있는 응용 프로그램들을 적어도 하나의 장치 상의 컴퓨팅 환경을 표현하는 개체 계층구조(82)로 배포하는 것을 관리하는 예시적인 시스템(86)으로서 구현되는, 이러한 기법들의 제2 실시 형태를 나타낸 것이다. 이 시나리오(80)는 3개의 배포가능한 응용 프로그램, 즉 계산기 응용 프로그램, 캘린더 응용 프로그램, 및 미디어 플레이어 응용 프로그램을 포함한다. 이러한 응용 프로그램들은 3개의 장치들, 즉 휴대폰 장치, 노트북 컴퓨터 장치 및 공중 워크스테이션 상에 표현된 컴퓨팅 환경 내에서 이용가능하게 되어 있을 수 있다. 이 시나리오(80) 내에서, 응용 프로그램들은 적어도 하나의 응용 프로그램을 나타내는 응용 프로그램 저장소(84)에 의해 호스팅된다. 이러한 응용 프로그램들은 개체 계층구조(82)를 재구성함으로써 컴퓨팅 환경 내에서 컴퓨팅 환경이 렌더링될 수 있는 장치들 상에 배포될 수 있다.
이 시나리오(80) 내에서, 응용 프로그램 관리 시스템(86)은 개체 계층구조 내의 하나 이상의 응용 프로그램들의 배포를 달성하도록 동작할 수 있다. 예시적인 시스템(86)은 응용 프로그램을 설치하라는 요청을 수신하고 응용 프로그램 저장소(84)로부터 응용 프로그램을 획득하도록 구성되어 있는 응용 프로그램 획득 구성요소(88)를 포함한다. 응용 프로그램 획득 구성요소(88)는 또한 그 요청이 임의의 선행조건들을 충족시키는지 여부(예를 들어, 응용 프로그램이 요청된 장치 상에서 실행될 수 있는지 여부, 사용자의 다양한 보안 권한 및 라이선싱 문제들을 고려하여 사용자가 응용 프로그램을 설치하여 실행시킬 권한이 있는지 여부, 기타)를 판정할 수 있다. 도 4의 예시적인 시스템(86)은 또한 개체 계층구조(82)에 표현되어 있는 적어도 하나의 장치를 적어도 하나의 설치된 응용 프로그램에 매핑하도록 구성되어 있는 응용 프로그램 매핑 구성요소(90)도 포함하고 있다. 예를 들어, 계산기 응용 프로그램이 개체 계층구조(82)에 이미 포함되어 있는 경우, 응용 프로그램 매핑 구성요소(90)는 계산기 응용 프로그램과 이 응용 프로그램이 제공되어야 하는 하나 이상의 장치들 간의 연관관계를 개체 계층구조(82) 내에 생성할 수 있다. 계산기 응용 프로그램이 개체 계층구조(82)에 아직 포함되어 있지 않은 경우, 예시적인 시스템(86)은 또한 매핑을 수행하기 전에, 예를 들어, 실행가능 이진 파일들 또는 웹 응용 프로그램 웹 사이트에 대한 링크들의 표현들을 개체 계층구조(82) 내로 복사함으로써, 개체 계층구조(82)에 계산기 응용 프로그램의 표현을 생성할 수 있다. 예시적인 시스템(86)은 또한 개체 계층구조(82) 내의 적어도 하나의 설치된 응용 프로그램을 배포하도록 구성되어 있는 응용 프로그램 배포 구성요소(92)도 포함하고 있다. 배포는, 예를 들어, 새로 매핑된 장치들에 대해 개체 계층구조 내에 장치-관련 구성 정보를 생성하는 것, 새로 매핑된 장치를 장치-독립적인 구성 정보와 연관시키는 것, 하나 이상의 장치들 상에 렌더링될 응용 프로그램을 응용 프로그램 시작 관리자에 삽입하는 것, 기타를 포함할 수 있다. 개체 계층구조(82) 내의 장치의 표현을 장치에 의해 렌더링되는 컴퓨팅 환경에 표현된 응용 프로그램 세트의 표현과 연관시켰으며, 그로써 예시적인 시스템(86)은 컴퓨팅 환경을 표현하는 개체 계층구조 내의 배포된 응용 프로그램들의 관리를 달성한다.
본 명세서에 기술된 기법들은 많은 측면들에서의 여러 변형들에 의해 구현될 수 있으며, 어떤 변형들은 이들 및 기타 기법들의 다른 변형들에 대해 부가의 이점들을 제공할 수 있고 및/또는 단점들을 감소시킬 수 있다. 이러한 변형들이 도 3의 예시적인 방법(60) 및 도 4의 예시적인 시스템(86) 등의 다양한 실시 형태들에 포함될 수 있고, 몇가지 이러한 부가적인 이점들을 제공하고 및/또는 단점들을 감소시키기 위해 다른 이러한 변형들과 호환될 수 있다. 따라서, 당업자라면 본 명세서에 설명된 기법들에 따라 많은 이러한 실시 형태들을 안출할 수 있다.
이러한 기법들의 구현들 간에 변할 수 있는 제1 측면은 응용 프로그램 관리 서버(이를 통해 응용 프로그램 관리 서비스가 제공됨)의 아키텍처에 관한 것이다. 도 4에 나타낸 바와 같이, 응용 프로그램 관리 시스템(86)은 다양한 응용 프로그램들을 갖는 응용 프로그램 저장소(84)와 상호작용할 수 있고, 그에 저장된 응용 프로그램을 요청하여 수신할 수 있으며, 그 응용 프로그램을 개체 계층구조(82)로 배포할 수 있다. 이 시나리오(80)에서, 응용 프로그램 관리 시스템(86)은 하나 이상의 응용 프로그램 저장소들과 컴퓨팅 환경 호스트(86) 간의 독립형 인터페이스로서 구현된다. 그렇지만, 다른 아키텍처들 및 시스템 팩토링들(system factorings)도 이러한 기법들을 구현하는데 적합할 수 있다.
도 5는 응용 프로그램 관리 서비스(86)가 또한 응용 프로그램 저장소(84)로서도 역할하고 따라서 개체 계층구조(82)로 배포될 수 있는, 계산기 응용 프로그램(102) 및 캘린더 응용 프로그램(104) 등의 다양한 응용 프로그램들을 포함하고 있는 제2 예시적인 아키텍처(100)를 나타낸 것이다. 이 실시 형태는 응용 프로그램 획득 서비스를 배포될 수 있는 응용 프로그램들과 더 밀접하게 통합시키는 이점을 제공할 수 있다.
도 6은 컴퓨팅 환경 호스트(42)가 응용 프로그램 관리 서비스(86)를 포함하는 제3 예시적인 아키텍처(110)를 나타낸 것이다. 따라서, 컴퓨팅 환경 호스트(42)는 개체 계층구조(82) 및 응용 프로그램 관리 서비스(86)의 서비스들[응용 프로그램 획득 구성요소(88), 응용 프로그램 매핑 구성요소(90) 및 응용 프로그램 배포 구성요소(92) 등] 둘다를 저장할 수 있다. 이러한 제3 예시적인 아키텍처(110)에서, 응용 프로그램(112)은, 장치 상에 표현된 컴퓨팅 환경 내에서 사용자에 의해 개시된 요청을 통하는 등에 의해, 장치로부터 직접 수신될 수 있다. 컴퓨팅 환경 호스트(42)는 응용 프로그램 관리 서비스(86)의 구성요소들을 통해 이 요청을 수신하여 처리할 수 있으며, 이는 컴퓨팅 환경 호스트(42)에 저장된 개체 계층구조(82)를 업데이트시킬 수 있다. 업데이트된 개체 계층구조(82)는 이어서 응용 프로그램을 장치로 배포하는 것을 완료하기 위해 장치와 동기화될 수 있다. 이들 및 기타 시스템 팩토링들이 본 명세서에 기술된 기법들을 구현하는 동안 당업자에 의해 안출될 수 있다.
이러한 기법들의 구현들 간에 서로 다를 수 있는 제2 측면은 획득, 매핑 및 배포를 비롯한 응용 프로그램 관리의 기본적인 구성요소들에서의 변동들에 관한 것이다. 이 측면의 제1 변형으로서, 응용 프로그램을 획득하는 것은 통상적으로 응용 프로그램을 배포하라는 요청을 수신하는 것 및 특정의 장치와 관련하여 개체 계층구조로 배포될 응용 프로그램을 획득하는 것을 포함한다. 그렇지만, 획득하는 것은 또한, 응용 프로그램에 대한 최종 사용자 사용권 계약의 사용 약관을 디스플레이하는 등, 장치를 통해 사용자에게 응용 프로그램 라이선스를 제시하는 것도 포함할 수 있다. 획득하는 것은 또한 배포의 선행조건으로서 응용 프로그램 라이선스를 수락하라고 사용자에게 요청하는 것도 포함할 수 있고, 응용 프로그램 라이선스의 수락을 수신할 시에, 획득하는 것은, 응용 프로그램 라이선스 서버에 통지하는 것 등에 의해, 응용 프로그램 라이선스의 수락을 기록하는 것을 포함할 수 있다. 이러한 수락은 사용자로부터의 확인 응답(acknowledgment)으로서 또는, 예를 들어, 사용자가 특정의 응용 프로그램 라이선스 하에서 임의의 응용 프로그램의 수락을 사전 허가한 경우에[예를 들어, GNU 공개 라이선스(Public License)의 특정의 버전 하에서 제공되는 임의의 응용 프로그램], 자동화된 수락으로서 수신될 수 있다. 획득하는 것은 또한, 응용 프로그램에 대한 라이선스의 전자상거래 구입 등, 적어도 하나의 장치의 사용자와의 획득 거래를 중계하는 것도 포함할 수 있다. 획득하는 것은 또한 응용 프로그램의 사용자를 나타내는 사용자 계정을 생성하는 것도 포함하며, 이는 전적으로 웹 메일 서버 상에서 호스팅되고 컴퓨팅 환경에서 브라우저를 통해 제공되는 웹 메일 응용 프로그램 등의 웹 응용 프로그램에의 액세스를 획득하는 데 특히 유익할 수 있다.
이 제2 측면의 제2 변형으로서, 응용 프로그램을 매핑하는 것은 통상적으로 응용 프로그램을 개체 계층구조에 표현된 하나 이상의 장치들과 연관시키는 것을 포함한다. 그렇지만, 매핑하는 것은 또한, 응용 프로그램이 장치와 호환되는 버전으로 이용가능한지 여부 및 응용 프로그램 또는 그의 변형(이전 버전 등)이 이미 장치 상에서 이용가능한지 여부 등, 장치-관련 상태들을 검사하는 것도 포함할 수 있다. 매핑하는 것은 또한, 응용 프로그램을 새로운 장치에 매핑하는 것을 증진시키기 위해, 장치와 호환될 수 있는 응용 프로그램 이진 파일의 새로운 버전 또는 장치로 배포될 수 있는 응용 프로그램이 의존하는 부가의 구성요소들(예를 들어, 다른 장치로부터 검색될 수 있는 지원 런타임)과 같은 부가의 리소스들을 획득하는 것도 포함할 수 있다. 매핑하는 것은 또한 응용 프로그램 정품 인증 서버를 통해 응용 프로그램을 정품 인증하는 것도 포함할 수 있으며, 이 정품 인증은, 시작 시에 장치 상의 응용 프로그램에 의해 유효성 확인되는 인증된 인증서를 제공하는 등에 의해, 응용 프로그램을 특정의 장치 상에서 실행하는 권한을 부여할 수 있다.
이 제2 측면의 제3 변형으로서, 응용 프로그램을 배포하는 것은 통상적으로, 개체 계층구조에 응용 프로그램의 구성요소들의 표현을 삽입하는 등에 의해, 개체 계층구조 내에 응용 프로그램을 배포하는 것을 포함한다. 심지어 통상적으로 구성된 응용 프로그램들이 다양한 방식으로 구조화될 수 있다. 소형 유틸리티는 전체적으로 또는 부분적으로 컴파일되어 있을 수 있거나 각각의 장치 상에서 로컬적으로 컴파일되는 소스 코드로서 포함되어 있을 수 있는 하나의 실행가능 이진 파일을 포함할 수 있다. 이러한 실행가능 이진 파일은, 예를 들어, 소스 코드 모듈, 파싱 트리, 부분적으로 컴파일된 이진 파일을 나타내는 중간 언어 명령어들, 전체적으로 컴파일된 이진 파일, 기타로서 표현될 수 있다. 대형 유틸리티는 하나 이상의 실행가능 이진 파일들, 전역 어셈블리 캐시에 등록되어 있을 수 있는 공유 어셈블리, 아이콘, 사운드 개체, 사진, 문서, 및 비디오 등의 응용 프로그램 리소스, 도움말 파일, 관계형 데이터베이스 등의 하나 이상의 구조화된 데이터 저장소에 저장된 데이터 리소스, 워드 프로세싱 응용 프로그램에서 맞춤법 검사 도구를 위한 언어 사전 파일 등의 보조 응용 프로그램 리소스, 그 안에 지정된 리소스들의 인덱스로서 역할하는 응용 프로그램 매니페스트, 기타 등등의 일련의 리소스들을 포함할 수 있다. 게다가, 응용 프로그램은 각각의 특정의 플랫폼을 대상으로 한 것일 수 있는 실행가능 이진 파일의 몇개의 버전을 포함할 수 있고, 예를 들어, 응용 프로그램은 노트북 컴퓨터(50) 등의 보다 강력한 장치에서 사용하기 위한 모든 기능을 가진 버전 및 저성능 휴대폰 장치(46)에서 사용하기 위한 제한된 기능의 버전을 포함할 수 있다. 응용 프로그램은 또한 각각의 특정 플랫폼을 대상으로 하는 몇개의 구성 정보 세트도 포함할 수 있다. 응용 프로그램은 독립적인 설치 관리자 패키지로서 또는 장치-기반 설치 관리자에 의해 배포될 수 있는 설치가능 아카이브로서, 또는 어느 장소에서라도 이용될 수 있는 일련의 하나 이상의 리소스들로서, 기타로서 제시될 수 있다.
개체 계층구조는 또한 보다 최근의 구조의 응용 프로그램들도 포함할 수 있다. 예를 들어, 게임 응용 프로그램은 복잡한 3차원 환경 및 그 안에 표현되는 개체들을 구성하는 비트맵 텍스처 및 메쉬 등의 많은 수의 그래픽 리소스들을 포함할 수 있다. 웹-지원 응용 프로그램은, 인라인 코드의 부분들을 포함할 수 있거나 소스 코드 또는 컴파일된 형태로 포함된 자바 개체들 등의 외부 코드 리소스들을 참조할 수 있는 일련의 웹 페이지들을 포함할 수 있다. 이러한 응용 프로그램은 또한 간단히 이러한 리소스들이 이용가능한 웹 사이트에 대한 참조로서 표현될 수 있다. 웹-지원 응용 프로그램은 또한 응용 프로그램으로서 또는 웹 브라우저에서 호스팅되는 애플릿으로서 컴파일되거나 장치 상에서 인터프리트 방식으로 실행될 수 있는 XAML(Extensible Application Markup Language) 등의 마크업 언어를 통해 구조화될 수 있다. 마지막으로, 웹 응용 프로그램은 간단히 응용 프로그램의 일부 또는 전부가 배포되어 있고 장치 상에서 웹 브라우저를 통해 액세스될 수 있는 하나 이상의 웹 사이트들을 표현하는 하나 이상의 URL로서 표현될 수 있고, 다른 대안으로서 또는 그에 부가하여, 세션들 간에 웹 응용 프로그램의 상태를 존속시키기 위해 로컬적으로 저장될 수 있는 쿠키 등의 어떤 리소스들은 장치 배포를 위해 포함되어 있을 수 있다.
응용 프로그램을 포함하는 리소스들이 다양할 수 있기 때문에, 개체 계층구조에서 응용 프로그램을 배포하는 것도 마찬가지로 강력할 수 있다. 예를 들어, 텍스트 리소스들이 일반 텍스트로서 포함될 수 있거나, 범용 또는 전용 압축 유틸리티에 의해 압축될 수 있다. 이진 리소스들이 직렬화된 이진 코드로서 제시될 수 있거나, 이진 압축 유틸리티로 압축될 수 있거나, (예를 들어, Uuencode 또는 MIME을 통해) 트랜스코딩될 수 있거나, 기타 등등일 수 있다. 계층적으로 구성된 개체들이 XML 등의 계층적 포맷팅에 따라 구조화될 수 있거나, 하나의 계층적 개체로서 직렬화될 수 있다. 큰 개체들은 원자 단위(atomic unit)로서 포함되거나, 압축되거나, 트랜스코딩되거나(예를 들어, 영화 파일은 공간을 절감하기 위해 더 낮은 비트레이트로 재인코딩될 수 있음), 시간의 경과에 따라 또는 특별한 목적을 위해 장치로 개별적으로 전송될 수 있는 부분들로 분할되거나, 기타 등등일 수 있다. 리소스들이 개체 계층구조에 포함될 수 있거나 필요 시에 액세스될 수 있는 리소스를 호스팅하는 서버에 대한 참조로서 삽입될 수 있다. 다수의 개체들의 큰 세트가 아카이브로서 포함될 수 있다(예를 들어, 수천개의 개체들을 포함하는 압축 파일). 웹-기반 응용 프로그램들이 응용 프로그램의 구성요소들이 이용가능한 하나 이상의 URL로서 표현될 수 있고, 다른 대안으로서 또는 그에 부가하여, 응용 프로그램의 캐싱된 버전을 제공하기 위해 또는 응용 프로그램에의 오프라인 액세스를 가능하게 해주기 위해, 웹 응용 프로그램의 스냅샷이 포착되어 개체 계층구조에 포함될 수 있다. 당업자라면 본 명세서에 설명된 기법들을 구현하는 동안 응용 프로그램을 개체 계층구조에 표현하는 많은 기법들을 안출할 수 있다.
응용 프로그램을 개체 계층구조에 표현하는 것에 부가하여, 배포하는 것은 또한 장치와 관련하여 및/또는 사용자와 관련하여 응용 프로그램을 구성하는 것도 포함할 수 있다. 예를 들어, 장치에 대해 새로운 구성 정보 세트가 작성될 수 있거나, 구성 세트들의 라이브러리 내의 적절한 일련의 구성 정보가 장치에서 사용하기 위해 지정될 수 있다. 도 7은 개체 계층구조(82)가 2개의 실행가능 이진 파일(하나는 로컬 네이티브 실행을 위한 컴파일된 실행파일이고 하나는 표준의 웹 브라우저를 통한 보다 느리지만 표준화된 액세스를 위한 클라이언트측 브라우저 스크립트임) 및 2개의 구성 세트(고성능 장치들을 위한 전체 기능 구성 세트 및 저성능 모바일 장치들을 위한 이식가능 구성 세트)를 포함하는 캘린더 응용 프로그램의 표현을 포함하고 있는 한가지 이러한 시나리오(120)를 나타낸 것이다. 개체 계층구조(82)는 또한 사용자에 의해 선택된 기본 색 구성표 등의 임의의 장치에서 사용하기 위한 장치-독립적인 설정을 포함하는 구성 세트도 포함한다. 개체 계층구조(82)는 또한 컴퓨팅 환경이 렌더링될 수 있는 2개의 장치의 표현, 즉 저성능 휴대폰 장치(46) 및 고성능 노트북 컴퓨터(50)도 포함하고 있다.
이러한 장치들에 대해 개체 계층구조(82) 내에 응용 프로그램을 배포할 시에, 응용 프로그램 배포 구성요소(92)는 각각의 장치 상에서의 특정의 사용을 위해 응용 프로그램을 구성할 수 있다. 예를 들어, 캘린더 응용 프로그램은, 이를 휴대폰 장치(46)의 웹 브라우저 응용 프로그램 내에서 실행될 수 있는 클라이언트측 브라우저 스크립트 실행가능 이진 파일과 연관시키고 또 저성능 장치들을 위한 이식가능 구성 세트와 연관킴으로써, 휴대폰 장치(46)를 위해 배포될 수 있다. 이와 유사하게, 캘린더 응용 프로그램은, 이를 컴파일된 실행가능 이진 파일과 연관시키고 또 노트북 컴퓨터(50)가 렌더링할 수 있는 계산이 많은 특징들을 제공할 수 있는 전체 기능 구성 세트와 연관시킴으로써, 노트북 컴퓨터(50)를 위해 배포될 수 있다. 그렇지만, 이들 장치 둘다는 일련의 일관성있는 장치-독립적인 특징들을 제시하기 위해 장치-독립적인 구성 세트를 포함할 수 있으며, 그로써 컴퓨팅 메쉬의 모든 이러한 장치들 간에 일관성있는 컴퓨팅 환경을 증진시킬 수 있다. 당업자라면 본 명세서에 설명된 기법들을 구현하는 동안 개체 계층구조(82) 내의 응용 프로그램들을 획득, 매핑 및 배포하는 데 있어서 부가의 변형들을 안출할 수 있다.
이러한 기법들의 구현들 간에 서로 다를 수 있는 제3 측면은 이러한 실시 형태들의 기본적인 구성요소들에 추가될 수 있는 부가적인 특징들에 관한 것이다. 기본적인 관리 서비스들(획득, 매핑 및 배포)에 부가하여, 사용자 및 컴퓨터 시스템이 응용 프로그램 수명 주기를 관리하는 것을 용이하게 해줄 수 있는, 응용 프로그램 관리를 위한 부가의 서비스들이 제공될 수 있다.
이 제3 측면의 제1 변형으로서, 응용 프로그램 관리 서비스는 또한, 도 6의 제3 예시적인 아키텍처(110)에 나타낸 것과 같은, 컴퓨팅 환경 호스트로서 역할할 수 있다. 이 제1 변형에서, 응용 프로그램 관리 서비스는 또한 개체 계층구조를 저장하도록 구성되어 있는 개체 계층구조 저장소, 및 (예를 들어, 업데이트된 개체 계층구조를 각각의 장치 상에 저장된 개체 계층구조와 동기화시킴으로써) 개체 계층구조의 적어도 일부분을 장치들로 전송하도록 구성되어 있는 개체 계층구조 전송 구성요소도 포함하고 있다. 배포된 응용 프로그램을 포함하는 개체 계층구조의 일부분을 장치로 전송하는 것은 응용 프로그램을 장치에 설치 및 배포하는 것을 달성할 수 있다.
이 제3 측면의 제2 변형으로서, 응용 프로그램 관리 서비스는 또한 사용자의 관심을 끌 수 있는 응용 프로그램들의 검색을 용이하게 해줄 수 있다. 예를 들어, 응용 프로그램들을 개체 계층구조로 배포하는 것을 관리하는 방법[도 3의 예시적인 방법(60) 등]은 쿼리 측면을 포함할 수 있으며, 이 경우 이 방법은, 사용자로부터 응용 프로그램 쿼리를 수신할 시에, 응용 프로그램 쿼리를 충족시키는 응용 프로그램들을 선택하여 선택된 응용 프로그램들을 사용자에게 제시하도록 구성되어 있다. 이와 유사하게, 응용 프로그램들을 개체 계층구조로 배포하는 것을 관리하는 시스템[예를 들어, 도 4의 예시적인 시스템(86) 등]은 사용자로부터 응용 프로그램 쿼리를 수신하고 응용 프로그램 쿼리를 충족시키는 응용 프로그램들을 선택하여 선택된 응용 프로그램들을 사용자에게 제시하도록 구성되어 있을 수 있는 응용 프로그램 검색 구성요소를 포함할 수 있다. 사용자는 이어서 응용 프로그램 관리 시스템이 개체 계층구조로 배포할 수 있는 선택된 응용 프로그램들 중 하나 이상을 획득하기로 할 수 있다.
도 8은 사용자(132)가 사용자의 휴대폰 장치(46)와 호환될 수 있는 오디오 플레이어 응용 프로그램을 식별하고자 하는 한가지 이러한 시나리오(130)를 나타낸 것이다. 따라서, 사용자(132)는, 휴대폰 장치들과 호환될 수 있는 미디어 플레이어 응용 프로그램들에 대한 쿼리 등, 응용 프로그램 쿼리(136)를 응용 프로그램 관리 서비스(86)의 응용 프로그램 검색 구성요소(134)에 발행할 수 있다. 응용 프로그램 검색 구성요소(134)는 휴대폰 장치들에 대한 오디오 플레이어 응용 프로그램 및 휴대폰 장치들에 대한 비디오 플레이어 응용 프로그램 등의 응용 프로그램 쿼리(136)를 충족시키는 응용 프로그램들을 식별하기 위해 응용 프로그램 저장소(84)와 통신을 할 수 있다. 따라서, 응용 프로그램 검색 구성요소(134)는 응용 프로그램들을 사용자(132)에게 제시하는 응답(138)을 제공할 수 있다. 사용자(132)는 휴대폰 장치(46)로 배포될 검색된 응용 프로그램들 중 하나 이상의 선택(140)으로 응용 프로그램 관리 서비스(86)에 회신할 수 있다. 응용 프로그램 관리 서비스(86)는 이어서 선택된 응용 프로그램[이 시나리오(130)에서, 휴대폰 장치들에 대한 오디오 플레이어 응용 프로그램]을 획득할 수 있고, 응용 프로그램을 개체 계층구조(142)로 배포할 수 있고, 이 배포 계층구조는 이어서 선택된 응용 프로그램의 배포를 완료하기 위해 휴대폰 장치(46)로 전송될 수 있다. 당업자라면 본 명세서에 설명된 기법들을 구현하는 동안 응용 프로그램들의 검색을 용이하게 해주는 다른 방식들을 안출할 수 있다.
이 제3 측면의 제3 변형으로서, 응용 프로그램 관리 서비스는 또한 응용 프로그램을 시작하는 것을 용이하게 해줄 수 있다. 예를 들어, 응용 프로그램 관리 서비스를 구현하는 예시적인 시스템은 적어도 하나의 장치 상에서 응용 프로그램을 시작하도록 구성되어 있을 수 있는 응용 프로그램 시작 구성요소를 포함할 수 있다. 응용 프로그램 시작 구성요소는, 예를 들어, 장치에 대한 플랫폼을 제공하도록 또 장치 상에서 응용 프로그램을 실행하는 것을 용이하게 해주도록 구성되어 있는 런타임을 포함할 수 있다. 예를 들어, 응용 프로그램이 클라이언트측 브라우저 스크립트로서 서비스에 배포될 수 있고, 응용 프로그램 관리 서비스는 브라우저 스크립트가 인터프리트 방식으로 실행될 수 있는 브라우저 런타임을 개체 계층구조에 포함시킬 수 있다. 다른 일례로서, 응용 프로그램이 소스 코드로서 표현될 수 있고, 응용 프로그램 시작 구성요소가, 장치 상에서 응용 프로그램을 시작할 시에, 소스 코드를 장치 상에서 실행될 수 있는 실행가능 이진 파일로 컴파일하는 장치-고유 컴파일러를 포함할 수 있다. 게다가, 응용 프로그램 시작 구성요소는 또한 컴파일된 실행가능 이진 파일을 어셈블리 캐시 등에 저장할 수 있고, 응용 프로그램을 재컴파일하는 대신에 저장된 실행가능 이진 파일을 페치(fetch)하는 것으로 응용 프로그램을 시작하라는 차후의 요청들에 응답할 수 있다. 제3 일례로서, 웹-지원 응용 프로그램은 원격 리소스에 액세스하도록 구성되어 있는 클라이언트측 프런트 엔드(front end)를 포함할 수 있고, 응용 프로그램 시작 구성요소는 원격 리소스에 연결하려고 또 응용 프로그램을 시작할 때 장치가 원격 리소스를 이용할 수 있는지를 확인하려고 시도할 수 있다. 당업자라면 본 명세서에 설명된 기법들을 구현하는 동안 장치 상에서 응용 프로그램을 시작하는 것을 용이하게 해주는 많은 방식들을 안출할 수 있다.
이 제3 측면의 제4 변형으로서, 응용 프로그램 관리 서비스는 또한 응용 프로그램의 측면들을 다른 사용자들과 공유하는 것을 용이하게 해줄 수 있다. 이러한 응용 프로그램 공유가 많은 시나리오들에서 일어날 수 있다. 제1 일례로서, 공유는 전체 응용 프로그램(그와 연관된 모든 리소스들 및 데이터 개체들을 포함함)을 공유하는 것을 포함할 수 있다. 제2 일례로서, 공유는 응용 프로그램의 어떤 버전을 다른 사용자와 공유하는 것을 포함할 수 있고, 예를 들어, 제1 사용자가 응용 프로그램을 사용할 라이선스를 구입했을 수 있고 제2 사용자가 응용 프로그램을 라이선싱하도록 권유하기 위해 응용 프로그램의 어떤 특징들을 보여줄 수 있는 응용 프로그램의 기능이 제한된 버전을 제2 사용자와 공유할 수 있다. 제3 일례로서, 공유는 응용 프로그램에서 생성된 미디어 개체들 등의 응용 프로그램과 연관된 하나 이상의 데이터 개체들을 공유하는 것을 포함할 수 있다. 제2 사용자는 이어서 제2 사용자의 컴퓨팅 환경 내에서 미디어 개체들을 렌더링하기 위해 동일한 응용 프로그램 또는 다른 응용 프로그램을 사용할 수 있다. 제4 일례로서, 공유는 응용 프로그램의 구성을 다른 사용자와 공유하는 것을 포함할 수 있고, 예를 들어, 소프트웨어 개발팀의 몇명의 구성원들이 소프트웨어의 개발에서 팀으로서 일하면서 통합 개발 환경의 특정의 구성을 이용할 수 있다. 제5 일례로서, 공유는 응용 프로그램의 세션을 다른 사용자와 공유하는 것을 포함할 수 있고, 예를 들어, 2명의 사용자가 텍스트 문서를 준비하는 데 협업할 수 있고, 사용자들 간의 실시간 상호작용(live interaction)을 증진시키기 위해 제1 사용자가 워드 프로세싱 응용 프로그램의 세션을 제2 사용자와 공유할 수 있다. 이러한 공유 시나리오들은 또한 (하나의 개체 계층구조로 표현되는) 컴퓨팅 환경의 몇명의 사용자들 간에 또는 (다수의 개체 계층구조들로 표현되는) 2개 이상의 컴퓨팅 환경들의 사용자들 간에 발생할 수 있거나, 공유된 컴퓨팅 환경의 데이터 개체들을 FTP(File Transfer Protocol) 등의 공용 통신 프로토콜을 통해 제공함으로써, 컴퓨팅 환경을 표현하는 개체 계층구조의 일부분을 미지의 방식으로 표현되는 컴퓨팅 환경들의 사용자들과 공유할 때 발생할 수 있다. 이들 및 기타 공유 시나리오들이 본 명세서에 기술된 기법들을 구현하는 동안 당업자에 의해 안출될 수 있다.
도 9는 제1 개체 계층구조(152)의 제1 사용자가 미디어 플레이어 응용 프로그램 및 다양한 음악가들에 의해 제작된 다양한 노래들의 형태로 된 몇몇 미디어 개체들을 획득하였고 이러한 미디어 개체들이 높은 충실도(high-fidelity) 방식으로(즉, 320kbps 인코딩 레이트로) 인코딩되어 있는 응용 프로그램 공유 시나리오(150)를 나타낸 것이다. 제1 사용자는 또한 제1 개체 계층구조(152)의 미디어 섹션에 표현되는 개체들 중 몇개를 참조하는 팟캐스트(podcast) 등의 미디어 플레이어 세션을 생성하였다. 제1 사용자는 이 팟캐스트를 제2 개체 계층구조(154)의 제2 사용자와 공유하고자 할 수 있다. 따라서, 응용 프로그램 공유는 제1 개체 계층구조(152)로부터의 미디어 플레이어 세션을 제2 개체 계층구조(154)로 복사하는 것을 포함할 수 있다. 미디어 플레이어 세션이 제1 개체 계층구조(152)에 저장되어 있는 몇몇 미디어 개체들을 참조하기 때문에, 응용 프로그램 공유는 또한 미디어 개체들을 제2 개체 계층구조(154)로 복사함으로써 제1 개체 계층구조 내의 참조되는 미디어 개체들을 공유하는 것도 포함할 수 있다. 그렇지만, 미디어 개체들과 연관된 디지털 권한은 다른 개체 계층구조들로 미디어 개체들을 낮은 충실도로만 전송하는 것을 허용해줄 수 있으며, 따라서 컴퓨팅 환경은 보다 낮은 품질(예를 들어, 24 kbps 인코딩 레이트)로 트랜스코딩된 미디어 개체들의 버전들을 제2 개체 계층구조로 전송할 수 있다. 그에 부가하여, 제2 개체 계층구조(154)는 미디어 개체들에 의해 표현되는 오디오 유형들에 대한 미디어 플레이어 응용 프로그램을 포함하지 않을 수 있다. 따라서, 제1 개체 계층구조(152)는 미디어 플레이어 응용 프로그램의 한 버전을 제2 개체 계층구조(154)와 공유할 수 있지만, 제1 사용자가 획득한 미디어 플레이어 응용 프로그램의 최종 사용자 사용권 계약과 부합하게 기능이 제한된 버전이 제2 사용자로 전송될 수 있다. 이러한 방식으로, 응용 프로그램, 그에 의해 렌더링되는 미디어 개체들 및 제1 사용자에 의해 생성되는 응용 프로그램 세션이, 응용 프로그램 세션에 관한 구성요소들의 디지털 권한에 부합하면서, 제1 개체 계층구조(152)의 일부분을 제2 개체 계층구조(154)로 전송함으로써 자동화된 방식으로 제2 사용자와 공유될 수 있다.
이 제3 측면의 제5 변형으로서, 응용 프로그램 관리 서비스는 또한 새로운 컨텐츠로 응용 프로그램들을 업데이트하는 것을 용이하게 해줄 수 있다. 응용 프로그램들은 종종 이진 파일들을 패치하는 것, 새로운 리소스들을 삽입하는 것, 기존의 리소스들을 변경 또는 제거하는 것에 의해 새로운 컨텐츠를 갖는 새로운 버전들로 업데이트된다. 이러한 업데이트는 응용 프로그램 관리 서비스가 응용 프로그램 업데이트들을 획득하고 개체 계층구조에 표현된 업데이트들을 응용 프로그램들에 배포하는 것(예를 들어, 개체 계층구조에 포함된 응용 프로그램 리소스들을 업데이트하는 것 및/또는 새로운 리소스들을 새로운 개체들로서 개체 계층구조에 삽입하는 것)에 의해 수행될 수 있다. 업데이트는 응용 프로그램에 의해 노출될 새로운 컨텐츠를 획득했을 수 있는 사용자의 요청 시에 적용될 수 있거나, 응용 프로그램 저장소에 대한 쿼리를 통해 응용 프로그램 관리 서비스에 의해 검색될 수 있거나, 응용 프로그램 저장소 또는 관리 서버에 의해 응용 프로그램 관리 서비스 b로 푸시될 수 있거나, 기타 등등일 수 있다. 업데이트된 개체 계층구조는 이어서 하나 이상의 장치들로 전송될 수 있고, 그로써 사용자의 개입에 덜 의존하면서 컴퓨팅 환경의 응용 프로그램들의 업데이트를 달성할 수 있다. 당업자라면 본 명세서에 설명된 기법들을 구현하는 동안 개체 계층구조에 표현된 응용 프로그램들을 업데이트하는 많은 방식들을 안출할 수 있다.
이 제3 측면의 제6 변형으로서, 응용 프로그램 관리 서비스는 또한 컴퓨팅 환경으로부터 응용 프로그램들을 해지(revocation)하는 것을 허용할 수 있다. 이 해지는 장치에 대한 응용 프로그램의 매핑을 제거하는 것, 응용 프로그램 정품 인증 서버의 승인 장치들 목록에서 장치를 승인 취소하는 것, 장치로부터 응용 프로그램 리소스들을 제거하는 것(예를 들어, 응용 프로그램 리소스들을 포함하는 개체 계층구조의 일부분을 장치에 알려주지 않는 것에 의함), 및 개체 계층구조로부터 또 모든 매핑된 장치들로부터 응용 프로그램 리소스들 전부를 제거함으로써 응용 프로그램을 완전히 서비스 해제하는 것 등의 많은 시나리오들을 포함할 수 있다. 해지는 하나 이상의 장치들로부터 응용 프로그램을 제거하고자 하는 사용자의 요청 시에, 또는 제한된 기간의 소프트웨어 라이선스의 만료 시에, 또는 컴퓨팅 메쉬로부터 장치를 제거할 시에, 기타 등등에 있을 수 있다. 이 변형의 예시적인 실시 형태로서, 응용 프로그램 관리 시스템은 이러한 방식들 중 임의의 방식으로 적어도 하나의 장치로부터 응용 프로그램을 해지하도록 구성되어 있는 응용 프로그램 해지 구성요소를 포함할 수 있다. 당업자라면 본 명세서에 설명된 기법들을 구현하는 동안 개체 계층구조들에 표현된 컴퓨팅 환경들 내로부터 응용 프로그램들을 해지하는 많은 방식들을 안출할 수 있다.
이러한 측면들의 이러한 변형들이 도 3의 예시적인 방법(60) 및 도 4의 예시적인 시스템(86)을 비롯하여 본 명세서에 기술된 기법들의 많은 실시 형태들에 포함될 수 있다. 게다가, 도 3 및 도 4에 도시된 보다 기본적인 실시 형태들과 관련하여 몇가지 이점들을 제공하고 및/또는 단점들을 감소시키기 위해, 몇가지 이러한 변형들이 결합되어 또한 이러한 기법들의 이들 및 다른 측면들의 다른 변형들과 함께 구현될 수 있다. 몇몇 조합들은 또한 상승작용의 이점들을 제공할 수 있고, 예를 들어, 응용 프로그램 검색 구성요소는 응용 프로그램의 구매의 검색, 구입, 라이선스 수락 및 사용자 계정 생성을 통합된 사용자 경험으로서 제공하기 위해 응용 프로그램 획득 구성요소에 연결되어 협력할 수 있다.
도 10은 적어도 하나의 장치[휴대폰 장치(46), 노트북 컴퓨터(50) 및 공중 워크스테이션(54) 등] 상의 컴퓨팅 환경을 표현하는 개체 계층구조(44)에 응용 프로그램들을 배포하는 것을 관리하는 예시적인 시스템(160)을 나타낸 것이다. 도 10의 예시적인 시스템(160)은 본 명세서에 기술된 변형들 중 다수를 구현한다. 예시적인 시스템(160)은 개체 계층구조(44)를 저장하도록 구성되어 있는 개체 계층구조 저장소(82) 및 적어도 하나의 응용 프로그램을 나타내는 응용 프로그램 저장소(84)를 포함하며, 각각의 응용 프로그램들은 적어도 하나의 응용 프로그램 리소스를 포함하고 있다. 예시적인 시스템(160)은 또한 사용자로부터 응용 프로그램 쿼리를 수신하고 응용 프로그램 쿼리를 충족시키는 응용 프로그램들을 선택하며 선택된 응용 프로그램들을 사용자에게 제시하도록 구성되어 있는 응용 프로그램 검색 구성요소(134)도 포함한다. 예시적인 시스템(160)은 또한 응용 프로그램을 설치하라는 요청을 수신하고 장치를 통해 사용자에게 응용 프로그램 라이선스를 제시하며 사용자로부터 응용 프로그램 라이선스의 수락을 수신할 시에 응용 프로그램 라이선스의 수락을 기록하도록 구성되어 있는 응용 프로그램 획득 구성요소(88)도 포함한다. 응용 프로그램 획득 구성요소(88)는 또한 응용 프로그램의 사용자를 나타내는 사용자 계정을 생성하고 적어도 하나의 장치의 사용자와의 획득 거래를 중계하도록 구성되어 있다. 응용 프로그램 검색 구성요소(134) 및 응용 프로그램 획득 구성요소(88) 모두는 통상적인 응용 프로그램 수명 주기에서 응용 프로그램의 구매를 용이하게 해준다.
도 10의 예시적인 시스템(160)은 또한 개체 계층구조(44)에 표현되어 있는 적어도 하나의 장치를 적어도 하나의 설치된 응용 프로그램에 매핑하도록 구성되어 있는 응용 프로그램 매핑 구성요소(90)도 포함하고 있다. 예시적인 시스템(160)은 또한, 장치 및 장치의 사용자 중 적어도 하나와 관련하여 응용 프로그램을 구성함으로써 개체 계층구조(44) 내의 적어도 하나의 설치된 응용 프로그램을 배포하도록 구성되어 있는 응용 프로그램 배포 구성요소(92)도 포함하고 있다. 응용 프로그램 매핑 구성요소(90) 및 응용 프로그램 배포 구성요소(92) 모두는 통상적인 응용 프로그램 수명 주기에서 응용 프로그램을 개체 계층구조 내에 설치하는 것을 용이하게 해준다.
도 10의 예시적인 시스템(160)은 또한 적어도 하나의 장치 상에서 응용 프로그램을 시작하도록 구성되어 있는 응용 프로그램 시작 구성요소(162)도 포함하고 있다. 예시적인 시스템(160)은 또한 응용 프로그램을 사용자와 공유하라는 요청을 수신하고, 응용 프로그램을 공유하라는 요청을 수신할 시에, 응용 프로그램, 응용 프로그램 세션, 응용 프로그램 구성, 및 응용 프로그램에 의해 생성되는 적어도 하나의 데이터 개체 중 적어도 하나를 포함하는 개체 계층구조의 일부분을 사용자와 공유하도록 구성되어 있는 응용 프로그램 공유 구성요소(164)도 포함하고 있다. 예시적인 시스템(160)은 또한 개체 계층구조(44) 내의 적어도 하나의 응용 프로그램 리소스를 업데이트하도록 구성되어 있는 응용 프로그램 업데이트 구성요소(166)도 포함하고 있다. 응용 프로그램 시작 구성요소(162), 응용 프로그램 공유 구성요소(164) 및 응용 프로그램 업데이트 구성요소(166) 모두는 통상적인 응용 프로그램 수명 주기에서 하나 이상의 장치들 상에서 응용 프로그램을 실행하는 것을 용이하게 해준다.
도 10의 예시적인 시스템(160)은 또한 (예를 들어, 개체 계층구조 내의 하나 이상의 장치들의 표현으로부터 응용 프로그램을 매핑 해제하는 것, 하나 이상의 장치들로부터 응용 프로그램 리소스들을 제거하는 것, 및/또는 응용 프로그램을 개체 계층구조로부터 완전히 제거함으로서 응용 프로그램을 완전히 서비스 해제하는 것에 의해) 응용 프로그램을 해지하도록 구성되어 있는 응용 프로그램 해지 구성요소(168)도 포함하고 있다. 응용 프로그램 해지 구성요소(168)는 그로써 통상적인 응용 프로그램 수명 주기에서 응용 프로그램의 제거를 용이하게 해준다.
마지막으로, 예시적인 시스템(160)은 또한 개체 계층구조(44)의 적어도 일부분을 적어도 하나의 장치로 전송하도록 구성되어 있는 개체 계층구조 전송 구성요소(170)도 포함하고 있다. 개체 계층구조(44)가 응용 프로그램 관리 시스템(160)의 구성요소들 중 다수에 의해 수정될 수 있고, 컴퓨팅 환경의 응용 프로그램 세트의 업데이트를 수행하기 위해 개체 계층구조(44)의 수정들이 개체 계층구조 내에 표현된 하나 이상의 장치들과 동기화될 수 있다. 본 명세서에 기술된 기법들의 이러한 많은 변형들을 결합시킴으로써, 예시적인 시스템(160)은 그로써 통상적인 응용 프로그램 수명 주기를 통해 컴퓨팅 메쉬를 포함하는 많은 장치들 간에 큰 응용 프로그램 세트를 관리하는 포괄적인 응용 프로그램 관리 서비스들을 제공한다.
발명 대상이 구조적 특징들 및/또는 방법적 동작들과 관련하여 기술되어 있지만, 첨부된 청구항들에 정의된 발명 대상이 이상에서 기술한 특정의 특징들 또는 동작들로 반드시 제한되는 것은 아니라는 것을 잘 알 것이다. 오히려, 이상에서 기술한 특정의 특징들 및 동작들은 청구항들을 구현하는 예시적인 형태로서 개시되어 있다.
본 출원에서 사용되는 바와 같이, 용어 "컴포넌트", "모듈", "시스템", "인터페이스", 기타는 일반적으로 컴퓨터-관련 개체(computer-related entity), 예를 들어, 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어를 말하기 위한 것이다. 예를 들어, 구성요소는 프로세서 상에서 실행 중인 프로세스, 프로세서, 개체, 실행 파일, 실행 쓰레드, 프로그램 및/또는 컴퓨터일 수 있지만, 이들로 제한되지 않는다. 예시로서, 제어기 상에서 실행 중인 애플리케이션 및 그 제어기 둘다가 구성요소일 수 있다. 하나 이상의 구성요소들이 프로세스 및/또는 실행 쓰레드 내에 존재할 수 있고, 구성요소가 하나의 컴퓨터 상에 로컬화되어 있을 수 있고 및/또는 2개 이상의 컴퓨터들 간에 분산되어 있을 수 있다.
게다가, 청구된 발명 대상이 소프트웨어, 펌웨어, 하드웨어, 또는 이들의 임의의 조합을 생성하는 표준의 프로그래밍 및/또는 엔지니어링 기법들을 사용하여 컴퓨터를 제어해 개시된 발명 대상을 구현하는 방법, 장치, 또는 제조 물품으로서 구현될 수 있다. "제조 물품(article of manufacture)"이라는 용어는, 본 명세서에서 사용되는 바와 같이, 임의의 컴퓨터-판독가능 장치, 캐리어(carrier), 또는 매체로부터 액세스될 수 있는 컴퓨터 프로그램을 포괄하기 위한 것이다. 물론, 당업자라면 청구된 발명 대상의 범위 또는 사상을 벗어나지 않고 이 구성에 많은 수정들이 이루어질 수 있다는 것을 잘 알 것이다.
도 11 및 이하의 설명은 본 명세서에 기술된 발명 대상들 중 하나 이상의 실시 형태들을 구현하는 데 적합한 컴퓨팅 환경의 간략하고 개괄적인 설명을 제공한다. 도 11의 운영 환경은 적당한 운영 환경의 일례에 불과하며 이 운영 환경의 용도 또는 기능의 범위에 관한 어떤 제한을 암시하기 위한 것이 아니다. 예시적인 컴퓨팅 장치들로는, 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 모바일 장치[이동 전화, PDA(Personal Digital Assistant), 미디어 플레이어, 기타 등등], 멀티프로세서 시스템, 가전 제품, 미니 컴퓨터, 메인프레임 컴퓨터, 이상의 시스템들 또는 장치들 중 임의의 것을 포함하는 분산 컴퓨팅 환경, 기타 등등이 있지만, 이들로 제한되지 않는다.
꼭 그럴 필요는 없지만, 실시 형태들이 일반적으로 하나 이상의 컴퓨팅 장치들에 의해 실행되는 "컴퓨터 판독가능 명령어들"과 관련하여 기술되어 있다. 컴퓨터 판독가능 명령어들이 컴퓨터 판독가능 매체(이하에서 기술함)를 통해 배포될 수 있다. 컴퓨터-판독가능 명령어들은 특정의 태스크들을 수행하거나 특정의 추상 데이터 유형들을 구현하는 함수, 개체, API(Application Programming Interface), 데이터 구조, 기타 등등의 프로그램 모듈로서 구현될 수 있다. 통상적으로, 컴퓨터 판독가능 명령어들의 기능이 다양한 실시 형태들에서 원하는 바에 따라 결합되거나 분산되어 있을 수 있다.
도 11은 본 명세서에 제공된 하나 이상의 실시 형태들을 구현하도록 구성되어 있는 컴퓨팅 장치(182)를 포함하는 시스템(180)의 일례를 나타낸 것이다. 한 구성에서, 컴퓨팅 장치(182)는 적어도 하나의 처리 장치(186) 및 메모리(188)를 포함한다. 컴퓨팅 장치의 정확한 구성 및 유형에 따라, 메모리(188)는 휘발성(예를 들어, RAM 등), 비휘발성(예를 들어, ROM, 플래쉬 메모리, 기타 등등), 또는 이 둘의 어떤 조합일 수 있다. 이러한 구성이 도 11에서 점선(184)으로 나타내어져 있다.
다른 실시 형태들에서, 장치(182)는 또한 부가의 특징들 및/또는 기능들을 포함할 수 있다. 예를 들어, 장치(182)는 또한 자기 저장장치, 광 저장장치, 기타(이들로 제한되지 않음)를 비롯한 부가의 저장 장치(예를 들어, 이동식 및/또는 비이동식)도 포함할 수 있다. 이러한 부가의 저장장치가 도 11에서 저장장치(190)로 도시되어 있다. 일 실시 형태에서, 본 명세서에 제공된 하나 이상의 실시 형태들을 구현하는 컴퓨터 판독가능 명령어들이 저장 장치(190)에 있을 수 있다. 저장 장치(190)는 또한 운영 체제, 응용 프로그램, 기타를 구현하는 다른 컴퓨터 판독가능 명령어들도 저장할 수 있다. 컴퓨터 판독가능 명령어들은, 예를 들어, 처리 장치(186)에서 실행하기 위해 메모리(188)에 로드될 수 있다.
"컴퓨터 판독가능 매체"라는 용어는 본 명세서에서 사용되는 바와 같이 컴퓨터 저장 매체를 포함한다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령어 또는 기타 데이터 등의 정보를 저장하는 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 메모리(188) 및 저장장치(190)가 컴퓨터 저장 매체의 일례이다. 컴퓨터 저장 매체로는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CD-ROM, DVD(Digital Versatile Disk) 또는 기타 광 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 원하는 정보를 저장하는 데 사용될 수 있고 또 장치(182)에 의해 액세스될 수 있는 임의의 다른 매체가 있지만, 이들로 제한되지 않는다. 임의의 이러한 컴퓨터 저장 매체가 장치(182)의 일부일 수 있다.
장치(182)는 또한 장치(182)가 다른 장치들과 통신을 할 수 있게 해주는 통신 연결(들)(196)도 포함할 수 있다. 통신 연결(들)(196)은 모뎀, NIC(Network Interface Card), 통합형 네트워크 인터페이스, 무선 주파수 송신기/수신기, 적외선 포트, USB 연결, 또는 컴퓨팅 장치(182)를 다른 컴퓨팅 장치들에 연결시키는 기타 인터페이스들을 포함할 수 있지만, 이들로 제한되지 않는다. 통신 연결(들)(196)은 유선 연결 또는 무선 연결을 포함할 수 있다. 통신 연결(들)(196)은 통신 미디어를 전송 및/또는 수신할 수 있다.
"컴퓨터 판독가능 매체"라는 용어는 통신 매체를 포함할 수 있다. 통신 매체는 일반적으로 컴퓨터 판독가능 명령어 또는 기타 데이터를 반송파 또는 기타 전송 메카니즘 등의 피변조 데이터 신호(modulated data signal)에 구현하고 모든 정보 전달 매체를 포함한다. "피변조 데이터 신호"라는 용어는 신호의 특성들 중 하나 이상이 정보를 그 신호에 인코딩하는 방식으로 설정 또는 변경된 신호를 포함할 수 있다.
장치(182)는 키보드, 마우스, 펜, 음성 입력 장치, 터치 입력 장치, 적외선 카메라, 비디오 입력 장치, 및/또는 임의의 다른 입력 장치 등의 입력 장치(들)(194)를 포함할 수 있다. 하나 이상의 디스플레이, 스피커, 프린터, 및/또는 임의의 다른 출력 장치 등의 출력 장치(들)(192)도 역시 장치(182)에 포함되어 있을 수 있다. 입력 장치(들)(194) 및 출력 장치(들)(192)는 유선 연결, 무선 연결, 또는 이들의 임의의 조합을 통해 장치(182)에 연결될 수 있다. 일 실시 형태에서, 다른 컴퓨팅 장치로부터의 입력 장치 또는 출력 장치가 컴퓨팅 장치(182)의 입력 장치(들)(194) 또는 출력 장치(들)(192)로서 사용될 수 있다.
컴퓨팅 장치(182)의 구성요소들은 버스 등의 다양한 상호연결부들에 의해 연결될 수 있다. 이러한 상호연결부들은 PCI Express 등의 PCI(Peripheral Component Interconnect), USB(Universal Serial Bus), 파이어와이어(IEEE 1394), 광 버스 구조, 기타를 포함할 수 있다. 다른 실시 형태에서, 컴퓨팅 장치(182)의 구성요소들은 네트워크에 의해 상호연결될 수 있다. 예를 들어, 메모리(188)는 네트워크에 의해 상호연결된 서로 다른 물리적 장소들에 위치하는 다수의 물리적 메모리 장치들로 이루어져 있을 수 있다.
당업자라면 컴퓨터 판독가능 명령어들을 저장하는 데 이용되는 저장 장치들이 네트워크에 걸쳐 분산되어 있을 수 있다는 것을 잘 알 것이다. 예를 들어, 네트워크(198)를 통해 액세스할 수 있는 컴퓨팅 장치(200)는 본 명세서에 제공된 하나 이상의 실시 형태들을 구현하는 컴퓨터 판독가능 명령어들을 저장할 수 있다. 컴퓨팅 장치(182)는 컴퓨팅 장치(100)에 액세스하여 실행을 위한 컴퓨터 판독가능 명령어들의 일부 또는 전부를 다운로드할 수 있다. 다른 대안으로서, 컴퓨팅 장치(182)는 필요에 따라 컴퓨터 판독가능 명령어들의 일부를 다운로드할 수 있거나, 일부 명령어들이 컴퓨팅 장치(182)에서 실행될 수 있고 일부 명령어들이 컴퓨팅 장치(200)에서 실행될 수 있다.
실시 형태들의 다양한 동작들이 본 명세서에 제공되어 있다. 일 실시 형태에서, 기술된 동작들 중 하나 이상이 하나 이상의 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 판독가능 명령어들을 구성할 수 있으며, 이 명령어들은, 컴퓨팅 장치에 의해 실행되는 경우, 컴퓨팅 장치로 하여금 개시된 동작들을 수행하게 한다. 동작들 중 일부 또는 전부가 기술되어 있는 순서가 이러한 동작들이 반드시 순서 의존적이어야 한다는 것을 의미하는 것으로 해석되어서는 안된다. 당업자라면 이 설명을 기초로 대안의 순서를 잘 알 것이다. 게다가, 동작들 모두가 반드시 본 명세서에 제공된 각각의 실시 형태에 존재해야 하는 것은 아니라는 것을 잘 알 것이다.
게다가, "예시적인"이라는 단어는 본 명세서에서 일례, 실례 또는 예시로서 역할한다는 것을 의미하기 위해 사용된다. 본 명세서에서 "예시적인" 것으로 기술된 임의의 측면 또는 설계가 꼭 다른 측면들 또는 설계들보다 이점이 있는 것으로 해석되어야 하는 것은 아니다. 오히려, "예시적인"이라는 단어의 사용은 개념들을 구체적인 방식으로 제시하기 위한 것이다. 본 출원에서 사용되는 바와 같이, "또는"이라는 용어는 배타적인 "논리합"(exclusive "or")이라기 보다는 포함적인 "논리합"(inclusive "or")를 의미하기 위한 것이다. 즉, 달리 언급하지 않는 한 또는 문맥으로부터 명확하지 않는 한, "X가 A 또는 B를 이용한다"는 포함적인 자연 순열들(natural inclusive permutations) 중 어느 하나를 의미하기 위한 것이다. 즉, X가 A를 이용하는 경우, X가 B를 이용하는 경우, 또는 X가 A 및 B 둘다를 이용하는 경우, 이상의 경우들 중 어느 하나의 경우 하에서 "X가 A 또는 B를 이용한다"는 만족된다. 그에 부가하여, 본 출원 및 첨부된 특허청구범위에서 사용되는 단수 표현 "한" 및 "하나"는, 달리 언급하지 않는 한 또는 단수 형태에 관한 것이라고 문맥으로부터 명확하지 않는 한, 일반적으로 "하나 이상"을 의미하는 것으로 해석될 수 있다.
또한, 본 발명이 하나 이상의 구현들과 관련하여 도시되고 기술되어 있지만, 본 명세서 및 첨부 도면들을 읽고 이해하면 등가의 변경들 및 수정들이 당업자들에게 안출될 것이다. 본 발명은 모든 이러한 수정들 및 변경들을 포함하며, 이하의 특허청구범위의 범위에 의해서만 제한된다. 상세하게는, 이상에서 기술한 구성요소들(예를 들어, 요소들, 리소스들, 기타)에 의해 수행되는 다양한 기능들과 관련하여, 이러한 구성요소들을 기술하는 데 사용되는 용어들이, 달리 언급하지 않는 한, 본 명세서에 설명된 본 발명의 예시적인 구현들에서 기능을 수행하는 개시된 구조와 구조상으로 등가이지는 않지만, (예를 들어, 기능적으로 등가인) 기술된 구성요소의 지정된 기능을 수행하는 임의의 구성요소에 대응하는 것으로 보아야 한다. 그에 부가하여, 본 발명의 특정의 특징이 몇가지 구현들 중 단지 하나와 관련하여 개시되어 있을 수 있지만, 임의의 주어진 또는 특정의 응용에서 요망되고 유익할 수 있는 바와 같이, 이러한 특징이 다른 구현들의 하나 이상의 다른 특징과 결합될 수 있다. 게다가, 용어 "포함한다", "갖는", "갖는다", "구비하는" 또는 이들의 변형이 상세한 설명이나 특허청구범위에서 사용되는 한, 이러한 용어들이 용어 "포함하는"과 유사한 방식으로 포함적인 것으로 보아야 한다.
Claims (15)
- 응용 프로그램 저장소(84)에 의해 관리되는 적어도 하나의 응용 프로그램(112)을 적어도 하나의 장치(50) 상의 컴퓨팅 환경을 표현하는 개체 계층구조(44)로 배포하는 것을 관리하는 시스템(86)으로서,
응용 프로그램(112)을 설치하라는 요청을 수신하고, 상기 응용 프로그램 저장소(84)로부터 상기 응용 프로그램(112)을 획득하도록 구성되어 있는 응용 프로그램 획득 구성요소(88),
상기 개체 계층구조(44)에 표현된 적어도 하나의 장치(50)를 상기 적어도 하나의 설치된 응용 프로그램(112)에 매핑하도록 구성되어 있는 응용 프로그램 매핑 구성요소(90), 및
상기 개체 계층구조(44) 내의 상기 적어도 하나의 설치된 응용 프로그램(112)을 배포하도록 구성되어 있는 응용 프로그램 배포 구성요소(92)를 포함하는 시스템. - 제1항에 있어서, 상기 시스템은 적어도 하나의 응용 프로그램을 나타내는 응용 프로그램 저장소를 포함하고, 각각의 응용 프로그램들은 적어도 하나의 응용 프로그램 리소스를 포함하는 시스템.
- 제1항에 있어서, 상기 개체 계층구조를 저장하도록 구성되어 있는 개체 계층구조 저장소, 및
상기 개체 계층구조의 적어도 일부분을 상기 적어도 하나의 장치로 전송하도록 구성되어 있는 개체 계층구조 전송 구성요소를 포함하는 시스템. - 제1항에 있어서, 응용 프로그램 쿼리를 사용자로부터 수신하고, 상기 응용 프로그램 쿼리를 충족시키는 응용 프로그램들을 선택하며, 선택된 응용 프로그램들을 상기 사용자에게 제시하도록 구성되어 있는 응용 프로그램 검색 구성요소를 포함하는 시스템.
- 제1항에 있어서, 상기 응용 프로그램 획득 구성요소는,
상기 장치를 통해 사용자에게 응용 프로그램 라이선스를 제시하고,
상기 사용자로부터 상기 응용 프로그램 라이선스의 수락을 수신할 시에, 상기 응용 프로그램 라이선스의 상기 수락을 기록하도록 구성되어 있는 시스템. - 제1항에 있어서, 상기 응용 프로그램 획득 구성요소는 상기 적어도 하나의 장치의 사용자와의 획득 거래를 중계하도록 구성되어 있는 시스템.
- 제1항에 있어서, 상기 응용 프로그램 획득 구성요소는 상기 응용 프로그램의 사용자를 나타내는 사용자 계정을 생성하도록 구성되어 있는 시스템.
- 제1항에 있어서, 상기 배포는 상기 장치 및 상기 장치의 사용자 중 적어도 하나와 관련하여 상기 응용 프로그램을 구성하는 것을 포함하는 시스템.
- 제1항에 있어서, 상기 적어도 하나의 장치 상에서 상기 응용 프로그램을 시작(launch)하도록 구성되어 있는 응용 프로그램 시작 구성요소를 포함하는 시스템.
- 제1항에 있어서, 상기 응용 프로그램을 사용자와 공유하라는 요청을 수신하고, 상기 응용 프로그램을 공유하라는 상기 요청을 수신할 시에, 상기 응용 프로그램을 상기 사용자와 공유하도록 구성되어 있는 응용 프로그램 공유 구성요소를 포함하는 시스템.
- 제10항에 있어서, 상기 응용 프로그램 공유 구성요소는 상기 응용 프로그램, 응용 프로그램 세션, 응용 프로그램 구성, 및 상기 응용 프로그램에 의해 생성되는 적어도 하나의 데이터 개체 중 적어도 하나를 포함하는 상기 개체 계층구조의 일부분을 사용자와 공유하도록 구성되어 있는 시스템.
- 제1항에 있어서, 상기 응용 프로그램을 업데이트하도록 구성되어 있는 응용 프로그램 업데이트 구성요소를 포함하는 시스템.
- 제12항에 있어서, 상기 응용 프로그램 업데이트 구성요소는 상기 개체 계층구조 내의 적어도 하나의 응용 프로그램 리소스를 업데이트하도록 구성되어 있고,
응용 프로그램 해지 구성요소는 상기 응용 프로그램을 해지(revoke)하도록 구성되어 있는 시스템. - 제1항에 있어서, 상기 응용 프로그램을 해지하라고 요청하도록 구성되어 있는 수신 구성요소를 포함하는 시스템.
- 제14항에 있어서, 상기 수신 구성요소는 상기 개체 계층구조 내의 상기 응용 프로그램을 해지하도록 구성되어 있는 시스템.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/052,550 US9753712B2 (en) | 2008-03-20 | 2008-03-20 | Application management within deployable object hierarchy |
US12/052,550 | 2008-03-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20100133382A true KR20100133382A (ko) | 2010-12-21 |
Family
ID=41090146
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020107020791A KR20100133382A (ko) | 2008-03-20 | 2009-02-20 | 배포가능 개체 계층구조 내에서의 응용 프로그램 관리 |
Country Status (8)
Country | Link |
---|---|
US (5) | US9753712B2 (ko) |
EP (1) | EP2255295B1 (ko) |
JP (1) | JP5409767B2 (ko) |
KR (1) | KR20100133382A (ko) |
CN (1) | CN101978366B (ko) |
BR (1) | BRPI0907773A2 (ko) |
TW (1) | TWI473019B (ko) |
WO (1) | WO2009117207A1 (ko) |
Families Citing this family (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8296728B1 (en) | 2008-08-26 | 2012-10-23 | Adobe Systems Incorporated | Mobile device interaction using a shared user interface |
US8832681B1 (en) * | 2008-08-29 | 2014-09-09 | Adobe Systems Incorporated | Bundled mobile/desktop application package |
JP5080406B2 (ja) * | 2008-09-05 | 2012-11-21 | 株式会社エヌ・ティ・ティ・ドコモ | 配信装置、端末装置及びシステム並びに方法 |
JP5112229B2 (ja) * | 2008-09-05 | 2013-01-09 | 株式会社エヌ・ティ・ティ・ドコモ | 配信装置、端末装置及びシステム並びに方法 |
US8271974B2 (en) | 2008-10-08 | 2012-09-18 | Kaavo Inc. | Cloud computing lifecycle management for N-tier applications |
US8069247B2 (en) * | 2008-12-03 | 2011-11-29 | Verizon Data Services Llc | Application launcher systems, methods, and apparatuses |
US8199507B2 (en) | 2008-12-19 | 2012-06-12 | Openpeak Inc. | Telephony and digital media services device |
US8707288B2 (en) * | 2009-02-13 | 2014-04-22 | Mobitv, Inc. | System for automatic management of applications on remote devices |
US20120047228A1 (en) * | 2009-05-07 | 2012-02-23 | Shady Hassan Sayed Hassan Aly | Method for delivering tag based services |
US20110072371A1 (en) * | 2009-09-18 | 2011-03-24 | Microsoft Corporation | Application programming interface for user interface creation |
KR20110040604A (ko) * | 2009-10-14 | 2011-04-20 | 삼성전자주식회사 | 클라우드 서버, 클라이언트 단말, 디바이스, 클라우드 서버의 동작 방법 및 클라이언트 단말의 동작 방법 |
US8942888B2 (en) | 2009-10-15 | 2015-01-27 | Airbiquity Inc. | Extensible scheme for operating vehicle head unit as extended interface for mobile device |
US9002574B2 (en) | 2009-10-15 | 2015-04-07 | Airbiquity Inc. | Mobile integration platform (MIP) integrated handset application proxy (HAP) |
US8831823B2 (en) | 2009-10-15 | 2014-09-09 | Airbiquity Inc. | Centralized management of motor vehicle software applications and services |
US8838332B2 (en) | 2009-10-15 | 2014-09-16 | Airbiquity Inc. | Centralized management of motor vehicle software applications and services |
US9160812B2 (en) * | 2009-10-22 | 2015-10-13 | Cellco Partnership | Systems and methods for delivering an application over a mobile communications network |
US9037711B2 (en) | 2009-12-02 | 2015-05-19 | Metasecure Corporation | Policy directed security-centric model driven architecture to secure client and cloud hosted web service enabled processes |
CN102200918B (zh) * | 2010-03-23 | 2015-12-16 | 中兴通讯股份有限公司 | 服务器部署应用程序的方法及装置 |
US10013252B2 (en) * | 2010-04-16 | 2018-07-03 | Oracle International Corporation | Software development compliance system |
US8707296B2 (en) | 2010-04-27 | 2014-04-22 | Apple Inc. | Dynamic retrieval of installation packages when installing software |
US8359463B2 (en) * | 2010-05-26 | 2013-01-22 | Hewlett-Packard Development Company, L.P. | Selecting a configuration for an application |
US8521777B2 (en) * | 2010-06-16 | 2013-08-27 | Ricoh Company, Ltd | Methods and apparatus for presentation of software as a service applications |
US20120144319A1 (en) | 2010-12-03 | 2012-06-07 | Razer (Asia-Pacific) Pte Ltd | Collaboration Management System |
US9116728B2 (en) * | 2010-12-21 | 2015-08-25 | Microsoft Technology Licensing, Llc | Providing a persona-based application experience |
US9354852B2 (en) * | 2010-12-23 | 2016-05-31 | Microsoft Technology Licensing, Llc | Satisfying application dependencies |
US20120174212A1 (en) * | 2010-12-29 | 2012-07-05 | Microsoft Corporation | Connected account provider for multiple personal computers |
US8826260B2 (en) * | 2011-01-11 | 2014-09-02 | Intuit Inc. | Customization of mobile-application delivery |
WO2012107929A2 (en) * | 2011-02-09 | 2012-08-16 | Conduit Ltd | Application synchronization among multiple computing devices |
US8261295B1 (en) * | 2011-03-16 | 2012-09-04 | Google Inc. | High-level language for specifying configurations of cloud-based deployments |
EP2710486B1 (en) * | 2011-05-20 | 2021-06-30 | Citrix Systems, Inc. | Shell integration on a mobile device for an application executing remotely on a server |
US8924958B1 (en) * | 2011-05-24 | 2014-12-30 | BlueStack Systems, Inc. | Application player |
US10089093B1 (en) | 2011-05-24 | 2018-10-02 | BlueStack Systems, Inc. | Apparatuses, systems and methods of switching operating systems |
US9843665B2 (en) | 2011-05-27 | 2017-12-12 | Microsoft Technology Licensing, Llc | Display of immersive and desktop shells |
US8924885B2 (en) * | 2011-05-27 | 2014-12-30 | Microsoft Corporation | Desktop as immersive application |
US10417018B2 (en) | 2011-05-27 | 2019-09-17 | Microsoft Technology Licensing, Llc | Navigation of immersive and desktop shells |
US8887214B1 (en) | 2011-07-07 | 2014-11-11 | Cisco Technology, Inc. | System and method for unified metadata brokering and policy-based content resolution in a video architecture |
US9123078B2 (en) * | 2011-08-19 | 2015-09-01 | Nokia Technologies Oy | Method and apparatus for socially aware applications and application stores |
US9286050B2 (en) * | 2011-09-02 | 2016-03-15 | Verizon Patent And Licensing Inc. | Method and system for context-based application management |
US9173090B2 (en) * | 2011-09-15 | 2015-10-27 | Teletech Holdings, Inc. | Method for activating services associated with a product via a service center supporting a variety of products |
US9785628B2 (en) * | 2011-09-29 | 2017-10-10 | Microsoft Technology Licensing, Llc | System, method and computer-readable storage device for providing cloud-based shared vocabulary/typing history for efficient social communication |
US12072989B2 (en) * | 2011-12-09 | 2024-08-27 | Sertainty Corporation | System and methods for using cipher objects to protect data |
US10282221B2 (en) * | 2011-12-09 | 2019-05-07 | International Business Machines Corporation | Controlling usage of virtual disks before their attachment to virtual machines |
US20130191495A1 (en) * | 2012-01-23 | 2013-07-25 | Cristian Almstrand | Framework and system to distribute applications for heterogeneous platforms |
US9503520B2 (en) * | 2012-02-06 | 2016-11-22 | Conduit Ltd. | Application synchronization among multiple computing devices |
US9235565B2 (en) * | 2012-02-14 | 2016-01-12 | Facebook, Inc. | Blending customized user dictionaries |
US9098357B2 (en) * | 2012-04-11 | 2015-08-04 | Nokia Technologies Oy | Method and apparatus for activity management across multiple devices |
TW201404636A (zh) | 2012-06-08 | 2014-02-01 | Airbiquity Inc | 遠程識別機動車輛及監測駕駛員行爲之電子感測器資料的評估 |
CA2783223C (en) * | 2012-07-19 | 2014-07-15 | Microsoft Corporation | Global recently used files list |
CN104919833B (zh) | 2012-12-20 | 2019-11-08 | 爱尔比奎特公司 | 高效头单元通信集成 |
US20140189670A1 (en) * | 2012-12-31 | 2014-07-03 | Openpeak Inc. | System and method for tailoring applications and application repositories for individual electrical devices |
KR101822463B1 (ko) * | 2013-01-21 | 2018-01-26 | 삼성전자주식회사 | 복수 개의 아이콘들을 화면상에 배치하는 장치 및 이의 운용 방법 |
JPWO2014122733A1 (ja) * | 2013-02-06 | 2017-01-26 | 株式会社日立製作所 | 計算機、データアクセス管理方法及び記録媒体 |
CN103164286A (zh) * | 2013-03-12 | 2013-06-19 | 无锡云动科技发展有限公司 | 云计算平台部署的实现方法、资源管理器、云计算系统 |
TWI497953B (zh) * | 2013-04-24 | 2015-08-21 | Sunix Co Ltd | 遠端周邊的控制系統、方法及其遠端服務器 |
WO2015006170A1 (en) * | 2013-07-12 | 2015-01-15 | FREILICH, Arthur | A computer system storing content into application independent objects |
CN104301338A (zh) * | 2013-07-16 | 2015-01-21 | 苏州精易会信息技术有限公司 | 基于云平台的应用系统自动部署方法 |
US9503541B2 (en) * | 2013-08-21 | 2016-11-22 | International Business Machines Corporation | Fast mobile web applications using cloud caching |
US9323906B2 (en) * | 2013-09-04 | 2016-04-26 | D2L Corporation | Method and system for digital rights management enforcement |
US9098369B1 (en) * | 2013-11-13 | 2015-08-04 | Google Inc. | Application installation using in-video programming |
CN103970579B (zh) * | 2014-05-29 | 2017-05-03 | 中国银行股份有限公司 | 应用版本部署方法及装置 |
US9880918B2 (en) * | 2014-06-16 | 2018-01-30 | Amazon Technologies, Inc. | Mobile and remote runtime integration |
US10185590B2 (en) | 2014-06-16 | 2019-01-22 | Amazon Technologies, Inc. | Mobile and remote runtime integration |
US8997081B1 (en) * | 2014-09-18 | 2015-03-31 | Ensighten, Inc. | Analytics for mobile applications |
US10756985B2 (en) | 2015-01-27 | 2020-08-25 | Nutanix, Inc. | Architecture for implementing user interfaces for centralized management of a computing environment |
US9798864B2 (en) * | 2015-03-06 | 2017-10-24 | International Business Machines Corporation | Embedded integrated component governance policy |
CN105677421B (zh) * | 2016-01-06 | 2020-01-03 | 惠州Tcl移动通信有限公司 | 一种移动终端的桌面启动器的定制方法及系统 |
US10791109B2 (en) * | 2016-02-10 | 2020-09-29 | Red Hat, Inc. | Certificate based expiration of file system objects |
US10599459B2 (en) | 2016-02-12 | 2020-03-24 | Nutanix, Inc. | Entity database distributed replication |
US10304215B2 (en) | 2016-06-10 | 2019-05-28 | Apple Inc. | Providing variants of texture assets for an asset catalog |
US10621314B2 (en) * | 2016-08-01 | 2020-04-14 | Palantir Technologies Inc. | Secure deployment of a software package |
US10607002B2 (en) * | 2016-08-30 | 2020-03-31 | Microsoft Technology Licensing, Llc | Isolating an application running inside a native container application |
US10489424B2 (en) * | 2016-09-26 | 2019-11-26 | Amazon Technologies, Inc. | Different hierarchies of resource data objects for managing system resources |
US11675774B2 (en) | 2016-09-23 | 2023-06-13 | Amazon Technologies, Inc. | Remote policy validation for managing distributed system resources |
CN106713047A (zh) * | 2017-01-12 | 2017-05-24 | 泰凌微电子(上海)有限公司 | 一种网状网络中的节点升级方法与系统 |
US10810009B2 (en) * | 2017-07-14 | 2020-10-20 | Microsoft Technology Licensing, Llc | Visualizations of software project and contributor activity |
US11263399B2 (en) * | 2017-07-31 | 2022-03-01 | Apple Inc. | Correcting input based on user context |
GB201717251D0 (en) * | 2017-10-20 | 2017-12-06 | Palantir Technologies Inc | Serving assets in a networked environment |
US10678975B2 (en) * | 2017-11-07 | 2020-06-09 | Amazon Tecnnologies, Inc. | Code module selection for device design |
US10700991B2 (en) | 2017-11-27 | 2020-06-30 | Nutanix, Inc. | Multi-cluster resource management |
US10936333B2 (en) | 2018-02-28 | 2021-03-02 | Forcepoint Llc | System and method for managing system configuration data models |
WO2019221732A1 (en) * | 2018-05-17 | 2019-11-21 | Hewlett-Packard Development Company, L.P. | Application management service including package file |
WO2020002030A1 (de) * | 2018-06-26 | 2020-01-02 | Siemens Aktiengesellschaft | Verfahren und system zur bestimmung eines geeigneten installationsortes für eine zu installierende applikation in einer verteilten netzwerkumgebung |
US10901717B2 (en) | 2018-07-16 | 2021-01-26 | International Business Machines Corporation | Controlling computer executions based on terms and conditions and user device attributes |
US20200159560A1 (en) * | 2018-11-16 | 2020-05-21 | Avi Networks | Propagating ordered object changes |
US11556320B2 (en) | 2020-08-06 | 2023-01-17 | Bank Of America Corporation | Electronic system for dynamic analysis and detection of transformed transient data in a distributed system network |
US11749284B2 (en) * | 2020-11-13 | 2023-09-05 | Google Llc | Dynamically adapting on-device models, of grouped assistant devices, for cooperative processing of assistant requests |
US20220244903A1 (en) * | 2021-02-04 | 2022-08-04 | Apple Inc. | Application casting |
Family Cites Families (173)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6044205A (en) * | 1996-02-29 | 2000-03-28 | Intermind Corporation | Communications system for transferring information between memories according to processes transferred with the information |
US5504852A (en) * | 1991-09-09 | 1996-04-02 | Apple Computer, Inc. | Method for creating a collection of aliases representing computer system files |
US5437025A (en) * | 1993-01-26 | 1995-07-25 | International Business Machines Corporation | System and method for run time configuration of objects in an object oriented computing environment |
US5548726A (en) * | 1993-12-17 | 1996-08-20 | Taligeni, Inc. | System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node |
JPH11504451A (ja) * | 1995-04-24 | 1999-04-20 | アスペクト・ディベロップメント・インコーポレイテッド | データベース構造に適したオブジェクトのモデリング、リレーショナルデータベース構造への翻訳、それらへの流動的なサーチ |
US5850090A (en) | 1995-05-24 | 1998-12-15 | Mitsubishi Denki Kabushiki Kaisha | Dynamic semiconductor memory device on SOI substrate |
US5764543A (en) * | 1995-06-16 | 1998-06-09 | I2 Technologies, Inc. | Extensible model network representation system for process planning |
JP3598183B2 (ja) * | 1996-10-16 | 2004-12-08 | 株式会社東芝 | 多次元データ管理方法、多次元データ管理装置、多次元データ管理プログラムを記録した媒体 |
US6678724B2 (en) * | 1997-03-12 | 2004-01-13 | Microsoft Corporation | Common namespace for internet and local filesystem objects |
US6573907B1 (en) * | 1997-07-03 | 2003-06-03 | Obvious Technology | Network distribution and management of interactive video and multi-media containers |
US6105062A (en) * | 1998-02-26 | 2000-08-15 | Novell, Inc. | Method and system for pruning and grafting trees in a directory service |
US6330717B1 (en) * | 1998-03-27 | 2001-12-11 | Sony Corporation Of Japan | Process and system for developing an application program for a distributed adaptive run-time platform |
US6209029B1 (en) * | 1998-05-12 | 2001-03-27 | Silverstream Software, Inc. | Method and apparatus for accessing data sources in a three tier environment |
US6553375B1 (en) | 1998-11-25 | 2003-04-22 | International Business Machines Corporation | Method and apparatus for server based handheld application and database management |
US6243746B1 (en) * | 1998-12-04 | 2001-06-05 | Sun Microsystems, Inc. | Method and implementation for using computer network topology objects |
US7035895B1 (en) * | 1998-12-17 | 2006-04-25 | International Business Machines Corporation | Manager object for management of multiple resources on dataless clients in a distributed computing environment |
US6286138B1 (en) * | 1998-12-31 | 2001-09-04 | International Business Machines Corporation | Technique for creating remotely updatable programs for use in a client/server environment |
US7062532B1 (en) | 1999-03-25 | 2006-06-13 | Autodesk, Inc. | Method and apparatus for drawing collaboration on a network |
WO2000067121A1 (en) * | 1999-04-29 | 2000-11-09 | Rutgers University | Distributed software development environment |
US6886017B1 (en) * | 1999-04-30 | 2005-04-26 | Elata Limited | System and method for managing distribution of content to a device |
US6425126B1 (en) * | 1999-05-19 | 2002-07-23 | International Business Machines Corporation | Apparatus and method for synchronizing software between computers |
US6519679B2 (en) * | 1999-06-11 | 2003-02-11 | Dell Usa, L.P. | Policy based storage configuration |
US6826760B1 (en) * | 1999-06-16 | 2004-11-30 | Microsoft Corporation | Methods of factoring operating system functions, methods of converting operating systems, and related apparatus |
US7181539B1 (en) * | 1999-09-01 | 2007-02-20 | Microsoft Corporation | System and method for data synchronization |
US6594664B1 (en) * | 2000-01-04 | 2003-07-15 | International Business Machines Corporation | System and method for online/offline uninterrupted updating of rooms in collaboration space |
US6732172B1 (en) * | 2000-01-04 | 2004-05-04 | International Business Machines Corporation | Method and system for providing cross-platform access to an internet user in a heterogeneous network environment |
US6546554B1 (en) * | 2000-01-21 | 2003-04-08 | Sun Microsystems, Inc. | Browser-independent and automatic apparatus and method for receiving, installing and launching applications from a browser on a client computer |
US6694336B1 (en) * | 2000-01-25 | 2004-02-17 | Fusionone, Inc. | Data transfer and synchronization system |
US6934532B2 (en) * | 2000-02-09 | 2005-08-23 | Apriva, Inc. | Communication systems, components, and methods operative with programmable wireless devices |
US6904593B1 (en) * | 2000-03-24 | 2005-06-07 | Hewlett-Packard Development Company, L.P. | Method of administering software components using asynchronous messaging in a multi-platform, multi-programming language environment |
US6662192B1 (en) | 2000-03-29 | 2003-12-09 | Bizrate.Com | System and method for data collection, evaluation, information generation, and presentation |
US20050091576A1 (en) | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Programming interface for a computer platform |
EP1148322A1 (de) | 2000-04-18 | 2001-10-24 | Gretag-Macbeth AG | Verfahren zur Erzeugung einer elektronischen Farbinformationsdatei und Verfahren zur Farbkommunikation |
US7013340B1 (en) * | 2000-05-18 | 2006-03-14 | Microsoft Corporation | Postback input handling by server-side control objects |
US6685090B2 (en) * | 2000-05-24 | 2004-02-03 | Fujitsu Limited | Apparatus and method for multi-profile managing and recording medium storing multi-profile managing program |
US6611837B2 (en) | 2000-06-05 | 2003-08-26 | International Business Machines Corporation | System and method for managing hierarchical objects |
US7219304B1 (en) * | 2000-06-19 | 2007-05-15 | International Business Machines Corporation | System and method for developing and administering web applications and services from a workflow, enterprise, and mail-enabled web application server and platform |
US6865737B1 (en) * | 2000-08-23 | 2005-03-08 | Microsoft Corporation | Remote software installation and maintenance |
US20020138617A1 (en) * | 2000-09-06 | 2002-09-26 | Jacob Christfort | Providing content from multiple services |
US7089295B2 (en) * | 2000-09-06 | 2006-08-08 | Oracle International Corporation | Customizing content provided by a service |
US7836458B1 (en) | 2000-11-02 | 2010-11-16 | Microsoft Corporation | Configuration system |
US20040006566A1 (en) * | 2000-11-07 | 2004-01-08 | Matt Taylor | System and method for augmenting knowledge commerce |
US6834301B1 (en) * | 2000-11-08 | 2004-12-21 | Networks Associates Technology, Inc. | System and method for configuration, management, and monitoring of a computer network using inheritance |
US6961909B2 (en) * | 2001-01-05 | 2005-11-01 | Hewlett-Packard Development Company, L.P. | System for displaying a hierarchical directory |
US20040133606A1 (en) * | 2003-01-02 | 2004-07-08 | Z-Force Communications, Inc. | Directory aggregation for files distributed over a plurality of servers in a switched file system |
US20020103811A1 (en) * | 2001-01-26 | 2002-08-01 | Fankhauser Karl Erich | Method and apparatus for locating and exchanging clinical information |
US7054927B2 (en) * | 2001-01-29 | 2006-05-30 | Adaptec, Inc. | File system metadata describing server directory information |
JP2002229902A (ja) | 2001-01-31 | 2002-08-16 | Justec:Kk | 情報提供方法、情報提供システム、地理情報提供方法、地図情報提供システム、及びコンピュータ読み取り可能なプログラム |
US20030004746A1 (en) * | 2001-04-24 | 2003-01-02 | Ali Kheirolomoom | Scenario based creation and device agnostic deployment of discrete and networked business services using process-centric assembly and visual configuration of web service components |
US6836842B1 (en) * | 2001-04-24 | 2004-12-28 | Xilinx, Inc. | Method of partial reconfiguration of a PLD in which only updated portions of configuration data are selected for reconfiguring the PLD |
US7146524B2 (en) | 2001-08-03 | 2006-12-05 | Isilon Systems, Inc. | Systems and methods for providing a distributed file system incorporating a virtual hot spare |
US7685126B2 (en) * | 2001-08-03 | 2010-03-23 | Isilon Systems, Inc. | System and methods for providing a distributed file system utilizing metadata to track information about data stored throughout the system |
US8290762B2 (en) * | 2001-08-14 | 2012-10-16 | National Instruments Corporation | Graphically configuring program invocation relationships by creating or modifying links among program icons in a configuration diagram |
US6907451B1 (en) * | 2001-09-29 | 2005-06-14 | Siebel Systems, Inc. | Method, apparatus, and system for immediate posting of changes in a client server environment |
EP2383649A1 (en) | 2001-10-02 | 2011-11-02 | Citrix Systems, Inc. | Methods for distributed program execution with file-type association in a client-server network |
US7117243B2 (en) * | 2001-10-02 | 2006-10-03 | Citrix Systems, Inc. | Methods for distributed program execution with file-type association in a client-server network |
US7330872B2 (en) * | 2001-10-02 | 2008-02-12 | Citrix Systems, Inc. | Method for distributed program execution with web-based file-type association |
US6952714B2 (en) * | 2001-10-02 | 2005-10-04 | Citrix Systems, Inc. | Method for distributed program execution with server-based file type association |
US7284196B2 (en) | 2001-10-05 | 2007-10-16 | Vitria Technology, Inc. | Vocabulary and syntax based data transformation |
JP3857571B2 (ja) * | 2001-11-15 | 2006-12-13 | タイコ エレクトロニクス レイケム株式会社 | ポリマーptcサーミスタおよび温度センサ |
KR100426307B1 (ko) * | 2001-12-12 | 2004-04-08 | 한국전자통신연구원 | 에스오에이피-엑스엠엘을 이용한 데이터 액세스 장치 및방법 |
US7088995B2 (en) * | 2001-12-13 | 2006-08-08 | Far Eastone Telecommunications Co., Ltd. | Common service platform and software |
JP2003186782A (ja) * | 2001-12-20 | 2003-07-04 | Fuji Photo Film Co Ltd | 情報配信システム、情報配信装置及びプログラム、デジタルカメラ及び携帯端末装置 |
US7266563B2 (en) * | 2001-12-28 | 2007-09-04 | Fotomedia Technologies, Llc | Specifying, assigning, and maintaining user defined metadata in a network-based photosharing system |
US7206817B2 (en) * | 2002-01-18 | 2007-04-17 | Bea Systems, Inc. | Systems and methods for application management and deployment |
WO2003075158A2 (en) * | 2002-03-01 | 2003-09-12 | Green Border Technologies | Method and system for assured denotation of application semantics |
US7421478B1 (en) * | 2002-03-07 | 2008-09-02 | Cisco Technology, Inc. | Method and apparatus for exchanging heartbeat messages and configuration information between nodes operating in a master-slave configuration |
US7552481B2 (en) * | 2002-03-18 | 2009-06-23 | Sun Microsystems, Inc. | Method of assessing an organization's network identity capability |
US6968535B2 (en) | 2002-03-21 | 2005-11-22 | Sun Microsystems, Inc. | Service mapping method of enterprise application modeling and development for multi-tier service environments |
US7072898B2 (en) | 2002-05-30 | 2006-07-04 | Oracle International Corporation | Method and apparatus for exchanging communications between heterogeneous applications |
AU2003243543A1 (en) * | 2002-06-12 | 2003-12-31 | Fslogic Inc. | Layered computing systems and methods |
US20040031029A1 (en) * | 2002-08-06 | 2004-02-12 | Kyu-Woong Lee | Methods and systems for automatically updating software components in a network |
US6909721B2 (en) * | 2002-10-31 | 2005-06-21 | Nokia Corporation | Device detection and service discovery system and method for a mobile ad hoc communications network |
JP2004171107A (ja) * | 2002-11-18 | 2004-06-17 | Sony Corp | ソフトウエア提供システム、ソフトウエア提供装置および方法、記録媒体、並びにプログラム |
CA2412383A1 (en) | 2002-11-22 | 2004-05-22 | Ibm Canada Limited-Ibm Canada Limitee | Meta-model for associating multiple physical representations of logically equivalent entities in messaging and other applications |
US7613812B2 (en) * | 2002-12-04 | 2009-11-03 | Microsoft Corporation | Peer-to-peer identity management interfaces and methods |
US7386532B2 (en) * | 2002-12-19 | 2008-06-10 | Mathon Systems, Inc. | System and method for managing versions |
US7512703B2 (en) * | 2003-01-31 | 2009-03-31 | Hewlett-Packard Development Company, L.P. | Method of storing data concerning a computer network |
US7890543B2 (en) * | 2003-03-06 | 2011-02-15 | Microsoft Corporation | Architecture for distributed computing system and automated design, deployment, and management of distributed applications |
US7099888B2 (en) * | 2003-03-26 | 2006-08-29 | Oracle International Corporation | Accessing a remotely located nested object |
EP2270730A1 (en) * | 2003-04-25 | 2011-01-05 | Apple Inc. | Method and system for network-based purchase and distribution of media |
US7203711B2 (en) | 2003-05-22 | 2007-04-10 | Einstein's Elephant, Inc. | Systems and methods for distributed content storage and management |
US7240327B2 (en) * | 2003-06-04 | 2007-07-03 | Sap Ag | Cross-platform development for devices with heterogeneous capabilities |
TWI223725B (en) | 2003-06-10 | 2004-11-11 | Chunghwa Picture Tubes Ltd | Polarizer manufacturing method |
US20050015430A1 (en) | 2003-06-25 | 2005-01-20 | Rothman Michael A. | OS agnostic resource sharing across multiple computing platforms |
US8001187B2 (en) * | 2003-07-01 | 2011-08-16 | Apple Inc. | Peer-to-peer active content sharing |
US7594015B2 (en) * | 2003-07-28 | 2009-09-22 | Sap Ag | Grid organization |
US7383541B1 (en) * | 2003-08-07 | 2008-06-03 | Cisco Technology, Inc. | Method and apparatus providing interoperation of execution images of different versions |
US20050060315A1 (en) * | 2003-09-16 | 2005-03-17 | Aleksey Sanin | Metadata database lookup system |
US20050060566A1 (en) * | 2003-09-16 | 2005-03-17 | Chebolu Anil Kumar | Online user-access reports with authorization features |
EP1665084A1 (en) * | 2003-09-17 | 2006-06-07 | Research In Motion Limited | System and method for dynamic generation and customization of web service client applications for terminals |
US7350201B2 (en) * | 2003-10-23 | 2008-03-25 | International Business Machines Corporation | Software distribution application supporting operating system installations |
US7721254B2 (en) * | 2003-10-24 | 2010-05-18 | Microsoft Corporation | Programming interface for a computer platform |
US7546594B2 (en) * | 2003-12-15 | 2009-06-09 | Microsoft Corporation | System and method for updating installation components using an installation component delta patch in a networked environment |
US7574706B2 (en) * | 2003-12-15 | 2009-08-11 | Microsoft Corporation | System and method for managing and communicating software updates |
US20050138156A1 (en) * | 2003-12-19 | 2005-06-23 | Alexander Gebhart | Grid application customization |
US7257583B2 (en) * | 2004-01-09 | 2007-08-14 | Microsoft Corporation | System and method for updating an on-device application catalog in a mobile device receiving a push message from a catalog server indicating availability of an application for download |
WO2005072114A2 (en) | 2004-01-19 | 2005-08-11 | Pantero Corporation | Enterprise interoperability using shared data services |
US7480699B2 (en) * | 2004-01-20 | 2009-01-20 | International Business Machines Corporation | System and method for replacing an application on a server |
US20050177600A1 (en) * | 2004-02-11 | 2005-08-11 | International Business Machines Corporation | Provisioning of services based on declarative descriptions of a resource structure of a service |
US20050192962A1 (en) * | 2004-02-26 | 2005-09-01 | Patricia Furrer | Apparatus, system, method for enabling web-applications to access enterprise managed data |
WO2005093567A1 (de) * | 2004-03-09 | 2005-10-06 | Bayerische Motoren Werke Aktiengesellschaft | Aktualisierung und/oder erweiterung der funktionalität der ablaufsteuerung mindestens eines steuergeräts |
US20050203931A1 (en) | 2004-03-13 | 2005-09-15 | Robert Pingree | Metadata management convergence platforms, systems and methods |
US7190962B2 (en) * | 2004-04-01 | 2007-03-13 | Qualcomm Incorporated | Networked wireless communications device programmed to identify and eliminate probable multipath errors to enhance accuracy in correcting sleep clock for thermally induced errors |
US20050251812A1 (en) | 2004-04-27 | 2005-11-10 | Convertabase, Inc. | Data conversion system, method, and apparatus |
US20050251786A1 (en) | 2004-05-07 | 2005-11-10 | International Business Machines Corporation | System and method for dynamic software installation instructions |
US7650432B2 (en) | 2004-05-20 | 2010-01-19 | Bea Systems, Inc. | Occasionally-connected application server |
US7730482B2 (en) * | 2004-06-08 | 2010-06-01 | Covia Labs, Inc. | Method and system for customized programmatic dynamic creation of interoperability content |
EP1770540A1 (en) * | 2004-06-15 | 2007-04-04 | Matsushita Electric Industrial Co., Ltd. | Data processing device |
US20050289454A1 (en) | 2004-06-28 | 2005-12-29 | D & Wayne & Co. | Interactive website configuration, display and management application |
US7882147B2 (en) | 2004-06-30 | 2011-02-01 | Robert T. and Virginia T. Jenkins | File location naming hierarchy |
US8069436B2 (en) * | 2004-08-13 | 2011-11-29 | Cypress Semiconductor Corporation | Providing hardware independence to automate code generation of processing device firmware |
US20060036602A1 (en) * | 2004-08-13 | 2006-02-16 | Unangst Marc J | Distributed object-based storage system that stores virtualization maps in object attributes |
US8217756B2 (en) | 2004-09-01 | 2012-07-10 | Microsoft Corporation | Rule-based filtering and alerting |
US20070038642A1 (en) * | 2004-09-15 | 2007-02-15 | Scott Durgin | Method for providing extensible software components within a distributed synchronization system |
US20070100834A1 (en) * | 2004-09-15 | 2007-05-03 | John Landry | System and method for managing data in a distributed computer system |
US7266370B2 (en) * | 2004-09-20 | 2007-09-04 | Trilibis Inc. | System and method for developing and deploying device independent applications |
US20060089965A1 (en) * | 2004-10-26 | 2006-04-27 | International Business Machines Corporation | Dynamic linkage of an application server and a Web server |
US7760746B2 (en) * | 2004-11-30 | 2010-07-20 | Computer Associates Think, Inc. | Cascading configuration using one or more configuration trees |
US20060129972A1 (en) * | 2004-11-30 | 2006-06-15 | Tyburski John C | Application developer and method for generating platform independent code |
KR100714683B1 (ko) * | 2004-12-24 | 2007-05-04 | 삼성전자주식회사 | 디지털 컨텐츠를 글로벌로 공유하고 거래하는 방법 및시스템 |
US9535679B2 (en) * | 2004-12-28 | 2017-01-03 | International Business Machines Corporation | Dynamically optimizing applications within a deployment server |
US8387037B2 (en) * | 2005-01-28 | 2013-02-26 | Ca, Inc. | Updating software images associated with a distributed computing system |
US7516206B2 (en) * | 2005-01-28 | 2009-04-07 | Cassatt Corporation | Management of software images for computing nodes of a distributed computing system |
US7685148B2 (en) * | 2005-01-31 | 2010-03-23 | Computer Associates Think, Inc. | Automatically configuring a distributed computing system according to a hierarchical model |
US20070050446A1 (en) * | 2005-02-01 | 2007-03-01 | Moore James F | Managing network-accessible resources |
US7680835B2 (en) * | 2005-02-28 | 2010-03-16 | Microsoft Corporation | Online storage with metadata-based retrieval |
US7590653B2 (en) * | 2005-03-02 | 2009-09-15 | Cassatt Corporation | Automated discovery and inventory of nodes within an autonomic distributed computing system |
US8554916B2 (en) * | 2005-04-11 | 2013-10-08 | Accenture Global Services Gmbh | Service delivery platform and development of new client business models |
US7743373B2 (en) | 2005-05-06 | 2010-06-22 | International Business Machines Corporation | Method and apparatus for managing software catalog and providing configuration for installation |
US7577681B1 (en) * | 2005-06-29 | 2009-08-18 | Emc Corporation | Methods and apparatus for managing contents of a database |
US7694287B2 (en) | 2005-06-29 | 2010-04-06 | Visa U.S.A. | Schema-based dynamic parse/build engine for parsing multi-format messages |
US7739680B1 (en) * | 2005-07-21 | 2010-06-15 | Sprint Communications Company L.P. | Application server production software upgrading with high availability staging software |
US20070028175A1 (en) * | 2005-07-29 | 2007-02-01 | Moore Dennis B | Grid processing user tools |
US20070061349A1 (en) | 2005-09-15 | 2007-03-15 | Microsoft Corporation | Hierarchically describing shapes |
US20070073770A1 (en) | 2005-09-29 | 2007-03-29 | Morris Robert P | Methods, systems, and computer program products for resource-to-resource metadata association |
US8005879B2 (en) * | 2005-11-21 | 2011-08-23 | Sap Ag | Service-to-device re-mapping for smart items |
EP1955152A1 (en) * | 2005-12-01 | 2008-08-13 | Cassatt Corporation | Automated deployment and configuration of applications in an autonomically controlled distributed computing system |
US20070169083A1 (en) * | 2005-12-12 | 2007-07-19 | Penubolu Shyam P | Method for secure in-service software upgrades |
CN1801086A (zh) | 2006-01-17 | 2006-07-12 | 浙江大学 | 应用于Java操作系统中设备支持的实现方法 |
JP5483884B2 (ja) | 2006-01-17 | 2014-05-07 | キダロ (イスラエル) リミテッド | 複数のコンピューティング環境のシームレスな統合 |
US20070177583A1 (en) | 2006-01-31 | 2007-08-02 | Microsoft Corporation | Partial message streaming |
US7793343B2 (en) * | 2006-03-03 | 2010-09-07 | Oracle America, Inc. | Method and system for identity management integration |
US8060871B2 (en) * | 2006-03-30 | 2011-11-15 | Microsoft Corporation | Servicing software through versioning |
US8572138B2 (en) * | 2006-03-30 | 2013-10-29 | Ca, Inc. | Distributed computing system having autonomic deployment of virtual machine disk images |
US7483978B2 (en) * | 2006-05-15 | 2009-01-27 | Computer Associates Think, Inc. | Providing a unified user interface for managing a plurality of heterogeneous computing environments |
DE102006023876A1 (de) * | 2006-05-19 | 2007-11-22 | Carl Zeiss Smt Ag | Optische Abbildungseinrichtung |
US7508787B2 (en) | 2006-05-31 | 2009-03-24 | Cisco Technology, Inc. | Graphical selection of information display for wireless mesh hierarchies |
US8370423B2 (en) | 2006-06-16 | 2013-02-05 | Microsoft Corporation | Data synchronization and sharing relationships |
US7814460B2 (en) * | 2006-07-13 | 2010-10-12 | Scriptlogic Corporation | Hierarchical modular software packages and associated development tool |
US7822594B2 (en) | 2006-08-07 | 2010-10-26 | Voltaire Ltd. | Service-oriented infrastructure management |
US7739411B2 (en) * | 2006-08-11 | 2010-06-15 | Samsung Electronics Co., Ltd. | Method and system for content synchronization and detecting synchronization recursion in networks |
US7606588B2 (en) * | 2006-08-31 | 2009-10-20 | Telefonaktiebolaget Lm Ericsson (Publ) | Hierarchical point-to-multipoint group communications between multiple active communication groups |
US8683352B2 (en) * | 2006-09-05 | 2014-03-25 | International Business Machines Corporation | Selectable flattening hierarchical file browser |
US7934194B2 (en) * | 2006-10-17 | 2011-04-26 | The Mathworks, Inc. | User-defined hierarchies of user-defined classes of graphical objects in a graphical modeling environment |
US20080249994A1 (en) | 2006-11-28 | 2008-10-09 | Calder Group, Inc. | System and process for server side stateless data interchange |
US7734717B2 (en) * | 2006-12-05 | 2010-06-08 | Nokia Corporation | Software distribution via peer-to-peer networks |
US7844912B2 (en) * | 2006-12-22 | 2010-11-30 | Sap Ag | System and method using transformation nodes with enhancement layers |
WO2008103608A2 (en) * | 2007-02-19 | 2008-08-28 | Ondeego, Inc. | Methods and system to create applications and distribute applications to a remote device |
US20080263348A1 (en) * | 2007-04-17 | 2008-10-23 | Texas Instruments Incorporated | Dynamic asymmetric partitioning of program code memory in network connected devices |
US7853669B2 (en) * | 2007-05-04 | 2010-12-14 | Microsoft Corporation | Mesh-managing data across a distributed set of devices |
US8185891B2 (en) * | 2007-05-14 | 2012-05-22 | Red Hat, Inc. | Methods and systems for provisioning software |
US8321538B2 (en) * | 2007-09-24 | 2012-11-27 | Hewlett-Packard Development Company, L.P. | Autonomous network device configuration method |
US8266260B2 (en) * | 2007-12-11 | 2012-09-11 | Sharp Laboratories Of America, Inc. | Method and system for updating the software of multiple network nodes |
US9280402B2 (en) * | 2007-12-20 | 2016-03-08 | Sap Se | System and method for updating a dual layer browser |
US8127287B2 (en) * | 2007-12-20 | 2012-02-28 | Baljit Singh Gupta | Systems and methods for reusing SAP adaptors in non-supported releases |
US20090172637A1 (en) * | 2007-12-28 | 2009-07-02 | Microsoft Corporation | Markup-based language for manifests |
US8484174B2 (en) | 2008-03-20 | 2013-07-09 | Microsoft Corporation | Computing environment representation |
US9298747B2 (en) * | 2008-03-20 | 2016-03-29 | Microsoft Technology Licensing, Llc | Deployable, consistent, and extensible computing environment platform |
US8572033B2 (en) * | 2008-03-20 | 2013-10-29 | Microsoft Corporation | Computing environment configuration |
US20110246977A1 (en) * | 2010-03-31 | 2011-10-06 | Leviton Manufacturing Co., Inc. | Control system code installation and upgrade |
US9152404B2 (en) * | 2011-07-13 | 2015-10-06 | Z124 | Remote device filter |
US20140325502A1 (en) * | 2012-06-29 | 2014-10-30 | Giannis Zarifis | Packaging, distribution and de-packaging of device-independent software applications |
-
2008
- 2008-03-20 US US12/052,550 patent/US9753712B2/en active Active
-
2009
- 2009-02-17 TW TW98105022A patent/TWI473019B/zh not_active IP Right Cessation
- 2009-02-20 EP EP09723161.7A patent/EP2255295B1/en active Active
- 2009-02-20 KR KR1020107020791A patent/KR20100133382A/ko not_active Application Discontinuation
- 2009-02-20 BR BRPI0907773-1A patent/BRPI0907773A2/pt not_active IP Right Cessation
- 2009-02-20 JP JP2011500835A patent/JP5409767B2/ja active Active
- 2009-02-20 WO PCT/US2009/034601 patent/WO2009117207A1/en active Application Filing
- 2009-02-20 CN CN2009801106621A patent/CN101978366B/zh active Active
-
2017
- 2017-08-01 US US15/666,145 patent/US10514901B2/en active Active
-
2019
- 2019-11-26 US US16/696,391 patent/US10970062B2/en active Active
-
2021
- 2021-03-08 US US17/194,960 patent/US11366654B2/en active Active
-
2022
- 2022-05-18 US US17/747,826 patent/US11593094B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
WO2009117207A1 (en) | 2009-09-24 |
US20210357200A1 (en) | 2021-11-18 |
JP2011515763A (ja) | 2011-05-19 |
US11366654B2 (en) | 2022-06-21 |
US20200110594A1 (en) | 2020-04-09 |
BRPI0907773A2 (pt) | 2015-07-14 |
CN101978366B (zh) | 2013-10-30 |
US9753712B2 (en) | 2017-09-05 |
TWI473019B (zh) | 2015-02-11 |
US20170357498A1 (en) | 2017-12-14 |
JP5409767B2 (ja) | 2014-02-05 |
CN101978366A (zh) | 2011-02-16 |
EP2255295A4 (en) | 2011-11-02 |
US10970062B2 (en) | 2021-04-06 |
US20090241104A1 (en) | 2009-09-24 |
EP2255295A1 (en) | 2010-12-01 |
US11593094B2 (en) | 2023-02-28 |
US10514901B2 (en) | 2019-12-24 |
US20220276857A1 (en) | 2022-09-01 |
TW200941347A (en) | 2009-10-01 |
EP2255295B1 (en) | 2014-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11593094B2 (en) | Application management within deployable object hierarchy | |
US8572033B2 (en) | Computing environment configuration | |
AU2017253679B2 (en) | Providing access to a hybrid application offline | |
US9063814B2 (en) | Binding user data files | |
JP5559140B2 (ja) | 計算環境の表現 | |
US9298747B2 (en) | Deployable, consistent, and extensible computing environment platform | |
US10331423B1 (en) | Utilizing cross platform streamable user interfaces to reduce software deployment frequency caused by user interface improvements | |
US20090248737A1 (en) | Computing environment representation | |
US9374275B2 (en) | Rapid application development using a content management system | |
US8244798B2 (en) | Techniques for sharing content between portals | |
US20100235829A1 (en) | Programming model for installing and distributing occasionally connected applications | |
EP3374858B1 (en) | Creating and modifying applications from a mobile device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E601 | Decision to refuse application |