KR101618901B1 - 애플리케이션 변경들을 위한 상태 분리 - Google Patents

애플리케이션 변경들을 위한 상태 분리 Download PDF

Info

Publication number
KR101618901B1
KR101618901B1 KR1020117001567A KR20117001567A KR101618901B1 KR 101618901 B1 KR101618901 B1 KR 101618901B1 KR 1020117001567 A KR1020117001567 A KR 1020117001567A KR 20117001567 A KR20117001567 A KR 20117001567A KR 101618901 B1 KR101618901 B1 KR 101618901B1
Authority
KR
South Korea
Prior art keywords
application
context
virtual
change
configuration
Prior art date
Application number
KR1020117001567A
Other languages
English (en)
Other versions
KR20110038048A (ko
Inventor
존 엠. 쉬한
크리스토퍼 에이치. 레이어슨
Original Assignee
마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 filed Critical 마이크로소프트 테크놀로지 라이센싱, 엘엘씨
Publication of KR20110038048A publication Critical patent/KR20110038048A/ko
Application granted granted Critical
Publication of KR101618901B1 publication Critical patent/KR101618901B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

애플리케이션 상태들은, 애플리케이션이 사용되는 다양한 컨텍스트들을 정의하는 정책들을 사용하여 저장 및 검색될 수 있다. 애플리케이션 상태들은 다른 애플리케이션들에의 접속 및 다른 애플리케이션들과의 상호작용을 포함하는, 애플리케이션의 구성 또는 사용을 정의할 수 있다. 가상화되는 애플리케이션들은 사용 컨텍스트 내에서 정의된 상태를 가질 수 있고, 사용 컨텍스트에 기초하여 복수의 상태 또는 구성이 저장 및 리콜될 수 있다. 정책들은 컨텍스트, 및 어떤 매개변수들이 저장될지를 저장할 수 있고, 애플리케이션들이 가상화된 방식으로 동작될 때 적용될 수 있다.

Description

애플리케이션 변경들을 위한 상태 분리{STATE SEPARATION FOR APPLICATION CHANGES}
애플리케이션들은 많은 다른 방식들로 수정될 수 있다. 일부 경우들에서, 애플리케이션은 레지스트리를 업데이트하거나, 구성 파일(configuration files)을 변경하거나, DLL(dynamic linked library)을 업데이트하거나, 또는 기타 메커니즘에 의해 수정될 수 있다. 애플리케이션에 대한 각각의 변경은 운영 체제의 부분들에 영향을 줄 수 있고, 이것은 운영 체제 환경 내에서 실행되는 다른 애플리케이션들에 영향을 줄 수 있다.
애플리케이션 상태들은 애플리케이션이 사용되는 다양한 컨텍스트들을 정의하는 정책들을 사용하여 저장 및 검색될 수 있다. 애플리케이션 상태들은 다른 애플리케이션들에의 접속 및 다른 애플리케이션들과의 상호작용을 포함하는, 애플리케이션의 구성 또는 사용을 정의할 수 있다. 가상화(virtualize)되는 애플리케이션들은 사용 컨텍스트 내에서 정의된 상태를 가질 수 있고, 사용 컨텍스트에 기초하여 복수의 상태 또는 구성이 저장 및 리콜(recall)될 수 있다. 정책들은 컨텍스트, 및 어떤 매개변수들이 저장될지를 저장할 수 있고, 애플리케이션들이 가상화된 방식으로 동작될 때 적용될 수 있다.
본 개요는 이하의 상세한 설명에서 더 설명되는 개념들 중 선택된 것들을 단순한 형태로 소개하기 위해 제공된 것이다. 본 개요는 청구되는 발명의 주제의 핵심적인 요소 또는 본질적인 특징을 식별하도록 의도된 것이 아니며, 청구되는 발명의 주제의 범위를 제한하기 위해 사용되도록 의도된 것도 아니다.
도 1은 애플리케이션의 컨텍스트에 기초하여 상이한 구성들을 저장하기 위한 시스템을 도시하는 실시예의 도면이다.
도 2는 상이한 컨텍스트 구성들로 동작하기 위한 방법을 도시하는 실시예의 흐름도이다.
애플리케이션은 상이한 상태들 또는 구성들에서 동작할 수 있다. 그러한 한 메커니즘은 애플리케이션 가상화를 통한 것이다. 애플리케이션이 특정 컨텍스트에 대해 구성될 때, 구성 정보는 추후의 사용을 위해 저장 및 리콜될 수 있다. 애플리케이션은 많은 상이한 상태들에서 동작하도록 구성될 수 있으며, 정책들의 집합은 구성들을 관리한다.
애플리케이션이 실행되는 상태는 운영 체제 구성, 다양한 다른 애플리케이션들의 존재(presence) 및 동작, 네트워크 또는 기타 접속을 통해 액세스되는 서비스들의 구성, 및 많은 다른 요소들을 포함할 수 있다. 애플리케이션의 구성 및 동작은 각각 다른 상태마다 상이할 수 있다.
예를 들어, 일부 애플리케이션들은 다른 애플리케이션들과 공생 관계를 가질 수 있다. 애플리케이션 단독의 행동(behavior) 또는 성능은 다른 내장된 애플리케이션을 갖는 애플리케이션의 행동 또는 성능과 다를 수 있다. 그러한 예에서, 구성은 단독 동작(solo operation)의 상태의 애플리케이션에 대해 정의될 수 있고, 제2의 공생 애플리케이션이 존재하고 동작중일 때, 애플리케이션에 대해 별도의 구성이 정의될 수 있다.
전형적인 구현에서, 애플리케이션들은 가상 환경에서 동작될 수 있다. 가상 환경은 특정 컨텍스트에 기초하여 상이한 구성 세팅 집합들을 수용할 수 있을 수 있다. 일부 경우들에서, 가상 환경은 가상 머신 환경일 수 있다. 다른 경우들에서, 가상 환경은 가상 애플리케이션 환경일 수 있다.
본 명세서 및 청구항들을 위하여, 애플리케이션 구성은 애플리케이션이 셋업 또는 구성되는 방식을 참조할 수 있다. 애플리케이션 구성은 애플리케이션의 성능, 기능, 외관(look) 또는 다른 동작 특성에 영향을 주는 요소들을 포함하여, 변경 또는 설정될 수 있는 임의의 요소를 포함할 수 있다.
본 명세서 및 청구항들을 위하여, 애플리케이션 상태는 애플리케이션이 실행되는 컨텍스트를 참조할 수 있다. 상태는 운영 체제, 및 그 운영 체제 또는 설치되거나 실행되는 임의의 애플리케이션의 임의의 세팅 또는 구성을 포함할 수 있다. 상태는 하드웨어 컴포넌트, 네트워크를 통해 이용할 수 있는 서비스, 다른 실행 애플리케이션, 주변 장치, 및 임의의 다른 항목을 포함하여, 애플리케이션과 상호작용할 수 있는 임의의 다른 요소의 컨디션(condition) 및 구성을 포함할 수 있다.
본 명세서 및 청구항들을 위하여, 애플리케이션 컨텍스트는 애플리케이션 상태의 범주일 수 있다. 상태는 애플리케이션에 영향을 줄 수 있는 임의의 변수를 포함할 수 있는 한편, 컨텍스트는 구성을 분류 및 저장하기 위해 이용될 수 있는 넓은 범주일 수 있다. 예를 들어, 컨텍스트들은 세션, 가상 애플리케이션 환경, 가상 머신 환경, 사용자별(user specific) 컨텍스트, 머신별(machine specific) 컨텍스트, 사용자 그룹 또는 머신 그룹별 컨텍스트, 2개 이상의 상호작용하는 애플리케이션이 상호운영되는 컨텍스트, 및 기타 컨텍스트에 대해 정의될 수 있다.
본 명세서 전반에 걸쳐서, 유사한 참조번호들은 도면들의 설명 전체에서 동일한 요소를 나타낸다.
요소들이 "접속된(connected)" 또는 "연결된(coupled)" 것으로서 참조될 때, 그 요소들은 함께 직접적으로 접속 또는 연결될 수 있고, 다르게는 하나 이상의 중간 요소가 존재할 수도 있다. 반대로, 요소들이 "직접 접속된" 또는 "직접 연결된" 것으로 참조될 때, 중간 요소들은 존재하지 않는다.
발명의 주제는 장치, 시스템, 방법 및/또는 컴퓨터 프로그램 제품으로서 구현될 수 있다. 따라서, 발명의 주제의 일부 또는 전부는 하드웨어 및/또는 소프트웨어(펌웨어, 상주 소프트웨어, 마이크로코드, 상태 머신, 게이트 어레이 등)으로 구현될 수 있다. 또한, 발명의 주제는 컴퓨터 사용가능 또는 컴퓨터 판독가능 프로그램 코드가 명령어 실행 시스템에 의해 또는 그러한 시스템과 함께 사용되도록 구현되어 있는 컴퓨터 사용가능 또는 컴퓨터 판독가능 저장 매체 상의 컴퓨터 프로그램 제품의 형태를 취할 수 있다. 본 문서의 맥락에서, 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 명령어 실행 시스템, 장비 또는 장치에 의해, 또는 그들과 함께 사용되도록 프로그램을 포함, 저장, 전송, 전파 또는 전달할 수 있는 임의의 매체일 수 있다.
컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는, 예를 들어 전자, 자기, 광학, 전자기, 적외선, 또는 반도체 시스템, 장비, 장치 또는 전파 매체일 수 있지만, 그에 한정되지는 않는다. 제한이 아닌 예를 들면, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있다.
컴퓨터 저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위해 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타 메모리 기술, CD-ROM, DVD(digital versatile disk) 또는 기타 광학 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 명령어 실행 시스템에 의해 액세스될 수 있고 원하는 정보를 저장하기 위해 사용될 수 있는 임의의 기타 매체를 포함하지만 이에 제한되는 것은 아니다. 프로그램은 예를 들어 종이 또는 기타 매체의 광학적 스캐닝을 통해 전자적으로 캡처된 후, 컴파일되고, 해석되거나, 필요하다면 적절한 방식으로 다르게 처리된 다음, 컴퓨터 메모리에 저장될 수 있으므로, 컴퓨터 사용가능 또는 컴퓨터 판독가능 매체는 프로그램이 인쇄되어 있는 종이 또는 다른 적합한 매체일 수 있다.
전형적으로, 통신 매체는 반송파 또는 기타 전송 매커니즘과 같은 변조된 데이터 신호로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코드하도록 그 특징들 중 하나 이상이 설정 또는 변경된 신호를 의미한다. 제한적이지 않은 예를 들면, 통신 매체는 유선 네트워크 또는 직접 배선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 기타 무선 매체와 같은 무선 매체를 포함한다. 상기의 것들 중 임의의 것의 조합들도 컴퓨터 판독가능 매체의 범위 내에 포함될 수 있다.
발명의 주제가 컴퓨터 실행가능 명령어의 일반적인 맥락으로 구현될 때, 그 구현은 하나 이상의 시스템, 컴퓨터 또는 기타 장치에 의해 실행되는 프로그램 모듈을 포함할 수 있다. 일반적으로, 프로그램 모듈들은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 개체, 컴포넌트, 데이터 구조 등을 포함한다. 전형적으로, 프로그램 모듈들의 기능성은 다양한 실시예들에서 필요한 대로 조합 또는 분산될 수 있다.
도 1은 상태 분리 및 관리 시스템을 갖는 시스템을 도시한 실시예(100)의 도면이다. 실시예(100)는 애플리케이션의 컨텍스트 또는 상태에 기초하여 애플리케이션을 위한 구성들을 저장 및 관리할 수 있는 시스템의 예이다.
도 1의 도면은 시스템의 기능적 컴포넌트들을 도시한 것이다. 일부 경우들에서, 컴포넌트는 하드웨어 컴포넌트, 소프트웨어 컴포넌트, 또는 하드웨어 및 소프트웨어의 조합일 수 있다. 컴포넌트들 중 일부는 애플리케이션 레벨 소프트웨어일 수 있는 한편, 다른 컴포넌트들은 운영 체제 레벨 컴포넌트일 수 있다. 일부 경우들에서, 한 컴포넌트의 다른 컴포넌트에 대한 접속은, 둘 이상의 컴포넌트가 단일의 하드웨어 플랫폼 상에서 동작하는 폐쇄 접속(close connection)일 수 있다. 다른 경우들에서, 접속은 긴 거리에 걸친 네트워크 접속을 통해 이루어질 수 있다. 각각의 실시예는 설명된 기능들을 달성하기 위해, 상이한 하드웨어, 소프트웨어 및 상호접속 아키텍처를 이용할 수 있다.
실시예(100)는 애플리케이션을 위한 다중상태 실행 시스템(multi-state execution system)을 구성할 수 있는 기능 요소들의 예이다. 애플리케이션(102)의 상이한 구성들(104)은 그 애플리케이션이 실행될 컨텍스트에 기초하여 실행 시스템(106)에서 실행될 수 있다.
다양한 실시예들은 애플리케이션을 위해 실행될 수 있는 상이한 레벨들의 구성들을 가질 수 있다. 예를 들어, 운영 체제 환경 내에서 설치 및 실행되는 애플리케이션은 구성을 정의하는 구성 파일 집합을 가질 수 있다. 구성 파일들에 연관된 컨텍스트에 기초하여 애플리케이션(102)을 런칭하기 위하여, 다른 구성 파일 집합이 이용될 수 있다.
다른 예에서, 애플리케이션은 가상 환경 내에서 실행될 수 있고, 또한 이전 예에서의 구성 파일들 외에, 레지스트리 세팅, DLL 및 많은 다른 구성 요소들이 컨텍스트들 간에서 달라질 수 있다. 그러한 가상 환경은 가상 머신 환경 또는 가상 애플리케이션 환경일 수 있다. 애플리케이션을 실행하기 위해 가상 환경이 이용될 때, 매우 넓고 풍부한 집합의 구성 요소들이 컨텍스트들 간에서 달라질 수 있다.
애플리케이션(102)은 임의의 유형의 실행가능한 프로그램, 또는 컴퓨팅 환경 내에서 수행되는 프로그램, 서비스 또는 기타 동작들의 집합일 수 있다. 많은 경우들에서, 애플리케이션은 스크립트, 서브루틴, 라이브러리 또는 기타 컴포넌트와 같이, 운영 체제 환경 내에서 직접 실행될 수 있거나 애플리케이션 환경 내에서 실행될 수 있는 파일들과 같은 실행가능한 요소들의 컬렉션을 가질 수 있다.
많은 애플리케이션(102)이 다른 애플리케이션 또는 서비스와 함께 동작할 수 있다. 예를 들어, 애플리케이션(102)은 인터넷을 통해 액세스되는 웹 서비스와 함께 동작할 수 있다. 그러한 예에서, 애플리케이션은 소정의 동작들을 수행할 수 있으며, 웹 서비스는 사용자 경험을 배달(deliver)하기 위해 다른 동작들을 수행할 수 있다.
다른 예에서, 애플리케이션(102)은 단독으로, 또는 제1 애플리케이션에 "플러그 인"되거나 또는 적어도 부분적으로 통합되는 다른 애플리케이션과 함께 동작가능할 수 있다. 툴바, 메뉴 항목들, 또는 문서 게시 애플리케이션(document publishing application)이 동작가능한 경우에는 그 문서 게시 애플리케이션으로의 기타 링크를 디스플레이할 수 있는 워드 프로세싱 프로그램과 같은 애플리케이션을 예로 들 수 있다. 문서 게시 애플리케이션이 이용가능하지 않은 경우, 워드 프로세싱 애플리케이션은 한 사용자 인터페이스를 가질 수 있지만, 문서 게시 애플리케이션이 이용가능한 경우에 이용가능한 제2 사용자 인터페이스 및 제2 기능 집합을 가질 수 있다.
그러한 예에서, 애플리케이션(102)은 단독으로 동작할 때의 상태 또는 컨텍스트에 대해 정의된 한 구성(104), 및 제2 애플리케이션과 함께 동작할 때의 제2 상태 또는 컨텍스트에 대해 정의된 제2 구성(104)을 가질 수 있다. 각각의 구성(104)은 정책들(110)의 집합과 함께 변경 모니터링 시스템(108)을 이용하여 별도로 정의 및 관리될 수 있다.
변경 모니터링 시스템(108)은 애플리케이션 구성(104)에의 변경들을 검출 및 저장할 수 있다. 변경 모니터링 시스템(108)은 변경을 검출하고, 변경을 분류하며, 애플리케이션(102)이 실행되고 있거나 장래에 실행될 하나 이상의 컨텍스트에, 그 변경이 적용될 수 있는지를 결정한다. 변경 및 컨텍스트들이 어떻게 분류되는지, 및 변경들이 어떻게 디스포지션되는지에 관한 정의는 정책들(110) 내에 정의될 수 있다.
실시예(100)는 별개의 애플리케이션(102) 및 구성들(104)의 집합을 도시하고 있다. 일부 실시예들에서, 구성들(104)은 애플리케이션(102) 내에서 정의될 수 있는 디폴트 구성들의 최상단에 구현될 수 있는 파일들 또는 세팅들의 집합으로서 저장될 수 있다. 그러한 실시예들에서, 구성들(104)은 "델타" 파일, 또는 디폴트로부터의 변경들의 그룹으로서 보여질 수 있다.
다른 실시예들에서, 애플리케이션은 구성들(104) 중 하나를 포함하는 패키지로서 정의될 수 있다. 각 구성에 대하여 상이한 애플리케이션 패키지가 생성될 수 있다. 그러한 실시예들은, 구성 내의 세팅들이 침습적(pervasive)인 경우, 또는 애플리케이션이 시작될 때 구성 변경들이 사용되는 경우에서 사용될 수 있다. 그러한 구성 변경들의 예는 초기 시동 동안 애플리케이션에 의해 사용되는 옵션들을 정의하는 레지스트리 세팅일 수 있다.
실행 시스템(106)은 애플리케이션(102)을 실행할 수 있는 임의의 환경, 워크스페이스 또는 메커니즘일 수 있다. 일부 실시예들에서, 실행 시스템(106)은 예를 들어 변경 모니터링 시스템(108)을 포함하는 많은 다른 애플리케이션들 및 서비스들이 동작하는 운영 체제 환경일 수 있다. 일부 실시예들에서, 실행 시스템(106)은 가상 머신 또는 가상 애플리케이션 환경과 같은 가상 환경일 수 있다. 또 다른 실시예에서, 실행 시스템(106)은 애플리케이션(102)을 실행하는 별도의 하드웨어 플랫폼일 수 있다.
실시예(100)의 아키텍처는 임의의 유형의 컴퓨팅 아키텍처일 수 있다. 일부 실시예들에서, 실시예(100)에 도시된 컴포넌트들 중 다수는 개인용 컴퓨터 또는 서버 컴퓨터와 같은 단일 하드웨어 플랫폼 상에서 실행될 수 있다. 다른 실시예들에서, 컴포넌트들 중 일부는 한 하드웨어 플랫폼에서 수행될 수 있는 한편, 다른 컴포넌트들은 별도의 하드웨어 플랫폼에서 수행될 수 있다. 일부 그러한 실시예들은 실시예(100)를 구현하기 위해 많은 상이한 하드웨어 플랫폼들을 이용할 수 있다. 그러한 실시예들은 크로스 머신 구성(cross machine configuration)이라고 칭해질 수 있다.
일부 크로스 머신 구성들에서, 실시예(100)의 컴포넌트들 중 일부는 가상 머신으로서 구현되거나 가상 애플리케이션 환경 내에서 동작될 수 있다. 가상 머신은 하드웨어 플랫폼의 소프트웨어 시뮬레이션일 수 있으며, 운영 체제를 포함할 수 있고, 마치 그 가상 머신이 별도의 전용 하드웨어 플랫폼인 것처럼 기능할 수 있다.
애플리케이션 가상화는 모든 공유되는 자원들의 애플리케이션별 사본들을 생성할 수 있다. 각각의 애플리케이션은 레지스트리 엔트리, DLL, 및 애플리케이션과 함께 패키징될 수 있는 다른 개체들과 같이, 잠재적으로 공유되는 자원들의 별도의 구성을 가질 수 있다. 패키지는 캐시 내에서 실행되어 가상 애플리케이션을 생성할 수 있다. 가상 애플리케이션이 배치되는 경우, 그것은 이러한 공유되는 자원들의 자기 자신만의 사본을 이용할 수 있다.
컨텍스트 관리자(112)는 애플리케이션이 동작하고 있거나 장래에 동작할 컨텍스트를 결정할 수 있다. 컨텍스트 관리자(112)는 애플리케이션(102)에 대해 이용가능할 수 있는 많은 상이한 자원들의 존재, 구성 및 기타 매개변수들을 모니터링할 수 있다. 컨텍스트 관리자(112)는 구성들을 적절하게 저장하기 위해 변경 모니터링 시스템(108)에 의해 사용될 수 있는, 애플리케이션을 위한 상태를 결정할 수 있다. 컨텍스트 관리자(112)는 또한 상태 또는 컨텍스트에 기초하여 다양한 구성들(104) 간에서 선택할 수 있는, 애플리케이션 런처(application launcher)(126)를 위한 상태를 정의할 수 있다.
컨텍스트 관리자(112)는 시스템의 다양한 패싯(facet)들을 연속적으로 모니터링하는 애플리케이션 또는 서비스일 수 있다. 일부 경우들에서, 그러한 컨텍스트 관리자(112)는 단일의 하드웨어 플랫폼 상에서 동작할 수 있고, 다양한 컨디션들을 모니터링할 수 있다. 하드웨어 플랫폼은 애플리케이션(102)이 실행될 수 있는 것과 동일한 하드웨어 플랫폼일 수 있다. 다른 실시예들에서, 컨텍스트 관리자(112)는 애플리케이션(102)이 실행되는 하드웨어 플랫폼으로부터 원격으로 동작하는 서비스일 수 있다.
컨텍스트 관리자(112)는 애플리케이션이 동작하고 있거나 장래에 동작할 상태에 관한 다양한 정보, 메타데이터 및 매개변수들을 수집할 수 있다. 컨텍스트 관리자(112)는 상이한 방식들로 구성들을 다루기 위해 정책들(110) 내에서 사용될 수 있는 임의의 적절한 정보를 수집할 수 있다. 상이한 실시예들은 현재 상태를 결정하기 위해 상이한 집합들의 정보 및 메타데이터를 수집할 수 있다.
컨텍스트 메타데이터의 예들은 어떤 가상 애플리케이션(114)이 존재하거나 존재하지 않는지, 다양한 가상 머신들(116)의 존재, 운영 체제(118)의 존재 및 구성, 다양한 기타 애플리케이션들(120)의 존재 및 구성, 및 네트워크 서비스들(122)과, 기타 상태 정보(124)를 포함할 수 있다. 기타 상태 정보는 애플리케이션이 동작되는 세션, 사용자들 또는 장치들의 그룹 내의 구성원자격, 또는 기타 매개변수들일 수 있다.
기타 상태 정보(124)는 세션에 관한 메타데이터를 포함할 수 있는, 세션에 관한 정보를 포함할 수 있다. 예를 들어, 상태 정보(124)는 둘 이상의 특정한 장치 또는 사용자를 접속하는 세션, 또는 둘 이상의 범용 장치 또는 사용자를 접속하는 세션일 수 있는 세션의 유형을 포함할 수 있다. 세션 메타데이터는 또한 세션 내에서 사용되는 프로토콜, 또는 세션을 확립하기 위해 이용되는 어드레스 또는 포트와 같은 다양한 접속 매개변수들을 포함할 수 있다. 일부 실시예들에서, 애플리케이션은 다른 애플리케이션 또는 서비스들과 수개의 상이한 유형의 세션을 생성할 수 있으며, 그 세션들의 존재, 부재(absence) 또는 구성은 애플리케이션을 위한 컨텍스트의 부분으로서 정의될 수 있다.
다른 상호작용 컴포넌트들의 존재 및 구성은 애플리케이션을 위한 컨텍스트의 일부를 정의할 수 있다. 애플리케이션(102)은 상이한 용량(capacity)들로, 가상 애플리케이션들(114), 가상 머신들(116), 애플리케이션들(120) 및 네트워크 서비스들(122)과 상호작용할 수 있다. 일부 경우들에서, 애플리케이션의 성능 또는 동작은 애플리케이션(102) 외부의 다양한 상호작용 컴포넌트들의 존재, 부재 또는 구성에 의해 영향을 받을 수 있다.
애플리케이션이 상호작용할 수 있는 컴포넌트의 존재, 부재, 그리고 일부 경우에서는 그 컴포넌트의 구성은, 애플리케이션을 위한 새로운 상태를 정의할 수 있다. 예를 들어, 애플리케이션은 다른 애플리케이션들 또는 서비스들에 대해 사용자 인터페이스 컴포넌트들을 추가 또는 제거할 수 있다. 다른 애플리케이션이 존재하고 구성될 때, 제1 애플리케이션은 다른 애플리케이션에 의해 제공되는 기능성에 링크하거나 그것을 사용하는 사용자 인터페이스 컴포넌트들 또는 기능성의 소정 집합을 제공할 수 있다. 다른 애플리케이션이 존재하지 않거나 다르게 구성되는 경우, 제1 애플리케이션은 대안적인 사용자 인터페이스 또는 기능성을 제공할 수 있다.
애플리케이션이 상호작용하는 컴포넌트는 가상 컴포넌트일 수 있다. 일부 경우들에서, 애플리케이션은 실행 시스템(106)을 이용하여 가상으로 실행될 수 있는 한편, 다른 애플리케이션도 가상으로 실행될 수 있다. 애플리케이션들 둘다가 가상으로 실행되므로, 각각의 애플리케이션은 디폴트 구성으로 서로 상호작용할 필요없이 동작할 수 있다. 그러나, 애플리케이션들 둘다가 동작가능할 때, 각 애플리케이션은 각 애플리케이션 간에서 데이터, 컨트롤 또는 기타 신호들을 전달하도록 구성될 수 있다. 그러한 경우에서, 각각의 애플리케이션은 상호작용 포인트를 정의하는 지정된 구성(104)을 가질 수 있고, 애플리케이션들 둘다가 가상으로 따로따로 동작되는 경우에서조차도 상호작용이 발생하는 것을 가능하게 한다. 그러한 경우에서, 애플리케이션들 둘다는, 그 애플리케이션들이 상호작용할 수 있도록, 적절한 구성을 가지고서 동시에 또는 순차적으로 런칭될 수 있다.
가상 컴포넌트들은 애플리케이션(102)과 동일한 운영 체제 내에서 설치되어 동작하는 컴포넌트들과는 다른 구성 옵션들을 제공할 수 있다. 일반적으로, 가상 컴포넌트들은 다른 컴포넌트들이 모르게(agnostically) 동작할 수 있으며, 전통적인 운영 체제 환경 또는 다른 가상 환경을 포함하는 별도의 환경들 내의 다른 애플리케이션들과 상호작용하기 위한 특정한 방식으로 구성될 수 있다.
컨텍스트는 운영 체제(118)의 다양한 매개변수 또는 구성을 포함할 수 있다. 예를 들어, 컨텍스트는 운영 체제의 유형, 특정 버전, 및 네이티브(native) 운영 체제에 관한 기타 매개변수들과 같은, 운영 체제에 관한 일반적인 정보를 포함할 수 있다. 컨텍스트는 또한 레지스트리 세팅, DLL과 같은 파일들의 존재 및 구성, 다양한 하드웨어 주변 장치 및 인터페이스에 액세스하기 위해 운영 체제에 의해 이용되는 세팅들, 및 임의의 다른 유형의 매개변수와 같은 운영 체제 환경에 대한 추가 또는 변경을 포함할 수 있다.
일부 실시예들에서, 구성(104)은 애플리케이션이 런칭될 때 적용될 수 있다. 일부 실시예들은 또한 애플리케이션이 실행을 시작한 후에, 구성(104)이 애플리케이션(102)에 적용될 수 있게 할 수 있다.
일부 실시예들은, 일부 구성들(104)은 실행을 시작한 후에 적용될 수 있게 하는 한편, 다른 구성들(104)은 애플리케이션이 시작할 때만 적용될 수 있게 할 수 있다. 그러한 실시예들에서, 애플리케이션(102)의 단일 인스턴스에 둘 이상의 구성(104)이 적용될 수 있다. 예를 들어, 애플리케이션에 대하여 회사 차원(company-wide)의 디폴트 세팅들을 설정하는 회사 차원 구성이 정의될 수 있다. 사용자의 개인적 기본설정에 대해 회사 차원의 구성을 더 조정할 수 있거나 조정할 수 없는 사용자별 세팅들을 포함하는 제2 구성이 적용될 수 있다.
다른 예에서, 애플리케이션(102)은 수개의 다른 애플리케이션들 또는 네트워크 서비스들과 상호작용할 수 있다. 애플리케이션(102)이 시작될 때, 각각 별도의 애플리케이션 또는 서비스가 액세스될 수 있게 하는 많은 상이한 구성들(104)이 적용될 수 있도록, 각각의 네트워크 서비스 또는 애플리케이션은 별도의 구성(104) 내에서 정의될 수 있다.
애플리케이션(102)은 LAN(local area network), WAN(wide area network), 또는 인터넷을 포함하는 임의의 다른 네트워크를 통해 이용가능할 수 있는 다양한 네트워크 서비스들(122)과 상호작용할 수 있다. 많은 경우들에서, 웹 서비스는 질의들 및 기타 동작들이나 서비스들에 응답하여 데이터를 제공하기 위해 이용될 수 있다. 구성(104)은 웹 서비스 또는 기타 네트워크 서비스(122)가 존재할 때 애플리케이션(102)을 실행하기 위해 정의될 수 있다. 그러한 구성은 포트, 프로토콜, 어드레스 및 기타 통신 구성 정보를 포함할 수 있고, 또한 애플리케이션(102)을 통해 이용가능하도록 특정 기능성을 구성할 수 있다.
구성(104)은 네트워크 서비스(122)가 일부 인스턴스들에서 액세스될 수 있게 할 수 있는 사용자 인터페이스 컴포넌트, 링크 또는 기타 구성가능 항목들을 포함할 수 있다.
예를 들어, 워드 프로세싱 프로그램은 네트워크 서비스(122)로서 제공되는 동의어 사전 서비스를 이용할 수 있다. 동의어 사전 서비스가 이용가능할 때, 워드 프로세싱 프로그램은 동의어 사전 서비스를 액세스하기 위한 메뉴 셀렉션과 같이, 사용자 인터페이스 내에 동의어 사전 서비스로의 링크를 가질 수 있다. 동의어 사전 서비스가 선택되면, 질의가 네트워크 서비스로 보내질 수 있고, 응답이 수신될 수 있다. 응답은 마치 동의어 사전 서비스가 워드 프로세싱 프로그램의 일부인 것처럼, 워드 프로세싱 프로그램 내에 디스플레이될 수 있다. 그러한 경우에서, 사용자는 네트워크 서비스가 호출되었음을 인식하지 못할 수 있다. 동의어 사전 서비스가 이용가능하지 않은 경우, 구성(104)은 로컬 버전을 대체할 수 있거나, 또는 동의어 사전 기능을 비활성으로 하거나 안 보이게 하거나 다르게 액세스불가능하게 할 수 있다.
컨텍스트 관리자(112)는 애플리케이션이 현재 동작하고 있거나 동작하려고 의도하는 컨텍스트를 정의할 수 있다. 컨텍스트는 애플리케이션 런처(126)가 애플리케이션(102)을 시작할 때 리콜될 수 있는 특정 구성(104)을 생성하기 위해 정책들(110)과 함께 이용될 수 있다. 컨텍스트 관리자(112)는 또한 적절한 구성(104) 또는 구성들(104)의 그룹을 선택하기 위해 애플리케이션 런처(126)에 의해 이용될 수 있는 현재 컨텍스트를 검출할 수 있다.
애플리케이션이 실행하는 컨텍스트는 정책들(110)에 의해 정의될 수 있다. 컨텍스트는 상태의 유형 또는 분류일 수 있다. 많은 경우들에서, 상태는 수개의 컨텍스트를 가질 수 있다. 예를 들어, 애플리케이션(102)은 가상 머신(116) 상에서 동작하는 다른 애플리케이션과 상호작용할 수 있고, 또한 네트워크 서비스(122)와도 상호작용할 수 있다. 가상 머신(116)의 존재는 가상 머신 컨텍스트를 정의할 수 있고, 네트워크 서비스의 존재는 네트워크 가능 컨텍스트(network enabled context)를 정의할 수 있다. 일부 경우들에서, 둘 이상의 상이한 컨텍스트들이 적용될 수 있다.
복수의 구성(104)이 애플리케이션(102)의 단일 인스턴스에 적용될 수 있는 경우, 특정 인스턴스에 대하여 복수의 독립적인 컨텍스트가 정의될 수 있다. 위의 예에서, 가상 머신 컨텍스트와 네트워크 가능 컨텍스트는 별도로, 그리고 독립적으로 정의될 수 있다.
단일 구성(104)이 애플리케이션(102)의 인스턴스에 적용될 수 있을 때, 수개의 상이한 인자들의 결합인 컨텍스트가 정의될 수 있다. 위의 예에서, 가상 머신 및 네트워크 가능 서비스를 포함하는 단일 컨텍스트가 정의될 수 있으며, 단일 구성(104)이 생성될 수 있다. 네트워크 가능 서비스를 갖지 않는 가상 머신과, 가상 머신을 갖지 않는 네트워크 가능 서비스에 대하여, 별도의 구성들이 생성될 수 있다.
정책들(110)은 컨텍스트의 유형, 및 애플리케이션 구성에 대한 변경들이 컨텍스트에 기초하여 어떻게 다루어질 것인지를 정의할 수 있다. 예를 들어, 일부 변경들은 폐기될 수 있는 한편, 다른 유형의 변경들은 저장될 수 있다. 복수의 독립적인 구성이 이용되는 경우, 정책은 한 유형의 변경이 한 컨텍스트에서는 저장되고 다른 컨텍스트에서는 저장되지 않도록 정의할 수 있다.
도 2는 컨텍스트 종속적인 구성들로 동작하기 위한 방법을 도시한 실시예(200)의 흐름도이다. 실시예(200)는 애플리케이션 런처(126), 컨텍스트 관리자(112), 변경 모니터링 시스템(108) 및 실행 시스템(106)을 포함하는 실시예(100)의 컴포넌트들에 의해 수행될 수 있는 다양한 동작들의 예이다.
다른 실시예들은 유사한 기능들을 달성하기 위해, 상이한 순서의, 더 많거나 더 적은 단계들과, 상이한 명명법 또는 용어를 이용할 수 있다. 일부 실시예들에서, 다양한 동작들 또는 동작들의 집합은 동기적인 방식이나 비동기적인 방식으로, 다른 동작들과 병렬로 수행될 수 있다. 여기에서 선택된 단계들은 일부의 동작 원리들을 간략한 형태로 설명하기 위해 선택된 것이다.
실시예(200)는 애플리케이션을 런칭하고, 애플리케이션의 구성에 대한 변경을 검출하고, 추후의 재사용을 위하여 변경들을 구성 저장소에 저장하는 방법을 예시한 것이다.
블록(202)에서, 애플리케이션을 런칭하기 위해 커맨드가 수신될 수 있다. 많은 경우들에서, 커맨드는 아이콘을 선택하는 것 또는 커맨드 라인에 커맨드를 입력하는 것과 같은 사용자 입력에 의해 개시될 수 있다. 다른 경우들에서, 애플리케이션을 런칭하기 위한 커맨드는 네트워크 서비스를 포함하여 다른 애플리케이션 또는 서비스에 의해 개시될 수 있다.
블록(204)에서, 애플리케이션을 위한 컨텍스트가 결정될 수 있다. 컨텍스트는 정책 내에서 정의될 수 있으며, 애플리케이션에 대한 구성 매개변수들의 집합들이 특정 컨텍스트들에 대하여 생성될 수 있다. 컨텍스트는 임의의 방식으로 결정될 수 있다. 일부 실시예들에서, 현재의 또는 의도되는 컨텍스트를 결정하기 위해, 실시예(100)의 컨텍스트 관리자(112)와 같은 컨텍스트 관리자가 이용될 수 있다.
컨텍스트는 현재의 컨텍스트 또는 의도되는 컨텍스트일 수 있다. 현재의 컨텍스트는 애플리케이션이 상호작용할 수 있는 다양한 매개변수들, 시스템들 및 서비스들의 현재 상태를 감지함으로써 결정될 수 있다. 의도되는 컨텍스트는 애플리케이션이 실행중일 때 존재할 수 있는 컨텍스트일 수 있다.
의도되는 컨텍스트는 서로 상호작용할 수 있는 수개의 애플리케이션이 연속적으로, 또는 실질적으로 동시에 런칭될 때 사용될 수 있다. 런칭되는 애플리케이션들의 그룹 내의 각 애플리케이션은 다른 애플리케이션들과 함께 동작하도록 구성될 수 있지만, 그러한 컨텍스트는 애플리케이션들 모두가 시작되었고 서로와 접속을 이루었을 때 존재할 수 있다.
블록(206)에서 컨텍스트에 대해 정의된 구성이 존재하지 않을 때, 블록(208)에서 디폴트 구성이 선택될 수 있다. 블록(206)에서 컨텍스트에 대해 구성이 정의된 경우, 그 구성이 블록(210)에서 로딩될 수 있다.
일부 실시예들에서, 컨텍스트에 기초하여 둘 이상의 구성이 로딩되어 적용될 수 있다. 그러한 실시예들에서, 다양한 구성들이 연속으로 적용될 수 있으며, 적용되는 마지막 구성이 이전 구성의 세팅을 덮어쓸 수 있다.
일부 실시예들은, 둘 이상의 구성이 매개변수를 설정할 때, 어느 구성의 어느 매개변수들이 적용될 수 있을지를 결정하기 위해 우선순위 체계를 적용할 수 있다. 연속 우선순위 체계(succession priority scheme)에서, 적용되는 마지막 구성이 우세할 수 있다. 그러나, 다른 체계들에서는, 상이한 메트릭 또는 규칙들이 적용될 수 있다. 그러한 규칙들은 정책들의 집합 내에서 정의될 수 있다.
구성들이 정의되고 나면, 블록(212)에서 구성들을 이용하여 애플리케이션이 실행될 수 있다.
복수의 구성이 이용되는 많은 실시예들에서, 애플리케이션은 전용 가상 머신과 같은 가상 환경 내에서, 또는 애플리케이션 가상화 환경 내에서 실행될 수 있다. 애플리케이션을 가상화함으로써, 애플리케이션이 전통적인 운영 체제 환경 내에서 많은 다른 애플리케이션과 함께 동작하는 경우보다 더 쉽게, 많은 세팅들이 변경 또는 구성될 수 있다. 예를 들어, 가상 환경은 그렇지 않았더라면 다른 애플리케이션과 공유되었을 수 있는 레지스트리 세팅 또는 DLL이 가상 애플리케이션을 위해 변경될 수 있게 할 수 있다.
블록(214)에서 변경이 검출되는 경우, 애플리케이션의 컨텍스트에 기초하여 구성 세팅을 생성 또는 수정하기 위해, 프로세스가 시작할 수 있다.
블록(216)에서 컨텍스트가 분류될 수 있다. 일부 실시예들에서, 특정 인스턴스가 수개의 상이한 컨텍스트를 포함할 수 있으며, 그러한 컨텍스트들 각각은 다른 컨텍스트들로부터 독립적일 수 있는 하나 또는 적은 수의 매개변수를 갖는다. 다른 실시예들에서, 많은 상이한 매개변수들 또는 디스크립터를 포함할 수 있는 임의의 상황에 대해 단일 컨텍스트가 정의될 수 있다. 정책들의 집합은 컨텍스트들을 정의할 수 있다.
블록(218)에서 변경은 유형에 의해 분류될 수 있다. 변경이 적절하게 디스포지션될 수 있도록, 변경 유형은 정책 내에 정의된 대로의 변경의 일반적인 분류일 수 있다.
블록(220)에서의 각각의 컨텍스트 분류에 대하여, 변경은 후속하는 블록들에서 디스포지션될 수 있다. 실시예(200)는 특정 상황에 대하여 둘 이상의 컨텍스트가 존재할 수 있는 실시예이다. 다른 실시예들에서, 단일 컨텍스트가 정의될 수 있고, 블록(220)의 for-루프는 컨텍스트에 대해 1회 수행될 수 있다.
정책이 블록(222)에서 변경의 유형이 어떻게 다루어져야 하는지를 규정하지 않는 경우, 블록(224)에서 디폴트 정책이 적용될 수 있다. 그렇지 않은 경우, 현재의 정책이 적용될 수 있다.
현재의 정책 또는 디폴트 정책은 블록(226)에서 변경이 저장되어야 하는지 무시되어야 하는지를 기술할 수 있다. 블록(226)에서 변경이 무시되어야 하는 경우, 변경은 블록(230)에서 저장되지 않을 수 있다. 블록(226)에서 변경이 저장되어야 하는 경우, 블록(228)에서 컨텍스트에 대하여 구성이 업데이트될 수 있다.
프로세스는 다음의 컨텍스트가 있다면 그것을 위하여 블록(220)에서 계속될 수 있다. 컨텍스트들 각각이 블록(220)에서 처리된 때, 프로세스는 애플리케이션의 추가의 실행을 위해 블록(212)으로 되돌아갈 수 있다.
실시예(200)는 컨텍스트를 결정하고 그 컨텍스트에 기초하여 애플리케이션에 대한 변경을 저장할 수 있는 프로세스의 예이다. 애플리케이션이 동일한 컨텍스트에서 재시작될 때, 구성이 리콜될 수 있고, 애플리케이션은 변경에 순응하여 행동할 수 있다.
발명의 주제에 대한 상기의 설명은 예시 및 설명을 위해 제시된 것이다. 이것은 모든 것을 빠짐없이 나열하거나, 발명의 주제를 개시된 정확한 형태로 제한하도록 의도된 것이 아니며, 상기의 교시를 고려하여 다른 수정들 및 변형들이 가능할 수 있다. 본 발명의 원리들 및 그것의 실제 응용을 가장 잘 설명하여, 본 기술분야에 지식을 가진 자들이 본 발명을 예상되는 특정 용도에 적합한 다양한 실시예들 및 다양한 수정들에서 가장 잘 이용하게 하도록 실시예가 선택되어 설명된다. 첨부된 청구항들은 종래 기술에 의해 한정되는 것을 제외하고는 다른 대안적인 실시예들을 포함하는 것으로 해석되도록 의도된다.

Claims (20)

  1. 제1 장치 상에서, 제1 애플리케이션 구성 및 제1 상태를 갖는 애플리케이션을 실행하는 단계;
    상기 제1 애플리케이션 구성에 대한 변경을 검출하는 단계;
    상기 검출된 변경에 대한 애플리케이션 컨텍스트를 결정하는 단계;
    정책에 의해 상기 변경이 저장되어야 하는지 여부를 결정하기 위해, 상기 애플리케이션 컨텍스트에 대해 정의된 상기 정책을 참조하는 단계; 및
    상기 변경이 저장되어야 하는 경우, 상기 애플리케이션 컨텍스트에 대한 상기 제1 애플리케이션 구성을 갱신하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 애플리케이션 컨텍스트는 세션 특정 컨텍스트(session specific context)를 포함하는 방법.
  3. 제1항에 있어서,
    상기 애플리케이션 컨텍스트는 크로스 머신 컨텍스트(cross machine context)를 포함하는 방법.
  4. 제3항에 있어서,
    상기 크로스 머신 컨텍스트는 적어도 하나의 가상 머신을 포함하는 방법.
  5. 제1항에 있어서,
    상기 애플리케이션은 복수의 자원을 포함하고, 상기 변경은 상기 복수의 자원 중 적어도 하나에 영향을 주는 방법.
  6. 제5항에 있어서,
    상기 복수의 자원 중 하나는 제2 애플리케이션인 방법.
  7. 제5항에 있어서,
    상기 애플리케이션은 제1 하드웨어 플랫폼 상에서 실행되고, 상기 복수의 자원 중 하나는 제2 하드웨어 플랫폼 상에서 실행되는 방법.
  8. 제5항에 있어서,
    상기 애플리케이션은 제1 가상 컨텍스트에서 실행되는 방법.
  9. 제8항에 있어서,
    상기 복수의 자원 중 적어도 하나는 제2 가상 컨텍스트 내에 있는 방법.
  10. 제9항에 있어서,
    상기 제1 가상 컨텍스트는 애플리케이션 가상화 컨텍스트(application virtualization context)인 방법.
  11. 제10항에 있어서,
    상기 제2 가상 컨텍스트는 애플리케이션 가상화 컨텍스트인 방법.
  12. 제10항에 있어서,
    상기 제2 가상 컨텍스트는 가상 머신 컨텍스트인 방법.
  13. 제8항에 있어서,
    상기 제1 가상 컨텍스트는 제1 가상 머신 컨텍스트인 방법.
  14. 제1항에 있어서,
    상기 애플리케이션을 시작하는 단계;
    상기 애플리케이션에 대한 현재 컨텍스트를 결정하는 단계;
    상기 현재 컨텍스트에 대해 정의된 상기 정책을 참조하는 단계;
    상기 현재 컨텍스트가 상기 애플리케이션 컨텍스트를 포함한다고 결정하는 단계; 및
    상기 변경을 사용하여 상기 애플리케이션을 동작시키는 단계
    를 더 포함하는 방법.
  15. 제1항에 있어서,
    상기 애플리케이션을 시작하는 단계;
    상기 애플리케이션에 대한 현재 컨텍스트를 결정하는 단계;
    상기 현재 컨텍스트에 대해 정의된 상기 정책을 참조하는 단계;
    상기 현재 컨텍스트가 상기 애플리케이션 컨텍스트를 포함하지 않는다고 결정하는 단계; 및
    상기 변경 없이 상기 애플리케이션을 동작시키는 단계
    를 더 포함하는 방법.
  16. 복수의 컨텍스트 중 적어도 하나에 기초하는 변경 구현들(change implementations)을 포함하는 정책;
    상기 복수의 컨텍스트에서 제1 애플리케이션을 실행하도록 구성된 실행 시스템; 및
    변경 모니터링 시스템
    을 포함하고, 상기 변경 모니터링 시스템은,
    상기 제1 애플리케이션에 변경이 이루어졌음을 결정하고,
    상기 변경에 대한 적어도 하나의 컨텍스트를 결정하고,
    상기 적어도 하나의 컨텍스트가 현재의 컨텍스트일 때 상기 변경이 구현될 수 있도록 상기 변경을 저장하도록 구성된 시스템.
  17. 제16항에 있어서,
    상기 복수의 컨텍스트는,
    세션 특정 컨텍스트;
    세션 유형 특정 컨텍스트;
    크로스 머신 컨텍스트; 및
    듀얼 애플리케이션 컨텍스트
    를 포함하는 그룹 중 적어도 하나를 포함하는 시스템.
  18. 제16항에 있어서,
    상기 제1 애플리케이션은 복수의 자원을 구비하고,
    상기 복수의 자원은
    가상 애플리케이션 컨텍스트에서 동작하는 제2 애플리케이션;
    가상 머신 컨텍스트에서 동작하는 제2 애플리케이션; 및
    별도의 하드웨어 플랫폼에서 동작하는 제2 애플리케이션
    을 포함하는 그룹 중 적어도 하나를 포함하는
    시스템.
  19. 제1 상태를 정의하는 제1 구성을 갖는 애플리케이션을 제1 장치 상에서 이용가능하게 하는 단계;
    상기 애플리케이션에 대한 변경을 검출하는 단계 - 상기 변경은 제2 상태를 정의함 -;
    상기 제2 상태에 대한 컨텍스트들의 적어도 하나의 제1 세트를 결정하는 단계- 상기 컨텍스트들의 제1 세트는 사용자 컨텍스트 및 머신 컨텍스트 이외의 적어도 하나의 컨텍스트를 포함하고, 상기 컨텍스트들의 제1 세트는 적어도 하나의 가상 컨텍스트를 포함함-;
    상기 컨텍스트들의 제1 세트의 적어도 일부에 대해 정의된 정책을 참조하는 단계;
    상기 정책에서 정의된 상기 컨텍스트들의 제1 세트의 상기 적어도 일부에 기초하여 상기 변경을 저장하는 단계
    를 포함하는 방법.
  20. 제19항에 있어서,
    상기 적어도 하나의 가상 컨텍스트는
    가상 애플리케이션 컨텍스트; 및
    가상 머신 컨텍스트
    를 포함하는 그룹 중 적어도 하나를 포함하는
    방법.
KR1020117001567A 2008-07-28 2009-07-16 애플리케이션 변경들을 위한 상태 분리 KR101618901B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/181,315 US8024732B2 (en) 2008-07-28 2008-07-28 State separation for application changes
US12/181,315 2008-07-28

Publications (2)

Publication Number Publication Date
KR20110038048A KR20110038048A (ko) 2011-04-13
KR101618901B1 true KR101618901B1 (ko) 2016-05-09

Family

ID=41569680

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117001567A KR101618901B1 (ko) 2008-07-28 2009-07-16 애플리케이션 변경들을 위한 상태 분리

Country Status (10)

Country Link
US (4) US8024732B2 (ko)
EP (1) EP2321720B1 (ko)
JP (1) JP5588440B2 (ko)
KR (1) KR101618901B1 (ko)
CN (1) CN102105861B (ko)
AU (1) AU2009276851B2 (ko)
BR (1) BRPI0915636B1 (ko)
CA (2) CA2978284C (ko)
RU (1) RU2490695C2 (ko)
WO (1) WO2010014431A2 (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8225134B2 (en) * 2007-04-06 2012-07-17 Cisco Technology, Inc. Logical partitioning of a physical device
US8024732B2 (en) * 2008-07-28 2011-09-20 Microsoft Corporation State separation for application changes
US8429395B2 (en) 2009-06-12 2013-04-23 Microsoft Corporation Controlling access to software component state
US20110219365A1 (en) * 2010-03-05 2011-09-08 Microsoft Corporation High and low value application state
CN102238208A (zh) * 2010-04-29 2011-11-09 国际商业机器公司 用于激活虚拟方案中的虚拟机的方法和装置
US8484569B2 (en) 2010-06-30 2013-07-09 International Business Machines Corporation Saving and restoring collaborative applications in context
US9116728B2 (en) 2010-12-21 2015-08-25 Microsoft Technology Licensing, Llc Providing a persona-based application experience
US9176742B2 (en) * 2010-12-27 2015-11-03 Microsoft Technology Licensing, Llc Converting desktop applications to web applications
US8813167B2 (en) * 2010-12-30 2014-08-19 Apple Inc. Dynamic device configuration using predicates
KR101595527B1 (ko) * 2011-03-22 2016-02-22 한국전자통신연구원 넷스토어 기반의 서비스 네트워크 동적 구성 시스템 및 서비스 네트워크 동적 구성 방법
EP2726974A4 (en) * 2011-06-29 2015-03-04 Amazon Tech Inc SYNCHRONIZATION OF DATA LOCKER
US8663018B2 (en) 2011-06-29 2014-03-04 Amazon Technologies, Inc. Data locker synchronization
US20130091197A1 (en) 2011-10-11 2013-04-11 Microsoft Corporation Mobile device as a local server
US20130111372A1 (en) * 2011-10-31 2013-05-02 General Electric Company Preference management methods and apparatus
CN102520944B (zh) * 2011-12-06 2014-07-02 北京航空航天大学 Windows应用程序虚拟化的实现方法
WO2013103381A1 (en) 2012-01-06 2013-07-11 Ge Intelligent Platforms, Inc. Method and apparatus for network-based testing
US9092247B2 (en) * 2012-03-29 2015-07-28 Microsoft Technology Licensing, Llc Persistent and resilient worker processes
CN102929650A (zh) * 2012-07-11 2013-02-13 北京金山安全软件有限公司 一种应用程序运行环境独立配置的方法、装置及移动设备
US9589039B2 (en) * 2012-12-13 2017-03-07 Sybase, Inc. Synchronization of metadata in a multi-threaded system
US9413784B2 (en) * 2013-09-06 2016-08-09 Microsoft Technology Licensing, Llc World-driven access control
US9572104B2 (en) * 2015-02-25 2017-02-14 Microsoft Technology Licensing, Llc Dynamic adjustment of user experience based on system capabilities
US9734000B2 (en) 2015-06-18 2017-08-15 Microsoft Technology Licensing, Llc Seamless transitions between applications and devices
CN105677421B (zh) * 2016-01-06 2020-01-03 惠州Tcl移动通信有限公司 一种移动终端的桌面启动器的定制方法及系统
US11314546B2 (en) * 2016-11-18 2022-04-26 Data Accelerator Ltd Method and system for executing a containerized stateful application on a stateless computing platform using machine learning
CN111427594B (zh) * 2016-09-22 2024-04-09 华为技术有限公司 应用程序运行方法及装置
US10452410B2 (en) 2016-10-25 2019-10-22 International Business Machines Corporation Context aware user interface
CN106777266B (zh) * 2016-12-28 2020-05-15 重庆可兰达科技有限公司 一种基于预缓存提升客户端开屏展现率的方法
US10810009B2 (en) * 2017-07-14 2020-10-20 Microsoft Technology Licensing, Llc Visualizations of software project and contributor activity
JP7102756B2 (ja) * 2018-02-02 2022-07-20 富士フイルムビジネスイノベーション株式会社 情報処理装置及びプログラム
CN110727430B (zh) * 2019-09-30 2023-08-25 奇安信科技集团股份有限公司 由服务器执行的数据处理方法、装置、系统、介质
US11789712B2 (en) * 2021-09-06 2023-10-17 Jpmorgan Chase Bank, N.A. Data configuration deployment framework
US20240231843A1 (en) * 2023-01-05 2024-07-11 Dell Products L.P. Application performance on a containerized application management system cluster

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060036570A1 (en) 2004-08-03 2006-02-16 Softricity, Inc. System and method for controlling inter-application association through contextual policy control
JP2006209774A (ja) 2005-01-26 2006-08-10 Microsoft Corp コンテキストアウェアネスプラットフォームのためのシステムおよび方法
WO2007020735A1 (ja) 2005-08-18 2007-02-22 Matsushita Electric Industrial Co., Ltd. 競合解決装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63104144A (ja) * 1986-10-21 1988-05-09 Nec Corp 高速コンテクスト切替装置
JPH02173828A (ja) * 1988-12-27 1990-07-05 Nec Corp 割込み処理方式
US5212789A (en) * 1989-10-12 1993-05-18 Bell Communications Research, Inc. Method and apparatus for updating application databases used in a distributed transaction processing environment
DE69635409T2 (de) 1995-03-06 2006-07-27 Intel Corp., Santa Clara Ein rechnersystem mit unbewachter auf-anfrage-verfügbarkeit
US6249291B1 (en) 1995-09-22 2001-06-19 Next Software, Inc. Method and apparatus for managing internet transactions
TW444165B (en) * 1998-05-12 2001-07-01 Primax Electronics Ltd Hot plug and play universal serial bus switch device and control method
US6961681B1 (en) 2000-09-12 2005-11-01 Microsoft Corporation System and method providing virtual applications architecture
US7289102B2 (en) * 2000-07-17 2007-10-30 Microsoft Corporation Method and apparatus using multiple sensors in a device with a display
US20020087734A1 (en) * 2000-12-29 2002-07-04 Marshall Donald Brent System and method for managing dependencies in a component-based system
US7243267B2 (en) 2002-03-01 2007-07-10 Avaya Technology Llc Automatic failure detection and recovery of applications
US20040153973A1 (en) * 2002-11-21 2004-08-05 Lawrence Horwitz System and method for automatically storing and recalling application states based on application contexts
US7610473B2 (en) * 2003-08-28 2009-10-27 Mips Technologies, Inc. Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor
JP2005165847A (ja) 2003-12-04 2005-06-23 Fujitsu Ltd ポリシールールシナリオ制御装置及び制御方法
EP1562113B1 (en) * 2004-02-03 2018-05-23 Sap Se An application management system and a method of managing an application
US7606973B2 (en) 2004-09-08 2009-10-20 International Business Machines Corporation System and method for pervasive computing with a portable non-volatile memory device
KR100715846B1 (ko) * 2005-02-14 2007-05-10 삼성전기주식회사 퍼베이시브 환경에서 Subtyping 기반의 탄력적인서비스 구성을 이용하는 응용 프로그램 재구성 방법 및 그시스템
US20070033382A1 (en) * 2005-08-05 2007-02-08 International Business Machines Corporation Dynamic configuration of terminals for professional or customer usage
US7434218B2 (en) * 2005-08-15 2008-10-07 Microsoft Corporation Archiving data in a virtual application environment
US7716461B2 (en) 2006-01-12 2010-05-11 Microsoft Corporation Capturing and restoring application state after unexpected application shutdown
RU2295752C1 (ru) * 2006-03-20 2007-03-20 Закрытое акционерное общество "1С Акционерное общество" Способ управления синхронизацией обновлений программного обеспечения
US8001528B2 (en) 2006-03-30 2011-08-16 Microsoft Corporation Organization of application state and configuration settings
US20090204966A1 (en) * 2008-02-12 2009-08-13 Johnson Conrad J Utility for tasks to follow a user from device to device
US8024732B2 (en) * 2008-07-28 2011-09-20 Microsoft Corporation State separation for application changes
US8381222B2 (en) * 2009-04-01 2013-02-19 International Business Machines Corporation Policy driven automation—specifying equivalent resources

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060036570A1 (en) 2004-08-03 2006-02-16 Softricity, Inc. System and method for controlling inter-application association through contextual policy control
JP2006209774A (ja) 2005-01-26 2006-08-10 Microsoft Corp コンテキストアウェアネスプラットフォームのためのシステムおよび方法
WO2007020735A1 (ja) 2005-08-18 2007-02-22 Matsushita Electric Industrial Co., Ltd. 競合解決装置

Also Published As

Publication number Publication date
WO2010014431A2 (en) 2010-02-04
CA2978284A1 (en) 2010-02-04
CN102105861B (zh) 2016-05-04
CA2728817C (en) 2020-03-10
RU2011103058A (ru) 2012-08-10
CA2728817A1 (en) 2010-02-04
EP2321720B1 (en) 2019-06-26
US8984512B2 (en) 2015-03-17
US8458701B2 (en) 2013-06-04
US20130263134A1 (en) 2013-10-03
US20150186164A1 (en) 2015-07-02
JP5588440B2 (ja) 2014-09-10
US20110302581A1 (en) 2011-12-08
JP2011529607A (ja) 2011-12-08
CN102105861A (zh) 2011-06-22
KR20110038048A (ko) 2011-04-13
AU2009276851A1 (en) 2010-02-04
US9304791B2 (en) 2016-04-05
EP2321720A4 (en) 2011-10-26
CA2978284C (en) 2020-01-28
BRPI0915636B1 (pt) 2020-09-15
RU2490695C2 (ru) 2013-08-20
WO2010014431A3 (en) 2010-04-01
AU2009276851B2 (en) 2014-06-26
US8024732B2 (en) 2011-09-20
EP2321720A2 (en) 2011-05-18
US20100023738A1 (en) 2010-01-28

Similar Documents

Publication Publication Date Title
KR101618901B1 (ko) 애플리케이션 변경들을 위한 상태 분리
US10853047B2 (en) Method for virtualizing software applications
US9880889B2 (en) Virtual application extension points
US8510734B2 (en) Streaming optimized virtual application images
KR101836058B1 (ko) 가상화를 위한 확장 포인트 선언적 등록
JP2011529606A (ja) カスタマイズを伴うコンピュータアプリケーションパッケージ
US11775475B2 (en) Deferred path resolution during container deployment
US9846582B2 (en) Operating system hardware configuration state specialization
US9804789B2 (en) Methods and apparatus to apply a modularized virtualization topology using virtual hard disks

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
FPAY Annual fee payment

Payment date: 20190328

Year of fee payment: 4