KR102354717B1 - 언어-독립형 디스패치를 위한 코드 서비스 기법 - Google Patents

언어-독립형 디스패치를 위한 코드 서비스 기법 Download PDF

Info

Publication number
KR102354717B1
KR102354717B1 KR1020167031821A KR20167031821A KR102354717B1 KR 102354717 B1 KR102354717 B1 KR 102354717B1 KR 1020167031821 A KR1020167031821 A KR 1020167031821A KR 20167031821 A KR20167031821 A KR 20167031821A KR 102354717 B1 KR102354717 B1 KR 102354717B1
Authority
KR
South Korea
Prior art keywords
component
language
application
target
code
Prior art date
Application number
KR1020167031821A
Other languages
English (en)
Other versions
KR20170003578A (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 KR20170003578A publication Critical patent/KR20170003578A/ko
Application granted granted Critical
Publication of KR102354717B1 publication Critical patent/KR102354717B1/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/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • 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/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • 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
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • 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/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

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

서로 다른 프로그래밍 언어로 써진 컴포넌트들의 상호운용성을 향상시키기 위한 시스템, 방법, 및 소프트웨어가 본 명세서에 개시된다. 하나의 구현예에서, 코드 서비스는 타깃 환경보다 위의 레이어에 있는 애플리케이션 환경에서 메시지 인터페이스를 통해 애플리케이션 컴포넌트가 통신한 요청 메시지를 수신한다. 상기 요청 메시지는 타깃 환경에서 이용 가능하고 애플리케이션 컴포넌트의 언어와는 상이한 언어로 프로그래밍된 타깃 컴포넌트를 호출하기 위한 요청을 포함한다. 요청에 응답하여, 서비스는 타깃 환경에서 타깃 컴포넌트를 호출하는 것과 연관된 적어도 서비스 컴포넌트를 식별한다. 서비스 컴포넌트는 실행되어 컴포넌트 인터페이스를 통해 타깃 컴포넌트를 호출할 수 있다.

Description

언어-독립형 디스패치를 위한 코드 서비스 기법{CODE SERVICE FOR LANGUAGE-INDEPENDENT DISPATCH}
본 발명의 측면들은 컴퓨팅 하드웨어 및 소프트웨어 기술에 관한 것이며, 구체적으로는 컴포넌트 사이의 인터페이싱을 위한 코드 서비스에 관한 것이다.
소프트웨어 컴포넌트는 애플리케이션 프로그래밍 인터페이스 또는 애플리케이션 2진 인터페이스를 통해 서로 통신하는 것이 일반적이다. 이러한 인터페이스는 해당 컴포넌트를 다른 컴포넌트가 호출해서 인터렉션할 수 있는 방식을 규정한다. 애플리케이션 프로그래밍 인터페이스는 애플리케이션 2진 인터페이스와는 다른 유형의 인터페이스지만, 이들은 모두 한 컴포넌트가 다른 컴포넌트와 인터렉션할 수 있는 통로이다. 컴포넌트가 서로 다른 언어로 프로그래밍될 때, 이들은 거의 항상 서로 다른 컴파일러 및 인터프리터로 컴파일 또는 해석된다. 이는 컴포넌트 간의 상호운용성이 방해되는 상황이 발생할 수 있다.
예를 들어, 라이브러리 내 컴포넌트가 C 또는 C++로 써질 수 있지만, 라이브러리를 호출하는 컴포넌트가 JavaScript 또는 그 밖의 다른 임의의 언어로 써질 수 있다. 라이브러리는 자신의 프로그래밍 언어와 연관된 구조의 세트(유형, 함수, 메소드 등)는 가질 수 있지만, 자신의 컴포넌트가, 상이한 구조를 갖는 상이한 언어로 써진 타 컴포넌트와 인터렉션할 때에 미스매치를 유발할 수 있다. 이러한 환경에서 런-타임 에러 및 그 밖의 다른 불규칙이 발생될 수 있다.
이 문제에 대한 일부 해결책으로 적절한 애플리케이션 프로그래밍 인터페이스 또는 애플리케이션 2진 인터페이스를 호출 컴포넌트의 소스 코드로 수동으로 코딩하는 것이 있지만, 이는 시간 소모적이며 에러에 취약할 수 있다. 덧붙여, 컴포넌트 인터페이스의 변경을 계속 알기 위해서 이러한 코드를 유지하고 있는 것은, 불필요하게 개발 자원을 소비하는 방대한 작업이다.
이들 및 그 밖의 다른 문제점을 완화하기 위해, 한 언어로 써진 컴포넌트가 다른 언어로 써진 컴포넌트를 성공적으로 호출하는 언어-맞춤형 디스패처(lanquage-specific dispatcher)가 개발되었다. 예를 들어, C#으로 써진 컴포넌트가, 동일한 프로세스에서 실행되면서 타깃으로 하는 컴포넌트와 인터렉트할 수 있는 C#-맞춤형 디스패처를 포함할 수 있다. C++로 써진 서로 다른 컴포넌트와 연관된 개별 프로세서에서, 가령, 타깃 프로세스와도 인터렉션할 수 있고 다른 프로세스에서 실행되는 컴포넌트에 대해서도 마찬가지인 개별 C++ 맞춤형 디스패처가 실행될 수 있다.
서로 다른 언어로 써진 소프트웨어 컴포넌트 사이의 상호운용성을 향상시키기 위한 시스템, 방법 및 소프트웨어가 제공된다.
하나의 구현예에서, 코드 서비스가, 타깃 환경보다 위의 레이어에 있는 애플리케이션 환경에서 메시지 인터페이스를 통해 애플리케이션 컴포넌트에 의해 통신되는 요청 메시지를 수신한다. 상기 요청 메시지는 상기 타깃 환경에서 이용 가능하며 상기 애플리케이션 컴포넌트의 언어와 상이한 언어로 프로그래밍된 타깃 컴포넌트를 호출하는 요청을 포함한다. 상기 요청에 응답하여, 적어도 상기 타깃 환경에서 상기 타깃 컴포넌트를 호출하는 것과 연관된 서비스 컴포넌트를 식별한다. 상기 서비스 컴포넌트는 실행되어 컴포넌트 인터페이스를 통해 타깃 컴포넌트를 호출하게 한다.
일부 구현예에서, 코드 서비스는 타깃 컴포넌트의 호출을 핸들링하는 언어-독립형 디스패처 및 디스패처와 코드 서비스를 호출하는 애플리케이션 사이의 번역을 수행하는 언어-맞춤형 어댑터를 포함한다.
이 개요는 이하에서 더 설명될 개념의 일부를 선택해서 개략적으로 소개하기 위해 제공된다. 이 개요는 본 발명의 핵심 특징부 또는 필수 특징부를 나타내는 것이 아니며 본 발명의 범위를 한정하려 사용되는 것도 아니다.
본 발명의 많은 양태가 다음의 도면을 참조하여 더 잘 이해될 수 있다. 몇 가지 구현예가 이들 도면과 관련하여 기재되지만, 본 발명은 여기서 개시된 구현예로 한정되지 않는다. 이와 달리, 모든 대안예, 수정예 및 균등예를 커버한다.
도 1은 하나의 구현예에서의 동작 아키텍처를 도시한다.
도 2는 하나의 구현예에서의 동작 시나리오를 도시한다.
도 3은 하나의 구현예에서의 인터페이스 프로세스를 도시한다.
도 4는 하나의 구현예에서의 동작 아키텍처를 도시한다.
도 5는 하나의 구현예에서의 동작 시나리오를 도시한다.
도 6은 하나의 구현예에서의 동작 시나리오를 도시한다.
도 7은 하나의 구현예에서의 동작 아키텍처를 도시한다.
도 8은 하나의 구현예에서의 동작 아키텍처를 도시한다.
도 9는, 도 1-8 및 이하의 구체적인 내용과 관련하여 본 명세서에 개시된 애플리케이션, 서비스, 프로세스, 아키텍처, 및 동작 시나리오 중 임의의 것을 구현하기에 적합한 컴퓨팅 시스템을 도시한다.
본 명세서에 개시된 구현예는 애플리케이션 환경의 애플리케이션 컴포넌트와 타깃 환경의 타깃 컴포넌트 사이의 향상된 상호운용성을 가능하게 한다. 코드 서비스는 메시지 인터페이스 레이어에서 애플리케이션 컴포넌트와 통신하고 컴포넌트 인터페이스 레이어에서 타깃 컴포넌트와 통신함으로써 보조한다. 애플리케이션 컴포넌트는 코드 서비스에게 타깃 컴포넌트를 호출하도록 요청을 행하고, 이에 응답해서, 코드 서비스는 서비스 컴포넌트를 이용해서 컴포넌트 인터페이스 레이어에서 타깃 컴포넌트를 호출한다.
적어도 하나의 구현예에서, 코드 서비스는 메시지 인터페이스를 통해 애플리케이션 컴포넌트에 의해 통신되는 요청 메시지를 수신한다. 상기 요청 메시지는, 타깃 환경에서 이용 가능하고 애플리케이션 컴포넌트의 언어와 상이한 언어로 프로그램된 타깃 컴포넌트를 호출하는 요청을 포함할 수 있다. 요청에 응답하여, 코드 서비스는 타깃 환경의 타깃 컴포넌트를 호출하는 것과 연관된 서비스 컴포넌트를 식별하고 서비스 컴포넌트를 실행하여 컴포넌트 인터페이스를 통해 타깃 컴포넌트를 호출할 수 있다.
타깃 컴포넌트는 호출되면 실행되어서, 컴포넌트 인터페이스를 통해 서비스 컴포넌트에게 결과를 반환할 수 있다. 코드 서비스는 타깃 컴포넌트가 제공한 결과를 나타내는 응답을 포함하는 응답 메시지를 메시지 인터페이스를 통해 애플리케이션 컴포넌트에게 통신할 수 있다.
일부 구현예에서, 애플리케이션 환경은 웹-브라우저 애플리케이션일 수 있다. 애플리케이션 컴포넌트의 예시는 웹-브라우저 애플리케이션, 가령, JavaScript 애플리케이션에서 실행되는 애플리케이션 코드를 포함한다. 일부 시나리오에서 타깃 환경은 운영 체제일 수 있으며 메시지 인터페이스는 웹-브라우저와 운영 체제 사이의 통신 채널일 수 있다. 타깃 컴포넌트의 예시는 운영 체제 내 객체를 포함하며, 서비스 컴포넌트는 객체를 호출하기 위한 코드일 수 있다. 웹-브라우저와 운영 체제 사이의 통신 채널의 예시는 네트워크 요청, 맵핑된 메모리, 하이퍼-텍스트 전송 프로토콜 요청, 암호 서비스(가령, 보안 소켓 레이어, 즉 SSL(secure socket layer)), 웹 서비스 요청, 또는 웹 소켓 통신이 있다. 컴포넌트 인터페이스의 예시는 애플리케이션 2진 인터페이스 및 애플리케이션 프로그래밍 인터페이스를 포함한다.
코드 서비스는, 일부 시나리오에서, 언어-독립형 디스패처(dispatcher) 및 다양한 언어-맞춤형 어댑터(adapter)를 포함할 수 있다. 각각의 언어-맞춤형 어댑터는 타깃 컴포넌트를 호출하기 위한 요청 메시지를 수신한다. 타깃 컴포넌트와 상이한 언어로 써진 애플리케이션 컴포넌트는 요청 메시지를 개시할 수 있다. 각각의 언어-맞춤형 어댑터가 써진 언어는 타깃 컴포넌트가 프로그래밍된 언어와 상이할 수 있고, 다양한 언어-맞춤형 어댑터 중 나머지와 특정하게 연관된 나머지 언어와도 상이할 수 있다.
언어 맞춤형 어댑터는, 요청 메시지를, 언어-독립형 디스패처가 핸들링하는 요청으로 해석할 수 있다. 그 후 언어-독립형 디스패처는 요청 메시지의 대상인 타깃 컴포넌트와 연관되거나 이에 대응하는 다양한 서비스 컴포넌트를 식별할 수 있다. 타깃 컴포넌트는 서비스 컴포넌트를 실행시킴으로써 호출될 수 있고 이는 컴포넌트 인터페이스 레벨에서 타깃 컴포넌트를 통신 또는 호출한다.
일부 구현예에서, 언어-맞춤형 어댑터는 빌드 시간에 자동으로 생성될 수 있다. 예를 들어, 새 타깃 컴포넌트가 개발되는 경우, 상기 새 타깃 컴포넌트가 빌드될 때 다양한 프로그래밍 언어에 대응하는 다양한 언어-맞춤형 어댑터가 자동으로 생성될 수 있다. 그 후 타깃 컴포넌트 및 언어-맞춤형 어댑터가 언어-독립형 디스패처가 이미 존재하는 런-타임 환경에서 배포될 수 있다. 대안적으로, 디스패처가 새로운 타깃 컴포넌트 및 어댑터와 동시에 배포될 수도 있다.
도면을 참조하면, 도 1은 애플리케이션 컴포넌트와 타깃 컴포넌트 사이의 인터렉션을 돕는데 코드 서비스가 채용될 수 있는 동작 아키텍처를 도시한다. 도 2는 동작 아키텍처를 포함하는 동작 시나리오를 도시하며, 도 3은 코드 서비스에 의해 채용될 수 있는 인터페이스 프로세스를 도시한다.
도 4는 언어-맞춤형 어댑터 및 언어-독립형 디스패처를 포함하는 또 다른 동작 아키텍처를 도시한다. 도 5와 도 6 모두는 어댑터 및 디스패처를 포함하는 동작 시나리오를 도시하며, 도 7과 도 8은 다양한 대안적 설계를 나타내는 추가 동작 아키텍처를 도시한다. 도 9는 본 명세서에 개시된 애플리케이션, 서비스, 프로세스, 아키텍처 및 동작 시나리오 중 임의의 것을 구현하기에 적합한 컴퓨팅 시스템을 도시한다.
도 1을 다시 참조하면, 동작 아키텍처(100)는 애플리케이션 환경(103) 내에 있는 애플리케이션 컴포넌트(101)를 포함한다. 애플리케이션 컴포넌트(101)는 메시지 인터페이스를 통해 코드 서비스(111)와 통신한다. 코드 서비스(111)는 컴포넌트 인터페이스를 통해 타깃 환경(123) 내의 타깃 컴포넌트(121)와 통신하는 서비스 컴포넌트(113)를 포함한다. 동작 아키텍처(100)가 다른 요소를 포함할 수도 있으며 본 명세서에 개시된 것만으로 한정되지 않는다는 것을 이해할 것이다.
도 2를 참조하면, 동작 중에 애플리케이션 컴포넌트(101)는 애플리케이션 환경(103)에서 호출되고 요청 메시지를 메시지 인터페이스를 통해 코드 서비스(111)로 통신한다. 코드 서비스(111)는 요청 메시지를 수신하고 이에 응답하여 서비스 컴포넌트(113)를 이용해 컴포넌트 인터페이스를 통해 타깃 컴포넌트(121)를 호출한다. 타깃 컴포넌트(121)는 실행되고 실행 결과를 코드 서비스(111)로 반환한다. 코드 서비스((111)는 메시지 인터페이스를 통해 결과를 애플리케이션 컴포넌트(101)로 제공한다.
애플리케이션 컴포넌트(101)와 코드 서비스(111) 간에 교환되는 통신 뒤의 채움 무늬가 메시지 인터페이스를 나타냄을 알 수 있다. 코드 서비스(111)와 타깃 컴포넌트(121) 사이의 교환되는 통신 뒤의 상이한 채움 무늬가 컴포넌트 인터페이스를 나타내며, 이는 메시지 인터페이스와 상이한 유형의 인터페이스일 수 있다.
도 3은 동작 시나리오(200)에서의 코드 서비스(111)에 의해 채용되는 인터페이스 프로세스(300)를 도시한다. 인터페이스 프로세스(300)는 애플리케이션 컴포넌트(101) 및 타깃 컴포넌트(121)와 함께 코드 서비스(111)의 기능을 더 상세히 기술한다.
동작 중에, 코드 서비스(111)는 애플리케이션 컴포넌트(101)로부터 메시지 인터페이스를 통해 코드 요청을 수신한다(단계(301)). 상기 요청 메시지는 코드 서비스(111)에게 타깃 컴포넌트(121)를 호출하라는 요청을 포함할 수 있다. 예를 들어, 요청 메시지는 타깃 컴포넌트(121)를 명시적으로 또는 묵시적으로, 직접 또는 간접적으로, 또는 그 밖의 다른 임의의 방식으로 특정할 수 있다. 타깃 컴포넌트(121)의 신원은 요청이 메시지 인터페이스를 통해 통신될 수 있도록 하는 그 밖의 다른 정보로 랩핑될 수 있다.
이에 응답하여, 코드 서비스(111)는 타깃 컴포넌트(121)와 연관된 서비스 컴포넌트 - 이 예시의 경우 서비스 컴포넌트(113)로 표현 -를 식별하려 시도한다(단계(303)). 서비스 컴포넌트(113)를 식별하는 것은 다양한 방식으로 이뤄질 수 있는데, 가령, 타깃 컴포넌트의 명칭과 연관하여 서비스 컴포넌트의 명칭을 저장하는 테이블 또는 리스트를 참조하는 방식이 있다. 타깃 컴포넌트(121)가 요청 메시지 내 명칭에 의해 식별될 때, 코드 서비스(111)는 이의 대응하는 서비스 컴포넌트를 식별하기 위한 테이블 또는 리스트를 찾아볼 수 있다.
그 후 서비스 컴포넌트(113)는 타깃 컴포넌트(121)를 호출하기 위해 실행될 수 있다(단계(305)). 일부 시나리오에서, 애플리케이션 컴포넌트(101)는 코드 서비스(111)로 통신할 요청 메시지 내 파라미터를 전달한다. 서비스 컴포넌트(113)는 호출될 때 파라미터를 타깃 컴포넌트(121)로 전달할 수 있다. 서비스 컴포넌트(113)는 타깃 컴포넌트(121)와 관련되고 타깃 컴포넌트(121)를 호출할 수 있게 하는 코드를 포함할 수 있다. 그러나 또 다른 시나리오에서, 타깃 컴포넌트(121)를 호출하기 위한 관련 코드를 찾고 불러오기 위해 서비스 컴포넌트(113)는 호출될 수 있다. 또 다른 시나리오에서, 서비스 컴포넌트(113)는 애플리케이션 컴포넌트(101)가 코드 서비스(111)를 호출할 때 아직 인스턴스화되지 않을 수 있다. 오히려, 코드 서비스(111)는 서비스 컴포넌트(113)를 인스턴스화할 때 호출될 수 있다. 어느 경우라도, 타깃 컴포넌트(121)는 파라미터를 적어도 부분적으로 기초로 하여 실행되고 결과를 코드 서비스(111)로 반환할 수 있다.
이러한 방식으로, 각각의 컴포넌트가 서로 다른 프로그래밍 언어로 써질 수 있더라도, 애플리케이션 컴포넌트(101)는 타깃 컴포넌트(121)를 성공적으로 호출할 수 있다. 코드 서비스(111)가 하위 레이어 인터페이스 또는 컴포넌트 인터페이스를 통해 타깃 컴포넌트(121)와 통신하는 동안 애플리케이션 컴포넌트(101)는 메시지 인터페이스를 통해 코드 서비스(111)와 통신함으로써 타깃 컴포넌트를 성공적으로 호출할 수 있다. 이러한 기법은 다양성 환경에서 컴포넌트들의 상호운용성을 향상시킨다.
도 1을 다시 참조하면, 애플리케이션 컴포넌트(101)는 애플리케이션 환경(103) 하에서 실행되며 메시지 인터페이스를 통해 코드 서비스(111)와 통신할 수 있는 임의의 코드, 모듈, 애플리케이션, 또는 이들의 집합을 나타낸다. 애플리케이션 컴포넌트(101)는 애플리케이션 환경(103) 하에서 실행되는 더 큰 애플리케이션의 일부일 수 있다. 애플리케이션 환경(103)의 예시는 웹 브라우저 애플리케이션, 운영 체제, 가상 머신, 자바 가상 머신, 또는 이들의 임의의 조합 또는 변형을 포함한다.
타깃 컴포넌트(121)는 타깃 환경(123) 하에서 실행되며 서비스 컴포넌트(113)에 의해 호출될 수 있는 임의의 코드, 모듈, 애플리케이션, 또는 이들의 집합을 나타낸다. 타깃 컴포넌트(121)의 비제한적 예를 들면, 컴포넌트 객체 모델(COM) 객체, .NET 객체, C 객체, C++ 객체, 또는 그 밖의 다른 임의의 유형의 컴포넌트가 있다. 타깃 환경(123)의 비제한적 예를 들면, 운영 체제, 가상 머신, 자바 가상 머신, 그 밖의 다른 웹 브라우저, 또는 이들의 임의의 조합 또는 변형이 있다.
코드 서비스(111)는 애플리케이션 컴포넌트(101)와 인터페이싱할 수 있고 서비스 컴포넌트(113)를 런칭할 수 있는 임의의 코드, 컴포넌트 모듈, 애플리케이션, 또는 이들의 집합, 또는 그 밖의 다른 임의의 유형의 소프트웨어를 나타낸다. 일부 환경에서 코드 서비스(111)는 타깃 환경(123)에서 구현될 수 있지만, 타깃 환경(123)의 외부에서도 구현될 수 있다.
동작 아키텍처(100)는 단일 컴퓨팅 장치 상에서 구현되거나 복수의 컴퓨팅 장치에 걸쳐 분산될 수 있다. 컴퓨팅 시스템(901)은 하나의 적합한 플랫폼을 나타내고 이하에서 더 상세히 언급된다.
도 4는 하나의 구현예에서 동작 아키텍처(400)를 도시한다. 동작 아키텍처(400)는 애플리케이션 환경(403)에서의 애플리케이션 컴포넌트(401) 및 애플리케이션 환경(413)에서의 애플리케이션 컴포넌트(411)를 포함한다. 애플리케이션 컴포넌트(401)와 애플리케이션 컴포넌트(411)는 메시지 인터페이스를 통해 타깃 환경(420)에서 코드 서비스(421)와 통신한다. 애플리케이션 컴포넌트(401)는 애플리케이션 컴포넌트(411)와 동일하거나 상이한 메시지 인터페이스를 이용할 수 있다. 코드 서비스(421)는 하나 이상의 컴포넌트 인터페이스를 통해 타깃 컴포넌트(432)와 인터페이싱한다.
코드 서비스(421)는 하나의 언어(언어 A)로 써진 애플리케이션 컴포넌트와 연관된 언어-맞춤형 어댑터(425)를 포함하고 또 다른 언어(언어 B)로 써진 애플리케이션 컴포넌트와 연관된 또 다른 언어-맞춤형 어댑터(427)를 더 포함한다. 언어-맞춤형 어댑터(425)는 하나의 언어로 써진 애플리케이션 컴포넌트, 가령, 애플리케이션 컴포넌트(401)에 의해 개시되는 요청 메시지를 핸들링하고, 언어-맞춤형 어댑터(427)는 또 다른 언어로 핸들링되는 요청 메시지, 가령, 애플리케이션 컴포넌트(411)를 핸들링한다.
언어-독립형 디스패처(429)가 또한 코드 서비스(421)에 포함된다. 언어-독립형 디스패처(429)는 언어-맞춤형 어댑터(425 및 427)와 타깃 컴포넌트(423) 사이의 인터페이싱한다. 언어-맞춤형 어댑터(425)와 언어-맞춤형 어댑터(427) 모두 언어-독립형 디스패처(429)와 동일한 프로세스의 일부로서 실행되며 따라서 프로세스 인터페이스를 통해 또는 메시지 인터페이스와 구별되는 그 밖의 다른 일부 인터-프로세스 방식으로 언어-독립형 디스패처(429)와 통신한다. 다시 말하면, 애플리케이션 컴포넌트(401 및 411)는 언어-맞춤형 어댑터(425 및 427) 및 언어-독립형 디스패처(429)와 동일한 프로세스의 일부로서 실행되지 않는다. 많은 경우, 타깃 컴포넌트(423)는 또한 메모리 내 개별 프로세스의 일부로서 실행된다.
도 5를 참조하면, 동작 시나리오(500)는 애플리케이션 컴포넌트(401)를 포함하여 구현예에서 대표적 데이터 흐름을 보여줄 수 있다. 동작 중에, 애플리케이션 컴포넌트(401)가 애플리케이션 환경(403)에서 호출되고 요청 메시지를 메시지 인터페이스를 통해 코드 서비스(421) 내 언어-맞춤형 어댑터(425)로 통신한다. 언어-맞춤형 어댑터(425)는 메시지를 수신 및 처리하는데, 가령, 메시지를 랩핑해제(unwrap)하여 여기에 포함된 코드 요청을 액세스할 수 있다. 코드 요청은 애플리케이션 컴포넌트(401)가 호출하려 시도하는 특정 타깃 컴포넌트를 식별하며 또한 컴포넌트를 호출할 때의 파라미터를 포함한다.
언어-맞춤형 어댑터(425)는 코드 요청을 언어-독립형 디스패처(429)가 이해하는 포맷으로 번역하고 프로세스내 요청을 언어-독립형 디스패처(429)에게 전달할 수 있다. 언어-독립형 디스패처(429)는 코드 요청을 수신하고 이에 응답하여 어느 서비스 컴포넌트(도시되지 않음)가 타깃 컴포넌트(423)에 도달하기 위해 사용되는지를 조사한다. 언어-독립형 디스패처(429)가 찾는 테이블, 리스트, 또는 그 밖의 다른 이러한 데이터 구조가 어느 서비스 컴포넌트가 어느 타깃 컴포넌트와 연관되는지를 정의 또는 그 밖의 다른 방식으로 특정할 수 있다.
적절한 서비스 컴포넌트를 식별하면, 언어-독립형 디스패처(429)는 서비스 컴포넌트를 실행시켜 타깃 컴포넌트(423)를 호출할 수 있다. 서비스 컴포넌트는 타깃 컴포넌트(423)(언어 C)와 동일한 언어로 써져서 컴포넌트들 사이의 충분한 상호운용성을 보장할 수 있다. 상기 서비스 컴포넌트에 애플리케이션 컴포넌트(401)가 제공한 파라미터가 로딩되어, 타깃 컴포넌트(423)가 파라미터에 대해 실행될 수 있다.
타깃 컴포넌트(423)는 실행 결과를 언어-독립형 디스패처(429)에게 반환하며, 언어-독립형 디스패처는 상기 결과를 언어-맞춤형 어댑터(425)에게 전달한다. 언어-맞춤형 어댑터(425)가 실행 결과 또는 코드 결과를 포함하는 응답 메시지를 생성하고, 메시지 인터페이스를 통해 응답 메시지를 애플리케이션 컴포넌트(401)로 통신한다.
애플리케이션 컴포넌트(401)와 언어-맞춤형 어댑터(425) 간에 교환되는 통신 뒤의 채움 무늬가 메시지 인터페이스를 나타냄이 자명할 수 있다. 언어-맞춤형 어댑터(425)와 언어-독립형 디스패처 간에 교환되는 통신 뒤의 상이한 채움 무늬가 프로세스 인터페이스, 또는 프로세스 중 통신을 나타낸다. 언어-독립형 디스패처(429)와 타깃 컴포넌트(423) 간에 교환되는 통신 뒤의 또 다른 채움 무늬가 컴포넌트-레벨 인터페이스를 나타내거나, 언어-독립형 디스패처(429)와 타깃 컴포넌트(423)가 프로세스 전체에서 통신함을 나타낸다.
도 6에 도시된 동작 시나리오(600)가 애플리케이션 컴포넌트(411)를 포함하여 또 다른 구현예에서 대표적 데이터 흐름을 보여준다. 도 5와 도 6은 함께 언어-독립형 디스패처(429)가 복수의 언어-맞춤형 어댑터와 인터렉션할 수 있고 따라서 서로 다른 프로그래밍 언어(언어 A와 언어 B)로 써진 애플리케이션 컴포넌트들과 또 다른 프로그래밍 언어(언어 C)로 써진 타깃 컴포넌트들 사이의 상호운용성을 가능하게 할 수 있음을 도시한다.
동작 중에, 애플리케이션 컴포넌트(411)는 애플리케이션 환경(413)에서 호출되고 요청 메시지를 메시지 인터페이스를 통해 언어-맞춤형 어댑터(427)에게 통신한다. 언어-맞춤형 어댑터(427)는 메시지를 수신 및 처리하는데, 가령, 메시지를 랩핑해제하여 여기에 포함된 코드 요청을 액세스할 수 있다. 코드 요청은 애플리케이션 컴포넌트(411)가 호출하려 시도하는 특정 타깃 컴포넌트를 식별하고 컴포넌트를 호출할 때의 파라미터를 또한 포함한다.
언어-맞춤형 어댑터(427)가 코드 요청을 언어-독립형 디스패처(429)가 이해하는 포맷으로 번역하고 프로세스내 요청을 언어-독립형 디스패처(429)로 전달한다. 언어-독립형 디스패처(429)는 코드 요청을 수신하고 이에 응답하여 어느 서비스 컴포넌트(도시되지 않음)가 타깃 컴포넌트(423)에 도달하기 위해 사용되는지를 조사한다.
적절한 서비스 컴포넌트를 식별하면, 언어-독립형 디스패처(429)는 서비스 컴포넌트를 실행시켜 타깃 컴포넌트(423)를 호출할 수 있다. 서비스 컴포넌트는 타깃 컴포넌트(423)와 동일한 언어(언어 C)로 써질 수 있어서, 컴포넌트들 사이의 충분한 상호운용성을 보장할 수 있다. 서비스 컴포넌트에 애플리케이션 컴포넌트(411)가 제공한 파라미터가 로딩되어 타깃 컴포넌트(423)가 파라미터에 대해 실행될 수 있다.
타깃 컴포넌트(423)는 실행 결과를 언어-독립형 디스패처(429)로 반환하고, 상기 언어-독립형 디스패처는 결과를 언어-맞춤형 어댑터(427)로 전달한다. 언어-맞춤형 어댑터(427)는 실행 결과 또는 코드 결과를 포함하는 응답 메시지를 생성하고 상기 응답 메시지를 메시지 인터페이스를 통해 애플리케이션 컴포넌트(411)로 통신한다.
애플리케이션 컴포넌트(411)와 언어-맞춤형 어댑터(427) 간에 교환되는 통신 뒤의 채움 무늬가 메시지 인터페이스를 나타냄이 자명할 수 있다. 언어-맞춤형 어댑터(427)와 언어-독립형 디스패처(429) 사이에 교환되는 통신 뒤의 상이한 채움 무늬가 처리 인터페이스, 또는 프로세스내 통신을 나타낸다. 언어-독립형 디스패처(429)와 타깃 컴포넌트(423) 간에 교환되는 통신 뒤의 또 다른 채움 무늬가 컴포넌트-레벨 인터페이스를 나타내거나, 언어-독립형 디스패처(429)와 타깃 컴포넌트(423)가 프로세스에 걸쳐 통신한다.
다시 도 4를 참조하면, 애플리케이션 컴포넌트(401)가 애플리케이션 환경(403) 하에서 실행되며 메시지 인터페이스를 통해 코드 서비스(421)와 통신할 수 있는 임의의 코드, 모듈, 애플리케이션, 또는 이들의 집합을 나타낸다. 애플리케이션 컴포넌트(401)는 애플리케이션 환경(403) 하에서 실행되는 더 큰 애플리케이션의 일부일 수 있다. 애플리케이션 환경(403)의 예시로는 웹 브라우저 애플리케이션, 운영 체제, 가상 머신, Java 가상 머신, 또는 이들의 임의의 조합 또는 변형이 있다.
애플리케이션 컴포넌트(411)는 애플리케이션 환경(413) 하에서 실행되고 애플리케이션 컴포넌트(401)와 상이한 메시지 인터페이스를 통해 코드 서비스(421)와 통신할 수 있는 임의의 코드, 모듈, 애플리케이션, 또는 이들의 집합을 나타낸다. 애플리케이션 컴포넌트(411)는 애플리케이션 환경(413) 하에서 실행되는 더 큰 애플리케이션의 일부일 수 있다. 애플리케이션 환경(413)의 예시로는 웹 브라우저 애플리케이션, 운영 체제, 가상 머신, Java 가상 머신, 또는 이들의 임의의 조합 또는 변형이 있다. 일부 시나리오에서 애플리케이션 환경(413)은 애플리케이션 환경(403)과 분리될 수 있지만, 또 다른 시나리오에서는 결합되어, 애플리케이션 컴포넌트(401) 및 애플리케이션 컴포넌트(411)가 동일한 애플리케이션 환경 하에서 실행하도록 할 수 있다.
타깃 컴포넌트(423)는 타깃 환경(420) 하에서 실행되며 코드 서비스(421)에 의해 호출될 수 있는 임의의 코드, 모듈, 애플리케이션 또는 이들의 집합을 나타낸다. 타깃 컴포넌트(423)의 비제한적 예를 들면, 컴포넌트 객체 모델(COM) 객체, .NET 객체, C 객체, C++ 객체, 또는 그 밖의 다른 임의의 유형의 컴포넌트가 있다. 타깃 환경(420)의 비제한적 예를 들면, 운영 체제, 가상 머신, Java 가상 머신, 그 밖의 다른 웹 브라우저, 또는 이들의 임의의 조합 또는 변형이 있다.
코드 서비스(421)는 애플리케이션 컴포넌트(401) 및 애플리케이션 컴포넌트(411)와 인터페이싱할 수 있고 서비스 컴포넌트를 런칭하여 타깃 컴포넌트(423)를 호출할 수 있는 임의의 코드, 컴포넌트, 모듈, 애플리케이션, 또는 이의 집합을 나타낸다. 일부 시나리오에서 코드 서비스(412)는 타깃 환경(420)에서 구현될 수 있지만, 타깃 환경(420)을 벗어나 구현될 수도 있다.
동작 아키텍처(400)는 단일 컴퓨팅 장치 상에서 구현되거나 복수의 컴퓨팅 장치에 걸쳐 분산될 수 있다. 컴퓨팅 시스템(901)은 하나의 적합한 플랫폼을 대표하며 이하에서 더 상세히 설명된다.
도 7은 동작 아키텍처(400)에 대해 대안적 설계를 나타내는 또 다른 동작 아키텍처(700)를 도시한다. 동작 아키텍처(700)는 애플리케이션 환경(703)에서 호스팅된 애플리케이션 컴포넌트(701), 애플리케이션 환경(704)에서 호스팅된 애플리케이션 컴포넌트(702), 및 애플리케이션 환경(713)에 호스팅된 애플리케이션 컴포넌트(711)를 포함한다.
애플리케이션 컴포넌트(701) 및 애플리케이션 컴포넌트(702)는 제1 메시지 인터페이스(메시지 인터페이스 X)를 통해 코드 서비스(721)와 통신한다. 애플리케이션 컴포넌트(711)는 상이한 제2 메시지 인터페이스(메시지 인터페이스 Y)를 통해 코드 서비스(721)와 통신한다.
서로 다른 메시지 인터페이스가 코드 서비스(721)에서 이용 가능한 서로 다른 언어-맞춤형 어댑터, 대표적으로, 언어-맞춤형 어댑터(725) 및 언어-맞춤형 어댑터(727)에 대응한다. 언어-맞춤형 어댑터(725)는 제1 프로그래밍 언어(언어 A)에 대응하고 일반적으로 상기 언어로 프로그래밍된 애플리케이션 컴포넌트가 개시한 요청 메시지를 핸들링한다. 언어-맞춤형 어댑터(727)는 제2 프로그래밍 언어(언어 B)에 대응하고 일반적으로 상기 언어로 프로그래밍된 애플리케이션 컴포넌트가 개시한 요청 메시지를 핸들링한다.
언어-맞춤형 어댑터(725)와 언어-맞춤형 어댑터(727)는 모두 언어-독립형 디스패처(729)와 프로세스내에 통신한다. 언어-독립형 디스패처(729)는 다양한 컴포넌트 인터페이스를 통해 타깃 컴포넌트(723) 및 타깃 컴포넌트(724)와 통신한다. 타깃 컴포넌트(723) 및 타깃 컴포넌트(724)는 타깃 환경(720)에서 로딩될 수 있는 컴포넌트를 나타낸다.
동작 중에, 애플리케이션 컴포넌트(701)가 호출될 때, 제1 메시지 인터페이스를 통해 요청 메시지를 언어-맞춤형 어댑터(725)로 통신하여, 타깃 컴포넌트가 호출될 수 있다. 마찬가지로, 또한 애플리케이션 컴포넌트(702)는 타깃 환경(720)에서 타깃 컴포넌트를 호출할 필요가 있을 때 요청 메시지를 언어-맞춤형 어댑터(725)로 통신한다. 이는 애플리케이션 컴포넌트(701 및 702) 모두가 언어-맞춤형 어댑터(725)와 인터렉션하도록 프로그램에 따라 지시될 수 있다. 선택사항으로서, 애플리케이션 환경(703) 또는 애플리케이션 환경(704) 내 그 밖의 다른 요소가 이러한 방식으로 프로그램에 따라 지시될 수 있다.
언어-맞춤형 어댑터(725)는 요청 메시지를 수신하는데, 가령, 이들을 랩핑해제하여 여기에 포함된 코드 요청을 액세스할 수 있다. 코드 요청은 애플리케이션 컴포넌트가 호출을 시도할 수 있는 특정 타깃 컴포넌트를 식별하고 또한 컴포넌트를 호출할 때의 파라미터를 포함할 수 있다. 언어-맞춤형 어댑터(725)는 코드 요청을 언어-독립형 디스패처(729)가 이해하는 포맷으로 번역하고 프로세스내 요청을 언어-독립형 디스패처(729)에게 제공한다. 언어-독립형 디스패처(729)는 코드 요청을 수신하고 이에 응답하여 어느 서비스 컴포넌트(도시되지 않음)가 각각의 요청 메시지에 의해 식별되는 타깃 컴포넌트에 도달하기 위해 사용될 것인지를 조사한다.
적절한 서비스 컴포넌트를 식별하면, 언어-독립형 디스패처(729)가 서비스 컴포넌트를 실행하여 타깃 컴포넌트를 호출할 수 있고, 이 예시의 경우 타깃 컴포넌트는 타깃 컴포넌트(723) 및 타깃 컴포넌트(724) 중 하나 이상일 수 있다. 서비스 컴포넌트는 타깃 컴포넌트와 동일한 언어(언어 C)로 써질 수 있어서, 컴포넌트들 사이의 충분한 상호운용성을 보장할 수 있다. 서비스 컴포넌트에 애플리케이션 컴포넌트(701 및 702)가 제공하는 파라미터가 로딩되어 타깃 컴포넌트가 파라미터에 대해 실행될 수 있다.
타깃 컴포넌트가 실행 결과를 언어-독립형 디스패처(729)로 반환하고, 언어-독립형 디스패처가 결과를 언어-맞춤형 어댑터(725)로 전달한다. 언어-맞춤형 어댑터(725)는 결과를 포함하는 응답 메시지를 생성하고 상기 응답 메시지를 메시지 인터페이스를 통해 애플리케이션 컴포넌트(701 및 702)로 통신한다.
애플리케이션 컴포넌트(711)는 언어-맞춤형 어댑터(727)와 통신하기 위해 상이한 메시지 인터페이스(메시지 인터페이스 Y)를 이용한다는 점에서 코드 서비스(721)와 다소 상이하게 인터렉션한다. 동작 중에, 애플리케이션 컴포넌트(711)는 요청 메시지를 제2 메시지 인터페이스를 통해 언어-맞춤형 어댑터(727)로 통신하여, 타깃 컴포넌트가 호출될 수 있다. 이는 애플리케이션 컴포넌트(711)가 프로그램에 따라 언어-맞춤형 어댑터(727)와 인터렉션하도록 지시될 수 있기 때문이다. 선택사항으로서, 애플리케이션 환경(713)에서의 그 밖의 다른 요소가 프로그램에 따라 애플리케이션 컴포넌트(711)를 대리하여 요청 메시지를 언어-맞춤형 어댑터(727)로 전송하도록 지시될 수 있다.
언어-맞춤형 어댑터(727)는 요청 메시지를 수신 및 처리하는데, 가령 메시지를 랩핑해제하여 여기에 포함된 코드 요청을 액세스할 수 있다. 코드 요청은 애플리케이션 컴포넌트가 호출하려 시도할 수 있는 특정 타깃 컴포넌트를 식별하며 또한 컴포넌트를 호출할 때의 파라미터도 포함할 수 있다. 언어-맞춤형 어댑터(727)가 코드 요청을 언어-독립형 디스패처(729)가 이해한 포맷으로 번역하고 프로세스내 요청을 언어-독립형 디스패처(729)로 제공한다. 언어-독립형 디스패처(729)는 코드 요청을 수신하고 이에 응답하여 어느 서비스 컴포넌트(도시되지 않음)가 요청 메시지가 식별한 타깃 컴포넌트에 도달하기 위해 사용될지를 조사한다.
적절한 서비스 컴포넌트를 식별하면, 언어-독립형 디스패처(729)가 서비스 컴포넌트를 실행시켜 타깃 컴포넌트를 호출할 수 있으며, 이 예시의 경우, 상기 타깃 컴포넌트는 타깃 컴포넌트(723) 및 타깃 컴포넌트(724) 중 하나일 수 있다. 서비스 컴포넌트가 타깃 컴포넌트와 동일한 언어(언어 C)로 써질 수 있어서 컴포넌트들 사이의 충분한 상호운용성이 보장될 수 있다. 서비스 컴포넌트에 애플리케이션 컴포넌트(711)이 제공한 파라미터가 로딩되어, 타깃 컴포넌트가 파라미터에 대해 실행할 수 있다.
타깃 컴포넌트는 언어-독립형 디스패처(729)로 실행 결과를 반환하며, 언어-독립형 디스패처는 상기 결과를 언어-맞춤형 어댑터(727)로 전달한다. 언어-맞춤형 어댑터(727)는 결과를 포함하는 응답 메시지를 생성하고 상기 응답 메시지를 제2 메시지 인터페이스를 통해 애플리케이션 컴포넌트(711)로 통신한다.
도 8은 하나의 구현예에서 또 다른 동작 아키텍처(800)를 도시한다. 동작 아키텍처(800)는 브라우저(803)에서 실행되는 애플리케이션(801), 및 브라우저(803)에서 실행되는 애플리케이션(811)을 포함한다. 브라우저(803)의 추가 인스턴스가 가능할 수도 있고, 혹은 애플리케이션(801) 및 애플리케이션(811) 중 하나 이상을 호스팅하는데 다른 애플리케이션 환경이 사용될 수도 있다.
애플리케이션(801)은 JavaScript 로 프로그래밍되고 따라서 하나의 특정 메시지 인터페이스를 통해 운영 체제(820)에서 실행되는 코드 서비스(821)와 통신하도록 프로그램에 따라 지시된다. 애플리케이션(811)은 C#으로 프로그래밍되고 따라서 상이한 메시지 인터페이스를 통해 코드 서비스(821)와 통신하도록 프로그램에 따라 지시된다. 이 예시에서, 애플리케이션(801)은 하이퍼-텍스트 전송 프로토콜(HTTP) 채널을 통해 코드 서비스(821)와 통신하고, 애플리케이션(811)은 웹 소켓 채널을 통해 통신하다. 그 밖의 다른 채널, 경로, 또는 메시지 인터페이스가 가능하고, 본 발명의 범위 내에서 고려될 수 있으며, 그 예시로는 TSL, SSL, HTTP, JSON, 및 SOAP 통신이 있다.
코드 서비스(821)는 다양한 서비스 컴포넌트, 대표적으로, 서비스 컴포넌트(833), 서비스 컴포넌트(835), 및 서비스 컴포넌트(837)를 포함한다. 각각의 서비스 컴포넌트는 운영 체제(820) 내 다양한 타깃 컴포넌트, 대표적으로 컴포넌트(823), 컴포넌트(825), 및 컴포넌트(827) 중 특정 컴포넌트에 대응한다. 각각의 컴포넌트는 애플리케이션(801) 및 애플리케이션(811)이 써진 언어와 상이한 언어로 써짐이 자명할 수 있다. 서비스 컴포넌트(831, 833, 및 835)는 컴포넌트 인터페이스 레벨에서 컴포넌트(823, 825, 및 827)로의 브리지(bridge)를 제공한다. 예를 들어, 서비스 컴포넌트(833 및 835)는 애플리케이션 2진 인터페이스를 통해 컴포넌트(823 및 825)와 각각 통신한다. 서비스 컴포넌트(837)는 애플리케이션 프로그래밍 인터페이스를 통해 컴포넌트(827)와 통신한다.
간단한 동작 예시를 들면, 브라우저(803) 내 애플리케이션(801 및 811) 중 하나가 메시지 인터페이스들 중 하나를 통해 코드 서비스(821)로 요청 메시지를 통신할 수 있다. 코드 서비스(821)는 메시지를 수신하고 사용될 적절한 서비스 컴포넌트를 식별하여 요청 메시지에서 식별된 타깃 컴포넌트를 호출할 수 있다. 그 후 코드 서비스(821)는 서비스 컴포넌트를 런칭하여 타깃 컴포넌트를 호출할 수 있다. 요청 메시지에 포함된 파라미터가 서비스 컴포넌트에 의해 전달되어 타깃 컴포넌트가 이에 대해 실행될 수 있다. 타깃 컴포넌트는 실행되고, 적용 가능한 경우, 코드 서비스(821)에 의해 통신될 수 있는 결과를 응답 메시지에 실어 개시 애플리케이션으로 반환한다.
도 9는 본 명세서에 개시된 다양한 동작 아키텍처, 시나리오 및 프로세스가 구현될 수 있는 임의의 시스템 또는 시스템 집합을 나타내는 컴퓨팅 시스템(901)을 도시한다. 컴퓨팅 시스템(901)의 비제한적 예를 들면, 스마트 폰, 랩톱 컴퓨터, 태블릿 컴퓨터, 데스크톱 컴퓨터, 하이브리드 컴퓨터, 게임용 기계, 가상 머신, 스마트 텔레비전 및 시계 및 그 밖의 다른 웨어러블 장치뿐 아니라 이들의 그 밖의 다른 임의의 변형 또는 조합이 있다. 또 다른 예시는 서버 컴퓨터, 랙 서버, 웹 서버, 클라우드 컴퓨팅 플랫폼, 및 데이터 센터 장비뿐 아니라 그 밖의 다른 임의의 유형의 물리적 또는 가상 서버 머신, 및 그 밖의 다른 임의의 변형 또는 조합을 포함한다.
컴퓨팅 시스템(901)은 단일 장치, 시스템, 또는 디바이스로 구현될 수 있지만 복수의 장치, 시스템 또는 디바이스로서 분산 방식으로 구현될 수 있다. 컴퓨팅 시스템(901)의 비제한적 예를 들면, 처리 시스템(902), 저장 시스템(903), 소프트웨어(905), 통신 인터페이스 시스템(907), 및 사용자 인터페이스 시스템(909)이 있다. 처리 시스템(902)은 저장 시스템(903), 통신 인터페이스 시스템(907) 및 사용자 인터페이스 시스템(909)과 동작 가능하게 연결된다.
처리 시스템(902)은 저장 시스템(903)으로부터 소프트웨어(905)를 로딩 및 실행한다. 소프트웨어(905)는 적어도 코드 서비스(906), 대표적으로 코드 서비스(111), 코드 서비스(421), 코드 서비스(721) 및 상기 구현예와 관련하여 언급된 코드 서비스(821)를 포함한다. 컴포넌트의 상호운용성을 강화하기 위해 처리 시스템(902)에 의해 실행될 때, 소프트웨어(905)는 처리 시스템(902)에게, 적어도 다양한 프로세스, 동작 시나리오 및 앞서 코드 서비스(111), 코드 서비스(421), 코드 서비스(721) 및 코드 서비스(821)에 대해 언급된 구현예에서 언급된 시퀀스에 대해 앞서 기재된 바와 같이 동작하도록 지시한다. 컴퓨팅 시스템(901)은 간략성을 목적으로 언급되지 않은 추가 장치, 특징부, 또는 앞서 언급된 기능부를 선택사항으로서 포함할 수 있다.
도 9를 다시 참조하면, 처리 시스템(902)은 저장 시스템(903)으로부터 소프트웨어(905)를 불러오고 실행하는 마이크로프로세서 및 그 밖의 다른 회로를 포함할 수 있다. 처리 시스템(902)은 단일 처리 장치 내에서 구현될 수 있지만, 실행 프로그램 명령에서 협업하는 복수의 처리 장치 또는 서브-시스템에 걸쳐 분산될 수도 있다. 처리 시스템(902)의 예시로는 범용 중앙 처리 유닛, 애플리케이션 특정 프로세서, 및 로직 장치뿐 아니라 그 밖의 다른 임의의 처리 장치, 조합, 또는 이들의 변형이 있다.
저장 시스템(903)은 처리 시스템(902)에 의해 판독 가능하고 소프트웨어(905)를 저장할 수 있는 임의의 컴퓨터 판독형 저장 매체를 포함할 수 있다. 저장 시스템(903)은 정보의 저장을 위한 임의의 방법 또는 기법으로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체, 가령, 컴퓨터 판독형 명령, 데이터 구조, 프로그램 모듈 또는 그 밖의 다른 데이터를 포함할 수 있다. 저장 매체의 예시로는 랜덤 액세스 메모리, 리드 온리 메모리, 자기 디스크, 광학 디스크, 플래시 메모리, 가상 메모리 및 비-가상 메모리, 자기 카세트, 자기 테이프, 자기 디스크 저장 또는 그 밖의 다른 자기 저장 장치, 또는 그 밖의 다른 임의의 적합한 저장 매체가 있다. 어느 경우에도 컴퓨터 판독형 저장 매체는 전파된 신호가 아니다.
일부 구현예에서는, 저장 시스템(903)은 또한 컴퓨터 판독형 저장 매체에 더해서, 소프트웨어(905)가 내부 또는 외부적으로 통신되는데 사용될 수 있는 컴퓨터 판독형 통신 매체를 더 포함할 수 있다. 저장 시스템(903)은 단일 저장 장치로서 구현될 수 있지만, 서로 함께 위치하거나 분산되어 있는 복수의 저장 장치 또는 서브-시스템에 걸쳐 구현될 수도 있다. 저장 시스템(903)은 추가 요소, 가령, 제어기, 처리 시스템(902) 또는 그 밖의 다른 시스템과 통신할 수 있다.
소프트웨어(905)는 프로그램 명령으로 구현될 수 있고 그 밖의 다른 기능이, 처리 시스템(902)에 의해 실행될 때, 처리 시스템(902)으로 하여금 본 명세서에 도시된 다양한 동작 시나리오, 시퀀스 및 프로세스와 관련하여 기재된 바대로 동작하도록 지시할 수 있다. 예를 들어, 소프트웨어(905)는 코드 서비스 및 이의 연관된 기능을 구현하기 위한 프로그램 명령을 포함할 수 있다.
특히, 프로그램 명령은 본 명세서에 기재된 다양한 처리 및 동작 시나리오를 수행하도록 협업 또는 그 밖의 다른 방식으로 인터렉션할 수 있는 다양한 컴포넌트 또는 모듈을 포함할 수 있다. 다양한 컴포넌트 또는 모듈이 컴파일 또는 해석된 명령 또는 명령의 그 밖의 다른 변형 또는 조합으로 구현될 수 있다. 다양한 컴포넌트 또는 모듈은 직렬로 또는 병렬로 단일 스레드 환경 또는 멀티스레드 환경에서, 또는 그 밖의 임의의 적합한 실행 패러다임, 변형, 또는 이의 조합에 따라 동기식 또는 비동기식 방식으로 구현될 수 있다. 소프트웨어(905)는 추가 프로세스, 프로그램, 또는 컴포넌트, 가령, 운영 체제 소프트웨어 또는 그 밖의 다른 애플리케이션 소프트웨어를 포함할 수 있다. 소프트웨어(905)는 또한 처리 시스템(902)에 의해 실행 가능한 펌웨어 또는 그 밖의 다른 임의의 형태의 기계 판독형 처리 명령을 포함할 수 있다.
일반적으로, 소프트웨어(905)는, 처리 시스템(902)으로 로딩되고 실행될 때, 범용 컴퓨팅 시스템으로부터 (대표적인 컴퓨팅 시스템(901)의) 적합한 장치, 시스템 또는 디바이스를 향상된 컴포넌트 상호운용성을 촉진하도록 커스텀화된 특수 목적 컴퓨팅 시스템으로 변환할 수 있다. 실제로, 저장 시스템(903) 상의 인코딩 소프트웨어(905)는 저장 시스템(903)의 물리적 구조를 변환할 수 있다. 물리 구조의 특수 변환이 본 명세서의 여러 다른 구현예에서의 다양한 요인에 따라 달라질 수 있다. 이러한 요인들의 비제한적 예를 들면, 저장 시스템(93)의 저장 매체를 구현하는 데 사용되는 기법이 있으며 컴퓨터-저장 매체가 주 기억장치 또는 보조기억장치인지, 및 그 밖의 다른 요인에 무관하다.
예를 들어, 컴퓨터 판독형 저장 매체가 반도체 기반 메모리로 구현되는 경우, 소프트웨어(905)는 프로그램 명령이 여기에 인코딩될 때, 가령, 트랜지스터, 커패시터, 또는 반도체 메모리를 구성하는 그 밖의 다른 이산 회로 요소를 변환함으로써, 반도체 메모리의 물리 상태를 변환할 수 있다. 자기 또는 광학 매체와 관련하여 유사한 변환이 발생할 수 있다. 본 발명의 범위 내에서 물리 매체의 그 밖의 다른 변환이 가능하며, 상기의 예시가 본 발명을 설명을 촉진하기 위해 제공된 것에 불과하다.
예시로서 도 1-3을 다시 참조하면, 대표적인 컴퓨팅 시스템(901)을 갖는 컴퓨팅 시스템의 동작을 통해, 동작 아키텍처(100) 및 타깃 컴포넌트(121)와 관련하여 변환이 수행될 수 있다. 예를 들어, 타깃 컴포넌트(121)는 호출되지 않은 상태일 수 있다. 애플리케이션 컴포넌트(101)가 요청 메시지를 코드 서비스(111)로 제출하면, 서비스 컴포넌트(113)가 식별되고 런칭되어 타깃 컴포넌트(121)를 호출함으로써, 이의 상태를 새로운 호출된 상태로 변환할 수 있다.
일반적으로 컴퓨팅 시스템(901)이 향상된 컴포넌트 상호운용성을 구현하기 위해 소프트웨어(905)가 배치 및 실행될 수 있는 컴퓨팅 시스템을 나타내도록 의도됨이 이해될 수 있다. 그러나 컴퓨팅 시스템(901)은 또한 소프트웨어(905)가 단계화(stage)될 수도 있고, 하나 또는 둘 모두가 배포 및 실행, 또는 추가 분포를 위한 분산, 전송, 다운로드, 또는 그 밖의 다른 방식으로 또 다른 컴퓨팅 시스템으로 제공되는 임의의 컴퓨팅 시스템일 수 있다.
통신 인터페이스 시스템(907)은 통신 네트워크(도시되지 않음)를 통해 그 밖의 다른 컴퓨팅 시스템(도시되지 않음)과 통신하도록 허용되는 통신 연결 및 장치를 포함할 수 있다. 시스템간 통신을 가능하게 하는 연결 및 장치의 예시로는 네트워크 인터페이스 카드, 안테나, 전력 증폭기, RF 회로, 트랜시버 및 그 밖의 다른 통신 회로가 있다. 연결 및 디바이스가 통신 매체를 통해 통신하여 다른 컴퓨팅 시스템 또는 시스템의 네트워크와 통신을 교환할 수 있으며, 예를 들어, 유리, 공기 또는 그 밖의 다른 임의의 적합한 통신 매체가 있다. 앞서 언급된 매체, 연결, 및 장치가 잘 알려져 있으며 이하에서 더 상세히 언급될 필요가 없다.
사용자 인터페이스 시스템(909)은 선택사항으로, 키보드, 마우스, 음성 입력 장치, 사용자로부터 터치 제스처를 수신하는 터치 입력 장치, 사용자의 비-터치 제스처와 다른 모션를 검출하기 위한 모션 입력 장치, 및 사용자로부터 사용자 입력을 수신할 수 있는 관련 처리 요소와 다른 비교 입력 장치를 포함한다. 출력 장치, 가령, 디스플레이, 스피커, 햅틱 장치, 및 그 밖의 다른 유형의 출력 장치가 사용자 인터페이스 시스템(909)에 역시 포함될 수 있다. 일부 경우, 입력 및 출력 장치가 단일 장치, 가령, 이미지를 디스플레이하고 터치 제스처를 수신할 수 있는 디스플레이로 조합될 수 있다. 앞서 언급된 사용자 입력 및 출력 장치는 종래 기술에 잘 알려져 있으며 여기서 더는 설명되지 않는다.
사용자 인터페이스 시스템(909)은 또한, 상술한 다양한 사용자 입력 및 출력 장치의 지원하에서, 처리 시스템(902)에 의해 실행 가능한 연관된 사용자 인터페이스 소프트웨어를 더 포함할 수 있다. 사용자 인터페이스 소프트웨어 및 사용자 인터페이스 디바이스가 다른 하드웨어 및 소프트웨어 요소와는 별도로 혹은 서로 조합하여 그래픽 사용자 인터페이스, 자연 사용자 인터페이스 또는 그 밖의 다른 유형의 사용자 인터페이스를 지원할 수 있다.
컴퓨팅 시스템(901)과 그 밖의 다른 컴퓨팅 시스템(도시되지 않음) 사이의 통신은, 통신 네트워크를 통해 그리고 다양한 통신 프로토콜, 프로토콜 조합, 또는 이의 변형에 따라, 발생할 수 있다. 그 예로 인트라넷, 인터넷(internet), 로컬 영역 네트워크, 광역 네트워크, 무선 네트워크, 유선 네트워크, 가상 네트워크, 소프트웨어 정의형 네트워크, 데이터 센터 버스, 컴퓨팅 백플레인 또는 그 밖의 다른 임의의 유형의 네트워크, 네트워크 조합, 또는 이들의 변형을 들 수 있다. 상기의 통신 네트워크 및 프로토콜은 공지된 것으로 여기서는 설명하지 않는다. 그러나 사용될 수 있는 일부 통신 프로토콜의 비제한적 예로서, 인터넷 프로토콜(Internet protocol)(IP, IPv4, IPv6 등), 전송 제어 프로토콜(transfer control protocol)(TCP), 및 사용자 데이터그램 프로토콜(user datagram protocol)(UDP), 및 그 밖의 다른 임의의 적합한 통신 프로토콜, 변형예 또는 이의 조합을 포함한다
데이터, 콘텐츠, 또는 그 밖의 다른 임의의 유형의 정보가 교환되는 상기의 예시들 중 임의의 것에서, 다양한 프로토콜 중 임의의 프로토콜에 따라, 정보의 교환은 발생할 수 있으며, 다양한 프로토콜의 예로서, FTP, HTTP, REST(representational state transfer), WebSocket, DOM(Document Object Model), HTML(hypertext markup language), CSS(cascading style sheets), HTML5, XML (extensible markup language), JavaScript, JSON (JavaScript Object Notation), 및 AJAX (Asynchronous JavaScript 및 XML) 및 그 밖의 다른 임의의 적합한 프로토콜, 변형예 또는 이들의 조합을 들 수 있다.
도 1-9가 일반적으로 비교적 소수의 동작 시나리오 및 시퀀스를 개시하고 있지만, 본 명세서에 개시된 개념은 널리 전반적으로 적용될 수 있다. 예를 들어, 본 명세서에 개시된 코드 서비스가 임의의 수의 애플리케이션 컴포넌트 및 타깃 컴포넌트의 지원을 받해서 전개될 수 있다.
도면에서는 기능 블록도, 동작 시나리오 및 시퀀스 및 흐름도를 통해서 본 발명의 신규한 측면을 수행하기 위한 예시적 시스템, 환경 및 방법을 나타낸다. 또한 설명을 명료하게 하기 위해, 본 명세서에 포함된 방법이 기능 다이어그램, 동작 시나리오 즉 시퀀스, 또는 흐름도의 형태로 나타내어질 수도 있고, 일련의 동작으로 설명될 수도 있지만, 본 방법은 이러한 동작의 순서에 의해 한정되는 것은 아니며, 일부 동작들은 다른 순서로 및/또는 동시에 발생될 수 있다는 것을 이해할 것이다. 예를 들어, 당업자라면 본 방법이, 예컨대 상태도에서의 일련의 서로 연관된 상태나 이벤트로서 표현될 수 있다는 것을 이해할 것이다. 또한 신규한 구현예에, 이 방법에 나타난 모든 동작이 필요한 것은 아니다.
본 명세서에 포함되는 설명 및 도면은, 당업자가 최적 옵션을 제작해서 사용하는 법에 대한 특정한 구현예를 설명하는 것이다. 본 발명의 원리를 설명하기 위해, 일부 종래의 측면은 단순화되거나 또는 생략될 수 있다. 당업자라면, 본 발명의 범주 내에서의, 발명의 구현예의 변형예를 상정할 수 있을 것이다. 당업자라면 상술한 특징을 다양한 방식으로 조합해어 복수의 구현예를 만들어 낼 형성할 수 있을 것이다. 따라서 본 발명은 상술한 특정한 구현예로 한정되지 않고 이하의 청구항 및 이의 균등물에 의해서만 한정된다.

Claims (20)

  1. 장치로서,
    하나 이상의 컴퓨터 판독형 저장 매체와,
    상기 하나 이상의 컴퓨터 판독형 저장 매체 상에 저장되며 코드 서비스를 포함하는 프로그램 명령어
    를 포함하고,
    상기 코드 서비스는, 단일 처리 장치 내에 구현된 처리 시스템에 의해 실행될 때 상기 처리 시스템으로 하여금 적어도
    애플리케이션 컴포넌트에 의해 전달된 요청 메시지를, 상기 처리 시스템에 의해 호스팅되는 타깃 환경보다 위의 레이어에 있는 상기 처리 시스템에 의해 호스팅되는 애플리케이션 환경의 메시지 인터페이스를 통해 수신하게 하고 - 상기 요청 메시지는, 상기 타깃 환경에서 이용 가능하며 상기 애플리케이션 컴포넌트의 언어와 상이한 언어로 프로그래밍된 타깃 컴포넌트를 호출하는 요청을 포함함 - ,
    상기 요청에 응답하여, 적어도 상기 타깃 환경 내의 상기 타깃 컴포넌트를 호출하는 것과 연관된 서비스 컴포넌트를 식별하게 하며,
    상기 서비스 컴포넌트를 실행하여 상기 타깃 컴포넌트를 컴포넌트 인터페이스를 통해 호출하게 하는
    장치.

  2. 제1항에 있어서,
    상기 코드 서비스는 상기 처리 시스템으로 하여금 또한,
    상기 타깃 컴포넌트가 호출된 이후에 상기 컴포넌트 인터페이스를 통해 적어도 결과를 반환한 것에 응답하여, 적어도 상기 결과를 나타내는 응답을 포함하는 응답 메시지를 상기 메시지 인터페이스를 통해 상기 애플리케이션 컴포넌트로 전달하게 하는
    장치.
  3. 제2항에 있어서,
    상기 애플리케이션 환경은 브라우저 애플리케이션을 포함하고 상기 애플리케이션 컴포넌트는 상기 브라우저 애플리케이션에서 실행되는 애플리케이션 코드를 포함하며,
    상기 타깃 환경은 운영 체제를 포함하고,
    상기 메시지 인터페이스는 상기 브라우저 애플리케이션과 상기 운영 체제 사이의 통신 채널을 포함하며,
    상기 타깃 컴포넌트는 상기 운영 체제 내의 객체를 포함하고,
    상기 서비스 컴포넌트는 상기 객체를 호출하기 위한 코드를 포함하는
    장치.
  4. 제3항에 있어서,
    상기 브라우저 애플리케이션과 상기 운영 체제 사이의 상기 통신 채널은, 네트워크 요청, 맵핑된 메모리, 하이퍼-텍스트 전송 프로토콜 요청, 암호 서비스, 웹 서비스, 및 웹 소켓 중 하나를 포함하는
    장치.
  5. 제4항에 있어서,
    상기 프로그램 명령을 실행하도록 구성된 처리 시스템을 더 포함하고,
    상기 컴포넌트 인터페이스는 애플리케이션 2진 인터페이스(application binary interface) 및 애플리케이션 프로그래밍 인터페이스 중 하나를 포함하는
    장치.
  6. 제1항에 있어서,
    상기 코드 서비스는 언어-독립형 디스패처 및 복수의 언어-맞춤형(language-specific) 어댑터를 포함하고,
    상기 언어-맞춤형 어댑터 각각은, 상기 처리 시스템에 의해 실행될 때 상기 처리 시스템으로 하여금
    복수의 타깃 컴포넌트를 호출하는 요청 메시지를 수신하게 하고 - 상기 요청 메시지는, 상기 타깃 컴포넌트가 프로그래밍된 언어와는 상이하고, 또한 상기 복수의 언어-맞춤형 어댑터의 나머지 부분과 특정하게 연관된 다른 언어에 비해서 상기 언어-맞춤형 어댑터와 특정하게 연관된 언어로 프로그래밍된, 복수의 애플리케이션 컴포넌트에 의해 개시됨 - ,
    상기 요청 메시지를, 상기 언어-독립형 디스패처가 핸들링하는 복수의 코드 요청으로 번역하게 하는
    장치.
  7. 제6항에 있어서,
    상기 언어-독립형 디스패처는, 상기 처리 시스템에 의해 실행될 때, 상기 처리 시스템으로 하여금,
    상기 복수의 코드 요청을 수신하게 하고,
    상기 복수의 타깃 컴포넌트와 연관된 복수의 서비스 컴포넌트를 식별하게 하며,
    상기 복수의 서비스 컴포넌트를 이용하여 복수의 타깃 컴포넌트를 호출하게 하는
    장치.
  8. 처리 시스템에 의해 수행되는 코드 서비스 동작 방법으로서,
    애플리케이션 컴포넌트에 의해 전달된 요청 메시지를, 상기 처리 시스템에 의해 호스팅되는 타깃 환경보다 위의 레이어에 있는 상기 처리 시스템에 의해 호스팅되는 애플리케이션 환경에서 메시지 인터페이스를 통해 수신하는 단계 - 상기 처리 시스템은 단일 처리 장치 내에 구현되고, 상기 요청 메시지는, 상기 타깃 환경에서 이용 가능하며 상기 애플리케이션 컴포넌트의 언어와 상이한 언어로 프로그래밍된 타깃 컴포넌트를 호출하는 요청을 포함함 - 와,
    상기 요청에 응답하여, 적어도 상기 타깃 환경 내의 상기 타깃 컴포넌트를 호출하는 것과 연관된 서비스 컴포넌트를 식별하는 단계와,
    상기 서비스 컴포넌트를 실행시켜서 컴포넌트 인터페이스를 통해 상기 타깃 컴포넌트를 호출하는 단계를 포함하는
    코드 서비스 동작 방법.
  9. 제8항에 있어서,
    상기 방법은, 상기 타깃 컴포넌트가 호출된 이후에 컴포넌트 인터페이스를 통해 적어도 결과를 반환하는 것에 응답하여, 적어도 상기 결과를 나타내는 응답을 포함하는 응답 메시지를 상기 메시지 인터페이스를 통해 상기 애플리케이션 컴포넌트로 전달하는 단계를 더 포함하는
    코드 서비스 동작 방법.
  10. 제9항에 있어서,
    상기 애플리케이션 환경은 브라우저 애플리케이션을 포함하고, 상기 애플리케이션 컴포넌트는 상기 브라우저 애플리케이션에서 실행되는 애플리케이션 코드를 포함하고,
    상기 타깃 환경은 운영 체제를 포함하며,
    상기 메시지 인터페이스는 상기 브라우저 애플리케이션과 상기 운영 체제 사이의 통신 채널을 포함하고,
    상기 타깃 컴포넌트는 상기 운영 체제 내의 객체를 포함하며,
    상기 서비스 컴포넌트는 상기 객체를 호출하는 코드를 포함하는
    코드 서비스 동작 방법.
  11. 제10항에 있어서,
    상기 브라우저 애플리케이션과 상기 운영 체제 사이의 상기 통신 채널은, 네트워크 요청, 맵핑된 메모리, 하이퍼-텍스트 전송 프로토콜 요청, 및 웹 소켓 중 하나를 포함하는
    코드 서비스 동작 방법.
  12. 제11항에 있어서,
    상기 컴포넌트 인터페이스는 애플리케이션 2진 인터페이스 및 애플리케이션 프로그래밍 인터페이스 중 하나를 포함하는
    코드 서비스 동작 방법.
  13. 제8항에 있어서,
    상기 코드 서비스는 언어-독립형 디스패처 및 복수의 언어-맞춤형 어댑터를 포함하고,
    상기 방법은,
    복수의 타깃 컴포넌트를 호출하는 요청 메시지를 수신하는 단계 - 상기 요청 메시지는, 상기 타깃 컴포넌트가 프로그래밍된 언어와는 상이하고, 또한 상기 복수의 언어-맞춤형 어댑터의 나머지 부분과 특정하게 연관된 다른 언어에 비해서 상기 언어-맞춤형 어댑터와 특정하게 연관된 언어로 프로그래밍된, 복수의 애플리케이션 컴포넌트에 의해 개시됨 - 와,
    상기 요청 메시지를, 상기 언어-독립형 디스패처가 핸들링하는 복수의 코드 요청으로 번역하는 단계를 더 포함하는
    코드 서비스 동작 방법.
  14. 제13항에 있어서,
    상기 언어-독립형 디스패처가, 상기 복수의 코드 요청을 수신하고, 상기 복수의 타깃 컴포넌트와 연관된 복수의 서비스 컴포넌트를 식별하며, 상기 복수의 서비스 컴포넌트를 이용하여 복수의 타깃 컴포넌트를 호출하는 단계를 더 포함하는
    코드 서비스 동작 방법.
  15. 애플리케이션 환경 내의 애플리케이션 컴포넌트와 타깃 환경 내의 타깃 컴포넌트 사이의 인터페이싱을 위한 프로그램 명령이 저장된 하나 이상의 컴퓨터 판독형 저장 매체로서, 상기 프로그램 명령은
    복수의 언어-맞춤형 어댑터와,
    상기 복수의 언어-맞춤형 어댑터와 통신하는 언어-독립형 디스패처
    를 포함하고,
    상기 언어-맞춤형 어댑터 각각은 복수의 프로그래밍 언어의 서로 다른 언어에 대응하며, 단일 처리 장치 내에 구현된 처리 시스템에 의해 실행될 때 적어도,
    상기 처리 시스템에 의해 호스팅되는 상기 애플리케이션 환경과 상기 처리 시스템에 의해 호스팅되는 상기 타깃 환경 사이에서 이용 가능한 메시지 인터페이스를 통해, 상기 애플리케이션 컴포넌트의 부분집합이 개시하는 요청 메시지를 수신하여 적어도 상기 타깃 컴포넌트의 부분집합을 호출하고 - 상기 애플리케이션 컴포넌트의 상기 부분집합은 또한 서로 다른 언어에 대응하고, 상기 요청 메시지는 상기 타깃 컴포넌트의 상기 부분집합 및 상기 타깃 컴포넌트의 상기 부분집합으로 전달될 파라미터를 식별함 - ,
    상기 요청 메시지를, 상기 타깃 컴포넌트의 상기 부분집합 및 상기 파라미터를 식별하는 코드 요청으로 번역하며,
    상기 언어-독립형 디스패처는, 상기 처리 시스템에 의해 실행될 때, 상기 타깃 컴포넌트의 상기 부분집합에 대응하는 서비스 컴포넌트를 식별하고, 상기 서비스 컴포넌트 및 상기 파라미터를 이용하여 컴포넌트 인터페이스를 통해 상기 타깃 컴포넌트의 상기 부분집합을 호출하는
    컴퓨터 판독형 저장 매체.
  16. 제15항에 있어서,
    상기 언어-독립형 디스패처는 또한, 상기 처리 시스템에 의해 실행될 때, 상기 타깃 컴포넌트로부터 결과를 수신하고, 적어도 상기 결과를 나타내는 코드 응답을 생성하며, 상기 코드 응답을 상기 언어-맞춤형 어댑터로 전달하는
    컴퓨터 판독형 저장 매체.
  17. 제15항에 있어서,
    상기 애플리케이션 환경은 브라우저 애플리케이션을 포함하고, 상기 애플리케이션 컴포넌트는 상기 브라우저 애플리케이션에서 실행되는 애플리케이션의 컴포넌트를 포함하는
    컴퓨터 판독형 저장 매체.
  18. 제17항에 있어서,
    상기 타깃 환경은 운영 체제를 포함하고, 상기 타깃 컴포넌트는 운영 체제 컴포넌트를 포함하는
    컴퓨터 판독형 저장 매체.
  19. 제18항에 있어서,
    상기 메시지 인터페이스는 상기 브라우저 애플리케이션과 상기 운영 체제 사이의 양방향 통신 채널을 포함하는
    컴퓨터 판독형 저장 매체.
  20. 제18항에 있어서,
    각각의 상기 컴포넌트 인터페이스는 애플리케이션 프로그래밍 인터페이스 및 애플리케이션 2진 인터페이스 중 하나를 포함하는
    컴퓨터 판독형 저장 매체.
KR1020167031821A 2014-05-16 2015-05-14 언어-독립형 디스패치를 위한 코드 서비스 기법 KR102354717B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/280,560 2014-05-16
US14/280,560 US9760415B2 (en) 2014-05-16 2014-05-16 Code service for language-independent dispatch
PCT/US2015/030686 WO2015175735A1 (en) 2014-05-16 2015-05-14 Code service for language-independent dispatch

Publications (2)

Publication Number Publication Date
KR20170003578A KR20170003578A (ko) 2017-01-09
KR102354717B1 true KR102354717B1 (ko) 2022-01-21

Family

ID=53277068

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167031821A KR102354717B1 (ko) 2014-05-16 2015-05-14 언어-독립형 디스패치를 위한 코드 서비스 기법

Country Status (5)

Country Link
US (1) US9760415B2 (ko)
EP (1) EP3143498B1 (ko)
KR (1) KR102354717B1 (ko)
CN (1) CN106462407B (ko)
WO (1) WO2015175735A1 (ko)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452409B2 (en) * 2015-10-23 2019-10-22 Oracle International Corporation Universal adapter for native calling
US10404759B1 (en) 2016-06-23 2019-09-03 8×8, Inc. Client-specific control of shared telecommunications services
US10348902B1 (en) 2016-06-23 2019-07-09 8X8, Inc. Template-based management of telecommunications services
US11044365B1 (en) 2016-06-23 2021-06-22 8X8, Inc. Multi-level programming/data sets with decoupling VoIP communications interface
US11412084B1 (en) 2016-06-23 2022-08-09 8X8, Inc. Customization of alerts using telecommunications services
US11671533B1 (en) 2016-06-23 2023-06-06 8X8, Inc. Programming/data sets via a data-communications server
CN107797845B (zh) * 2016-09-07 2021-06-15 华为技术有限公司 用于访问容器的方法和装置
WO2018140487A1 (en) 2017-01-27 2018-08-02 Mz Ip Holdings, Llc System and method for encapsulating computer communications
US10455040B2 (en) * 2017-01-30 2019-10-22 Microsoft Technology Licensing, Llc Deferring invocation requests for remote objects
US10951484B1 (en) 2017-06-23 2021-03-16 8X8, Inc. Customized call model generation and analytics using a high-level programming interface
US10425531B1 (en) 2017-06-23 2019-09-24 8X8, Inc. Customized communication lists for data communications systems using high-level programming
US10447861B1 (en) 2017-06-23 2019-10-15 8X8, Inc. Intelligent call handling and routing based on numbering plan area code
CN108388424B (zh) * 2018-03-09 2021-09-21 北京奇艺世纪科技有限公司 一种调用接口数据的方法、装置及电子设备
US10725745B2 (en) * 2018-05-24 2020-07-28 Walmart Apollo, Llc Systems and methods for polyglot analysis
US11403073B2 (en) 2018-06-13 2022-08-02 Mz Ip Holdings, Llc System and method for enabling communication between disparate computer languages by sharing objects
CN111176626B (zh) * 2019-08-05 2022-04-19 腾讯科技(深圳)有限公司 跨编程语言的代码调用方法及装置、介质、设备
CN112416470B (zh) * 2019-08-22 2023-08-25 腾讯科技(深圳)有限公司 命令的执行方法和装置、存储介质及电子装置
JP2022549671A (ja) * 2019-09-25 2022-11-28 コモンウェルス サイエンティフィック アンド インダストリアル リサーチ オーガナイゼーション ブラウザアプリケーション用の暗号化サービス
KR102611301B1 (ko) * 2019-12-18 2023-12-08 에릭슨엘지엔터프라이즈 주식회사 전화 교환 시스템의 메시지 전달 장치 및 방법
CN113138811A (zh) * 2021-04-23 2021-07-20 上海中通吉网络技术有限公司 基于JsonPath的统一服务调用方法
US12061903B2 (en) 2022-09-16 2024-08-13 Microsoft Technology Licensing, Llc Software development quality assessment

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040111464A1 (en) 2002-12-04 2004-06-10 International Business Machine Corporation Type Descriptor Language (TDLanguage) metamodel
US20050172299A1 (en) 2004-02-02 2005-08-04 Hai Zhao Methods and apparatus to provide a modular native method invocation system
US20050216727A1 (en) 2003-08-29 2005-09-29 Microsoft Corporation Communication stack for network communication and routing
JP2013097745A (ja) * 2011-11-05 2013-05-20 Kyocera Document Solutions Inc ソフトウェア開発キット、これを用いて作成された画像形成装置用拡張アプリケーション及びこのアプリケーションを備えた携帯端末装置

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6901588B1 (en) 2000-04-17 2005-05-31 Codemesh, Inc. Sharing components between programming languages by use of polymorphic proxy
US6662362B1 (en) 2000-07-06 2003-12-09 International Business Machines Corporation Method and system for improving performance of applications that employ a cross-language interface
US7225222B1 (en) 2002-01-18 2007-05-29 Novell, Inc. Methods, data structures, and systems to access data in cross-languages from cross-computing environments
US8332828B2 (en) 2002-11-20 2012-12-11 Purenative Software Corporation System for translating diverse programming languages
US7389474B2 (en) * 2003-02-28 2008-06-17 Microsoft Corporation Language or script-based character set conversions per-application program
US7814464B2 (en) 2004-03-17 2010-10-12 Microsoft Corporation Address support for resources in common-language runtime languages
WO2006055838A2 (en) 2004-11-18 2006-05-26 America Online, Inc. Runtime environment
US20070283324A1 (en) 2005-08-30 2007-12-06 Geisinger Nile J System and method for creating programs that comprise several execution layers
US20070177583A1 (en) * 2006-01-31 2007-08-02 Microsoft Corporation Partial message streaming
US8689244B2 (en) * 2007-01-26 2014-04-01 Objective Interface Systems, Inc. Hardware communications infrastructure supporting location transparency and dynamic partial reconfiguration
US8265970B2 (en) * 2007-06-08 2012-09-11 Level 3 Communications, Llc Systems and methods for managing business processes in an enterprise
US20090024986A1 (en) 2007-07-19 2009-01-22 Microsoft Corporation Runtime code modification
US8201185B2 (en) 2008-06-27 2012-06-12 Microsoft Corporation COM object and managed code object interoperability
US9645912B2 (en) 2008-12-01 2017-05-09 Microsoft Technology Licensing, Llc In-place function modification
US9390172B2 (en) 2009-12-03 2016-07-12 Microsoft Technology Licensing, Llc Communication channel between web application and process outside browser
CN103092599A (zh) * 2011-11-05 2013-05-08 京瓷办公信息系统株式会社 软件开发套件
CN102880452A (zh) 2012-02-01 2013-01-16 日照市国软软件有限公司 一种可跨语言重用的编程语言

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040111464A1 (en) 2002-12-04 2004-06-10 International Business Machine Corporation Type Descriptor Language (TDLanguage) metamodel
US20050216727A1 (en) 2003-08-29 2005-09-29 Microsoft Corporation Communication stack for network communication and routing
US20050172299A1 (en) 2004-02-02 2005-08-04 Hai Zhao Methods and apparatus to provide a modular native method invocation system
JP2013097745A (ja) * 2011-11-05 2013-05-20 Kyocera Document Solutions Inc ソフトウェア開発キット、これを用いて作成された画像形成装置用拡張アプリケーション及びこのアプリケーションを備えた携帯端末装置

Also Published As

Publication number Publication date
KR20170003578A (ko) 2017-01-09
EP3143498A1 (en) 2017-03-22
US9760415B2 (en) 2017-09-12
CN106462407A (zh) 2017-02-22
US20150331727A1 (en) 2015-11-19
WO2015175735A1 (en) 2015-11-19
CN106462407B (zh) 2020-01-07
EP3143498B1 (en) 2021-07-14

Similar Documents

Publication Publication Date Title
KR102354717B1 (ko) 언어-독립형 디스패치를 위한 코드 서비스 기법
US11941381B2 (en) Method for compiling from a high-level scripting language to a blockchain native scripting language
CN108830720B (zh) 智能合约运行方法、装置、系统和计算机可读存储介质
CN110716748B (zh) 业务处理方法、装置、计算机可读介质及电子设备
CN109032706A (zh) 智能合约执行方法、装置、设备和存储介质
US20160004729A1 (en) System and Method for Managing and Using Data Model
US20160041819A1 (en) Updating service applications
CN103514395B (zh) 插件权限控制方法及系统
US8938712B2 (en) Cross-platform virtual machine and method
US11537367B1 (en) Source code conversion from application program interface to policy document
KR20190069655A (ko) 클라우드 컴퓨팅 기반 딥러닝 개발 플랫폼 제공 방법 장치
CN113946614A (zh) 一种iOS基于静态库的网络数据传输方法、装置及系统
CN109343970B (zh) 基于应用程序的操作方法、装置、电子设备及计算机介质
KR20130068564A (ko) 웹 기반의 운영체제를 탑재한 단말 장치 및 이를 이용한 서비스 제공 방법
CN113179269B (zh) 基于物联网的协议数据解析方法、系统、介质
EP3872630A2 (en) Request processing method and apparatus, electronic device, and computer storage medium
US20230412694A1 (en) Communication system for micro-frontends of a web application
CN113254825A (zh) 页面生成的方法、装置、电子设备和存储介质
US9628401B2 (en) Software product instance placement
US20160070564A1 (en) Dynamically schematized log messages for software applications
US10802844B2 (en) Distributed application based off of stateful desktop application
CN112667441A (zh) 基于容错功能的业务模块调度方法、系统及存储介质
CN104010026A (zh) 一种控制家电的方法、装置和家电控制系统
KR101398959B1 (ko) 플러그인을 이용한 인터페이스 방법 및 장치
CN117056317B (zh) 数据处理方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant