KR20060088472A - 통신 바인딩 객체를 형성 및 사용하기 위한 시스템 및 방법 - Google Patents

통신 바인딩 객체를 형성 및 사용하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20060088472A
KR20060088472A KR1020050122302A KR20050122302A KR20060088472A KR 20060088472 A KR20060088472 A KR 20060088472A KR 1020050122302 A KR1020050122302 A KR 1020050122302A KR 20050122302 A KR20050122302 A KR 20050122302A KR 20060088472 A KR20060088472 A KR 20060088472A
Authority
KR
South Korea
Prior art keywords
binding
runtime
communication
components
communication channel
Prior art date
Application number
KR1020050122302A
Other languages
English (en)
Other versions
KR101159357B1 (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 KR20060088472A publication Critical patent/KR20060088472A/ko
Application granted granted Critical
Publication of KR101159357B1 publication Critical patent/KR101159357B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Telephonic Communication Services (AREA)
  • Information Transfer Between Computers (AREA)
  • Communication Control (AREA)

Abstract

본 발명은 바인딩 객체를 구성 및 사용하는 사용자 친화적인 자동화된 방식을 제공한다. 개발자는 궁극적으로 클라이언트와 서비스 엔드포인트 사이에 메시지를 전달하기 위한 런타임 통신 채널을 생성하기 위해 사용될 바인딩 구성요소를 제공 및 선택한다. 사용자 입력을 수신한 후, 메타데이터, 채널 팩토리 및 리스너 팩토리가 생성된다. 메타데이터는 바인딩 구성요소를 기술하며, 런타임에 통신 양상을 구현하는 프로토콜 스택의 추상화 표현을 제공한다. 채널 팩토리는 런타임 통신 채널을 생성하기 위하여 런타임에 메타데이터의 컬렉션을 사용하도록 구성된다. 또한, 리스너 팩토리는 서비스 엔드포인트에서 메시지를 프로세싱하기 위하여 런타임 통신 채널을 수락하고 통신 양상을 역다중화하도록 구성된다. 본 발명은 또한 바인딩 구성요소들의 그룹화, 및 산업 수요에 기초하여 조직화된 표준화된 바인딩 객체를 제공한다.
바인딩 객체, 바인딩 구성요소, 메타데이터, 통신 양상, 런타임 통신 채널

Description

통신 바인딩 객체를 형성 및 사용하기 위한 시스템 및 방법{SYSTEM AND METHOD FOR BUILDING AND USING COMMUNICATION BINDING OBJECTS}
도 1은 예시적인 실시예에 따라 서비스에 메시지를 전달하기 위한 런타임 통신 채널을 구성하기 위하여 메타데이터를 이용하는 분산 시스템을 도시하는 도면.
도 2a는 예시적인 실시예에 따라 그룹화된 바인딩 구성요소들의 예를 도시하는 도면.
도 2b는 표준 바인딩을 선택하기 위한 예시적인 사용자 인터페이스를 도시하는 도면.
도 3a-e는 본 발명의 예시적인 실시예에 따라 사용될 수 있는 다양한 위저드(wizard) 타입 사용자 인터페이스를 도시하는 도면.
도 4는 본 발명의 예시적인 실시예에 따라 바인딩 객체를 구성하는 자동화되고 사용자에게 친숙한 방식을 개발자에게 제공하는 방법의 흐름도.
도 5는 본 발명의 예시적인 실시예에 따라 일반적으로 사용되고 호환가능한 객체들의 리스트를 개발자에게 제공하는 방법의 흐름도.
도 6은 예시적인 실시예에 따라 런타임 통신 채널을 생성하기 위해 바인딩 객체를 사용하는 방법에 대한 흐름도.
도 7은 본 발명에 대한 적합한 운영 환경을 제공하는 예시적인 시스템을 도 시하는 도면.
<도면의 주요부분에 대한 부호의 설명>
105: 스토어
115: 바인딩 구성요소
120: 바인딩 설명
125: 메타데이터
135: 채널 팩토리
145: 리스너 팩토리
150: 리스너
160: 엔드포인트
165: 런타임 통신 채널
170: 메시지
175: 핸들
180: 요청
본 발명은 일반적으로 분산 시스템에서 메시지를 통신 양상에 바인딩하는 것에 관한 것이다. 보다 상세하게는, 본 발명은 엔드포인트들 사이에 전달할 때 통신 양상들을 메시지들에 적용하기 위하여 런타임 통신 채널을 생성하기 위해 사용 될 수 있는 바인딩 객체를 구성하는 자동화되고 사용자에게 친숙한 방식을 개발자에게 제공한다.
컴퓨터 시스템 및 관련 기술은 사회의 여러 양상에 영향을 준다. 실제로, 정보를 프로세싱하기 위한 컴퓨터 시스템의 기능은 우리가 살고 일하는 방식을 변화시켜 왔다. 컴퓨터 시스템은 이제 컴퓨터 시스템의 도래 이전에 수동으로 수행되었던 다수의 태스크(예를 들어, 워드 프로세싱, 스케쥴링, 데이터베이스 관리 등)를 수행한다. 더욱 최근에는, 컴퓨터 시스템들이 데이터를 공유하도록 전자적으로 통신할 수 있는 컴퓨터 네트워크를 형성하기 위하여 컴퓨터 시스템들이 서로 연결되었다. 서비스 지향 시스템(예를 들어, 웹 서비스)은 컴퓨터 시스템들 사이에 그러한 통신을 진보시키는 구동력이 되어 왔으며, 우리가 소프트웨어를 형성 및 사용하는 방식을 샅샅이 변화시키고 있다.
서비스 지향 아키텍처는 어플리케이션이 데이터를 공유하도록 하며, 보다 강력하게는, 어플리케이션이 어떻게 형성되었는지, 그들이 어떤 운영 시스템 또는 플랫폼상에서 실행되는지, 및 그것들을 액세스하기 위하여 어떤 장치들이 사용되는지에 관계없이 다른 어플리케이션들로부터의 기능을 인보크하도록 한다. 전형적으로, 이들 시스템은 SOAP(Simple Object Access Protocol), XML(eXtensible Markeup Language), UDDI(Universal Description Discovery Integration), WSDL(Web Service Description Language) 등을 포함하는 산업-표준 프로토콜의 수단에 의해 인터넷을 통해 인보크된다. 이러한 서비스들은 서로에게 독립적으로 유지되지만, 특정 태스크를 수행하는 협력 그룹(collaborating group)으로 자신들을 느슨하게 연결할 수 있다.
종종, 서비스 지향 네트워크에서의 전자 통신은 서버 컴퓨터 시스템(이하 "서비스"라 일컬음)의 네트워크 서비스(들)(예를 들어, 웹 서비스)에 대한 액세스를 요청하는 클라이언트 컴퓨터 시스템(이하 "클라이언트"라 일컬음)을 포함한다. 따라서, 클라이언트는 서비스의 시스템 자원에의 특정 액세스에 대한 요청을 서비스에게 전송하며, 클라이언트가 허가되고 유효성이 확인되면, 서비스는, 예를 들어, 원하는 정보를 제공하는 응답 메시지로 응답한다. 물론, 클라이언트와 서비스 사이의 기타 메시지 교환 패턴이 이용가능하며, 단순한 싱글톤 메시지뿐 아니라, 예를 들어, 통지, 청구-응답(solicit-response), 퍼브-서브 패턴(pub-sub pattern), 폴링, 킥-푸시(kick-push), 큐잉 등과 같이 보다 정교한 멀티-메시지 교환을 포함한다.
서비스를 기술하는 서비스 지향 개념(예를 들어, 주소, 바인딩, 및 메시지 상호작용 패턴)이 프로그래밍 모델에 포함될 수 있다. 그 후 프로그래밍 모델은 그 기술된 서비스와 통신하기를 원하는 서비스 소비자에 의해 액세스될 수 있다. 일반적으로, 서비스 지향 개념(예를 들어, 프로그래밍 모델)은, 예를 들어, 분산 컴포넌트 객체 모델("DCOM"), 공통 객체 요구 매개자 아키텍처("CORBA"), 또는 웹 서비스와 같은 몇몇 서비스 지향 표준에 따라 기술된다. 웹 서비스는 또한, 예를 들어, 웹 서비스 기술 언어("WSDL"), 웹 서비스 정책 프레임워크("WS-Policy") 등과 같은 다양한 웹 서비스 규격에 따라 정의될 수 있다.
WSDL과 같은 서비스 지향 표준은 공통 또는 표준 언어로 계약(예를 들어, WS 계약)을 기술하기 위한 전체적인 래퍼(overall wrapper) 또는 규격을 제공한다. 그러한 규격은 개발자 및 개발자 툴이 계약을 생성 및 해석하는 것을 쉽게 만든다. 그러한 네트워크 프로토콜 기술 언어(이하 "NPDL"이라 일컬음)는 상당한 부분에서 그것의 평판의 이유가 되는 광범위한 툴 스위트(tool suite)를 가지지만, 현재 그러한 표준에 여러 결함 및 실패가 존재한다.
예를 들어, 분산 어플리케이션은 전형적으로 자신의 서비스 런타임에 단단히 결합된 하나의 프로그래밍 모델만을 허용하는 프로그래밍 모델에 고정된다. 따라서, 호환성을 위하여, 클라이언트 런타임(예를 들어, 서비스 소비자의)은 전형적으로 서버 런타임과 동일한 프로그래밍 모델에 따라 개발된 클라이언트 프로그램 또는 모듈을 이용할 것을 요구받는다. 예를 들어, 서비스가 요청 및 응답 메시지에 대한 개별적인 인터페이스, 또는 특정 보안 메커니즘을 사용하여 개발된 경우, 서비스 소비자는 그것들 역시 구현해야 한다. 동일한 프로그래밍 모델에 따라 개발된 클라이언트 프로그램 또는 모듈을 사용하지 못하면 클라이언트 런타임이 서비스 런타임과 통신하지 못할 수 있다.
또한, 현재의 NPDL은 메시지 교환 패턴(예를 들어, 단방향, 요청-응답, 퍼브-서브, 듀플렉스 등), 메시지 인코딩 또는 포맷(예를 들어, SOAP 엔벨로프), 및 서비스와 메시지를 교환하기 위한 전송의 타입(예를 들어, HTTP(HyperText Transport Protocol), FTP(File Transfer Protocol), SMTP(Simple Message Transfer Protocol), TCP(Transmission Control Protocol), UDP(User Datagram Protocol), SMS(Short Message Service), SNA(Systems Network Architecture), GPRS(General Packet Radio Service) 등)을 포함하는 제한된 집합의 통신 양상에 계약을 바인딩한다. 부가적인 통신 양상(예를 들어, 보안, 신뢰성, 컨텍스트 플로우, 트랜잭션 플로우, 로그 옵션, 연결 조절 옵션(connection throttling option) 등)은 다른 문서(예를 들어, WS Policy)에 지정되거나, 클라이언트 및 서비스 측 둘다에 밴드 외로 구성되어야 한다.
시스템 곳곳에 산재된 통신 양상들의 널리 분산된 분포로 인하여, 사람의 실수를 통해 서비스 기술 문서 또는 구성이 대응하는 서비스에 대한 완전하고 정확한 설명이 아닐 가능성이 존재한다. 그러나, 프로그래밍 모델과 서비스 런타임 사이의 고정된 결합으로 인하여, 서비스에 의해 정의된 하나의 통신 양상 또는 구성 옵션의 결핍으로도 호환불가능한 클라이언트 런타임을 발생시킬 수 있다.
또한, NPDL에서 모든 통신 양상이 제공되는 것은 아니기 때문에, 통신 양상을 이용 및 유지하기 위하여 클라이언트 및 서비스 둘다 각 어플리케이션 내에 상당한 양의 코드를 가져야 한다. 예를 들어, 보안 컨텍스트의 경우에, 클라이언트는 (1)서비스 어플리케이션과의 통신이 보안 컨텍스트 토큰을 사용해야 함을 인식하고, (2) 그러한 토큰을 토큰 발행자로부터 요청하며, (3) 그 요청 내에 적합한 정보를 제공하고, (4) 나중의 통신을 위해 보안 컨텍스트 토큰을 저장하며, (5) 보안 컨텍스트 토큰을 사용하여 서비스로부터 통신을 수신할 때, 적합한 기본 토큰 및 공유 비밀을 참조할 코드를 가질 필요가 있다. 마찬가지로, 서비스 어플리케이션은 보안 컨텍스트 토큰에 기초하여 클라이언트로부터 보안된 메시지를 수신할 때 , 서비스 어플리케이션이 (1) 기본 토큰을 식별하고, 메시지를 복호하기 위하여 기본 토큰에 관련된 적합한 세션 키를 결정하며, (3) 보안 컨텍스트 토큰을 저장하고, (4) 그것들을 클라이언트에게 안전하게 전달하기 위하여 메시지를 암호화 및 서명하기 위하여 보안 컨텍스트 토큰을 재사용할 수 있도록 코딩되어야 한다.
보안 및 기타 시맨틱(semantic)에 대한 그러한 통신 양상들이 클라이언트 및 서비스 어플리케이션 둘다에서 코딩되어야 하기 때문에, 유연성이 있다 하더라도 거의 없거나 시스템을 확장하기 쉽지 않다. 예를 들어, 다른 타입의 보안 컨텍스트 토큰을 사용하거나 다른 신뢰성 옵션을 갖게 할 수 있도록 서비스 지향 시스템을 확장하는 것이 바람직할 수 있지만, 그렇게 하는 것은 서비스 어플리케이션에 또다른 상당한 양의 코드를 필요로 할 뿐 아니라, 기존의 코드를 재작성해야 할 것이다. 물론, 보안 컨텍스트가, 예를 들어, HTTPS를 사용하여 전송 레벨에서 확립될 수도 있다. 그러나, 이러한 해결책도 시맨틱이 규격에 의해 사전 정의되기 때문에 시스템 확장에 어떠한 유연성 또는 용이성을 허용하지 않는다. 또한, 어플리케이션 개발자는 전형적으로 특정 통신 양상에 전문가가 아니기 때문에, 보안 문제, 신뢰성 문제뿐 아니라 성능, 스트레스, 또는 기타 견고성 요소가 존재한다. 게다가, 이러한 통신 양상들 모두의 여러 순열 및 조합은 다루기 힘들고, 다양한 조합의 이점을 완전히 이해하기 어렵게 된다.
따라서, 널리 포진된 통신 양상에 메시지를 바인딩하는 자동화되고 사용자에게 친숙한 방식을 개발자에게 제공하는 사용자 인터페이스에 대한 필요성이 존재한다. 이러한 사용자 인터페이스는 일관성을 위하여 클라이언트 및 서비스 둘 모두 에 의해 사용될 수 있는 표준화된 툴을 생성할 수 있어야 한다. 게다가, 바인딩 프로토콜에 대해 가능한 순열의 수를 제한하기 위해 일반적으로 사용되고 호환가능한 통신 양상들의 리스트를 기술할 필요가 있다. 또한, 일반적으로 사용되는 조합뿐 아니라 다양한 통신 양상들이 완전히 유연하고, 확장가능하며, 플러그인가능해야 한다.
현재의 바인딩 메커니즘에 대해 상기 식별된 결함 및 결점이 본 발명의 예시적인 실시예들을 통해 극복된다. 예를 들어, 본 발명은 엔드포인트들 사이에 메시지를 전달할 때 메시지에 통신 양상을 적용하기 위하여 런타임 통신 채널을 생성하는 데에 사용하기 위한 바인딩 객체를 구성하는 자동화되고 사용자에게 친숙한 방식을 개발자에게 제공하는 사용자 인터페이스를 제공한다. 기타 예시적인 실시예들은 바인딩 구성요소에 대한 가능한 순열의 수를 간략하게 하기 위한 일반적으로 사용되고 호환가능한 바인딩 객체들의 리스트를 개발자에게 제공한다. 또한, 본 발명은 프로토콜의 통신 양상에 따라 엔드포인트들 사이에 메시지를 통신하기 위한 런타임 통신 채널을 생성하기 위하여, 생성된 바인딩 객체를 사용할 수 있는 시스템도 제공한다.
예시적인 실시예들에 따라, 본 발명은 다수의 바인딩 구성요소를 선택을 위해 사용자에게 제공한다. 바인딩 구성요소는 궁극적으로 클라이언트와 서비스 엔드포인트 사이에 메시지를 전달하기 위한 런타임 통신 채널을 생성하기 위해 사용될 통신 양상을 나타낸다. 다수의 바인딩 구성요소 제공 후, 다수의 바인딩 구성 요소로부터 하나 이상의 바인딩 구성요소를 선택하는 사용자 입력이 수신된다. 선택에 기초하여, 메타데이터, 채널 팩토리(channel factory) 및 리스너 팩토리(listener factory)가 생성된다. 메타데이터는 하나 이상의 바인딩 구성요소들의 컬렉션인 바인딩 객체를 기술하며, 런타임에 통신 양상들을 구현할 프로토콜의 추상화 표현을 제공한다. 채널 팩토리는 런타임 통신 채널을 생성하기 위해 런타임 메타데이터를 사용하도록 구성된다. 반면에 리스너 팩토리는 서비스 엔드포인트에서 메시지를 프로세싱하기 위하여 런타임 통신 채널을 수락하고 통신 양상들을 역다중화하도록 구성된다.
기타 예시적인 실시예들은 선택을 위해 사용자에게 다수의 바인딩 객체를 제공한다. 다수의 바인딩 객체 각각은 다수의 바인딩 구성요소를 결합하는 호환가능성 및 산업 가능성에 기초하여 결합되는 다수의 바인딩 구성요소를 포함한다. 또한, 다수의 바인딩 구성요소 각각은 궁극적으로 클라이언트와 서비스 엔드포인트 사이에 메시지를 전달하기 위한 런타임 통신 채널을 생성하기 위해 사용될 다수의 통신 양상을 나타낸다. 그 이후에, 다수의 바인딩 객체로부터 바인딩 객체를 선택하는 사용자 입력이 수신된다. 그 이후에, 선택된 바인딩 객체를 기술하는 메타데이터가 자동으로 생성되고, 메타데이터는 런타임 통신 양상을 구현할 런타임 통신 채널의 추상화 표현을 제공한다.
또다른 기타 예시적인 실시예들은 하나 이상의 사용자 선택된 바인딩 구성요소를 포함하는 바인딩 객체를 기술하는 메타데이터를 액세스하고, 바인딩 구성요소는 궁극적으로 클라이언트와 서비스 엔드포인트 사이에 메시지를 전달하기 위한 런 타임 통신 채널을 생성하기 위해 사용될 하나 이상의 통신 양상을 나타낸다. 메타데이터에 기초하여, 하나 이상의 사용자 선택된 바인딩 구성요소에 대응하는 하나 이상의 통신 양상을 구현하도록 구성된 하나 이상의 채널 컴포넌트를 포함하는 런타임 통신 채널이 초기화된다. 그 이후에, 런타임 통신 채널은 하나 이상의 통신 양상에 따라 서비스에 관련된 엔드포인트에 메시지를 전달하기 위해 사용된다.
본 발명의 부가적인 특성 및 이점이 후술되는 설명에서 언급될 것이고, 부분적으로 설명으로부터 명백해질 것이며, 또는 본 발명의 실행에 의해 학습될 수 있다. 본 발명의 특성 및 이점은 첨부된 특허청구범위에 특히 지적된 기구 및 조합의 수단에 의해 인식 및 획득될 수 있다. 본 발명의 이러한 특성 및 기타 특성들은 후술되는 설명 및 첨부된 특허청구범위로부터 보다 완전히 명백해질 것이며, 또는 이후에 언급된 본 발명의 실행에 의해 학습될 수 있다.
본 발명의 상기 인용된 이점 및 특성, 및 기타 이점 및 특성이 획득될 수 있는 방식을 기술하기 위하여, 상기 간략히 기술된 본 발명의 보다 특정한 설명이 첨부된 도면에 도시된 특정 실시예들을 참조하여 제공될 것이다. 이들 도면이 본 발명의 전형적인 실시예들만을 도시하며, 그러므로 본 발명의 범위를 제한하는 것으로 여겨져서는 안 된다는 점을 이해하여야 하며, 본 발명은 첨부된 도면의 사용을 통해 부가적으로 특정하고 상세하게 기술 및 설명될 것이다.
본 발명은 예시적인 실시예에 따라 런타임 통신 채널을 생성하기 위해 사용될 수 있는 바인딩 객체를 개발자가 생성하는 것을 돕기 위한 방법, 시스템 및 컴퓨터 프로그램 제품으로 확장한다. 본 발명의 실시예들은 하기에 보다 상세히 논 의된 바와 같이 다양한 컴퓨터 하드웨어를 포함하는 특수용 또는 범용 컴퓨터를 포함할 수 있다.
본 발명의 예시적인 실시예들을 보다 상세히 논의하기 이전에, 본 명세서의 나머지 곳곳에서 사용된 몇몇 용어들을 정의하는 것이 유용할 것이다. "통신 양상"은 분산 시스템에서 엔드포인트들 사이에 메시지를 전달하기 위한 공식적 규칙의 구체적인 집합에 대응한다. 통신 양상의 예는 (1) 웹 서비스(WS) 패밀리(예를 들어, WS-Security, WS-Reliable Messaging, WS-Atomic Transactions 등)의 실제 규격, (2) 특정 유선 전송 메커니즘(예를 들어, HTTP, TCP, UDP 등), (3) 메시지의 특정 유선 인코딩(예를 들어, 텍스트, 바이너리 등), 및 (4) 기타 부수적 전송 프로토콜을 포함하지만 이들로 제한되지는 않는다. 이들 통신 양상들은 하기에 기술된 런타임 통신 채널의 사용을 통해 구현될 수 있는 "프로토콜 스택"을 생성하기 위해 서로 결합하도록 의도된 것이다. 각 프로토콜 스택은 전형적으로 적어도 전송 양상 및 인코딩 양상(예를 들어, TCP를 통한 SOAP 메시지)을 포함한다. 그러나, 각 통신 양상이 프로토콜 자체라는 점을 유의해야 한다. 따라서, 본 명세서에서 사용된 "프로토콜 스택"은 하나 이상의 통신 양상을 포함하는 것으로 널리 해석되어야 한다.
통신 양상의 추상화 표현이 "바인딩 구성요소"로 알려져 있고, 이것은 통신 양상(및 따라서 프로토콜 스택)을 구현하기 위하여 런타임 통신 채널을 생성하기 위해 사용될 수 있다. 바인딩 구성요소들의 컬렉션은 본 명세서에서 "바인딩 객체"라고 불릴 것이며, 그것은 특정 프로토콜 스택, 또는 통신 양상들의 조합에 대 한 추상화 표현을 나타낸다.
본 발명은 일반적으로 엔드포인트들 사이에 메시지를 전달하기 위해 바인딩 객체를 생성 및 사용하기 위한 시스템, 방법 및 컴퓨터 프로그램 제품을 제공한다. 도 1a는 예시적인 실시예에 따라 클라이언트로부터 서비스에 메시지를 전달하기 위한 바인딩 객체를 생성 및 사용하기 위해 사용될 수 있는 다양한 컴포넌트를 갖는 분산 시스템(100)을 도시한다. 도시된 바와 같이, 서비스 개발자는 개발자 어플리케이션(110)에서 바인딩 구성요소(115)를 선택하기 위한 사용자 인터페이스(112)를 제공받을 수 있다. 이러한 바인딩 구성요소들(115)은 쉽게 이해할 수 있는 방식으로 제공되고, 사용자가 그것들을 선택하는 것을 돕도록 다양한 설명을 제공할 수 있다. 예를 들어, 사용자 인터페이스는 "보안을 원합니까?", "신뢰성을 원합니까?" 등과 같이 정보에 대해 사용자를 촉구할 수 있다. 사용자 입력에 기초하여, 기타 옵션 또는 질문들이 이어질 수 있다. 또한, 하기에 보다 상세히 기술될 것과 같이, 이러한 바인딩 구성요소들은 그룹으로 결합될 수 있고, 또는 프리젠테이션 프로세스 동안 표준 바인딩 객체로 구성될 수 있다. 그 후 개발자는 사용자 인터페이스(112)를 사용하여 제공된 다양한 옵션 중에서 선택할 수 있다.
본 발명은 또한 디폴트 바인딩 구성요소 및/또는 바인딩 객체 정의를 지원한다는 점을 유의해야 한다. 따라서, 개발자가 바인딩 구성요소를 선택하지 않고 바로 진행하는 경우, 바인딩 구성요소들(115) 중 하나 이상을 포함하는 디폴트 바인딩 객체가 그 사용자에 대해 자동으로 선택될 수 있다. 그러한 것으로서, 본 명세서에서 사용된 용어 "사용자 선택된" 또는 기타 유사한 단어의 사용은 디폴트 바인 딩 구성요소 또는 객체를 포함하도록 넓게 해석되어야 한다. 그러한 경우에, 디폴트 바인딩 구성요소(115)를 선택하기 위해 수신된 사용자 입력은 바인딩 구성요소(또는 하기에 기술된 바와 같이 기타 바인딩 객체들)를 선택하지 않고서 진행하도록 입력될 수 있다.
개발자가 자신의 선택을 종료하면, 결합된 선택된 바인딩 구성요소들로부터 바인딩 객체가 생성된다. 바인딩 객체를 사용하여, 바인딩 형성자(도시되지 않음)에 의해 사용되는 바인딩 설명(120)이 여러 상이한 예시적인 실시예들을 생성하도록 구성된다. 먼저, 스토어(105)에 저장될 수 있는 바인딩 객체의 설명인 메타데이터(125)의 컬렉션을 생성하기 위하여 바인딩 설명(120)이 사용될 수 있다. 이 메타데이터가 서비스(140)에 상주할 수 있지만, 예를 들어, UDDI(Universal Description, Discovery, and Integration)를 사용하는 서비스들의 디렉토리에 저장된 NPDL 문서(예를 들어, WSDL 문서)에 상주할 수도 있다.
둘째, 바인딩 설명(120)은 채널 팩토리(135)를 생성하기 위해서도 사용될 수 있으며, 그것은 런타임 통신 채널(165)을 생성하기 위하여 메타데이터(125)를 사용한다. 채널(예를 들어, 런타임 통신 채널(165))은 클라이언트(130)와 서비스(140) 사이에 메시지를 교환하기 위한 코어 추상화를 나타낸다. 특히, 채널(예를 들어, 런타임 통신 채널(165))은 입력/출력(I/O) 추상화를 나타내며, (1) 어플리케이션 데이터 또는 메시지(170)(예를 들어, SOAP 메시지)를 수락하고, (2) 다양한 통신 양상(예를 들어, 신뢰성, 보안, 인코딩 등)을 구현하며, (3) 통신 양상에 따라 전송을 위해 메시지(170)를 포맷화하고, (4) "유선"을 통해 메시지(170)를 전송할 책 임이 있다. 런타임 통신 채널(165)은 통신 양상의 풀-기반 메커니즘(pull-based mechanism)을 사용하여 조절 및 플로우 제어(throttling and flow control)를 지원 및 유지할 수 있다는 점 또한 유의해야 한다.
또한, 바인딩 설명(120)은 서비스(140)에 대한 리스너 팩토리(listener factory)(145)를 생성하기 위해 사용된다. 서비스 측(140)에서, 리스너 팩토리(170)는, 예를 들어, 메시지(170)와 같은 새로운 메시지를 위하여 특정 네트워크 주소를 리슨(listen)하고, 서비스(140)의 특정 엔드포인트(160)와 통신하는 리스너(150)를 생성하기 위한 메커니즘을 제공한다. 그 후 리스너 팩토리(145)는 메시지(170)의 일부를 역다중화할 수 있고, 메시지(170)를 적합한 리스너(150)에게 전송할 수 있다.
서비스(140)로부터 메타데이터(125)(예를 들어, WSDL 문서)를 획득할 수 있고, 그 후 런타임 통신 채널(165)을 생성할 수 있다는 것은 본 발명에서 제공되는 "사용자 친밀도(user friendliness)"의 중요한 부분이라는 점을 유의해야 한다. 예를 들어, 개발자는 서비스(140)에 대한 바인딩 구성요소(115)를 고를 수 있고, 그 후 또다른 개발자가 그것의 메타데이터(125)에 대해 원격으로 서비스(140)를 질의할 수 있다. 이 메타데이터(125)로부터, 어플리케이션은 런타임 통신 채널(165)을 생성할 수 있고, 서비스 개발자의 바인딩 구성요소(115) 선택에 따라 서비스(140)에 메시지를 전달하기 위하여 그것을 사용할 수 있다.
또한 바인딩 설명(120)을 사용하여 생성된 상기 객체들(125, 135, 145)이 특정 순서로 논의되었지만, 본 발명은 이러한 객체들을 생성하기 위한 순서 또는 타 이밍에 제한되지 않는다는 점을 유의해야 한다. 예를 들어, 메타데이터(125), 채널 팩토리(135), 및 리스너 팩토리(145)는 동시에 생성될 수 있고, 임의의 순서로 개별적으로 생성될 수 있으며, 또는 그들의 조합으로 생성될 수 있다.
통신 객체들(125, 135, 145)이 언제 생성되었는지에 관계없이, 서비스(140)를 액세스하기 위하여, 클라이언트(130)는 그 특정 서비스(140)에 대해 채널 팩토리(135)로부터 채널을 적극적으로 요청(180)한다. 그러면 채널 팩토리(135)는 스토어(105)로부터 메타데이터(125)를 액세스하여, 런타임 통신 채널(165)을 초기화하기 위하여 바인딩 객체의 이러한 설명을 사용할 수 있다. 런타임 통신 채널(165)의 특정 세부사항이 본 예시적인 실시예에 밀접한 관계가 있지는 않지만, 런타임 통신 채널(165)이 전형적으로 (결합 및 구현될 때 프로토콜 스택을 구성하는) 다양한 통신 양상에 대응하는 통신 컴포넌트들로 구성된다는 점을 유의하는 것은 유용하다. 예를 들어, 런타임 통신 채널(165)은 보안 컴포넌트, 신뢰성 컴포넌트, 전송 컴포넌트 및 인코딩 컴포넌트를 포함할 수 있다. 그 후 이러한 컴포넌트들은 프로토콜을 구현하기 위하여 전체적인 런타임 통신 채널(165)을 생성하기 위해 결합된다.
요청(180) 수신 시, 클라이언트(130)가 지정된 통신 양상에 따라 서비스(160)에 메시지(170)를 전달하기 위해 런타임 통신 채널(165)을 적절히 참조 및 사용할 수 있도록, 채널 팩토리(135)는 (런타임 통신 채널(165) 또는 그것의 식별자일 수 있는) 핸들(175)을 클라이언트(130)에게 리턴한다. 본 발명은 개발자로부터 선택된 바인딩 구성요소들로부터 이러한 통신 양상들을 유도하였지만, 현재의 실시 예는 그러한 선택 프로세스에 제한되지 않음을 유의해야 한다. 예를 들어, 메타데이터(125)는 디폴트 바인딩 객체, 또는 서비스 측의 시스템 관리자에 의한 구성 시맨틱(configuration semantics)을 통해 지정된 바인딩 객체를 나타낼 수 있다. 따라서, 본 실시예에 대해, 중요한 것은 런타임 통신 채널(165)을 생성하기 위하여 메타데이터(125)를 사용한다는 것이다. 그러나, 이전에 언급된 바와 같이, 런타임 통신 채널(165)은 전형적으로 적어도 전송 양상 및 인코딩 양상을 포함해야 한다는 점을 유의해야 한다.
런타임 통신 채널(165)이 어떻게 초기화되는지에 관계없이, 서비스 측(140)에서 리스너 팩토리(145)가 런타임 통신 채널(165)을 리슨하여, 적합한 리스너(150)를 생성할 것이다. 리스너(150)는 서버 측(140)에서 새로운 런타임 통신 채널(165)을 리슨 및 수락하기 위한 추상화를 나타낸다. 리스너(150)에 의해 새로운 채널(예를 들어, 런타임 통신 채널(165))이 감지되면, 엔드포인트(160)는 런타임 통신 채널(165)에 의해 구현된 통신 양상에 따라 리스너가 메시지(170)를 역다중화하도록 하는 "채널 수락(accept channel)"을 호출할 수 있다. 대안적으로, 엔드포인트(160)는 미해결 수락 시작(outstanding begin accept)을 "보류(pend)"할 수 있고, 그것은 다른 메시지들이 프로세싱되면 나중에 완료될 수 있다. 어떠한 경우든, 그 이후, 엔드포인트(160)는 메시지를 적절히 프로세싱하여 필요하다면 적합한 응답을 전송할 수 있다.
클라이언트(130)와 서비스(140) 사이의 메시지 교환 패턴에 의존하여, 서비스(140)로부터 클라이언트(130)에 런타임 통신 채널(165)이 생성될 수 있음을 유의 해야 한다. 예를 들어, 클라이언트(130)와 서비스(140) 사이의 듀플렉스 메시지 교환 패턴에서는, 그러한 통신을 위하여 서비스(140)로부터 클라이언트(130)에의 역방향 채널이 생성될 필요가 있다. 따라서, 상기 기술된 통신 프로세스는 서비스(140)가 클라이언트(130)로서 동작하고 그 역도 가능하도록 전환될 필요가 있을 수 있다. 또한, 전술한 예시적인 실시예들을 구현하는 다른 방식들이 존재할 수 있다. 예를 들어, 메타데이터(125), 채널 팩토리(135), 및 리스너 팩토리(145)가 바인딩 설명없이 자동으로 생성될 수 있다. 따라서, 런타임 통신 채널(165)을 생성하고, 메시지를 전달하기 위하여 그러한 통신 채널을 사용하기 위한 특정 구현은 예시적인 목적으로만 사용되며, 명시적으로 특허청구되지 않으면 본 발명의 범위를 제한하거나 좁히고자 하는 것이 아니다.
도 2a는 공통적인 특징들에 따라 여러 바인딩 구성요소들이 그룹화된 일반적인 사용자 인터페이스(101)를 도시한다. 예를 들어, 하나의 그룹화(182)는 여러 바인딩 구성요소(184)(신뢰성 바인딩 A 및 신뢰성 바인딩 B(196)로 도시됨)를 가질 수 있는 신뢰성(186) 그룹화를 포함한다. 그러한 신뢰성 바인딩 구성요소(196)는 WS 패밀리로부터 온 것일 수 있고, 특정 전송(예를 들어, HTTP)에 바인딩되었을 수 있으며, 또는 사유(proprietary) 신뢰성 바인딩 구성요소(196)일 수 있다. 바인딩 구성요소(184)의 그룹(182)으로의 이러한 조직화는 바인딩 구성요소(184)의 정의를 쉽게 하고, 그 특정 그룹(182)의 가장 일반적으로 요청되는 특성을 나타낸다.
도시된 바와 같이, 기타 그룹화들은 다양한 보안 바인딩 구성요소(198)(예를 들어, WS-Security, HTTPS, 사유 등)를 갖는 보안 그룹(188), 전송 바인딩 구성요 소들(181)(예를 들어, HTTP, HTTPS, HTTPR, 명명된 파이프, TCP, UDP, 큐잉된 메시지, 큐잉된 통합 메시지 등)을 갖는 전송 그룹(190), 인코딩 바인딩 구성요소들(183)(예를 들어, 텍스트, 바이너리, SOAP, 메시지 전송 최적화 메커니즘(MTOM) 등)을 갖는 인코딩 그룹(192), 및 부수적 그룹(194)을 포함할 수 있다. 물론, 기타 일반적인 통신 양상을 나타내는 기타 그룹화(182)(예를 들어, "WS 패밀리" 그룹화)가 존재할 수 있다. 사실상, 하기에 보다 상세히 언급된 바와 같이, 그룹화는 사유 및 기타 그룹화들을 허용하도록 완전히 플러그인가능하고 확장가능하다. 그러한 것으로서, 그룹화, 및 각 그룹 내의 바인딩 구성요소들의 상기 식별된 리스트는 단지 예시적인 목적으로 사용되며, 명시적으로 특허청구되지 않으면 본 발명의 범위를 제한하거나 좁히는 것으로 의도되지 않는다.
이 마지막 부수적 그룹화(194)는 어떠한 특정 그룹(182)에도 깔끔하게 들어맞지 않는 기타 바인딩 구성요소들(185)을 포함할 수 있다. 예를 들어, 기타 바인딩 구성요소들(185)은 (1) 상이한 통신 채널들이 하나의 듀플렉스 채널로 결합될 수 있는 복합 듀플렉스 바인딩 구성요소(composite duplex binding element), (2) 메시지가 RPC/문자, RPC/인코딩, 문서/문자, 문서/인코딩인지를 결정하기 위한 메시지 포맷 바인딩 구성요소, (3) 컨텍스트의 실행을 위한 컨텍스트 플로우 바인딩 구성요소, 및 (4) 트랜잭션의 플로우를 위한 트랜잭션 플로우 바인딩 구성요소 중 하나 이상일 수 있다. 물론 기타 일반적인 그룹화(182)에 들어맞지 않는 기타 바인딩 구성요소들(185)이 존재할 수 있다. 따라서, 기타 바인딩 구성요소들(185)의 상기 리스트는 단지 예시적인 목적으로 사용되며, 본 발명의 범위를 제한하거나 좁 히는 것으로 의도되지 않는다.
사실상, 이전에 언급된 바와 같이, 그룹화(182) 및 바인딩 구성요소(184)가 완전히 플러그인가능하고 확장가능한 예시적인 실시예들이 제공된다. 즉, 그룹화(182), 및 심지어 각 그룹(182) 내의 바인딩 구성요소들(184)도 바인딩 객체를 생성하기 위해 어플리케이션을 재작성해야할 필요없이 요구되는 대로 삭제, 삽입 또는 확장될 수 있다. 그룹화(182), 및 각 그룹화 내의 바인딩 구성요소들(184) 각각이 플러그인가능하고 확장가능하기 때문에, 그룹화(182) 및 바인딩 구성요소(184)의 상기 식별된 리스트는 모두 포함하는 것으로 의도되지는 않는다. 따라서, 이후부터 상기 식별된 리스트 및 기타 리스트들은 단지 예시적인 목적으로 사용되며, 명시적으로 특허청구되지 않으면 본 발명의 범위를 제한하거나 좁히는 것으로 의도되지 않는다.
도 2a에 도시된 사용자 인터페이스는 라디오 버튼을 사용하여 선택될 수 있는 바인딩 구성요소들(184)의 단순한 디스플레이임을 또한 유의해야 한다. 그러나, 기타 사용자 인터페이스들도 본 발명에 이용가능하다. 예를 들어, 바인딩 구성요소 및/또는 그룹화(182)는 개별적으로 또는 총괄적으로 디스플레이될 수 있다. 게다가, 선택의 타입이, 예를 들어, 체크 박스, 하이라이트 등으로 단순한 라디오 버튼과 상이할 수 있다. 또한, 바인딩 구성요소(또는 경우에 따라 객체일 수 있음)가 위저드에 제공될 수 있고, 이용가능한 다음 옵션이 이전에 행해진 선택에 의존할 수 있다. 또한, 어플리케이션 개발자가 클래스를 작성하고 있을 때, 사용자가 옵션들의 자동 완성을 통해 스크롤하도록 하는 팝업 박스가 나타날 수 있다. 사실상, 전술한 기능을 달성하기 위한 상이한 미적 양상들을 갖는 여러 사용자 인터페이스 설계가 존재할 수 있다. 그러한 것으로서, 본 명세서에 기술되거나 도시된 임의의 특정 사용자 인터페이스는 단지 예시적인 목적으로 사용되며, 명시적으로 특허청구되지 않으면 본 발명의 범위를 제한하거나 좁히는 것으로 의도되지 않는다.
바인딩 구성요소(194)의 상기 그룹화(182)는 일반적인 통신 특성들의 집합으로부터 커스텀 통신 바인딩 객체(custom communication binding object)를 정의하기 위한 유연한 메커니즘을 제공하지만, 그러한 유연성은 다수의 바인딩 객체를 갖는다는 거대성 문제(unwieldy problem)(즉, 바인딩 객체 및 그들의 가능한 조합들의 수)를 발생시킨다. 사실상, 계산을 하기 시작하면, 가능한 바인딩 객체들의 수는 수만 개에 이른다. 그러한 것으로서, 특정 바인딩 구성요소에 친숙하지 않은 개발자들은 그들의 특정 수요에 어떠한 조합이 가장 적합한지를 알 수 없다.
따라서, 기타 예시적인 실시예들은 산업에서 가장 일반적인 타입의 통신 바인딩 객체들의 컬렉션 또는 구성인 표준화된 바인딩을 제공한다. 다시 말해서, 예시적인 실시예들은 가장 일반적인 타입으로 증명된 여러 바인딩 구성요소들을 결합함으로써 사전 형성된 바인딩 객체를 제공한다. 도 2b는 사용자가 선택할 수 있는 여러 표준 바인딩(104)을 개발자에게 제공하기 위한 예시적인 사용자 인터페이스(102)를 도시한다. 사용자는 또한 참조번호(106)에 도시된 바와 같이 개개의 바인딩 구성요소를 선택하는 옵션을 제공받을 수 있다.
다음은 산업 표준에서 현재 사용되는 가장 일반적인 타입의 통신 바인딩 객 체들 중 몇몇의 리스트이다. 이 리스트는 그러한 바인딩 객체들을 생성하기 위한 특정 바인딩 구성요소들을 약술하지만, 산업이 성장하고 변화함에 따라 이러한 바인딩 구성요소들 또한 변할 수 있다. 따라서, 다음 리스트는 포괄적인 것으로 의도되지 않으며, 단순히 일반적으로 결합되는 확률이 높은 것으로 현재 여겨지는 바인딩 구성요소들의 예시적인 조합이다.
현재 사전 형성된 바인딩 객체의 한 타입은 웹 서비스 상호운용성:기본 프로파일(Web Services Interoperability: Basic Profile)(WSI-BP)에 따르는 웹 서비스와의 통신에 적합한 기본 프로파일 바인딩 객체(basic profile binding object)일 수 있다. 이 바인딩 객체는 HTTP 또는 HTTPS를 통한 텍스트 인코딩을 사용하며, 단방향 요청-응답 MEP(Message Exchange Pattern)를 지원한다. 그러나, 이 바인딩 객체는 듀플렉스 MEP, 전송 세션, 및 신뢰가능 세션을 지원하지 않는다.
또다른 일반적인 바인딩은 HTTP 또는 HTTPS 전송을 통해 WS 스위트 또는 패밀리를 사용하는 웹 서비스와의 안전하고 신뢰할 수 있는 통신에 적합한 WS 프로파일 바인딩일 수 있다. 이 바인딩 객체는 텍스트 또는 MTOM으로 인코딩할 수 있고, HTTP 또는 HTTPS 전송 프로토콜을 지원한다. 또한, 이러한 전송은 신뢰가능 세션 및 단방향 요청-응답 및 듀플렉스 MEP를 제공한다. 또다른 유사한 바인딩은 WS 프로파일 듀얼 HTTP 바인딩이며, 이것은 WS 패밀리와 함께 양방향 HTTP 통신을 사용하는 웹 서비스와의 안전하고 신뢰가능한 통신에 적합하다.
NET 프로파일 TCP 바인딩 객체가 이용될 수 있으며, 이것은 보안을 위해 TLS/SSL을 사용하든지 사용하지 않든지 TCP 전송을 거치는 바이너리를 통해 프로토 콜의 .NET 패밀리를 구현하는 서비스들 사이의 안전하고 신뢰가능한 통신에 적합하다. 또다른 유사한 사전 형성된 바인딩 객체는 .NET 프로파일 명명된 파이프 바인딩 객체일 수 있으며, 이것은 동일한 기계 상의 프로세스들 사이의 안전화고 신뢰가능한 통신에 적합하다. 또한, .NET 프로파일 듀얼 TCP 바인딩도 이용될 수 있으며, 이것은 두 개의 단방향 TCP 연결을 통해 프로토콜의 .NET 패밀리를 구현하는 서비스들 사이의 안전하고 신뢰가능한 통신에 적합하다. 게다가, .NET 큐잉 메시지 및 보안된 큐잉 메시지 바인딩 또한 이용될 수 있으며, 이것은 여러 큐잉된 전송 보안을 사용할 수 있는 서비스들 사이의 안전하고 큐잉된 통신에 적합하다. 또한 큐잉된 통합 바인딩(queued integration binding)도 이용가능하며, 이것은 기존의 큐잉된 어플리케이션과 상호동작하는 어플리케이션을 바인딩하기에 적합하다.
기타 일반적인 타입의 통신 바인딩 객체들은, 예를 들어, 중개 HTTP, TCP 및 명명된 파이프 바인딩과 같은 중개 바인딩(intermediary binding)을 포함할 수 있다. 이들 각각은 HTTP, TCP, 또는 명명된 파이프를 각각 리슨하는 SOAP 중개를 바인딩하기에 적합하다.
이전에 언급된 바와 같이, 바인딩 구성요소를 정의하는 예시적인 실시예의 경우에, 가능한 바인딩 객체들의 수는 수천에 이른다. 따라서, 상당한 시나리오 분석 및 윈도잉 후, 표준 바인딩에 대한 상기 리스트는 막대한 양의 일반적으로 사용되는 경우를 포함하는, 바인딩 객체들의 간결하고 고유한 집합을 정의한다. 그러나 또한 이전에 언급된 바와 같이, 이 리스트는 산업 표준이 변화함에 따라 그리고 필요에 따라 확장가능하고 플러그인가능하다. 부가적으로, 그 후 자식 바인딩 구성요소에서 구성 노브들 모두의 엄격한 합집합을 취함으로써 각 바인딩 객체에 대한 구성 노브들을 정의하기보다, 예시적인 실시예는 가장 필요할 것 같은 구성 노브들을 "재노출(re-expose)"한다.
도 3a-e는 이전에 기술된 다양한 그룹화 및 표준 바인딩이 위저드 타입 사용자 인터페이스(UI)에 어떻게 제공될 수 있는지를 도시한다. 예를 들어, 도 3a는 존재한다면 보안 바인딩(305)의 선택을 허용하는 바인딩 위저드 사용자 인터페이스(300)를 도시한다. 유사하게, 도 3b는 여러 보안 바인딩 구성요소(310)의 선택을 허용하는 바인딩 위저드 UI(300)를 도시한다. 도 3c에서, 바인딩 위저드 UI(300)는 사용자가 다수의 전송(315) 및 인코딩(320)으로부터 선택하도록 한다. 이전에 논의된 바와 같이, 도 3d는 기타 바인딩(330)과 함께 선택될 수 있는 선택적 바인딩 구성요소들을 포함하는 부수적 그룹화(325)를 갖는 바인딩 위저드(300)를 제공한다. 마지막으로, 도 3e는 이전에 기술된 표준 바인딩들(325)의 리스트를 갖는 바인딩 위저드 UI(300)를 제공한다. 물론, 이 UI(300)는 사유 바인딩(340)을 생성하기 위한 옵션을 포함할 수 있다.
특정 환경에서, 바인딩 구성요소들 중 하나 이상이 선택으로부터 요구되거나 제한될 수 있음을 유의해야 한다. 예를 들어, 전송 및 인코딩 바인딩 둘다를 선택하는 요구사항이 요구될 수 있다. 그러나, 선택된 전송이 특정 타입의 인코딩을 지원하지 않을 수 있다. 그러므로, 개발자는 지원되는 인코딩만을 선택하도록 제한될 수 있다. 또한, 특정 전송 또는 기타 바인딩 구성요소에 대한 디폴트가 존재할 수 있고, 개발자는 이전에 행해진 선택에 기초하여 인코딩 또는 기타 바인딩 구 성요소를 선택하는 옵션을 제공받지 않는다. 따라서, 본 발명은 서비스 개발자에게 이용가능한 선택에 대한 다양한 규칙을 구현하도록 구성된다. 그러나, 정의 및 구현될 수 있는 여러 요구사항 또는 제한이 존재할 수 있다는 점을 유의해야 한다. 따라서, 요구사항 및 제한에 대한 상기 예는 예시적인 목적으로 사용되며, 본 발명은 구현 목적의 여러 규칙을 구성할 수 있다(또는 어떠한 규칙도 구성하지 않을 수 있음).
본 발명은 또한 기능적 단계 및/또는 비기능적 동작을 포함하는 방법의 관점에서 기술될 수 있다. 본 발명의 실행 시 수행될 수 있는 단계 및/또는 동작의 설명이 후술된다. 보통, 기능적 단계는 달성되는 발명의 결과를 기술하는 반면, 비기능적 동작은 특정 결과를 달성하기 위한 보다 구체적인 동작을 기술한다. 기능적 단계 및/또는 비기능적 동작이 특정 순서로 기술 또는 특허청구될 수 있지만, 본 발명은 단계 및/또는 동작의 임의의 특정 순서 또는 조합으로 반드시 제한되지는 않는다. 또한, 특허청구범위 인용에서의 단계 및/또는 동작의 사용 - 및 도 4-6에 대한 흐름도의 후술되는 설명 - 은 그러한 용어들의 바람직한 특정 사용을 나타내기 위하여 사용된다.
도 4-6은 본 발명의 다양한 예시적인 실시예에 대한 흐름도를 도시한다. 도 4-6에 대한 후술되는 설명은 때때로 도 1a-c 및 3a-e로부터 대응하는 구성요소를 참조할 것이며, 참조는 이러한 도면들로부터 특정 구성요소에 행해질 수 있지만, 그러한 구성요소는 단지 예시적인 목적으로 사용되며, 명시적으로 특허청구되지 않으면 본 발명의 범위를 제한하거나 좁히는 것으로 의도되지 않는다.
도 4는 엔드포인트들 사이에 메시지를 전달하기 위해 사용되는 런타임 통신 채널을 생성하는 데에 사용하기 위한 바인딩 객체를 구성하는 자동화되고 사용자에게 친숙한 방식을 개발자에게 제공하는 방법(400)의 예시적인 흐름도를 도시한다. 방법(400)은 선택을 위해 사용자에게 다수의 바인딩 구성요소를 제공하는 단계(405)를 포함한다. 예를 들어, 서비스 개발자 어플리케이션(110)은 선택을 위해 사용자에게 다수의 바인딩 구성요소(115)를 제공하기 위하여 UI(112)를 사용할 수 있다. 바인딩 구성요소(115)는 클라이언트(130)와 서비스(140) 또는 서비스 엔드포인트(160) 사이에 메시지를 전달하기 위한 런타임 통신 채널(165)의 통신 양상을 나타낸다.
이러한 통신 양상들은 적어도 전송 양상(예를 들어, UDP, HTTP, HTTPS, HTTPR, TCP, SMTP, 메시징 미들웨어, 메시징 미들웨어 통합 등) 및 인코딩 양상(예를 들어, 텍스트, 바이너리, SOAP, MTOM 등)을 포함해야 한다. 또한, 통신 양상은 신뢰성, 보안, 복합 듀플렉스, 메시지 포맷, 컨텍스트 플로우, 트랜잭션 플로우 등을 포함할 수 있다. 또한, 상기 기술된 바와 같이 사용자에게, 또는 메타데이터, 채널 팩토리 및 리스너 팩토리를 구성하는 기반 형성자에게 다수의 바인딩 구성요소를 제공하는 어플리케이션을 재작성해야 할 필요없이 바인딩 구성요소가 추가, 수정 또는 삭제될 수 있다는 점에서 바인딩 구성요소는 완전히 확장가능하고 맞춤화될 수 있다. 게다가, 이러한 바인딩 구성요소들은, 예를 들어, 신뢰성 그룹, 보안 그룹, 전송 그룹, 인코딩 그룹, 부수적 그룹 등과 같은 그룹으로 사용자에게 제공될 수 있다. 개개의 바인딩 구성요소에 유사하게, 시스템을 붕괴하지 않고서 바 인딩 구성요소가 각 그룹에 추가, 삭제 또는 수정될 수 있고, 그룹들 자체가 추가, 삭제 또는 수정될 수 있다는 점에서, 그룹들은 완전히 확장가능하고 플러그인가능하다.
방법(400)은 또한 다수의 바인딩 구성요소로부터 하나 이상의 바인딩 구성요소를 선택하는 사용자 입력을 수신하는 단계(410)를 포함한다. 따라서, 서비스 개발자 어플리케이션(110)은 전송 양상 및/또는 인코딩 양상에 대응하는 바인딩 구성요소(115)를 선택하는 사용자 입력을 수신할 수 있다. 선택에 기초하여, 방법(400)은 또한 메타데이터, 채널 팩토리 및 리스너 팩토리를 생성하는 단계(415)를 포함한다. 보다 상세하게는, 바인딩 구성요소(115)의 선택 수신 시 서비스 어플리케이션(110)(또는 이전에 기술된 바인딩 형성자)은 바인딩 구성요소를 포함하는 바인딩 객체를 기술하는 메타데이터의 컬렉션(125)을 생성할 수 있다. 메타데이터의 컬렉션(125)은 런타임 통신 양상을 구현할 프로토콜의 추상화 표현을 제공할 것이다. 이 메타데이터(125)는 WSDL 문서의 일부일 수 있으며 또는 소정의 다른 형태를 가질 수 있다. 또한, 서비스 개발자 어플리케이션은 채널 팩토리(135)를 생성할 수 있고, 그것은 런타임 통신 채널(165)을 생성하기 위해 런타임 메타데이터의 컬렉션(125)을 사용하도록 구성될 수 있다. 또한, 서비스 개발자 어플리케이션(110)은 서비스 엔드포인트에서 메시지를 프로세싱하기 위하여 런타임 통신 채널을 수락하도록 구성되는 리스너 팩토리(145)를 발생 또는 생성하기 위해 사용될 수 있다. 복합 듀플렉스 바인딩 구성요소가 선택되면, 두 개의 전송 바인딩 구성요소 및/또는 두 개의 인코딩 바인딩 구성요소가 선택될 수 있다. 물론, 하나의 전송 및/또는 하나의 인코딩 바인딩 구성요소가 양 방향 모두에 대해 선택 및 가정될 수 있다.
도 5는 런타임 통신 채널을 생성하기 위해 사용될 수 있는 일반적으로 사용되고 호환가능한 바인딩 객체들의 리스트를 개발자에게 제공함으로써, 바인딩 객체를 자동으로 구성하는 간결한 방식을 개발자에게 제공하는 방법(500)을 도시한다. 방법(500)은 다수의 바인딩 객체를 사용자에게 제공하는 단계(505)를 포함한다. 즉, 도 2b에 도시된 바와 같이, 사용자는 선택을 위해 다수의 바인딩 객체(104)를 포함하는 UI(102)를 제공받을 수 있다. 다수의 바인딩 객체(104)는 각각 다수의 바인딩 구성요소를 결합하는 호환가능성 및 산업 가능성에 기초하여 결합되는 다수의 바인딩 구성요소(115)를 포함한다. 또한, 다수의 바인딩 구성요소(115) 각각은 궁극적으로 클라이언트(130)와 서비스 엔드포인트(160) 사이에 메시지(170)를 전송하기 위한 런타임 통신 채널(165)을 생성하기 위해 사용될 다수의 통신 양상을 나타낸다. 통신 양상은 인코딩 타입, 전송 타입, 신뢰성, 보안, 복합 듀플렉스 등의 전술한 통신 양상을 포함할 수 있다.
방법(500)은 또한 다수의 바인딩 객체로부터 바인딩 객체를 선택하는 사용자 입력을 수신하는 단계(510)를 포함한다. 즉, UI(102)는 다수의 바인딩 객체(104)로부터 바인딩 객체를 선택하는 사용자 입력을 수신할 수 있다. 방법(500)은 또한 선택된 바인딩 객체를 기술하는 메타데이터를 자동으로 생성하는 단계(515)를 포함한다. 즉, 메타데이터(125)는 다수의 표준 바인딩(104)으로부터의 표준 바인딩(104)의 선택에 기초하여 생성될 수 있다. 메타데이터 내에 기술된 바인딩 객체는 런타임 통신 양상을 구현할 프로토콜 스택의 추상화 표현을 제공한다.
또한, 런타임 통신 채널(165)을 생성하기 위해 런타임 메타데이터(125)를 사용하도록 구성되는 채널 팩토리(135)가 생성될 수 있다. 또한, 리스너 팩토리는 런타임 통신 채널(165)을 수락하고, 서비스 엔드포인트(160)에서 메시지를 프로세싱하기 위하여 통신 양상을 역다중화하도록 구성될 수 있다. 바인딩 객체는 기본 프로파일 바인딩, WS 프로파일 바인딩, WS 프로파일 듀얼 바인딩, Net 프로파일 TCP 바인딩, Net 프로파일 듀얼 TCP 바인딩, Net 프로파일 명명된 파이프 바인딩, Net 프로파일 큐잉된 바인딩, 뷰잉된 통합 바인딩, 중개 바인딩 등 중 하나 이상일 수 있다.
도 6은 엔드포인트들 사이에 메시지를 통신하기 위해 사용되는 프로토콜을 구현하기 위한 런타임 통신 채널을 생성하기 위하여 바인딩 객체를 사용하는 방법(600)을 도시한다. 방법(600)은 바인딩 객체를 기술하는 메타데이터를 액세스하는 단계(605)를 포함한다. 보다 상세하게는, 채널 팩토리(135)는 분산 시스템(100)에서 엔드포인트들 사이에 메시지가 어떻게 전달될지를 나타내는 다수의 사용자 선택된 바인딩 구성요소를 갖는 바인딩 객체를 포함하는 메타데이터(125)를 액세스할 수 있다. 바인딩 객체에 기초하여, 방법(600)은 또한 런타임 통신 채널을 초기화하는 단계(610)를 포함한다. 보다 상세하게는, 메타데이터(125) 내의 바인딩 객체에 기초하여, 채널 팩토리(135)는 사용자 선택된 바인딩 구성요소에 대응하는 통신 양상을 포함하는 런타임 통신 채널(165)을 초기화할 수 있다. 통신 양상들은 이전에 기술된 바와 같이 적어도 전송 양상 및 인코딩 양상을 포함하는 프로토콜로 결 합될 수 있다. 또한, 방법(600)은 통신 양상에 따라 메시지를 전달하기 위해 런타임 통신 채널을 사용하는 단계(615)를 포함한다. 보다 상세하게는, 채널 팩토리(135)로부터 채널(180)을 요청한 후 클라이언트(130)는 런타임 통신 채널(165)을 참조하기 위해 사용되는 핸들(175)을 수신할 수 있다. 그 이후, 통신 양상 또는 프로토콜 스택에 따라 메시지(170)가 서비스(140)에 관련된 엔드포인트(160)에 전송 또는 전달될 수 있다.
기타 예시적인 실시예들에서는, 메시지(170)를 서비스 엔드포인트(160)에 전송하기 이전에, 서비스 엔드포인트(160)에 대응하는 리스너(150)가 런타임 통신 채널(165)을 수락하고, 서비스 엔드포인트(160)에서 메시지를 소비하기 위하여 메시지로부터 통신 양상들을 역다중화하기 위한 서비스 통신 채널을 생성한다. 이전에 기술된 기타 양상들 또한 이 특정 방법(600)에 이용될 수 있다.
본 발명의 범위 내의 실시예들은 또한 컴퓨터-실행가능 명령어 또는 데이터 구조를 전달 또는 저장하기 위한 컴퓨터-판독가능 매체를 포함한다. 그러한 컴퓨터-판독가능 매체는 범용 또는 특수용 컴퓨터에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 제한을 가하지 않는 예로서, 그러한 컴퓨터-판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광 디스크 저장장치, 자기 디스크 저장장치 또는 기타 자기 저장 장치, 또는 컴퓨터-실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 전달 또는 저장하기 위해 사용될 수 있고 범용 또는 특수용 컴퓨터에 의해 액세스될 수 있는 임의의 기타 매체를 포함할 수 있다. 네트워크 또는 또다른 통신 연결(유선, 무선이든지, 또는 유선 또는 무선의 조합이든지)을 통해 정보가 컴퓨터에 전달 또는 제공될 때, 컴퓨터는 당연히 연결을 컴퓨터-판독가능 매체로 여길 수 있다. 따라서, 임의의 그러한 연결은 당연히 컴퓨터-판독가능 매체로 여겨진다. 상기의 조합들 또한 컴퓨터-판독가능 매체의 범위 내에 포함되어야 한다. 예를 들어, 컴퓨터-실행가능 명령어는 범용 컴퓨터, 특수용 컴퓨터, 또는 특수용 프로세싱 장치가 특정 기능 또는 기능들의 그룹을 수행하도록 하는 명령어 및 데이터를 포함한다.
도 7 및 후술되는 논의는 본 발명이 실행될 수 있는 적합한 컴퓨팅 환경의 간략하고 일반적인 설명을 제공하기 위한 것이다. 필수적인 것은 아니지만, 본 발명은 네트워크 환경에서 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터-실행가능 명령어의 일반적인 문맥으로 기술될 것이다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 컴퓨터-실행가능 명령어, 관련 데이터 구조, 및 프로그램 모듈은 본 명세서에 개시된 방법의 단계들을 실행하기 위한 프로그램 코드 수단의 예를 나타낸다. 그러한 실행가능 명령어 또는 관련 데이터 구조의 특정 시퀀스는 그러한 단계에서 기술된 기능들을 구현하기 위한 대응하는 동작의 예를 나타낸다.
본 분야에서 숙련된 기술을 가진 자들은 본 발명이 개인용 컴퓨터, 포켓형 장치, 멀티-프로세서 시스템, 멀티프로세서-기반 또는 프로그래밍가능한 가전기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 여러 타입의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경에서 실행될 수 있음을 잘 알 것이다. 본 발명은 또한 통신 네트워크를 통해 (유선 링크, 무선 링크에 의해서든지, 유선 또는 무선 링크의 조합에 의해서든지) 링크되는 로컬 및 원격 프로세싱 장치에 의해 태스크가 수행되는 분산 컴퓨팅 환경에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 장치 둘다에 위치될 수 있다.
도 7을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 프로세싱 유닛(721), 시스템 메모리(722), 및 시스템 메모리(722)를 포함하는 여러 시스템 컴포넌트를 프로세싱 유닛(721)에 연결하는 시스템 버스(723)를 포함하는 전통적인 컴퓨터(720)의 형태로 범용 컴퓨팅 장치를 포함한다. 시스템 버스(723)는 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것을 사용하는 로컬 버스를 포함하는 여러 타입의 버스 구조 중 임의의 것일 수 있다. 시스템 메모리는 ROM(724) 및 RAM(725)을 포함한다. 시작할 때 등에, 컴퓨터(720) 내의 구성요소들 사이에 정보 전달을 돕는 기본 루틴을 포함하는 기본 입력/출력 시스템(BIOS)(726)은 ROM(724)에 저장될 수 있다.
컴퓨터(720)는 또한 자기 하드 디스크(739)에 대한 판독 및 기입을 위한 자기 하드 디스크 드라이브(727), 분리형 자기 디스크(729)에 대한 판독 또는 기입을 위한 자기 디스크 드라이브(728), 및 CD-ROM 또는 기타 광 매체와 같은 분리형 광 디스크(731)에 대한 판독 또는 기입을 위한 광 디스크 드라이브(730)를 포함할 수 있다. 자기 하드 디스크 드라이브(727), 자기 디스크 드라이브(728), 및 광 디스크 드라이브(730)는 각각 하드 디스크 드라이브 인터페이스(732), 자기 디스크 드라이브-인터페이스(733), 및 광 드라이브 인터페이스(734)에 의해 시스템 버스 (723)에 연결된다. 드라이브 및 관련 컴퓨터-판독가능 매체는 컴퓨터(720)에 대한 컴퓨터-실행가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장을 제공한다. 본 명세서에 기술된 예시적인 환경이 자기 하드 디스크(739), 분리형 자기 디스크(729) 및 분리형 광 디스크(731)를 이용하지만, 자기 카세트, 플래시 메모리 카드, DVD, 베르누이 카트리지, RAM, ROM 등을 포함하는, 데이터를 저장하기 위한 다른 타입의 컴퓨터 판독가능 매체가 사용될 수 있다.
운영 시스템(735), 하나 이상의 어플리케이션 프로그램(736), 기타 프로그램 모듈(737), 및 프로그램 데이터(738)를 포함하여 하나 이상의 프로그램 모듈을 포함하는 프로그램 코드 수단은 하드 디스크(739), 자기 디스크(729), 광 디스크(731), ROM(724) 또는 RAM(725)에 저장될 수 있다. 사용자는 키보드(740), 포인팅 장치(742), 또는 마이크, 조이 스틱, 게임 패드, 위성 디쉬, 스캐너 등과 같은 기타 입력 장치(도시되지 않음)를 통해 컴퓨터(720)에 명령어 및 정보를 입력할 수 있다. 이들 및 기타 입력 장치들은 종종 시스템 버스(723)에 연결된 직렬 포트 인터페이스(746)를 통해 프로세싱 유닛(721)에 연결된다. 대안적으로, 입력 장치는 병렬 포트, 게임 포트 또는 USB와 같은 다른 인터페이스에 의해 연결될 수 있다. 모니터(747) 또는 또다른 디스플레이 장치 또한 비디오 어댑터(748)와 같은 인터페이스를 통해 시스템 버스(723)에 연결된다. 모니터 이외에, 개인용 컴퓨터는 전형적으로 스피커 및 프린터와 같은 기타 주변 출력 장치(도시되지 않음)를 포함한다.
컴퓨터(720)는 원격 컴퓨터(749a 및 749b)와 같은 하나 이상의 원격 컴퓨터에의 논리적 연결을 사용하는 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터 (749a 및 749b)는 각각 또다른 개인용 컴퓨터, 서버, 라우터, 네트워크 PC, 피어 장치 또는 기타 일반적인 네트워크 노드일 수 있고, 도 7에는 메모리 저장 장치(750a 및 750b) 및 관련 어플리케이션 프로그램(736a 및 736b)만이 도시되었지만, 전형적으로 컴퓨터(720)에 관련하여 상기 기술된 구성요소 중 다수 또는 모두를 포함한다. 도 7에 도시된 논리적 연결은 제한을 가하지 않는 예로서 본 명세서에 제공되는 근거리 통신망(LAN)(751) 및 광역 통신망(WAN)(752)을 포함한다. 그러한 네트워크 환경은 사무소-규모 또는 기업-규모 컴퓨터 네트워크, 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(720)는 네트워크 인터페이스 또는 어댑터(753)를 통해 로컬 네트워크(751)에 연결된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(720)는 인터넷과 같은 WAN(752)을 통해 통신을 설립하기 위한 모뎀(754), 무선 링크, 또는 기타 수단을 포함할 수 있다. 내장 또는 외장일 수 있는 모뎀(754)은 직렬 포트 인터페이스(746)를 통해 시스템 버스(723)에 연결된다. 네트워크 환경에서, 컴퓨터(720)에 관련하여 도시된 프로그램 모듈, 또는 그들의 일부가 원격 메모리 저장 장치에 저장될 수 있다. 도시된 네트워크 연결은 예시적이며, WAN(752)을 통해 통신을 설립하는 기타 수단이 사용될 수 있음을 잘 알 것이다.
본 발명은 본 발명의 취지 또는 본질적인 특징을 벗어나지 않고서 기타 특정 형태로 구현될 수 있다. 기술된 실시예들은 모든 양상에서 단지 제한을 가하지 않는 예시적인 것으로서 여겨질 것이다. 그러므로 본 발명의 범위는 전술한 설명에 의해서가 아니라 첨부된 특허청구범위에 의해 나타내어진다. 특허청구범위의 등가물의 의미 및 범위 내에 속하는 모든 변경이 본 발명의 범위 내에 포함될 것이다.
본 발명에 따르면, 바인딩 객체를 구성 및 사용하는 자동화되고 사용자에게 친숙한 방식이 제공된다.

Claims (20)

  1. 컴퓨팅 시스템에서, 엔드포인트들 사이에 메시지를 전달할 때 상기 메시지에 통신 양상(communication aspect)을 적용하기 위하여 런타임 통신 채널을 생성하는 데에 사용하기 위한 바인딩 객체(binding object)를 구성하는 사용자 친화적인 자동화된 방식을 개발자에게 제공하는 방법으로서,
    선택을 위해 다수의 바인딩 구성요소를 사용자에게 제공하는 단계 - 상기 바인딩 구성요소들은 궁극적으로 클라이언트와 서비스 엔드포인트 사이에 메시지를 전달하기 위한 런타임 통신 채널을 생성하기 위해 사용될 통신 양상을 나타냄 - ,
    상기 다수의 바인딩 구성요소로부터 하나 이상의 바인딩 구성요소를 선택하는 사용자 입력을 수신하는 단계, 및
    상기 선택에 기초하여,
    상기 하나 이상의 바인딩 구성요소의 컬렉션이며 상기 통신 양상을 런타임에 구현할 프로토콜 스택의 추상화 표현을 제공하는, 바인딩 객체를 기술하는 메타데이터의 컬렉션,
    상기 런타임 통신 채널을 생성하기 위하여 런타임에 상기 메타데이터의 컬렉션을 사용하도록 구성된 채널 팩토리(channel factory), 및
    상기 서비스 엔드포인트에서 상기 메시지를 프로세싱하기 위하여 상기 런타임 통신 채널을 수락하고 상기 통신 양상을 역다중화하도록 구성된 리스너 팩토리(listener factory)
    를 자동으로 생성하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    전송 양상 및 인코딩 양상에 각각 대응하는 전송 바인딩 구성요소(transport binding element) 및 인코딩 바인딩 구성요소(encoding binding element)가 선택되며, 상기 전송 양상은 UDP, HTTP, HTTPS, HTTPR, 명명된 파이프(named pipe), TCP, SMTP, 메시징 큐잉(messaging queuing), 메시징 큐잉 통합(messaging queuing integration) 중 하나이며, 상기 인코딩 양상은 텍스트, 바이너리, MTOM 중 하나인 방법.
  3. 제1항에 있어서,
    상기 메타데이터의 컬렉션은 WSDL 문서의 일부인 방법.
  4. 제1항에 있어서,
    상기 다수의 바인딩 구성요소는 전송 양상, 인코딩 양상, 신뢰성 양상, 보안 양상, 복합 듀플렉스 양상, 메시지 포맷 양상, 컨텍스트 플로우 양상, 및 트랜잭션 플로우 양상 중 하나 이상에 대응하는 방법.
  5. 제1항에 있어서,
    상기 사용자에게 상기 다수의 바인딩 구성요소를 제공하는 어플리케이션을 재작성할 필요없이 바인딩 구성요소들이 추가, 수정 또는 삭제될 수 있다는 점에서, 상기 바인딩 구성요소들이 완전히 확장가능하고 맞춤화가능한 방법.
  6. 제1항에 있어서,
    상기 바인딩 구성요소는 신뢰성 그룹, 보안 그룹, 전송 그룹, 인코딩 그룹 및 부수적 그룹의 그룹들로 상기 사용자에게 제공되는 방법.
  7. 제6항에 있어서,
    상기 바인딩 구성요소들이 각 그룹에 추가, 삭제 또는 수정될 수 있고, 상기 그룹들이 추가, 삭제 또는 수정될 수 있다는 점에서, 상기 그룹들은 완전히 확장가능하고 플러그인가능한 방법.
  8. 제1항에 있어서,
    복합 듀플렉스 바인딩 구성요소가 선택되고, 두 개의 전송 바인딩 구성요소가 선택되는 방법.
  9. 컴퓨팅 시스템에서, 런타임 통신 채널을 생성하는 데에 사용될 수 있는 일반적으로 사용되고 호환가능한 바인딩 객체들의 리스트를 개발자에게 제공함으로써, 바인딩 객체를 자동으로 구성하는 간결한 방식을 상기 개발자에게 제공하는 방법으 로서,
    바인딩 구성요소들을 결합키시는 호환가능성 및 산업 가능성(industry probability)에 기초하여 결합되는 다수의 바인딩 구성요소를 각각 포함하는 다수의 바인딩 객체를 선택을 위해 사용자에게 제공하는 단계 - 상기 다수의 구성요소 각각은 궁극적으로 클라이언트와 서비스 엔드포인트 사이에 메시지를 전달하기 위한 런타임 통신 채널을 생성하기 위해 사용될 다수의 통신 양상을 나타냄 - ,
    상기 다수의 바인딩 객체로부터 한 바인딩 객체를 선택하는 사용자 입력을 수신하는 단계, 및
    상기 선택된 바인딩 객체를 기술하는 메타데이터의 컬렉션을 자동으로 생성하는 단계 - 상기 메타데이터의 컬렉션은 상기 통신 양상을 런타임에 구현할 상기 런타임 통신 채널의 추상화 표현을 제공함 -
    를 포함하는 방법.
  10. 제9항에 있어서, 상기 선택에 기초하여,
    상기 런타임 통신 채널을 생성하기 위하여 런타임에 상기 메타데이터의 컬렉션을 사용하도록 구성된 채널 팩토리, 및
    상기 서비스 엔드포인트에서 상기 메시지를 프로세싱하기 위해 상기 런타임 통신 채널을 수락하고 상기 통신 양상을 역다중화하도록 구성된 리스너 팩토리
    를 자동으로 생성하는 단계를 더 포함하는 방법.
  11. 제10항에 있어서,
    상기 다수의 바인딩 객체 중 하나 이상은 전송 양상 및 인코딩 양상에 각각 대응하는 전송 바인딩 구성요소 및 인코딩 바인딩 구성요소를 포함하며, 상기 전송 양상은 UDP, HTTP, HTTPS, HTTPR, 명명된 파이프, TCP, SMTP, 메시징 큐잉, 메시징 큐잉 통합 중 하나이며, 상기 인코딩 양상은 텍스트, 바이너리, MTOM 중 하나인 방법.
  12. 제10항에 있어서,
    상기 메타데이터의 컬렉션은 WSDL 문서의 일부인 방법.
  13. 제10항에 있어서,
    상기 다수의 바인딩 구성요소는 전송 양상, 인코딩 양상, 신뢰성 양상, 보안 양상, 복합 듀플렉스 양상, 메시지 포맷 양상, 컨텍스트 플로우 양상, 및 트랜잭션 플로우 양상 중 하나 이상에 대응하는 방법.
  14. 제10항에 있어서,
    상기 다수의 바인딩 객체를 상기 사용자에게 제공하는 어플리케이션을 재작성할 필요없이 바인딩 객체들이 추가, 수정 또는 삭제될 수 있다는 점에서, 상기 바인딩 객체들은 완전히 확장가능하고 맞춤화가능한 방법.
  15. 제10항에 있어서,
    상기 바인딩 객체들은 기본 프로파일 바인딩, WS 프로파일 바인딩, WS 프로파일 듀얼 바인딩, Net 프로파일 TCP 바인딩, Net 프로파일 듀얼 TCP 바인딩, Net 프로파일 명명된 파이프 바인딩, Net 프로파일 큐잉된 바인딩, 큐잉된 통합 바인딩, 또는 중개 바인딩 중 하나 이상으로부터 선택되는 방법.
  16. 클라이언트 컴퓨팅 시스템에서, 프로토콜 스택의 통신 양상에 따라 엔드포인트들 사이에 메시지를 통신하기 위하여 상기 프로토콜 스택을 구현하기 위한 런타임 통신 채널을 생성하기 위해 바인딩 객체를 사용하는 방법으로서,
    하나 이상의 사용자 선택된 바인딩 구성요소를 포함하는 바인딩 객체를 기술하는 메타데이터를 액세스하는 단계 - 상기 바인딩 구성요소는 궁극적으로 클라이언트와 서비스 엔드포인트 사이에 메시지를 전달하기 위한 런타임 통신 채널을 생성하기 위해 사용될 하나 이상의 통신 양상을 나타냄 - ,
    상기 메타데이터에 기초하여, 상기 하나 이상의 사용자 선택된 바인딩 구성요소에 대응하는 상기 하나 이상의 통신 양상을 구현하도록 구성된 하나 이상의 채널 컴포넌트를 포함하는 상기 런타임 통신 채널을 초기화하는 단계, 및
    상기 하나 이상의 통신 양상에 따라 상기 메시지를 상기 서비스에 관련된 엔드포인트에 전달하기 위해 상기 런타임 통신 채널을 사용하는 단계
    를 포함하는 방법.
  17. 제16항에 있어서,
    상기 메시지를 상기 서비스 엔드포인트에 전송하기 이전에, 상기 서비스 엔드포인트에서 상기 메시지를 소비하기 위하여 상기 서비스 엔드포인트에 대응하는 리스너는 상기 통신 채널을 수락하고 상기 메시지로부터 하나 이상의 통신 양상을 역다중화하는 방법.
  18. 제16항에 있어서,
    상기 하나 이상의 바인딩 구성요소는 전송 양상 및 인코딩 양상에 각각 대응하는 전송 바인딩 구성요소 및 인코딩 바인딩 구성요소를 포함하고, 상기 전송 양상은 UDP, HTTP, HTTPS, HTTPR, 명명된 파이프, TCP, SMTP, 메시징 큐잉, 메시징 큐잉 통합 중 하나이며, 상기 인코딩 양상은 텍스트, 바이너리, MTOM 중 하나인 방법.
  19. 제16항에 있어서,
    상기 메타데이터는 WSDL 문서의 일부인 방법.
  20. 제16항에 있어서,
    상기 하나 이상의 바인딩 구성요소는 전송 양상, 인코딩 양상, 신뢰성 양상, 보안 양상, 복합 듀플렉스 양상, 메시지 포맷 양상, 컨텍스트 플로우 양상, 및 트랜잭션 플로우 양상 중 하나 이상에 대응하는 방법.
KR1020050122302A 2005-02-01 2005-12-13 통신 바인딩 객체를 형성 및 사용하기 위한 시스템 및 방법 KR101159357B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/048,346 2005-02-01
US11/048,346 US7921216B2 (en) 2005-02-01 2005-02-01 System and method for building and using communication binding objects

Publications (2)

Publication Number Publication Date
KR20060088472A true KR20060088472A (ko) 2006-08-04
KR101159357B1 KR101159357B1 (ko) 2012-06-25

Family

ID=36375557

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050122302A KR101159357B1 (ko) 2005-02-01 2005-12-13 통신 바인딩 객체를 형성 및 사용하기 위한 시스템 및 방법

Country Status (10)

Country Link
US (1) US7921216B2 (ko)
EP (1) EP1686476A3 (ko)
JP (1) JP2006216035A (ko)
KR (1) KR101159357B1 (ko)
CN (1) CN1816052A (ko)
AU (1) AU2005242148A1 (ko)
BR (1) BRPI0600207A (ko)
CA (1) CA2531928A1 (ko)
MX (1) MXPA06000328A (ko)
RU (1) RU2395112C2 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8069181B1 (en) * 2006-04-18 2011-11-29 International Business Machines Corporation Autodiscovery of business services
US7792921B2 (en) * 2007-09-24 2010-09-07 Microsoft Corporation Metadata endpoint for a generic service
US8739180B2 (en) * 2008-01-25 2014-05-27 International Business Machines Corporation Processing of MTOM messages
US8135785B2 (en) * 2008-09-30 2012-03-13 Ebay Inc. System and method for processing messages using pluggable protocol processors in a service-oriented pipeline architecture
US8763008B2 (en) 2008-09-30 2014-06-24 Ebay Inc. System and method for processing messages using native data serialization/deserialization in a service-oriented pipeline architecture
US8806506B2 (en) * 2008-09-30 2014-08-12 Ebay Inc. System and method for processing messages using a common interface platform supporting multiple pluggable data formats in a service-oriented pipeline architecture
US7835309B2 (en) * 2008-12-16 2010-11-16 Microsoft Corporation Multiplexed communication for duplex applications
US8341280B2 (en) * 2008-12-30 2012-12-25 Ebay Inc. Request and response decoupling via pluggable transports in a service oriented pipeline architecture for a request response message exchange pattern
US8166200B2 (en) * 2009-03-30 2012-04-24 Microsoft Corporation Smart routing
US20110106712A1 (en) * 2009-11-02 2011-05-05 Microsoft Corporation Cost-Aware Service Aggregation
US8434097B2 (en) * 2009-12-30 2013-04-30 Sybase, Inc. Dynamic data binding for MBOs for container based application
US8514749B2 (en) * 2010-03-10 2013-08-20 Microsoft Corporation Routing requests for duplex applications
CN102469035B (zh) * 2010-11-05 2016-01-20 腾讯科技(深圳)有限公司 跨进程通信的方法和装置
US20110321022A1 (en) * 2010-06-25 2011-12-29 Mitel Networks Corporation Code generation through metadata programming for mobile devices and web platforms to ease access to web services
US9081893B2 (en) 2011-02-18 2015-07-14 Microsoft Technology Licensing, Llc Dynamic lazy type system
RU2481626C2 (ru) * 2011-05-27 2013-05-10 Нокиа Корпорейшн Аннотирование контента с помощью контекстных метаданных
US9614895B2 (en) * 2012-04-25 2017-04-04 Hewlett Packard Enterprise Development Lp File transfer using XML
US9292342B2 (en) * 2012-12-26 2016-03-22 Microsoft Technology Licensing, Llc Schedule based execution with extensible continuation based actions
US9727445B2 (en) 2013-11-09 2017-08-08 Microsoft Technology Licensing, Llc. Debugging a web application locally during development
US9832291B2 (en) * 2015-01-12 2017-11-28 Cisco Technology, Inc. Auto-configurable transport stack
US9710361B2 (en) * 2015-02-25 2017-07-18 International Business Machines Corporation Smart programming playgrounds
CN112181779B (zh) * 2020-09-28 2024-06-04 北京云歌科技有限责任公司 一种ai元数据的综合处理方法和系统
CN113312031B (zh) * 2021-06-23 2023-09-15 中国航空无线电电子研究所 一种软件通信体系结构的命名服务接口
CN117749615B (zh) * 2024-02-19 2024-06-07 成都九洲电子信息系统股份有限公司 基于对象组合化的采管控通信链路构建方法、系统及装置

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5280481A (en) * 1991-09-20 1994-01-18 Extension Technology Corp. Local area network transmission emulator
US5903754A (en) * 1994-06-21 1999-05-11 Microsoft Corporation Dynamic layered protocol stack
US6044224A (en) * 1996-06-26 2000-03-28 Sun Microsystems, Inc. Mechanism for dynamically associating a service dependent representation with objects at run time
US6044409A (en) * 1996-06-26 2000-03-28 Sun Microsystems, Inc. Framework for marshaling and unmarshaling argument object references
US6032199A (en) * 1996-06-26 2000-02-29 Sun Microsystems, Inc. Transport independent invocation and servant interfaces that permit both typecode interpreted and compiled marshaling
US5809507A (en) * 1996-07-01 1998-09-15 Sun Microsystems, Inc. Method and apparatus for storing persistent objects on a distributed object network using a marshaling framework
US5991535A (en) * 1996-07-03 1999-11-23 Sun Microsystems, Inc. Visual composition tool for constructing application programs using distributed objects on a distributed object network
US5949998A (en) * 1996-07-03 1999-09-07 Sun Microsystems, Inc. Filtering an object interface definition to determine services needed and provided
US5860004A (en) * 1996-07-03 1999-01-12 Sun Microsystems, Inc. Code generator for applications in distributed object systems
US5920868A (en) * 1996-07-03 1999-07-06 Sun Microsystems, Inc. Cataloging apparatus for facilitating the re-use of distributed objects in a distributed object system
US6230161B1 (en) * 1998-07-31 2001-05-08 International Business Machines Corporation Dynamic expression editor
DE50013558D1 (de) * 2000-02-23 2006-11-16 Tektronix Berlin Gmbh & Co Kg Vorrichtung zum Aufbau eines Protokoll-Stacks und zugehöriges Verfahren
GB0011954D0 (en) * 2000-05-17 2000-07-05 Univ Surrey Protocol stacks
US6934756B2 (en) * 2000-11-01 2005-08-23 International Business Machines Corporation Conversational networking via transport, coding and control conversational protocols
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
ATE308782T1 (de) * 2002-04-26 2005-11-15 Research In Motion Ltd System und verfahren zur auswahl der nachrichten- einstellungen
US7188155B2 (en) * 2002-12-17 2007-03-06 International Business Machines Corporation Apparatus and method for selecting a web service in response to a request from a client device
US7313687B2 (en) * 2003-01-10 2007-12-25 Microsoft Corporation Establishing a secure context at an electronic communications end-point
US7200676B2 (en) * 2003-03-26 2007-04-03 Microsoft Corporation Transmitting and receiving messages through a customizable communication channel and programming model
GB0308522D0 (en) * 2003-04-12 2003-05-21 Ibm Access to web services
GB0308523D0 (en) 2003-04-12 2003-05-21 Ibm Access to web services
US7631314B2 (en) * 2003-08-26 2009-12-08 International Business Machines Corporation Method and system for dynamically associating type information and creating and processing meta-data in a service oriented architecture
US7489707B2 (en) * 2003-10-16 2009-02-10 National University Of Singapore System and method for a dynamic protocol framework
US7487396B2 (en) * 2004-10-15 2009-02-03 Broadcom Corporation System and method to locate and correct software errors within a protocol stack for wireless devices

Also Published As

Publication number Publication date
EP1686476A2 (en) 2006-08-02
EP1686476A3 (en) 2007-09-12
CN1816052A (zh) 2006-08-09
MXPA06000328A (es) 2006-07-31
JP2006216035A (ja) 2006-08-17
AU2005242148A1 (en) 2006-08-17
US20060174016A1 (en) 2006-08-03
RU2395112C2 (ru) 2010-07-20
RU2005141126A (ru) 2007-07-20
BRPI0600207A (pt) 2006-09-19
KR101159357B1 (ko) 2012-06-25
US7921216B2 (en) 2011-04-05
CA2531928A1 (en) 2006-07-02

Similar Documents

Publication Publication Date Title
KR101159357B1 (ko) 통신 바인딩 객체를 형성 및 사용하기 위한 시스템 및 방법
US7200676B2 (en) Transmitting and receiving messages through a customizable communication channel and programming model
KR101159364B1 (ko) 분산형 애플리케이션의 객체 지향 표현과 서비스 지향 표현 간의 매핑
Bahree et al. Pro WCF: practical Microsoft SOA implementation
KR101183323B1 (ko) 통신 채널 모델
Pathak Pro WCF 4: practical Microsoft SOA implementation
Cavalieri et al. Integration of OPC UA into a web-based platform to enhance interoperability
Ådahl Shared resource for collaborative editing over a wireless network
US10938960B2 (en) System and method for implementing augmented object members for remote procedure call
Perera et al. Enabling Web Service extensions for scientific workflows
US7801999B2 (en) Binding heterogeneous transports to a message contract
Rodríguez-López et al. Architecting a common bridge abstraction over different middleware paradigms
Cheng Microsoft Windows Communication Foundation 4.0 Cookbook for Developing SOA Applications
Rose BEEP: the definitive guide
Gutierrez et al. JMS with Spring Boot
Peiris et al. Pro WCF
Daadoo Developing and Implementation of Distributed Chat Applications using WPF and WCF
Gutierrez et al. Messaging
Channel et al. Dealing with Diversity: Understanding WCF Communication Options in the .NET Framework 3.5
Crane et al. Essential Windows Communication Foundation (WCF)
Jean-Baptiste A distributed architecture for U-messaging systems
Bosanac et al. ActiveMQ in Action
Fox et al. Building a Grid of Grids: messaging substrates and information management
Peiris et al. Introducing Service-Oriented Architecture
Pathak Implementing SOA Interoperability

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee