KR20100133382A - 배포가능 개체 계층구조 내에서의 응용 프로그램 관리 - Google Patents

배포가능 개체 계층구조 내에서의 응용 프로그램 관리 Download PDF

Info

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
Application number
KR1020107020791A
Other languages
English (en)
Inventor
오리 아미가
존 매킨타이어
다르마 슈클라
준펭 장
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20100133382A publication Critical patent/KR20100133382A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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

배포가능 개체 계층구조 내에서의 응용 프로그램 관리{APPLICATION MANAGEMENT WITHIN DEPLOYABLE OBJECT HIERARCHY}
많은 컴퓨팅 환경들은 일련의 개체 시스템들에 의해 관리되는 일련의 많은 다양한 개체들을 포함한다. 예를 들어, 컴퓨팅 환경은 파일 시스템에 의해 관리되는 일련의 파일들, 데이터베이스 시스템에 의해 관리되는 하나 이상의 데이터베이스들, 응용 프로그램들을 나타내고 또 어셈블리 캐시(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은 본 명세서에 기술된 발명 내용들 중 하나 이상이 구현될 수 있는 예시적인 컴퓨팅 환경을 나타낸 도면.
이제부터 첨부 도면들을 참조하여 청구된 발명 대상에 대해 기술하며, 도면 전체에 걸쳐 유사한 참조 번호들이 유사한 구성요소들을 가리키는 데 사용되고 있다. 이하의 설명에서, 설명의 목적상, 청구된 발명 대상에 대한 완전한 이해를 제공하기 위해 수많은 구체적인 상세가 기술되어 있다. 그렇지만, 청구된 발명 대상이 이러한 구체적인 상세들이 없어도 실시될 수 있다는 것이 명백할 수 있다. 다른 경우들에, 청구된 발명 대상의 설명을 용이하게 해주기 위해 공지의 구조들 및 장치들이 블록도 형태로 도시되어 있다.
종래의 컴퓨팅 환경은 통상적으로 시계 및 계산기 등의 간단한 목적을 가진 작은 도구들로부터 소프트웨어 통합 개발 환경 및 생산성 제품군 등의 복잡하고 상호관련된 응용 프로그램들로 된 대형 제품군에 이르는 많은 다양한 일련의 응용 프로그램들을 포함하고 있다. 응용 프로그램들은 또한 멀티미디어 플레이어 및 그에 의해 렌더링되는 미디어 개체들 등의 미디어[예를 들어, 리더 응용 프로그램(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)

  1. 응용 프로그램 저장소(84)에 의해 관리되는 적어도 하나의 응용 프로그램(112)을 적어도 하나의 장치(50) 상의 컴퓨팅 환경을 표현하는 개체 계층구조(44)로 배포하는 것을 관리하는 시스템(86)으로서,
    응용 프로그램(112)을 설치하라는 요청을 수신하고, 상기 응용 프로그램 저장소(84)로부터 상기 응용 프로그램(112)을 획득하도록 구성되어 있는 응용 프로그램 획득 구성요소(88),
    상기 개체 계층구조(44)에 표현된 적어도 하나의 장치(50)를 상기 적어도 하나의 설치된 응용 프로그램(112)에 매핑하도록 구성되어 있는 응용 프로그램 매핑 구성요소(90), 및
    상기 개체 계층구조(44) 내의 상기 적어도 하나의 설치된 응용 프로그램(112)을 배포하도록 구성되어 있는 응용 프로그램 배포 구성요소(92)를 포함하는 시스템.
  2. 제1항에 있어서, 상기 시스템은 적어도 하나의 응용 프로그램을 나타내는 응용 프로그램 저장소를 포함하고, 각각의 응용 프로그램들은 적어도 하나의 응용 프로그램 리소스를 포함하는 시스템.
  3. 제1항에 있어서, 상기 개체 계층구조를 저장하도록 구성되어 있는 개체 계층구조 저장소, 및
    상기 개체 계층구조의 적어도 일부분을 상기 적어도 하나의 장치로 전송하도록 구성되어 있는 개체 계층구조 전송 구성요소를 포함하는 시스템.
  4. 제1항에 있어서, 응용 프로그램 쿼리를 사용자로부터 수신하고, 상기 응용 프로그램 쿼리를 충족시키는 응용 프로그램들을 선택하며, 선택된 응용 프로그램들을 상기 사용자에게 제시하도록 구성되어 있는 응용 프로그램 검색 구성요소를 포함하는 시스템.
  5. 제1항에 있어서, 상기 응용 프로그램 획득 구성요소는,
    상기 장치를 통해 사용자에게 응용 프로그램 라이선스를 제시하고,
    상기 사용자로부터 상기 응용 프로그램 라이선스의 수락을 수신할 시에, 상기 응용 프로그램 라이선스의 상기 수락을 기록하도록 구성되어 있는 시스템.
  6. 제1항에 있어서, 상기 응용 프로그램 획득 구성요소는 상기 적어도 하나의 장치의 사용자와의 획득 거래를 중계하도록 구성되어 있는 시스템.
  7. 제1항에 있어서, 상기 응용 프로그램 획득 구성요소는 상기 응용 프로그램의 사용자를 나타내는 사용자 계정을 생성하도록 구성되어 있는 시스템.
  8. 제1항에 있어서, 상기 배포는 상기 장치 및 상기 장치의 사용자 중 적어도 하나와 관련하여 상기 응용 프로그램을 구성하는 것을 포함하는 시스템.
  9. 제1항에 있어서, 상기 적어도 하나의 장치 상에서 상기 응용 프로그램을 시작(launch)하도록 구성되어 있는 응용 프로그램 시작 구성요소를 포함하는 시스템.
  10. 제1항에 있어서, 상기 응용 프로그램을 사용자와 공유하라는 요청을 수신하고, 상기 응용 프로그램을 공유하라는 상기 요청을 수신할 시에, 상기 응용 프로그램을 상기 사용자와 공유하도록 구성되어 있는 응용 프로그램 공유 구성요소를 포함하는 시스템.
  11. 제10항에 있어서, 상기 응용 프로그램 공유 구성요소는 상기 응용 프로그램, 응용 프로그램 세션, 응용 프로그램 구성, 및 상기 응용 프로그램에 의해 생성되는 적어도 하나의 데이터 개체 중 적어도 하나를 포함하는 상기 개체 계층구조의 일부분을 사용자와 공유하도록 구성되어 있는 시스템.
  12. 제1항에 있어서, 상기 응용 프로그램을 업데이트하도록 구성되어 있는 응용 프로그램 업데이트 구성요소를 포함하는 시스템.
  13. 제12항에 있어서, 상기 응용 프로그램 업데이트 구성요소는 상기 개체 계층구조 내의 적어도 하나의 응용 프로그램 리소스를 업데이트하도록 구성되어 있고,
    응용 프로그램 해지 구성요소는 상기 응용 프로그램을 해지(revoke)하도록 구성되어 있는 시스템.
  14. 제1항에 있어서, 상기 응용 프로그램을 해지하라고 요청하도록 구성되어 있는 수신 구성요소를 포함하는 시스템.
  15. 제14항에 있어서, 상기 수신 구성요소는 상기 개체 계층구조 내의 상기 응용 프로그램을 해지하도록 구성되어 있는 시스템.
KR1020107020791A 2008-03-20 2009-02-20 배포가능 개체 계층구조 내에서의 응용 프로그램 관리 KR20100133382A (ko)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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