KR20140027341A - 애플리케이션 활성화 프레임워크 - Google Patents

애플리케이션 활성화 프레임워크 Download PDF

Info

Publication number
KR20140027341A
KR20140027341A KR1020137031388A KR20137031388A KR20140027341A KR 20140027341 A KR20140027341 A KR 20140027341A KR 1020137031388 A KR1020137031388 A KR 1020137031388A KR 20137031388 A KR20137031388 A KR 20137031388A KR 20140027341 A KR20140027341 A KR 20140027341A
Authority
KR
South Korea
Prior art keywords
application
contract
extensible
point
implemented method
Prior art date
Application number
KR1020137031388A
Other languages
English (en)
Other versions
KR101819266B1 (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 KR20140027341A publication Critical patent/KR20140027341A/ko
Application granted granted Critical
Publication of KR101819266B1 publication Critical patent/KR101819266B1/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
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

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)
  • Telephonic Communication Services (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

본 명세서에는 애플리케이션 활성화를 위한 기술이 개시되었다. 운영 시스템(OS)은 확장가능한 기능의 개별적인 동작을 정의하는 계약을 통해 서비스 가능한 다양한 확장가능점을 포함하도록 구성될 수 있다. 확장가능한 기능은 OS의 일부로서 통합되어 중심화된 방식으로 OS에 의해 제어된다. 그러나, 확장가능한 기능의 특정한 구현은 계약을 이용하여 애플리케이션에 분담된다. 예를 들어, OS는 특정한 계약을 수행하도록 애플리케이션을 불러오기 위해서 객체 지향적 접근법을 사용하는 중심화된 애플리케이션 구성요소를 포함하거나 또는 다른 식으로 사용할 수 있다. 애플리케이션 활성화 구성요소는 지정된 애플리케이션을 활성화하도록 특정한 계약을 기술하는 정보를 전달할 수 있고 애플리케이션이 OS에 의해 명시된 방식으로 계약을 서비스하게 할 수 있다. 이러한 방식으로, 계약이 애플리케이션 코드에 의해 조정되는 방식은 중심화된 애플리케이션 활성화 구성요소를 통해 관리 및 조직화될 수 있다.

Description

애플리케이션 활성화 프레임워크{APPLICATION ACTIVATION FRAMEWORK}
통상적으로, 특정한 컴퓨터 시스템을 위한 애플리케이션은 매우 자율적이다. 애플리케이션이 일부 운영 시스템 기능을 이용할 수 있고 사용자에 대한 특정 업무를 수행하기 위해 운영 시스템에 의해 시작될 수 있음에도, 운영 시스템은 애플리케이션이 기능을 구현하거나 업무를 수행하는 방식에 대한 제어를 거의 또는 아예 갖지 않는다. 또한, 서로 다른 애플리케이션들, 특히 서로 다른 런타임(runtime) 플랫폼과 연관된 애플리케이션은 윈도우 생성, 레이아웃 및 순서화, 색상 계획, 폰트 등과 같은 측면들을 개별적으로 제어할 수 있다. 따라서, 종래의 애플리케이션 구현에 대한 조직화되지 않은 접근법은 사용자가 운영 시스템과 연관된 완전히 긍정적인 사용자 경험을 갖는 것을 저해할 수 있는, 일관성 없는 "룩앤드필(look and feel)"을 생성할 수 있다.
본 명세서에는 애플리케이션 활성화를 위한 기술이 개시되었다. 운영 시스템(OS)은 연관된 계약(예컨대, 확장가능점(extension point)에 의해 나타내어지는 기능의 구현을 좌우하는 사양)을 통해 서비스 가능한 다양한 확장가능점을 포함하도록 구성될 수 있다. 확장가능한 측면은 OS의 통합된 기능으로서 정의되고 중심화된 방식으로 OS에 의해 제어된다. 그러나, 확장가능한 기능의 특정한 구현은 계약을 이용하여 애플리케이션에 분담될 수 있다. 예를 들어, OS는 특정한 계약을 수행하도록 애플리케이션을 불러오기(invoke) 위해 객체 지향적 접근법을 사용하는 중심화된 애플리케이션 활성화 구성요소를 포함하거나 다른 식으로 이용할 수 있다. 활성화 동안 OS는 지정된 애플리케이션을 활성화하도록 특정한 계약과 관련된 정보(예컨대, 계약 객체 또는 다른 적절한 데이터)를 전달할 수 있고 애플리케이션이 OS에 의해 명시된 방식으로 계약을 서비스할 수 있게 한다. 이러한 방식으로, 계약이 애플리케이션 코드에 의해 조정되는 방식은 서로 다른 애플리케이션 및 런타임 플랫폼을 지원하는 중심화된 애플리케이션 활성화 구성요소를 통해 관리 및 조직화될 수 있다. 일 접근법에서, 런타임 플랫폼은 OS로부터 제공된 계약 객체에 기초하여 애플리케이션 초기화를 조정하도록 동작하며 대부분의 확장 구현을 애플리케이션 코드 자체에 넘긴다.
본 요약부는 아래의 상세한 설명에서 추가로 기술되는 개념들의 선택을 단순화된 형식으로 소개하도록 제공되었다. 본 요약부는 청구사항의 중요 특성 또는 기본 특성을 식별하기 위한 것이 아니며, 청구사항의 범주를 한정하도록 사용되는 것 또한 아니다.
전체 도면에 걸쳐서 동일한 구성요소를 지칭하도록 동일한 참조번호가 사용되었다.
도 1은 하나 이상의 실시예에 따라 본 명세서에 기술된 다양한 원리들이 이용될 수 있는 운영 환경을 도시한다.
도 2는 하나 이상의 실시예에 따른 애플리케이션 활성화를 위한 예시적인 동작상 시나리오를 도시한다.
도 3은 하나 이상의 실시예에 따른 예시적인 방법의 단계들을 기술한 순서도이다.
도 4는 하나 이상의 실시예에 따른 다른 예시적인 방법의 단계들을 기술한 순서도이다.
도 5는 하나 이상의 실시예를 구현하도록 사용될 수 있는 예시적인 컴퓨팅 시스템을 도시한다.
개요
컴퓨팅 시스템 내에서 애플리케이션을 구현하기 위한 종래의 조직화되지 않은 접근법은, 사용자가 운영 시스템과 관련된 완전히 긍정적인 사용자 경험을 갖는 것을 저해할 수 있는, 일관성 없는 "룩앤드필(look and feel)"을 생성할 수 있다. 애플리케이션이 일부 운영 시스템 기능을 이용할 수 있지만, 운영 시스템은 종래의 접근법에서 애플리케이션이 실제로 기능을 구현하는 방식에 대한 제어를 거의 또는 아예 갖지 않을 수 있다.
본 명세서에는 운영 시스템과 애플리케이션의 통합을 용이하게 하는 애플리케이션 활성화를 위한 기술이 기술되었다. 운영 시스템(OS)은 OS와 애플리케이션 사이에 형성된 연관된 계약(예로서, 확장가능점(extension point)에 의해 나타내어지는 기능의 구현을 좌우하는 사양)을 통해 서비스 가능한 다양한 확장가능점을 포함하도록 구성될 수 있다. 확장가능점은 OS에 의해 제공되는 통합된 기능으로서 정의되며 중심화 방식으로 OS에 의해 제어된다. 그러나, 확장가능한 기능의 구체적인 구현은 계약에 따라 애플리케이션으로 분담될 수 있다.
예를 들어, OS는 OS에 의해 노출되는 중심화된 애플리케이션 활성화 구성요소를 포함할 수 있거나 또는 다른 방식으로 이를 사용할 수 있고, 애플리케이션이 구체화된 방식으로 특정한 계약을 수행하도록 불러오기 위해 객체지향 접근법을 사용할 수 있다. 활성화 중에 OS는 지정된 애플리케이션을 활성화하기 위한 특정한 계약과 관련된 정보(예컨대, 계약 객체 또는 다른 적절한 데이터)를 전달할 수 있고, 애플리케이션이 OS에 의해 명시된 방식으로 계약을 서비스할 수 있게 한다. 이러한 방식으로, 애플리케이션 코드에 의한 계약의 조정은 중심화된 애플리케이션 활성화 구성요소를 통해 관리될 수 있다. 그 결과 OS에 대해 그리고 서로 다른 애플리케이션 및 플랫폼에 걸쳐 일관되고 조직적인 사용자 경험을 생성하도록 서로 다른 애플리케이션들과 OS가 통합된다.
아래의 논의에서, 하나 이상의 실시예가 이용될 수 있는 일 환경을 기술하는 "운영 환경"이라는 제목의 섹션이 제공된다. 그에 이어서, "애플리케이션 활성화 기술"이라는 제목의 섹션은, 하나 이상의 실시예에 따른 예시적인 구현 세부사항을 기술한다. 다음으로, "예시적인 방법"이라는 제목의 섹션은 하나 이상의 실시예에 따른 예시적인 방법을 기술한다. 마지막으로, "예시적인 시스템"이라는 제목의 섹션은 하나 이상의 실시예를 구현하도록 활용될 수 있는 예시적인 컴퓨팅 시스템 및 디바이스를 기술한다.
운영 환경
도 1은 하나 이상의 실시예에 따른 운영 환경(100)을 도시한다. 환경(100)은 하나 이상의 프로세서(104), 하나 이상의 컴퓨터 판독가능한 매체(106), 운영 시스템(108) 및 컴퓨터 판독가능한 매체 상에 존재하며 프로세서(들)에 의해 실행가능한 하나 이상의 애플리케이션(110)을 구비하는 컴퓨팅 디바이스(102)를 포함한다. 하나 이상의 프로세서(104)는 컴퓨팅 디바이스(102)에 사무실 생산성, 이메일, 미디어 관리, 출력, 네트워킹, 웹-브라우징 등을 포함하지만 이것으로 한정되는 것은 아닌 광범위한 기능을 제공하기 위해서 애플리케이션(110)으로부터 컴퓨터 프로그램 명령을 검색 및 실행할 수 있다. 애플리케이션(110)과 관련된 다양한 데이터 및 프로그램 파일은 예시로서 사무실 문서, 멀티미디어 파일, 이메일, 데이터 파일, 웹페이지, 사용자 프로파일 및/또는 선호 데이터 등에 포함될 수 있다. 일반적으로, 애플리케이션 및 다른 프로그램 모듈은 로컬 애플리케이션, 호스트 디바이스(예로서, 서버 또는 피어 디바이스)를 통해 동작가능한 웹 기반 애플리케이션, 및/또는 클라이언트-서버 또는 네트워크 상의(예로서, "클라우드에서의") 다른 멀티 디바이스 상호작용을 통해 동작가능한 분산된 애플리케이션을 포함할 수 있다.
컴퓨팅 디바이스(102)는 예시로서 데스크톱 컴퓨터, 태블릿 PC 또는 슬레이트 컴퓨터와 같은 이동식 컴퓨터, PDA와 같은 휴대용 컴퓨터, 휴대폰, 셋톱박스 등과 같은 임의의 적절한 컴퓨팅 시스템 및/또는 디바이스로서 구현될 수 있지만, 이것으로 한정되는 것은 아니다. 컴퓨팅 디바이스(102)를 포함하는 다양한 시스템 및/또는 디바이스를 나타낼 수 있는 컴퓨터 시스템의 일 예시가 도 5에서 도시되어 아래에서 설명되었다.
컴퓨터 판독가능한 매체는 예시로서 컴퓨팅 디바이스와 전형적으로 연관된 모든 형식의 휘발성 및 비휘발성 메모리 및/또는 저장 매체를 포함할 수 있지만, 이것으로 한정되는 것은 아니다. 이러한 매체는 ROM, RAM, 플래시 메모리, 하드 디스크, 제거가능한 매체 등을 포함할 수 있다. 컴퓨터 판독가능한 매체는 "컴퓨터 판독가능한 저장 매체" 및 "통신 매체"를 모두 포함할 수 있으며, 이들의 예시는 도 5의 예시적인 컴퓨팅 시스템에 대한 논의에서 찾아볼 수 있다.
운영 시스템(108)은 또한 운영 시스템(108)과 통합된 확장가능한 기능을 나타내는 확장가능점(112)을 포함한다. 다시 말하면, 확장가능점은 개별적인 확장가능점을 지원하는 서로 다른 애플리케이션(110)에 의해 구현될 수 있는 확장가능한 운영 시스템 기능을 제공한다. OS는 확장가능한 점에 대한 기능성의 세트를 정의하며 구현을 서로 다른 애플리케이션들에 분담할 수 있다. 확장가능점(112)은 다양한 방식으로 구성될 수 있다. 예시로서, 확장가능점은 검색 쿼리, 애플리케이션들 간의 데이터 공유, 파일 연관성, 파일 스트리밍, 외부 디바이스 동작, 미디어 자동 재생, 애플리케이션 론칭, 웹사이트 상호작용, 활성화 상태 제어, 프로토콜 조정, 네트워크 구성, 하드웨어/디바이스 특정 구성 기능, 상호-확장 통신 등과 같은 기능들을 제공할 수 있다.
확장가능점(112)의 기능은 애플리케이션(110)의 일부 측면들을 운영 시스템(108)과 효율적으로 통합하기 위한 다양한 방식으로 다양한 애플리케이션(110)에 의해 구현될 수 있다. 따라서, 확장가능점은 서로 다른 애플리케이션이 서로 다른 애플리케이션의 코드, 인터페이스 및 특정한 성능을 통해 상응하는 운영 시스템 기능을 확장 및 조직화하도록 사용 및 서비스할 수 있는 중심화된 메커니즘을 나타낸다. 확장가능점에 의해 나타내어지는 기능의 구현을 통제하는 데에 사용되는 사양은 본 명세서에서 계약(contract)이라고 지칭된다. 계약은 확장된 기능을 사용하라는 요청에 응답하여 OS와 애플리케이션 사이에서 생성될 수 있다. 계약에 따르면, 객체들 및 다른 적절한 데이터가 애플리케이션이 계약을 만족시킬 수 있게 하기 위해서 계약/확장가능점을 지원하는 적절한 애플리케이션으로 포워드될 수 있다. 다시 말하면, 확장가능점을 지원한다는 표시를 OS에게 제공하는 애플리케이션은, 확장가능점과 관련된 계약을 조정하도록 OS에 의해 활성화될 수 있다.
기술된 방식으로, 특정한 확장가능한 OS 기능을 위한 특정 세부사항 및 코드의 적어도 일부가 궁극적으로 확장가능한 기능을 구현하는 애플리케이션에 분담될 수 있다. 대체로 말하면 확장가능점은 애플리케이션 및 플랫폼과 무관하게 이용가능하다. 따라서, 서로 다른 유형의 애플리케이션/플랫폼들이 동일한 확장가능점을 구현 및 서비스하는 데에 사용될 수 있다. 서로 다른 유형의 애플리케이션/플랫폼을 가로지르는 구현은 공통의 중심화된 구성요소를 이용하여 발생할 수 있으며, 이를 통해서 OS는 서로 다른 애플리케이션/플랫폼을 다이렉팅할 수 있고 애플리케이션/플랫폼이 확장가능점(112)이 서비스되는 방식을 제어한다. 따라서, 확장가능한 기능의 일부 측면이 서비스하는 애플리케이션에 분담된다고 할지라도, OS는 기능에 대한 제어를 유지하고 중심화된 구성요소를 통한 확장가능점에 대한 계약을 수행하는 방식을 애플리케이션에 지시할 수 있다.
특히, 컴퓨팅 디바이스(102)는 컴퓨터 판독가능한 매체 상에 존재하며 프로세서(들)에 의해서도 실행가능한 애플리케이션 활성화 구성요소(114)를 더 포함한다. 애플리케이션 활성화 구성요소(114)는 도시된 바와 같이 독립형 애플리케이션으로서 구현될 수 있거나 또는 다른 애플리케이션의 구성요소로서 구현될 수 있다. 예를 들어, 애플리케이션 활성화 구성요소(114)는 운영 시스템(108)의 통합된 구성요소로서 제공될 수 있다.
애플리케이션 활성화 구성요소(114)는 OS에 의해 노출될 수 있고 확장가능점(112) 및 연관된 계약과 관련된 애플리케이션을 지시하도록 사용될 수 있는 공통의 중심화된 구성요소를 나타낸다. 특히, 애플리케이션 활성화 구성요소(114)는 애플리케이션을 서비스 확장가능점에 등록하고, 등록된 애플리케이션들 중에서 선택하고, 및/또는 애플리케이션이 계약을 만족시키기 위해 작동하도록 노출될 수 있다(예로서, 확장가능한 OS 기능의 특정한 실시). 애플리케이션 활성화 구성요소(114)는 또한 OS가 다양한 애플리케이션(110)에 의해 확장가능점(112)의 구현에 대한 제어를 유지하도록 할 수 있다. 애플리케이션 활성화 구성요소(114)는 상응하는 애플리케이션에 대한 실행 환경을 제공하는 컴퓨팅 디바이스(102)의 서로 다른 런타임 플랫폼(118) 및/또는 서로 다른 유형의 애플리케이션을 지원하도록 구성될 수 있다. 컴퓨팅 디바이스(102)에 대한 런타임 플랫폼(118)의 몇몇 예시는 JAVA™ 런타임 환경(JRE), Adobe™ Flash™, Microsoft™.NET 프레임워크 및 Mircosoft Silverlight™를 포함한다. 지원된 애플리케이션은 애플리케이션 활성화 구성요소(114) 및/또는 OS와 상호작용하도록 구성되는 임의의 적절한 런타임 플랫폼(118) 상에서 실행될 수 있다. 런타임 플랫폼이 애플리케이션 활성화 구성요소(114) 및/또는 OS와의 상호작용을 가능하게 하도록 셋업되면, 런타임 플랫폼은 새로운 업데이트를 지원하기 위한 런타임의 추가 개정에 대한 필요성 없이 현존하는 확장가능점 및 확장가능점에 대한 미래의 업데이트 모두에 대해 사용할 준비가 된다.
적어도 일부 실시예에서, 애플리케이션 활성화 구성요소(114)는 계약 및 확장가능점(112)과 관련된 애플리케이션을 통신 및 지시하고/하거나 운영 시스템(108)의 일부로서 제공된 확장가능점을 다른 방식으로 관리하기 위한 객체 지향 접근법을 구현한다. 예를 들어, 객체 지향 접근법이 사용될 때, 애플리케이션 활성화 구성요소(114)는 계약을 만족시키도록 애플리케이션(110)을 활성화 및 지시하기 위해 계약 객체(116)를 제공하거나 또는 다른 방식으로 이용가능하게 할 수 있다. 객체 지향 접근법은 다루기 어렵고 업데이트하기 힘든 종래의 스트링 기반 커맨드 라인 파라미터를 대신하여 사용될 수 있으며, 객체 지향 접근법에서 이용가능한 보다 풍부한 객체와 비교하여 상대적으로 엄격하고 단순한 커맨드를 제공한다. 예를 들어, 보다 풍부한 객체는 몇 가지 예로서 양방향 통신의 제공, 외부 프로세스로부터의 데이터 소싱(sourcing) 및 공유된 데이터 액세스를 위한 애플리케이션들 사이에서 중개된 객체의 제공과 같은 커맨드 라인 파라미터를 이용하여 가능하지 않은 성능들을 제공할 수 있다.
계약 객체(116)는 호환가능한 애플리케이션에 의해 지원되는 기대되는 일정한 통신 프로토콜에 따라 설계될 수 있다. 통신 프로토콜은 서로 다른 컴퓨팅 언어, 프로토콜 및 기술을 내부적으로 사용할 수 있는 서로 다른 환경 및 엔티티 사이에서 통신하는, 기기와 무관한 컴퓨팅 언어 독립형 방식을 제공하도록 제공된다. 호환가능한 애플리케이션은 객체에 대해 사용되는 공통 포맷을 이해할 수 있으며, 만약 적절하다면 객체를 특정한 플랫폼/환경에 적합한 애플리케이션 특정 포맷으로 번역한다. 일부 실시예에서 사용될 수 있는 적절한 프로토콜의 일 예시는 Microsoft™ Component Object Model(COM)이다. 그러나, 서로 다른 엔티티 및/또는 환경 사이의 기기에 무관한, 언어 독립형 통신을 가능하게 하는 임의의 적절한 프로토콜이 본 명세서에서 기술되는 애플리케이션 활성화 프레임워크를 구현하도록 사용될 수 있다.
계약 객체(116)(또는 다른 동등한 객체, 데이터 및/또는 메시지)는 애플리케이션(110)으로 직접 통신될 수 있고/있거나 일부 경우에는 상응하는 계약을 서비스하기 위해 작동되는 애플리케이션에 상응하는 각각의 런타임 플랫폼(118)을 통해 통신될 수 있다. 계약 객체(116)는 계약과 관련된 임의의 적절한 정보를 수신 애플리케이션으로 전달하도록 구성될 수 있다. 일반적으로, 계약 객체(116)를 통해(또는 다른 방식으로) 전달된 정보는 지정된 애플리케이션을 활성화하고 애플리케이션이 OS에 의해 명시된 방식으로 상응하는 계약을 서비스하게 할 수 있도록 구성된다. 도 1에 도시된 바와 같이, 계약 객체(116)는 수신 애플리케이션에 대한 계약을 식별하기 위한 계약 ID(120), 계약에 대한 특정 데이터 및/또는 윤곽을 기술하는 계약 세부사항(122) 및 수신 애플리케이션이 계약을 조정하기 위해 프로세싱을 활성화 및/또는 프로세싱하는 방식을 제어하도록 사용되는 활성화 설정(124)을 포함할 수 있다. 이와 관련된 추가적인 세부사항 및 애플리케이션 활성화 기술의 다른 측면들이 첨부된 도면과 관련하여 기술되었다.
예시적인 운영 환경이 기술되었으며, 아래에서 하나 이상의 실시예에 따른 애플리케이션 활성화를 위한 예시적인 기술이 고려된다.
애플리케이션 활성화 기술
전술된 내용에 따르면, 운영 시스템(OS)은 연관된 계약을 통해서 서비스 가능한 다양한 확장가능점을 포함할 수 있다. 확장가능한 측면들은 OS의 통합된 기능으로서 정의되고 중심화된 방식으로 OS에 의해 제어된다. 그러나, 확장가능한 기능의 특정한 구현은 계약을 통해 애플리케이션에 분담될 수 있다. 애플리케이션 코드에 의한 구현의 조정은 객체 지향적 접근법을 이용하여 중심화된 애플리케이션 활성화 구성요소를 통해 관리 및 조직화될 수 있다.
애플리케이션 활성화 기술과 관련된 추가적인 세부사항이 도 2에 도시된 예시적인 동작 시나리오(200)와 관련하여 기술된다. 특히, 도 2는 애플리케이션 활성화를 조정하도록 OS에 의해 노출될 수 있는 애플리케이션 활성화 구성요소(114)와 관련된 일부 예시적인 세부사항을 나타낸다. 도 2에 나타내어진 것과 같이, 운영 시스템(108)은 요청(202)을 수신할 수 있다. 요청(202)은 확장가능점에 의해 제공되는 기능의 사용을 시도하는 엔티티(예로서, 애플리케이션, 디바이스, 사용자, 또는 구성요소)로부터 획득될 수 있다. 다시 말하면, 요청은 확장가능한 기능에 액세스하라는 요청이다. 이러한 예시에서, 운영 시스템(108)은 요청(202)을 조정하고 다른 방식으로 OS를 통해 제공된 확장가능한 기능을 관리하도록 구성된 애플리케이션 활성화 구성요소(114)를 포함한다. 물론, 이와 달리 애플리케이션 활성화 구성요소(114)는 전술된 바와 같이 OS와 개별적인 구성요소로서 제공될 수도 있다.
요청(202)에 응답하여, 애플리케이션 활성화 구성요소(114)는 요청을 서비스하기 위해 애플리케이션을 선택하도록 구성될 수 있다. 일 접근법에서, 이 요청은 확장가능한 기능을 구현하도록 특정한 애플리케이션을 지정할 수 있다. 이에 더하여 또는 이와 달리, 호환가능한 애플리케이션이 확장가능한 기능을 지원하는 애플리케이션들의 그룹으로부터 선택될 수 있다. 예를 들어, 애플리케이션은 OS에 등록할 수 있거나 또는 개별적인 확장가능점과 관련된 OS에 애플리케이션이 서비스를 지원하고 서비스를 수행할 수 있음을 통지할 수 있다. 따라서, OS는 애플리케이션을 서로 다른 확장가능점에 맵핑하도록 구성된 목록, 데이터베이스, 테이블 또는 다른 적절한 데이터 구조를 유지, 액세스, 또는 다른 식으로 이용할 수 있다. 이러한 맵핑에 기초하여, OS는 요청(202)에 상응하여 특정한 확장가능점을 서비스하는 능력을 나타낸 모든 애플리케이션을 열거할 수 있다. 적어도 일부 실시예에서, 요청을 서비스할 수 있는 애플리케이션의 리스트가 선택을 위해 요청자에게 노출될 수 있다. 다른 접근법에서, 애플리케이션 활성화 구성요소(114)는 선호도 리스트, 디폴트 선택, 순위 매기기, 커뮤니티 피드백 및/또는 다른 적절한 선택 기준을 이용하여 (예를 들어, 요청자에 의한 명백한 선택의 도움 없이) 단독으로 애플리케이션을 선택하도록 구성될 수 있다. 일반적으로, 전술된 예시들의 조합을 포함하는 임의의 적절한 기술 및/또는 휴리스틱(heuristic)은 어떤 애플리케이션을 요청(202)에 응답하여 활성화할 것인지를 결정하도록 사용될 수 있다.
임의의 상황에서, 애플리케이션 활성화 구성요소(114)는 요청(202)을 서비스하도록 애플리케이션을 식별 및/또는 선택한다. 도 2에 도시된 바와 같이, 애플리케이션은 상응하는 런타임 플랫폼(118)에 의해 구현될 수 있거나 구현되지 않을 수 있다. 애플리케이션 활성화 구성요소(114)는 요청을 만족시키기 위해서 선택된 애플리케이션을 활성화하도록 동작할 수 있다. 특히, 요청(202)은 애플리케이션 활성화 구성요소(114)로 하여금 확장가능한 기능을 구현하도록 애플리케이션과의 계약을 개시하게 할 수 있다. 예를 들어, 애플리케이션 활성화 구성요소(114)는 선택된 애플리케이션으로의 통신을 위해 계약 객체(116)(또는 복수의 계약 객체들)를 생성할 수 있다. 하나 이상의 계약 객체(116)는 애플리케이션 활성화 구성요소(114)에 의해서 적절한 애플리케이션(110)으로 전달되며 계약을 완료하기 위해 애플리케이션에 의해 사용되는 다양한 정보를 제공한다. 이러한 정보는 계약 ID(120), 특정한 계약에 대한 계약 세부사항(122) 및 단일 계약 객체의 방식으로 및/또는 별개의 객체로서 제공될 수 있는 계약이 수행되는 방식을 제어하기 위한 활성화 설정(124)을 포함한다.
보다 구체적으로, 계약 ID(120)는 수행될 특정 계약을 애플리케이션으로 이동하도록 사용된다. 확장가능점(112)과 같이, 서로 다른 계약이 검색 쿼리, 애플리케이션들 간의 데이터 공유, 파일 스트리밍, 외부 디바이스 동작, 애플리케이션 론칭, 웹사이트 상호작용, 활성화 상태 제어 등과 같은 서로 다른 기능과 관련될 수 있다.
애플리케이션은 서로 다른 유형의 계약들을 구별하고 계약 객체(116)를 통해 전달되는 남은 정보를 해석하고 프로세싱하는 방식을 이해하도록 계약 ID(120)를 사용할 수 있다. 따라서, 애플리케이션은 계약 객체(116)를 조정, 해석, 및/또는 계약 ID에 의해 지정된 것과 같이 계약 객체(116)에 상응하는 특정한 계약에 의존하여 서로 다른 방식으로 계약 객체(116)를 프로세싱할 수 있다. 예를 들어, 계약 객체와 함께 전달된 동일한 아규먼트(argument)가 계약 ID에 의존하여 서로 다르게 해석 및 조정될 수 있다. 적어도 일부 실시예에서, 계약은 서로 다른 유형의 계약에 상응하는 분류들로 배열될 수 있다. 이러한 경우에, 계약 ID는 계약에 상응하는 계약 분류를 전달하도록 사용될 수 있다.
계약 세부사항(122)은 수행해야 할 계약과 관련된 특정한 정보를 제공한다. 이것은 파라미터, 링크, 파일명 및 계약을 수행하는 데에 사용되는 다른 데이터를 포함할 수 있다. 계약 세부사항(122)은 또한 계약을 위해 수행될 특정한 프로세싱 동작을 명시할 수 있고/있거나 계약을 수행하는 데에 사용될 수 있는 방법에 대한 액세스를 제공한다. 예시로서, 검색 쿼리 텍스트는 검색 계약과 관련하여 제공될 수 있다. 다른 예시에서, 파일 경로 또는 스트림이 파일 스트리밍 계약과 관련하여 제공될 수 있다. 출력 폴더 위치도 제공될 수 있다. 또 다른 예시에서, URL 또는 웹사이트 어드레스가 파일 포스팅 계약과 관련하여 제공될 수 있다. 파일 포스팅 계약에 대한 세부사항도 사진을 공유 사이트에 포스팅하기 전에 사진의 해상도를 감소시키는 것과 같은 재포맷 동작을 명시할 수 있다.
활성화 설정(124)은 계약을 만족시키기 위해 초기화하는 방식을 애플리케이션에 알려주는 파라미터를 포함한다. 활성화 설정(124)은 또한 주어진 계약을 조정하기 위해 사용하도록 애플리케이션 또는 런타임의 현존하는 인스턴스를 명시할 수 있다. 활성화 설정(124)은 애플리케이션 및/또는 런타임 플랫폼(118) 중 하나 또는 둘 모두를 제어하도록 구성될 수 있다. 활성화 설정(124)은 프레젠테이션 측면, 애플리케이션 상태, 초기화 설정 및 애플리케이션이 계약에 참여할 수 있도록 애플리케이션을 지정된 상태로 초기화하는 방식을 명시하는 다른 설정을 포함할 수 있다.
예를 들어, 활성화 설정(124)은 애플리케이션에 대한 윈도우의 생성을 제어하도록 지정된 윈도우 생성 파라미터를 포함할 수 있다. 계약 객체로 전달된 윈도우 생성 파라미터는 OS 및 다른 애플리케이션에 의해 사용되는 사용자 인터페이스에 걸쳐 룩앤드필(look and feel)의 연속성을 제공하도록 사용될 수 있다. 이러한 방식으로, 서로 다른 애플리케이션에 대한 윈도우가 조직화될 수 있고 OS에 대한 사용자 인터페이스의 일부로서 나타날 수 있거나 또는 OS가 윈도우를 레이아웃, 주문 및 배열하기 위해서 선택한다. 윈도우 생성 파라미터는 애플리케이션 윈도우 생성에 대한 타이밍, 선택된 스크린 위치에서 윈도우의 배치, 및/또는 색상, 폰트, 그래픽 등과 같은 시각적 측면을 제어하도록 구성될 수 있다. 또한, 윈도우 생성 파라미터는 서로 다른 이용가능한 옵션으로부터의 생성을 위해 윈도우의 유형을 지정하도록 사용될 수 있다. 윈도우의 유형에 대한 옵션은, 몇몇 예를 들자면 풀 사이즈/독립형 윈도우, 다른 애플리케이션 UI 내에 배치된 내장형 또는 호스팅된 윈도우, 외부 디바이스로의 출력에 대한 윈도우, 볼 수 없는 윈도우(예로서, 백그라운드 프로세스), 또는 미니-모드 윈도우를 포함할 수 있다. 따라서, 윈도우 생성 파라미터는 UI에 대한 계약 특정 제어가 올바른 장소에서 론칭되며 OS 및/또는 다른 애플리케이션으로 조직화되는 룩앤드필을 갖는 윈도우의 적절한 유형의 생성을 지정할 수 있게 한다.
일 접근법에서, 활성화 설정(124)은 윈도우 생성 파라미터 및/또는 다른 설정에 의해 정의되는 적절한 상태에서 상응하는 애플리케이션을 활성화하기 위한 설정을 수신 및 사용하는 런타임 플랫폼(118)으로 다이렉트된다. 계약 ID 및 계약 세부사항과 같은 계약 객체에 포함되는 다른 정보는 계약의 실제 수행을 조정하는 애플리케이션 코드 자신으로 전달된다. 이러한 접근법에서, 런타임 플랫폼(118)은 애플리케이션 초기화에 관련된 태스크를 조정하도록 주로 애플리케이션 활성화와 관련된다. 런타임 플랫폼(118)은 OS에 의해 제공되는 확장가능점 또는 계약 세부사항에 대한 인식 없이 이러한 태스크를 수행할 수 있다. 런타임 플랫폼(118)이 확장가능점에 대해 인식하고 있지 않기 때문에, 프레임워크는 새로운 확장가능점의 개발 및 추가를 가능하게 하며 애플리케이션은 런타임 플랫폼(118)에 대한 변경 없이 이익을 취할 수 있다. 따라서, 새로운 확장은 디바이스에 의해 사용될 수 있는 다양한 런타임 플랫폼(118)의 수정 없이 배치 및 사용될 수 있다. 런타임은 간단히 계약 객체에 기초하여 애플리케이션 초기화를 조정하도록 동작하며 대부분의 확장 구현을 애플리케이션 코드 자체에 넘긴다.
따라서, 애플리케이션을 활성화하기 위해서, 애플리케이션 활성화 구성요소(114)는 애플리케이션에 의해 지정된 진입점(204)으로 계약 객체(116)를 전달한다. 이러한 전달은 특정한 런타임 환경에서 구현되는 애플리케이션에 대한 중재자로서 런타임 플랫폼(118)을 통해서 이루어지거나 또는 애플리케이션으로 직접 전달될 수 있다. 다양한 확장가능점/계약에 대한 애플리케이션의 진입점(204)은 애플리케이션이 OS에 등록하거나 또는 OS에 개별적인 확장가능점/계약의 지원을 나타내도록 통지할 때 지정될 수 있다. 진입점(204)은 애플리케이션 활성화 구성요소(114)가 애플리케이션을 상호작용, 작동, 및/또는 활성화할 수 있는 상응하는 애플리케이션에 대한 접촉점을 제공한다.
진입점은 특정한 방법, 제어, 형식, 웹페이지, 및/또는 상응하는 계약 및/또는 계약 객체(116)를 조정하도록 설계된 애플리케이션(또는 런타임)의 다른 적절한 구성요소에 상응할 수 있다. 진입점(204)은 계약 객체(116)의 포맷을 이해하고 애플리케이션 특정 형식으로의 객체의 해석을 조정할 수 있다. 예를 들어, 진입점(204)은 객체, 메시지, 및/또는 애플리케이션 활성화 구성요소(114)에 의해 사용되는 기기와 무관한 컴퓨팅 언어 독립형 프로토콜에 따라 통신되는 다른 데이터를 조정하도록 구성될 수 있다. 특히, 계약 객체 상에서 동작하는 애플리케이션의 단일 방법이 애플리케이션에 대한 일반적 진입점으로서 명시될 수 있다. 이것은 계약 객체(116)에 의해 이동되는 다양한 정보가 애플리케이션으로 전달되는 퍼넬(funnel)로서 동작한다. 이 방법은 애플리케이션에 계약을 만족시키기 위해서 확장가능점에서의 참여를 시작하라고 지시한다. 따라서, 하나의 공통적인 진입점은 이후에 애플리케이션으로 전달되는 객체 지향적 구성요소에 대한 동작을 수행하기 위한 성능을 갖는 애플리케이션에 대해 지정될 수 있다.
계약 객체(116)가 진입점을 통해 수신되었을 때, 계약 객체(116)는 애플리케이션을 활성화하게 하고 진입점이 상응하는 계약을 만족시키도록 애플리케이션에 의한 프로세싱을 개시하게 한다. 프로세싱은 OS의 방향에서 발생하며 활성화 설정(124) 및/또는 계약 세부사항(122)을 통해 계약 객체(116)에 의해 명시되는 방식으로 발생한다.
프로세싱에 이어서, 애플리케이션은 애플리케이션 활성화 구성요소(114)로 다시 전달하기 위한 응답(206)을 형성할 수 있다. 응답은 적어도 계약이 성공적으로 완료되었는지 여부의 표시를 포함하는 애플리케이션에 의한 계약의 수행 결과를 반영한다. 이러한 세부사항 및 애플리케이션 활성화 기술의 이러한 다른 측면들이 아래의 예시적인 방법과 관련하여 기술되었다.
예시적인 방법
다음 섹션은 하나 이상의 실시예에 따라 구현될 수 있는 애플리케이션 활성화에 대한 기술을 도시한 순서도에 대한 논의를 제공한다. 아래에서 설명된 예시적인 방법은 임의의 적절한 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합과 관련하여 구현될 수 있다.
도 3은 운영 시스템이 자신의 확장가능점과 연관된 계약을 수행하도록 애플리케이션을 활성화할 수 있는 예시적인 방법을 도시한다. 적어도 일부 실시예에서, 이 방법은 애플리케이션 활성화 구성요소(114)를 포함하거나 다른 방식으로 이용하는 도 1의 예시적인 컴퓨팅 디바이스(102)와 같이 적절히 구성된 컴퓨팅 디바이스의 방식으로 구현될 수 있다.
단계(300)에서는 디바이스의 운영 시스템에 의해 제공된 확장가능점에 애플리케이션을 등록한다. 일 접근법에서, 다양한 확장가능점을 지원하는 애플리케이션은 애플리케이션 설치 프로세스의 일부로서 운영 시스템에 등록하도록 구성될 수 있다. 애플리케이션에 의한 특정한 확장가능점으로의 등록은 애플리케이션이 확장가능점을 서비스하도록 구성되었음을 OS에게 통지한다. 애플리케이션은 또한 지정된 확장가능점을 서비스하도록 OS에 등록하기 위해 설치 이외의 통지를 제공할 수 있다.
등록은 서로 다른 애플리케이션과 런타임 플랫폼을 가로지르는 애플리케이션 활성화를 위한 공통의 경로를 제공하도록 운영 시스템에 의해 노출되는 애플리케이션 활성화 구성요소(114)를 통해 발생할 수 있다. 특히, 애플리케이션 활성화 구성요소(114)는 애플리케이션 식별자(AppID)를 할당할 수 있으며 서로 다른 애플리케이션에 대한 등록의 목록을 유지할 수 있다. 목록은 AppID를 개별 방식으로 특정한 확장가능점에 매칭하도록 구성된다. 따라서, 목록은 확장가능점을 등록된 서로 다른 애플리케이션에 맵핑하고 그에 따라 애플리케이션이 확장가능점을 서비스할 수 있음을 나타낸다.
단계(302)는 확장가능점과 연관된 계약을 서비스하도록 애플리케이션을 불러온다. 예를 들어, 활성화 구성요소(114)는 확장가능한 기능에 액세스하라는 요청을 조정하고 그 요청을 서비스하도록 애플리케이션을 선택하도록 구성될 수 있다. 애플리케이션 활성화 구성요소(114)는 애플리케이션을 상응하는 확장가능점에 맵핑하는 목록 또는 그외의 적절한 데이터 구조를 참조함으로써 요청을 서비스하기 위한 적합한 애플리케이션을 식별할 수 있다. 그 다음 애플리케이션 활성화 구성요소(114)는 선택된 애플리케이션의 활성화를 발생시킬 수 있다.
특히, 단계(304)는 계약 객체(들)를 애플리케이션으로 전달할 수 있다. 계약 객체는 계약을 식별하여 애플리케이션이 계약을 만족시키는 것을 가능케 하기에 충분한 정보를 제공한다. 예를 들어, 계약 객체(116)는 객체에 기초한 애플리케이션(110)의 시작을 조정하는 상응하는 런타임 플랫폼(118)의 진입점을 통해 전달될 수 있다. 그 다음 런타임 플랫폼은 적절한 런타임 환경을 셋업하고, 애플리케이션을 초기화하며, 애플리케이션을 통해 확장을 구현하기 위한 대부분의 세부사항들을 전달한다. 여기에서, 런타임 플랫폼으로부터 특정 코드와 계약 구현을 분리시키는 두 갈래로 나누어진 접근법이 사용된다. 런타임 플랫폼은 초기화를 조정하며, 애플리케이션은 계약 객체(116)의 일부로서 제공된 각각의 정보를 이용하여 구현을 조정한다. 이러한 방식으로, 런타임 플랫폼은 확장가능점, 계약, 또는 구현의 특정한 세부사항을 인식할 필요가 없다. 따라서 런타임 플랫폼(118)은 애플리케이션 활성화 프레임워크를 지원하지만, 확장가능점의 추가 또는 수정이 이루어졌을 때 반드시 동시에 업데이트 되어야할 필요가 없다. 또한, 개발자는 런타임 플랫폼의 업데이트에 대한 걱정 없이 프레임워크에 대한 확장가능점을 생성할 수 있다.
다시 말하면, 일부 애플리케이션은 그들 자체에 대한 초기화를 조정하도록 설계될 수 있고/있거나 런타임 플랫폼에 의존하지 않는 "to the metal" 네이티브 코드로 기록된 것일 수 있다. 이러한 경우에, 계약 객체(116)는 애플리케이션 자체 내의 진입점으로 직접 전달될 수 있다. 이러한 접근법에서, 애플리케이션은 계약 객체(116)에 따라 확장의 구현 및 자체의 초기화 모두를 조정하도록 구성될 수 있다. 또한, 애플리케이션은 백그라운드 프로세스 및/또는 보이지 않는 윈도우의 방식으로 백그라운드 태스크를 수행하도록 활성화될 수 있다. 이러한 경우에, 특정한 윈도우 유형을 식별하는 윈도우 파라미터는 애플리케이션에 전혀 전달되지 않을 수 있다.
다른 접근법에서, 런타임 플랫폼은 플랫폼이 조정하는 애플리케이션 대신 확장가능점 및/또는 계약 선택을 구현하도록 구성될 수 있다. 이러한 접근법은 예를 들어 특정한 계약 및/또는 확장가능점이 런타임 플랫폼과 연관된 애플리케이션에 있어서 상대적으로 중요한 것으로 간주되는 경우에 사용될 수 있다. 예를 들어, 만약 검색 계약이 런타임 플랫폼과 연관된 모든 애플리케이션에 대해 적합한 것으로 간주되면, 런타임 플랫폼은 애플리케이션 대신 검색 계약을 자동으로 구현하도록 구성될 수 있다. 이러한 경우에, 런타임 플랫폼은 본 명세서에 기술된 방식으로 계약을 서비스하도록 활성화되는 애플리케이션처럼 동작할 수 있다.
활성화되면, 애플리케이션은 운영 시스템에 의해 지시된 바와 같이 계약을 만족시키도록 프로세싱을 수행할 수 있다. 서로 다른 확장가능점(112)과 관련하여 서로 다른 다양한 프로세싱이 발생할 수 있다. 특히, 계약 객체(116)는 애플리케이션에게 특정한 계약에 대해 알려주고 계약을 조정하는 방식을 알려주는 계약 세부사항(122) 및 계약 ID(120)를 식별할 수 있다. 따라서 애플리케이션은 지정된 프로세싱을 수행할 수 있고 그 결과를 다시 애플리케이션 활성화 구성요소(114)로 전달할 수 있다.
특히, 단계(306)는 계약이 성공적으로 만족되었는지 여부를 나타내는 애플리케이션으로부터의 응답을 획득한다. 예를 들어, 애플리케이션 활성화 구성요소(114)는 계약을 수행하기 위한 애플리케이션에 의한 프로세싱에 이어지는 애플리케이션으로부터의 응답을 수신 및 프로세싱할 수 있다. 응답은 적어도 계약의 성공 또는 실패를 나타내도록 구성될 수 있다. 예를 들어, 응답은 애플리케이션이 계약을 성공적으로 완료하였는지 여부를 나타내도록 사용되는 불린(Boolean) 파라미터를 포함할 수 있다. 만약 계약이 성공적이지 않다면, 애플리케이션 활성화 구성요소(114)는 동일한 애플리케이션에 의해 재시도를 시작하고, 애플리케이션을 종료하고, 애플리케이션에 대한 오류 조정을 시작하고, 및/또는 만약 이용가능하다면 계약을 완료하도록 다른 호환가능한 애플리케이션을 불러올 수 있다. 만약 계약이 성공적이라면, OS는 요청자에게 성공을 통지하고, 결과에 의존하는 후속 계약을 개시하고, 계약의 결과를 획득하고/하거나 계약 결과를 다른 엔티티에게 제공하는 등과 같은 다양한 동작들을 취할 수 있다.
도 4는 애플리케이션이 운영 시스템의 확장가능점과 연관된 계약을 수행하도록 동작하는 다른 예시적인 방법을 도시한다. 적어도 일부 실시예에서, 이 방법은 애플리케이션 활성화 프레임워크와 호환가능한 상응하는 런타임 플랫폼(118) 및/또는 다양한 애플리케이션(110)의 사용을 포함하거나 또는 다른 방식으로 사용하는 도 1의 예시적인 컴퓨팅 디바이스(102)와 같은 적절히 구성된 컴퓨팅 디바이스에 의해 구현될 수 있다.
단계(400)는 진입점을 통한 하나 이상의 확장가능점에 대한 애플리케이션에 의한 지원을 나타내도록 운영 시스템에 애플리케이션의 진입점에 대해 통지한다. 이는 임의의 적절한 방식으로 발생할 수 있다. 전술된 바와 같이, 통지는 애플리케이션이 설치되었을 때 애플리케이션에 의해서 제공될 수 있다. 통지는 또한 사용자가 선택적 특징에 달려있을 때, 특징이 처음으로 사용되었을 때, 또는 애플리케이션이 처음으로 실행되었을 때와 같이 실행 외의 다른 시간에서 제공될 수 있다. 이러한 경우에서, OS는 상호작용의 맥락에 기초하여 특정한 확장을 이용하도록 애플리케이션의 의도 및 성능을 추론할 수 있다. 따라서, OS는 특정한 확장에 대해 애플리케이션을 등록할 수 있다. 애플리케이션은 애플리케이션 활성화 구성요소(114)를 통해 운영 시스템에게 애플리케이션이 서비스할 수 있는 각 확장가능점(112)을 통지할 수 있다. 애플리케이션은 또한 상응하는 확장가능점(112)과 관련된 애플리케이션의 계약의 지정점으로서의 역할을 하는 진입점(204)을 운영 시스템에 제공한다. 진입점(204)은 각각의 확장가능점을 서비스하도록 애플리케이션을 활성화하기 위해 애플리케이션 활성화 구성요소(114)에 의해 제공되는 통신을 조정하도록 구성된다. 따라서, 애플리케이션에 의해 제공되는 통지는 애플리케이션 활성화 구성요소(114)가 애플리케이션 및 그의 진입점을 확장가능점으로 맵핑하는 목록을 업데이트 및 유지할 수 있게 한다.
단계(402)는 확장가능점 중 하나와 연관된 계약을 서비스하도록 활성화한다. 활성화는 운영 시스템의 방향에서 발생할 수 있다. 적어도 일부 경우에서, 활성화는 애플리케이션에 대한 런타임 플랫폼을 통해 발생할 수 있다. 만약 애플리케이션의 인스턴스가 이미 실행중이라면, 현존하는 인스턴스가 사용될 수 있다. 그렇지 않으면, 애플리케이션의 새로운 인스턴스가 생성될 수 있다.
단계(404)는 상응하는 진입점을 통해 계약 객체를 획득한다. 계약 객체는 계약을 식별하고 전술된 바와 같이 애플리케이션이 계약을 만족시키는 방식을 명시한다. 특히, 계약 객체(116)는 애플리케이션에 의해 지정된 진입점에 의해 수신될 수 있다. 진입점은 애플리케이션 자신의 일부로서 또는 상응하는 런타임 플랫폼에 의해 제공될 수 있다. 계약 객체(116)는 OS에 의한 지시에 따른 윈도우의 셋업을 포함하는 애플리케이션의 초기화에 사용되는 활성화 설정(124)을 포함할 수 있다. 계약 객체는 또한 확장가능한 기능을 구현하도록 애플리케이션에 의해 사용되는 계약 ID(120) 및 계약 세부사항(122)을 포함한다.
계약을 만족시키기 위해서, 단계(406)는 계약 객체에 의해 명시되는 프로세싱을 수행한다. 그 다음, 단계(408)는 운영 시스템에 프로세싱의 결과를 전달한다. 예를 들어, 계약 세부사항(122)의 일부로서 제공되는 다양한 데이터 파라미터는 애플리케이션에게 상응하는 계약을 실행하는 방법을 알려줄 수 있다. 이것은 수행될 단계들의 프로세싱, 파일 네임/위치, 다른 파티들과 상호작용하기 위한 URL 또는 도메인, 데이터 포맷, 응답 명령, 계약의 수행을 도울 수 있는 방법/객체 및 애플리케이션이 계약을 구현하는 것을 가능하게 하는 다른 정보 등을 명시하는 것을 포함할 수 있다. 따라서, 애플리케이션은 운영 시스템에 의해 사전기술되는 방식으로 확장가능한 기능을 구현하도록 계약을 수행한다.
계약이 완료되면, 애플리케이션은 프로세싱의 결과를 포함하는 애플리케이션 활성화 구성요소(114)에 대한 응답을 전송할 수 있다. 이러한 결과는 적어도 계약이 성공적으로 완료되었는지 여부에 대한 표시를 포함한다. 일부 시나리오에서, 이러한 결과는 또한 계약의 이행에 의해 생성되는 데이터, 파일, 링크, 및/또는 다다른 계약 특정 정보도 포함할 수 있다. 예를 들어, 검색 결과는 검색 확장을 위해 OS로 다시 제공될 수 있거나 또는 변환된 파일이 포맷 전환 확장의 결과로서 제공될 수 있다. OS는 만약 적절하다면 추가적인 프로세싱을 개시하도록 결과를 사용(예로서, 다른 계약을 수행하도록 애플리케이션을 불러옴)할 수 있고/있거나 요청 애플리케이션 또는 디바이스에 결과를 제공할 수 있다.
일부 예시에서, 애플리케이션이 OS로 응답을 다시 전송하지 않을 수도 있음을 인지해야 한다. 예를 들어, OS는 명백한 응답에 추가로 또는 그 대신에 애플리케이션 상태 및/또는 관련 계약에 대해 묻기 위해 여러 경우에 애플리케이션을 조사하도록 구성될 수 있다. 또한, 장애가 있는 애플리케이션은 적절한 응답을 제공하지 못할 수 있다. 따라서, OS가 애플리케이션 상태에 대해 검사하는 것은 OS가 상응하는 계약과 활성화된 애플리케이션의 트랙을 유지할 수 있는 다른 메커니즘을 제공할 수 있다.
애플리케이션 활성화를 위한 예시적인 기술을 고려하여, 하나 이상의 실시예에 따른 예시적인 시스템에 대한 논의를 고려한다.
예시적인 시스템
도 5는 전술된 다양한 실시예들을 구현할 수 있는 하나 이상의 컴퓨팅 시스템 및/또는 디바이스를 대표하는 예시적인 컴퓨팅 디바이스(502)를 포함하는 예시적인 시스템(500)을 도시한다. 컴퓨팅 디바이스(502)는 예를 들어 서비스 제공자의 서버, 컴퓨팅 디바이스(102)와 연관된 디바이스(예컨대, 클라이언트 디바이스), 온-칩 시스템, 및/또는 임의의 다른 적절한 컴퓨팅 디바이스 또는 컴퓨팅 시스템일 수 있다.
예시적인 컴퓨팅 디바이스(502)는 하나 이상의 프로세서(504) 또는 프로세싱 유닛, 하나 이상의 메모리 및/또는 스토리지 구성요소(508)를 포함할 수 있는 하나 이상의 컴퓨터 판독가능한 매체(506), 입력/출력(I/O) 디바이스를 위한 하나 이상의 입력/출력(I/O) 인터페이스(510) 및 다양한 구성요소 및 디바이스가 서로 통신할 수 있게 하는 버스(512)를 포함한다. 컴퓨터 판독가능한 매체(506) 및/또는 하나 이상의 I/O 디바이스는 컴퓨팅 디바이스(502)의 일부로서 포함될 수 있거나, 또는 이와 달리 컴퓨팅 디바이스(502)에 연결될 수 있다. 버스(512)는 메모리 버스 또는 메모리 컨트롤러, 주변 버스, 가속화된 그래픽 포트 및 임의의 다양한 버스 아키텍처를 이용하는 로컬 버스 또는 프로세서를 포함하는 하나 이상의 다양한 유형의 버스 구조를 나타낸다. 버스(512)는 유선 및/또는 무선 버스를 포함할 수 있다.
하나 이상의 프로세서(504)는 자신이 형성된 물질 또는 사용된 프로세싱 메커니즘에 의해 한정되지 않는다. 예를 들어, 프로세서는 반도체(들) 및/또는 트랜지스터로(예컨대, 전자 집적 회로(IC)) 구성될 수 있다. 이러한 맥락에서, 프로세서 실행가능한 명령은 전기적으로 실행가능한 명령일 수 있다. 메모리/스토리지 구성요소(508)는 하나 이상의 컴퓨터 판독가능한 매체와 연관된 메모리/스토리지 용량을 나타낸다. 메모리/스토리지 구성요소(508)는 (RAM과 같은) 휘발성 매체 및/또는 (ROM, 플래시 메모리, 광학 디스크, 자기 디스크 등과 같은) 비휘발성 매체를 포함할 수 있다. 메모리/스토리지 구성요소(508)는 고정 매체(예컨대, RAM, ROM, 고정 하드 드라이버 등)뿐 아니라 제거가능한 매체(예컨대, 플래시 메모리 드라이브, 제거가능한 하드 드라이브, 광학 디스크 등)를 포함할 수 있다.
입력/출력 인터페이스(들)(510)는 사용자가 커맨드 및 정보를 컴퓨팅 디바이스(502)에 입력할 수 있게 하며, 정보가 사용자 및/또는 다양한 입력/출력 디바이스를 이용하는 다른 구성요소 또는 디바이스에 제시될 수 있게 한다. 입력 디바이스의 예시는 키보드, 터치스크린 디스플레이, 커서 제어 디바이스(예컨대, 마우스), 마이크로폰, 스캐너 등을 포함한다. 출력 디바이스의 예시는 디스플레이 디바이스(예컨대, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드 등을 포함한다.
본 명세서에서는 다양한 기술들이 소프트웨어, 하드웨어(고정 로직 회로), 또는 프로그램 모듈의 일반적인 맥락에서 기술될 수 있다. 일반적으로, 이러한 모듈은 특정한 태스크를 수행하거나 특정한 추출 데이터 유형을 구현하는 루틴, 프로그램, 객체, 요소, 구성요소, 데이터 구조 등을 포함한다. 이러한 모듈 및 기술의 구현은 컴퓨터 판독가능한 매체의 일부 형태에 걸쳐 저장되거나 전송될 수 있다. 컴퓨터 판독가능한 매체는 컴퓨팅 디바이스에 의해 액세스될 수 있는 다양한 이용가능한 매개 또는 매체를 포함할 수 있다. 예시로서, 컴퓨터 판독가능한 매체는 "컴퓨터 판독가능한 저장 매체" 및 "통신 매체"를 포함할 수 있다.
"컴퓨터 판독가능한 저장 매체"는 단지 신호 전송, 반송파, 또는 신호 그 자체와는 대조적으로 정보의 일관적 및/또는 비일시적 저장을 가능하게 하는 매체 및/또는 디바이스를 지칭할 수 있다. 따라서, 컴퓨터 판독가능한 저장 매체는 비-신호 관련 매체를 지칭한다. 컴퓨터 판독가능한 저장 매체는 또한 명령, 모듈, 및/또는 설명된 기술의 측면을 구현하도록 일부 실시예에서 사용될 수 있는 하드웨어 형식으로 구현된 고정 디바이스 로직을 갖는 하드웨어 요소를 포함한다.
컴퓨터 판독가능한 저장 매체는 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램 모듈, 로직 요소/회로, 또는 다른 데이터와 같은 정보의 저장에 적합한 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 제거가능 및 제거 불가능 매체 및/또는 저장 디바이스를 포함한다. 컴퓨터 판독가능한 저장 매체의 예시는, RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 다른 광학 스토리지, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스, 집적된 회로 또는 칩, 또는 다른 저장 디바이스, 실체적인 매체, 또는 컴퓨터에 의해 액세스될 수 있고 원하는 정보를 저장하기에 적합한 제품의 하드웨어 요소(예로서 고정 로직)를 포함할 수 있지만, 이것으로 한정되는 것은 아니다.
"통신 매체"는 예로서 네트워크를 통해 컴퓨팅 디바이스의 하드웨어로 명령을 전송하도록 구성된 신호 관련 매체를 지칭할 수 있다. 통신 매체는 전형적으로 컴퓨터 판독가능한 명령, 데이터 구조, 프로그램 모듈, 또는 반송파, 데이터 신호, 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호 내의 다른 데이터를 포함할 수 있다. 통신 매체는 또한 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 하나 이상의 자신의 특징을 구비하거나 신호 내의 정보를 인코딩하는 것과 관련된 방식으로 수정된 신호를 의미한다. 예시로서, 통신 매체는 유선 네트워크 또는 다이렉트-유선 접속과 같은 유선 매체 및 음향, RF, 적외선 및 그 외의 무선 매체와 같은 무선 매체를 포함한다.
전술된 것들의 임의의 조합이 또한 컴퓨터 판독가능한 매체의 범주 내에 포함된다. 따라서, 애플리케이션 활성화 구성요소(114), 운영 시스템(108), 애플리케이션(110) 및 다른 프로그램 모듈을 포함하는 소프트웨어, 하드웨어, 또는 프로그램 모듈이 컴퓨터 판독가능한 매체의 일부 형태에 내장된 로직 및/또는 하나 이상의 명령으로서 구현될 수 있다.
따라서, 본 명세서에 설명된 특정한 모듈, 기능, 구성요소 및 기술은 소프트웨어, 하드웨어, 펌웨어 및/또는 이들의 조합으로 구현될 수 있다. 컴퓨팅 디바이스(502)는 특정한 명령 및/또는 소프트웨어에 상응하는 기능 및/또는 컴퓨터 판독가능한 매체 상에서 구현되는 하드웨어 모듈을 구현하도록 구성될 수 있다. 명령 및/또는 기능은 애플리케이션 활성화를 위한 기술뿐 아니라 다른 기술들을 구현하도록 하나 이상의 제품(예를 들어, 하나 이상의 컴퓨팅 디바이스(502) 및/또는 프로세서(504))에 의해 실행가능/동작가능할 수 있다. 이러한 기술은 본 명세서에 설명된 예시적인 절차를 포함하지만, 이것으로 한정되는 것은 아니다. 따라서, 컴퓨터 판독가능한 매체는 본 명세서에 기술된 하나 이상의 디바이스에 의해 실행되었을 때 애플리케이션 활성화를 위한 다양한 기술을 야기하는 명령을 저장하거나 또는 다른 방식으로 제공하도록 구성될 수 있다.
결론
본 명세서에는 애플리케이션 활성화를 위한 기술이 기술되었다. 전술된 내용에 따르면, 운영 시스템(OS)은 연관된 계약을 통해 서비스 가능한 다양한 확장가능점을 포함할 수 있다. 확장가능한 측면들은 OS의 통합된 기능으로서 정의되며 중심화된 방식으로 OS에 의해 제어된다. 그러나, 확장가능한 기능의 특정한 구현이 계약을 통해 애플리케이션에 분담될 수 있다. 기능의 구현이 애플리케이션 코드에 의해 조정되는 방식은 객체 지향적 접근법을 이용하여 중심화된 애플리케이션 활성화 구성요소를 통해 관리 및 조직화될 수 있다.
본 발명의 청구사항이 구조적 특성 및/또는 방법론적 행동에 대해 특정한 언어로 기술되었지만, 첨부된 특허청구범위에 정의된 청구사항이 반드시 전술된 특정한 특성 또는 동작들로 한정되지는 않는다는 점을 이해해야 한다. 오히려, 본 명세서에 기술된 특정한 기능 및 동작들은 특허청구범위를 구현하는 예시적인 형태로서 개시되었다.

Claims (10)

  1. 컴퓨터로 구현되는 방법으로서,
    운영 시스템에 의해, 컴퓨팅 디바이스의 런타임 플랫폼(runtime platform) 및 서로 다른 애플리케이션들에 걸쳐 애플리케이션 활성화를 위한 공통 경로를 제공하기 위해 애플리케이션 활성화 구성요소를 노출시키는 단계와,
    상기 애플리케이션 활성화 구성요소를 통해, 상기 애플리케이션과 상기 운영 시스템 사이에서 생성되는 계약(contract)을 통해 상기 애플리케이션에 의해 서비스 가능한 상기 운영 시스템의 통합된 기능으로서 제공되는 확장가능점(extension point)을 지원하도록 애플리케이션을 등록하는 단계와,
    상기 애플리케이션 활성화 구성요소를 통해, 상기 확장가능점 중 하나의 확장가능점에 대한 특정한 계약을 수행하도록 상기 등록된 애플리케이션 중에서 선택된 애플리케이션을 불러오는(invoke) 단계를 포함하는
    컴퓨터로 구현되는 방법.
  2. 제 1 항에 있어서,
    상기 애플리케이션 활성화 구성요소는 상기 운영 시스템에 의해 지시되는 바에 따라 상기 확장가능점을 서비스하기 위해 애플리케이션을 활성화하도록 객체 지향 프로토콜(object-oriented protocol)을 구현하는
    컴퓨터로 구현되는 방법.
  3. 제 1 항에 있어서,
    상기 애플리케이션 활성화 구성요소는 적어도 생성할 윈도우의 유형 및 상기 윈도우에 대한 위치를 지정하는 상기 애플리케이션에 객체를 전달함으로써 상기 확장가능점을 서비스하도록 상기 애플리케이션에 의한 윈도우 생성을 제어하는
    컴퓨터로 구현되는 방법.
  4. 제 1 항에 있어서,
    상기 애플리케이션을 불러오는 단계는 상기 애플리케이션과 연관된 런타임 플랫폼과 통신하여, 상기 런타임 플랫폼으로 하여금
    상기 애플리케이션을 초기화하고,
    상기 애플리케이션이 상기 하나의 확장가능점을 구현하도록 상기 특정한 계약을 만족시킬 수 있게 하기에 충분한 정보를 상기 애플리케이션에 전달하도록 하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  5. 제 1 항에 있어서,
    상기 애플리케이션을 불러오는 단계는, 상기 애플리케이션이 자신을 초기화하고 상기 하나의 확장가능점을 구현하게 하도록 상기 하나의 확장가능점에 상응하는 상기 애플리케이션의 지정된 진입점(entry point)을 통해 상기 애플리케이션과 직접 통신하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  6. 제 1 항에 있어서,
    상기 애플리케이션을 불러오는 단계는, 상기 애플리케이션의 지정된 진입점으로 계약 객체(contract object)를 전달하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  7. 제 6 항에 있어서,
    상기 계약 객체는, 상기 애플리케이션의 초기화를 제어하도록 구성된 활성화 설정, 상기 특정한 계약을 식별하기 위한 계약 식별자 및 상기 애플리케이션에 의해 상기 하나의 확장가능점의 구현을 제어하기 위한 계약 세부사항을 포함하는
    컴퓨터로 구현되는 방법.
  8. 제 1 항에 있어서,
    상기 애플리케이션을 등록하는 단계는 상기 애플리케이션의 설치와 관련하여 발생하는
    컴퓨터로 구현되는 방법.
  9. 제 1 항에 있어서,
    상기 애플리케이션을 등록하는 단계는,
    지원되는 확장가능점에 대한 지정된 진입점을 나타내는 통지를 상기 애플리케이션으로부터 획득하는 단계와,
    상기 애플리케이션의 상기 지정된 진입점을 상응하는 확장가능점에 맵핑하도록 목록(manifest)을 업데이트하는 단계
    를 포함하는
    컴퓨터로 구현되는 방법.
  10. 제 1 항에 있어서,
    상기 애플리케이션 활성화 구성요소는 플랫폼과 무관한(platform agnostic), 언어 독립형 통신 프로토콜을 이용하여 애플리케이션에 대해 복수의 서로 다른 런타임 플랫폼을 지원하는
    컴퓨터로 구현되는 방법.
KR1020137031388A 2011-05-27 2011-10-09 애플리케이션 활성화 프레임워크 KR101819266B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/118,016 2011-05-27
US13/118,016 US9063776B2 (en) 2011-05-27 2011-05-27 Application activation framework
PCT/US2011/055515 WO2012166178A1 (en) 2011-05-27 2011-10-09 Application activation framework

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020187000765A Division KR101907837B1 (ko) 2011-05-27 2011-10-09 애플리케이션 활성화 프레임워크

Publications (2)

Publication Number Publication Date
KR20140027341A true KR20140027341A (ko) 2014-03-06
KR101819266B1 KR101819266B1 (ko) 2018-02-28

Family

ID=47220183

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020137031388A KR101819266B1 (ko) 2011-05-27 2011-10-09 애플리케이션 활성화 프레임워크
KR1020187000765A KR101907837B1 (ko) 2011-05-27 2011-10-09 애플리케이션 활성화 프레임워크

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020187000765A KR101907837B1 (ko) 2011-05-27 2011-10-09 애플리케이션 활성화 프레임워크

Country Status (11)

Country Link
US (2) US9063776B2 (ko)
EP (1) EP2715534A4 (ko)
JP (1) JP5932981B2 (ko)
KR (2) KR101819266B1 (ko)
CN (1) CN103562859B (ko)
AU (1) AU2011369361B2 (ko)
BR (1) BR112013030285A2 (ko)
CA (2) CA2990794C (ko)
MX (1) MX2013013918A (ko)
RU (1) RU2580079C2 (ko)
WO (1) WO2012166178A1 (ko)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9063776B2 (en) 2011-05-27 2015-06-23 Microsoft Technology Licensing, Llc Application activation framework
WO2013100992A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Context-state management
GB2503920A (en) * 2012-07-12 2014-01-15 Ibm Using a tag to identify the application context for a program object
WO2014120691A1 (en) * 2013-01-29 2014-08-07 Good Technology Corporation Methods for activation of an application on a user device
US10430418B2 (en) 2013-05-29 2019-10-01 Microsoft Technology Licensing, Llc Context-based actions from a source application
US11263221B2 (en) 2013-05-29 2022-03-01 Microsoft Technology Licensing, Llc Search result contexts for application launch
CA2970310C (en) * 2014-12-15 2023-09-26 Good Technology Holdings Limited Secure storage
CN114296854B (zh) * 2021-12-28 2024-04-26 珠海豹趣科技有限公司 一种桌面壁纸显示方法、装置、电子设备及可读存储介质

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6765592B1 (en) * 1999-04-30 2004-07-20 Microsoft Corporation Undockable sub-windows
US20020120741A1 (en) * 2000-03-03 2002-08-29 Webb Theodore S. Systems and methods for using distributed interconnects in information management enviroments
JP2004531780A (ja) * 2000-06-22 2004-10-14 マイクロソフト コーポレーション 分散型コンピューティングサービスプラットフォーム
US7325032B2 (en) 2001-02-16 2008-01-29 Microsoft Corporation System and method for passing context-sensitive information from a first application to a second application on a mobile device
US7890771B2 (en) * 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
US20080313282A1 (en) * 2002-09-10 2008-12-18 Warila Bruce W User interface, operating system and architecture
US7188155B2 (en) * 2002-12-17 2007-03-06 International Business Machines Corporation Apparatus and method for selecting a web service in response to a request from a client device
US7493614B2 (en) * 2003-03-31 2009-02-17 Microsoft Corporation System architecture and related methods for dynamically adding software components to extend functionality of system processes
US20040233236A1 (en) 2003-05-24 2004-11-25 Yang Dennis Woojun Apparatus and method for generating application programming interface
US7774762B2 (en) 2003-09-15 2010-08-10 Trigence Corp. System including run-time software to enable a software application to execute on an incompatible computer platform
US7594225B2 (en) 2004-12-20 2009-09-22 Microsoft Corporation Integrated setup for generating customization XML
US7793260B2 (en) 2005-04-25 2010-09-07 Microsoft Corporation System for defining and activating pluggable user interface components for a deployed application
US7886018B2 (en) 2005-06-24 2011-02-08 Oracle International Corporation Portable metadata service framework
US7523444B2 (en) * 2005-06-27 2009-04-21 Microsoft Corporation Managed automation programming model
US7698685B2 (en) 2005-10-12 2010-04-13 Microsoft Corporation Discovery, qualification, and activation of software add-in components
US8074231B2 (en) * 2005-10-26 2011-12-06 Microsoft Corporation Configuration of isolated extensions and device drivers
US8539497B2 (en) * 2006-03-30 2013-09-17 Microsoft Corporation Method for organizing software so the set of extensions for an extendable application can be run securely
US8732661B2 (en) 2007-02-01 2014-05-20 Microsoft Corporation User experience customization framework
US20080209316A1 (en) * 2007-02-27 2008-08-28 Yahoo! Inc. System and method of implementing an extensible command-line interface
US7720800B2 (en) * 2007-07-06 2010-05-18 International Business Machines Corporation Method and approach to hosting versioned web services
US8745573B2 (en) 2008-06-16 2014-06-03 Beek Fund B.V. L.L.C. Platform-independent application development framework
US8904345B2 (en) 2008-09-30 2014-12-02 Ebay Inc. System and method for orchestration of customization for a user experience
US8099472B2 (en) 2008-10-21 2012-01-17 Lookout, Inc. System and method for a mobile cross-platform software system
US20100235493A1 (en) * 2009-03-16 2010-09-16 Besaw Lawrence M Extendable distributed network management system and method
US8776088B2 (en) * 2009-03-30 2014-07-08 Microsoft Corporation Operating system distributed over heterogeneous platforms
US8448074B2 (en) * 2009-05-01 2013-05-21 Qualcomm Incorporated Method and apparatus for providing portioned web pages in a graphical user interface
US9165084B2 (en) * 2009-12-04 2015-10-20 Sony Corporation Adaptive selection of a search engine on a wireless communication device
US9063776B2 (en) 2011-05-27 2015-06-23 Microsoft Technology Licensing, Llc Application activation framework

Also Published As

Publication number Publication date
AU2011369361A1 (en) 2013-12-19
EP2715534A4 (en) 2015-05-06
CN103562859B (zh) 2019-01-08
EP2715534A1 (en) 2014-04-09
RU2580079C2 (ru) 2016-04-10
KR20180008872A (ko) 2018-01-24
KR101819266B1 (ko) 2018-02-28
WO2012166178A1 (en) 2012-12-06
MX2013013918A (es) 2013-12-16
CA2990794A1 (en) 2012-12-06
US20150286499A1 (en) 2015-10-08
AU2011369361B2 (en) 2016-12-01
CN103562859A (zh) 2014-02-05
US9063776B2 (en) 2015-06-23
CA2836235C (en) 2019-10-01
CA2990794C (en) 2020-04-14
JP2014519110A (ja) 2014-08-07
US9519511B2 (en) 2016-12-13
US20120304200A1 (en) 2012-11-29
RU2013152601A (ru) 2015-06-10
CA2836235A1 (en) 2012-12-06
BR112013030285A2 (pt) 2016-11-29
KR101907837B1 (ko) 2018-10-12
JP5932981B2 (ja) 2016-06-08

Similar Documents

Publication Publication Date Title
KR101907837B1 (ko) 애플리케이션 활성화 프레임워크
US20170185617A1 (en) Data Object Based Application State Sharing Methods for User Devices
US20170359701A1 (en) Sticker distribution system for messaging apps
US11375045B2 (en) Dynamic user interface delivery system
CN113312037A (zh) 应用于微服务的数据处理方法、装置、设备和存储介质
US11321422B1 (en) User-configurable aggregate web components
US20230058197A1 (en) Distributed software development pipeline for coherent graphical user interface
EP3338181A1 (en) Application installs using remote applications
US9684610B2 (en) Platform neutral device protocols
JP2021535461A (ja) ウェブ・アプリケーション実行のためのクライアント・アプリケーション
US20160019014A1 (en) Information processing apparatus and method for the same
US10255063B2 (en) Providing source control of custom code for a user without providing source control of host code for the user
US10291743B2 (en) Configuring service endpoints in native client applications
US11438482B2 (en) Controlling an image forming device via a web application
JP2019536173A (ja) アプリケーションのリソース使用量の削減
US11385876B1 (en) Infrastructure control interface for database systems
US20230385038A1 (en) Sharing components among applications method for web application development
US20140237484A1 (en) Generalized application message generation service
CN115048098A (zh) 一种流程自动化方法、设备、系统和存储介质

Legal Events

Date Code Title Description
N231 Notification of change of applicant
A201 Request for examination
E701 Decision to grant or registration of patent right
A107 Divisional application of patent
GRNT Written decision to grant