KR20070021278A - 일반 응용프로그램 인터페이스를 구현하기 위한 시스템 및방법 - Google Patents

일반 응용프로그램 인터페이스를 구현하기 위한 시스템 및방법 Download PDF

Info

Publication number
KR20070021278A
KR20070021278A KR1020067027445A KR20067027445A KR20070021278A KR 20070021278 A KR20070021278 A KR 20070021278A KR 1020067027445 A KR1020067027445 A KR 1020067027445A KR 20067027445 A KR20067027445 A KR 20067027445A KR 20070021278 A KR20070021278 A KR 20070021278A
Authority
KR
South Korea
Prior art keywords
api
mapping
application
rules
module
Prior art date
Application number
KR1020067027445A
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 노키아 코포레이션
Priority to KR1020067027445A priority Critical patent/KR20070021278A/ko
Publication of KR20070021278A publication Critical patent/KR20070021278A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/102Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Stored Programmes (AREA)

Abstract

응용프로그램 인터페이스(PI)에 관련한 시스템들 및 방법들이 개시된다. 이 방법은 애플리케이션을 일반 API에 부착하는 컴퓨터 구현 방법에 관련한다. 이 방법은 API에서 매핑 요구를 수신하는 단계로서, 매핑 요구는 애플리케이션에 의해 트리거되는 단계, 하나 이상의 후보 매핑 모듈을 API로 등록된 매핑 모듈들의 군으로부터 선택하는 단계, 애플리케이션 및 하나 이상의 매핑 모듈 사이의 연관을 나타내는 정보 및 규칙들 중의 적어도 하나에 액세스하는 단계, 및 정보 및 규칙들 에 기초하여 애플리케이션과 함께 사용하기 위한 하나 이상의 타겟 매핑 모듈을 선택하는 단계를 포함한다.

Description

