KR20060089616A - 서비스와 클라이언트 런타임을 생성, 교환, 및 구성하기위한 추상적 기술의 사용 - Google Patents

서비스와 클라이언트 런타임을 생성, 교환, 및 구성하기위한 추상적 기술의 사용 Download PDF

Info

Publication number
KR20060089616A
KR20060089616A KR1020050124568A KR20050124568A KR20060089616A KR 20060089616 A KR20060089616 A KR 20060089616A KR 1020050124568 A KR1020050124568 A KR 1020050124568A KR 20050124568 A KR20050124568 A KR 20050124568A KR 20060089616 A KR20060089616 A KR 20060089616A
Authority
KR
South Korea
Prior art keywords
service
description
metadata
configuration
description tree
Prior art date
Application number
KR1020050124568A
Other languages
English (en)
Other versions
KR101220000B1 (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 KR20060089616A publication Critical patent/KR20060089616A/ko
Application granted granted Critical
Publication of KR101220000B1 publication Critical patent/KR101220000B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • G06F9/548Object oriented; Remote method invocation [RMI]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명은 서비스와 클라이언트 런타임들(runtimes)을 생성하고, 교환하고, 및 구성하기 위한 추상적 기술(abstract descriptions)을 사용하는 것을 확장한다. 컴퓨터 시스템은 서비스를 구현하기 위해 컴파일된 코드와 잠재적으로 옵션적 구성 정보를 파스(parse)하고, 컴파일된 코드와 임의의 구성 정보를 추상적 서비스 기술로 변환한다. 그 다음, 추상적 서비스 기술은 코드 문서 객체 모델(code document object model) 및 서비스 구성(service configuration) 정보로 변환될 수 있거나, 메타데이터(metadata)로서 송출(export)될 수 있다. 대응하는 서비스 런타임은 추상적 서비스 기술에 의해 포함되는 서비스 시작기(service initializer)를 콜(call)하여 시작될 수 있다. 코드 문서 객체 모델, 구성 정보, 및/또는 메타데이터는 다른 컴퓨터 시스템으로 전송될 수 있다. 다른 컴퓨터 시스템은 코드 문서 객체 모델과 구성 정보를 사용할 수 있고, 및/또는 서비스 런타임과 통신하기 위해 호환적 채널의 시작을 용이하게 하기 위해 메타데이터를 이입(import)할 수 있다.
네트워크-기반 서비스, 서비스/클라이언트 런타임, 추상적 서비스 기술, 코드 문서 객체 모델, 서비스 구성 정보, 메타데이터

Description

서비스와 클라이언트 런타임을 생성, 교환, 및 구성하기 위한 추상적 기술의 사용{UTILIZING ABSTRACT DESCRIPTIONS TO GENERATE, EXCHANGE, AND CONFIGURE SERVICE AND CLIENT RUNTIMES}
도 1은 서비스와 클라이언트 런타임들(runtimes)을 생성하고, 교환하고, 및 구성하기 위한 추상적 기술들(abstract descriptions)을 사용하는 것을 용이하게 하는 컴퓨터 아키텍처의 일 예를 도시한다.
도 2는 추상적 서비스 기술의 일 예를 도시한다.
도 3은 추상적 채널 기술의 일 예를 도시한다.
도 4는 본 발명의 원칙들을 위한 적절한 운영 환경을 도시한다.
도 5는 네트워크-기반 서비스를 기술하는 추상적 서비스 기술을 생성하기 위한 방법의 일 예의 흐름도를 도시한다.
도 6은, 네트워크-기반 서비스를 기술하는 추상적 서비스 기술을 네트워크-기반 서비스를 나타내는 코드로 변환하기 위한 방법의 일 예의 흐름도를 도시한다.
도 7은 네트워크-기반 서비스를 기술하는 추상적 서비스 기술로부터 서비스 런타임을 시작하기 위한 방법의 일 예의 흐름도를 도시한다.
도 8은 채널을 위한 소스 코드를 생성하기 위한 방법의 일 예의 흐름도를 도시한다.
<주요도면 부호설명>
101 컴퓨터 시스템
102 서비스 유형
103 구성
104 서비스 로더
114 코드 문서 객체 모델
116 구성
113 계약 생성기
106 서비스 기술
111 서비스 시작기
112 서비스 런타임
107 메타데이터 송출기
108 메타데이터 이입기
109 메타데이터
141 네트워크
128 메타데이터 이입기
132 채널 유형
124 채널 로더
126 채널 기술
131 채널 시작기
132 채널
133 계약 생성기
143 컴파일러
139 소스 코드
138 코드 변환기
136 구성
134 코드 문서 객체 모델
121 컴퓨터 시스템
본 발명은 분산 애플리케이션 프로그램 모델들에 관한 것이고, 더 구체적으로는, 서비스와 클라이언트 런타임들을 생성하고, 교환하고, 및 구성하기 위해 추상적 기술을 사용하는 것에 관한 것이다.
컴퓨터 시스템과 관련 기술은 사회의 많은 측면에 영향을 미친다. 실제로, 정보를 프로세스하기 위한 컴퓨터 시스템의 능력은 우리가 생활하고 일하는 방식을 변화시켜 왔다. 이제 컴퓨터 시스템들은, 컴퓨터 시스템의 도래 전에, 수동적으로 수행된 다수의 작업들(예를 들어, 문서 편집, 스케쥴링, 및 데이터베이스 관리)을 일반적으로 수행한다. 더 최근에, 컴퓨터 시스템들은 서로에 그리고 다른 전자 디바이스들에 결합되어 컴퓨터 시스템들과 다른 전자 디바이스들이 전자 데이터를 전 송할 수 있는 유선 및 무선 모두의 컴퓨터 네트워크를 형성해 왔다. 결과적으로, 컴퓨터 시스템에서 수행된 다수의 작업들은(예를 들어, 음성 통신, 이메일 액세스, 가전 제품 제어, 웹 브라우징, 및 문서 인쇄) 유선 및/또는 무선 컴퓨터 네트워크를 통해 다수의 컴퓨터 시스템들 및/또는 다른 전자 디바이스들 간의 전자 메시지들의 교환을 포함한다.
네트워크는 사실상 아주 많아져서 단순한 네트워크-가동된 컴퓨팅 시스템은 종종 "인터넷"으로서 일컬어지는 네트워크의 집합체를 통해 지구 상에 흩어진 수억 개의 다른 컴퓨팅 시스템들 중의 임의의 하나와 통신할 수 있다. 그런 컴퓨팅 시스템들은 데스크톱, 랩톱, 또는 태블렛 PC, 개인 정보 단말기(PDA), 전화, 또는 네트워크를 통해 통신할 수 있는 임의의 다른 컴퓨터나 디바이스를 포함할 수 있다.
일부 환경들에서, 예를 들어, 서비스-기반 아키텍처 환경, 접속점들(종종 그리고 이후에 "서비스"로서 일컬어짐)과 같은 것들은 원하는 기능을 구현하기 위해 서로 통신한다. 원하는 기능은 데이터를 교환하는 2 개의 서비스들과 같이 단순할 수 있다. 예를 들어, 서비스 소비자는 서비스 제공자에게 서비스 요청 메시지를 전송할 수 있고, 서비스 제공자는 서비스 요청 메시지를 수신하여 프로세스할 수 있고, 서비스 제공자는 서비스 소비자에게 대응하는 서비스 응답 메시지를 리턴할 수 있다. 그러나, 원하는 기능은 또한, 예를 들어, 어떤 활동을 조정하기 위해 메시지들을 교환하는 다수의 서비스들과 관련되는 것과 같이, 더 복잡할 수 있다. 서비스는 통상적으로 대응하는 제공된 접속을 지원하는 어떤 유형의 컴퓨터 시스템(하드웨어와 소프트웨어 모두)을 가진다.
교환된 메시지들은(예를 들어, 서비스 요청 메시지들과 서비스 응답 메시지들) 원하는 기능을 구현하는 것과 관련이 있는 각 서비스(예를 들어, 한 개 이상의 서비스 소비자들 및 한 개 이상의 서비스 제공자들)에 이해할 수 있는 방식으로 정의될 수 있다. 일반적으로, 메시지들은, 예를 들어, 분산 컴포넌트 객체 모델(Distributed Component Object Model;DCOM) 모델, 일반 객체 요청 브로커 아키텍처(Common Object Request Broker Architecture;CORBA) 모델, 또는 웹 서비스들과 같은, 어떤 표준에 따라 정의될 수 있다. 웹 서비스들은, 예를 들어, 웹 서비스 기술 언어(Web Services Description Language;WSDL), 웹 서비스 정책 프레임워크(WS-Policy) 등과 같은, 다양한 웹 서비스 명세에 따라 더 정의될 수 있다.
예를 들어, 서비스 제공자는 WSDL를 사용하여 그것의 서비스를 기술할 수 있다. 서비스 제공자는, 예를 들어, UDDI(Universal Description, Discovery, and Integration)를 사용하는, 서비스들의 디렉토리에 기술을 발간할 수 있다. 서비스 소비자는 디렉토리에 대해 쿼리들(queries)을 발생하여 서비스의 위치를 파악하고 서비스와 통신하는 방법을 결정할 수 있다. 서비스 제공자에 의해 제공된 WSDL의 부분들은 쿼리에 응답하여 서비스 소비자에게 전달된다. 서비스 소비자는 WSDL 부분들을 사용하여 서비스 제공자에게 요청을 전송한다. 반면, 서비스 제공자는 서비스 소비자에게 적절한 응답을 제공한다.
일부 환경들에서, 서비스를 생성하기 위해, 개발자는 명시된 프로그래밍 모델에 따라 소스 코드(예를 들어, C#, C++, 또는 비쥬얼 베이직)를 작성한다. 그 다음, 소스 코드는 서비스 유형으로 컴파일될 수 있고, 서비스 유형은 서비스 소비 자들에게 서비스를 제공하기 위해 서비스 런타임에 실행될 수 있다. 그러나, 서비스 런타임들은 다른 방식들로 생성될 수 있고, 다른 프로그래밍 모델들은 다른 방식들로 분산된 메시징 기능을 구현할 수 있다. 예를 들어, 한 개의 프로그래밍 모델은 한 개의 인터페이스를 사용한 요청 메시지 및 제2의 다른 인터페이스를 사용한 대응하는 답신 메시지를 구현할 수 있다. 부연하면, 다른 프로그래밍 모델은 개별 방법들을 가진 한 개의 인터페이스를 사용하여 요청 메시지 및 대응하는 답신 메시지 모두를 구현할 수 있다. 한 개의 인터페이스는 요청 메시지를 위한 한 개의 방법 및 대응하는 답신 메시지를 위한 제2의 다른 방법을 가질 수 있다.
다른 프로그래밍 모델들은 또한, 예를 들어, 보안 옵션, 신뢰할 만한 메시징 옵션, 메시징 로깅(logging) 옵션, 접속 억제 옵션 등과 같은, 다른 구성 옵션들에 따라 구성될 수 있다. 그러므로, 동일 기능(예를 들어, 수학적 연산을 수행하는 것)을 구현하기 위해 디자인되는 2 개의 서비스들은 기능을 다르게 구현할 수 있다.
또한, 분산된 애플리케이션들은 통상적으로 그들의 프로그래밍 모델들에서 엄격하여, 그들의 서비스 런타임에 단단히 결합된 단지 한 개의 프로그래밍 모델만을 허용한다. 따라서, 호환성을 위해, 클라이언트 런타임(즉, 서비스 소비자에서)은 통상적으로 서버 런타임으로서 동일 프로그래밍 모델에 따라 개발되는 클라이언트 프로그램 또는 모듈을 사용하는 것이 요구된다. 예를 들어, 서비스가 메시지들을 요청하고 답신하는 개별 인터페이스들을 사용하여 또는 특정 보안 메카니즘들을 사용하여 개발되면, 서비스 소비자는 이들도 또한 구현해야 한다. 동일 프로그래 밍 모델에 따라 개발되는 클라이언트 프로그램 또는 모듈을 사용하는 것의 실패는 클라이언트 런타임이 서비스 런타임과 통신을 하는 것을 막을 수 있다.
다수의 환경들에서, 서비스 기술(또는 프로그래밍 모델)과 대응하는 런타임 간의 엄격한 결합이 있다. 즉, 서버는 그것의 코드를 정의하여 그것의 기술을 생성한다. 서비스 런타임을 사용하기 위해, 클라이언트는 서비스 기술을 다운로드하여 프락시(proxy)를 생성한다. 그러나, 서버에서의 후속적, 그리고 매우 사소한, 코드 변경이 클라이언트와 서버가 서로 비호환적이 되도록 할 수 있다. 즉, 서비스 기술과 서비스 런타임 간의 엄격한 결합 때문에, 기술 문서에서 한 개의 구성 옵션이나 정의된 메시징 패턴을 변경하는 것도 비호환적 클라이언트 런타임으로 결과가 될 수 있다.
서버 런타임의 프로그래밍 모델들을 변경하는 것은 또한 기존 클라이언트 런타임들과의 비호환성의 원인이 될 수 있다. 또한, 새로운 프로그래밍 모델에 관련된 정보를 유포하는 것은 어려울 수 있다. 예를 들어, 클라이언트 런타임의 개발자는 새 클라이언트 런타임의 개발이 시작될 수 있기 전에 새 서비스 기술 문서의 발간을 기다려야만 할 것이다. 서비스 기술 문서의 생성은 서비스가 완료될 때까지 발생하지 않을 것이고, 그러므로 서비스 기술 문서의 생성은 새 프로그래밍 모델에 기초하여 새 서비스 런타임의 디플로이먼트 뒤에 늦어질 수 있다.
불행히도, 서비스 기술 문서를 이용가능하지 않거나 또는 어떤 방식으로 불완전할 때, 클라이언트 런타임 개발자가 비호환성 논점들을 식별하여 교정하기는 어려울 수 있다. 또한, 클라이언트 런타임 개발자가 서비스 런타임 개발자에 의해 작성된 서비스 유형 소스 코드에 액세스할 수 없을 수 있다. 그러므로, 클라이언트 런타임 개발자는 새 프로그래밍 모델과 연관된 새 메시지 패턴들 또는 다른 새 구성 옵션들을 결정할 아무런 방법이 없을 수 있다. 따라서, 단지 시행착오를 통해서만, 클라이언트 런타임 개발자가 비호환성 논점들을 식별하여 교정할 수 있을 것이다.
그러므로, 서비스와 클라이언트 런타임들을 생성하고, 교환하고, 및 구성하기 위해 추상적 기술을 사용하는 시스템, 방법, 및 컴퓨터 프로그램 제품이 유용할 것이다.
종래 기술의 전술된 문제들은, 서비스와 클라이언트 런타임들을 생성하고, 교환하고, 및 구성하기 위한 추상적 기술을 사용하는 방법, 시스템, 및 컴퓨터 프로그램 제품들에 관한 것인, 본 발명의 원칙들에 의해 극복된다. 일부 실시예들에서, 컴퓨터 시스템은 네트워크-기반 서비스를 기술하는 추상적 서비스 기술을 생성한다. 컴퓨터 시스템은 명시된 프로그래밍 모델에 따라 서비스를 구현하는 서비스 유형(즉, 컴파일된 코드를 포함함) 및 대응하는 서비스 구성을 액세스한다. 컴퓨터 시스템은 서비스 유형 및 대응하는 서비스 구성을 파스(parse)하여 명시된 프로그래밍 모델에 기초한 서비스를 기술하는 기술 정보를 식별한다. 컴퓨터 시스템은 식별된 기술 정보에 기초하여 서비스를 위한 서비스 기술 트리를 생성한다. 서비스 기술 트리의 형식은 임의의 프로그래밍 모델에 독립적이고, 한 개 이상의 다른 변환 모듈들이 서비스 기술 트리를 사용하여 다른 형식들로 서비스의 추가 표현들 을 생성할 수 있도록 사용가능하다.
다른 실시예들에서, 컴퓨터 시스템은, 네트워크-기반 서비스를 기술하는, 추상적 서비스 기술을 그 서비스를 나타내는 코드로 변환한다. 컴퓨터 시스템은 서비스를 위한 서비스 기술 트리를 액세스한다. 서비스 기술 트리 형식은 임의의 프로그래밍 모델에 독립적이고, 대응하는 서비스 유형 및 서비스 구성으로부터 파스되는 기술 정보로부터 생성된다. 기술 정보가 다른 표현 형식에 따라 정의된 서비스 기술 정보를 프로세스하는 모듈로 호환성이 있게 전송될 수 있도록, 컴퓨터 시스템은 서비스 기술 트리를 다른 표현 형식으로 변환한다. 컴퓨터 시스템은 다른 표현 형식으로 기술 정보를 출력한다.
추가적 실시예들에서, 컴퓨터 시스템은 네트워크-기반 서비스를 기술하는 추상적 서비스 기술로부터 서비스 런타임을 시작한다. 컴퓨터 시스템은 서비스를 위해 서비스 기술 트리를 액세스한다. 서비스 기술 트리 형식은 임의의 프로그램밍 모델에 독립적이고, 대응하는 서비스 유형과 서비스 구성으로부터 파스된 기술 정보로부터 생성된다. 컴퓨터 시스템은 서비스 기술 트리와 연관된 서비스 호스트를 시작하라 메소드(initialize service host method)를 콜한다. 컴퓨터 시스템은 대응하는 서비스 유형과 서비스 구성으로부터 파스되는 기술 정보에 따라 서비스를 위한 서비스 런타임을 시작한다.
추가적 실시예들에서, 컴퓨터 시스템은 채널을 위한 소스 코드를 생성한다. 컴퓨터 시스템은 서비스를 기술하는 메타데이터를 액세스한다. 컴퓨터 시스템은 채널을 위한 채널 기술 트리(channel description tree)로 메타데이터를 이입 (import)한다. 채널 기술 트리 형식은 임의의 프로그래밍 모델에 독립적이다. 컴퓨터 시스템은 채널 기술 트리로부터 코드 문서 객체 모델과 대응하는 서비스 구성을 생성한다. 생성된 코드 문서 객체 모델과 대응하는 서비스 구성은 명시된 프로그래밍 모델에 따라 채널을 구현하기 위해서이다. 컴퓨터 시스템은 소스 코드로서 생성된 코드 문서 객체 모델을 출력하고, 생성된 소스 코드와 대응하는 서비스 구성이 명시된 프로그래밍 모델에 따라 채널을 시작하기 위해 사용될 수 있도록 대응하는 서비스 구성을 출력한다.
본 발명의 이들과 다른 객체들 및 특징들은 다음 기술 및 첨부된 청구범위로부터 더 명백해질 것이거나, 이후에 기재되는 바와 같이 본 발명의 실시에 의해 습득될 수 있을 것이다.
상술된 것 및 본 발명의 다른 이점들과 특징들을 더 명료하게 하기 위해, 본 발명에 대한 더 특정한 기술은 첨부된 도면들에 도시되는 특정 실시예들을 참조하여 되어질 것이다. 이들 도면들은 단지 통상적인 본 발명의 실시예들만을 도시하고, 그러므로 그것의 범위를 제한하는 것으로 고려되어서는 안됨을 이해할 수 있다. 본 발명은 동반하는 도면들의 사용을 통해 추가적 특이성과 세부사항이 기재되고 설명될 것이다.
종래 기술의 전술된 문제점들은, 서비스와 클라이언트 런타임들을 생성하고, 교환하고, 및 구성하기 위해 추상적 기술들을 사용하기 위한 방법, 시스템, 및 컴퓨터 프로그램 제품에 관한 것인, 본 발명의 원칙들에 의해 극복된다. 일부 실시 예들에서, 컴퓨터 시스템은 네트워크-기반 서비스를 기술하는 추상적 서비스 기술을 생성한다. 컴퓨터 시스템은 명시된 프로그래밍 모델에 따라 서비스를 구현하기 위한 서비스 유형(즉, 컴파일된 코드를 포함함) 및 대응하는 서비스 구성을 액세스한다. 컴퓨터 시스템은 서비스 유형 및 대응하는 서비스 구성을 파스하여 명시된 프로그래밍 모델에 기초한 서비스를 기술하는 기술 정보를 식별한다. 컴퓨터 시스템은 식별된 기술 정보에 기초하여 서비스를 위한 서비스 기술 트리를 생성한다. 서비스 기술 트리의 형식은 임의의 프로그래밍 모델에 독립적이고, 한 개 이상의 다른 변환 모듈들이 서비스 기술 트리를 사용하여 다른 형식으로 그 서비스의 추가적 표현들을 생성할 수 있도록 사용가능하다.
다른 실시예들에서, 컴퓨터 시스템은, 네트워크-기반 서비스를 기술하는, 추상적 서비스 기술을 서비스를 나타내는 코드로 변환한다. 컴퓨터 시스템은 서비스를 위한 서비스 기술 트리를 액세스한다. 서비스 기술 트리 형식은 임의의 프로그래밍 모델에 독립적이고, 대응하는 서비스 유형 및 서비스 구성으로부터 파스되는 기술 정보로부터 생성된다. 컴퓨터 시스템은 다른 표현 형식에 따라 정의된 서비스 기술 정보를 프로세스하는 모듈로 기술 정보가 호환적으로 전송될 수 있도록, 컴퓨터 시스템은 서비스 기술 트리를 다른 표현 형식으로 변환한다. 컴퓨터 시스템은 다른 표현 형식으로 기술 정보를 출력한다.
추가적 실시예들에서, 컴퓨터 시스템은 네트워크-기반 서비스를 기술하는 추상적 서비스 기술로부터 서비스 런타임을 시작한다. 컴퓨터 시스템은 서비스를 위해 서비스 기술 트리를 액세스한다. 서비스 기술 트리 형식은 임의의 프로그래밍 모델에 독립적이고, 대응하는 서비스 유형과 서비스 구성으로부터 파스되는 기술 정보로부터 생성된다. 컴퓨터 시스템은 서비스 기술 트리와 연관된 서비스 호스트를 시작하라 메소드를 콜한다. 컴퓨터 시스템은 대응하는 서비스 유형과 서비스 구성으로부터 파스된 기술 정보에 따라 서비스를 위한 서비스 런타임을 시작한다.
추가 실시예들에서, 컴퓨터 시스템은 채널을 위한 소스 코드를 생성한다. 컴퓨터 시스템은 서비스를 기술하는 메타데이터를 액세스한다. 컴퓨터 시스템은 채널을 위한 채널 기술 트리로 메타데이터를 이입한다. 채널 기술 트리 형식은 임의의 프로그래밍 모델에 독립적이다. 컴퓨터 시스템은 채널 기술 트리로부터 코드 문서 객체 모델 및 대응하는 서비스 구성을 생성한다. 생성된 코드 문서 객체 모델 및 대응하는 서비스 구성은 명시된 프로그래밍 모델에 따라 채널을 구현하기 위한 것이다. 컴퓨터 시스템은 소스 코드로서 생성된 코드 문서 객체 모델을 출력하고, 소스 코드와 대응하는 서비스 구성이 명시된 프로그래밍 모델에 따라 채널을 시작하기 위해 사용될 수 있도록 대응하는 서비스 구성을 출력한다.
본 발명의 범위 내의 실시예들은 저장된 컴퓨터-실행가능 명령들 또는 데이터 구조들을 운반하거나 가지고 있기 위한 컴퓨터-판독가능 매체를 포함한다. 그런 컴퓨터-판독가능 매체는, 일반-목적이나 특수-목적 컴퓨터 시스템에 의해 액세스를 할 수 있는, 임의의 이용가능한 매체일 수 있다. 예를 들어, 하지만 이에 제한되지는 않고, 그런 컴퓨터-판독가능 매체는, RAM, ROM, EPROM, CD-ROM, 또는 다른 광 디스크 저장 장치, 자기 디스크 저장 장치나 다른 자기 저장 디바이스들, 또는 컴퓨터-실행가능 명령, 컴퓨터-판독가능 명령, 또는 데이터 구조의 형태로 원하 는 프로그램 코드 수단을 운반하거나 저장하기 위해 사용될 수 있고, 일반-목적이나 특수-목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 다른 매체와 같은 물리적 저장 매체를 포함할 수 있다.
본 설명과 다음에 오는 청구범위에서, "네트워크"는 컴퓨터 시스템들 및/또는 모듈들 간의 전자 데이터의 전송을 가능하게 하는 한 개 이상의 데이터 링크들로서 정의된다. 컴퓨터 시스템으로 네트워크 또는 다른 통신 접속(유선, 무선, 또는 유무선의 조합)을 통해 정보가 전송되거나 제공될 때, 접속은 컴퓨터-판독가능 매체로서 적절히 여겨진다. 그러므로, 임의의 그런 접속은 컴퓨터-판독가능 매체로서 적절히 용어화된다. 상술된 것들의 조합들은 또한 컴퓨터-판독가능 매체의 범위 내에 포함되어야만 한다. 컴퓨터-실행가능 명령들은, 일반-목적 컴퓨터 시스템이나 특수-목적 컴퓨터 시스템이 특정 기능이나 기능들의 그룹을 수행하도록 하는, 예를 들어, 명령 및 데이터를 포함한다. 컴퓨터 실행가능한 명령들은, 예를 들어, 바이너리들, 어셈블리어와 같은 중간 형식 명령, 또는 소스 코드일 수도 있다.
본 설명과 다음에 오는 청구범위에서, "컴퓨터 시스템"은 전자 데이터에 동작들을 수행하기 위해 함께 작업하는, 한 개 이상의 소프트웨어 모듈들, 한 개 이상의 하드웨어 모듈들, 또는 그것들의 조합들로서 정의된다. 예를 들어, 컴퓨터 시스템의 정의는, 개인용 컴퓨터의 운영 시스템과 같은, 소프트웨어 모듈들을 비롯하여, 개인용 컴퓨터의 하드웨어 컴포넌트들을 포함한다. 모듈들의 물리적 레이아웃은 중요하지 않다. 컴퓨터 시스템은 네트워크를 통해 결합된 한 개 이상의 컴퓨 터들을 포함할 수 있다. 유사하게, 컴퓨터 시스템은 한 개의 물리적 디바이스(예를 들어, 휴대 전화 또는 개인 정보 단말기(PDA))를 포함할 수 있고, 내부 모듈들(예를 들어, 메모리 및 프로세서)은 전자 데이터에 동작들을 수행하기 위해 함께 작업한다.
당업자라면, 본 발명이, 개인용 컴퓨터, 랩톱 컴퓨터, 핸드헬드 디바이스, 멀티프로세서 시스템, 마이크로프로세서-기반이나 프로그램가능한 소비자 전자 제품, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 휴대 전화, PDA, 호출기 등을 포함하는, 다수의 유형의 컴퓨터 시스템 구성들을 갖는 네트워크 컴퓨팅 환경들에서 실시될 수 있슴을 이해할 것이다. 본 발명은 또한 분산 시스템 환경들에서 실시될 수 있고, 네트워크를 통해 링크된(유선 데이터 링크, 무선 데이터 링크, 또는 유무선 데이터 링크들의 조합에 의해), 로컬 및 원격 컴퓨터 시스템들 모두는 작업들을 수행한다. 분산 시스템 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 디바이스들 모두에 위치될 수 있다.
이제 도 1의 참조에서, 도 1은 서비스와 클라이언트 런타임들을 생성하고, 교환하고, 및 구성하기 위한 추상적 기술들을 사용하는 것을 용이하게 하는 컴퓨터 아키텍처(100)의 일 예를 도시한다. 컴퓨터 아키텍처(100)에 도시된 바와 같이, 컴퓨터 시스템들(101 및 121)은 네트워크(141)에 접속된다. 네트워크(141)는 LAN(Local Area Network), WAN(Wide Area Network), 또는 인터넷일 수도 있다. 네트워크(141)에 접속된 컴퓨터 시스템들은 네트워크(141)에 접속된 다른 컴퓨터 시스템들에 데이터를 송수신할 수 있다. 따라서, 컴퓨터 시스템들(101 및 121), 및 다른 접속된 컴퓨터 시스템들(도시 안됨), 은 메시지 관련 데이터를 생성하고, 네트워크(141)를 통해 메시지 관련된 데이터(즉, IP(Internet Protocol) 데이터그램들 및, TCP(Transmission Control Protocol), HTTP(Hypertext Transfer Protocol), SMTP(Simple Mail Transfer Protocol), SOAP(Simple Object Access Protocol) 등과 같은, IP 데이터그램들을 사용하는 다른 고계층 프로토콜들에서의 메시지들)를 교환할 수 있다.
컴퓨터 시스템(101)은 서비스 로더(service loader)(104), 메타데이터 송출기(metadata exporter)(107), 메타데이터 이입기(metadata importer)(108), 및 계약 생성기(contract generator)(113)를 포함한다. 일반적으로, 서비스 로더(104)는 네트워크-기반 서비스를 나타내는 서비스 유형(예를 들어, CLR(Common Language Runtime) 유형) 또는 다른 객체-지향 프로그래밍 모델 객체를 수신하기 위해 구성된다. 서비스 로더(104)는 또한 대응하는 옵션적 서비스 구성 정보를 수신하기 위해 구성될 수 있다. 서비스 로더(104)는 서비스 유형(또는 다른 객체) 및 대응하는 서비스 구성 정보(임의의 것이 로드되면)를 추상적 서비스 기술로 변환할 수 있다.
일부 실시예들에서, 네트워크-기반 서비스는 명시된 프로그래밍 모델에 따라 표현된다. 명시된 프로그래밍 모델은 한 개 이상의 인터페이스들을 구현하는 한 유형일 수 있다. 각 인터페이스는 또한 한 개 이상의 방법들을 구현할 수 있다. 한 유형에 포함된 인터페이스들과 방법들은 인터페이스들과 방법들을 프로세스하고 발간하는 방법 및 인터페이스들과 방법들로 프로세싱하는 명시된 런타임을 수행하 는 방법을 지시하는 속성들로 주석을 달 수 있다. 다른 경우, 또는 주석을 다는 속성들과 조합하여, 서비스 구성 정보는 또한 인터페이스들과 방법들을 프로세스하고 발간하는 방법 및 인터페이스들과 방법들로 명시된 런타임 프로세싱을 수행하는 방법을 지시할 수 있다.
따라서, 서비스 로더(104)는 서비스 유형 및 대응하는 서비스 구성 정보를 로드할 수 있다. 서비스 로더(104)는 표현된 네트워크-기반 서비스의 기능을 식별하기 위해 프로그래밍 모델 및 대응하는 서비스 구성 정보를 나타내는 컴파일된 코드를 파스할 수 있다. 예를 들어, 서비스 로더(104)는 서비스 유형 및 대응하는 구성 정보로부터 끝점, 채널 스택, 및 바인딩을 식별할 수 있다. 서비스 로더(104)는 또한, 예를 들어, 보안 옵션, 신뢰할 만한 메시징 옵션, 메시지 로깅 옵션, 접속 억제 옵션 등과 같은, 다른 런타임 옵션들을 식별할 수 있다. 식별된 기능으로부터, 서비스 로더(104)는 식별된 기능을 기재하는 추상적 서비스 기술을 생성할 수 있다.
일부 실시예들에서, 추상적 서비스 기술은 네트워크-기반 서비스를 기술하는 기술 정보의 트리로서 배열된다. 예를 들어, 이제 도 2의 참조에서, 도 2는 추상적 서비스 기술(201)의 일 예를 도시한다. 서비스 기술(201)은 서비스 기술(201)에 의해 기재되는 네트워크-기반 서비스의 유형(즉, CLR 유형)을 지시하는 서비스 유형(202)을 포함한다. 지시된 서비스 유형은 기술된 네트워크-기반 서비스를 제공하기 위한 인터페이스들과 방법들을 구현하는 한 유형일 수 있다. 서비스 유형(202)은 서비스 유형 및 대응하는 서비스 구성 정보를 파싱하는 것으로부터 식별되 는 한 유형일 수 있다.
서비스 기술(201)은 또한 식별된 서비스 동작들(IServiceBehaviors;203A 및 203B)을 포함한다. 그러나, 한 개 이상의 추가적 식별된 서비스 동작들이 또한 포함될 수 있다. 식별된 서비스 동작들(203A 및 203B)은 서비스 기술(201)에 의해 기재되는 네트워크-기반 서비스가, 예를 들어, 서비스를 억제하는 것(즉, 기술된 서비스에 동시 요청의 수를 제한하는 것)과 같은, 런타임에 구현하기 위한 동작들을 나타낸다. 식별된 서비스 동작들(203A 및 203B)은 서비스 유형 및 대응하는 서비스 구성 정보를 파싱하는 것으로부터 식별되는 동작들일 수 있다.
서비스 기술(201)은 또한 서비스 끝점들(204A 및 204B)을 포함한다. 그러나, 한 개 이상의 추가적 서비스 끝점들이 또한 포함될 수 있다. 서비스 끝점들(204A 및 204B)은 끝점 주소, 바인딩, 및 한 개 이상의 계약 기술들(contract descriptions)을 포함하는 끝점들(한 끝점 클래스의)을 나타낸다. 서비스 끝점들(204A 및 204B)은 서비스 유형 및 대응하는 서비스 구성 정보를 파싱하는 것으로부터 식별된 서비스 끝점들일 수 있다.
끝점 주소는 기술된 서비스(예를 들어, 어디에 기술된 서비스가 위치되는지를 지시함)와 통신하기 위한 전자 주소(즉, URL(Uniform Resource Locator))이다. 예를 들어, 끝점 주소(214)는 서비스 기술(201)에 의해 기재되는 네트워크-기반 서비스를 통신하기 위한 전자 주소일 수 있다. 끝점 주소(214)는 서비스 유형 및 대응하는 서비스 구성 정보를 파싱하는 것으로부터 식별된 끝점 주소일 수 있다.
바인딩은 기술된 서비스와 통신할 때 어떻게 데이터가 전송되는지를 지시한 다. 바인딩은, 다른 전송 특성들에 적용할 수 있는, 예를 들어, 전송 바인딩 소자(예를 들어, HTTP(HyperText Transfer Protocol) 또는 TCP(Transmission Control Protocol)를 사용함), 인코더 바인딩 소자(예를 들어, UTF-8 또는 UTF-16을 사용함), 보안 바인딩 소자(예를 들어, 명시된 유형의 암호화를 사용함) 등과 같은, 복수 개의 다른 바인딩 소자들을 포함할 수 있다. 예를 들어, 바인딩(216)은 서비스 기술(201)에 의해 기재되는 네트워크-기반 서비스로 어떻게 데이터가 전송되는지를 지시할 수 있다. 바인딩(216)은 서비스 유형 및 대응하는 서비스 구성 정보를 파싱하는 것으로부터 식별된 바인딩일 수 있다.
계약 기술은 기술된 서비스와 통신할 때 무슨 데이터가 전송되는지(예를 들어, 메시지 인터랙션 패턴)를 나타낸다. 계약 기술은 한 개 이상의 동작들을 포함할 수 있다. 예를 들어, 네트워크-기반 수학 서비스를 위한 계약 기술은 덧셈, 뺄셈, 곱셈, 및 나눗셈을 위한 연산들을 포함할 수 있다. 각 동작은 한 개 이상의 메시지들을 포함할 수 있다. 예를 들어, 덧셈 연산은 2 개의 정수들을 포함하는 요청 메시지 및 2 개의 정수들의 합을 포함하는 답신 메시지를 포함할 수 있다.
그러므로, 계약 기술(217A)은 서비스 기술(201)에 의해 기재되는 네트워크-기반 서비스와 통신하기 위한 메시지 인터랙션 패턴들을 나타낼 수 있다. 일부 동작들(예를 들어, 동작(218))은, 예를 들어, 입력이나 출력 메시지와 같은, 한 개의 메시지를 포함한다. 다른 동작들(예를 들어, 동작(219))은, 예를 들어, 요청 메시지 및 답신 메시지와 같은, 2 개의 메시지들(예를 들어, 메시지들(229 및 239))을 포함한다.
명백히 도시되지는 않았지만, 계약 기술(217B)은 또한 서비스 기술(201)에 의해 기재된 네트워크-기반 서비스와 통신하기 위한 메시지 인터랙션 패턴들을 나타낼 수 있다. 그러므로, 계약 기술(217B)은 또한 한 개 이상의 동작들을 포함할 수 있고, 각 동작은 한 개 이상의 메시지들을 포함한다.
도 1을 다시 참조하면, 메타데이터 송출기(107)는, 예를 들어, 서비스 기술(201)과 같은, 추상적 서비스 기술을, 예를 들어, WSDL(Web Service Description Language) 문서와 같은, 대응하는 메타데이터로 송출할 수 있다. 일반적으로, 메타데이터 송출기(107)는 추상적 서비스 기술을 검사하기 위해, 및 추상적 서비스 기술을, 예를 들어, WSDL 문서와 같은, 대응하는 메타데이터로 변환하기 위해 구성된다.
메타데이터 송출기(107)는 직렬가능한 확장가능 마크업 언어(eXtensible Markup Language;XML)인 객체 모델을 타겟할 수 있다. 그러므로, 그것은, 메타데이터 송출기(107)가 추상적 서비스 기술을 메타데이터를 나타내는 객체로 송출하는 것일 수 있다. 후속적으로, 그 다음에, 메타데이터를 나타내는 객체는 미가공(raw) 메타데이터로 직렬화될 수 있다. 예를 들어, 메타데이터 송출기(107)는 WSDL 문서를 나타내는 객체로 추상적 서비스 기술을 송출할 수 있다. 후속적으로, 객체는 WSDL 문서로 직렬화될 수 있다. 다른 경우, 메타데이터 송출기(107)는 미가공 WSDL 문서(또는 다른 메타데이터)를 송출할 수 있다.
추상적 서비스 기술을 메타데이터로 송출하는 것은 추상적 서비스 기술의 구성자들을 메타데이터 형식의 적절한 구성자들에 매칭하는 것을 포함할 수 있다. 예를 들어, 메타데이터 송출기(107)는 추상적 서비스 기술의 바인딩 소자들(즉, 바인딩(216)의 바인딩 소자들)을 적절한 WSDL 바인딩 소자들에 매치할 수 있다.
메타데이터 이입기(108)는, 예를 들어, WSDL 문서와 같은, 메타데이터를, 예를 들어, 서비스 기술(210)과 같은, 대응하는 추상적 서비스 기술로 이입할 수 있다. 일반적으로, 메타데이터 이입기(108)는 메타데이터를 검사하기 위해 및 메타데이터를 대응하는 추상적 서비스 기술로 변환하기 위해 구성된다.
메타데이터 이입기(108)는 XML 직렬가능한 객체를 수신할 수 있다. 예를 들어, 메타데이터 이입기(108)는 WSDL 문서를 나타내는 객체를 수신할 수 있다. 메타데이터 이입기(108)는 객체를 검사하여 표현된 네트워크-기반 서비스의 기능을 식별할 수 있다. 예를 들어, 메타데이터 이입기(108)는 서비스 유형과 대응하는 구성 정보로부터 끝점, 채널 스택, 및 바인딩을 식별할 수 있다. 메타데이터 이입기(106)는 또한, 예를 들어, 보안 옵션, 신뢰할 수 있는 메시징 옵션, 메시지 로깅 옵션, 접속 억제 옵션 등과 같은, 다른 런타임 옵션들을 식별할 수 있다. 식별된 기능으로부터, 메타데이터 이입기(108)는 식별된 기능을 기술하는 추상적 서비스 기술을 생성할 수 있다. 다른 경우, 메타데이터 이입기(108)는 미가공 WSDL(또는 다른 메타데이터)을 수신할 수 있고, 추상적 서비스 기술을 생성하기 위해 유사 동작들을 수행할 수 있다.
추상적 서비스 기술로의 메타데이터를 이입하는 것은 메타데이터 형식의 구성자들을 추상적 서비스 기술의 적절한 구성자들에 매치하는 것을 포함할 수 있다. 예를 들어, 메타데이터 이입기(108)는 메타데이터 형식의 바인딩 소자들을 적절한 추상적 서비스 기술 바인딩들에 매치할 수 있다.
메타데이터 송출기(107)와 메타데이터 이입기(108) 모두는 추상적 서비스 기술로부터 메타데이터로 변환할 때 및 그 반대의 경우에 확장성을 용이하게 하는 제3자 플러그-인들을 지원하기 위해 구성될 수 있다. 제3자 플러그-인들은 추상적 서비스 기술 및 메타데이터 간의 맞춤 변환을 구현할 수 있다. 예를 들어, 플러그-인들은, 예를 들어, WS-정책, WS-RM(신뢰할 수 있는 메시징)과 같은, 웹 서비스 명세에 따라 정의된 정책문들(policy statements)의 변환을 용이하게 할 수 있다. WS-정책은, 예를 들어, 특정 방식으로 암호화를 수행하기 위해, 키 정보를 제공하기 위해 등과 같은, 사실상 임의의 정책을 나타내는 XML 소자 문장들을 정의하기 위해 사용될 수 있다. WS-RM은, 예를 들어, 타임아웃 값들과 같은, 신뢰할 만한 메시징 특징들을 정의하기 위해 사용될 수 있다.
따라서, 확장가능 정책문들은 WSDL 문서로 송출/이입될 수 있다. 예를 들어, 메타데이터 송출기(107)로의 송출기 플러그-인은 정책 소자들에 대한 추상적 서비스 기술을 검사하여, WSDL 문서에 적절한 정책 언설들(policy assertions)을 삽입할 수 있다. 그러므로, 추상적 서비스 기술의 바인딩이 정의된 RM 바인딩 소자를 포함하면, 송출기 플러그-인은 RM 바인딩 소자를 발견하여 송출된 메타데이터에 적절한 RM 정책 언설을 추가할 수 있다. 한편, 메타데이터 이입기(108)로의 이입기 플러그-인은 정책 언설들을 위한 WSDL 문서를 검사하여 추상적 서비스 기술에 적절한 정책 소자들을 삽입할 수 있다. 그러므로, 메타데이터가 바인딩 소자를 위한 RM 정책 언설을 포함하면, 이입기 플러그-인은 RM 정책 언설을 발견하여 이입된 추상적 서비스 기술에 적절히 정의된 RM 바인딩 소자를 추가할 수 있다.
플러그-인들은 또한 WSDL 문서의 임의의 XML 소자들 및 속성들로 추상적 서비스 기술의 부분의 송출 및 추상적 서비스 기술의 적절한 부분으로 WSDL 문서의 임의의 XML 소자들과 속성들의 이입을 용이하게 할 수 있다.
여전히 도 1의 참조에서, 계약 생성기(113)는 추상적 서비스 기술을 코드 문서 객체 모델 및 대응하는 서비스 구성 정보로 변환할 수 있다. 일반적으로, 계약 생성기(113)는 추상적 서비스 기술을 검사하고, 추상적 서비스 기술을 대응하는 코드 문서 객체 모델 및 서비스 구성 정보로 변환하기 위해 구성된다.
서비스 계약 생성기(113)는, 예를 들어, CodeDOM(Code Document Object Model)과 같은, 공공 객체 모드를 타겟할 수 있다. 언어 제공자들은 CodeDOM을 사용하여 CodeDOM에 기초하여 코드(예를 들어, C#, C++, 또는 비쥬얼 베이직)를 생성할 수 있다. 그러므로, 추상적 서비스 기술은 계약 기술, 동작들을 나타내는 방법, 및 파라미터를 나타내는 인터페이스들로 변환되어, 메시지들을 나타내는 값들을 리턴할 수 있다. 따라서, 언어 중립 형식의 소스 코드는 어떻게 XML이 전송시에 나타나야 하는지를 나타낼 수 있고, 및 일부 보안 정보를 포함할 수 있다.
서비스 계약 생성기(113)는 또한, 서비스 구성 파일에, 예를 들어, 서비스 끝점, 끝점 주소, 바인딩, 채널 동작 등과 같은, 대응하는 서비스 구성 정보를 저장할 수 있다. 소스 코드로부터 생성된 서비스 유형(컴파일된 코드)이 추상적 서비스 기술로의 변환을 위해 파스될 때, 구성 파일은 서비스 로더로 제공될 수 있다. 일부 실시예들에서, 코드 문서 객체 모델 및 구성 파일은 클라이언트에서 사 용되어 기술된 서비스와 통신하기 위한 채널을 구성할 수 있다.
컴퓨터 시스템(121)은 채널 로더(124), 메타데이터 이입기(128), 계약 생성기(133), 코드 변환기(138), 및 컴파일러(143)를 포함한다.
채널 로더(124)는 서비스 로더(104)에 유사하게 기능한다. 채널 로더(124)는 채널 유형 및 대응하는 채널 구성 정보를 로드할 수 있다. 채널 로더(124)는 네트워크-기반 서비스와 통신하기 위한 기능을 식별하기 위한 프로그래밍 모델 및 대응하는 채널 구성 정보를 나타내는 컴파일된 코드를 파스할 수 있다. 예를 들어, 채널 로더(124)는 채널 유형 및 대응하는 구성 정보로부터 끝점, 채널 스택, 및 바인딩을 식별할 수 있다. 채널 로더(124)는 또한, 예를 들어, 보안 옵션, 신뢰할 수 있는 메시징 옵션, 메시지 로깅 옵션, 접속 억제 옵션 등과 같은, 다른 런타임 옵션들을 식별할 수 있다. 식별된 기능으로부터, 채널 로더(124)는 식별된 기능을 기술하는 추상적 채널 기술을 생성할 수 있다.
일부 실시예들에서, 추상적 채널 기술은 네트워크-기반 서비스와 통신하는 방법을 기술하는 기술 정보의 트리로서 배열된다. 예를 들어, 이제 도 3의 참조에서, 도 3은 추상적 채널 기술(301)의 일 예를 도시한다. 채널 기술(301)은 채널 기술(301)에 의해 기재되는 네트워크-기반 채널의 유형(즉, CLR 유형)을 나타내는 채널 유형(302)을 포함한다. 지시된 채널 유형은 대응하는 네트워크-기반 서비스와 통신하기 위한 인터페이스와 방법을 구현하는 유형일 수 있다. 채널 유형(302)은 서비스 유형 및 대응하는 서비스 구성 정보를 파싱하는 것으로부터 식별되는 유형일 수 있다.
채널 기술(301)은 또한 식별된 채널 동작들(IChannelBehaviors;303A 및 303B)을 포함한다. 그러나, 한 개 이상의 추가적 식별된 채널 동작들이 또한 포함될 수 있다. 식별된 채널 동작들(303A 및 303B)은 채널 기술(301)에 의해 기재된 네트워크-기반 채널이, 예를 들어, 신뢰할 만한 메시징과 인가(authorization)와 같은, 런타임에 구현하기 위한 것인 동작들을 나타낸다. 식별된 채널 동작들(303A 및 303B)은 채널 유형 및 대응하는 서비스 구성 정보를 파싱하는 것으로부터 식별된 동작들일 수 있다.
채널 기술(301)은 또한 서비스 끝점(304)을 포함한다. 서비스 끝점(304)은 끝점 주소, 바인딩, 및 한 개 이상의 계약 기술들을 포함하는 한 끝점(한 끝점 클래스의)을 나타낸다. 서비스 끝점(304)은 채널 유형 및 대응하는 서비스 구성 정보를 파싱하는 것으로부터 식별된 서비스 끝점일 수 있다.
끝점 주소(314)는 채널 기술(301)에 의해 기재된 네트워크-기반 채널을 통신하기 위한 전자 주소일 수 있다. 끝점 주소(314)는 채널 유형 및 대응하는 서비스 구성 정보를 파싱하는 것으로부터 식별되는 끝점 주소일 수 있다. 바인딩(316)은 채널 기술(301)에 의해 기재된 네트워크-기반 채널로 어떻게 데이터가 전송되는지를 나타낼 수 있다. 바인딩(316)은 서비스 유형 및 대응하는 서비스 구성 정보를 파싱하는 것으로부터 식별된 바인딩일 수 있다. 계약 기술(317)은 서비스 기술(301)에 의해 기재된 네트워크-기반 채널과 통신하기 위한 메시지 인터랙션 패턴들을 나타낼 수 있다. 일부 동작들(예를 들어, 동작(318))은, 예를 들어, 입력이나 출력 메시지와 같은, 한 개의 메시지를 포함한다. 다른 동작들(예를 들어, 동작 (319))은, 예를 들어, 요청 메시지 및 답신 메시지와 같은, 2 개의 메시지들(예를 들어, 메시지들(329 및 339))을 포함한다.
메타데이터 이입기(128)는 메타데이터 이입기(128)에 유사하게 기능한다. 그러므로, 메타데이터 이입기(128)는, 예를 들어, WSDL 문서와 같은, 메타데이터를, 예를 들어, 채널 기술(201)과 같은, 대응하는 추상적 채널 기술로 이입할 수 있다. 일반적으로, 메타데이터 이입기(128)는 메타데이터를 검사하고, 그 메타데이터를 대응하는 추상적 채널 기술로 변환하기 위해 구성된다. 메타데이터 이입기(128)는 XML 직렬가능한 객체들 또는 미가공 메타데이터를 이입할 수 있고, 전술된 바와 같이 확장가능한 제3자 플러그-인들을 포함할 수 있다. 메타데이터 이입기(128)는 또한 메타데이터 형식의 구성자들을 추상적 서비스 기술의 적절한 구성자들로 매치될 수 있다. 예를 들어, 메타데이터 이입기(128)는 메타데이터 형식의 바인딩 소자들을 적절한 추상적 채널 기술 바인딩들에 매치할 수 있다.
계약 생성기(133)는 계약 생성기(113)에 유사하게 기능한다. 그러므로, 계약 생성기(133)는 추상적 채널 기술을 코드 문서 객체 모델 및 대응하는 서비스 구성 정보로 변환할 수 있다. 일반적으로, 계약 생성기(133)는 추상적 채널 기술을 검사하고 추상적 채널 기술을 대응하는 코드 문서 객체 모델 및 서비스 구성 정보로 변환하기 위해 구성된다. 계약 생성기(133)는 언어 중립 형식으로 소스 코드를 나타내기 위한 공공의 객체를 타겟할 수 있고, 그것은 후속적으로 코드를 지원된 프로그래밍 언어로 변환할 수 있다. 그러므로, 추상적 채널 기술은 계약 기술, 동작들을 나타내는 방법, 및 파라미터를 나타내는 인터페이스들로 변환될 수 있고, 메시지들을 나타내는 값들로 리턴할 수 있다. 따라서, 언어 중립 형식의 소스 코드는 어떻게 XML이 전송시에 나타나야 하는지를 나타낼 수 있고, 어떤 보안 정보를 포함할 수 있다.
계약 생성기(133)는 또한 서비스 구성 파일에, 예를 들어, 서비스 끝점, 끝점 주소, 바인딩, 채널 동작과 같은, 대응하는 서비스 구성 정보를 저장할 수 있다. 소스 코드로부터 생성된 채널 유형(컴파일된 코드)이 추상적 채널 기술로 변환하기 위해 파스될 때, 구성 파일이 채널 로더에 제공될 수 있다. 일부 실시예들에서, 코드 문서 객체 모델 및 구성 파일은 클라이언트에서 사용되어 기술된 서비스와 통신하기 위해 채널을 구성할 수 있다.
코드 변환기(138)는 코드 문서 객체 모델을 프로그래밍 언어의 소스 코드로 변환하기 위해 구성된다. 코드 변환기(138)는 코드 문서 객체 모델을 생성하기 위해 사용되는 동일 객체 모델의 일부일 수 있다. 컴파일러(143)는 채널 유형의 컴파일된 코드로 프로그래밍 언어의 소스 코드를 컴파일하기 위해 구성된다. 컴파일러(143)는, 예를 들어, C#, C++, 또는 비쥬얼 베이직 컴파일러일 수 있고, 통합 개발 환경(integrated development environment;IDE)의 일부일 수 있다.
도 5는 네트워크-기반 서비스를 기술하는 추상적 서비스 기술을 생성하기 위한 방법(500)의 일 예의 흐름도를 도시한다. 방법(500)은 컴퓨터 아키텍처(100)와 서비스 기술(201)에 나타낸 컴포넌트들과 데이터에 대해 기술될 것이다.
방법(500)은 명시된 프로그래밍 모델(동작 501)에 따라 서비스를 구현하기 위해 서비스 유형 및 대응하는 서비스 구성을 액세스하는 동작을 포함한다. 예를 들어, 서비스 로더(104)는 서비스 유형(102) 및 구성(103)을 액세스할 수 있다. 서비스 유형(102)은 프로그래밍 언어(C#, C++, 비쥬얼 베이직 등)의 소스 코드로부터 컴파일된 코드를 나타낼 수 있다. 서비스 유형(102)에 포함되는 인터페이스들과 방법들은 서비스를 기술하는 속성들로 주석이 달릴 수 있다. 구성(103)은 서비스를 기술하는 추가적 서비스 구성 정보를 포함할 수 있다.
방법(500)은 기술 정보를 식별하기 위해 서비스 유형 및 대응하는 서비스 구성을 파싱하는 동작(동작 502)을 포함한다. 예를 들어, 서비스 로더(104)는 서비스 유형(102)과 구성(103)을 파스하여 서비스 유형(102)에 의해 표현되는 서비스에 대응하는 기술 정보를 식별할 수 있다. 식별된 기술 정보는, 예를 들어, 서비스 유형, 서비스 동작(예를 들어, 보안 옵션, 신뢰할 만한 메시징 옵션, 메시지 로깅 옵션, 접속 억제 옵션), 및 서비스 끝점(예를 들어, 끝점 주소, 바인딩, 및, 동작들과 메시지들을 포함하는, 계약 기술)과 같은, 다양한 접속 및/또는 통신 프로토콜 옵션들을 포함할 수 있다.
방법(500)은 식별된 기술 정보에 기초하여 서비스에 대한 서비스 기술 트리를 생성하는 동작(동작 503)을 포함한다. 예를 들어, 서비스 로더(104)는 서비스 유형(102)과 구성(103)으로부터 식별된 기술 정보에 기초하여 서비스 기술(106)을 생성할 수 있다. 서비스 기술(106)은 서비스 기술(201)과 유사한 서비스 기술 트리일 수 있다. 식별된 서비스 유형, 식별된 서비스 동작, 및 식별된 서비스 끝점은 대응하는 트리 구조의 적절한 위치들에 생성될 수 있다.
도 6은, 네트워크-기반 서비스를 기술하는, 추상적 서비스 기술을 네트워크- 기반 서비스를 나타내는 코드로 변환하는 방법(600)의 일 예의 흐름도를 도시한다. 방법(600)은 컴퓨터 아키텍처(100)에 도시된 컴포넌트들과 데이터에 대해 기재될 것이다.
방법(600)은 서비스를 위한 서비스 기술 트리를 액세스하는 동작(동작 601)을 포함한다. 예를 들어, 메타데이터 송출기(107)는 서비스 기술(106)을 액세스할 수 있다. 다른 경우, 계약 생성기(113)는 서비스 기술(106)을 액세스할 수 있다.
방법(600)은 다른 표현 형식에 따라 정의된 서비스 기술 정보를 프로세스하는 모듈로 기술 정보가 호환적으로 전송될 수 있도록 서비스 기술 트리를 다른 표현 형식으로 변환하는 동작(동작 602)을 포함한다. 예를 들어, 메타데이터 송출기(107)는 서비스 기술(106)을 메타데이터(109)(또는 메타데이터(109)를 나타내는 객체)로 송출하여, 메타데이터 이입기(예를 들어, 메타데이터 이입기(128))가 후속적으로 메타데이터(109)(또는 메타데이터(109)를 나타내는 객체)를 서비스(또는 채널) 기술로 다시 이입할 수 있도록 한다.
다른 경우, 계약 생성기(113)는 서비스 기술(106)을 코드 문서 객체 모델(114)과 구성(116)으로 변환할 수 있다. 코드 문서 객체 모델(114)은 프로그래밍 언어의 소스 코드를 생성하기 위해 후속적으로 사용될 수 있다. 그 다음, 개발자는 적절한 기능을 확실하게 하거나 또는 추가적 기능을 첨가하기 위해 적절하면 코드를 수정할 수 있다. 그 다음, 프로그래밍 언어의 소스 코드가 컴파일될 수 있다. 구성(116)은 구성(103)으로부터 구성 정보의 적어도 부분 집합을 포함한다. 예를 들어, 구성(116)은 서비스 유형(102)에 기초한 서비스 런타임들과 통신하기 위해 채널을 구성하기 위한 적절한 구성 설정을 포함할 수 있다.
방법(600)은 다른 표현 형식으로 기술 정보를 출력하는 동작(동작 603)을 포함한다. 예를 들어, 메타데이터 송출기(107)는 메타데이터(109)를 메타데이터 송출기(128)로 전송할 수 있다. 다른 경우, 계약 생성기(113)는 코드 문서 객체 모델(114)과 구성(116)을 컴퓨터 시스템(121)으로 전송할 수 있다. 메타데이터(109), 코드 문서 객체 모델(114) 또는 구성(116) 중의 어떤 것도 컴퓨터 시스템(121)에서 채널로 후속적으로 변환되고, 수정되고, 및/또는 컴파일될 수 있다.
도 7은 네트워크-기반 서비스를 기술하는 추상적 서비스 기술로부터 서비스 런타임을 시작하기 위한 방법(700)의 일 예의 흐름도를 도시한다. 방법(700)은 컴퓨터 아키텍처(100)에 도시된 컴포넌트들과 데이터에 대해 기재될 것이다.
방법(700)은 서비스를 위한 서비스 기술을 액세스하는 동작을 포함하고, 서비스 기술 트리는 대응하는 서비스 유형 및 서비스 구성으로부터 파스된 기술 정보로부터 생성되었다(동작 701). 예를 들어, 컴퓨터 시스템(101)은 서비스 유형(102)과 구성(103)으로부터 파스된 기술 정보로부터 생성된 서비스 기술(106)을 액세스할 수 있다.
방법(700)은 서비스 기술 트리와 연관된 초기화 서비스 호스트 방법을 콜하는 동작(동작 702)을 포함한다. 예를 들어, 컴퓨터 시스템(101)은 서비스 기술(106)과 연관된 서비스 시작기(service initializer)(111)를 콜할 수 있다. 일부 실시예들에서, 초기화 서비스 호스트는 서비스 기술(106)에 포함되는 실행가능 코드이다. 그러므로, 서비스 기술(106)은 서비스 시작기(111)를 호출하는 것 일 수 있다.
방법(700)은 대응하는 서비스 유형 및 서비스 구성으로부터 파스된 기술 정보에 따라 서비스를 위한 서비스 런타임을 시작하는 동작(동작 703)을 포함한다. 예를 들어, 서비스 런타임(112)은 서비스 유형(102)과 구성(103)으로부터 파스된 기술 정보에 따라 시작될 수 있다.
도 8은 채널을 위한 소스 코드를 생성하기 위한 방법(800)의 일 예의 흐름도를 도시한다. 방법(800)은 컴퓨터 아키텍처(100)에 도시된 컴포넌트들과 데이터에 대해 기술될 것이다.
방법(800)은 서비스를 기술하는 메타데이터를 액세스하는 동작(동작 801)을 포함한다. 방법(800)은 메타데이터를 채널을 위한 채널 기술 트리로 이입하는 동작(동작 802)을 포함한다. 예를 들어, 메타데이터 이입기(128)는 메타데이터(109)를 채널 기술(126)로 이입할 수 있다.
방법(800)은 채널 기술 트리로부터 코드 문서 객체 모델 및 대응하는 서비스 구성을 생성하는 동작(동작 803)을 포함한다. 예를 들어, 계약 생성기(133)는 채널 기술(126)로부터 코드 문서 객체 모델(134) 및 구성(136)을 생성할 수 있다.
방법(804)은 생성된 코드 문서 객체 모델 및 대응하는 서비스 구성이 명시된 프로그래밍 모델에 따라 채널을 시작하기 위해 사용될 수 있도록, 방법(804)은 생성된 코드 문서 객체 모델 및 대응하는 서비스 구성을 출력하는 동작(동작 804)을 포함한다. 예를 들어, 코드 변환기(138)는 코드 문서 객체 모델(134)을 사용하여 소스 코드(139)를 생성할 수 있다. 그 다음, 컴파일러(143)는 소스 코드(139)를 채널 유형(132)으로 컴파일할 수 있다.
그 다음, 채널 로더(124)는 생성된 정제된 채널 기술(126)로 채널 유형(132)과 구성(136)을 파스할 수 있다. 후속적으로, 채널 기술(126)은 채널 유형(132) 및 구성(136)으로부터 파스된 기술 정보에 따라 채널(132)을 시작하기 위해 채널 시작기(131)를 콜할 수 있다. 그 다음, 채널(132)과 서비스 런타임(112)은 서비스 유형(102)에 의해 표현된 서비스를 사용하기 위해 통신할 수 있다.
본 발명의 실시예들은 서비스 기술 정보의 유연한 교환을 용이하게 한다. 예를 들어, 어떻게 채널이 서비스 런타임과의 호환적 통신을 위해 구성되는지를 나타내는 메타데이터 및/또는 소스 코드를 클라이언트에게 제공할 수 있다. 또한, 제3자 플러그-인들은 서버와 클라이언트 간의 정책 언설들과 임의의 XML의 이입과 송출을 용이하게 한다. 따라서, 본 발명은 서버 런타임과 대응하는 채널들 간의 상호동작성을 향상시킨다.
도 4는 본 발명의 원칙들을 위해 적절한 운영 환경을 도시한다. 도 4 및 다음 논의는 본 발명이 구현될 수 있는 적절한 컴퓨팅 환경의 간략하고 일반적인 기술을 제공하려고 의도된다. 요구되지는 않지만, 본 발명은 컴퓨터 시스템들에 의해 실행되는, 프로그램 모듈들과 같은, 컴퓨터-실행가능 명령들의 일반 문맥으로 기재될 것이다. 일반적으로, 프로그램 모듈들은, 특정 작업들을 수행하거나 또는 특정 추상 데이터 유형들을 구현하는, 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 컴퓨터-실행가능 명령, 연관된 데이터 구조, 및 프로그램 모듈은 본 명세서에 개시된 방법들의 동작들을 실행하기 위한 프로그램 코드 수단의 예 들을 나타낸다.
도 4의 참조에서, 본 발명을 구현하는 시스템의 일 예는, 프로세싱 유닛(421), 시스템 메모리(422), 및 프로세싱 유닛(421)에 시스템 메모리(422)를 포함하는 다양한 시스템 컴포넌트들을 결합하는 시스템 버스(423)를 포함하는, 컴퓨터 시스템(420)의 형태로 일반-목적 컴퓨팅 디바이스를 포함한다. 프로세싱 유닛(421)은, 본 발명의 특징들을 포함하는, 컴퓨터 시스템(420)의 특징들을 구현하기 위해 디자인되는 컴퓨터-실행가능 명령들을 실행할 수 있다. 시스템 버스(423)는 메모리 버스나 메모리 제어기, 주변기기 버스, 및 다양한 버스 아키텍처들 중의 임의의 것을 사용하는 로컬 버스를 포함하는 여러 유형들의 버스 구조들 중의 임의의 것일 수 있다. 시스템 메모리는 ROM(read only memory;424)과 RAM(random access memory;425)을 포함한다. 스타트업 동안과 같은 때, 컴퓨터 시스템(420) 내의 소자들 간의 정보를 전송하는 것을 돕는 기본 루틴들을 포함하는, BIOS(basic input/output system;426)는 ROM(424)에 저장될 수 있다.
컴퓨터 시스템(420)은 또한, 자기 하드 디스크(439)에 읽고 쓰는 자기 하드 디스크 드라이브(427), 분리형 자기 디스크(429)에 읽고 쓰는 자기 디스크 드라이브(428), 및 예를 들어, CD-ROM이나 다른 광 매체와 같은, 분리형 광 디스크(431)에 읽고 쓰는 광 디스크 드라이브(430)를 포함할 수 있다. 자기 하드 디스크 드라이브(427), 자기 디스크 드라이브(428), 및 광 디스크 드라이브(430)는 하드 디스크 드라이브 인터페이스(432), 자기 디스크 드라이브 인터페이스(433), 및 광 드라이브 인터페이스(434) 각각에 의해 시스템 버스(423)에 접속된다. 드라이브들 및 그들의 연관된 컴퓨터-판독가능 매체는, 컴퓨터 시스템(420)을 위한, 컴퓨터-실행가능 명령, 데이터 구조, 프로그램 모듈, 및 다른 데이터의 비휘발성 저장을 제공한다. 본 명세서에 기재된 환경의 예가 자기 하드 디스크(439), 분리형 자기 디스크(429), 및 분리형 광 디스크(431), 를 채택하지만, 자기 카세트, 플래쉬 메모리 카드, DVD(digital versatile disks), 버놀리(Bernoulli) 카트리지, RAM, ROM 등을 포함하는, 데이터를 저장하기 위한 컴퓨터-판독가능 매체의 다른 유형들이 사용될 수 있다.
한 개 이상의 프로그램 모듈들을 포함하는 프로그램 코드 수단은, 운영 시스템(435), 한 개 이상의 애플리케이션 프로그램들(436), 다른 프로그램 모듈들(437), 및 프로그램 데이터(438)를 포함하는, 하드 디스크(439), 자기 디스크(429), 광 디스크(431), ROM(424), 또는 RAM(425)에 저장될 수 있다. 사용자는, 키보드(440), 포인팅 디바이스(442), 또는, 예를 들어, 마이크로폰, 조이 스틱, 게임 패드, 스캐너 등과 같은, 다른 입력 디바이스들(도시 안됨)을 통해 컴퓨터 시스템(420)에 커맨드와 정보를 입력할 수 있다. 이들과 다른 입력 디바이스들은 시스템 버스(423)에 결합된 입력/출력 인터페이스(446)를 통해 프로세싱 유닛(421)에 접속될 수 있다. 입력/출력 인터페이스(446)는, 예를 들어, 직렬 포트 인터페이스, PS/2 인터페이스, 병렬 포트 인터페이스, USB(Universal Serial Bus) 인터페이스, 또는 IEEE(Institute of Electrical and Electronics Engineers) 1394 인터페이스(예를 들어, 파이어와이어(FireWire) 인터페이스)와 같은, 넓고 다양한 다른 인터페이스들 중의 임의의 것을 논리적으로 나타내거나, 또는 다른 인터페이스들의 조합을 논리적으로도 나타낼 수 있다.
모니터(447) 또는 다른 디스플레이 디바이스는 또한 비디오 인터페이스(448)를 통해 시스템 버스(423)로 접속된다. 예를 들어, 스피커와 프린터와 같은, 다른 주변 출력 디바이스들(도시 안됨)은 또한 컴퓨터 시스템(420)에 접속될 수 있다.
컴퓨터 시스템(420)은, 예를 들어, 사무실-기반이나 기업-기반 컴퓨터 네트워크, 홈 네트워크, 인트라넷, 및/또는 인터넷과 같은, 네트워크들에 접속가능하다. 컴퓨터 시스템(420)은, 그런 네트워크들을 통해, 예를 들어, 원격 컴퓨터 시스템, 원격 애플리케이션, 및/또는 원격 데이터베이스와 같은, 외부 소스들과 데이터를 교환할 수 있다.
컴퓨터 시스템(420)이 외부 소스들로부터 데이터를 수신하고 및/또는 외부 소스들로 데이터를 전송하는, 네트워크 인터페이스(453)를 포함한다. 도 4에 도시된 바와 같이, 네트워크 인터페이스(453)는 링크(451)를 통해 원격 컴퓨터 시스템(483)과의 데이터의 교환을 용이하게 한다. 네트워크 인터페이스(453)는, 예를 들어, 네트워크 인터페이스 카드 및 대응하는 NDIS(Network Driver Interface Specification) 스택과 같은, 한 개 이상의 소프트웨어 및/또는 하드웨어 모듈들을 논리적으로 나타낼 수 있다. 링크(451)는 네트워크(예를 들어, 이써넷 세그멘트)의 일부를 나타내고, 원격 컴퓨터 시스템(483)은 네트워크의 노드를 나타낸다.
유사하게, 컴퓨터 시스템(420)은, 컴퓨터 시스템(420)이 외부 소스들로부터 데이터를 수신하고 및/또는 외부 소스들로 데이터를 전송하는, 입력/출력 인터페이스(446)를 포함한다. 입력/출력 인터페이스(446)는, 컴퓨터 시스템(420)이 외부 소스들로부터 데이타를 송수신하는, 링크(459)를 통해 모뎀(454)(예를 들어, 표준 모뎀, 케이블 모뎀, 또는 DSL(digital subscriber line) 모뎀)에 결합된다. 도 4에 도시된 바와 같이, 입력/출력 인터페이스(446) 및 모뎀(454)은 링크(452)를 통해 원격 컴퓨터 시스템(493)과 데이터를 교환하는 것을 용이하게 한다. 링크(452)는 네트워크의 일부를 나타내고, 원격 컴퓨터 시스템(493)은 네트워크의 노드를 나타낸다.
도 4가 본 발명을 위한 적절한 운영 환경을 나타내는 한편, 본 발명의 원칙들을, 필요하면 적절한 수정으로, 구현할 수 있는 임의의 시스템에서 채택될 수 있다. 도 4에 도시된 환경은 설명일 뿐이고, 본 발명의 원칙들이 구현될 수 있는 넓고 다양한 환경들의 작은 부분도 나타내지 못한다.
본 발명에 따라, 서비스 로더, 계약 생성기, 메타데이터 이입기, 메타데이터 송출기, 서비스 시작기, 서비스 런타임, 및 채널을 포함하는 모듈들, 및 서비스 유형, 구성, 코드 문서 객체 모델, 메타데이터, 서비스 기술, 및 채널 기술을 포함하는 연관된 데이터는, 컴퓨터 시스템(420)과 연관된 컴퓨터-판독가능 매체 중의 임의의 것에 저장되거나 액세스될 수 있다. 예를 들어, 그런 모듈들의 부분들 및 연관된 프로그램 데이터의 부분들은, 시스템 메모리(422)에 저장하기 위해, 운영 시스템(435), 애플리케이션 프로그램들(436), 프로그램 모듈들(437), 및/또는 프로그램 데이터(438)에 포함될 수 있다.
예를 들어, 자기 하드 디스크(439)와 같은, 대용량 저장 디바이스가 컴퓨터 시스템(420)에 결합될 때, 그런 모듈들 및 연관된 프로그램 데이터가 또한 대용량 저장 디바이스에 저장될 수 있다. 네트워크 환경에서, 컴퓨터 시스템(420), 또는 그것의 일부, 에 관련되어 도시된 프로그램 모듈들은, 원격 컴퓨터 시스템(483) 및/또는 원격 컴퓨터 시스템(493)과 연관된 시스템 메모리 및/또는 대용량 저장 디바이스들과 같은, 원격 메모리 저장 디바이스들에 저장될 수 있다. 그런 모듈들의 실행은 전술된 바와 같이 분산된 환경에서 수행될 수 있다.
본 발명은 그것의 취지 또는 기본 특징들로부터 벗어나지 않고 다른 특정 형태들로 구현될 수 있다. 기재된 실시예들은 단지 예로서만이지 제한적이 아닌 것으로 모든 면에서 고려되어야 한다. 그러므로, 본 발명의 범위는, 전술된 설명보다는, 첨부된 청구범위에 의해 지시된다. 청구범위의 동격의 의미 및 범위 내에 오는 모든 변경들은 그들의 범위 내에 포함되어야 한다.
본 발명은 네트워크-기반 서비스와 클라이언트 런타임들을 생성하고, 교환하고, 및 구성하기 위한 추상적 기술을 사용하는 것을 확장하여, 종래 기술의 문제점들을 극복한다. 시스템은 명시된 프로그래밍 모델에 따라 서비스 유형 및 대응하는 서비스 구성을 액세스하여 서비스를 구현한다. 서비스 유형 및 대응하는 서비스 구성을 파스하여 기술 정보를 식별하고, 이를 기초하여 서비스 기술 트리를 생성한다. 서비스 기술 트리는 임의의 프로그래밍 모델에 독립적이고, 변환 모듈들을 사용하여 다른 형식들로 서비스의 추가 표현들을 생성하기 위해 사용된다.

Claims (20)

  1. 컴퓨터 시스템에서, 네트워크-기반 서비스를 기술하는 추상적 서비스 기술(abstract service description)을 생성하는 방법으로서,
    명시된 프로그래밍 모델에 따라 서비스를 구현하기 위한 서비스 유형 - 상기 서비스 유형은 컴파일된 소스 코드를 포함함 -, 및 대응하는 서비스 구성을 액세스하는 단계;
    상기 명시된 프로그래밍 모델에 기초하여 상기 서비스를 기술하는 기술 정보(description information)를 식별하기 위해 상기 서비스 유형 및 대응하는 서비스 구성을 파스(parse)하는 단계; 및
    상기 식별된 기술 정보에 기초하여 상기 서비스를 위한 서비스 기술 트리를 생성하는 단계를 포함하고,
    상기 서비스 기술 트리의 형식은 임의의 프로그래밍 모델에 독립적이고, 한 개 이상의 다른 변환 모듈들이 다른 형식들로 상기 서비스의 추가 표현들을 생성하기 위해 상기 서비스 기술 트리를 사용할 수 있도록, 상기 서비스 기술 트리가 사용되는 방법.
  2. 제1항에 있어서, 서비스를 구현하기 위해 서비스 유형 및 대응하는 서비스 구성을 액세스하는 상기 단계는 CLR(Common Language Runtime) 유형을 액세스하는 단계를 포함하는 방법.
  3. 제1항에 있어서, 서비스를 구현하기 위해 서비스 유형 및 대응하는 서비스 구성을 액세스하는 상기 단계는 어떻게 런타임에서 상기 서비스 유형에 포함되는 인터페이스들과 방법들을 구현하는지를 나타내는 속성들로 주석이 달리는 서비스 유형을 액세스하는 단계를 포함하는 방법.
  4. 제1항에 있어서, 서비스를 구현하기 위해 서비스 유형 및 대응하는 서비스 구성을 액세스하는 상기 단계는 보안 옵션, 신뢰할 만한 메시징 옵션, 메시지 로깅(logging) 옵션, 및 접속 억제 옵션 중에 선택되는 서비스 구성 정보를 액세스하는 동작을 구성하는 방법.
  5. 제1항에 있어서, 기술 정보를 식별하기 위해 상기 서비스 유형 및 대응하는 서비스 구성을 파싱하는 단계는 끝점(endpoint) 주소, 바인딩(binding), 및 계약 기술(contract description) 중에 선택되는 기술 정보를 식별하기 위해 상기 서비스 유형을 파싱하는 단계를 포함하는 방법.
  6. 제1항에 있어서, 기술 정보를 식별하기 위해 상기 서비스 유형 및 대응하는 서비스 구성을 파싱하는 단계는 보안 옵션, 신뢰할 만한 메시징 옵션, 메시지 로깅 옵션, 및 접속 억제 옵션 중에 선택된 기술 정보를 식별하기 위해 상기 서비스 구성을 파싱하는 단계를 포함하는 방법.
  7. 제1항에 있어서, 상기 식별된 기술 정보에 기초하여 상기 서비스를 위한 서비스 기술 트리를 생성하는 상기 단계는 대응하는 단계들 및 메시지들을 포함하는 계약 기술의 표현을 생성하는 단계를 포함하는 방법.
  8. 제1항에 있어서, 상기 식별된 기술 정보에 기초하여 상기 서비스를 위한 서비스 기술 트리를 생성하는 상기 단계는 서비스 행위(service behavior)의 표현을 생성하는 단계를 포함하는 방법.
  9. 컴퓨터 시스템에서, 네트워크-기반 서비스를 기술하는, 추상적 서비스 기술을 상기 서비스를 나타내는 소스 코드로 변환하는 방법으로서,
    서비스를 위한 서비스 기술 트리- 상기 서비스 기술 트리 형식은 임의의 프로그래밍 모델에 독립적이고, 상기 서비스 기술 트리는 대응하는 서비스 유형 및 서비스 구성으로부터 파스된 기술 정보로부터 생성됨 - 를 액세스하는 단계;
    다른 표현 형식에 따라 정의된 서비스 기술 정보를 프로세스하는 모듈로 상기 기술 정보가 호환적으로 전송될 수 있도록, 상기 다른 표현 형식으로 상기 서비스 기술 트리를 변환하는 단계; 및
    상기 다른 표현 형식으로 상기 기술 정보를 출력하는 단계
    를 포함하는 방법.
  10. 제9항에 있어서, 서비스를 위한 서비스 기술 트리를 액세스하는 상기 단계는 상기 서비스를 위한 행위들을 액세스하는 단계를 포함하는 방법.
  11. 제9항에 있어서, 서비스를 위한 서비스 기술 트리를 액세스하는 상기 단계는 대응하는 단계들과 메시지들을 포함하는 상기 서비스를 위한 계약 기술을 액세스하는 단계를 포함하는 방법.
  12. 제9항에 있어서, 다른 표현 형식으로 상기 서비스 기술 트리를 변환하는 상기 단계는 메타데이터(metadata)로 상기 서비스 기술 트리를 송출(export)하는 단계를 포함하는 방법.
  13. 제12항에 있어서, 메타데이터로 상기 서비스 기술 트리를 송출하는 상기 단계는 WSDL 문서로 상기 서비스 기술 트리를 송출하는 단계를 포함하는 방법.
  14. 제12항에 있어서, 메타데이터로 상기 서비스 기술 트리를 송출하는 상기 단계는 상기 메타데이터로 정책 언설들(policy assertions)을 삽입하는 제3자 플러그-인의 단계를 포함하는 방법.
  15. 제12항에 있어서, 메타데이터로 상기 서비스 기술 트리를 송출하는 상기 단계는 상기 메타데이터로 임의의 XML을 삽입하는 제3자 플러그-인의 단계를 포함하 는 방법.
  16. 제9항에 있어서, 다른 표현 형식으로 상기 서비스 기술 트리를 변환하는 상기 단계는 코드 문서 객체 모델 및 대응하는 서비스 구성으로 상기 서비스 기술 트리를 변환하는 단계를 포함하는 방법.
  17. 제16항에 있어서, 코드 문서 객체 모델 및 대응하는 서비스 구성으로 상기 서비스 기술 트리를 변환하는 상기 단계는 소스 코드로 상기 서비스 기술 트리를 변환하는 단계를 포함하는 방법.
  18. 제16항에 있어서, 코드 문서 객체 모델 및 대응하는 서비스 구성으로 상기 서비스 기술 트리를 변환하는 상기 단계는 서비스 끝점들을 나타내는 언어 중립 소스(language neutral source)로 상기 서비스 기술 트리를 변환하는 단계를 포함하는 방법.
  19. 제16항에 있어서, 코드 문서 객체 모델 및 대응하는 서비스 구성으로 상기 서비스 기술 트리를 변환하는 상기 단계는 보안 옵션, 신뢰할 만한 메시징 옵션, 메시지 로깅 옵션, 및 접속 억제 옵션 중에서 선택된 서비스 행위들을 나타내는 서비스 구성으로 상기 서비스 기술 트리를 변환하는 단계를 포함하는 방법.
  20. 컴퓨터 시스템에서 사용하기 위한 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 프로그램 제품은 네트워크-기반 서비스를 기술하는 추상적 서비스 기술을 생성하는 방법을 구현하기 위한 것이고, 상기 컴퓨터 프로그램 제품은,
    명시된 프로그래밍 모델에 따라 서비스를 구현하기 위한 서비스 유형 - 상기 서비스 유형은 컴파일된 소스 코드를 포함함 - 및 대응하는 서비스 구성을 액세스하고,
    상기 명시된 프로그래밍 모델에 기초하여 상기 서비스를 기술하는 기술 정보를 식별하기 위해 상기 서비스 유형 및 대응하는 서비스 구성을 파스하고,
    상기 식별된 기술 정보에 기초하여 상기 서비스를 위한 서비스 기술 트리를 생성하는 - 상기 서비스 기술 트리의 형식은 임의의 프로그래밍 모델에 독립적이고, 한 개 이상의 다른 변환 모듈들이 다른 형식들로 상기 서비스의 추가 표현들을 생성하기 위해 상기 서비스 기술 트리를 사용할 수 있도록 상기 서비스 기술 트리가 사용될 수 있음 -
    것을, 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템이 수행하도록 하는 컴퓨터 실행가능 명령들을 저장한 한 개 이상의 컴퓨터 판독가능 매체를 포함하는 컴퓨터 프로그램 제품.
KR1020050124568A 2005-02-04 2005-12-16 서비스와 클라이언트 런타임을 생성, 교환, 및 구성하기위한 추상적 기술의 사용 KR101220000B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/051,041 US7950023B2 (en) 2005-02-04 2005-02-04 Utilizing abstract descriptions to generate, exchange, and configure service and client runtimes
US11/051,041 2005-02-04

Publications (2)

Publication Number Publication Date
KR20060089616A true KR20060089616A (ko) 2006-08-09
KR101220000B1 KR101220000B1 (ko) 2013-01-08

Family

ID=36215532

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050124568A KR101220000B1 (ko) 2005-02-04 2005-12-16 서비스와 클라이언트 런타임을 생성, 교환, 및 구성하기위한 추상적 기술의 사용

Country Status (9)

Country Link
US (1) US7950023B2 (ko)
EP (1) EP1688836A1 (ko)
JP (1) JP5063899B2 (ko)
KR (1) KR101220000B1 (ko)
CN (1) CN1816050A (ko)
AU (1) AU2005242150A1 (ko)
BR (1) BRPI0600007A (ko)
CA (1) CA2530249A1 (ko)
RU (1) RU2405202C2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101036861B1 (ko) * 2008-05-29 2011-05-25 한국산업기술평가관리원 예상되는 사용 정보로 확장된 서비스 기술정보

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070067384A1 (en) * 2005-09-21 2007-03-22 Angelov Dimitar V System and method for web services configuration creation and validation
US7774463B2 (en) * 2006-07-25 2010-08-10 Sap Ag Unified meta-model for a service oriented architecture
US7676586B2 (en) * 2006-10-05 2010-03-09 Microsoft Corporation Hierarchical federation metadata
US8843881B2 (en) * 2007-01-12 2014-09-23 Microsoft Corporation Transporting and processing foreign data
US8539046B2 (en) * 2007-06-15 2013-09-17 Microsoft Corporation Delegated pre-configuration
US20090235282A1 (en) * 2008-03-12 2009-09-17 Microsoft Corporation Application remote control
US8032633B2 (en) * 2008-06-10 2011-10-04 International Business Machines Corporation Computer-implemented method for implementing a requester-side autonomic governor using feedback loop information to dynamically adjust a resource threshold of a resource pool scheme
US8250212B2 (en) * 2008-06-10 2012-08-21 International Business Machines Corporation Requester-side autonomic governor
US8239419B2 (en) * 2009-08-04 2012-08-07 Oracle International Corporation Generating service component definition language from metadata
US9086932B2 (en) 2009-10-14 2015-07-21 Sap Se System landscape aware inter-application communication infrastructure
US10089119B2 (en) 2009-12-18 2018-10-02 Microsoft Technology Licensing, Llc API namespace virtualization
US20110289515A1 (en) * 2010-05-19 2011-11-24 Microsoft Corporation Generating service-access activities for workflow applications
US8832175B2 (en) * 2010-09-21 2014-09-09 Sourcecode Technology Holdings, Inc. Methods and apparatus for dynamic endpoint generators and dynamic remote object discovery and brokerage
US8434070B2 (en) * 2010-10-26 2013-04-30 International Business Machines Corporation Generating specifications of client-server applications for static analysis
US8776094B2 (en) 2011-08-11 2014-07-08 Microsoft Corporation Runtime system
US8695021B2 (en) 2011-08-31 2014-04-08 Microsoft Corporation Projecting native application programming interfaces of an operating system into other programming languages
US10331765B2 (en) 2013-05-24 2019-06-25 Sourcecode Technology Holdings, Inc. Methods and apparatus for translating forms to native mobile applications
ES2527566B1 (es) * 2013-07-26 2015-09-29 Sourcecode Technology Holdings, Inc. Método, medio y sistema de generación de un punto final dinámico
US9459986B2 (en) * 2013-08-28 2016-10-04 International Business Machines Corporation Automatic generation of analysis-equivalent application constructs
US20150074678A1 (en) * 2013-09-09 2015-03-12 Avraham Vachnis Device and method for automating a process of defining a cloud computing resource
US20150186193A1 (en) * 2013-12-27 2015-07-02 Microsoft Corporation Generation of client-side application programming interfaces
EP2988217A1 (en) 2014-08-21 2016-02-24 licobo GmbH Method and system with client side adaptive universal service interface support
CN104133717A (zh) * 2014-08-26 2014-11-05 中电海康集团有限公司 一种用于数据开放系统的服务自动化生成和部署方法
US10635504B2 (en) 2014-10-16 2020-04-28 Microsoft Technology Licensing, Llc API versioning independent of product releases
US9703552B2 (en) 2014-12-18 2017-07-11 International Business Machines Corporation Assertions based on recently changed code
US9823904B2 (en) 2014-12-18 2017-11-21 International Business Machines Corporation Managed assertions in an integrated development environment
US9747082B2 (en) 2014-12-18 2017-08-29 International Business Machines Corporation Optimizing program performance with assertion management
US9678855B2 (en) 2014-12-30 2017-06-13 International Business Machines Corporation Managing assertions while compiling and debugging source code
US10585675B2 (en) 2017-10-30 2020-03-10 EMC IP Holding Company LLC Systems and methods of running different flavors of a service provider in different host environments
US10871768B2 (en) * 2018-10-18 2020-12-22 Wärtsilä North America, Inc. Apparatus, device and computer implemented method for automatic generation of SCADA slave interface
CN109885290B (zh) * 2019-01-09 2022-07-12 远光软件股份有限公司 应用程序服务描述信息生成与发布方法、装置和存储介质
CN110083342B (zh) * 2019-04-26 2023-04-18 重庆紫光华山智安科技有限公司 一种程序生成方法、装置以及计算机可读存储介质
CA3084976A1 (en) * 2019-07-01 2021-01-01 Next Pathway Inc. System and method for automated source code generation to provide service layer functionality for legacy computing systems in a service-oriented architecture
CN110427175A (zh) * 2019-08-05 2019-11-08 深圳科蓝金信科技发展有限公司 基于通讯接口的前端界面及后台服务生成方法及系统
CN114003232B (zh) * 2021-10-25 2024-04-12 中国航空无线电电子研究所 一种基于航电数据模型的传输服务实现方法
CN114363792A (zh) * 2021-11-26 2022-04-15 赛因芯微(北京)电子科技有限公司 传输音轨格式串行元数据生成方法、装置、设备及介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1459175A4 (en) * 2001-11-28 2008-10-22 Ibm METHOD AND APPARATUS FOR DYNAMICALLY CREATING SOFTWARE OBJECTS
US7962925B2 (en) * 2002-02-22 2011-06-14 Oracle International Corporation System and method for XML data binding
US7159224B2 (en) * 2002-04-09 2007-01-02 Sun Microsystems, Inc. Method, system, and articles of manufacture for providing a servlet container based web service endpoint
WO2004003770A1 (en) 2002-06-27 2004-01-08 Bea Systems, Inc. System and method for web services java api-based invocation
JP2004118374A (ja) * 2002-09-25 2004-04-15 Keio Gijuku 変換装置及び変換方法及び変換プログラム及び変換プログラムを記録したコンピュータ読み取り可能な記録媒体
US8307109B2 (en) * 2003-08-27 2012-11-06 International Business Machines Corporation Methods and systems for real time integration services
US7437374B2 (en) * 2004-02-10 2008-10-14 International Business Machines Corporation Efficient XML schema validation of XML fragments using annotated automaton encoding
US7313575B2 (en) * 2004-06-14 2007-12-25 Hewlett-Packard Development Company, L.P. Data services handler

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101036861B1 (ko) * 2008-05-29 2011-05-25 한국산업기술평가관리원 예상되는 사용 정보로 확장된 서비스 기술정보

Also Published As

Publication number Publication date
JP2006216030A (ja) 2006-08-17
AU2005242150A1 (en) 2006-08-24
EP1688836A1 (en) 2006-08-09
KR101220000B1 (ko) 2013-01-08
US20060179425A1 (en) 2006-08-10
US7950023B2 (en) 2011-05-24
CA2530249A1 (en) 2006-08-04
RU2005141463A (ru) 2007-07-20
CN1816050A (zh) 2006-08-09
BRPI0600007A (pt) 2006-09-19
RU2405202C2 (ru) 2010-11-27
JP5063899B2 (ja) 2012-10-31

Similar Documents

Publication Publication Date Title
KR101220000B1 (ko) 서비스와 클라이언트 런타임을 생성, 교환, 및 구성하기위한 추상적 기술의 사용
US11409949B2 (en) Mobile device resource provisioning system and method
KR101159364B1 (ko) 분산형 애플리케이션의 객체 지향 표현과 서비스 지향 표현 간의 매핑
JP5420139B2 (ja) ダイナミック・サービス・サロゲート
JP5346032B2 (ja) 宣言的モデルの変換
US20070169015A1 (en) Web services development automation toolkit with test case driver and customized configuration file
US8683428B2 (en) Automated generation of client/driver communication interfaces
KR20060099392A (ko) 웹 서비스 환경 내에서 통신하도록 개발되지 않은 레거시애플리케이션 컴포넌트를 위한 동적인 웹 서비스를생성하는 방법 및 컴퓨터 프로그램 제품
US20080215706A1 (en) Mobile exchange infrastructure
EP1899910A2 (en) Using messages to extend crm functionality
Iglesias-Urkia et al. Automatic generation of web of things servients using thing descriptions
Otte et al. Infrastructure for component-based DDS application development
Hackmann et al. Extending BPEL for interoperable pervasive computing
Lopes et al. Development of a library for clients of ONVIF video cameras: challenges and solutions
JP2003076563A (ja) 分散オブジェクトミドルウェア連携方法及びプログラムを記録した記録媒体並びにプログラム
MXPA06000108A (es) Utilizacion de descripciones abstratas para generar, intercambiar y configurar tiempos de ejecucion de servicio y del cliente
Cârstea et al. Towards a grid enabled symbolic computation architecture
Sward Using ada in a service-Ooriented architecture
Gottardi et al. Run-time Adaptable Service Oriented Architecture in the Context of Repository Systems
Smith Creating a Test Harness for Composed Grid Services
Haliç Implementation of an Application Server on Mobile Devices
Vila-Armengol Implementation of Web services architecture in TAPAS

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20151217

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20161220

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20171219

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20181226

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20191217

Year of fee payment: 8