KR20080047447A - 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템, 이시스템에서 사용하기 위한 컴퓨터 프로그램 제품, 및 이시스템에서 애플리케이션에 이용가능한 애드-인 컴포넌트가이 애플리케이션에서 이용되도록 자격이 부여되는지를판정하기 위한 방법 - Google Patents

애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템, 이시스템에서 사용하기 위한 컴퓨터 프로그램 제품, 및 이시스템에서 애플리케이션에 이용가능한 애드-인 컴포넌트가이 애플리케이션에서 이용되도록 자격이 부여되는지를판정하기 위한 방법 Download PDF

Info

Publication number
KR20080047447A
KR20080047447A KR1020087008714A KR20087008714A KR20080047447A KR 20080047447 A KR20080047447 A KR 20080047447A KR 1020087008714 A KR1020087008714 A KR 1020087008714A KR 20087008714 A KR20087008714 A KR 20087008714A KR 20080047447 A KR20080047447 A KR 20080047447A
Authority
KR
South Korea
Prior art keywords
add
component
application
computer system
computer
Prior art date
Application number
KR1020087008714A
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 KR20080047447A publication Critical patent/KR20080047447A/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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/448Execution paradigms, e.g. implementations of programming paradigms

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)

Abstract

본 발명은 소프트웨어 애드-인 컴포넌트를 발견하고, 자격을 부여하고, 활성화하기 위한 방법, 시스템, 및 컴퓨터 프로그램 제품을 제공한다. 애드-인 컴포넌트 관리자는 컴퓨터 시스템의 하나 이상의 애드-인 컴포넌트가 애플리케이션이 요청한 특정 유형의 애드-인 컴포넌트임을 발견한다. 애드-인 컴포넌트 관리자는 적어도 하나의 발견된 애드-인 컴포넌트에, 하나 이상의 자격 부여 제약사항을 만족시키는 적어도 하나의 발견된 애드-인 컴포넌트에 기초하여 자격을 부여한다. 하나 이상의 자격 부여 제약사항은 애드-인 컴포넌트가 원하는 방식으로 애플리케이션과 상호동작하기 위해 애드-인 컴포넌트와 관련되어야 할 기능성을 나타낸다. 애드-인 컴포넌트 관리자는 하나 이상의 자격 부여 제약사항에 따라 애플리케이션에서 이용되도록 자격이 부여된 애드-인 컴포넌트를 활성화한다.
Figure P1020087008714
애드-인 컴포넌트, 애플리케이션

Description

애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템, 이 시스템에서 사용하기 위한 컴퓨터 프로그램 제품, 및 이 시스템에서 애플리케이션에 이용가능한 애드-인 컴포넌트가 이 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하기 위한 방법{DISCOVERY, QUALIFICATION, AND ACTIVATION OF SOFTWARE ADD-IN COMPONENTS}
컴퓨터 시스템 및 관련 기술은 다양한 측면에서 사회에 영향을 미친다. 실제로, 컴퓨터 시스템의 정보 처리 능력은 우리가 살아가고 일을 하는 방식을 변형시키고 있다. 현재 컴퓨터 시스템은 통상적으로, 이 컴퓨터 시스템이 출현하기 이전에는 수동으로 수행되었던 다수의 태스크들(예를 들면, 워드 프로세싱, 스케줄링, 및 데이터베이스 관리)을 수행한다. 보다 최근에는, 컴퓨터 시스템들이 서로 간에 및 다른 전자 장치들에 연결되어 유/무선 컴퓨터 네트워크를 형성하고 있는데, 이 네트워크를 통해 컴퓨터 시스템들 및 다른 전자 장치들이 전자 데이터를 전송할 수 있다. 결과적으로, 컴퓨터 시스템에서 수행되는 여러 가지 태스크(예를 들면, 음성 통신, 전자 메일 액세스, 가정용 가전 제품 제어, 웹 브라우징, 및 문서 인쇄)는, 유선 및/또는 무선 컴퓨터 네트워크를 통해 복수의 컴퓨터 시스템들 및/또는 다른 전자 장치들 간에 전자 메시지를 교환하는 것을 포함한다.
소프트웨어 애플리케이션(예를 들면, 워드 프로세서, 전자 메일 클라이언트, 등)은 종종 애플리케이션의 서로 다른 소프트웨어 컴포넌트들이 상호 동작하여 원하는 기능을 제공하도록 하는 모듈러 방식으로 설계된다. 그러한 것으로서, 애플리케이션의 모듈들은 런타임시 최종-사용자에 의해 어셈블링될 수 있으며 종종 서로 다른 시점에서 서로 다른 벤더들에 의해 제공된다. 이러한 모듈성(modularity)은 애플리케이션의 특징 집합이 동적으로 변할 수 있게 하여 대규모 애플리케이션의 효율적인 분산된 개발을 촉진시킨다.
예를 들면, 서로 다른 개발자 팀들이 따로 떨어져서 애플리케이션의 각종 모듈들에 대한 작업을 하고 추후에 이 모듈들을 결합할 수 있다. 개발 중에, 서로 다른 모듈들은 런타임 시에 서로 상호동작하도록 설계될 수 있다. 종종, 소프트웨어 개발 팀 멤버들은 서로를 알 수 있으며 모두가 (예를 들면, 특정한 애플리케이션을 개발하도록 특별히 지정된) 동일한 회사의 직원일 수 있다. 한편, 서로 다른 개발자 팀에는 특정 모듈을 제공하기 위한 소프트웨어 사양이 주어질 수 있으며 이 서로 다른 팀들은 서로를 알지 못한다.
애플리케이션 개발은, 본래에는 애플리케이션으로 설계되지 않은 추가적 및/또는 다른 기능성을 제공하는 다른(그리고 잠재적으로 추후에 개발되는) 모듈(예를 들면, 애드-인(add-ins))과의 상호 동작을 위한 인터페이스를 개발하는 것을 포함할 수 있다. 예를 들면, 웹 브라우저는 통상적으로, 예를 들어, 포매팅된 컨텐츠(예를 들면, 플래시 에니메이션, 휴대용 문서 포맷 문서, 등)의 적절한 처리를 용이하게 하기 위한 플러그인(plug-in)(이를 구비하지 않을 경우 이러한 컨텐츠 처리를 할 수 없을 수 있음)을 로드하는 기능성을 포함한다. 플러그인 및 어드인(add- in)은 타깃 애플리케이션의 개발자에 의해 개발될 가능성이 있지만 종종 제3 개발자에 의해 개발되기도 한다. 즉, 애드-인 개발자가, 이 애드-인과 함께 동작하도록 설계된 애플리케이션의 개발자가 아닌 경우가 종종 있다.
결과적으로, 애플리케이션 및 대응하는 애드-인은 종종 서로 다른 시점에서 컴퓨터 시스템에 설치(또는 저장)된다. 애드-인을 로딩하기 위하여, 애플리케이션은 이 애드-인의 이름을 이용하여 적절한 인터페이스를 호출한다. 그러나, 애플리케이션이 애드-인을 로딩하기 위하여, 애플리케이션은 통상적으로 애드-인의 이름 및 (예를 들면, 파일 시스템에서의) 위치를 알아야 한다. 그러한 것으로서, 애드-인 디렉토리의 경로가 통상적으로 애플리케이션에 하드-코딩(hard-coded)된다. 애플리케이션이 애드-인을 이용하기 위해서는, 이 애드-인이 적절한 애드-인 디렉토리에 저장되어야 한다.
각 애플리케이션이 다른 애드-인 디렉토리에 대한 하드-코딩된 경로를 가질 수 있기 때문에, 컴퓨터 시스템에는 복수의 애드-인 디렉토리가 있을 수 있다. 몇 가지 애드-인이 복수의 서로 다른 애플리케이션(예를 들면, 워드 프로세서, 전자 메일 클라이언트, 스프레드시트 애플리케이션, 등)에 유사한 기능성(예를 들면, 디렉토리)을 제공하도록 설계될 수 있다. 그러나, 복수의 서로 다른 애플리케이션에 유사한 기능을 제공하기 위해서는, 각 애플리케이션에 대한 애드-인의 위치에 애드-인의 개별적인 사본이 저장되어야 한다. 결과적으로, 애드-인은 컴퓨터 시스템에서의 복수의 위치에 중복되어 저장될 수 있다. 일부 환경에서는, 원하는 기능성을 구비한 애드-인이 컴퓨터 시스템에 저장될 수 있지만 이 애드-인이 다른 애플리케 이션에 대한 애드-인 디렉토리에 저장되었기 때문에 알려지지 않았고/거나 액세스될 수 없게 된다.
애드-인의 개발은 통상적으로 애드-인을 로딩하기 위하여 애플리케이션이 사용하는 인터페이스를 애드-인 개발자가 알아야 함을 요구한다. 즉, 애드-인 개발자가 복수의 서로 다른 애플리케이션에 유사한 애드-인 기능성을 제공하기를 원한다면, 애드-인 개발자는 이 서로 다른 애플리케이션 각각에 대해 적절한 인터페이스를 가지는 애드-인을 개발해야 한다. 또한, 애플리케이션 업데이트가 애플리케이션 인터페이스를 변경한다면, 애드-인도 호환을 위해 업데이트될 필요가 있을 수도 있다. 즉 애드-인 개발자는, 애드-인에 어떠한 새로운 기능도 전혀 포함되지 않는 경우에도 호환을 위해 애드-인의 새로운 버전을 자주 배포할 필요가 있을 수 있다.
전술한 바와 같이, 애드-인의 기능을 액세스하는 것은 통상적으로 애플리케이션 특정 애드-인 디렉토리로부터의 이름에 의해 애드-인을 로딩하는 것을 포함한다. 그러나, 애드-인을 로딩하기 전에는, 애플리케이션은 애드-인이 의도한 대로 동작할 것이며 이 애드-인은 안전하다는 보장을, 설사 있다 해도 거의 갖지 못한다. 통상적으로, 애드-인이 어떻게 동작할 것인지를 결정하는 데에 이용될 수 있는 유일한 매카니즘은 애드-인을 로딩하고 런타임 시에 이를 테스트하는 것이다. 즉, 애플리케이션은 부적절하게 구성된 애드-인이 부적절하게 구성되었다고 판정하기 위해서 반드시 이 어드인을 로딩하고 실행시켜야 한다. 애플리케이션이 부적절하게 구성된 애드-인을 사용하면 컴퓨터 시스템은 제대로 작동하지 않게 된다.
애드-인을 사용하면, 애드-인 내의 악성 코드가 애플리케이션과 인터페이스함으로써 보호되는 시스템 기능으로의 액세스를 획득할 수 있기 때문에, 보안 위험도 지니게 된다. 그러나, 애플리케이션이 가질 수 있는, 애드-인을 로딩하고 실행시키지 않고도 애드-인이 악성 코드를 포함하고 있다고 판정하기 위한 메카니즘은, 설사 있다 해도 그 한계가 있다. 한 해결책은 애플리케이션이 임의의 애드-인을 이용하지 못하게 하는 것이다. 그러나, 이러한 해결책은 애플리케이션의 기능을 향상시키도록 적절히 구성된 애드-인을 이용하지 못하게 한다.
본 발명은 소프트웨어 애드-인 컴포넌트를 발견하고, 자격을 부여하고(qualifying), 활성화하기 위한 방법, 시스템, 및 컴퓨터 프로그램 제품을 제공한다. 몇몇의 실시예에서, 컴퓨터 시스템은 애플리케이션에 이용가능한 애드-인을 발견한다. 애드-인 컴포넌트 관리자는 애플리케이션으로부터 이용가능한 애드-인 컴포넌트에 대한 요청을 수신한다. 이 요청은 애플리케이션이 요청하고 있는 특정 유형의 애드-인 컴포넌트를 나타내는 선택가능한 애드-인 컴포넌트 속성을 포함한다.
애드-인 컴포넌트 관리자는 선택가능한 애드-인 컴포넌트 속성을 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리의 내용물과 비교한다. 애드-인 컴포넌트 엔트리는 컴퓨터 시스템의 다른 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리를 또한 포함하는 애드-인 컴포넌트 인덱스에 포함된다. 애드-인 컴포넌트 엔트리는 애드-인 컴포넌트 관리자에서의 등록 처리 중에 식별되는 애드-인 컴포넌트의 기능성을 나타내는 하나 이상의 속성을 포함한다. 애드-인 컴포넌트 관리자는 애드-인 컴포넌트가 그 비교의 결과에 기초하여 애플리케이션에 의해 요청된 특정 유형이라고 판정한다. 애드-인 컴포넌트 관리자는 애플리케이션에 이 애드-인 컴포넌트가 애플리케이션에 이용가능한 특정 유형의 애드-인 컴포넌트라고 표시한다.
다른 실시예에서, 컴퓨터 시스템은 애플리케이션에 이용가능한 애드-인 컴포넌트가 애플리케이션에서 이용되도록 자격이 부여되는지를 판정한다. 애드-인 컴포넌트 관리자는 애플리케이션에 이용가능한 후보 애드-인 컴포넌트에 대한 하나 이상의 식별된 속성을 액세스한다. 하나 이상의 식별된 속성은 후보 애드-인 컴포넌트와 연관된 기능성을 나타낸다. 애드-인 컴포넌트는 컴퓨터 시스템의 다른 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리를 또한 포함하는 애드-인 컴포넌트 인덱스의 애드-인 컴포넌트 엔트리에 나타난다.
컴포넌트 관리자는 애플리케이션으로부터 하나 이상의 자격 부여 제약사항을 만족시키는 애드-인 컴포넌트에 대한 요청을 수신한다. 각 자격 부여 제약사항은 애드-인 컴포넌트가 애플리케이션과 적절히 동작하기 위해 애드-인 컴포넌트에 관련되어야 할 기능성을 나타낸다. 컴포넌트 관리자는 하나 이상의 자격 부여 제약사항과 하나 이상의 식별된 속성을 비교한다. 컴포넌트 관리자는 하나 이상의 자격 부여 제약사항을 하나 이상의 식별된 속성과 비교한 결과에 기초하여 후보 애드-인 컴포넌트가 애플리케이션에서 이용되도록 자격이 부여되는지를 판정한다.
또 다른 실시예에서, 컴퓨터 시스템은 요청된 애드-인 컴포넌트 기능성에 기초하여 애플리케이션에서 이용되도록 애드-인 컴포넌트를 로딩한다. 애드-인 컴포넌트 관리자는 컴퓨터 시스템의 하나 이상의 애드-인 컴포넌트가 애플리케이션이 요청한 특정 유형의 애드-인 컴포넌트임을 발견한다. 애드-인 컴포넌트 관리자는 적어도 하나의 발견된 애드-인 컴포넌트에, 하나 이상의 자격 부여 제약사항을 만족시키는 적어도 하나의 발견된 애드-인 컴포넌트에 기초하여 자격을 부여한다. 하나 이상의 자격 부여 제약사항은 애드-인 컴포넌트가 원하는 방식으로 애플리케이션과 상호동작하기 위해 애드-인 컴포넌트와 관련되어야 할 기능성을 나타낸다. 애드-인 컴포넌트 관리자는 하나 이상의 자격 부여 제약사항에 따라 애플리케이션에서 이용되도록 자격이 부여된 애드-인 컴포넌트를 활성화한다.
이 발명의 상세한 설명 섹션은 이하 실시예 섹션에서 더 기술될 내용 중 간단한 형태의 선택을 소개하기 위해 제공된 것이다. 이 발명의 상세한 설명 섹션은 청구된 요지의 핵심 특징 또는 필수적인 특징을 식별하는 것을 의도한 것도 아니며 청구된 요지의 범주를 결정하는 것을 돕는 데에 이용되는 것을 의도한 것도 아니다.
본 발명의 추가적인 특징 및 이점은 이하 상세한 설명에서 설명될 것이며, 일부는 이 상세한 설명으로부터 명백할 것이거나, 본 발명의 실행에 의해 습득될 수 있다. 본 발명의 특징 및 이점은 첨부된 청구항에 특별히 지정된 기구 및 그 조합에 의해 실현되고 획득될 수 있다. 본 발명의 이들 및 그 외의 특징은 이하의 설명 및 첨부된 청구항으로부터 보다 완전히 명백해질 것이거나, 이하 설명될 바와 같이 본 발명의 실행에 의해 습득될 수 있다.
도 1은 소프트웨어 애드-인 컴포넌트의 발견, 자격 부여, 및 활성화를 용이하게 하는 컴퓨터 아키텍처를 도시.
도 2는 애플리케이션에 이용가능한 애드-인 컴포넌트를 발견하기 위한 방법의 흐름도.
도 3은 애플리케이션에 이용가능한 애드-인 컴포넌트가 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하기 위한 방법의 흐름도.
도 4는 요청된 애드-인 컴포넌트 기능성에 기초하여 애플리케이션에서 이용되도록 애드-인 컴포넌트를 로딩시키는 방법의 흐름도.
본 발명의, 앞서 언급한 이점과 특징, 및 그 외의 이점과 특징이 획득될 수 있는 방식을 기술하기 위하여, 앞서 간단히 기술한 본 발명의 보다 상세한 설명은 첨부된 도면에 도시된 본 발명의 특정 실시예를 참조하여 이루어질 수 있다. 이들 도면은 본 발명의 통상적인 실시예만을 도시한 것이며 따라서 그 범주를 한정하는 것으로 고려되지 않음을 이해하면서, 본 발명은 첨부된 도면의 사용에 의해 보다 구체적이고 상세하게 기술되고 설명될 것이다.
본 발명은 소프트웨어 애드-인 컴포넌트를 발견하고, 자격을 부여하고, 활성화하기 위한 방법, 시스템, 및 컴퓨터 프로그램 제품을 제공한다. 몇몇의 실시예에서, 컴퓨터 시스템은 애플리케이션에 이용가능한 애드-인을 발견한다. 애드-인 컴포넌트 관리자는 애플리케이션으로부터 이용가능한 애드-인 컴포넌트에 대한 요청을 수신한다. 이 요청은 애플리케이션이 요청하고 있는 특정 유형의 애드-인 컴 포넌트를 나타내는 선택가능한 애드-인 컴포넌트 속성을 포함한다.
애드-인 컴포넌트 관리자는 선택가능한 애드-인 컴포넌트 속성을 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리의 내용물과 비교한다. 애드-인 컴포넌트 엔트리는 컴퓨터 시스템의 다른 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리를 또한 포함하는 애드-인 컴포넌트 인덱스에 포함된다. 애드-인 컴포넌트 엔트리는 애드-인 컴포넌트 관리자에서의 등록 처리 중에 식별되는 애드-인 컴포넌트의 기능성을 나타내는 하나 이상의 속성을 포함한다. 애드-인 컴포넌트 관리자는 애드-인 컴포넌트가 그 비교의 결과에 기초하여 애플리케이션에 의해 요청된 특정 유형이라고 판정한다. 애드-인 컴포넌트 관리자는 애플리케이션에 이 애드-인 컴포넌트가 애플리케이션에 이용가능한 특정 유형의 애드-인 컴포넌트라고 표시한다.
다른 실시예에서, 컴퓨터 시스템은 애플리케이션에 이용가능한 애드-인 컴포넌트가 애플리케이션에서 이용되도록 자격이 부여되는지를 판정한다. 애드-인 컴포넌트 관리자는 애플리케이션에 이용가능한 후보 애드-인 컴포넌트에 대한 하나 이상의 식별된 속성을 액세스한다. 하나 이상의 식별된 속성은 후보 애드-인 컴포넌트와 연관된 기능성을 나타낸다. 애드-인 컴포넌트는 컴퓨터 시스템의 다른 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리를 또한 포함하는 애드-인 컴포넌트 인덱스의 애드-인 컴포넌트 엔트리에 나타난다.
컴포넌트 관리자는 애플리케이션으로부터 하나 이상의 자격 부여 제약사항을 만족시키는 애드-인 컴포넌트에 대한 요청을 수신한다. 각 자격 부여 제약사항은 애드-인 컴포넌트가 애플리케이션과 적절히 동작하기 위해 애드-인 컴포넌트에 관 련되어야 할 기능성을 나타낸다. 컴포넌트 관리자는 하나 이상의 자격 부여 제약사항과 하나 이상의 식별된 속성을 비교한다. 컴포넌트 관리자는 하나 이상의 자격 부여 제약사항을 하나 이상의 식별된 속성과 비교한 결과에 기초하여 후보 애드-인 컴포넌트가 애플리케이션에서 이용되도록 자격이 부여되는지를 판정한다.
또 다른 실시예에서, 컴퓨터 시스템은 요청된 애드-인 컴포넌트 기능성에 기초하여 애플리케이션에서 이용되도록 애드-인 컴포넌트를 로딩한다. 애드-인 컴포넌트 관리자는 컴퓨터 시스템의 하나 이상의 애드-인 컴포넌트가 애플리케이션이 요청한 특정 유형의 애드-인 컴포넌트임을 발견한다. 애드-인 컴포넌트 관리자는 적어도 하나의 발견된 애드-인 컴포넌트에, 하나 이상의 자격 부여 제약사항을 만족시키는 적어도 하나의 발견된 애드-인 컴포넌트에 기초하여 자격을 부여한다. 하나 이상의 자격 부여 제약사항은 애드-인 컴포넌트가 원하는 방식으로 애플리케이션과 상호동작하기 위해 애드-인 컴포넌트와 관련되어야 할 기능성을 나타낸다. 애드-인 컴포넌트 관리자는 하나 이상의 자격 부여 제약사항에 따라 애플리케이션에서 이용되도록 자격이 부여된 애드-인 컴포넌트를 활성화한다.
본 발명의 실시예는 이하 보다 상세히 설명될 바와 같이, 컴퓨터 하드웨어를 포함하는 특수 목적 또는 범용 컴퓨터를 포함할 수 있다. 본 발명의 범주 내의 실시예는 또한 컴퓨터 실행가능 명령어 또는 데이터 구조를 반송하거나 저장하는 컴퓨터 판독가능 매체를 포함한다. 이러한 컴퓨터 판독가능 매체는 범용 또는 특수 목적의 컴퓨터가 액세스할 수 있는 매체라면 어느 것이든 될 수 있다. 예로서, 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광 디스크 저장 장치, 자기 디스크 저장 장치 또는 기타 자기 저장 장치, 또는 컴퓨터 실행가능 명령어 또는 데이터 구조 형태로 원하는 프로그램 코드 수단을 저장하는 데에 이용될 수 있고 범용 또는 특수 목적의 컴퓨터에 의해 액세스될 수 있는 임의의 기타 매체 등의 컴퓨터-판독가능 저장 매체를 포함할 수 있지만 이에 한정되지 않는다.
본 설명 및 이하 청구항에서, "네트워크"는 컴퓨터 시스템 및/또는 모듈들 간의 전자 데이터의 전송을 가능하게 하는 하나 이상의 데이터 링크로서 정의된다. 정보가 네트워크 또는 기타 통신 접속(유선, 무선, 또는 유/무선 조합)을 통해 컴퓨터로 전송되거나 제공되는 경우, 컴퓨터는 이 접속을 적절히 컴퓨터 판독가능 매체로 본다. 즉, 예로서, 컴퓨터 판독가능 매체는 범용 또는 특수 목적의 컴퓨터에 의해 액세스될 수 있고 컴퓨터-판독가능 명령어 또는 데이터 구조 형태로 원하는 프로그램 코드 수단을 반송하거나 저장하는 데에 이용될 수 있는 네트워크 또는 데이터 링크를 포함할 수 있지만, 이에 한정되지 않는다.
컴퓨터 실행가능 명령어는, 예를 들면, 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적의 처리 장치로 하여금 특정 기능 또는 기능들의 그룹을 수행하게 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는, 예를 들어, 어셈블리어와 같은 2진, 중간 포맷 명령어일 수 있고, 또는 소스 코드도 될 수 있다. 본원의 요지는 구조적인 특징 및/또는 방법론적인 행위에 특정된 언어로 기술되었지만, 첨부된 청구범위에 정의된 요지는 상술한 특징 또는 행위에 반드시 제한된 것은 아니라고 이해되어야 한다. 오히려, 기술된 특징 및 행위는 청구항들을 구현하는 예시적인 형태로서 개시된 것이다.
당업자들은 퍼스널 컴퓨터, 랩톱 컴퓨터, 핸드-헬드 장치, 멀티-프로세서 시스템, 마이크로프로세서-기반 또는 프로그램가능한 가전 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일폰, PDA, 페이저 등을 포함하는 다양한 유형의 컴퓨터 시스템 구성을 가지는 네트워크 컴퓨팅 환경에서 실행될 수 있다고 인식할 것이다. 본 발명은 또한 네트워크를 통하여 (유선 데이터 링크, 무선 데이터 링크, 또는 유/무선 데이터 링크들의 조합에 의해) 링크된 로컬 및 원격 컴퓨터 시스템 모두가 태스크를 수행하는 분산형 시스템 환경에서 실행될 수도 있다. 분산형 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치에 모두 위치될 수 있다.
도 1은 소프트웨어 애드-인 컴포넌트의 발견, 자격 부여, 및 활성화를 용이하게 하는 컴퓨터 아키텍처(100)의 일례를 도시한다. 컴퓨터 아키텍처(100)에는 컴퓨터 시스템의 컴포넌트들이 도시된다. 컴퓨터 시스템은 예를 들어, LAN, WAM, 또는 인터넷 등의 네트워크에 접속될 수 있다. 즉, 컴퓨터 시스템 및 기타 네트워크 접속 컴퓨터 시스템은 네트워크에 접속된 다른 컴퓨터 시스템들로부터 데이터를 수신하고 이러한 컴퓨터 시스템들에 데이터를 송신할 수 있다. 따라서, 컴퓨터 및 그 외의 접속된 컴퓨터 시스템들(도시 생략)은 메시지 관련 데이터(예를 들면, 인터넷 프로토콜("IP") 다이어그램 및 "TCP"(Transmission Control Protocol) "HTTP"(Hypertext Transfer Protocol), "SMTP"(Simple Mail Transfer Protocol) 등의 IP 다이어그램을 이용하는 기타 상위 계층 프로토콜)를 생성하고 네트워크를 통해 메시지 관련 데이터를 교환할 수 있다.
컴퓨터 시스템 아키텍처(100)는 애플리케이션(101), 컴포넌트 관리자(102), 및 저장소(103)를 포함한다. 컴퓨터 아키텍처(100) 내에서, 시스템 메모리에 상주하는 (또는 그와 대화하는) 항목들은 실선으로 둘러싸여 있다. 예를 들면, 애플리케이션(101) 및 컴포넌트 관리자(102)가 시스템 메모리에 로딩된다. 반면에, 저장소(103)에 상주하는 항목들은 실선으로 둘러싸여 있다. 예를 들면, 컴포넌트(121, 122, 및 123) 및 컴포넌트 인덱스(104)의 컴포넌트 엔트리들은 저장소(103)에 상주한다. 서로 다른 시점에서, 동일한 아이템이 시스템 메모리 및/또는 저장소(103)에 상주할 수 있다. 예를 들면, 컴포넌트(122)가 활성화되어 컴포넌트(122)의 일부가 저장소(103)로부터 시스템 메모리에 로딩되게 한다(그러나 저장소(103)에도 상주함).
일반적으로, 애플리케이션(101)은 기능을 강화시키기 위해 소프트웨어 애드-인 컴포넌트를 이용하도록 구성되는 애플리케이션이다. 예를 들면, 애플리케이션(101)은 외부적인 사전을 로딩할 수 있는 워드 프로세싱 애플리케이션 또는 특정 유형의 컨텐츠의 플러그-인을 로딩시킬 수 있는 웹 브라우저일 수 있다. 애플리케이션(101)은 소프트웨어 애드-인 컴포넌트와 상호동작하기 위한 프로그램 인터페이스를 가질 수 있다. 애플리케이션(101)은 또한 애플리케이션(101)의 사용자가 소프트웨어 애드-인 컴포넌트의 유형 또는 소프트웨어 애드-인 컴포넌트가 애플리케이션(101)과 상호작용하기 위해 따라야 할 제약사항을 지정하게 해주는 사용자-인터페이스를 또한 포함할 수 있다.
컴포넌트 관리자(102)는 일반적으로 애플리케이션에 이용가능한 소프트웨어 애드-인 컴포넌트를 제공하도록 구성된다. 컴포넌트 관리자(102)는 운영 체제에 포함될 수 있고/거나 애플리케이션에 대한 소프트웨어 애드-인 컴포넌트를 관리하는 미들웨어의 일부일 수 있다. 컴포넌트 관리자(102)는 소프트웨어 애드-인 컴포넌트에 대한 애플리케이션 요청을 수신하고, 이 요청을 만족하는 소프트웨어 애드-인 컴포넌트를 식별하고, 식별된 소프트웨어 애드-인 컴포넌트를 애플리케이션에 다시 반환하는 기능성을 포함한다.
또한, 등록 처리의 일부로서, 소프트웨어 애드-인 컴포넌트가 컴퓨터 아키텍처(100)에 설치될 때, 컴포넌트 관리자(102)는 소프트웨어 애드-인 컴포넌트를 액세스할 수 있다. 예를 들면, 컴포넌트 관리자(102)는 컴포넌트(122)를 액세스할 수 있다. 컴포넌트 관리자(102)는 액세스된 소프트웨어 애드-인 컴포넌트를 분석하여(예를 들면, 설치 정보에 기초하여) 예를 들어, 컴포넌트(122)가 저장소(103)에 저장될 수 있는 파일 경로 및 이름 등의 위치를 식별할 수 있다.
컴포넌트 관리자(102)는 또한 액세스된 소프트웨어 애드-인 컴포넌트를 분석하여 (예를 들면, 리플렉션(reflection))을 통해 소프트웨어 애드-인 컴포넌트의 유형 및 소프트웨어 애드-인 컴포넌트의 동작적인 기능을 식별할 수 있다. 예를 들면, 컴포넌트 관리자(102)는 컴포넌트(112) 상의 속성들을 분석하여 컴포넌트(122)의 유형 및 동작적인 기능을 식별할 수 있다. 소프트웨어 애드-인 컴포넌트 유형은, 예를 들어, 사전, 컨텐츠 처리기, 등을 포함할 수 있다. 소프트웨어 애드-인 컴포넌트 동작적 기능들은 소프트웨어 애드-인 컴포넌트, 소프트웨어 애드-인 컴포넌트가 필요로 하고 지원하는 분리 경계, 및 소프트웨어 애드-인 컴포넌트 와 관련된 보안 설정을 포함할 수 있다.
컴포넌트 관리자(102)는 소프트웨어 애드-인 컴포넌트의 식별된 기능(즉, 유형 및 동작적인 기능)을 나타내는 하나 이상의 속성을 포함하는 컴포넌트 엔트리를 구축할 수 있다. 예를 들면, 컴포넌트 관리자(102)는 적어도 속성(141 및 151)을 포함하는 컴포넌트(122)에 대한 컴포넌트 엔트리(131)를 구축할 수 있다. 컴포넌트 엔트리의 속성들은, 예를 들면, 사전, 컨텐츠 처리기, 등의 소프트웨어 애드-인 컴포넌트의 유형을 나타낼 수 있다. 컴포넌트 엔트리의 속성은 또한 소프트웨어 애드-인 컴포넌트가 저장되는 (예를 들면, 파일 시스템 내의) 위치를 나타낼 수 있다.
컴포넌트 엔트리의 속성들은 소프트웨어 애드-인 컴포넌트용 인터페이스를 구현하는 데에 이용되는 약정(contract)(또는 엔트리 포인트 프로토콜)을 또한 나타낼 수 있다. 엔트리 포인트를 나타내는 속성은 특정 메너페스트(manifest) 스키마에 부착되고 소프트웨어 애드-인 컴포넌트에 포함된 어셈블리 또는 어셈블리들을 정의하는 XML(eXtensible Markup Language) 메너페스트(manifest)에 포함될 수 있다. 컴포넌트 관리자(102)는 소프트웨어 애드-인 컴포넌트를 분석하여 엔트리 포인트를 식별하고 이를 컴포넌트 엔트리의 속성에 나타낼 수 있다. 엔트리 포인트는 어셈블리로 된 인스턴스화가능(instantiable) 클래스일 수 있다. 클래스는 호스트 애플리케이션이 소프트웨어 애드-인 컴포넌트의 초기 훅업(hookup) 및 제어를 위해 이용하는 표준 프로토콜을 구현할 수 있다. 다음의 코드 예는 엔트리 포인트 프로토콜을 나타낸다.
Public interface IEntryPoint Protocol : IProtocol
{
void Startup(IProtocol hostObject);
void Shutdown();
}
속성들은 또한 소프트웨어 애드-인 컴포넌트를 실행하기 위한 위치(또는 분리 경계)를 표시할 수 있다. 위치는 소프트웨어 애드-인 컴포넌트가 요청 애플리케이션에서의 처리 내에 있는지 처리 외부에 있는지 또는 요청 애플리케이션과 동일한 애플리케이션 도메인에 있는지 다른 애플리케이션 도메인에 있는지를 표시할 수 있다. 지원되고 요구되는 분리 경계는 로컬 애플리케이션 도메인, 공유 애플리케이션 도메인, 사설 애플리케이션 도메인, 또는 기타 프로세스를 포함할 수 있다.
속성들은 또한 소프트웨어 애드-인 컴포넌트와 관련된 보안 설정을 나타낼 수 있다. 예를 들면, 속성들은 소프트웨어 애드-인 컴포넌트를 실행시키기 위한 허가(permission) 세트를 나타낼 수 있다.
컴포넌트 관리자(102)는 또한 컴포넌트 인덱스(104)의 소프트웨어 애드-인 컴포넌트에 대해 구축된 컴포넌트 엔트리를 저장할 수 있다. 컴포넌트 인덱스(104)는 실질적으로, 예를 들어, 시스템 레지스트리, 공유된 SQL 서버, XML 파일, 엑티브 디렉토리(Active Directory) 서버, 인터넷, 또는 파일 시스템 디렉토리 등의 임의의 데이터 리파지토리(repository)일 수 있다.
소프트웨어 애드-인 컴포넌트의 컴포넌트 관리자(102)의 분석 이후에 또는 이 분석과 병렬적으로, 소프트웨어 애드-인 컴포넌트가 저장소(103)에 저장될 수 있다. 예를 들면, 컴포넌트(122)는 컴포넌트(121 및 123)(및 세로방향 타원으로 나타낸 기타 소프트웨어 애드-인 컴포넌트)와 함께 저장소(103)에 저장될 수 있다. 그러므로, 저장소(103)의 각 소프트웨어 애드-인 컴포넌트는 컴포넌트 인덱스(104) 내의 (기능성을 나타내는 하나 이상의 속성을 가진) 대응하는 컴포넌트 엔트리를 가질 수 있다. 예를 들면, 컴포넌트 엔트리(131)는 컴포넌트(122)에 대응할 수 있으며, 컴포넌트 엔트리(132)는 컴포넌트(121)에 대응할 수 있으며, 이런식으로 다른 것들도 대응하는 엔트리를 가질 수 있다.
컴포넌트 관리자(102)는, 예를 들어, 애드-인의 개발자, 애플리케이션의 개발자 등과 같은 컴포넌트 관리자(102)에게 알려진 기준에 의해 컴포넌트 인덱스(104)를 정렬할 수 있다. 인덱스를 정렬함으로써, 예를 들어, 발견 중과 같은 이들 기준을 이용하는 검색은 보다 효율적이게 할 수 있다.
전술한 바와 같이, 컴포넌트 엔트리의 속성들은 대응하는 소프트웨어 애드-인 컴포넌트의 기능성을 나타낸다. 그러므로, 속성(141 및 151)들은 컴포넌트(122)의 기능성을 나타낼 수 있고 속성들(142 및 152)은 컴포넌트(121)의 기능성을 나타낼 수 있다. 컴포넌트(123) 및 저장소(103)의 다른 컴포넌트는 또한 하나 이상의 표시된 속성을 포함하는 컴포넌트 인덱스(104)의 대응하는 컴포넌트 엔트리들을 가질 수 있다. 컴포넌트 엔트리들(132 및 132)에는 각각 2개의 속성이 도시되지만, 실제로 컴포넌트 엔트리에는 대응하는 소프트웨어 애드-인 컴포넌트의 컴포넌트 관리자(102)의 분석에 적어도 일부 기초하여 임의의 개수의 속성이 포함될 수 있다.
도 2는 애플리케이션에 이용가능한 애드-인 컴포넌트를 발견하기 위한 방법(200)의 흐름도를 도시한다. 방법(200)은 컴퓨터 시스템 아키텍처(100)의 컴포넌트 및 데이터에 관련하여 기술될 것이다.
방법(200)은 애플리케이션으로부터 이용가능한 애드-인 컴포넌트에 대한 요청을 수신하는 행위를 포함한다(행위(201)). 이 요청은 애플리케이션이 요청하고 있는 특정 유형의 애드-인 컴포넌트를 나타내는 선택될 수 있는 애드-인 컴포넌트 속성을 포함한다. 예를 들면, 컴포넌트 관리자(102)는 애플리케이션(101)으로부터 속성(112)을 포함하는 요청(111)을 수신할 수 있다. 속성(112)은 애플리케이션(101)에 의해 요청되고 있는 특정 유형의 소프트웨어 애드-인 컴포넌트를 나타낼 수 있다. 몇몇의 실시예에서, 속성(112)은 애플리케이션(101)으로 미리 구성된다. 다른 대안적인 실시예에서, 애플리케이션(101)은 속성(112) (또는 몇몇의 다른 선택가능한 속성)의 사용자 선택을 수신한다.
방법(200)은 선택가능한 애드-인 컴포넌트 속성을 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리의 내용들과 비교하는 행위를 포함한다(행위(202)). 이 애드-인 컴포넌트 엔트리는 컴퓨터 시스템의 다른 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리를 또한 포함하는 애드-인 컴포넌트 인덱스에 포함된다. 이 애드-인 컴포넌트 엔트리는 애드-인 컴포넌트 관리자에서의 등록 처리 중에 식별되는 애드-인 컴포넌트의 기능성을 나타내는 하나 이상의 속성을 포함한다. 예를 들면, 컴포넌트 관리자(102)는 컴포넌트 인덱스(104)의 컴포넌트 엔트리에 대한 질 의(113)를 발행할 수 있다. 즉, 속성(112)은 컴포넌트 엔트리(131)의 (컴포넌트(122)의 기능성을 나타내는) 속성(141 및 151)과 비교될 수 있다.
방법(200)은 그 비교의 결과에 기초하여 애드-인 컴포넌트가 애플리케이션이 요청한 특정 유형이라고 판정하는 행위를 포함한다(행위(203)). 예를 들면, 컴포넌트 관리자(102)는 속성(112)을 속성(141)(또는 컴포넌트 엔트리(131)의 몇몇의 다른 속성)에 비교한 결과에 기초하여 컴포넌트(122)가 애플리케이션(101)이 요청한 소프트웨어 애드-인 컴포넌트의 유형이라고 판정할 수 있다. 컴포넌트 관리자(102)는 또한 하나 이상의 다른 컴포넌트도 그 특정 유형의 컴포넌트라고 판정할 수도 있다. 컴포넌트 관리자(102)는, 예를 들면, 임의의 특정 유형의 컴포넌트를 식별하는 컴포넌트 목록(114)일 수 있는 목록을 컴파일할 수 있다. 컴포넌트 리스트(114)는 또한 (유형 외에도) 컴포넌트 엔트리로부터의, 예를 들어, 소프트웨어 애드-인 컴포넌트의 동작적인 기능을 나타내는 속성 등의 기타 속성을 포함할 수 있다.
방법(200)은 애드-인 컴포넌트가 애플리케이션에 이용가능한 특정 유형의 애드-인 컴포넌트임을 애플리케이션에 표시하는 행위를 포함한다(행위(204)). 예를 들면, 컴포넌트 관리자(102)는 컴포넌트(122)가 속성(112)이 나타낸 유형의 컴포넌트임을 애플리케이션(101)에 알려줄 수 있다. 특정 유형의 컴포넌트들의 목록, 예를 들어, 컴포넌트 목록(114)이 컴파일되면, 컴포넌트 관리자는 애플리케이션(101)에 목록의 적어도 일부를 송신할 수 있다. 예를 들면, 컴포넌트 관리자(102)는 부분적인 목록(114P)을 애플리케이션(101)에 송신할 수 있다.
부분적인 목록(114P)은 특정 유형의 소프트웨어 애드-인 컴포넌트 각각을 식별하는 속성들을 포함할 수 있다. 컴포넌트 관리자(102)는 소프트웨어 애드-인 컴포넌트 동작 기능들을 나타내는 다른 속성들을 애플리케이션(101)에 송신하지 않고도 보유할 수 있다. 대안으로, 컴포넌트 관리자(102)는 애플리케이션(101)에 소프트웨어 애드-인 컴포넌트 동작 기능을 나타내는 속성들을 송신할 수 있다. 따라서, 애플리케이션(101)은 요청된 특정 유형의 임의의 이용가능한 소프트웨어 애드-인 컴포넌트(및 잠재적으로 소프트웨어 애드-인 컴포넌트의 다른 기능성)를 인지할 수 있게 된다.
방법(200)은 애드-인 컴포넌트 인덱스의 각 엔트리(예를 들면, 컴포넌트 인덱스(104)의 엔트리 각각)에 대하여 반복되어 잠재적으로 특정 유형의 다른 애드-인(컴포넌트(121 및 123))을 식별할 수 있다. 즉, 복수의 특정 유형 애드-인(즉, 모든 등록된 애드-인의 서브셋)이 발견될 수 있다. 따라서, 애드-인 컴포넌트는 애드-인이 등록될 때 애드-인 관리자(예를 들면, 컴포넌트 관리자(102))에 제공되는 정보에 기초하여 식별(발견)될 수 있다. 방법(200)은 애플리케이션이 특정 기능을 구현하는 데에 잠재적으로 이용할 수 있는 애드-인 컴포넌트에 대한 성긴 단위의 선택을 하는 데에 이용될 수 있다.
도 3은 애플리케이션에 이용될 수 있는 애드-인 컴포넌트가 애플리케이션에 이용되도록 자격이 부여되는지를 판정하기 위한 방법(300)의 흐름도를 도시한다. 방법(300)은 컴퓨터 시스템 아키텍처(100)의 컴포넌트 및 데이터에 관련하여 기술될 것이다.
방법(300)은 애플리케이션에 이용가능한 후보 애드-인 컴포넌트에 대한 하나 이상의 식별된 속성을 액세스하는 행위를 포함한다(행위(301)). 하나 이상의 식별된 속성은 후보 애드-인 컴포넌트와 관련된 기능성을 나타낸다. 애드-인 컴포넌트 인덱스의 애드-인 컴포넌트 엔트리에 나타나는 애드-인 컴포넌트는 또한 컴퓨터 시스템의 다른 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리를 포함한다. 예를 들면, 컴포넌트 관리자(102)는 컴포넌트 엔트리(131)로부터의 (컴포넌트(122)의 기능성을 나타내는) 속성(141 및 151)을 액세스할 수 있다. 대안으로, 컴포넌트 관리자(102)는 특정된 유형의 소프트웨어 애드-인 컴포넌트의 발견에 응답하여 이전에 컴파일링되었던 컴포넌트 목록(114)으로부터 속성(141 및 151)을 액세스할 수 있다.
다른 실시예에서, 컴포넌트 관리자(102)는 컴포넌트 엔트리 인덱스(104)에 저장되지 않은 컴포넌트(122)와 관련된 다른 정보를 액세스한다. 다른 관련 정보는 컴포넌트 인덱스(104)에 포함된 정보와는 별개로 및/또는 이 정보와 결합하여 액세스될 수 있다. 다른 관련 정보는 컴포넌트(122)에 액세스 또는 이용가능할 수 있거나 그렇지 않을 수 있으며 등록 처리 중에 컴포넌트 관리자(102)에 제공되었거나 그렇지 않았을 수 있다. 또한 컴포넌트 관리자(102)는 등록 처리 중에 컴포넌트로부터 수신된 정보를 버리거나 무시하도록 선택할 수 있다. 그러므로, 컴포넌트(122)가 컴포넌트 관리자(102)에 관련 정보를 제공하더라도, 관련 정보는 컴포넌트 엔트리(131)에 포함되지 않을 수 있다(또한 컴포넌트 인덱스(104)에 전혀 포함되지 않을 수 있다).
방법(300)은 애플리케이션으로부터 하나 이상의 자격 부여 제약사항을 만족시키는 애드-인 컴포넌트에 대한 요청을 수신하는 행위를 포함한다(행위(302)). 각 자격 부여 제약사항은 애드-인 컴포넌트가 애플리케이션과 적절히 동작하기 위해 애드-인 컴포넌트에 관련된 기능을 나타낸다. 예를 들면, 컴포넌트 관리자(102)는 애플리케이션(101)으로부터 제약사항(116)을 수신할 수 있다. 제약사항(116)은 소프트웨어 애드-인 컴포넌트가 애플리케이션(101)과 적절히 동작하기 위해 소프트웨어 애드-인 컴포넌트와 관련되어야 할 애드-인 컴포넌트 기능성을 나타낼 수 있다. 예를 들면, 제약사항(116)은 소프트웨어 애드-인 컴포넌트가 애플리케이션(101)과 동작할 때 특정 엔트리 포인트 프로토콜을 이용하고, 사설 애플리케이션 도메인에서 동작해야 함 등을 나타낼 수 있다.
몇몇의 실시예에서, 애드-인 컴포넌트는 애플리케이션이 애드-인 컴포넌트와 상호동작할 수 있기 전에 애플리케이션이 만족해야 하는 대응하는 하나 이상의 속성들을 특정하는 컴포넌트 인덱스에 하나 이상의 제약사항을 등록한다. 그러므로 컴포넌트(122)는 애플리케이션(101)이 컴포넌트(122)와 상호동작하기 위해 만족해야 하는 속성을 나타내는 하나 이상의 제약사항을 등록한다. 컴포넌트 관리자(102)는 애플리케이션에 애드-인 컴포넌트에 대한 제약사항을 송신할 수 있다. 예를 들면, 컴포넌트 관리자는 애플리케이션(101)에 (예를 들면, 컴포넌트(122)에 대한) 제약사항(116)을 송신할 수 있다.
애드-인 컴포넌트 제약사항은 행위에 대해 애플리케이션을 검사하거나 애플리케이션이 애드-인 컴포넌트와의 상호작용을 위해 그 행위를 변경하도록 요청하는 데에 이용될 수 있다. 예를 들면, 애플리케이션(101)은 동일한 애플리케이션 도메인에서 모든 애드-인 컴포넌트를 실행하는 것을 디폴트로 설정할 수 있다. 그러나, 컴포넌트(122)는 애플리케이션(101)이 (예를 들면, 컴포넌트(122)에 의해서만 이용되는) 개별적인 애플리케이션 도메인에서 컴포넌트(122)를 실행시키도록 강요할 수 있다. 그러므로, 몇몇의 실시예에서 자격 부여 처리는 애플리케이션과 애드-인 컴포넌트 간의 교섭으로서 보여질 수 있다. 즉, 애드-인 컴포넌트는 애플리케이션의 제약사항을 만족시켜야될 수 있고 애플리케이션은 애플리케이션과 애드-인 컴포넌트 간의 적절한 상호동작을 위해 애드-인 컴포넌트의 제약사항을 만족시켜야될 수 있다. 제약사항(116)에 대해 도시된 양방향 화살표는 교섭을 나타낸다.
방법(300)은 하나 이상의 자격 부여 제약사항과 하나 이상의 식별되는 속성을 비교하는 행위를 포함한다(행위(303)). 예를 들면, 컴포넌트 관리자(102)는 제약사항을 속성들(141 및 151)과 비교할 수 있다. 방법(300)은 하나 이상의 자격 부여 제약사항을 하나 이상의 식별된 속성과 비교한 결과에 기초하여 후보 애드-인 컴포넌트가 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하는 행위를 포함한다(행위(304)). 예를 들면, 컴포넌트 관리자(102)는 컴포넌트(122)가 제약사항(116)을 속성(141 및 151)과 비교한 결과에 기초하여 애플리케이션(101)에서 이용되도록 자격이 부여되는지를 판정할 수 있다.
즉, 컴포넌트 관리자(102)는 제약사항(116)이 나타내는 동작적인 기능이 (속성(141 및 151)에 나타난 바와 같이) 컴포넌트(122)에 의해 구현될 수 있는 동작적인 기능이라고 판정할 수 있다. 예를 들면, 제약사항이 소프트웨어 애드-인 컴포 넌트는 사설 애플리케이션 도메인에서 실행되어야 함을 나타내며 소프트웨어 애드-인 컴포넌트의 속성은 자신이 사설 애플리케이션 도메인에서 실행가능함을 나타내면, 소프트웨어 애드-인 컴포넌트는 제약사항을 만족한 것이다. 한편, 제약사항이 소프트웨어 애드-인 컴포넌트는 특정 엔트리 포인트 프로토콜을 구현해야함을 나타내지만 소프트웨어 애드-인 컴포넌트의 속성은 자신이 특정 엔트리 포인트 프로토콜을 구현할 수 없음을 나타낸다면, 소프트웨어 애드-인 컴포넌트는 제약사항을 만족하지 않은 것이다.
방법(300)은 복수의 (이전에 발견된) 애드-인 컴포넌트에 대하여 반복되어 애플리케이션에서 이용되도록 자격이 부여된 잠재적인 애드-인 컴포넌트의 목록을 생성할 수 있다. 즉, 자격 부여 제약사항을 만족시키는 복수의 애드-인이 애플리케이션에서 이용되도록 자격이 부여될 수 있다. 전술한 바와 같이, 애드-인 컴포넌트는, 애드-인이 등록될 때, 애드-인 관리자(예를 들면, 컴포넌트 관리자(102))에 제공되는 정보 및 애드-인 관리자가 제공하지도 보유하고 있지도 않는 정보에 기초하여 자격이 부여될 수 있다. 방법(300)은 애플리케이션에 의해 잠재적으로 이용가능한 (앞서 발견된) 애드-인 컴포넌트에 대한 미세 단위 선택을 하는 데에 이용될 수 있다.
제약사항, 속성, 비교, 및 제약사항을 만족시키는 것에 대한 설명은 단지 예시라 이해되어야 한다. 당업자가 이 설명을 검토했다면, 본 발명의 실시예는 다른 제약사항, 속성, 및 비교를 이용할 수 있으며 제약사항은 표현적으로 기술된 것 기외의 다른 방식으로 만족될 수 있음이 인식되어야 한다.
몇몇의 실시예에서, 애드-인 컴포넌트 및 애플리케이션이 특정 기능성을 구현하기 위하여 서로 상호동작하도록 자격이 부여되었음을 나타내는 애드-인 컴포넌트의 목록을 제공하기 위하여 방법(200)과 방법(300)을 결합하여 이용할 수 있다. 성긴 단위의 발견 처리는 하나 이상의 수신된 속성을 컴포넌트 인덱스 엔트리의 속성들과 비교함으로써 이용가능한 컴포넌트 애드-인의 서브셋을 발견하는 데에 이용될 수 있다. 컴포넌트 인덱스가 정렬되면, 발견 처리는 하나 이상의 수신된 속성을 만족하는 이용가능한 애드-인 컴포넌트의 서브셋을 효율적으로 제공할 수 있다. 발견되는 애드-인 컴포넌트의 서브셋으로부터, 미세 단위 자격 부여 처리는 하나 이상의 컴포넌트와 애플리케이션에 상호동작으로 위한 자격을 부여할 수 있다. 자격 부여는 컴포넌트 인덱스의 정보 및/또는 애드-인 컴포넌트나 애플리케이션과 관련된 다른 정보에 기초할 수 있다. 자격 부여는 양방향(교섭)일 수 있다. 즉, 애드-인 컴포넌트는 애플리케이션 제약사항을 만족시켜야 할 수 있으며 애플리케이션은 애드-인 컴포넌트 제약사항을 만족시켜야할 수 있다.
자격이 부여된 소프트웨어 애드-인 컴포넌트는, 예를 들면, 자격이 부여된 컴포넌트 리스트(117)에 대한 목록에 포함되어 애플리케이션(101)에 송신될 수 있다. 몇몇의 실시예에서, 애플리케이션(101)은 자격이 부여된 컴포넌트의 목록으로부터 적절한 소프트웨어 애드-인 컴포넌트를 선택하기 위한 선택 로직으로 미리-구성될 수 있다. 다른 실시예에서, 애플리케이션(101)은 사용자가 자격이 부여된 컴포넌트의 리스트로부터 적절한 소프트웨어 애드-인 컴포넌트를 선택할 수 있도록 해주는 사용자-인터페이스를 제시할 수 있다.
애플리케이션(101)은 컴포넌트 선택, 예를 들면, 컴포넌트 선택(118)을 컴포넌트 관리자(102)에게 다시 반환할 수 있다. 응답으로, 컴포넌트 관리자(102)는 선택된 소프트웨어 애드-인 컴포넌트를 활성화할 수 있다. 예를 들면, 컴포넌트 관리자(102)는 파일 시스템에 활성화(119)를 송신하여 컴포넌트(122)를 활성화시킬 수 있다. 활성화(119)는, 예를 들어, 저장소(103)에서 컴포넌트(122)를 찾아내기 위한 디렉토리 경로 및 이름과 같은 식별자를 포함할 수 있다. 활성화(119)는 제약사항(116)에 따른 컴포넌트(122)를 활성화시키기 위한 명령을 포함할 수 있다. 예를 들면, 애플리케이션(101)이 공유되는 애플리케이션 도메인을 요청했다면, 컴포넌트(122)는 애플리케이션(101)과의 공유되는 애플리케이션 도메인에서 활성화될 수 있다. 활성화(119)는 제약사항(106)에 따라서 컴포넌트(122)가 메모리로 로딩되고 애플리케이션(101)과 컴포넌트(122) 간에 통신 경로가 구축될 수 있게 할 수 있다.
만족되는 제약사항에 따라 구축될 수 있는 일 유형의 통신 경로로는, 예를 들면, 파이프라인(181)과 같은 파이프라인이 있다. 파이프라인은 하나 이상의 노드 애플리케이션 프로그래밍 인터페이스(이하 "API"), 하나 이상의 어댑터, 및 적어도 하나의 파이프라인 프로토콜을 포함할 수 있다. 이러한 파이프라인은 API, 어댑터, 파이프라인 프로토콜을 그 양과 결합을 변경하여 포함할 수 있지만, 모든 파이프라인 구성요소를 반드시 포함해야 하는 것은 아니다. API는 운영 체제 또는 런타임 실행 환경 등의 대응하는 실행 환경에 의해 프로시저의 수행을 지시하는 애플리케이션, 프로그램, 기능, 및 프로그램가능하고 실행가능한 코드의 다른 어셈블 에이지(assemblage)가 이용하는 루틴 세트를 칭한다 어댑터는 API들을 서로 간에 통신적으로 적응시킬 수 있고, 파이프라인 프로토콜을 통해 또는 직렬로 링크될 수 있는 모듈 또는 개체를 칭한다. 파이프라인 프로토콜은 사양 또는 약정을 칭하는 데 이를 통해, API를 배타적이지 않은 예로 들 수 있는 개체들이 통신할 수 있다.
그러므로, 파이프라인(예를 들면, 파이프라인(181))은 제1 노드 애플리케이션(예를 들면, 애플리케이션(101))을 제2 노드 애플리케이션(예를 들면, 컴포넌트(122))로 접속시키는, 파이프라인 프로토콜을 통해, 호스트 API 어댑터로부터 애드-인 API 어댑터로 흐르는 코드 모듈 또는 개체의 체인(chain)일 수 있다. 그러나, 만족되는 제약사항에 따라 다른 유형의 통신 경로들도 구축될 수도 있음이 이해되어야 한다. 그러므로, 당업자들이 이 설명을 검토했다면, 본 발명의 실시예는 파이프라인 이외에도 다른 유형의 통신 경로를 이용할 수 있다고 인식할 것이다.
대안적인 실시예에서, 애플리케이션(101)은 요청(111) 내의 속성(112)과 함께 제약사항(116)을 포함할 수 있다. 이들 대안적인 실시예에서, 컴포넌트 관리자(102)는 속성(112)에 표시되고 제약사항(116)을 만족시키는 유형의 소프트웨어 애드-인 컴포넌트를 찾기 위해 컴포넌트 인덱스(104)에 질의를 할 수 있다. 이 질의를 만족시키는 소프트웨어 애드-인 컴포넌트는 자격이 부여된 컴포넌트 목록(117)으로 애플리케이션(101)에 반환될 수 있다.
도 4는 요청된 애드-인 컴포넌트 기능성에 기초하여 애플리케이션에서 이용하도록 애드-인 컴포넌트를 로딩시키기 위한 방법(400)의 흐름도를 도시한다. 방법(400)은 컴퓨터 시스템 아키텍처(100)의 컴포넌트 및 데이터와 관련하여 기술될 것이다.
방법(400)은 컴퓨터 시스템의 하나 이상의 애드-인 컴포넌트가 애플리케이션이 요청한 특정 유형의 애드-인 컴포넌트임을 발견하는 행위를 포함한다(행위(401)). 예를 들면, 컴포넌트 엔트리의 속성들을 비교함으로써, 컴포넌트 모듈(102)은 하나 이상의 컴포넌트(121, 122, 및 123)가 속성(112)이 나타내는 특정 유형(예를 들면, 사전, 컨텐츠 처리기, 등)인지를 발견할 수 있다.
방법(400)은 적어도 하나의 발견된 애드-인 컴포넌트에, 하나 이상의 자격 부여 제약사항을 만족시키는 적어도 하나의 발견된 애드-인 컴포넌트에 기초하여 자격을 부여하는 행위를 포함한다(행위(402)). 하나 이상의 자격 부여 제약사항은 애드-인 컴포넌트가 원하는 방식으로 애플리케이션과 상호동작하기 위해 애드-인 컴포넌트와 관련되어야 하는 기능성을 나타낸다. 예를 들면, 컴포넌트 관리자(102)는 제약사항(116)을 만족시키는 컴포넌트(121, 122, 및 123)들 중 어느 것이라도 자격을 부여할 수 있다. (예를 들면, 컴포넌트 엔트리의 속성들의 비교를 통하여) 제약사항(116)을 만족한다는 것은 컴포넌트가 원하는 방식으로(예를 들면, 적절한 허가를 가지고, 호환되는 앤트리 프로토콜을 가지고, 적절한 애플리케이션 도메인에서 실행될 수 있는 등의) 애플리케이션(101)과 상호동작하기 위한 기능성을 포함함을 나타낸다.
방법(400)은 하나 이상의 자격 부여 제약사항에 따라 애플리케이션에서 이용되도록 자격이 부여된 애드-인 컴포넌트를 활성화하는 행위를 포함한다(행위(403)). 예를 들면, 컴포넌트 관리자(102)는 제약사항(116)에 따라 애플리케이 션(101)에서 이용되도록 컴포넌트(122)를 활성화할 수 있다.
본 발명의 실시예는 동적이고 융통성 있는 소프트웨어 애드-인 컴포넌트 선택을 용이하게 하면서도 애플리케이션은 이러한 선택을 하기 위한 로직을 포함해야 할 필요가 없다. 소프트웨어 애드-인 컴포넌트는 소프트웨어 애드-인 컴포넌트가 다양한 서로 다른 위치에 저장되는 경우에도 유형에 의해 발견될 수 있다. 소프트웨어 애드-인 컴포넌트는 애플리케이션에서 사용하도록 로딩되기 전에 적절한 기능성에 대하여 자격이 부여될 수 있다. 소프트웨어-애드-인 컴포넌트에 자격을 부여하면 부적절하게 구성되거나 악의가 있는 소프트웨어 애드-인 컴포넌트를 로딩할 가능성이 줄어든다. 따라서, 본 발명의 실시예는 소프트웨어 애드-인 컴포넌트의 효율적이고 안전한 사용을 증진시킨다.
본 발명은 그 사상 및 필수적인 특성으로부터 벗어나지 않는 다른 특수한 형태로 구현될 수 있다. 기술된 실시예는 모든 측면에서 단지 예시적인 것이지 제한적인 것은 아니라고 고려되어야 한다. 그러므로, 본 발명의 범주는 상술한 설명에 의해서라기 보다는 첨부된 청구범위에 의해 나타나는 것이다. 청구범위의 동등물의 의미 및 범주 내에 있는 모든 변경들이 이들 범위 내에 포함되어야 한다.

Claims (20)

  1. 애드-인 컴포넌트(add-in component) 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품으로서,
    상기 컴퓨터 프로그램 제품은 애플리케이션에 이용가능한 애드-인 컴포넌트가 상기 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하기 위한 방법을 구현하기 위한 것이며,
    상기 컴퓨터 프로그램 제품은 컴퓨터 실행가능 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체를 포함하고,
    상기 컴퓨터 실행가능 명령어는, 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금,
    애플리케이션에 이용가능한 후보 애드-인 컴포넌트에 대한 하나 이상의 식별된 속성을 액세스하고 - 상기 하나 이상의 식별된 속성은 상기 후보 애드-인 컴포넌트와 관련된 기능성을 나타내고, 상기 애드-인 컴포넌트는 상기 컴퓨터 시스템의 다른 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리들도 포함하는 애드-인 컴포넌트 인덱스의 애드-인 컴포넌트 엔트리에 나타남 - ,
    상기 애플리케이션으로부터 하나 이상의 자격 부여(qualification) 제약사항을 만족시키는 애드-인 컴포넌트에 대한 요청을 수신하고 - 상기 자격 부여 제약사항 각각은 애드-인 컴포넌트가 상기 애플리케이션과 적절하게 동작하기 위해 상기 애드-인 컴포넌트와 관련되어야 하는 기능성을 나타냄 - ,
    상기 하나 이상의 자격 부여 제약사항과 상기 하나 이상의 식별된 속성을 비교하고,
    상기 하나 이상의 자격 부여 제약사항과 상기 하나 이상의 식별된 속성을 비교한 결과에 기초하여 상기 후보 애드-인 컴포넌트가 상기 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하는 것
    을 수행하도록 하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  2. 제1항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 하나 이상의 자격 부여 제약사항과 상기 하나 이상의 식별된 속성을 비교하기 전에,
    상기 후보 애드-인 컴포넌트에 대한 상기 하나 이상의 식별된 속성을 액세스하기 전에 애플리케이션으로부터 이용가능한 애드-인 컴포넌트에 대한 요청을 수신하고 - 상기 요청은 상기 애플리케이션이 요청하고 있는 특정 유형의 애드-인 컴포넌트를 나타내는 선택가능한 애드-인 컴포넌트 속성을 포함함 - ,
    상기 선택가능한 애드-인 컴포넌트 속성을 상기 후보 애드-인 컴포넌트에 대한 상기 애드-인 컴포넌트 엔트리의 내용과 비교하고,
    상기 비교의 결과에 기초하여 상기 후보 애드-인 컴포넌트가 상기 애플리케이션이 요청한 상기 특정 유형임을 발견하고,
    상기 후보 애드-인 컴포넌트에 대한 상기 하나 이상의 식별된 속성들을 액세 스하기 전에 상기 애플리케이션에 상기 후보 애드-인 컴포넌트가 상기 특정 유형의 애드-인 컴포넌트라고 표시하는 것을 수행하도록 하는 컴퓨터 실행가능 명령어를 더 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  3. 제1항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 애플리케이션으로부터 하나 이상의 자격 부여 제약사항을 만족시키는 애드-인 컴포넌트에 대한 요청을 수신하도록 하는 컴퓨터 실행가능 명령어는, 실행될 때, 상기 컴퓨터 시스템으로 하여금, 특정 유형의 애드-인 컴포넌트에 대한 요청을 수신하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  4. 제1항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 후보 애드-인 컴포넌트가 상기 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하도록 하는 컴퓨터 실행가능 명령어는, 실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 후보 애드-인 컴포넌트가 상기 애플리케이션에서 이용되도록 자격이 부여된다고 판정하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  5. 제4항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 후보 애드-인 컴포넌트가 상기 애플리케이션에서 이용되도록 자격이 부여된다고 판정하도록 하는 컴퓨터 실행가능 명령어는, 실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 비교의 결과에 기초하여 상기 자격 부여 제약사항을 만족시키는 후보 애드-인 컴포넌트의 목록을 조직화(formulate)하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  6. 제1항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 후보 애드-인 컴포넌트가 상기 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하도록 하는 컴퓨터 실행가능 명령어는, 실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 후보 애드-인 컴포넌트가 상기 애플리케이션과 호환될 수 있는 엔트리 포인트 프로토콜을 가진다고 판정하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  7. 제1항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 후보 애드-인 컴포넌트가 상기 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하도록 하는 컴퓨터 실행가능 명령어는, 실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 후보 애드-인 컴포넌트가 상기 애플리케이션과 상호동작하기 위한 적절한 허가(permission)를 가진다고 판정하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  8. 제1항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 후보 애드-인 컴포넌트가 상기 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하도록 하는 컴퓨터 실행가능 명령어는, 실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 후보 애드-인 컴포넌트가 상기 애플리케이션이 요청한 애플리케이션 도메인에서 실행될 수 있다고 판정하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  9. 제1항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금,
    상기 애플리케이션으로부터 상기 후보 애드-인 컴포넌트가 상기 애플리케이션에서 이용되도록 활성화되어야 함을 표시하는 컴포넌트 선택을 수신하고,
    상기 자격 부여 제약사항에 따라 상기 애플리케이션에서 이용되도록 상기 후보 애드-인을 활성화하는 것을 수행하도록 하는 컴퓨터 실행가능 명령어를 더 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨 터 프로그램 제품.
  10. 제1항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금,
    상기 후보 애드-인으로부터 상기 애플리케이션이 하나 이상의 다른 자격 부여 제약사항을 만족시키라는 요청을 수신하고 - 상기 다른 자격 부여 제약사항 각각은 상기 애플리케이션이 상기 애드-인 컴포넌트와 적절하게 동작하기 위해 상기 애플리케이션과 관련되어야 하는 기능성을 나타냄 - ,
    상기 하나 이상의 다른 자격 부여 제약사항과 상기 애플리케이션의 속성을 비교하고,
    상기 하나 이상의 다른 자격 부여 제약사항과 상기 애플리케이션의 속성을 비교한 결과에 기초하여 상기 애플리케이션이 상기 후보 애드-인 컴포넌트와 함께 이용되도록 자격이 부여되는지를 판정하는 것
    을 수행하도록 하는 컴퓨터 실행가능 명령어를 더 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  11. 제1항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금,
    상기 컴퓨터 시스템에서의 상기 후보 애드-인 컴포넌트의 설치 시에 상기 후보 애드-인 컴포넌트를 액세스하고,
    상기 후보 애드-인을 분석하여 상기 후보 애드-인 컴포넌트에 포함된 기능성을 결정하고,
    상기 후보 애드-인 컴포넌트에 대한 상기 애드-인 컴포넌트 엔트리를 생성하고 - 상기 애드-인 컴포넌트 엔트리는 상기 후보 애드-인 컴포넌트의 기능성을 나타내는 상기 하나 이상의 식별된 속성들을 포함함 - ,
    상기 애드-인 컴포넌트 인덱스에 상기 애드-인 컴포넌트 엔트리를 저장하는 것
    을 수행하도록 하는 컴퓨터 실행가능 명령어를 더 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  12. 제1항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금,
    애드-인 디렉토리에 이용되는 애드-인 컴포넌트 속성들의 서브셋에 기초하여 상기 컴포넌트 인덱스의 애드-인 컴포넌트 엔트리들을 정렬하는 것
    을 수행하도록 하는 컴퓨터 실행가능 명령어를 더 포함하는, 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  13. 제1항에 있어서,
    상기 애드-인 컴포넌트 인덱스는 시스템 레지스트리, 공유되는 SQL 서버, XML 파일, 엑티브 디렉토리(Active Directory) 서버, 인터넷 및 파일 시스템 디렉 토리 중에서 선택되는 데이터 리파지토리(repository)에 저장되는 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  14. 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템에서, 애플리케이션에 이용가능한 애드-인 컴포넌트가 이 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하기 위한 방법으로서,
    애플리케이션에 이용가능한 후보 애드-인 컴포넌트에 대한 하나 이상의 식별된 속성을 액세스하는 행위 - 상기 하나 이상의 식별된 속성은 상기 후보 애드-인 컴포넌트의 기능성을 나타내고, 상기 하나 이상의 식별된 속성은 상기 컴퓨터 시스템의 다른 애드-인 컴포넌트에 대한 애드-인 컴포넌트 엔트리들도 포함하는 애드-인 컴포넌트 인덱스의 애드-인 컴포넌트 엔트리로부터 액세스됨 - ,
    상기 애플리케이션으로부터 하나 이상의 자격 부여 제약사항을 만족시키는 애드-인 컴포넌트에 대한 요청을 수신하는 행위 - 상기 자격 부여 제약사항 각각은 애드-인 컴포넌트가 상기 애플리케이션과 적절하게 동작하기 위해 상기 애드-인 컴포넌트와 관련되어야 하는 기능성을 나타냄 - ,
    상기 하나 이상의 자격 부여 제약사항과 상기 하나 이상의 식별된 속성을 비교하는 행위,
    상기 하나 이상의 자격 부여 제약사항과 상기 하나 이상의 식별된 속성을 비교한 결과에 기초하여 상기 후보 애드-인 컴포넌트가 상기 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하는 행위
    를 포함하는, 애플리케이션에 이용가능한 애드-인 컴포넌트가 이 애플리케이션에서 이용되도록 자격이 부여되는지를 판정하기 위한 방법.
  15. 애드-인 컴포넌트 관리자 및 애드-인 컴포넌트 인덱스를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품으로서,
    상기 애드-인 컴포넌트 인덱스는 하나 이상의 애드-인 컴포넌트 엔트리들을 포함하고,
    상기 각각의 애드-인 컴포넌트 엔트리는 상기 컴퓨터 시스템에서의 애드-인 컴포넌트의 기능성을 나타내는 하나 이상의 속성을 포함하고,
    상기 컴퓨터 프로그램 제품은 요청된 애드-인 컴포넌트 기능성에 기초하여 애드-인 컴포넌트가 애플리케이션에서 이용되도록 로딩하기 위한 방법을 구현하기 위한 것이며, 컴퓨터 실행가능 명령어가 저장된 하나 이상의 컴퓨터 판독가능 저장 매체를 포함하고,
    상기 컴퓨터 실행가능 명령어는, 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금,
    상기 컴퓨터 시스템의 하나 이상의 애드-인 컴포넌트가 애플리케이션이 요청한 특정 유형의 애드-인 컴포넌트임을 발견하고,
    적어도 하나의 발견된 애드-인 컴포넌트에, 하나 이상의 자격 부여 제약사항을 만족하는 상기 적어도 하나의 발견된 애드-인 컴포넌트에 기초하여 자격을 부여하고 - 상기 하나 이상의 자격 부여 제약사항은 애드-인 컴포넌트가 원하는 방식으 로 상기 애플리케이션과 상호동작하기 위해 상기 애드-인 컴포넌트와 관련되어야 하는 기능성을 나타냄 - , 및
    상기 하나 이상의 자격 부여 제약사항에 따라서 상기 애플리케이션에 이용되도록 자격이 부여된 애드-인 컴포넌트를 활성화하는 것을 수행하도록 하는, 애드-인 컴포넌트 관리자 및 애드-인 컴포넌트 인덱스를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  16. 제15항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 컴퓨터 시스템의 하나 이상의 애드-인 컴포넌트가 애플리케이션이 요청한 특정 유형의 애드-인 컴포넌트임을 발견하도록 하는 컴퓨터 실행가능 명령어는
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 특정 유형의 애드-인 컴포넌트를 나타내는 정적인 속성을 가지는 애드-인 컴포넌트 엔트리를 찾기 위하여 상기 애드-인 컴포넌트 인덱스에 질의하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자 및 애드-인 컴포넌트 인덱스를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  17. 제15항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 적어도 하나의 발견된 애드-인 컴포넌트에, 하나 이상의 자격 부여 제약사항을 만족하는 상기 적어도 하나의 발견 된 애드-인 컴포넌트에 기초하여 자격을 부여하도록 하는 컴퓨터 실행가능 명령어는
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 적어도 하나의 발견된 애드-인 컴포넌트에, 상기 애플리케이션과 호환가능한 엔트리 포인트 프로토콜을 가지는 상기 적어도 하나의 발견된 애드-인 컴포넌트에 기초하여 자격을 부여하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자 및 애드-인 컴포넌트 인덱스를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  18. 제15항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 적어도 하나의 발견된 애드-인 컴포넌트에, 하나 이상의 자격 부여 제약사항을 만족하는 상기 적어도 하나의 발견된 애드-인 컴포넌트에 기초하여 자격을 부여하도록 하는 컴퓨터 실행가능 명령어는
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 적어도 하나의 발견된 애드-인 컴포넌트에, 상기 애플리케이션과 상호동작하기에 적절한 허가를 가지는 상기 적어도 하나의 발견된 애드-인 컴포넌트에 기초하여 자격을 부여하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자 및 애드-인 컴포넌트 인덱스를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  19. 제15항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 적어도 하나의 발견된 애드-인 컴포넌트에, 하나 이상의 자격 부여 제약사항을 만족하는 상기 적어도 하나의 발견된 애드-인 컴포넌트에 기초하여 자격을 부여하도록 하는 컴퓨터 실행가능 명령어는
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 적어도 하나의 발견된 애드-인 컴포넌트에, 상기 애플리케이션이 요청한 애플리케이션 도메인에서 실행될 수 있는 상기 적어도 하나의 발견된 애드-인 컴포넌트에 기초하여 자격을 부여하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자 및 애드-인 컴포넌트 인덱스를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
  20. 제15항에 있어서,
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 하나 이상의 자격 부여 제약사항에 따라서 상기 애플리케이션에 이용되도록 자격이 부여된 애드-인 컴포넌트를 활성화하는 것을 수행하도록 하는 컴퓨터 실행가능 명령어는
    실행될 때, 상기 컴퓨터 시스템으로 하여금, 상기 애플리케이션과 상기 자격이 부여된 애드-인 컴포넌트 간의 파이프라인(pipeline)을 구축하도록 하는 컴퓨터 실행가능 명령어를 포함하는, 애드-인 컴포넌트 관리자 및 애드-인 컴포넌트 인덱스를 포함하는 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품.
KR1020087008714A 2005-10-12 2006-09-12 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템, 이시스템에서 사용하기 위한 컴퓨터 프로그램 제품, 및 이시스템에서 애플리케이션에 이용가능한 애드-인 컴포넌트가이 애플리케이션에서 이용되도록 자격이 부여되는지를판정하기 위한 방법 KR20080047447A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/248,051 2005-10-12
US11/248,051 US7698685B2 (en) 2005-10-12 2005-10-12 Discovery, qualification, and activation of software add-in components

Publications (1)

Publication Number Publication Date
KR20080047447A true KR20080047447A (ko) 2008-05-28

Family

ID=37912016

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087008714A KR20080047447A (ko) 2005-10-12 2006-09-12 애드-인 컴포넌트 관리자를 포함하는 컴퓨터 시스템, 이시스템에서 사용하기 위한 컴퓨터 프로그램 제품, 및 이시스템에서 애플리케이션에 이용가능한 애드-인 컴포넌트가이 애플리케이션에서 이용되도록 자격이 부여되는지를판정하기 위한 방법

Country Status (10)

Country Link
US (1) US7698685B2 (ko)
EP (1) EP1934723B1 (ko)
JP (1) JP5026430B2 (ko)
KR (1) KR20080047447A (ko)
CN (1) CN101288047B (ko)
AU (1) AU2006302930A1 (ko)
BR (1) BRPI0617187A2 (ko)
CA (1) CA2622121A1 (ko)
RU (1) RU2008114066A (ko)
WO (1) WO2007046977A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7856505B2 (en) * 2007-06-29 2010-12-21 Microsoft Corporation Instantiating a communication pipeline between software
US20090183155A1 (en) * 2008-01-15 2009-07-16 Microsoft Corporation Isolation of Content by Processes in an Application
US8762977B2 (en) * 2008-04-10 2014-06-24 Telefonaktiebolaget L M Ericsson (Publ) Mobile device software management method and apparatus
US20100313252A1 (en) * 2009-06-08 2010-12-09 Erie Trouw System, method and apparatus for creating and using a virtual layer within a web browsing environment
US8464248B2 (en) * 2009-06-15 2013-06-11 Microsoft Corporation Contextual discovery of value-added components
US8365143B2 (en) * 2010-06-15 2013-01-29 Microsoft Corporation Dynamic languages for static hosts
US8898658B2 (en) * 2010-06-29 2014-11-25 Cisco Technology, Inc. Dynamic web resource provisioning
US8554797B2 (en) * 2010-12-17 2013-10-08 Sap Ag System and method for modular business applications
GB2487357A (en) * 2011-01-12 2012-07-25 Promethean Ltd Embedding application functionality within a user interface of a second application for ease of user operation
US9063776B2 (en) 2011-05-27 2015-06-23 Microsoft Technology Licensing, Llc Application activation framework
US9697016B2 (en) 2011-11-15 2017-07-04 Microsoft Technology Licensing, Llc Search augmented menu and configuration for computer applications
US8930886B2 (en) * 2011-12-15 2015-01-06 Microsoft Corporation Identifying application resources through implicit application models
US8997080B2 (en) * 2013-02-11 2015-03-31 Citrix Systems, Inc. System updates with personal virtual disks
CN103246533B (zh) * 2013-04-11 2017-03-29 小米科技有限责任公司 一种在通讯录中添加插件的方法、装置和设备
WO2015013936A1 (zh) * 2013-07-31 2015-02-05 华为技术有限公司 关联插件管理方法、设备及系统
US20150113498A1 (en) * 2013-10-21 2015-04-23 Microsoft Corporation Modeling customizations to a computer system without modifying base elements
US9311062B2 (en) * 2013-10-31 2016-04-12 International Business Machines Corporation Consolidating and reusing portal information
CN104133666B (zh) * 2013-11-29 2017-11-17 腾讯科技(成都)有限公司 确定人工智能行为的方法、装置及人工智能服务器
US20160232130A1 (en) * 2015-02-05 2016-08-11 Syntel, Inc. Mobile web application framework
US10721290B2 (en) 2015-06-05 2020-07-21 Nutanix, Inc. Architecture for managing I/O and storage for a virtualization environment using executable containers and virtual machines
US10649679B2 (en) * 2016-11-23 2020-05-12 Nutanix, Inc. Containerized application extensions in distributed storage systems
US10761911B2 (en) 2017-02-13 2020-09-01 Nutanix, Inc. Asynchronous application interactions in distributed systems
JP7157335B2 (ja) * 2019-02-27 2022-10-20 日本電信電話株式会社 Apiアダプタ試験システム、apiアダプタ試験支援装置、apiアダプタ試験支援方法、および、apiアダプタ試験支援プログラム
US11928040B2 (en) * 2020-02-14 2024-03-12 Nippon Telegraph And Telephone Corporation API adapter test system, API adapter test assistance device, API adapter test assistance method, and API adapter test assistance program
CN113688141B (zh) * 2021-10-25 2022-02-15 武汉万云网络科技有限公司 一种应用功能设计方法及软件开发平台

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5815718A (en) * 1996-05-30 1998-09-29 Sun Microsystems, Inc. Method and system for loading classes in read-only memory
US6347398B1 (en) * 1996-12-12 2002-02-12 Microsoft Corporation Automatic software downloading from a computer network
US6006279A (en) * 1997-01-21 1999-12-21 Canon Information Systems, Inc. Plug-in module host framework
US6055562A (en) * 1997-05-01 2000-04-25 International Business Machines Corporation Dynamic mobile agents
US6085030A (en) * 1997-05-02 2000-07-04 Novell, Inc. Network component server
US6549932B1 (en) * 1998-06-03 2003-04-15 International Business Machines Corporation System, method and computer program product for discovery in a distributed computing environment
US6795853B1 (en) * 1998-06-30 2004-09-21 International Business Machines Corporation Integration of additional computer components into a computer operation through attribute enabled interactive selections presented in composite lists available to the user in a variety of display screens
US6523166B1 (en) 1998-09-21 2003-02-18 Microsoft Corporation Method and system for on-demand installation of software implementations
US6892230B1 (en) * 1999-06-11 2005-05-10 Microsoft Corporation Dynamic self-configuration for ad hoc peer networking using mark-up language formated description messages
US6523168B1 (en) * 1999-07-01 2003-02-18 International Business Machines Corporation Reduction of object creation during string concatenation and like operations that utilize temporary data storage
US6901440B1 (en) * 1999-07-02 2005-05-31 Agilent Technologies, Inc. System and method for universal service activation
US20020104067A1 (en) 1999-12-29 2002-08-01 Green David W. Method and system and article of manufacture for an N-tier software component architecture application
US6871345B1 (en) * 2000-04-04 2005-03-22 Motive, Inc. Self managing software agents with introspection
US6834303B1 (en) * 2000-11-13 2004-12-21 Hewlett-Packard Development Company, L.P. Method and apparatus auto-discovering components of distributed services
US20020078262A1 (en) 2000-12-14 2002-06-20 Curl Corporation System and methods for providing compatibility across multiple versions of a software system
US6996832B2 (en) * 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
JP2003015880A (ja) * 2001-06-29 2003-01-17 Toshiba Corp 携帯情報端末およびアドインプログラム起動方法
US6778990B2 (en) * 2001-07-27 2004-08-17 Hewlett-Packard Development Company, L.P. Dynamic component activation method using a relational database as the repository for registration information
US7254814B1 (en) * 2001-09-28 2007-08-07 Emc Corporation Methods and apparatus for managing plug-in services
US7080092B2 (en) * 2001-10-18 2006-07-18 Bea Systems, Inc. Application view component for system integration
US20030172127A1 (en) * 2002-02-06 2003-09-11 Northrup Charles J. Execution of process by references to directory service
US7395540B2 (en) * 2003-03-12 2008-07-01 Microsoft Corporation Automated business software application integration
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
US7546470B2 (en) * 2003-08-13 2009-06-09 International Business Machines Corporation Selective computer component activation apparatus method and system
US20060037000A1 (en) * 2003-10-10 2006-02-16 Speeter Thomas H Configuration management data model using blueprints

Also Published As

Publication number Publication date
EP1934723A4 (en) 2009-01-28
CA2622121A1 (en) 2007-04-26
CN101288047A (zh) 2008-10-15
JP5026430B2 (ja) 2012-09-12
JP2009512063A (ja) 2009-03-19
EP1934723A1 (en) 2008-06-25
EP1934723B1 (en) 2017-11-01
BRPI0617187A2 (pt) 2011-07-19
RU2008114066A (ru) 2009-10-20
CN101288047B (zh) 2012-05-23
US7698685B2 (en) 2010-04-13
AU2006302930A1 (en) 2007-04-26
US20070083512A1 (en) 2007-04-12
WO2007046977A1 (en) 2007-04-26

Similar Documents

Publication Publication Date Title
JP5026430B2 (ja) ソフトウェア・アドイン・コンポーネントの発見、資格認定、および起動すること
US11481247B2 (en) Computer-implemented systems and methods for service provisioning
Nagel et al. Professional c# 2005
US8539497B2 (en) Method for organizing software so the set of extensions for an extendable application can be run securely
CN102754073B (zh) 用于虚拟化的扩展点声明性注册的方法和系统
US20060005227A1 (en) Languages for expressing security policies
US20090106350A1 (en) Method and apparatus for dynamic web service client application update
US20040193635A1 (en) Method and apparatus for automatically providing network services
US7254589B2 (en) Apparatus and method for managing and inferencing contextural relationships accessed by the context engine to answer queries received from the application program interface, wherein ontology manager is operationally coupled with a working memory
US7624131B2 (en) Type restriction and mapping for partial materialization
US20060265387A1 (en) Method and apparatus for loading artifacts
Benhssayen et al. An extended framework for semantic interoperability in PaaS and IaaS multi-cloud
US7406520B2 (en) Identifying interfaces related to a service
Prellwitz et al. Dynamic sets: A programming abstraction for object bundling
Duthie et al. ASP. NET in a Nutshell: A Desktop Quick Reference
WO2008111031A2 (en) An improved grid computing architecture and method for invoking network services for subscription
Hunt et al. Interfaces, Delegation and Enumerated Types
Syed et al. Events and Streams
Ali et al. Incorporating data concerns into query languages for data services
Bode An ontology-based repository for web services
Frantz et al. POC: Albert Frantz Air Force Research Laboratory/Information Directorate
Wojcieszyn et al. Configuration and Customization
Lam Thuan Thai

Legal Events

Date Code Title Description
A201 Request for examination
SUBM Surrender of laid-open application requested