일반 응용프로그램 인터페이스를 구현하기 위한 시스템 및 방법{System and method for implementing a general application program interface}
본 발명은 소프트웨어에 관한 것이다. 더 상세하게는, 본 발명은 일반 응용프로그램 인터페이스를 제공하기 위한 방법 및 시스템에 관한 것이다.
응용프로그램은 문서 작성, 타인들과의 통신, 프레젠테이션 준비, 정보 검색 등의 광범위한 태스크들을 수행하는 능력을 가지는 컴퓨팅 기기를 제공한다. 응용프로그램은 실행될 때 컴퓨터가 소정의 방식으로 행동하게 하는 명령어들의 편성된 목록이다. 실행용의 응용프로그램을 준비하는 처리는 구현 언어에 의존하는 어셈블러, 컴파일러, 인터프리터, 또는 번역기의 사용을 포함할 수 있다.
응용프로그램 인터페이스(API)는 지원 시스템 또는 네트워크 서비스들에 액세스하기 위해 응용프로그램에 의해 참조될 수 있는 소프트웨어 호출들 및 루틴들의 형식화된 집합이다. API는 컴퓨터 운영 체제에 의해 또는 응용프로그램에 의해 규정되는 특유의 메소드이며 그것에 의해 응용프로그램을 작성하는 프로그래머는 운영 체제에 또는 다른 응용프로그램에 요구를 한다. 또한 API는 일반적으로 운영 체제 또는 다른 응용프로그램으로부터의 요구들을 수신하고 이 요구들을 적당한 응용프로그램에 라우팅한다.
운영 체제는 주변 하드웨어에 대한 인터페이스를 다루며, 태스크들을 스케줄링하며, 메모리를 할당하고, 실행되는 응용프로그램이 없을 때 디폴트 인터페이스를 제시하도록 컴퓨터 상에 설치된 저급(low-level) 소프트웨어이다. 커널은 자원 할당, 저급 하드웨어 인터페이싱, 보안 등을 책임지는 운영 체제의 핵심부이다. 운영 체제는 총괄하여 API로 알려진 기능들을 이용하여 응용프로그램들에 자원들이 이용 가능하게 만든다. 그 기능들은 애플리케이션 프로그래머에게 제공되는 자원 또는 서비스가 무엇인지에 견지에서 그룹화된다. 그래서, 예를 들면, API는 운영 체제들의 보안 서비스들을 겨냥할 수 있다. 예를 들면, 보안 서비스들의 API는, 인증, 메시지 통합 보호, 및 메시지 사생활 보호를 수행하는 보안 메커니즘들을 통해 추상층을 제공하는 것에 의해, 기초를 이루는(underlying) 다양한 암호 메커니즘들 꼭대기에 있는 보안 서비스들에 균일한 액세스를 애플리케이션 프로그래머들에게 제공한다.
응용프로그램들은 개별 API 기능들을 호출하는 것에 의해 자원들을 요구한다. 또한 API기능들은 운영 체제에 의해 제공되는 메시지들 및 정보가 응용프로그램에 되돌려 보내지게 하는 수단으로서 소용된다. API는 소스코드 수준에서 정의되고 응용프로그램과 커널 또는 다른 응용프로그램들 사이의 추상레벨을 제공하여 하나의 기계로부터 다른 기계로의 코드의 이식성(portability)을 보증하고, 그래서, 플랫폼 독립성을 제공한다. API는 고급언어(high level language)와 고급언어에 의해 지원되는 호출 규약의 고려 없이 작성되었던 저급 유틸리티들 및 서비스들 사이에 인터페이스를 제공할 수도 있다. 이 경우에, API의 주 태스크는 매개변수 목록 들의 하나의 형식부터 다른 형식으로의 번역(translation)과 '값에 의한 호출(call-by-value)' 및 '참조에 의한 호출(call-by-reference) 아규먼트들의 하나 또는 양 방향들로의 해석(interpretation)일 수 있다. 호출 규약은 인터페이스를 통해 전송된 데이터가 적당한 매개변수에 매핑되도록 하는 프로시저 또는 함수 호출을 위한 아규먼트들의 배열이다. 다른 프로그래밍 언어들은 아규먼트들이 좌에서 우로 또는 우에서 좌로의 순서로 스택 상에 푸시되거나 또는 레지스터들에 입력되는 것을 요구할 수 있고, 콜러(caller) 또는 콜리(calee)는 스택 또는 레지스터로부터 아규먼트들을 적당한 순서로 제거하는 것을 책임질 수 있다. 또한 호출 규약은 아규먼트들의 변수가 허용되는지를 결정한다.
API는 특유의 근원적인 필요를 만족시키는 공통 기능성을 제공한다. API의 사용은 API가 인터페이스하는 미지의 운영 체제 또는 응용프로그램일 수 있는 것에 공통 인터페이스를 제공하는 것에 의해 프로그래밍 시간을 줄이고 응용프로그램들의 신뢰성을 증가시킨다. 그래서, API는 서로 다른 소프트웨어 및 하드웨어 구성들을 가지는 서로 다른 컴퓨팅 기기들에 걸쳐서 복잡한 것들을 숨기고 응용프로그램들의 이식성과 폭넓은 사용을 제공한다.
일반 API는 특유의 근원적인 필요를 충족시키도록 구현되는 공통 기능성을 제공한다. 이 일반 API들은 특화 애플리케이션 구현물들을 위한 공통 시작점을 제공하여서 일반 API로부터 구축된 특화 구현물들의 프로그래밍 시간 및 신뢰성을 증대시킨다. 과거에는, 일반 API들은 산업 집단들에 의한 특화 응용(specific application) 영역들을 만족하도록 개발되었다. 예를 들면, 일반 보안 서비스 응용 프로그램 인터페이스((GSS-API)는 기초를 이루는 다양한 암호 메커니즘들의 꼭대기에 있는 보안 서비스들에 대한 애플리케이션 프로그래머들의 접근을 제공한다. GSS-API는 인증, 메시지 무결성 보호, 및 메시지 사생활 보호를 수행하는 보안 메커니즘들 상에 추상층을 제공한다. GSS-API는 콜러 애플리케이션이 주요 신원을 인증하게 하며, 동료(peer)에게 권한을 위임하게 하고, 기밀성과 무결성과 같은 보안 서비스들을 메시지마다 적용하게 한다.
그러나, 어느 구현물이라도 보안 서비스들과 같은 특화 응용 영역만이 아니라 일반 API에 부착하는 공통의 방법이 요구되고 있다. 동일한 목적을 위해 이용 가능한 구현물들이 여러 개가 존재할 때에 특유의 API 구현물을 선택하는 공통의 방법도 추가로 요구되고 있다.
위의 내용에 부가하여, 다르고 독립적인 소프트웨어 변형 구현물들의 모듈식 사용을 일반 인터페이스가 가능하게 할 때, 이 인터페이스를 통해 서로 다른 구현물들의 다수의 원자적 또는 가역적 동작들을 포함하는 트랜잭션들을 제공할 능력이 필요할 수 있다. 그러나, 현재 입수 가능한 소프트웨어 모듈 구현물들에 따라 트랜잭션들을 동적으로 만들어내기 위해 이용 가능한 메커니즘은 현재 없는 실정이다.
본 발명의 예시적인 실시예는 일반 응용프로그램 인터페이스(API)에 애플리케이션을 부착하는 컴퓨터 구현 방법에 관련된다. 이 방법은, API에서 매핑 요구를 수신하는 단계로서, 이 매핑 요구는 애플리케이션에 의해 트리거된 것인 단계, API로 등록된 매핑 모듈들의 군으로부터 하나 이상의 후보 매핑 모듈을 선택하는 단계, 애플리케이션 및 하나 이상의 매핑 모듈 사이의 연관을 나타내는 정보 및 규칙들 중의 적어도 하나에 액세스하는 단계, 및 정보 및 규칙들 중의 상기 적어도 하나에 기초하여 상기 애플리케이션과 함께 사용하기 위한 하나 이상의 타겟 매핑 모듈을 선택하는 단계를 포함한다.
본 발명의 다른 실시예는 일반 응용프로그램 인터페이스(API) 시스템에 관련된다. 이 시스템은, 하나 이상의 애플리케이션에 연관된 매핑 모듈들의 부착, 분리 및 트래킹을 관리하기에 적합하게 된 모듈 레지스트리, 및 애플리케이션에 의해 트리거되는 매핑 요구에 응답하여 매핑 모듈들 중의 하나 이상의 선택을 용이하게 하기에 적합하게 된 매핑 모듈 선택기를 포함한다.
본 발명의 또 다른 실시예는 하나 이상의 응용프로그램, 응용프로그램을 실행하기에 적합하게 된 프로세서 및 응용프로그램 인터페이스(API)을 가지는 전자기기에 관련된다. API는, 하나 이상의 애플리케이션에 연관된 매핑 모듈들의 부착, 분리 및 트래킹을 관리하기에 적합하게 된 모듈 레지스트리, 및 애플리케이션에 의해 트리거되는 매핑 요구에 응답하여 매핑 모듈들 중의 하나 이상의 선택을 용이하게 하기에 적합하게 된 매핑 모듈 선택기를 포함한다.
본 발명은 기존의 시스템들을 뛰어 넘는 다수의 이점들을 제공한다. 예를 들면, 본 발명은 단일 소프트웨어 구현물 또는 다수의 구현물 내에 트랜잭션들을 동적으로 만들어내기 위한 일반 메커니즘을 제공한다. 본 발명의 소프트웨어 구현물들은 트랜잭션들의 개념을 알고 있을 필요가 없다. 변형될 수 있는 트랜잭션들은 환경이나 요구가 변경될 때 "서둘러서(on the fly)" 동적으로 변형될 수 있다. 마지막으로, 본 발명으로는, 일반 API에 의해 제공되는 서비스들이 주변 환경(즉, 등록된 소프트웨어 모듈들)에 동적으로 그리고 투명하게 적합하게 된다.
본 발명의 다른 원리적인 특징들 및 이점들은 다음의 도면들, 상세한 설명, 및 첨부의 청구항들 살펴보는 이 기술분야의 당업자에게는 명백하게 될 것이다.
예시적인 실시예들은 이후에 첨부 도면들을 참조하여 설명될 것인데, 유사한 번호들은 유사한 요소들을 나타낸다.
도 1은 본 발명의 실시예들에 따른 예시적인 컴퓨터 시스템을 도시하는 블록도이며;
도 2는 본 발명의 실시예에 따른 API구성을 도시하는 블록도이며;
도 3은 실시예에 따른 매핑 모듈 선택 프로세스의 도식적 예시이며;
도 4는 도 3의 매핑 모듈 선택 프로세스를 매우 상세하게 도시하는 흐름도이며;
도 5는 모듈 분리 프로세스의 실시예를 도시하는 흐름도이며;
도 6은 모듈 부착 프로세스의 실시예를 도시하는 흐름도이며; 그리고
도 7은 본 발명에 따른 일반 API, 관리 API, 핵심 기능, 데이터 저장 영역, 및 개별 소프트웨어 모듈 구현물들을 나타내는 도면이다.
API는 애플리케이션과 커널 또는 다른 응용프로그램과 저급 유틸리티들 및 서비스들 사이에 하나의 컴퓨팅 기기로부터 다른 컴퓨팅 기기로의 소프트웨어의 이 식을 용이하게 하는 추상층을 제공한다. API는 운영체제나 다른 응용프로그램이나 시스템 서비스에 대한 인터페이스를 정의하는 응용프로그램 작성 시에 프로그래머에 의해 그 운영체제, 응용프로그램, 또는 시스템 서비스에 대한 상세한 이해의 필요 없이 이용된다. 이 요소들은 서로 다른 형태들로 구현될 수 있지만, 프로그래머는 인터페이스에 관해 염려하는 것만 필요하다. 그래서, 프로그래머는 API에 대한 입력으로서 요구되는 정보와 API로부터 출력되는 정보에만 집중한다.
일반 API는 몇 개의 매우 일반화된 동작들 및 매개변수들을 제공하는 일반화된 API이다. 이 동작들은 일반적으로는 오류코드들을 생성하고 다루는 동작들과 모듈 또는 API가 발생한 이벤트들에 관해 애플리케이션들에 통지하는 일반 이벤트 서비스들을 다루는 동작들을 포함하지만 이러한 동작들에 한정되지는 않는다. API는 구현물 특화 매개변수들의 집합을 전달하는 제네릭(generic) 부를 제공한다.
서비스품질(QoS)은 네트워크 관리자들이 그들의 현존하는 자원들을 효율적으로 사용하는 것을 허용하고 중요한 애플리케이션들이 그것들의 네트워크들을 신속히 확장하거나 과도하게 준비하는 일 없이 고품질 서비스를 받는 것을 보장할 수 있다. QoS는 네트워크를 가로질러 동작하고 대역폭과 같은 자원들을 애플리케이션들에 할당한다. 이 할당은 일부 애플리케이션들의 우선권을 다른 종류들의 애플리케이션들 위에 두는 것에 의해 결정된다. QoS는 관리자들에게 그들의 네트워크들 상의 제어를 제공하고, 결과적으로, 그들의 고객들에게 더 나은 서비스를 제공할 능력을 제공한다. 예를 들면, 임무 긴요(mission-critical) 애플리케이션은 자원들이 그것의 트랜잭션들을 용인 가능한 기간 내에 완료하는 것을 보장할 수 있다. 어 느 정도 수준의 QoS를 요구하는 애플리케이션들은 정성적 또는 정량적 애플리케이션들로서 대략적으로 분류될 수 있다. 정량적 애플리케이션들은 그것들이 얼마나 많은 QoS를 필요로 하는 지에 관한 명시적인 요건들을 가진다. 정성적 애플리케이션들은 어느 정도 수준의 QoS를 요구하지만, 네트워크 관리자는 그것들이 얼마나 많이 정확하게 수행할 필요가 있는지를 결정해야 한다. 정량적 애플리케이션들의 2개의 공통 유형들은 비디오 스트리밍과 IP전화통신이다. 비디오 스트리밍은 패킷 손실이 영상을 열화시키지 않도록 할 충분한 대역폭을 요구한다. 또한 그것은 트래픽을 명확히 식별하여 저용량 링크들과 같은 네트워크의 일부 부분들로부터 트래픽을 막는 것이 소망될 수도 있다. 예를 들어, MPEG-2 스트림은 초당 4메가비트(Mbps)의 대역폭을 필요로 한다. IP전화통신은 잠복 비 용납(latency-intolerant) 애플리케이션의 고전적인 예이다. 대화가 그것의 실시간 특성을 보존하지 않는 한, 그 서비스는 컴퓨터의 관점에서 쓸모 없다. 정성적 애플리케이션들은 어느 정도 수준의 QoS를 요구하지만, 관리자들은 그 요건들이 어떻게 만족될 것인지를 결정해야 한다. SAP와 같은 ERP 애플리케이션들은 이 범주에 속한다. 그것들이 보장하는 트래픽은 연속하는 스트림에서 발생하지 않지만 어떤 기간에 걸쳐 발생하는 일련의 트랜잭션들에서는 발생한다. 공통 요건은 일종의 잠재 보장이어서, 일 군의 트랜잭션들이 예를 들면 순식간에 일어난다. 어떻게 이 요건이 만족되는지는 관리자에게 달려 있다.
도 1은 본 발명의 실시예에 따른 API가 구현될 수 있는 시스템을 도시한다. 이 시스템(20)은 프로세서 및 운영체제를 담고 있는 컴퓨터 시스템 또는 다수의 기 기들 중의 어느 것일 수 있다. 시스템(20)은 하나 이상의 응용프로그램들(24), API(26), 및 다른 기기들, 모듈들 또는 다른 소프트웨어로부터의 명령어들에 더하여 프로세서(22) 자체 내에 들어 있는 명령어들을 실행하는 프로세서(22)를 구비한다. 응용프로그램들(24)은 모바일 기기와 같은 단말이 응용프로그램(24)을 시작하는 것을 사용자가 요구한 후에 실행에 대해 열려있을 수 있다. 응용프로그램(24)과 API(26)는 동일한 프로세서(22)에 의해 실행될 수 있다. 다르게는, 응용프로그램(24)은 서로 다른 프로세서들에 의해 실행될 수 있다. 응용프로그램들(24)과 API(26)는 고급 언어들, 스크립팅 언어들, 및 어셈블리 언어들이지만 이런 언어들에 한정되지 않는 동일하거나 서로 다른 컴퓨터 언어들로 작성될 수 있다. 부가적으로, 응용프로그램들(24)과 API(26)의 동작들은 특용 컴퓨터, 논리회로들, 또는 하드웨어회로들에 의해 행해질 수도 있다. 그래서, 응용프로그램들(24)과 API(26)는 하드웨어, 펌웨어, 소프트웨어, 또는 이 방법들의 어느 조합으로 구현될 수 있다.
도 2는 본 발명의 실시예에 따른 API의 구성을 도시한다. 이 구성에서, API(26)는 응용프로그램(24)을 위한 적당한 구현물의 관리 및 선택에 관련한 특화 기능들의 동작을 용이하게 하기 위한 각종 구성요소들을 구비한다. 응용프로그램들, 이를테면 응용프로그램(24)과 관리 애플리케이션(32)은 API(26)의 관점에서만 애플리케이션들이다. 예를 들면, 애플리케이션들(24, 32)은 웹 브라우저와 같은 전통적인 애플리케이션들, 또는 OSI(Open System Interconnection)층에서의 소프트웨어 컴포넌트들일 수 있다.
API(26)는 일반 서비스들의 집합을 제공하는 일반 동작 모듈(28)을 구비한다. 전술한 바와 같이, 그러한 서비스들은 맥락특화(context-specific) 서비스들일 수 있다. 일반 동작 모듈(28)은 이 서비스들을 하나 이상의 응용프로그램에 이용 가능하게 만든다.
관리 API 모듈(30)이 API(26) 내에 제공된다. 관리 API 모듈(30)은 하나 이상의 관리 애플리케이션들, 이를테면 관리 애플리케이션(32)과 인터페이스하여, API(26)에 의해 요구될 수 있는 데이터를 API(26)에 의해 제공된 각종 기능들의 관리를 위해 입력하게 한다.
API(26)의 예시적인 실시예는 응용프로그램(24)의 관리 및 선택을 위한 지원을 제공한다. 일 실시예에서, API(26)는 각종 관리 및 선택 기능들을 수행하기 위한 루틴들을 담고 있다. 구체적으로는, 예시된 실시예는 매핑 모듈 레지스트리, 매핑 모듈 선택 및 매핑 지원을 위한 루틴들(36, 40, 42)을 구비한다. 각종 구현물들은 각 구현물에 연관되는 하나 이상의 매핑 모듈(38a-38c)을 통해 표현될 수 있다.
매핑 모듈 레지스트리 루틴(36)은 매핑 모듈들(38a-38c)의 관리를 제공한다. 예를 들면, 매핑 모듈 레지스트리 루틴(36)은 도 5 및 6을 참조하여 아래에서 상세히 기재되는 바와 같이 매핑 모듈들(38a-38c)의 부착 및 분리를 관리할 수 있다. 이에 관해서, 일단 관계나 연관이 등록된 매핑 모듈(38a-38c) 및 응용프로그램(24)과 같은 응용프로그램 사이에 확립된다면, 매핑 모듈 레지스트리 루틴(36)은 매핑 모듈 상태를 응용프로그램들에 제공하고 그 응용프로그램들에 경보를 발한다. 그래서, 도 2에서 점선으로 보인 바와 같이, 매핑 모듈 레지스트리 루틴(36)은 직접적 으로나 간접적으로 각 매핑 모듈(38a-38c)을 감시할 수 있다.
특화 구현물들이 일반 API의 부분이 아니므로, 매핑 모듈(38a-38c)은 관련된 일반 API 동작들과 특화 구현물의 동작들 사이를 매핑하도록 제공된다. 매핑 모듈들(38a-38c)은 특화 구현물이 이용 가능하게 될 때 부가되거나 부착될 수 있다. 유사하게, 특정 구현물이 제거될 때, 하나 이상의 매핑 모듈(38a-38c) 역시 제거되거나 분리될 수 있다.
이용 가능하게 된 특화 구현물이 제거될 때, 매핑 모듈 레지스트리 루틴(36)은 대응하는 매핑 모듈들(38a-38c)의 상태를 예를 들면 이용 가능한 또는 이용 불가능한 것으로 갱신한다. 모든 연관된 애플리케이션이 통지 받을 수도 있다. 그래서, 매핑 모듈 레지스트리 루틴(36)은 단일화된 인터페이스를 통해 매핑 모듈들(38a-38c)의 용이한 부착 또는 분리를 제공하고, 현존하는 구현물들과의 간섭 없이 새로운 유형들의 구현물들의 채택을 용이하게 할 수 있다.
API(36)는 예를 들면 애플리케이션이 요구할 때 매핑 모듈들(38a-38c) 사이의 투명한 절환(switching)을 제공한다. 매핑 모듈들(38a-38c)은 임의의 애플리케이션들에 서비스하는 것에 대해 곧 닥칠 무능력과 같은 상태의 변경들에 관련한 정보를 제공하는 것에 의해 투명한 절환 프로세스를 용이하게 할 수 있다. 투명한 절환을 지원하기 위해, API는 새로운 매핑 모듈(38a-38c)을 선택하는데 충분한 정보를 요구할 수 있다. 내부 제어 인터페이스(45)가 필요한 대로 각종 시스템 상태 정보를 요구하는 API(36)의 엔티티들을 위한 충분한 서비스들을 제공하는 시스템 인터페이스를 제공하기 위해 API(36) 내에 제공된다.
매핑 모듈 선택 루틴(40)은 응용프로그램(24)을 위한 적당한 매핑 모듈들(38a-38c)의 선택을 위해 제공된다. 매핑 모듈 선택 루틴(40)에 의한 선택은 하나 이상의 매핑 모듈들(38a-38c)을 응용프로그램(24)과 연관시킴으로써, 특화 구현물을 선택한다. 이에 관해서, 선택 프로세스의 실시예가 도 3 및 4를 아래에서 참조하여 설명된다.
매핑 모듈 선택 루틴(40)은 규칙들의 집합에 기초하여 동작할 수 있다. 규칙들은 관리 애플리케이션(32)과 같은 관리 애플리케이션에 의해 관리 API 모듈(30)을 통해 지정되고 동적으로 갱신될 수 있다. 규칙들은 실행시간에 동적 선택을 위해 파싱될 수 있는 텍스트기반 부호화를 통해 표현될 수 있거나, 또는 그것들은 특정 실행시간 환경들에서 실행 가능한 이진 규칙들일 수 있다. 일단 수신되면, 규칙들은 API 관점에서 데이터베이스(44)와 같은 내부 또는 외부 데이터 저장소에 저장될 수 있다.
규칙들은 관리 애플리케이션(32)에 의해 모듈 부착 프로세스 동안 데이터 저장소와 같은 내부 또는 외부 엔티티로부터 동적으로 가져와질 수 있다. 예를 들면, 부착용 매핑 모듈(38a-38c)은 관리 애플리케이션이 무엇을 어디로부터 가져올지를 결정할 수 있게 하는 충분한 정보를 제공할 수 있다.
그래서 매핑 모듈 선택 루틴(40)은 지정된 규칙들을 특정 입력들에 기초하여 매핑 모듈을 선택하기 위해 적용할 수 있다. 규칙들의 구조는 특정한 요구들 및 소망들에 따라 선택될 수 있다. 각 매핑 모듈(38a-38c)은 서로 다른 구조를 이용할 수 있다. 예시적인 구조는 아래에 제공된다:
Figure 112006097052070-PCT00001
각 "작용(Action)"은 코드들 또는 단계들의 시퀀스일 수 있다. 그래서, 디폴트 "작용"을 전제로 하면, 구조는 각각의 주어진 표현에 선택 결과를 제공한다. 파싱된 표현들과 작용들에 기초하여, 실행시간 선택은 발생될 수 있고 설치될 수 있다. 예를 들면, 위의 예에서 "app-expression"은 "streaming, bandwidth = 96kbps, no-extra-payment-for-transport"일 수 있다. 그래서, 채워진 구조는 다음과 같이 표현될 수 있다:
Figure 112006097052070-PCT00002
그래서, 선택 규칙들의 복잡도는 일반 API 외부에서 유지될 수 있다. 게다 가, 선택 규칙들은 동적으로 갱신될 수 있고 다음 선택 기회에 적용될 수 있다.
도 2를 다시 참조하면, 매핑지원부(42)는 특화 구현물에 연관된 매핑 모듈(38a-38c)과 함께 작업하여 일반 API의 각종 동작들을 특화 구현물에 연관시키기 위해 제공된다. 이에 관해서, 매핑 지원부(42)는 매핑에 관련한 정보를 위해 데이터베이스(44)나 다른 데이터 저장소에 액세스하는데 적합하게 될 수 있다. 데이터베이스(44)는 API(26)의 내부 또는 외부에 있을 수 있다. 그래서, 새로운 구현물이 부가되고 새로운 매핑 모듈(38a-38c)이 부착될 때, 매핑 모듈(38a-38c)은 특화 구현물을 위해 지정된 동작들을 데이터베이스(44)에 열거된 일반 API의 현존하는 동작들과 연관시킬 수 있다. 모든 동작들이 매핑 모듈(38a-38c) 및 API 애플리케이션들 사이에 연관될 수 없다는 것을 매핑 지원부(42)가 알아챈다면, 매핑 지원부(42)는 그것들 사이에 연관 프록시(association proxy)로서 소용되어 API 및 매핑 모듈(38a-38c) 둘 사이의 관점에서 연관들을 실현할 수 있다.
이제 도 3을 참조하면서, 단일 매핑 모듈 선택 프로세스의 예가 설명될 것이다. 다수의 매핑 모듈들의 선택 역시 가능하고 예를 들면 부하 균형을 위해 지원되는 것에 주의해야 한다. 그러한 선택 프로세스(50)는 도 2를 참조하여 위에서 설명된 매핑 모듈 선택 루틴(40) 내에 구현될 수 있고 그 루틴에 의해 수행될 수 있다. 프로세서(50)는 도 3의 좌측에 보이고 있고, 그것과 함께 매핑 모듈들(60)의 결과적인 집합이 도 3의 우측에 보이고 있다. 프로세스(50)는 새로운 매핑 요구가 애플리케이션에 의해 트리거될 때 시작한다(블록 52). 이것은 하나 이상의 매핑 모듈의 식별정보가 식별되게 할 것이다. 예를 들면, 도 3은 5개 모듈들(M1-M5)이 후보들로 서 식별되는 예를 도시한다.
그러면 프로세스(50)는 가능성을 좁히기 위해 부가 선택 정보를 요구한다(블록 54). 이 요구는 시스템 상태 정보를 제공하기에 적합하게 된 내부 제어 인터페이스에 송신된다. 시스템 상태 정보는 예를 들면 선택을 위해 맥락(context)을 제공함으로써, 특정 후보 모듈들이 가능한대로 없애질 수 있게 한다. 이 시스템 상태 정보는 예를 들면 각 매핑 모듈(38a-38c)에 대응하는 인터페이스의 상태를 포함하여서, 디스에이블되거나 비 활동성의 인터페이스들을 가지는 모든 매핑 모듈들이 선택 프로세스에서 없애질 수 있게 된다. 예시된 실시예에서, 매핑 모듈들(M2 및 M4)은 이 지점에서 가능한대로 없애질 수 있다.
그 다음에 프로세서(50)는 저장된 선택 규칙들을 탐색한다(블록 56). 위에서 언급된 바와 같이, 선택 규칙들은 API 내에 아니면 외부 데이터 저장부에 저장될 수 있다.
선택 규칙들에 기초하여, 단일 매핑 모듈이 특화 구현물을 위해 선택될 수 있다(블록 58). 예시된 실시예에서, 매핑 모듈 M5가 선택된다. 일단 선택이 행해진다면, 선택된 매핑 모듈과는 구현물에서 연관을 이루는 선택 정보는 장래의 사용을 위해 저장될 수 있다.
특정 실시예에서, 만일 애플리케이션이 다수 모듈 지원을 가진다면 다수의 매핑 모듈들이 애플리케이션의 사용을 위해 선택되는 것이 가능할 수 있다.
만일 도 3에 도시된 것과 같은 선택 프로세스가 매핑 모듈들이 다수개가 되게 한다면(즉, 선택 규칙들이 단일 후보를 선택하기 불가능하였다면), 단일 매핑 모듈의 선택을 용이하게 하기 위해 애플리케이션의 지원이 요구될 수 있다. 다르게는, 디폴트 선호들의 집합이 나머지 모듈들 중의 하나를 선택하는데 적용될 수 있다.
도 4는 위에 설명된 프로세스를 매우 상세히 도시한다. 설명되는 프로세스는 예시적 목적만을 위해 도시된 것이고, 구현물에 의존하여 다른 단계들이 프로세스의 일부로서 수행될 수 있다는 것에 주의한다. 게다가, 단계들의 순서는 각종 실시예들에 대해 가변적일 수 있다. 그러한 변경들은 본 발명의 범위 내에서 의도되고 있다.
프로세서(70)는 매핑 요구가 애플리케이션에 의해 트리거될 때 시작한다(블록 72). 블록 74에서, 하나를 넘는 모듈이 애플리케이션을 위해 등록되어 있는지에 관한 결정이 이루어진다. 만일 하나의 모듈만이 등록되어 있다고 결정된다면, 혼자인 모듈이 선택되고(블록 92), 프로세스는 완료된다.
만일 블록 74에서의 결정이 하나를 넘는 매핑 모듈이 애플리케이션의 특화 구현물을 위한 후보들로서 존재함을 나타낸다면, 처리는 블록 76으로 진행하고 내부 제어 인터페이스를 통해 시스템 데이터를 얻는다. 블록 76에서 얻어진 정보에 기초하여, 후보 매핑 모듈들의 집합이 재정의를 필요로 하는지의 결정이 행해진다(블록 78). 재정의가 필요하다면, 후보 모듈을 위한 규준이 재정의되고(블록 80) 처리는 블록 81로 진행한다. 블록 78에서의 결정이 재정의가 필요 없음을 나타낸다면, 처리는 블록 80을 건너뛰고 블록 81로 진행한다.
블록 81에서, 하나를 넘는 후보 모듈이 남아있는지의 결정이 행해진다. 만일 결정이 하나의 후보만 남아있음을 나타낸다면, 프로세스(70)는 혼자인 모듈의 선택을 행할 것이고(블록 92), 처리는 종료한다.
블록 81에서의 결정이 하나를 넘는 후보 매핑 모듈들이 남아있음을 나타낸다면, 프로세스(70)는 선택 규칙들을 탐색하여 얻는다(블록 82). 위에서 언급된 바와 같이, 선택 규칙들은 API 내부에 저장될 수 있거나 또는 외부 데이터 저장부 이를 테면 데이터베이스에 저장될 수 있다.
블록 82에서 얻어진 선택 규칙들에 기초하여, 후보 매핑 모듈들의 집합이 재정의를 필요로 하는지의 결정이 행해진다(블록 84). 재정의가 필요하다면, 후보 모듈을 위한 규준이 재정의되고(블록 86) 처리는 블록 88로 진행한다. 블록 84에서의 결정이 재정의가 필요 없음을 나타낸다면, 처리는 블록 86을 건너뛰고 블록 88로 진행한다.
블록 88에서, 처리는 하나를 넘는 매핑 모듈들이 애플리케이션을 위한 후보로서 남아있는지를 결정한다. 하나의 후보만이 남아있다는 결정이 행해진다면, 처리는 블록 92로 이어지고 혼자인 매핑 모듈을 선택한다. 하나를 넘는 매핑 모듈이 블록 88에서 후보로 남아있다면, 프로세스(70)는 블록 90으로 진행하여, 단일 매핑 모듈이 이용 가능한 정보에 기초하여 최선의 타겟으로서 선택된다. 그래서, 특화 구현물을 위한 단일 매핑 모듈의 선택이 이루어진다.
도 5는 매핑 모듈의 분리를 위한 프로세스의 실시예를 도시한다. 그러한 프로세스는 도 2에 보인 매핑 모듈 레지스트리 루틴(36)에 의해 실행될 수 있다. 프로세스(100)는 분리가 요구되거나 API에 의해 검출될 때 시작한다(블록 102). 분리 하려는 모듈이 임의의 활동성 매핑들을 가지는지에 관하여 결정이 행해진다(블록 104). 활동성 매핑들은 예를 들면 분리를 요구하는 애플리케이션 외에도 하나 이상의 애플리케이션에 의한 매핑 모듈의 액세싱을 포함할 수 있다.
활동성 매핑들이 존재하지 않는다고 결정된다면, 프로세스(100)는 블록 110으로 진행한다. 블록 104에서 활동성 매핑들이 존재한다고 결정된다면, 프로세스(100)는 활동성 매핑들을 가지는 애플리케이션들을 탐색한다(블록 106). 그 다음에 활동성 매핑을 가지는 각각의 애플리케이션에는 예를 들면 매핑 모듈이 분리된다는 경보가 통지된다(블록 108).
블록 110에서, 프로세스는 모듈 특화 기능들을 실행한다. 예를 들면, 매핑 모듈에 특화된 기능들은 제어형 캐시 소거(cache purging)를 포함할 수 있다. 그래서, 모듈이 분리될 때, 분리 모듈에 연관된 캐시는 추가로 처리될 수 있고 무시되지 않을 수 있다.
블록 112에서, 프로세스는 일반 기능들을 실행한다. 일반 기능들은 모든 매핑 모듈들에 공통이다. 이것들은 예를 들면 매핑 모듈의 등록해제를 포함할 수 있다.
도 6은 매핑 모듈의 부착이나 분리와 같은 이벤트의 발생을 위한 프로세스의 실시예를 도시한다. 도 5에 관련하여 위에서 설명된 프로세스에서처럼, 프로세스(120)는 도 2에 보인 매핑 모듈 레지스트리 루틴(36)에 의해 실행될 수 있다. 프로세스(120)는 이벤트가 요구되거나 API에 의해 검출될 때 시작한다(블록 122). 이벤트는 모듈에 의해 발생될 수 있는데, 모듈의 부착 또는 분리 동안에 일어날 수 있다.
다른 실시예들에서, 이벤트는 애플리케이션에 의해 발생될 수 있다. 예를 들면, 만일 매개변수가 기설정된 문턱을 초과하였거나 그 문턱 아래로 축소되었다고 QoS 애플리케이션이 결정한다면, 애플리케이션은 다른 애플리케이션들에 전해져야 할 이벤트를 발생할 수 있다. 이벤트는 다른 애플리케이션들이 그것들의 기능을 조절하여 매개변수의 값에서의 변경을 수용하는 것을 허용하거나 지시할 수 있다.
이벤트를 발생하는 매핑 모듈 또는 애플리케이션에 의해 발생된 이벤트에 연관된 매핑 모듈이 임의의 활동성 매핑들을 가지는지에 관하여 결정이 행해진다(블록 124). 활동성 매핑들이 존재하지 않는다고 결정된다면, 프로세스(120)는 종료한다. 활동성 매핑들이 블록 124에서 존재한다고 결정된다면, 프로세스(120)는 활동성 매핑들을 가지는 애플리케이션들의 탐색을 수행한다(블록 126). 그 다음에 이벤트는 활동성 매핑을 가지는 각 애플리케이션에 전해진다(블록 128).
블록 130에서, 프로세스는 이벤트 특화 기능들을 실행한다. 이 기능들은 이벤트에 그리고 매핑 모듈에 특화될 수 있다. 그래서, 2개의 모듈이 동일한 이벤트를 발생한다면, 프로세스는 서로 다른 모듈들에 기초하여 서로 다른 기능들을 실행할 수 있다. 예를 들면, 진행중인 스트림 애플리케이션에 대한 데이터스트림에서의 인터럽트를 이벤트가 나타낸다면, 애플리케이션에 의해 이용되는 압축기/압축해제기(코덱)는 다른 코덱들과는 다른 식으로 상호작용할 수 있다. 일부 코덱들은 인터럽트에 적합할 수 있는 반면 다른 코덱들은 애플리케이션이 다른 코덱으로 절환되는 것을 요구할 수 있다. 그래서, 다른 매핑 모듈이 각각의 코덱에 요구된다.
도 7은 일반 API, 관리 API, 핵심 기능부, 데이터 저장소 영역, 및 복수 개의 소프트웨어 모듈 구현물들을 보이는 개략적인 레이아웃이다. 핵심 기능부는 일반 API 및 소프트웨어 모듈 구현물 특화 동작들을 통해 애플리케이션들에 제공되는 서비스들 간에 간접적인 조치를 제공한다. 애플리케이션 서비스들 및 설치된(이용 가능한) 소프트웨어 구현물들 사이의 매핑은 동적으로 서둘러 수행된다. 전형적으로 이 정보는 데이터 저장 영역에 저장되는데, 이 데이터 저장영역은 도 7에서 핵심기능부 내에 있는 것으로 묘사되고 있다. 이 정보는 관리 API를 통해 변경될 수 있고, 그것은 시스템 내부 아니면 외부에 위치되는 엔티티에 의해 사용될 수 있다. 정보가 시스템 외부에 있는 엔티티에 의해 사용되는 경우에, 외부 시그널링의 형태가 이용된다.
본 발명의 일 실시예의 구현물은 일반적으로 다음과 같다. 예로서, f1(), f2() 및 f3()이 애플리케이션들을 위해 제공되는 서비스들이라고 가정될 수 있다. 부가하여, 이 예에서는 모듈들이 다음의 동작들을 가진다고 가정될 수 있다:
Module-1: O1, O2, O3
Module-2: O4, 05
Module-3: O6, O7
Module-1은 3G 액세스를 위한 지원을 제공할 수 있으며, Module-2는 4G 액세스를 위한 지원을 제공할 수 있고 Module-3은 허가, 인증 등과 같은 보안관련 서비스들을 제공할 수 있다. 핵심 기능부는 각각의 등록된 소프트웨어 모듈 구현물의 대응하는 동작들에 매핑되는 의사(pseudo) 동작들을 제공할 수 있다. 예를 들면, 이 의사 동작들은 다음과 같을 수 있다:
A: 인증
B: 허가
C: 일반 라디오 기술 액세스
D: 선택사항적인 라디오 기술 액세스
2개의 서비스들이 고려될 수 있다. 첫 번째 서비스인 f1()은 하나의 라디오 기술에서 단일 액세스를 위해 제공된다. 두 번째 서비스인 f2()는 다수의 라디오 기술들에서 다중액세스를 위해 제공된다. 이 서비스들은 다음과 같이 매핑될 수 있다. 선택사항적인 동작들은 '[]'로 표시되고, 동작들의 목록들은 '{}'로 표시된다.
f1() = A + [B] + C + [D]
f2() = A + [B] + {C + [D], C + [D] C + [D]}
소프트웨어 모듈 구현물들은 이 의사 동작들을 알고 있는데 그것들이 등록 동안에 핵심 기능부에 충분한 정보를 제공하는 것을 필요로 하기 때문이다. 다음의 표는 소프트웨어 모듈 구현물들 및 제공된 API 서비스들 사이의 매핑을 나타낸다.
Figure 112006097052070-PCT00003
이 경우에, Module-1의 O3 동작은 의사 동작 클래스를 가지지 않는데, 그것이 트랜잭션의 일부로서 사용되지 않아야 함을 나타낸다.
애플리케이션이 f1() 서비스를 호출할 때, 다음의 의사 동작들이 다음 순서로 실행된다. 대응하는 실제 동작들은 괄호 속에 표현된다: A(O6), B(O7), C(O4+O5). 의사 동작 B는 선택사항적인 동작이 되게끔 정의되었다. 그러나, 그것이 일부 구현물의 동작에 현존하는 매핑을 가지기 때문에, 그것은 실행된다. 동작 D 역시 선택사항적인 동작이 되게끔 정의되었다. Module-2가 선호들의 집합에 의거하여 사용되었기 때문에(즉, 이용 가능하다면 3G 위에서 4G를 항상 사용함), 그리고 그것이 의사 동작 클래스 D를 위해 유효한 동작을 제공하지 않기 때문에, 그것은 무시된다.
애플리케이션이 다중 액세스의 경우를 위해 f2() 서비스를 호출할 때, 다음의 의사 동작들이 A(O6), B(O7), C(O4+O5), C(O1), D(O2)의 순서로 실행된다. 앞서 논의된 바와 같이, B는 선택사항적인 동작이 되게끔 정의되었지만, 그것이 일부 구 현물의 동작에 현존하는 매핑을 가지기 때문에, 그것은 실행된다. 서비스를 위한 대응하는 실제 동작들 중의 하나가 실패한다면, 전체 서비스는 실패하고 관련된 롤백(암시적/명시적)이 그 자리를 차지한다.
"모듈" 또는 "루틴"과 같은 용어들은 여기서는 특정 실시예들에 관련하여 사용되었음에 주의한다. 그러한 용어들이 다른 실시예들에서는 하드웨어, 소프트웨어, 펌웨어 등의 본 발명의 구현물들을 말하는 것임이 당업자에 의해 이해될 것이다. 게다가, 모듈 또는 루틴에 의해 수행되는 기능들은 2개 이상의 모듈 또는 루틴에 의해 수행되도록 분리될 수 있다. 마찬가지로, 2개 이상의 모듈 또는 루틴에 의해 수행되는 기능들은 단일 모듈 또는 루틴에 의해 수행되도록 조합될 수 있다. 모든 그러한 변형들은 본 발명의 범위 내에서 도모된다.
본 발명의 특정 실시예들이 개시되었지만, 각종 다른 변형예들과 조합들이 첨부의 청구항들의 진정한 정신과 범위 내에서 가능하고 도모된다는 것이 이해될 것이다. 그러므로, 여기에 제시된 정확한 추상 개념과 개시내용을 한정할 의도는 없다.

Claims (53)

  1. 일반 응용프로그램 인터페이스(API)를 이용하여 애플리케이션을 매핑 모듈에 부착하는 방법에 있어서,
    a) API에서 매핑 요구를 수신하는 단계로서, 상기 매핑 요구는 애플리케이션에 의해 트리거되는 단계;
    b) 하나 이상의 후보 매핑 모듈을 상기 API로 등록된 매핑 모듈들의 군으로부터 선택하는 단계;
    c) 상기 애플리케이션 및 하나 이상의 매핑 모듈 사이의 연관을 나타내는 정보 및 규칙들 중의 적어도 하나에 액세스하는 단계; 및
    d) 정보 및 규칙들 중의 상기 적어도 하나에 기초하여 상기 애플리케이션과 함께 사용하기 위한 하나 이상의 타겟 매핑 모듈을 선택하는 단계를 포함하는 방법.
  2. 제1항에 있어서, 단계 b)는 기설정된 규칙들의 집합을 적용하는 단계를 포함하는 방법.
  3. 제2항에 있어서, 상기 기설정된 규칙들의 집합은 상기 후보 매핑 모듈들과의 애플리케이션 유형의 연관을 포함하는 방법.
  4. 제1항에 있어서, 단계 c)는 내부 제어 인터페이스를 통해 시스템 데이터를 가져오는 단계를 포함하는 방법.
  5. 제1항에 있어서, 단계 c)는 데이터베이스로부터 규칙들을 가져오는 단계를 포함하는 방법.
  6. 제5항에 있어서, 상기 데이터베이스는 상기 API 내에 들어 있는 방법.
  7. 제5항에 있어서, 상기 규칙들은 상기 API 내에 기설정된 규칙들을 포함하는 방법.
  8. 제1항에 있어서, 하나 이상의 타겟 매핑 모듈을 선택하는 상기 단계에 기초하여, 일반 API의 동작들을 특화 구현물에 매핑하고 연관시키는 단계를 더 포함하는 방법.
  9. 제1항에 있어서, 하나 이상의 API 기능의 관리를 위한 데이터를 얻도록 하나 이상의 관리 애플리케이션에 액세스하는 단계를 더 포함하는 방법.
  10. 제9항에 있어서, 상기 액세스하는 단계는 관리 API 모듈을 이용하여 상기 하나 이상의 관리 애플리케이션에 액세스하는 단계를 포함하는 방법.
  11. 제10항에 있어서, 관리 API 모듈은 상기 API 내에 들어 있는 방법.
  12. 제1항에 있어서, 모듈 레지스트리를 갱신하여 상기 애플리케이션 및 단계 d)에서 선택된 하나 이상의 타겟 매핑 모듈 사이의 연관을 기록하는 단계를 더 포함하는 방법.
  13. 제1항에 있어서, 상기 정보 및 규칙들은 동적으로 갱신되기에 적합하게 된 방법.
  14. 제13항에 있어서, 상기 정보 및 규칙들은 실행시간에 파싱되는 텍스트 기반 부호화를 포함하는 방법.
  15. 제13항에 있어서, 상기 정보 및 규칙들은 실행시간에 파싱되는 이진수 기반 부호화를 포함하는 방법.
  16. 제1항에 있어서, 정보 및 규칙들은 동작들을 하나 이상의 매핑 모듈을 위한 의사 동작들과 연관시키는 방법.
  17. 기계가 다음의 방법 단계들을 수행하도록 하는 기계 판독가능 프로그램코드 를 포함하는 프로그램 생성물에 있어서,
    a) 매핑 요구를 수신하는 단계로서, 상기 매핑 요구는 애플리케이션에 의해 트리거되는 단계;
    b) 하나 이상의 후보 매핑 모듈을 상기 API로 등록된 매핑 모듈들의 군으로부터 선택하는 단계;
    c) 상기 애플리케이션 및 하나 이상의 매핑 모듈 사이의 연관을 나타내는 정보 및 규칙들 중의 적어도 하나에 액세스하는 단계; 및
    d) 정보 및 규칙들 중의 상기 적어도 하나에 기초하여 상기 애플리케이션과 함께 사용하기 위한 하나 이상의 타겟 매핑 모듈을 선택하는 단계를 포함하는 프로그램 생성물.
  18. 제17항에 있어서, 단계 b)는 기설정된 규칙들의 집합을 적용하는 단계를 포함하는 프로그램 생성물.
  19. 제18항에 있어서, 상기 기설정된 규칙들의 집합은 상기 후보 매핑 모듈들과의 애플리케이션 유형의 연관을 포함하는 프로그램 생성물.
  20. 제17항에 있어서, 단계 c)는 내부 제어 인터페이스를 통해 시스템 데이터를 가져오는 단계를 포함하는 프로그램 생성물.
  21. 제17항에 있어서, 단계 c)는 데이터베이스로부터 규칙들을 가져오는 단계를 포함하는 프로그램 생성물.
  22. 제21항에 있어서, 상기 데이터베이스는 상기 API 내에 들어 있는 프로그램 생성물.
  23. 제21항에 있어서, 상기 규칙들은 API 내에 기설정된 규칙들을 포함하는 프로그램 생성물.
  24. 제17항에 있어서, 하나 이상의 타겟 매핑 모듈을 선택하는 상기 단계에 기초하여, 일반 API의 동작들을 특화 구현물에 매핑하고 연관시키는 단계를 기계가 수행하도록 하는 기계 판독가능 프로그램코드를 더 포함하는 프로그램 생성물.
  25. 제17항에 있어서, 하나 이상의 API 기능의 관리를 위한 데이터를 얻도록 하나 이상의 관리 애플리케이션에 액세스하는 단계를 기계가 수행하도록 하는 기계 판독가능 프로그램코드를 더 포함하는 프로그램 생성물.
  26. 제25항에 있어서, 상기 액세스하는 단계는 관리 API 모듈을 이용하여 상기 하나 이상의 관리 애플리케이션에 액세스하는 단계를 포함하는 프로그램 생성물.
  27. 제26항에 있어서, 관리 API 모듈은 상기 API 내에 들어 있는 프로그램 생성물.
  28. 제17항에 있어서, 모듈 레지스트리를 갱신하여 상기 애플리케이션 및 단계 d)에서 선택된 하나 이상의 타겟 매핑 모듈 사이의 연관을 기록하는 단계를 기계가 수행하도록 하는 기계 판독가능 프로그램코드를 더 포함하는 프로그램 생성물.
  29. 제17항에 있어서, 상기 정보 및 규칙들은 동적으로 갱신되기에 적합하게 된 프로그램 생성물.
  30. 제29항에 있어서, 상기 정보 및 규칙들은 실행시간에 파싱되는 텍스트 기반 부호화를 포함하는 프로그램 생성물.
  31. 제29항에 있어서, 상기 정보 및 규칙들은 실행시간에 파싱되는 이진수 기반 부호화를 포함하는 프로그램 생성물.
  32. 제17항에 있어서, 정보 및 규칙들은 동작들을 하나 이상의 매핑 모듈을 위한 의사 동작들과 연관시키는 프로그램 생성물.
  33. 응용프로그램 인터페이스(API) 시스템에 있어서,
    하나 이상의 애플리케이션에 연관된 매핑 모듈들의 부착, 분리 및 트래킹을 관리하기에 적합하게 된 모듈 레지스트리; 및
    애플리케이션에 의해 트리거되는 매핑 요구에 응답하여 상기 매핑 모듈들 중의 하나 이상의 선택을 용이하게 하기에 적합하게 된 매핑 모듈 선택기를 포함하는 API시스템.
  34. 제33항에 있어서, 상기 매핑 모듈 선택기는 기설정된 규칙들의 집합을 적용하기에 적합하게 된 API시스템.
  35. 제34항에 있어서, 상기 기설정된 규칙들의 집합은 하나 이상의 후보 매핑 모듈과의 애플리케이션의 연관을 포함하는 API시스템.
  36. 제33항에 있어서, 상기 매핑 모듈 선택기는 내부 제어 인터페이스를 통해 시스템 데이터를 가져오기에 적합하게 된 API시스템.
  37. 제33항에 있어서, 상기 매핑 모듈 선택기는 데이터베이스로부터 규칙들을 가져오기에 적합하게 된 API시스템.
  38. 제35항에 있어서, 상기 데이터베이스는 상기 API 내에 들어 있는 API시스템.
  39. 하나 이상의 응용프로그램;
    상기 응용프로그램을 실행하기에 적합하게 된 프로세서; 및
    응용프로그램 인터페이스(API)를 포함하며, 상기 API는,
    상기 하나 이상의 애플리케이션에 연관된 매핑 모듈들의 부착, 분리 및 트래킹을 관리하기에 적합하게 된 모듈 레지스트리; 및
    애플리케이션에 의해 트리거되는 매핑 요구에 응답하여 상기 매핑 모듈들 중의 하나 이상의 선택을 용이하게 하기에 적합하게 된 매핑 모듈 선택기를 포함하는 전자기기.
  40. 제39항에 있어서, 상기 매핑 모듈 선택기는 기설정된 규칙들의 집합을 적용하기에 적합하게 된 전자기기.
  41. 제40항에 있어서, 상기 기설정된 규칙들의 집합은 하나 이상의 후보 매핑 모듈과의 애플리케이션의 연관을 포함하는 전자기기.
  42. 제39항에 있어서, 상기 매핑 모듈 선택기는 내부 제어 인터페이스를 통해 시스템 데이터를 가져오기에 적합하게 된 전자기기.
  43. 제39항에 있어서, 상기 매핑 모듈 선택기는 데이터베이스로부터 규칙들을 가져오기에 적합하게 된 전자기기.
  44. 제43항에 있어서, 상기 데이터베이스는 상기 API 내에 들어 있는 전자기기.
  45. 제39항에 있어서, 상기 전자기기는 모바일 기기인 전자기기.
  46. 이벤트를 하나 이상의 애플리케이션에 연관시키는 컴퓨터 구현 방법에 있어서,
    a) 이벤트가 하나 이상의 활동성 매핑 모듈에 연관되는지를 결정하는 단계로서, 각 매핑 모듈은 API 구현물을 나타내는 단계;
    b) 상기 하나 이상의 활동성 매핑 모듈에 연관된 하나 이상의 애플리케이션을 식별하는 단계; 및
    c) 상기 하나 이상의 애플리케이션에 상기 이벤트를 통지하는 단계를 포함하는 컴퓨터 구현 방법.
  47. 제46항에 있어서, 상기 이벤트는 매핑 모듈의 부착 및 분리 중의 적어도 하나인 컴퓨터 구현 방법.
  48. 제46항에 있어서, 상기 이벤트는 애플리케이션에 의해 발생되는 컴퓨터 구현 방법.
  49. 제46항에 있어서,
    d) 상기 이벤트에 기초하여 상기 애플리케이션의 기능들을 실행하는 단계를 더 포함하는 컴퓨터 구현 방법.
  50. 기계가 다음의 방법 단계들을 수행하게 하기 위한 기계 판독가능 프로그램코드를 포함하는 프로그램 생성물에 있어서,
    a) 이벤트가 하나 이상의 활동성 매핑 모듈에 연관되는지를 결정하는 단계로서, 각 매핑 모듈은 API 구현물을 나타내는 단계;
    b) 상기 하나 이상의 활동성 매핑 모듈에 연관된 하나 이상의 애플리케이션을 식별하는 단계; 및
    c) 상기 하나 이상의 애플리케이션에 상기 이벤트를 통지하는 단계를 포함하는 프로그램 생성물.
  51. 제50항에 있어서, 상기 이벤트는 매핑 모듈의 부착 및 분리 중의 적어도 하나인 프로그램 생성물.
  52. 제50항에 있어서, 상기 이벤트는 애플리케이션에 의해 발생되는 프로그램 생성물.
  53. 제50항에 있어서,
    d) 상기 이벤트에 기초하여 상기 애플리케이션의 기능들을 실행하는 단계
    를 기계가 실행하게 하기 위한 기계 판독가능 프로그램코드를 더 포함하는 프로그램 생성물.
KR1020067027445A 2004-05-28 2005-05-27 일반 응용프로그램 인터페이스를 구현하기 위한 시스템 및방법 KR20070021278A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020067027445A KR20070021278A (ko) 2004-05-28 2005-05-27 일반 응용프로그램 인터페이스를 구현하기 위한 시스템 및방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/857,157 2004-05-28
KR1020067027445A KR20070021278A (ko) 2004-05-28 2005-05-27 일반 응용프로그램 인터페이스를 구현하기 위한 시스템 및방법

Publications (1)

Publication Number Publication Date
KR20070021278A true KR20070021278A (ko) 2007-02-22

Family

ID=43653392

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020067027445A KR20070021278A (ko) 2004-05-28 2005-05-27 일반 응용프로그램 인터페이스를 구현하기 위한 시스템 및방법

Country Status (1)

Country Link
KR (1) KR20070021278A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150049777A (ko) * 2013-10-31 2015-05-08 주식회사 엘지화학 응용 모듈 실행제어장치 및 그 실행제어방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150049777A (ko) * 2013-10-31 2015-05-08 주식회사 엘지화학 응용 모듈 실행제어장치 및 그 실행제어방법

Similar Documents

Publication Publication Date Title
US20050268308A1 (en) System and method for implementing a general application program interface
JP7275171B2 (ja) オンデマンドネットワークコード実行システムにおけるオペレーティングシステムカスタマイゼーション
US8122292B2 (en) Debugging of business flows deployed in production servers
US7349970B2 (en) Workload management of stateful program entities
KR101366402B1 (ko) 가상 실행 시스템 및 가상 실행 시스템의 성능 향상 방법
AU2003279228C1 (en) Startup and control of graph-based computation
US7882501B1 (en) System and method for enabling dynamic modifed class reloading in an application server environment
US20080263554A1 (en) Method and System for Scheduling User-Level I/O Threads
Vukovic et al. Adaptive, planning based, web service composition for context awareness
US7418708B2 (en) JMS integration into an application server
US10728169B1 (en) Instance upgrade migration
US8055773B2 (en) Method and system for executing system management flows
US11397622B2 (en) Managed computing resource placement as a service for dedicated hosts
JP4866636B2 (ja) 分散型プログラム実行環境における稼動品質管理方法
US11531526B1 (en) Creating portable serverless applications
Alliance Service-based architecture in 5G
Seybold et al. The impact of the storage tier: A baseline performance analysis of containerized dbms
EP4172773A1 (en) Managed control plane service
US20150363241A1 (en) Method and apparatus to migrate stacks for thread execution
KR20070021278A (ko) 일반 응용프로그램 인터페이스를 구현하기 위한 시스템 및방법
KR100503291B1 (ko) 실시간 트랜잭션 처리요청 메시지의 분석과 업무처리를계층구조로 구성한 트랜잭션 통합메시지 처리시스템
US7912922B2 (en) Globally unique instance identification
Almeida Dynamic reconfiguration of object-middleware-based distributed systems
EP1505497A1 (en) A method, a computer software product, and a telecommunication device for dynamically and automatically loading software components
Schulze et al. Migration transparency in agent systems

Legal Events

Date Code Title Description
A201 Request for examination
E601 Decision to refuse application