KR101169090B1 - 메시지 교환 프로토콜 확장 협상 - Google Patents

메시지 교환 프로토콜 확장 협상 Download PDF

Info

Publication number
KR101169090B1
KR101169090B1 KR1020050104950A KR20050104950A KR101169090B1 KR 101169090 B1 KR101169090 B1 KR 101169090B1 KR 1020050104950 A KR1020050104950 A KR 1020050104950A KR 20050104950 A KR20050104950 A KR 20050104950A KR 101169090 B1 KR101169090 B1 KR 101169090B1
Authority
KR
South Korea
Prior art keywords
computing entity
message
extension
message exchange
transaction
Prior art date
Application number
KR1020050104950A
Other languages
English (en)
Other versions
KR20060063655A (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 KR20060063655A publication Critical patent/KR20060063655A/ko
Application granted granted Critical
Publication of KR101169090B1 publication Critical patent/KR101169090B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W28/00Network traffic management; Network resource management
    • H04W28/16Central resource management; Negotiation of resources or communication parameters, e.g. negotiating bandwidth or QoS [Quality of Service]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/24Negotiation of communication capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W80/00Wireless network protocols or protocol adaptations to wireless operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Abstract

분산 액티비티를 달성할 때 사용되는 비교적 전송 기술 독립적인 통신 프로토콜을 협상하는 메카니즘이 제공된다. 협상될 잠재적인 프로토콜들은, 예를 들어, 웹서비스 조정에 대한 확장일 수 있다. 이 경우, 개시자가 트랜잭션을 생성하면, 개시자는 또한 그 트랜잭션 관리자와 원하는 프로토콜을 협상한다. 트랜잭션 관리자 및 임의의 다른 트랜잭션 참가자들은 트랜잭션 관리자와 통신할 때 그 협상된 프로토콜에 따를 것이다. 프로토콜은 성능을 향상시키기 위해 선택될 수 있고 기존의 필요성 및 능력에 맞추어질 수 있다.
분산 액티비티, 트랜잭션, 메시지 교환, 확장, 프로토콜

Description

메시지 교환 프로토콜 확장 협상{MESSAGE EXCHANGE PROTOCOL EXTENSION NEGOTIATION}
도 1은 본 발명의 특징들을 구현할 수 있는 적합한 컴퓨팅 시스템을 도시하는 도면.
도 2는 분산 액티비티를 달성하기 위해 비교적 전송 기술 독립적인(transport-agnostic) 통신 프로토콜이 협상될 수 있는 네트워크 환경을 개략적으로 도시하는 도면.
도 3a는 본 발명의 원리에 따라 메시지 교환 패턴에 대한 확장을 협상하는 방법의 흐름도.
도 3b는 제1 확장-식별 데이터 구조의 데이터 구조를 도시하는 도면.
도 3c는 제1 확장-식별 데이터 구조를 포함하는 제1 메시지를 도시하는 도면.
도 3d는 제2 확장-식별 데이터 구조의 데이터 구조를 도시하는 도면.
도 3e는 제2 확장-식별 데이터 구조를 포함하는 제2 메시지를 도시하는 도면.
도 4a는 웹 서비스 조정 프로토콜이 구현될 수 있는 종래의 네트워크 환경을 도시하는 도면.
도 4b는 종래의 웹 서비스 조정(WS-Coordination)에 따른 각종 메시지 흐름의 타이밍을 도시하는 타이밍도.
도 5는 종래의 WS-AT(Web Services Atomic Transaction) 프로토콜에 의해 정의된 2상태 커미트 트랜잭션 모델과 관련된 각종 메시지 흐름의 타이밍을 도시하는 타이밍도.
<도면의 주요 부분에 대한 부호의 설명>
201 : 개시자
202 : 트랜잭션 관리자 TM1
211 : 원격 애플리케이션
212 : 트랜잭션 관리자 TM2
120: 네트워크
본 발명은 네트워크 기술에 관한 것으로, 특히 메시지 교환 프로토콜에 대한 확장을 협상하는 메카니즘에 관한 것이다.
컴퓨팅 기술은 우리가 일하고 즐기는 방식을 변화시켰다. 컴퓨팅 시스템들은 현재 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 PC, PDA, 가전 기기 등을 포함하여 다양한 형태를 취한다. 가장 기본적인 형태로, 컴퓨팅 시스템은 시스템 메모리 및 하나 이상의 프로세서를 포함한다. 시스템 메모리 내의 소프트웨어는 프로세서에 의해 실행되어 컴퓨터 시스템의 다른 하드웨어에게 원하는 기능들을 수행시킬 수 있다.
네트워킹 기술은 컴퓨팅 시스템들이 심지어 방대한 거리에 걸쳐 통신할 수 있게 하기 때문에 컴퓨터 기능을 확장시킨다. 예를 들어, 네트워킹 기술들은 이메일, 웹브라우징, 파일 전송, 인스턴스 메시징, 전자 화이트보딩(electronic whiteboarding), 네트워크 합작 등과 같은 애플리케이션들을 가능하게 한다. 따라서, 컴퓨터 네트워크는 폭넓은 통신 및 정보 액세스를 가능하게 한다.
종종 네트워크 통신 프로토콜은 특정 액티비티를 달성하는데 사용될 수 있는 메시지 교환의 패턴을 정의한다. 메시지 패턴은 단문 메시지의 일방향 송신처럼 간단할 수 있고, 또는 다수의 메시지 및 다수의 통신 노드를 수반하여 매우 복잡할 수 있다. 복잡성에 관계없이, 그러한 네트워크 통신 프로토콜들은 본원에서 "메시지 교환 프로토콜"로서 지칭될 것이다.
메시지 교환 프로토콜들은 교환될 메시지의 타입과 형태, 교환시 메시지들의 순서화, 특정 메시지 타입들을 송수신할 때의 특정 통신 노드의 역할 등에 관한 규칙들을 명백히 정의한다. 그러한 규칙들에도 불구하고, 메시지 교환 프로토콜들은 종종 기본 메시지 교환 프로토콜과 일관되지만 기본 프로토콜에 의해 명백히 정의되지 않는 추가의 규칙들이 정의되도록 허용한다. 이들 추가의 규칙들은 본원에서 기본 메시지 교환 프로토콜에 대한 "확장"으로 지칭될 수 있다.
보다 복잡한 메시지 교환 프로토콜의 예는 WS-Coordination(Web-Services Coordination) 및 WS-AT(Web Services Atomic Transactions)이고, 이들은 SOAP(Simple Object Access Protocol)_엔벨로프를 사용하여 "SOAP-터널링"으로 종종 지칭되는 것을 사용하여 심지어 전송 레벨 배리어들을 가로질러 메시지들을 잠재적으로 교환한다. 예를 들어, HTTP(HyperText Transport Protocol) 컴퓨팅 시스템은 HTTP 메시지 내의 SOAP 엔벨로프를 또 다른 HTTP 컴퓨팅 시스템에 송신할 수 있다. 그러나, 상기 방법에 따라, SOAP 엔벨로프는 예를 들어 MQ(Message Queues), SMTP(Simple Mail Transport Protocol), CORBA/IIOP 등과 같은 상이한 전송 프로토콜을 따르는 다른 메시지들에 배치될 수 있다. 따라서, SOAP 메시지는 비교적 전송 기술 독립적으로 여겨진다.
WS-Coordination은 분산 애플리케이션들의 작용들을 조정하는 프로토콜을 제공하기 위한 확장가능 프레임워크를 기술한다. 이러한 조정 프로토콜은 분산 액티비티의 결과에 대해 일관된 동의에 도달할 필요가 있는 애플리케이션들을 포함하여 다수의 애플리케이션을 지원하는데 사용된다. WS-Coordination은 애플리케이션 서비스가 다른 서비스에 액티비티를 전파시킬 필요가 있는 컨텍스트를 생성하고 조정 프로토콜들을 등록할 수 있게 한다. 프레임워크는 기존 트랜잭션 프로세싱, 워크플로우를 가능하게 하고, 다른 조정용 시스템이 독점 프로토콜들을 숨기고 이질적인 환경에서 동작하게 한다.
도 4a는 WS-Coordination이 사용될 수 있는 네트워크 환경(400)을 도시한다. 4개의 컴퓨팅 엔티티들이 예시된다: 개시자(401), 개시자(401)와 관련된 트랜잭션 관리자(402)(TM1이라고도 칭해짐), 원격 애플리케이션(411), 및 원격 애플리케이션(411)과 관련된 트랜잭션 관리자(412)(TM2라고도 칭해짐). 도 4b는 전형적인 WS-Coordination 메시지 교환 패턴에 따른 메시지 교환을 도시하는 타임라인 도면(420)을 도시한다.
개시자(401)는 개시자(401), 원격 애플리케이션(411), 및 그들 각각의 트랜잭션 관리자들(402, 412)의 협력 인터랙션을 요구하는 액티비티를 개시하는 것이다. 이를 위해, 개시자는 도 4b에서 화살표(421)로 표시한 바와 같이 CreatCoordinationContext 메시지를 트랜잭션 관리자 TM1로 전송한다. 이 메시지는 트랜잭션 관리자 TM1이 개시자에서의 요청 서비스를 적절히 어드레싱하기 위해 필요한 모든 어드레싱 정보를 포함하는 종점 레퍼런스를 포함할 수 있다. "종점 레퍼런스"는 WS-Addressing이라 불리우는 웹 서비스 프로토콜에 의해 정의된다.
응답시, 트랜잭션 관리자 TM1는 화살표(422)로 표시한 바와 같이 CreateCoordinationContextResponse를 개시자에게 전송한다. 응답(422)은 트랜잭션 관리자 TM1에 대한 조정 컨텍스트(도 4b에서 CC1으로 식별됨)라 칭해지는 것을 포함한다. 조정 컨텍스트 CC1은 컴퓨팅 엔티티가 그 액티비티에서 등록하기 위해 필요한 모든 정보를 포함한다. 응답은 또한 개시자가 트랜잭션 관리자 TM1에서의 등록 서비스를 어드레싱하기 위해 필요한 모든 어드레싱 정보를 포함하는 종점 레퍼런스를 포함할 수 있다.
개시자(401)는 조정 컨텍스트 CC1을 사용하여 Register 요청을 작성한 후, Register 요청을 화살표(423)로 표시한 바와 같이 트랜잭션 관리자 TM1로 전송한다. 이 Register 요청은 개시자(410)에서의 프로토콜 서비스에 대한 종점 레퍼런스를 포함한다. 개시자(401)를 액티비티로 등록하면, 트랜잭션 관리자 TM1 은 화살표(424)로 나타낸 바와 같이 개시자(401)에게 RegistrationResponse를 전송한다. 이 응답은 트랜잭션 관리자 TM1에서의 프로토콜 서비스에 대한 종점 레퍼런스를 포함한다. 따라서, RegistrationResponse를 수신하면, 개시자 및 트랜잭션 관리자 TM1는 프로토콜 레벨 메시지들을 교환할 수 있다.
분산 액티비티에 있어서, 개시자는 다른 원격 애플리케이션들(예를 들어, 도 4a 및 도 4b의 원격 애플리케이션(411)도 액티비티에 등록하기를 원할 수 있다. 따라서, 개시자(401)는 화살표(425)로 나타낸 바와 같이 트랜잭션 관리자 TM1을 위한 조정 컨텍스트 CC1을 임의의 그러한 원격 애플리케이션(411)에 송신한다. 간결함을 위해, 단지 하나의 원격 애플리케이션(411)이 액티비티에 포함되는 것으로 설명할 것이지만, WS-Coordination은 원격 애플리케이션(411)에 대해 설명된 것과 동일한 방식으로 다수의 원격 애플리케이션 등록을 허용한다.
그 후 원격 애플리케이션(411)은 화살표(426)로 표시된 바와 같이 CreateCoordinationContext 요청을 트랜잭션 관리자 TM2로 전송한다. 원격 애플리케이션은 또한 액티비티에 등록할 필요가 있는 조정 컨텍스트 CC1를 트랜잭션 관리자 TM1에게 공급한다. 이 요청은 원격 애플리케이션의 요청 서비스에 대한 종점 레퍼런스를 포함할 수 있다.
트랜잭션 관리자 TM2는 화살표(427)로 나타낸 바와 같이 CreateCoordinationContextResponse로 응답한다. 이 응답은 트랜잭션 관리자 TM2에게 등록할 필요가 있는 정보를 포함하는 또다른 조정 컨텍스트 CC2를 포함할 수 있다. 응답은 또한 트랜잭션 관리자 TM2 내의 등록 서비스에 대한 종점 레퍼런스 를 포함할 수 있다.
원격 애플리케이션(411)은 조정 컨텍스트 CC2를 사용하여 Register 요청을 작성한 후, 화살표(428)로 나타낸 바와 같이 Register 요청을 트랜잭션 관리자 TM2로 보낸다. 이러한 요청은 원격 애플리케이션(411) 상에 프로토콜 서비스에 대한 종점 레퍼런스를 포함할 수 있다.
원격 애플리케이션이 제1 트랜잭션 관리자 TM1에게 조정 컨텍스트 CC1을 제공했다고 인식하면, 제2 트랜잭션 관리자 TM2는 원격 애플리케이션을 대신하여 제1 트랜잭션 관리자 TM1에 등록한 것을 알고 있다. 제2 트랜잭션 관리자 TM2는 따라서 조정 컨텍스트 CC1를 사용하여 Register 요청을 작성한 후, Register 요청을 화살표(429)로 나타낸 바와 같이 제1 트랜잭션 관리자 TM1에게 전송한다. 이 요청은 트랜잭션 관리자 TM2에 의해 제공된 프로토콜 서비스에 대한 종점 레퍼런스를 포함한다.
제1 트랜잭션 관리자 TM1은 제2 트랜잭션 관리자를 액티비티에 등록한 후, 화살표(430)로 나타낸 바와 같이 RegistrationResponse 메시지를 제2 트랜잭션 관리자 TM2에 제공한다. RegistrationResponse 메시지는 트랜잭션 관리자 TM1에 의헤 제공된 프로토콜 서비스에 대한 종점 레퍼런스를 포함한다. 이 응답을 수신하면, 트랜잭션 관리자 TM1 및 TM2는 서로 포스트-등록 프로토콜 레벨 메시지들을 보낼 수 있다.
그 후 제2 트랜잭션 관리자 TM2는 화살표(431)로 나타낸 바와 같이 RegistrationResponse 메시지를 원격 애플리케이션에 보낸다. 이 응답은 트랜잭션 관리자 TM2에 의해 제공된 프로토콜 서비스에 대한 종점 레퍼런스를 포함한다. 이 응답을 수신하면, 트랜잭션 관리자 TM2 및 원격 애플리케이션(411)은 포스트-등록 프로토콜 레벨 메시지들을 서로 교환할 수 있다.
이러한 상호작용 후, 3개의 조정자/참가자 관계가 생성된다. 관계는 Register 요청을 송수신함으로써 정의된다. Register 요청을 보내는 컴퓨팅 엔티티는 관계에서 "참가자"이고, Register 요청을 수신하는 컴퓨팅 엔티티는 관계에서 "조정자"이다. 따라서, 하나의 관계에서, 개시자(401)는 참가자이고, 트랜잭션 관리자 TM1은 조정자이다. 제2 관계에서, 원격 애플리케이션(411)은 참가자이고, 트랜잭션 관리자 TM2는 조정자이다. 제3 관계에서, 트랜잭션 관리자 TM2는 참가자이고, 트랜잭션 관리자 TM1은 조정자이다. 이러한 제3의 관계는 가장 복잡한 상호작용을 포함하기 때문에 이제 제공될 WS-Atomic Transaction 요약의 초점이 될 것이다.
WS-Atomic Transaction은 지속 기간이 짧고 제한된 신뢰 도메인들 내에서 실행되는 액티비티들을 조정하기 위해 사용된다. 이들은 "전부 또는 무"의 속성을 갖기 때문에 원자 트랜잭션이라 불리운다. WS-Atomic Transaction은, 무엇보다도, 트랜잭션이 제1 상태에서 준비되고 제2 상태에서 커미트가 이어지도록 하는 2상태 커미트 프로토콜을 정의한다.
상기한 WS-Coordination 기반 메시징 교환 후에, 개시자(401) 및 원격 애플리케이션(411)은 특정 트랜잭션을 달성하는 다수의 애플리케이션 레벨 메시지 교환들에 관여할 수 있다. 양측이 메시지 교환 및 관련 프로세싱을 마치면, 개시자(401)는 트랜잭션 관리자 TM1에게 트랜잭션을 완성할 것을 요청할 것이다. 도 5는 트랜잭션을 완성하기 위해 2개의 트랜잭션 관리자들 TM1 및 TM2 사이에서 발생할 수 있는 2상태 커미트 메시지 교환을 나타내는 타임 도면(500)을 도시한다.
제1 트랜잭션 관리자 TM1는 우선 화살표(501)로 나타낸 바와 같이 준비 메시지를 제2 트랜잭션 관리자 TM2로 전송한다. 이 메시지를 수신하면, 트랜잭션 관리자 TM2는 적절한 명령에 따라 트랜잭션을 자동으로 커미트하기 위해 필요한 모든 프로세싱을 행한다. 그 후 트랜잭션 관리자 TM2는 준비된 메시지를 화살표(502)로 나타낸 바와 같이 제1 트랜잭션 관리자 TM1로 보내고 이에 따라 2상태 커미트 패턴의 제1 상태를 완료한다. 그 후 트랜잭션 관리자 TM2는 트랜잭션이 커미트될지 또는 중단될지를 트랜잭션 관리자 TM2가 알지 못한다는 것을 의미하는 미확정 상태(505)로 진입한다.
제1 트랜잭션 관리자 TM1이 트랜잭션을 커미트하기로 결정하면, 제1 트랜잭션 관리자 TM1은 화살표(504)로 나타낸 바와 같이 커미트 메시지를 제2 트랜잭션 관리자 TM2로 보낸다. 그 후 트랜잭션 관리자 TM2는 트랜잭션을 커미트하고, 커미트된 메시지를 제1 트랜잭션 관리자 TM1로 보냄으로써 트랜잭션이 완료되었음을 제1 트랜잭션 관리자 TM1에게 알린다.
WS-Coordination 및 WS-Atomic Transaction 설명서는, 임의 수의 분산 애플리케이션으로 하여금 등록을 하고 협력적으로 상호작용하게 하여 특정 액티비티들을 달성한다는 점에서 매우 강력하다. 또한, 액티비티는 트랜잭션으로서 달성될 수 있기 때문에 액티비티의 각종 당사자들 사이에서 상태 불일치를 피할 수 있다.
WS-Coordination 및 WS-Atomic Transaction이 강력하지만, 완전하지는 않다. WS-Coordination 및 WS-Atomic Transaction은 확장가능하지만, 프로토콜들에 대한 확장을 협상하여 기본 WS-Coordination 및 WS-Atomic Transaction 프로토콜들을 향상시키는 명시된 수단을 제공하지 않는다.
따라서, 메시지 교환 프로토콜들이 WS-Coordination 또는 WS-AT 등의 웹서비스 프로토콜을 포함하든, 또는 다른 메시지 교환 프로토콜을 포함하는지 간에, 유익한 것은 메시지 교환 프로토콜들에 대한 확장을 협상하는 메카니즘이다. 몇몇 컴퓨팅 엔티티들(특히, 분산 환경에서)은 본원에 기재된 확장 협상 절차를 이행할 수 있고 나머지는 아닐 수 있기 때문에, 기본 메시지 교환 프로토콜이 협상 메카니즘을 알지 못하는 하나 이상의 당사자들에게 대안으로서 사용될 수 있다면 더 유익할 것이다.
종래 기술이 갖는 상기 문제점들은 본 발명의 원리에 의해 극복되는데, 본 발명의 원리는, 2개의 컴퓨팅 엔티티들 사이에서 특정 메시지 교환에 참여하는 경우에 메시지 교환 프로토콜에 대한 확장들을 협상하는 메카니즘에 관한 것이다. 협상이 가능하지 않으면, 확장을 수행하지 않고 기본 메시지 교환 프로토콜이 사용된다. 따라서, 효과적인 확장 협상이 가능하면, 이들 확장과 관련된 성능, 효율, 또는 정확성이 향상될 수 있다. 한편, 협상이 가능하지 않으면, 컴퓨팅 엔티티들은 기본 메시지 교환 프로토콜을 사용하여 계속 통신할 수 있다. 일 실시예에서, WS-Coordination 또는 WS-AT 프로토콜에 대한 잠재적 확장이 존재할 수 있으나, 이 것은 요구되지 않는다.
2개의 컴퓨팅 엔티티들 중 하나(하나의 컴퓨팅 엔티티를 다른 것과 간단히 구별하기 위해 "제1" 컴퓨팅 엔티티라고 칭함)는, 제1 컴퓨팅 엔티티가 다른 컴퓨팅 엔티티("제2" 컴퓨팅 엔티티라고 칭함)와 메시지 교환시 통신하는 경우에 구현할 수 있는 하나 이상의 확장을 식별하는 하나 이상의 확장-식별 데이터 구조들을 작성한다. 이들 하나 이상의 확장-식별 데이터 구조들은 또한 본원에서 "제1의 하나 이상의 확장-식별 데이터 구조" 또는 "제1 확장-식별 데이터 구조(들)"로 지칭될 수 있다. 마찬가지로, 하나 이상의 확장은 본원에서 "하나 이상의 확장들의 제1 세트" 또는 "제1 확장(들)"로 지칭될 수 있다. 그리고 제1 컴퓨팅 엔티티는 제1 확장-식별 데이터 구조(들)을 포함하는 메시지(본원에서는 "제1 메시지"라고 칭함)를 작성한다. 제1 컴퓨팅 시스템은 이어서 제1 메시지를 제2 컴퓨팅 엔티티로 전송한다.
상기 제1 메시지를 수신했을 때, 제2 컴퓨팅 엔티티가 이 협상 절차를 지원하면, 제2 컴퓨팅 엔티티는 마찬가지로 제2 컴퓨팅 엔티티가 제1 컴퓨팅 엔티티와 메시지 교환시 통신하는 경우에 구현할 수 있는 하나 이상의 확장들을 식별하는 하나 이상의 확장-식별 데이터 구조들을 작성한다. 이들 하나 이상의 확장-식별 데이터 구조들은 또한 본원에서 짧게 "제2의 하나 이상의 확장-식별 데이터 구조" 또는 "제2 확장-식별 데이터 구조(들)"로 지칭될 수 있다. 마찬가지로, 하나 이상의 확장은 본원에서 "하나 이상의 확장들의 제2 세트" 또는 "제2 확장(들)"로 지칭될 수 있다. 제2 컴퓨팅 엔티티는 그 후 제2 확장-식별 데이터 구조(들)을 포함하는 제2 메시지를 작성하고 제2 메시지를 제1 컴퓨팅 엔티티에 보낸다.
제2 컴퓨팅 엔티티는 또한 제1 메시지로부터의 제2 확장-식별 데이터 구조(들)을 판독하고, 제1 컴퓨팅 엔티티에 의해 지원된 제1 확장(들) 및 제2 컴퓨팅 엔티티에 의해 지원된 제2 확장(들)에 기초하여 메시지 교환시 실제로 사용되는 하나 이상의 확장을 식별한다.
한편, 제2 메시지를 수신했을 때, 제1 컴퓨팅 엔티티는 제2 메시지로부터 제2 확장-식별 데이터 구조(들)을 판독하고, 제1 컴퓨팅 엔티티에 의해 지원된 제 확장(들) 및 제2 컴퓨팅 엔티티에 의해 지원된 제2 확장(들)에 기초하여 메시지 교환시 실제로 사용되는 하나 이상의 확장을 식별한다.
이에 의해, 2개의 컴퓨팅 엔티티들은 많은 다른 가능한 확장들을 협상함으로써(양 컴퓨팅 시스템들이 그러한 협상을 할 수 있는 경우), 메시지 교환 패턴의 구현을 향상시킬 수 있다. 한편, 제2 컴퓨팅 엔티티가 그러한 협상을 할 수 없다면, 컴퓨팅 엔티티들은 기본 메시지 교환 프로토콜을 사용하여 간단히 통신할 수 있다.
본 발명의 추가 특징 및 이점은 이어지는 설명에서 개시될 것이고, 부분적으로는 설명으로부터 명백해질 것이고, 또는 발명의 실시에 의해 학습될 수 있다. 본 발명의 특징 및 이점은 첨부된 특허청구범위에 특별히 지적된 수단들 및 조합들에 의해 실현 및 획득될 수 있다. 본 발명의 상기 및 다른 특징은 이하의 설명 및 청구범위로부터 보다 충분히 명백해질 것이고, 또는 이하에 개시된 발명의 실시에 의해 학습될 수 있다.
본 발명의 상기 및 다른 이점들 및 특징들을 획득할 수 있는 방법을 설명하기 위해, 첨부된 도면에 예시되어 있는 특정 실시예들을 참조하여, 간단히 상술된 발명에 대한 보다 구체적인 설명을 할 것이다. 이러한 도면들은 발명의 일반적인 실시예들만을 도시하기 때문에 범위가 제한되도록 여겨지지 않는다는 것을 이해한다면, 본 발명은 첨부 도면을 사용하여 추가로 한정적이고 상세하게 기술 및 설명될 것이다.
본 발명의 원리는, 분산 액티비티를 실현할 때 메시지 교환 프로토콜에 대한 확장이 사용되는지(및 어떤 확장이 사용되는지)를 협상하는 메카니즘에 관한 것이다. 메시지 교환시의 당사자들 중 하나가 확장 협상 메카니즘을 인식하지 못하면, 협상 메카니즘은 기본 메시지 교환 프로토콜로 되돌아간다. 협상되는 잠재적인 메시지 교환 프로토콜들은 예를 들어, 웹 서비스 조정(WS-Cordination) 또는 웹 서비스 원자 트랜잭션(WS-AT)에 대한 확장일 수 있다. 협상된 프로토콜 확장들은 성능을 향상시키기 위해 선택될 수 있고 기존 요구 및 능력에 맞추어질 수 있다. 또한, 트랜잭션 관리자는 상이한 트랜잭션들에 대해 상이한 확장들을 사용할 수 있다.
본 발명을 상세히 설명하기 전에, 본 발명의 원리를 구현하기 위해 사용될 수 있는 적합한 컴퓨팅 아키텍쳐가 우선 도 1을 참조하여 설명될 것이다. 그 후, 본 발명의 원리가 구현될 수 있는 적절한 네트워크 환경이 도 2를 참조하여 설명될 것이다. 본 발명의 원리에 따른 협상 메카니즘은 도 3a의 흐름도 및 도 2의 네트워크 환경을 참조하여 설명될 것이다. 마지막으로, 이러한 메카니즘을 사용하여 협상될 수 있는 기능들의 각종 예가 설명될 것이다.
이어지는 설명에서는, 다르게 표시되지 않는다면, 하나 이상의 컴퓨터에 의해 수행되는 동작들의 액트 및 상징적 표현을 참조하여 발명의 실시예들이 설명된다. 따라서, 그러한 액트 및 동작들(때로 컴퓨터로 실행되는 것으로서 참조됨)은 데이터를 조직화된 형태로 나타내는 전기 신호들을 컴퓨터의 프로세싱 유닛이 조작하는 것을 포함한다. 이러한 조작은 데이터를 변환하거나 컴퓨터의 메모리 시스템 내의 위치들에 데이터를 보유하며, 당업자들에 의해 잘 이해되도록 컴퓨터의 동작을 재구성하거나 아니면 변경한다. 데이터가 보유되는 데이터 구조들은 데이터 포맷에 의해 정의되는 특정 속성들을 갖는 메모리의 물리적 위치들이다. 그러나, 본 발명의 원리는 상기 문맥으로 설명되지만, 당업자들은 후술되는 여러 행위들 및 동작들도 하드웨어로 구현될 수 있다는 것을 이해할 것이므로 한정되도록 의도되지 않는다.
도면(유사한 요소에는 유사한 참조 부호를 적용함)을 참조하면, 본 발명의 원리는 적합한 컴퓨팅 환경으로 구현되는 것으로 도시된다. 이하의 설명은 발명의 예시된 실시예들에 기초하고 본원에 명백하게 설명되지 않은 대안의 실시예들과 관련하여 발명을 제한하는 것으로 여겨져서는 안된다.
도 1은 상기 장치들에 사용가능한 예시적인 컴퓨터 아키텍쳐의 개략도를 도시한다. 설명을 위해, 도시된 아키텍쳐는 적합한 환경의 단지 일례이고 본 발명의 사용 또는 기능 범위에 어떤 제한도 암시하도록 의도되지 않는다. 컴퓨팅 시스템은 도 1에 도시된 컴포넌트들의 어느 하나 또는 조합에 관한 임의의 종속성 또는 요구사항을 갖는 것으로 해석되어서는 안된다.
본 발명의 원리들은 다수의 기타 범용 또는 특수 목적의 컴퓨팅 또는 통신 환경들 또는 구성들에 의해 동작된다. 본 발명과 함께 사용되기에 적합한 공지된 컴퓨팅 시스템들, 환경들, 및 구성들의 예들은, 이동 전화기, 포켓 컴퓨터, 퍼스널 컴퓨터, 서버, 멀티프로세서 시스템, 마이크로프로세서 기반 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 및 상기 시스템 또는 장치의 임의의 것을 포함하는 분산 컴퓨팅 환경들을 포함하지만, 이에 제한되지 않는다.
가장 기본적인 구성에서는, 컴퓨팅 시스템(100)은 전형적으로 적어도 하나의 프로세싱 유닛(102) 및 메모리(104)를 포함한다. 메모리(104)는 휘발성(예를 들어, RAM), 불휘발성(예를 들어, ROM, 플래시 메모리 등), 또는 두가지의 몇몇 조합일 수 있다. 이러한 가장 기본적인 구성은 점선(106)에 의해 도 1에 도시되어 있다. 상세한 설명 및 특허청구범위에서, "컴퓨팅 시스템"은 임의의 하드웨어 컴포넌트 또는 기능을 수행하는 소프트웨어, 펌웨어 또는 마이크로코드를 실행할 수 있는 하드웨어 컴포넌트들의 조합으로 정의된다. 컴퓨팅 시스템은 분산 기능을 달성하기 위해 심지어 분산될 수도 있다.
저장 매체 디바이스들은 추가의 특징 및 기능을 가질 수 있다. 예를 들어, 그들은 PCMCIA 카드, 자기 및 광학 디스크, 및 자기 테이프를 포함하지만 이에 제한되지 않는 추가의 저장장치(제거가능 및 제거 불가능)를 포함할 수 있다. 이러한 추가의 저장 장치는 도 1에서 제거가능 저장장치(108) 및 제거 불가능 저장장치(110)로 도시되어 있다. 컴퓨터 저장 매체는 컴퓨터-판독가능 명령어, 데이터 구 조, 프로그램 모듈, 또는 기타 데이터 등의 정보를 저장하기 위한 임의의 방법 또는 기술로 구현된 휘발성 및 불휘발성, 제거가능 및 제거 불가능 매체를 포함한다. 메모리(104), 제거가능 저장장치(108), 및 제거 불가능 저장 장치(110)는 모두 컴퓨터 저장 매체의 예이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리, 다른 메모리 기술, CD-ROM, DVD, 다른 광학 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치, 다른 자기 저장 장치, 및 컴퓨팅 시스템에 의해 액세스될 수 있고 원하는 정보를 저장하기 위해 사용될 수 있는 임의의 다른 매체를 포함하나, 이에 제한되지 않는다.
본원에 사용된 바와 같이, 용어 "모듈" 또는 "컴포넌트"는 컴퓨팅 시스템에서 실행되는 소프트웨어 오브젝트 또는 루틴을 지칭할 수 있다. 본원에 기재된 상이한 컴포넌트, 모듈, 엔진, 및 서비스는 컴퓨팅 시스템에서 실행되는 오브젝트 또는 프로세스로서(예를 들어, 개별 스레드로서) 구현될 수 있다. 본원에 기재된 시스템 및 방법은 소프트웨어로 구현되는 것이 바람직하지만, 소프트웨어와 하드웨어 또는 하드웨어로의 구현도 가능하고 고려된다.
컴퓨팅 시스템(100)은 또한 호스트가 예를 들어 네트워크(102)를 통해 다른 시스템들 및 디바이스들과 통신하게 하는 통신 채널(112)을 포함할 수 있다. 통신 채널(112)은 통신 매체의 예이다. 통신 매체는 전형적으로 컴퓨터-판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 반송파나 기타 전송 메카니즘과 같은 변조 데이터 신호에서의 기타 데이터를 구현하며, 임의의 정보-전달 매체를 포함한다. 예로서, 한정되지는 않지만, 통신 매체는 유선 네트워크 및 직접 유선 접속 등의 유선 매체, 및 음향, 무선, 적외선, 및 기타 무선 매체 등의 무선 매체를 포함한다. 본원에서 사용된 용어인 컴퓨터 판독가능 매체는 저장매체 및 통신매체 모두를 포함한다.
컴퓨팅 시스템(100)은 또한 키보드, 마우스, 펜, 음성 입력 컴포넌트, 터치 입력 디바이스 등과 같은 입력 컴포넌트(114)를 가질 수 있다. 출력 컴포넌트(116)는 스크린 디스플레이, 스피커, 프린터 등과 그들을 구동하기 위한 렌더링 모듈(종종 "어댑터"라고 칭함)을 포함한다. 컴퓨팅 시스템(110)은 전원(118)을 갖는다. 모든 이러한 컴포넌트들은 공지되어 있고 여기서 길게 설명할 필요는 없다.
도 2는 전송 기술 독립적인 조정 프로토콜에 의해 조정된 분산 액티비티를 개시하는 개시자 컴퓨팅 엔티티(201), 개시자(201)와 관련된 제1 트랜잭션 관리자(202), 분산 액티비티에 참여하는 원격 애플리케이션 컴퓨팅 엔티티(211), 및 원격 애플리케이션(211)과 관련된 제2 트랜잭션 관리자(212)를 포함한다. 이러한 환경은 WS-Coordination 및 WS-AT에 특별히 적용가능하지만, 본 발명의 원리는 이러한 특별한 메시지 교환 프로토콜에 한정되지 않는다. 도 2의 네트워크 환경(200)은 "종래 기술"로 표기되어 있는 도 4a의 종래 네트워크 환경(400)과 유사하다. 그러나, 도 2는 각종 컴퓨터 엔티티(201, 202, 211, 212)가 본 발명의 원리를 수행하기 위해 변경되고 이에 따라 종래의 컴퓨팅 엔티티들이 아니기 때문에, "종래 기술"로서 지칭되지 않는다.
이러한 설명 및 특허청구범위에서, "컴퓨팅 엔티티"는 컴퓨팅 시스템 상에서 운영되는 컴포넌트(들) 또는 소프트웨어 컴포넌트 또는 임의의 컴퓨팅 시스템으로 서 정의된다. "컴퓨팅 시스템"은 임의의 하드웨어 컴포넌트 또는 소프트웨어를 실행할 수 있는 하드웨어 컴포넌트의 조합으로서 정의된다. 컴퓨팅 시스템은 본원에 넓게 정의된 컴퓨팅 시스템의 정의 내에 있는 다수의 컴퓨팅 시스템들을 포함할 수 있는 경우에 분산될 수 있다. 컴퓨팅 시스템의 예는 도 1에 대하여 설명되었다. 그러나, 본원에 개시된 컴퓨팅 시스템의 정의는 결코 한정되지 않는다. 도 2를 참조하면, 컴퓨팅 엔티티들 중 어느 하나 또는 조합(또는 심지어 모두)은 단일 컴퓨팅 시스템 상에서 운영될 수 있다. 그러나, 하나의 가능한 네트워크 환경에서, 개시자 컴퓨팅 엔티티(201) 및 트랜잭션 관리자 컴퓨팅 엔티티(202)는 컴퓨팅 시스템 상에서 운영되는 반면 원격 애플리케이션 컴퓨팅 엔티티(211) 및 트랜잭션 관리자 컴퓨팅 엔티티(212)는 또 다른 컴퓨팅 시스템 상에서 운영된다.
도 2에 대하여 도시된 각종 컴퓨팅 엔티티(201, 202, 211, 212)는 예를 들어 상술된 WS-Coordination 및 WS-AT 등의 종래의 전송 기술 독립적인 조정 및 트랜잭션 프로토콜을 따를 수 있다. 본원에서 사용된 바와 같이, 용어 "WS-Coordination"은 2004년 11월에 마이크로소프트사에 의해 공개된 웹서비스 조정(WS_Coordination) 설명서에 언급되어 있다. 본원에서 사용된 바와 같이, 용어 "WS-Atomic Transaction", "WS-AtomicTransaction", WS-AT"는 2004년 11월에 마이크로소프트사에 의해 공개된 웹서비스 원자 트랜잭션(WS-AtomicTransaction) 설명서에 언급되어 있다.
그러나, 도 2의 각종 컴퓨팅 엔티티들(201, 202, 211, 212)은 예를 들어, WS-Coordination, 및 WS-AT 등의 기본 메시지 교환 프로토콜을 사용하여 통신할 수 있을 뿐만 아니라, 상기 기본 메시지 교환 프로토콜에 대한 하나 이상의 확장을 구현할 수도 있다. 개시자(201)가 분산 액티비티에 등록함과 동시에 또는 등록하기 전에, 개시자(201) 및 트랜잭션 관리자(202)는 분산 액티비티를 달성하는데 사용한 적절한 WS-Coordination 및 WS-AT의 확장을 협상할 수 있다.
도 3은 본 발명의 원리에 따라 개시자(201) 및 트랜잭션 관리자(202)가 메시지 교환 프로토콜에 대한 확장을 협상하는 방법(300)의 흐름도를 도시한다. 개시자(201)에 의해 수행되는 액트들은 "개시자"라는 표제 하에서 도 3의 좌측 컬럼에 나열되어 있다. 트랜잭션 관리자(202)에 의해 수행된 액트들은 "트랜잭션 관리자"라는 표제 하에서 도 3의 우측 컬럼에 나열되어 있다. 그러나, 본 발명의 원리는 WS-Coordination 및 WS-AT에 대한 확장의 협상 이상으로 확장하지만, 임의의 확장가능 메시지 교환 프로토콜에 대한 확장들의 협상에 적용된다. 따라서, 이러한 일반성을 증명하기 위해, 개시자는 보다 일반적으로 "제1 컴퓨팅 엔티티"로 지칭될 수 있고, 트랜잭션 관리자는 대신 "제2 컴퓨팅 엔티티"로서 지칭될 수 있다. 이제 설명되는 바와 같이, 이러한 협상 절차는 컴퓨팅 엔티티들 중 하나가 확장을 협상할 수 없다면 확장 없이 기본 메시지 교환 프로토콜로 되돌아간다. 따라서, 분산 액티비티는 확장이 사용되지 않는 경우에도 계속 달성될 수 있다.
도 3에 도시된 방법(300)에 이어, 개시자(201)(본원에서는 일반성을 위해 "제1 컴퓨팅 엔티티"로도 지칭됨)는 우선 제1 컴퓨팅 엔티티가 제2 컴퓨팅 엔티티와 메시지 교환 패턴으로 통신할 때 구현할 수 있는 하나 이상의 확장(또한, 본원에서는 "하나 이상의 확장들의 제1 세트" 또는 "제1 확장(들)"로 지칭됨)을 식별하는 정보를 포함하는 하나 이상의 확장-식별 데이터 구조(또한, 본원에서는 "제1의 하나 이상의 확장-식별 데이터 구조들 또는 짧게 "제1 확장-식별 데이터 구조(들)로 지칭됨)를 작성한다(도 3a에서의 단계 301). 제1 확장 식별 데이터 구조(들)의 표시는 도 3b의 컴포넌트(300B)로 도시되어 있다. "확장-식별" 데이터 구조는 단지 (제2 컴퓨팅 엔티티가 확장을 협상하도록 구성된 경우) 제1 컴퓨팅 엔티티가 사용할 수 있는 확장을 제2 컴퓨팅 엔티티가 해석할 수 있도록 충분한 정보를 포함하는 임의의 데이터 구조이다. 이 해석은 제1 메시지에서 식별된 확장들에 기초하거나 및/또는 제2 컴퓨팅 시스템에 이미 알려진 정보에 기초할 수 있다. 이 데이터 구조(들)의 정확한 물리적 구조는 본 발명에 원리에 중요하지 않다.
그 후 제1 컴퓨팅 엔티티는 제1의 하나 이상의 확장-식별 데이터 구조(들)를 포함하는 제1 메시지를 작성한다(단계 302). 이러한 제1 메시지의 예시적인 데이터 구조는 도 3c에서 제1 메시지(300C)로 도시되고, 이는 제1 확장-식별 데이터 구조(들)(300B)를 포함하는 것으로 개략적으로 도시된다. 제1 컴퓨팅 엔티티가 개시자(201)이고 제2 컴퓨팅 엔티티가 도 2의 트랜잭션 관리자(202)인 일 실시예에서, 이러한 제1 메시지는 개시자가 분산 액티비티를 개시하는 WS-Coordination 프로토콜에 의해 정의된 CreateCoordinationContext 요청이지만, WS-Coordination 설명서에 의해 정의되지 않은 제1 확장-식별 데이터 구조(들)이 추가된다. 메시지는 또한 WS-Coordination 프로토콜에 의해 정의된 Register 요청 또는 CreateCoordinationContextResponse일 수 있다. 또 다른 실시예에서, 이러한 메시지는 분산 액티비티에 앞서서 생성되고, WS-Coordination에 의해 제어되는 임의의 메시지 교환으로부터 대역외로 획득될 수 있다.
그 후 제1 컴퓨팅 엔티티는 제1 메시지를 제2 컴퓨팅 시스템에 제공하고(단계 303), 제2 컴퓨팅 엔티티는 제1 메시지를 수신한다(단계 311). 제1 컴퓨팅 엔티티 및 제2 컴퓨팅 엔티티가 상이한 컴퓨터들에 배치되었으면, 이것은 메시징이나 원격 함수 호출을 통해 달성될 수 있다. 제1 및 제2 컴퓨팅 엔티티들이 동일한 컴퓨터에 배치되어 있으면, 이것은 API(Application Program Interface)를 통해 부가적으로 달성될 수 있다.
제2 컴퓨팅 엔티티가 본 발명의 원리에 따라 메시지 교환 프로토콜 확장을 협상할 수 있으면, 제2 컴퓨팅 엔티티는 제1 메시지로부터의 제1 확장-식별 데이터 구조(들)를 판독하고(단계 312), 그 후 제2 컴퓨팅 엔티티(또한 본원에서는 "하나 이상의 확장들의 제2 세트" 또는 간단히 "제2 확장(들)"이라 지칭함)에 의해 구현되는(그리고 기꺼이 제공되는) 것이 가능한 확장들 뿐만 아니라 제1 확장(들)에 기초하여 메시지 교환시 실제로 사용될 하나 이상의 확장들을 식별할 수 있다(단계 313).
제1 및 제2 컴퓨팅 엔티티는 이러한 결정을 할 때 특정한 규칙 세트를 따를 수 있다. 예를 들어, 제1 확장(들)이 제2 컴퓨팅 엔티티가 지원하는 프로토콜보다 나중 버전에 관한 것이면, 트랜잭션 관리자는 제2 컴퓨팅 엔티티가 지원하는 프로토콜의 최신 버전으로 복귀할 수 있다. 한편, 제1 확장(들)이 제2 컴퓨팅 시스템이 지원하는 프로토콜보다 이전 버전에 관한 것이면, 제2 컴퓨팅 시스템은 단지 프로토콜의 이전 버전과 관련된 확장들을 사용할 수 있다.
또는, 제2 컴퓨팅 엔티티는 사용될 실제 확장들이 제1의 하나 이상의 확장들 중 제2 컴퓨팅 엔티티에 의해 지원되는 확장들만을 포함할지를 결정할 수 있다. 제2 컴퓨팅 엔티티는 제1 컴퓨팅 엔티티가 원하는 특정 확장들을 어떤 이유로 부정할 수도 있지만, 제2 컴퓨팅 엔티티는 이러한 확장들을 지원할 수 있다.
제2 컴퓨팅 엔티티는 제2 컴퓨팅 엔티티(또한 본원에서는 "제2의 하나 이상의 확장-식별 데이터 구조들" 또는 "제2 확장-식별 데이터 구조(들)"로 지칭함)에 의해 지원되는 메시지 교환 프로토콜의 확장들을 식별하는 정보를 포함하는 하나 이상의 확장-식별 데이터 구조들을 작성한다(단계 314). 제2 확장-식별 데이터 구조(들)의 표시는 도 3d의 컴포넌트(300D)로서 도시된다. "제2의 하나 이상의 확장-식별 데이터 구조들"은 단지 제2 컴퓨팅 엔티티에 의해 기꺼이 제공되고 지원되는 확장들을 제1 컴퓨팅 시스템이 해석할 수 있도록 충분한 정보를 포함하는 임의의 데이터 구조이다. 이러한 해석은 제2 확장-식별 데이터 구조(들) 내의 정보, 또는 제1 컴퓨팅 엔티티에게 이미 알려진 정보에 기초할 수 있다. 이러한 데이터 구조(들)의 정확한 물리적 구조는 본 발명의 원리에 중요하지 않다.
그 후 제2 컴퓨팅 엔티티는 제2 확장-식별 데이터 구조(들)를 포함하는 제2 메시지를 작성한다(단계 315). 이러한 제2 메시지의 데이터 구조예는 도 3e에 제2 메시지(300E)로서 도시되고 이것은 제2 확장-식별 데이터 구조(들)(300D)를 포함하는 것으로 개략적으로 도시되어 있다. 제1 컴퓨팅 엔티티가 도 2의 개시자(201)이고 제2 컴퓨팅 엔티티가 도 2의 트랜잭션 관리자(202)인 일 실시예에서는, 이러한 메시지는 트랜잭션 관리자가 개시자에 의해 제공된 CreateCoordinationContext 요 청에 응답하는 WS-Coordination 프로토콜에 의해 정의된CreateCoordinationContextResponse이지만, WS-Coordination 설명서에 의해 정의되지 않은 제2의 확장-식별 데이터 구조(들)가 부가된다. 또 다른 실시예에서는, 이러한 제2 메시지는 분산 액티비티에 앞서서 잘 생성되고, WS-Coordination에 의해 제어되는 임의의 메시지 교환으로부터 대역외로 획득될 수 있다.
그 후 제2 컴퓨팅 엔티티는 제1 컴퓨팅 엔티티에게 제2 메시지를 제공하고(단계 316), 제1 컴퓨팅 엔티티는 제2 메시지를 수신한다(단계 304).
제1 컴퓨팅 엔티티는 제2 메시지로부터의 제2 확장-식별 데이터 구조(들)을 판독하고(단계 305), 그 후 제1 컴퓨팅 엔티티에 의해 지원되는 제1 확장(들) 및 제2 컴퓨팅 엔티티에 의해 지원되는 제2 확장(들)에 기초하여 실제 사용될 확장들을 식별한다(단계 306).
따라서, 제2 컴퓨팅 엔티티가 본 발명의 원리에 따라 메시지 교환 프로토콜 확장(들)을 협상할 수 있으면, 제1 및 제2 컴퓨팅 엔티티들은 메시지 교환 프로토콜에 대한 하나 이상의 확장들에 동의하고 이를 사용함으로써 메시지 교환 능력을 확장시킨다. 한편, 제2 컴퓨팅 엔티티가 본 발명의 원리에 따라 확장들을 협상할 수 없는 경우, 제2 컴퓨팅 엔티티는 단지 제1 확장-식별 데이터 구조(들)을 무시하고 단지 제2 확장-식별 데이터 구조들을 포함하지 않는 제1 메시지에 응답한다. 그 후 제1 컴퓨팅 엔티티는 그러한 제2 확장-식별 데이터 구조(들)의 부재가 제2 컴퓨팅 엔티티가 전혀 확장을 지원하지 않음을 의미하는 것으로 해석할 수 있기 때문에, 제1 컴퓨팅 엔티티는 단지 확장 없이 기본 메시지 교환 프로토콜로 되돌아갈 것이다. 따라서, 메시지 교환에 대한 모든 당사자들이 메시지 교환 프로토콜에 대한 확장들을 협상할 수는 없을지라도 메시지 교환은 일정 수준으로 가능하게 된다. 종점 레퍼런스의 확장-식별 데이터 구조(들)를 제공함으로써, 제2 컴퓨팅 시스템은, 제2 컴퓨팅 엔티티가 데이터 구조들을 해석할 수 없는 경우에 상기 데이터 구조들을 정당하게 무시할 수 있다. 이 경우, 제2 컴퓨팅 엔티티는 기본 메시지 교환 프로토콜을 사용하여 제1 컴퓨팅 엔티티와 계속 상호작용할 수 있다.
일 실시예에서, 협상된 확장들은 성능, 정확도 및 상호동작성의 향상을 허용하는, WS-Coordination 및 WS-AtomicTransaction에 대한 관습적이지 않은 확장들이다. 그 경우, 도 3a에 대하여 설명된 제1 컴퓨팅 엔티티는 개시자(201)일 수 있고, 도 3a에 대하여 설명된 제2 컴퓨팅 엔티티는 트랜잭션 관리자(202)일 수 있다. 이 경우, 참가자-조정자 관계가 WS-Coordination 프로토콜에 의해 정의된 대로 설정될 때마다, 참가자 및 조정자는 WS-Coordination 또는 WS-AT에 대한 상이한 확장들을 협상할 수 있다. 이에 의해, 다양한 당사자가 컴퓨팅 엔티티들 사이의 링크 및 능력에 적합한 상이한 방식으로 메시지 교환 프로토콜을 최적화할 수 있다. WS-Coordination 및 WS-AT에 대한 이들 확장의 여러 예들이 이제 설명될 것이다.
확장 #1
WS-Coordination은 개시자와 그것의 트랜잭션 관리자 사이의 분산 액티비티들을 우선 설정하기 위해 2가지의 라운드 트립을 특정한다. 특히, 개시자는 트랜잭션 관리자에서 CreateCoordinationContext 요청을 송신한다. 그 후 트랜잭션 관리자는 개시자에게 CreateCoordinationContextResponse를 송신한다. 이러한 제1 라운드 트립은 트랜잭션의 확립을 실현한다. 그 후 개시자는 트랜잭션 관리자에게 Register 요청을 송신한다. 그 후 트랜잭션 관리자는 개시자에게 RegistrationResponse를 리턴한다. 이 제2 라운드 트립은 개시자가 트랜잭션에서 특정 역할을 가지는 것으로서 등록한다. 상기 2가지 라운드 트립은 상당한 시간이 걸릴 수 있다.
도 3에 대하여 상술된 방법을 사용하여 협상될 수 있는 WS-Coordination의 한 확장에 따르면, 개시자 및 트랜잭션 관리자는 이러한 메시지 교환을 단지 하나의 라운드 트립으로 감소시킬 수 있다. 특히, 개시자는 CreateCoordinationContext 요청 내에 대신 (통상적으로 Register 메시지 내에 포함되는) 등록 정보를 포함할 것이다. 마찬가지로, 트랜잭션 관리자는 CreateCoordinationContextResponse 메시지 내에 대신 (통상적으로 RegistrationResponse 내에 포함되는) 등록 응답 정보를 포함할 수 있다. 이것은 분산 액티비티에 등록할 때 대기시간을 현저히 감소시킬 것이다.
확장 #2
제2 확장예에서, WS-AT에 의해 특정된 종래의 2단계 준비 커미트 트랜잭션과 관련된 2개의 라운트 트립(도 5의 메시지 흐름 참조)은 대신 하나의 라운드 트립으로 감소될 수 있다. 도 5를 참조하면, 트랜잭션 관리자 TM2는 종래에 트랜잭션 관리자 TM2가 준비 메시지를 수신하는 시간부터 트랜잭션 TM2가 커미트 메시지를 수신하는 시간까지 미확정(in-doubt) 상태(505)로 진입한다.
그러나, 몇몇 경우에, 트랜잭션 관리자 TM2는 실제로 트랜잭션 결과에 관심 을 가지는 트랜잭션의 유일한 당사자가 될 수 있다. 예를 들어, 아마도 트랜잭션 관리자 TM2와 관련된 원격 애플리케이션은 개시자 이외의 트랜잭션의 유일한 당사자이다. 그 경우, 제2 확장예는 도 3에 대하여 설명된 방법에 따라 협상될 수 있다.
제2 확장예에서, 준비 메시지(501)(또는 본원에서 SinglePhaseCommit 메시지로 지칭되는 몇몇 다른 메시지)는 트랜잭션을 커미트할지 또는 트랜잭션을 중단할지에 대한 판단이 위임되는 것으로 트랜잭션 관리자 TM2에 의해 해석된다. 트랜잭션 관리자 TM2는 그것이 트랜잭션 관리자 TM1에 대한 트랜잭션을 커미트했는지 또는 중단했는지를 보고할 수 있다. 그러나, 그 이외에, 트랜잭션 관리자 TM1은 트랜잭션에 의해 수행될 것이다. 제2 트랜잭션 관리자 TM2는 TM1으로부터의 커미트 메시지를 기대하지 않을 것이다. 또한, 트랜잭션을 커미트할지 또는 중단할지를 내부적으로 결정하기 위해 트랜잭션 관리자 TM2로부터 취해진 시간 이외는, 트랜잭션 관리자 TM2는 중요한 미확정 상태로 진입하지 않을 것이다. 미확정 상태가 제거되거나 적어도 단축되기 때문에, 트랜잭션 성능이 향상된다.
확장 #3
제3 확장예는 조정자(예를 들어, 제1 트랜잭션 관리자 TM1)가 트랜잭션을 커미트할지 또는 중단할지를 결정할 책임을, 상술된 확장 #2에 나타낸 바와 같이 참가자(예를 들어, 제2 트랜잭션 관리자 TM2)에게 위임한 경우이다. 확장 #2에 대해 전술한 바와 같이, 이것은 SinglePhaseCommit 메시지를 사용하여 달성될 수 있다. 이러한 제3 확장예에서, 참가자(예를 들어, 제2 트랜잭션 관리자 TM2)는 InDoubt 메시지 등을 사용하여 SinglePhaseCommit 메시지에 응답함으로써, 트랜잭션이 커미트 또는 중단되었는지에 대하여 제1 트랜잭션 TM1이 미확정 상태라는 것을 제1 트랜잭션 관리자 TM1에게 나타낼 수 있다. 예를 들어, 제2 트랜잭션 관리자 TM2가 트랜잭션을 커미트할지 또는 중단할지에 대한 결정을 또 다른 컴퓨팅 엔티티에게 추가로 위임하고, 제2 트랜잭션 관리자 TM2가 트랜잭션을 커미트할지 또는 중단할지에 관하여 제3자로부터의 표시를 수신하지 않는다고 가정하면, 제2 트랜잭션 관리자 TM2는 얼마 후에 InDoubt 메시지를 제1 트랜잭션 관리자 TM1에게 전달할 수 있다.
확장 #4
제2 트랜잭션 관리자 TM2가 트랜잭션에 관한 상태 정보에 대한 트랙을 어떻게 해서든지 소실하거나, 트랜잭션이 커미트되었는지 또는 중단되었는지에 관한 트랙을 소실하면, 제2 트랜잭션 관리자 TM2는 Replay 메시지를 제1 트랜잭션 관리자 TM1에게 전송함으로써 종래의 WS-AT 프로토콜을 따를 수 있다. 그 후 트랙이 오픈되었다면 제1 트랜잭션 관리자 TM1은 트랜잭션에 대한 임의의 상태 정보를 제공할 수 있거나, 트랜잭션이 프로세스 중이 아니었다면 트랜잭션이 커미트되었는지 또는 중단되었는지에 대한 결정을 제공할 수 있다.
그러나, 이러한 종래의 Replay 메시지는 단지 하나의 트랜잭션 식별을 허용한다. 제2 트랜잭션 관리자 TM2가 재생할 필요가 있는 많은 상이한 트랜잭션들이 있다면, 재생 메시지는 각 트랜잭션에 대해 송신될 것이다. 제4 확장예는 단일 재생 메시지로 하여금 하나 이상의 트랜잭션 식별을 포함하게 한다. 제1 트랜잭션 관리자 TM1은 그 후 각 트랜잭션에 대한 적합한 상태 또는 상태 정보를 송신할 것이다. 재생 메시지는 심지어 특정 시간 주기 내에 오픈된 모든 트랜잭션들에 대해 재상이 요망되는 것을 나타낼 수 있다. 이러한 확장은 복구 동안 성능을 향상시키는데, 특히 잠재적으로 다수의 동시 트랜잭션이 있는 경우에 그렇다.
확장 #5
제5 확장예는 CreateCoordinationContext 메시지에 포함될 수 있는 정보를 보충한다. 메시지는 트랜잭션에 유용한 임의의 정보를 포함하도록 확장될 수 있다. 예를 들어, CreateCoordinationContext 메시지는 관리자들이 트랜잭션에 관한 정보에 액세스할 수 있는 인간-판독가능한 정보를 포함할 수 있다. CreateCoordinationContext는 또한 리소스 관리자(예를 들어 데이터베이스)가 리소스를 로킹하는 방법과 다수의 트랜잭션이 그들의 리소스에 동시에 액세스할 때 리소스가 반응하는 방법을 나타내는 분리 레벨 파라미터를 포함할 수 있다.
이러한 확장은 또한 그러한 트랜잭션-특정 정보가 CoordinationContext 오브젝트 내에 포함되게 할 수도 있다. 이것은 CoordinationContext 오브젝트를 정상적으로 해석할 수 있는 임의의 컴퓨팅 엔티티가 트랜잭션 특정 정보에도 액세스할 수 있게 할 것이다.
이러한 트랜잭션 특정 정보는 심지어 컴퓨팅 엔티티로 하여금 WS-AT 이외의 트랜잭션 프로토콜에 의해 제어되는 트랜잭션에 등록할 수 있게 하는 메카니즘 또는 바인딩을 포함할 수 있다. 이러한 바인딩은, 예를 들어, OleTx 또는 TIP를 포함할 수 있다. CoordinationContext 오브젝트의 수령인은 그 후 CoordinationContext 오브젝트에 제공된 바인딩을 사용하여 트랜잭션에 등록할 뿐만 아니라, 트랜잭션을 달성하는데 사용될 트랜잭션 프로토콜을 선택할 수 있다.
확장 #6
또 다른 확장은 종점 레퍼런스 내의 컨텍스트 정보가, 트랜잭션을 적절히 결론지었는지(예를 들어 커미트하거나 중단하는 것을 통해)와 관련된 정보와 함께, 현재 트랜잭션의 식별 및/또는 프로세스 중인 다른 트랜잭션들의 식별과 같은 추가 정보를 포함하도록 허용한다. 종점 레퍼런스는 WS-Addressing 설명서에 의해 정의되고, WS-Coordination 프로토콜에 의해 정의되는 CreateCoordinationContextResponse, Register 및 RegistrationResponse 메시지의 전체에 포함된다. 이 정보는 참가자 또는 조정자로 하여금 트랜잭션에 관한 "기억 상실(amnesia)"을 검출할 수 있게 한다.
심지어 가장 신뢰성있는 컴퓨팅 엔티티들도 트랜잭션의 트랙을 소실할 수 있는 가능성이 항상 존재한다. 기억 상실을 검출하기 위해, 장래 기억 상실의 검출을 원하는 컴퓨팅 엔티티는 트랜잭션에 관한 정보를 WS-Addressing에 의해 정의된 종점 레퍼런스에 저장된 ReferenceParameters 오브젝트에 삽입할 수 있다. 이 상태 정보는 트랜잭션을 포함하는 장래의 통신시 ReplyTo 헤더의 컴퓨팅 엔티티로 리턴될 것이다. 그 후 컴퓨팅 엔티티는 이 정보를 사용하여 컴퓨팅 엔티티가 트랜잭션을 인식하는지의 여부, 및 컴퓨팅 엔티티가 트랜잭션을 인식하지 않으면, 인식하지 못하는 것이 트랜잭션의 적절한 결론에 의한 것인지 또는 프로세스 중인 트랜잭션의 원치않는 간과(예를 들어, 기억 상실)에 의한 것인지를 식별한다. 기억 상실 이 발생하면, 컴퓨팅 엔티티는 예를 들어 기억 상실한 사용자 또는 관리자에게 통지하는 등의 적절한 복구 조치를 수행할 수 있다.
확장 #7
또 다른 확장은, WS-AT에 의해 현재 제어되지 않는 트랜잭션에 식별자를 제공함으로써 CoordinationContext를 생성하는 것을 허용한다. 예를 들어, 프로세스 중에 기존의 OleTx 트랜잭션이 있다고 가정하자. 이제 트랜잭션의 참가자가 WS-AT를 사용하여 트랜잭션을 확장하고자 한다고 가정한다. 그렇게 하기 위해, 참가자는 다른 원하는 참가자들에게 전달할 CoordinationContext 오브젝트를 필요로 한다. 참가자는 그러한 CoordinationContext 오브젝트에 대한 요청(선택적으로 CreateCoordinationContext 요청일 수 있음)을 생성할 수 있다. CoordinationContext 오브젝트가 리턴되면, 트랜잭션에 참가할 임의의 원격 애플리케이션으로 전달된다. 다른 참가자들은 그 후 CoordinationContext 오브젝트를 사용하여 트랜잭션에 등록할 수 있다.
따라서, 본 발명의 원리는 분산 액티비티를 달성하기 위해 사용되는 전송 기술 독립적인 조정 프로토콜의 효과적인 협상을 가능하게 한다. 본 발명의 원리는 또한 성능, 정확성, 및 상호작용성을 향상시키는 기존 WS-Coordination 및 WS-AT 프로토콜에 대한 몇몇 유리한 확장을 제공한다.
본 발명은 그 정신 또는 본질적인 특징에서 벗어나지 않고 다른 특정 형태로 실시될 수 있다. 설명된 실시예들은 모든 면에서 단지 예시적이고 제한적이지 않는 것으로 여겨져야 한다. 따라서, 본 발명의 범위는 상기 설명에 의해서라기 보 다는 첨부된 특허청구범위에 의해 지시된다. 특허청구범위의 등가물의 의미 및 범위 내에 있는 모든 변화는 그들 범위 내에서 포함되어야 한다.
본 발명에 의하면, 분산 액티비티를 실현할 때 메시지 교환 프로토콜에 대한 확장이 사용되는지(및 어떤 확장이 사용되는지)를 협상하는 메카니즘이 제공된다.

Claims (21)

  1. 확장 가능한 메시지 교환 프로토콜을 사용하여 서로 통신할 수 있는 제1 컴퓨팅 엔티티 및 제2 컴퓨팅 엔티티를 포함하는 환경을 위한 방법으로서 - 상기 방법은 상기 제1 컴퓨팅 엔티티가 상기 제2 컴퓨팅 엔티티와 메시지 교환을 사용하여 통신할 때 사용될 상기 메시지 교환 프로토콜에 대한 하나 이상의 확장들을 협상하기 위한 것임 -,
    상기 제1 컴퓨팅 엔티티가, 상기 제1 컴퓨팅 엔티티가 상기 제2 컴퓨팅 엔티티와 메시지 교환 패턴으로 통신할 때 구현할 수 있는 하나 이상의 확장들의 제1 세트를 식별하는 제1의 하나 이상의 확장-식별 데이터 구조(extension-identifying data structures)를 작성하는 단계;
    상기 제1 컴퓨팅 엔티티가 제1 메시지를 작성하는 단계 - 상기 제1 메시지는 상기 제1의 하나 이상의 확장-식별 데이터 구조를 포함함 -;
    상기 제1 컴퓨팅 엔티티가 상기 제1 메시지를 상기 제2 컴퓨팅 엔티티에 제공하는 단계;
    상기 제1 컴퓨팅 엔티티가 상기 제2 컴퓨팅 엔티티로부터의 제2 메시지를 수신하는 단계;
    상기 제2 컴퓨팅 엔티티가 상기 제1 컴퓨팅 엔티티와 상기 메시지 교환 패턴으로 통신할 때 구현할 수 있는 하나 이상의 확장들의 제2 세트를 식별하는 상기 제2 메시지에 포함된 제2의 하나 이상의 확장-식별 데이터 구조가 존재하는지, 또는 하나 이상의 확장-식별 데이터 구조의 제2 세트가 없는지를 결정하는 단계; 및
    상기 제1 컴퓨팅 엔티티가, 하나 이상의 확장-식별 데이터 구조의 상기 제2 세트가 없는 경우, 확장 없이도 상기 메시지 교환 패턴이 상기 메시지 교환 프로토콜에 사용될 것을 식별하거나, 하나 이상의 확장-식별 데이터 구조의 상기 제2 세트가 상기 제2 메시지에 존재하는 경우, 제1의 하나 이상의 확장들 및 제2의 하나 이상의 확장들에 기초하여 상기 메시지 교환시 실제로 사용되는 제3의 하나 이상의 확장들을 식별하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    상기 제1 메시지는 또한 분산 액티비티를 개시하라는 요청을 포함하고, 상기 제2 메시지는 또한 상기 분산 액티비티를 개시하라는 요청에 대한 응답을 포함하는 방법.
  3. 제2항에 있어서,
    상기 요청은 WS-Coordination 프로토콜에 의해 정의된 CreateCoordinationContext 요청이고, 상기 응답은 상기 WS-Coordination 프로토콜에 의해 정의된 CreateCoordinationContextResponse 메시지인 방법.
  4. 제3항에 있어서,
    상기 메시지 교환 프로토콜은, 상기 분산 액티비티를 제어하는(govern) 트랜잭션과의 상관(correlation) 또는 상기 트랜잭션에의 참여(enlistment in the transaction)를 허용하는 정보가 종점 레퍼런스(Endpoint reference)에 포함되는 것을 허가하는 방법.
  5. 제3항에 있어서,
    상기 메시지 교환 프로토콜은 하나 이상의 현안의(currently pending) 트랜잭션들을 식별하는 정보가 종점 레퍼런스에 포함되는 것을 허가하는 방법.
  6. 제3항에 있어서,
    상기 메시지 교환 프로토콜은 상기 CreateCoordinationContext 요청에 추가 정보가 포함되는 것을 허가하는 방법.
  7. 제6항에 있어서,
    상기 추가 정보는 상기 분산 액티비티에 적용될 분리 파라미터(isolation parameter)를 포함하는 방법.
  8. 제3항에 있어서,
    상기 메시지 교환 프로토콜은 상기 CreateCoordinationContextResponse 메시지에 제공된 CoordinationContext 메시지에 추가 정보가 포함되는 것을 허가하는 방법.
  9. 제8항에 있어서,
    상기 추가 정보는 WS-AT 이외의 트랜잭션 프로토콜에 대한 바인딩(binding)을 포함하는 방법.
  10. 제9항에 있어서,
    상기 WS-AT 이외의 트랜잭션 프로토콜은 OleTx인 방법.
  11. 제10항에 있어서,
    상기 WS-AT 이외의 트랜잭션 프로토콜은 TIP인 방법.
  12. 제3항에 있어서,
    상기 요청은 상기 WS-Coordination 프로토콜에 의해 정의된 Register 요청 내에 통상적으로 포함된 등록 정보를 더 포함하고, 상기 응답은 상기 WS-Coordination 프로토콜에 의해 정의된 RegistrationResponse 메시지 내에 포함된 등록 응답 정보를 포함하는 방법.
  13. 제2항에 있어서,
    상기 메시지 교환 프로토콜은 2단계 준비/커미트(prepare/commit) 트랜잭션 중 하나를 허용하거나 상기 트랜잭션을 커미트하는 판단의 위임을 허가하는 방법.
  14. 제13항에 있어서,
    상기 메시지 교환 프로토콜은, 제1 트랜잭션 관리자가 제2 트랜잭션 관리자에게 상기 트랜잭션을 준비한 후 상기 트랜잭션을 커미트하라고 지시하는 것에 응답하여, 상기 제2 트랜잭션 관리자로 하여금 상기 제2 트랜잭션 관리자가 상기 트랜잭션의 상태에 대하여 미확정(in-doubt)임을 상기 제1 트랜잭션 관리자에게 나타내게 할 수 있는 방법.
  15. 제2항에 있어서,
    상기 메시지 교환 프로토콜은 제2 트랜잭션 관리자로부터의 단일 재생 메시지가 재생을 원하는 다수의 트랜잭션을 식별하게 하는 방법.
  16. 제2항에 있어서,
    상기 요청은 WS-Coordination 프로토콜에 의해 정의된 CreateCoordinationContextResponse 메시지인 방법.
  17. 제2항에 있어서,
    상기 요청은 WS-Coordination 프로토콜에 의해 정의된 Register 요청인 방법.
  18. 제1항에 있어서,
    상기 메시지 교환 프로토콜은 WS-AT 이외의 트랜잭션 프로토콜을 구현하는 기존 트랜잭션에 기초하여 CoordinationContext 오브젝트의 생성을 허가하는 방법.
  19. 확장 가능한 메시지 교환 프로토콜을 사용하여 서로 통신할 수 있는 제1 컴퓨팅 엔티티 및 제2 컴퓨팅 엔티티를 포함하는 환경을 위한 방법으로서 - 상기 방법은 상기 제2 컴퓨팅 엔티티가 상기 제1 컴퓨팅 엔티티와 메시지 교환을 사용하여 통신할 때 사용될 상기 메시지 교환 프로토콜에 대한 하나 이상의 확장들을 협상하기 위한 것임 -,
    상기 제2 컴퓨팅 엔티티가 상기 제1 컴퓨팅 엔티티로부터의 제1 메시지를 수신하는 단계 - 상기 제1 메시지는, 상기 제2 컴퓨팅 엔티티가 상기 제1 컴퓨팅 엔티티와 메시지 교환 패턴으로 통신할 때 구현할 수 있는 하나 이상의 확장들의 제1 세트를 식별하는 정보를 포함하는 제1의 하나 이상의 확장-식별 데이터 구조를 포함함 -;
    제1 트랜잭션 관리자가, 상기 제2 컴퓨팅 엔티티가 상기 제1 컴퓨팅 엔티티와 상기 메시지 교환 패턴으로 통신할 때 구현할 수 있는 하나 이상의 확장들의 제2 세트를 식별하는 제2의 하나 이상의 확장-식별 데이터 구조를 작성하는 단계;
    상기 제2 컴퓨팅 엔티티가 상기 제2의 하나 이상의 확장-식별 데이터 구조를 포함하는 제2 메시지를 작성하는 단계;
    상기 제2 컴퓨팅 엔티티가 상기 제2 메시지를 상기 제1 컴퓨팅 엔티티에 제공하는 단계;
    상기 제2 컴퓨팅 엔티티가 상기 제1 메시지로부터의 상기 제1의 하나 이상의 확장-식별 데이터 구조를 판독하는 단계; 및
    상기 제2 컴퓨팅 엔티티가 상기 제1의 하나 이상의 확장들 및 상기 제2의 하나 이상의 확장들에 기초하여 상기 메시지 교환시 실제로 사용되는 하나 이상의 확장들을 식별하는 단계
    를 포함하는 방법.
  20. 확장 가능한 메시지 교환 프로토콜을 사용하여 서로 통신할 수 있는 제1 컴퓨팅 엔티티 및 제2 컴퓨팅 엔티티를 포함하는 환경에서 사용하기 위한 하나 이상의 컴퓨터 판독가능 기록 매체로서 - 상기 하나 이상의 컴퓨터 판독가능 기록 매체는 하나 이상의 프로세서들에 의해 실행될 때, 상기 제1 컴퓨팅 엔티티로 하여금, 상기 제1 컴퓨팅 엔티티가 상기 제2 컴퓨팅 엔티티와 메시지 교환을 사용하여 통신할 때 사용될 상기 메시지 교환 프로토콜에 대한 하나 이상의 확장들을 협상하는 방법을 수행하게 하는 컴퓨터-실행가능한 명령어들을 포함함 -,
    상기 방법은,
    상기 제1 컴퓨팅 엔티티가, 상기 제1 컴퓨팅 엔티티가 상기 제2 컴퓨팅 엔티티와 메시지 교환 패턴으로 통신할 때 구현할 수 있는 하나 이상의 확장들의 제1 세트를 식별하는 제1의 하나 이상의 확장-식별 데이터 구조를 작성하는 단계;
    상기 제1 컴퓨팅 엔티티가 제1 메시지를 작성하는 단계 - 상기 제1 메시지는 상기 제1의 하나 이상의 확장-식별 데이터 구조를 포함함 -;
    상기 제1 컴퓨팅 엔티티가 상기 제1 메시지를 상기 제2 컴퓨팅 엔티티에 제공하는 단계;
    상기 제1 컴퓨팅 엔티티가 상기 제2 컴퓨팅 엔티티로부터의 제2 메시지를 수신하는 단계;
    상기 제2 컴퓨팅 엔티티가 상기 제1 컴퓨팅 엔티티와 상기 메시지 교환 패턴으로 통신할 때 구현할 수 있는 하나 이상의 확장들의 제2 세트를 식별하는 상기 제2 메시지에 포함된 제2의 하나 이상의 확장-식별 데이터 구조가 존재하는지, 또는 하나 이상의 확장-식별 데이터 구조의 제2 세트가 없는지를 결정하는 단계; 및
    상기 제1 컴퓨팅 엔티티가, 하나 이상의 확장-식별 데이터 구조의 상기 제2 세트가 없는 경우, 확장 없이도 상기 메시지 교환 패턴이 상기 메시지 교환 프로토콜에 사용될 것을 식별하거나, 하나 이상의 확장-식별 데이터 구조의 상기 제2 세트가 상기 제2 메시지에 존재하는 경우, 제1의 하나 이상의 확장들 및 제2의 하나 이상의 확장들에 기초하여 상기 메시지 교환시 실제로 사용되는 제3의 하나 이상의 확장들을 식별하는 단계
    를 포함하는 하나 이상의 컴퓨터 판독가능 기록 매체.
  21. 확장 가능한 메시지 교환 프로토콜을 사용하여 서로 통신할 수 있는 제1 컴퓨팅 엔티티 및 제2 컴퓨팅 엔티티를 포함하는 환경에서 사용하기 위한 하나 이상의 컴퓨터 판독가능 기록 매체로서 - 상기 하나 이상의 컴퓨터 판독가능 기록 매체는, 하나 이상의 프로세서에 의해 실행될 때, 상기 제2 컴퓨팅 엔티티로 하여금, 상기 제2 컴퓨팅 엔티티가 상기 제1 컴퓨팅 엔티티와 메시지 교환을 사용하여 통신할 때 사용될 상기 메시지 교환 프로토콜에 대한 하나 이상의 확장들을 협상하는 방법을 수행하게 하는 컴퓨터-실행가능한 명령어들을 포함함 -,
    상기 방법은,
    상기 제2 컴퓨팅 엔티티가 상기 제1 컴퓨팅 엔티티로부터의 제1 메시지를 수신하는 단계 - 상기 제1 메시지는, 상기 제2 컴퓨팅 엔티티가 상기 제1 컴퓨팅 엔티티와 메시지 교환 패턴으로 통신할 때 구현할 수 있는 하나 이상의 확장들의 제1 세트를 식별하는 정보를 포함하는 제1의 하나 이상의 확장-식별 데이터 구조를 포함함 -;
    제1 트랜잭션 관리자가, 상기 제2 컴퓨팅 엔티티가 상기 제1 컴퓨팅 엔티티와 상기 메시지 교환 패턴으로 통신할 때 구현할 수 있는 하나 이상의 확장들의 제2 세트를 식별하는 제2의 하나 이상의 확장-식별 데이터 구조를 작성하는 단계;
    상기 제2 컴퓨팅 엔티티가 상기 제2의 하나 이상의 확장-식별 데이터 구조를 포함하는 제2 메시지를 작성하는 단계;
    상기 제2 컴퓨팅 엔티티가 상기 제2 메시지를 상기 제1 컴퓨팅 엔티티에 제공하는 단계;
    상기 제2 컴퓨팅 엔티티가 상기 제1 메시지로부터의 상기 제1의 하나 이상의 확장-식별 데이터 구조를 판독하는 단계; 및
    상기 제2 컴퓨팅 엔티티가 상기 제1의 하나 이상의 확장들 및 상기 제2의 하나 이상의 확장들에 기초하여 상기 메시지 교환시 실제로 사용되는 하나 이상의 확장들을 식별하는 단계
    를 포함하는 하나 이상의 컴퓨터 판독가능 기록 매체.
KR1020050104950A 2004-12-03 2005-11-03 메시지 교환 프로토콜 확장 협상 KR101169090B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/004,528 2004-12-03
US11/004,528 US7912973B2 (en) 2004-12-03 2004-12-03 Message exchange protocol extension negotiation

Publications (2)

Publication Number Publication Date
KR20060063655A KR20060063655A (ko) 2006-06-12
KR101169090B1 true KR101169090B1 (ko) 2012-07-26

Family

ID=36128437

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050104950A KR101169090B1 (ko) 2004-12-03 2005-11-03 메시지 교환 프로토콜 확장 협상

Country Status (7)

Country Link
US (1) US7912973B2 (ko)
EP (1) EP1667403B1 (ko)
JP (1) JP4799155B2 (ko)
KR (1) KR101169090B1 (ko)
CN (1) CN1832472B (ko)
AT (1) ATE454004T1 (ko)
DE (1) DE602005018592D1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8190658B2 (en) * 2006-03-14 2012-05-29 Korea Institute Of Science And Technology Intelligent computing device agent system for automatic recognition of multi user computing environment and information sharing setup
CN1905562B (zh) * 2006-08-18 2010-07-21 杭州华三通信技术有限公司 一种确定边缘设备串口需配置的链路协议的方法
US8291097B2 (en) * 2007-01-10 2012-10-16 Microsoft Corporation Dynamic transaction protocol upgrades
CN101606361A (zh) * 2007-02-13 2009-12-16 日本电气株式会社 移动终端管理系统、网络设备及用于它们的移动终端控制方法
US8949457B1 (en) * 2007-03-08 2015-02-03 Aurea Software, Inc. Local transparent extensibility and routing slip extensibility for business process execution language
EP2263391A4 (en) * 2008-04-08 2014-09-17 Nokia Corp ASSISTANCE DATA SPECIFICATIONS AND PROTOCOLS FOR NAVIGATION SYSTEMS
US8606947B2 (en) 2008-05-27 2013-12-10 International Business Machines Corporation Heuristics processing
JP5393059B2 (ja) * 2008-06-04 2014-01-22 キヤノン株式会社 ワークフロー処理装置及びワークフロー処理方法
US8868532B2 (en) * 2008-08-08 2014-10-21 Microsoft Corporation Message exchange pattern rendezvous abstraction
US8886802B1 (en) * 2009-03-23 2014-11-11 Symantec Corporation Transport agnostic network access control
US8285775B2 (en) * 2009-10-22 2012-10-09 International Business Machines Corporation Expedited transaction failure handling by leveraging a reliable message transport protocol to assist detection of discarded processing
US9055065B2 (en) * 2011-11-21 2015-06-09 Red Hat, lnc. Managing participant order in distributed transactions
US20150222664A1 (en) * 2012-03-28 2015-08-06 Google Inc. Conflict resolution in extension induced modifications to web requests and web page content
CN105704069B (zh) * 2014-11-26 2020-02-14 中兴通讯股份有限公司 一种节省网元内处理资源的方法及装置
US11216424B2 (en) 2018-06-07 2022-01-04 Spatika Technologies Inc. Dynamically rendering an application programming interface for internet of things applications
US10666718B2 (en) * 2018-06-07 2020-05-26 Spatika Technologies Inc. Dynamic data transport between enterprise and business computing systems
CN110609866B (zh) * 2018-06-15 2023-08-11 伊姆西Ip控股有限责任公司 用于协商事务的方法、设备和计算机程序产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1280301A2 (en) 2001-07-23 2003-01-29 Broadcom Corporation Flow based congestion control
US6671367B1 (en) 1999-05-17 2003-12-30 Telefonaktiebolaget Lm Ericsson Capability negotiation in a telecommunications network
US20040128369A1 (en) 2002-09-05 2004-07-01 Canon Kabushiki Kaisha Method of proposing a service via a description document of such a service

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04129357A (ja) * 1990-09-20 1992-04-30 Fujitsu Ltd サブセットによるプロトコル機能拡張方式
US5870549A (en) * 1995-04-28 1999-02-09 Bobo, Ii; Charles R. Systems and methods for storing, delivering, and managing messages
US5546549A (en) * 1994-06-01 1996-08-13 International Business Machines Corporation Multi-path channel (MPC) interface with user transparent, unbalanced, dynamically alterable computer input/output channels
US5793983A (en) * 1996-01-22 1998-08-11 International Business Machines Corp. Input/output channel interface which automatically deallocates failed subchannel and re-segments data block for transmitting over a reassigned subchannel
US6460058B2 (en) * 1996-12-06 2002-10-01 Microsoft Corporation Object-oriented framework for hyperlink navigation
AU3919300A (en) * 1999-03-25 2000-10-09 Motorola, Inc. Point to point protocol multiplexing/demultiplexing method and apparatus
US6317777B1 (en) * 1999-04-26 2001-11-13 Intel Corporation Method for web based storage and retrieval of documents
JP4763136B2 (ja) * 1999-05-17 2011-08-31 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 遠隔通信ネットワークにおける機能ネゴシエーション
WO2001026322A2 (en) * 1999-10-05 2001-04-12 Nortel Networks Limited Key exchange for a network architecture
US6449285B1 (en) * 1999-10-29 2002-09-10 Texas Instruments Incorporated Device for matching dissimilar telecommunications protocols
US7103635B2 (en) * 2000-01-28 2006-09-05 Lucent Technologies Inc. Really simple mail transport protocol
US6856993B1 (en) * 2000-03-30 2005-02-15 Microsoft Corporation Transactional file system
WO2002023344A2 (en) * 2000-09-15 2002-03-21 Wind River Systems, Inc. System and method for communicating software debug, diagnostic and maintenance information between devices
US20040107360A1 (en) * 2002-12-02 2004-06-03 Zone Labs, Inc. System and Methodology for Policy Enforcement
US7089298B2 (en) * 2001-08-20 2006-08-08 Nokia Corporation Naming distribution method for ad hoc networks
US6859866B2 (en) * 2001-10-01 2005-02-22 International Business Machines Corporation Synchronizing processing of commands invoked against duplexed coupling facility structures
US6744753B2 (en) * 2001-11-01 2004-06-01 Nokia Corporation Local service handover
US20030212827A1 (en) * 2002-05-08 2003-11-13 Abheek Saha Method and system for providing peer-to-peer exchange of terminal information over a meshed network
US6993039B2 (en) * 2002-07-22 2006-01-31 Utstarcom, Inc. System and method for GRE heartbeats
JP2004112069A (ja) * 2002-09-13 2004-04-08 Canon Inc 通信装置
US20040156388A1 (en) * 2003-02-07 2004-08-12 Lockheed Martin Corporation System for maintaining quality of service
JP4498770B2 (ja) * 2003-03-10 2010-07-07 株式会社リコー データ配信する画像形成装置及びその画像形成装置からデータを取得する情報処理装置
US7509651B2 (en) * 2003-05-23 2009-03-24 Hewlett-Packard Development Company, L.P. System and method for providing event notifications to information technology resource managers
US7574600B2 (en) * 2004-03-24 2009-08-11 Intel Corporation System and method for combining user and platform authentication in negotiated channel security protocols
US7860840B2 (en) * 2004-10-05 2010-12-28 Microsoft Corporation Maintaining correct transaction results when transaction management configurations change
US20060080117A1 (en) * 2004-10-12 2006-04-13 International Business Machines Corporation Maintaining integrity within an adaptive value chain involving cross enterprise interactions

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6671367B1 (en) 1999-05-17 2003-12-30 Telefonaktiebolaget Lm Ericsson Capability negotiation in a telecommunications network
EP1280301A2 (en) 2001-07-23 2003-01-29 Broadcom Corporation Flow based congestion control
US20040128369A1 (en) 2002-09-05 2004-07-01 Canon Kabushiki Kaisha Method of proposing a service via a description document of such a service

Also Published As

Publication number Publication date
KR20060063655A (ko) 2006-06-12
EP1667403A2 (en) 2006-06-07
ATE454004T1 (de) 2010-01-15
US7912973B2 (en) 2011-03-22
DE602005018592D1 (de) 2010-02-11
US20060123128A1 (en) 2006-06-08
JP2006166456A (ja) 2006-06-22
EP1667403B1 (en) 2009-12-30
JP4799155B2 (ja) 2011-10-26
EP1667403A3 (en) 2006-06-14
CN1832472A (zh) 2006-09-13
CN1832472B (zh) 2011-04-06

Similar Documents

Publication Publication Date Title
KR101169090B1 (ko) 메시지 교환 프로토콜 확장 협상
RU2379755C2 (ru) Система и способ для совместного использования объектов между компьютерами по сети
RU2502127C2 (ru) Платформа составных приложений на базе модели
KR101066682B1 (ko) 공유 자원에 대한 통지 방법
US20080065994A1 (en) Systems and methods for adapting service interface behaviors
JP5216093B2 (ja) スクリプティング環境および他のプログラミング環境からデバイスによってホストされるサービスへのアクセス
JP5067833B2 (ja) 高可用性異種クラスタ・マネージャ
KR20040084812A (ko) 커스텀화 가능한 통신 채널 및 프로그래밍 모델을 통해메시지를 송신하고 수신하는 방법 및 컴퓨터 프로그램 제품
JPH10116195A (ja) セキュア方式にてオブジェクトの位置を見出すための機構
JP5174661B2 (ja) Crm機能の拡張にメッセージを使用する方法
US20100005138A1 (en) Electronic file sharing
JPH09269931A (ja) 協調作業環境構築システム、その方法及び媒体
KR101027259B1 (ko) 웹 서비스의 메시지 지향 구축
CN109547243B (zh) 一种基于dds的跨网段通信方法
Pathak Pro WCF 4: practical Microsoft SOA implementation
WO2013165760A1 (en) User interface web services
US7130898B2 (en) Mechanism for facilitating invocation of a service
WO2022142504A1 (zh) 一种会议群组合并的方法与设备
US8260944B2 (en) Using a state machine embedded within a session initiation protocol (SIP) servlet to implement an application programming interface (API)
US11870746B2 (en) Method for chatting messages by topic based on subscription channel reference in server and user device
US20090172012A1 (en) Methodology to derive enterprise relationships for generating a topology view in a SOA environment
US8522256B2 (en) Hosting non-messaging workflows in a messaging host
EP1977338B1 (en) External configuration of processing content for script
Frank et al. A customizable shared information space to support concurrent design
JP2007299319A (ja) 情報処理装置及びプロセス間通信方法

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
FPAY Annual fee payment

Payment date: 20160616

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170616

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190617

Year of fee payment: 8