KR20060063658A - 구조화된 데이터를 해당하는 바이트 스트림을 사용하여전송하는 방법 및 시스템 - Google Patents

구조화된 데이터를 해당하는 바이트 스트림을 사용하여전송하는 방법 및 시스템 Download PDF

Info

Publication number
KR20060063658A
KR20060063658A KR1020050107997A KR20050107997A KR20060063658A KR 20060063658 A KR20060063658 A KR 20060063658A KR 1020050107997 A KR1020050107997 A KR 1020050107997A KR 20050107997 A KR20050107997 A KR 20050107997A KR 20060063658 A KR20060063658 A KR 20060063658A
Authority
KR
South Korea
Prior art keywords
byte stream
structured data
communication module
computing system
byte
Prior art date
Application number
KR1020050107997A
Other languages
English (en)
Other versions
KR101137098B1 (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 KR20060063658A publication Critical patent/KR20060063658A/ko
Application granted granted Critical
Publication of KR101137098B1 publication Critical patent/KR101137098B1/ko

Links

Images

Classifications

    • 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]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/149Adaptation of the text data for streaming purposes, e.g. Efficient XML Interchange [EXI] format
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • 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/08Protocols for interworking; Protocol conversion
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)
  • Communication Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

구조화된 데이터를 해당하는 바이트 스트림을 사용하여 전송하는 메커니즘이 제공된다. SOAP(Simple Object Access Protocol) 엔벨롭(Envelop) 등의 구조화된 데이터에 액세스하면, 바이트 스트림이 생성된다. 바이트 스트림은 구조화된 데이터뿐만 아니라 예컨대, 통신 모드 등의 바이트 스트림에 관한 속성들을 나타낸 바이트의 집합도 포함한다. 그러면 바이트 스트림은 이 바이트 스트림을 수신하고 전송할 수 있는 통신 모듈(예컨대, TCP 또는 Named Pipes 모듈)로 전달될 수 있다.
바이트 스트림, SOAP, Named Pipes

Description

구조화된 데이터를 해당하는 바이트 스트림을 사용하여 전송하는 방법 및 시스템{MECHANISM FOR BINDING A STRUCTURED DATA PROTOCOL TO A PROTOCOL OFFERING UP BYTE STREAMS}
도 1은 본 발명의 특징을 구현할 수 있는 적합한 컴퓨팅 시스템을 예시.
도 2는 본 발명의 원리가 이용될 수 있는 네트워크 환경을 예시.
도 3은 먼저 구조화된 데이터를 구조화된 데이터의 표현뿐만 아니라 그 구조화된 데이터에 관한 속성 정보를 나타낸 것을 포함하는 바이트 스트림으로 변환함으로써 구조화된 데이터를 전송하는 방법을 예시.
도 4는 먼저 구조화된 데이터뿐만 아니라 바이트 스트림의 속성들을 나타내는 바이트 스트림을 수신함으로써 구조화된 데이터를 수신하는 방법을 예시.
도 5는 구조화된 데이터뿐만 아니라 바이트 스트림의 속성들을 나타내는 바이트 스트림의 데이터 구조를 예시.
도 6a는 단일 연결이 단일 수신자 컴퓨팅 시스템상에서 실행되는 여러가지 프로세스로의 다중 발신 통신을 전달하는데 사용되는 통신 모드를 예시.
도 6b는 단일 연결이 신뢰성 있는 단방향 통신에 사용되는 통신 모드를 예시.
도 6c는 단일 연결이 신뢰성 있는 양방향 통신에 사용되는 통신 모드를 예 시.
<도면의 주요 부분에 대한 부호의 설명>
200: 네트워크 환경
210: 제1 컴퓨팅 시스템
220: 제2 컴퓨팅 시스템
212, 222: 바인딩 모듈
214, 224: 바이트 스트림 통신 모듈
본 발명은 네트워크 기술에 관한 것이며, 보다 구체적으로는 한 방향으로 전달되는 메시지가 그 반대 방향으로 전달되는 메시지들에 상관되는 것을 요구하지 않으면서 구조화된 데이터가 양방향 통신을 사용하여 전달될 수 있도록, 구조화된 데이터 트랜스포트를 데이터 스트림을 제공하는 프로토콜에 바인딩하는 메커니즘에 관한 것이다.
컴퓨팅 기술은 우리가 일하고 즐기는 방식을 변화시켜 왔다. 현재 컴퓨팅 시스템은 데스크톱 컴퓨터, 랩톱 컴퓨터, 태블릿 PC, PDA, 가전 제품 등을 포함하여 매우 다양한 형태를 취한다. 그 가장 기본적인 형태로, 컴퓨팅 시스템은 시스템 메모리, 및 하나 이상의 프로세서를 포함한다. 시스템 메모리 내의 소프트웨어는 컴퓨팅 시스템의 기타 하드웨어에게 원하는 함수를 수행하도록 명령하는 프로세 서에 의해 수행될 수 있다.
네트워킹 기술에 의해 컴퓨팅 시스템들이 심지어 장거리를 걸쳐 통신하게 됨으로써, 컴퓨터 기능을 확장하게 된다. 예를 들어, 네트워킹 기술은 이메일, 웹 브라우징, 파일 전송, 인스턴스 메시지 전달, 전자 칠판, 네트워크 협력 등의 응용을 가능하게 해준다. 따라서, 컴퓨터 네트워크는 널리 보급된 통신 및 정보 접근을 가능케 한다.
컴퓨팅 시스템 간에 전달된 데이터는 종종 구조화된 형태이며, 그 데이터의 의미는 적어도 부분적으로 구조 내에서의 데이터 위치에 의해 암시된다. 소프트웨어 컴포넌트(들)는 구조화된 데이터 프로토콜에 의해 설정된 규칙에 따라 데이터 구조의 적어도 일부분을 생성 또는 해석할 수 있다. 이런 상세한 설명 및 청구항에서, "구조화된 데이터 프로토콜"은 데이터 구조를 형성하는 방법을 정의하는 하나 이상의 규칙 집합으로서 광범위하게 정의된다. 잠재적으로는, 복수의 구조화된 데이터 프로토콜들이 데이터 구조의 다른 부분들을 지배할 수 있다.
구조화된 데이터 프로토콜의 일 예로서, 다양한 버전의 XML(eXtensible Markup Language)을 포함한다. XML에 의해 데이터가 계층구조로 조직된 노드 트리의 구조가 된다. 루트 노드는 트리에서 최상위 조상 노드(the most ancestral node)를 형성한다. 루트 노드는 제로 또는 그 이상의 자식 노드를 가질 수 있고, 그 자식 노드 각각은 0개 또는 그 이상의 자식 노드를 가진다. 각각의 노드는 특성 및/또는 기타 텍스트 컨텍스트를 가진다. XML 그 자체는 노드의 ID를 명시하지 않을 뿐 아니라, 계층구조의 트리 형태도 명시하지 않는다. 따라서, XML은 여러 타입의 데이터를 구조적으로 나타낼 수 있을 만큼 충분히 융통성이 있다.
일부 구조화된 데이터 프로토콜은 기본 XML에 부가적인 구조적 규칙들을 부과한다. 이런 구조화된 데이터 프로토콜은 예컨대, 다양한 버전의 SOAP(Simple Object Access Protocol)를 포함한다. SOAP는 SOAP 엔벨롭(envelope) 형태로 XML 구성요소를 정의하는데, 이는 트랜스포트에 바운딩 될 수 있는 메시지를 나타낸다. SOAP 엔벨롭은 헤더 구성요소와 바디 구성요소를 포함하는 자식 XML 구성요소를 포함한다. 헤더 구성요소는 버전닝(versioning), 라우팅, 주소 정보, 메시지 식별자 등을 정의하는 일부 필수적인 및 선택적인 자식 XML 구성요소들을 포함할 수 있다. 바디 구성요소는 하나 이상의 기타 구조화된 데이터 프로토콜에 순응하는 기타 XML 구조를 포함한다.
SOAP는 상대적으로 관용적인(agnostic) 트랜스포트가 되도록 설계된다. 그러나, SOAP는 HTTP(HyperText Transport Protocol)로의 디폴트 바인딩을 트랜스포트 메커니즘으로서 정의한다(종종 "SOAP-over-HTTP"로서 지칭됨). 따라서, SOAP-over-HTTP는 널리 구현된다. SOAP-over-HTTP 바인딩(및 기본 HTTP 프로토콜)은 클라이언트와 엔터프라이즈 시나리오에 있어서 그 효용성을 감소시키는 수많은 제약사항을 가진다.
먼저, HTTP는 본질적으로 요청-응답 프로토콜이기 때문에, 지원되는 메시지 교환 패턴에 있어 제한받는다. 구체적으로, HTTP 대화의 발신자는 단일 요청을 서비스에 전송하고, 기본 전송 제어 프로토콜 연결을 통해 응답을 기다린다. 그 응답이 무시될 수 있으므로, 그 요청에 의해 표현된 단방향 통신을 시뮬레이션한다. 그러나, 이런 시뮬레이션은 소중한 네트워크 대역폭을 낭비하게 되는데, 왜냐하면 그 응답이 사용치 않은 정보를 포함하기 때문이다. 따라서, HTTP는 단지 기본 단일 요청-단일 응답 메시지 교환 패턴만을 효과적으로 지원한다. 이것은 수많은 제한사항을 초래한다. 예를 들면, 서버가 원치않은(unsolicited) 응답(즉, 단방향 메시지(one-way message))을 클라이언트에게 전송할 방법을 갖지 못한다. 또한, 클라이언트는 정해진 TCP 연결 동안 임의 순간 많아야 하나의 미결정 요청을 가질 수 있다. 제2 요청은 제1 응답이 수신될 때까지 개시될 수 없다. 또한, 서버는 정해진 요청에 단지 한번 응답할 수 있다. 최종적으로, 서버는 요청을 처리하면서 네트워크 연결을 개방한 채로 유지하기 때문에, 서버가 그 메시지를 처리할 시간이 전형적으로 제한되고, 이로써 긴 실행 대화(long-running interactions)를 방해한다.
두 번째로, 배치된 HTTP 인프라구조는 일반적으로 HTTP 요청 메시지들을 스트리밍하는 것을 지원하지 않는다. 요청 메시지들의 이런 스트리밍은 "덩어리(chunking)"로서 지칭된다. 이는 수 메가바이트 기업 문서들과 같은 대용량 메시지들을 요청 메시지로 스트리밍하는 것을 어렵게 한다. 대용량 메시지들을 버퍼링하기는 일반적으로 컴퓨터 자원의 관점에서 보면 터무니없이 비용이 많이 드는 일이다.
세 번째로, HTTP로써 보안을 동작시키기 위해, HTTP에서부터 HTTPS(HTTP Secure) 프로토콜까지의 대화를 협상하여야 한다. HTTPS는 다른 프로토콜이기 때문에(다른 TCP 포트 및 다른 URI(Uniform Resource Identifier) 방식을 가짐), 통 신 인프라구조는 일반적으로 HTTP에서부터 HTTPS까지의 특별한 협상을 필요로 한다. 예를 들어, 라우팅 테이블에 하나는 HTTP를 지원하고, 다른 하나는 HTTPS를 지원하는 중복된 엔트리가 존재할 수 있다. 이것 또한 컴퓨팅 자원의 관점에서 보면 비효율적이다.
따라서, 융통성 있는 메시지 교환 패턴을 고려하고, 데이터 스트리밍을 허가하고, 편리한 보안 동작을 용이하게 하는 방식으로 XML 및/또는 SOAP 등의 구조화된 데이터 프로토콜을 기본 트랜스포트에 바인딩하는 메커니즘이 유익할 것이다.
종래 기술이 갖는 상기 문제점은 구조화된 데이터를 해당하는 바이트 스트림을 사용하여 제2 컴퓨팅 시스템에 전송하는 메커니즘에 관한 본 발명의 원리에 의해 극복될 수 있다. 구조화된 데이터는 통신하기 위해 바이트 스트림으로 변환되기 때문에, HTTP(HyperText Transport Protocol)에 한정되기보다는 바이트 스트림을 전달할 수 있는 어떤 통신 모듈 또는 프로토콜도 통신에 사용될 수 있다.
SOAP 엔벨롭 등의 구조화된 데이터에 액세스하면, 바이트 스트림이 생성된다. 이 바이트 스트림은 구조화된 데이터를 나타내는 바이트뿐만 아니라, 바이트 스트림에 관한 속성들도 나타내는 바이트의 집합(collection)을 포함한다. 그러면, 이 바이트 스트림은 바이트 스트림을 수신하고 전송할 수 있는 통신 모듈(예컨대, TCP 또는 Named Pipes 모듈)로 전달될 수 있다. 이런 속성들은 광범위한 것일 수 있는데, 이하의 상세한 설명으로부터 분명해질 것이다.
본 발명의 부가적인 특징 및 장점은 이하의 상세한 설명에 기술될 것이고, 부분적으로 상세한 설명으로부터 명백해지거나 본 발명의 실시에 의해 이해될 수 있다. 본 발명의 특징 및 장점은 첨부된 청구항에서 구체적으로 지칭한 도구 및 결합에 의해 실현되고 달성될 수 있다. 본 발명의 이런 및 기타 특징은 이하의 상세한 설명과 첨부된 청구항으로부터 충분히 명확해질 것이며, 혹은 하기에 기술된 본 발명의 실시에 의해 이해될 수 있다.
본 발명의 상기 인용된 것, 및 기타 장점 및 특징이 달성될 수 있는 방식을 기술하기 위해, 상기 간략히 기술된 본 발명에 대해 보다 구체적인 상세가 첨부된 도면에 예시된 그 특정 실시예를 참조하여 기술될 것이다. 이런 도면은 단지 본 발명의 전형적인 실시예를 도시한 것이므로 발명의 범위를 한정하는 것으로 고려되지 않는다는 점을 이해하면서, 본 발명은 첨부된 도면의 사용하여 부가적으로 명확하고 상세하게 기술되고 설명될 것이다.
본 발명의 원리는 구조화된 데이터를 해당하는 바이트 스트림을 사용하여 전송하는 메커니즘에 관한 것이다. 일단 SOAP 엔벨롭 등의 구조화된 데이터에 액세스하면, 바이트 스트림이 생성된다. 바이트 스트림은 구조화된 데이터뿐만 아니라, 예컨대 통신 모드 등의 바이트 스트림에 관한 속성들을 나타내는 바이트의 집합도 나타내는 바이트를 포함한다. 그러면, 바이트 스트림은 그 바이트 스트림을 수신하고 전송할 수 있는 통신 모듈(예컨대, TCP 또는 Named Pipes 모듈)로 전달될 수 있다. 이 구조화된 데이터는 수신 측에서 그 역 방식으로 복구될 수 있다. 구조화된 데이터가 바이트 스트림으로 변환되기 때문에, HTTP에 따르는 것보다도 어 떤 통신 모듈(TCP 또는 Named Pipes 프로토콜 등)이라도 그 구조화된 데이터를 전송하는데 사용될 수 있다.
동일 참조 번호가 동일 구성요소를 지칭하는 도면들을 보면, 본 발명의 원리가 적합한 컴퓨팅 환경에서 구현될 수 있는 것으로 예시된다. 이하의 상세한 설명은 본 발명의 예시적인 실시예에 기초하고 있으며, 본원에 명시적으로 기술되지 않은 대안적인 실시예에 관련하여 본 발명을 한정하는 것으로서 받아들여서는 안 된다.
하기의 상세한 설명에서, 본 발명의 실시예는 다르게 지시되지 않는 한, 하나 이상의 컴퓨터에 의해 실행되는 동작들의 상징적인 표현 및 단계들을 참조하여 기술될 것이다. 이처럼, 때때로 컴퓨터에 의해 실행되는 것으로서 지칭되는 이런 단계들 및 동작들은 컴퓨터의 프로세싱 장치에 의해 구조화된 형태로 데이터를 나타내는 전기적인 신호들이 조작되는 것을 포함한다는 것을 이해할 것이다. 이런 조작에 의해 데이터를 변환하거나 컴퓨터의 메모리 시스템의 위치에 데이터를 저장하며, 이는 당업자가 잘 이해하게 되는 방식으로 컴퓨터의 동작을 재구성하거나 그렇지 않으면 변경시킨다. 데이터가 유지되는 데이터 구조는 데이터 포맷에 의해 정의된 특정 속성들을 가지는 메모리의 물리적 위치들이다. 그러나, 본 발명의 원리는 상기 문맥에서 기술되고 있으나, 한정적인 것이 아니며 당업자는 이하에 기술된 몇몇 단계들 및 동작들이 하드웨어로 구현될 수도 있음을 인식할 것이다.
도 1은 이런 장치들에 사용가능한 예시적인 컴퓨터 아키텍처의 개략도를 도시한다. 기술용으로, 도시된 아키텍처는 단지 적절한 환경의 일 실시예이며, 본 발명의 사용 또는 기능의 범위를 제한하려는 것은 아니다. 컴퓨팅 시스템은 도 1에 예시된 컴포넌트들의 일부 또는 그 조합에 관련하여 어떤 의존성이나 요건을 가지는 것으로 해석되어서는 안 된다.
본 발명의 원리는 수많은 기타 범용 또는 전용 컴퓨팅 또는 통신 환경 또는 구성에서 동작한다. 본 발명을 이용하기에 적합한 잘 알려진 컴퓨팅 시스템, 환경, 및 구성의 예로서, 이동 전화기, 포켓 컴퓨터, 개인용 컴퓨터, 서버, 멀티프로세서 시스템, 마이크로프로세서 기반의 시스템, 미니컴퓨터, 메인프레임 컴퓨터, 및 상기 시스템 또는 장치들의 일부를 포함하는 분산 컴퓨팅 환경을 포함하나, 이에만 한정되지 않는다.
그 가장 기본적인 구성으로, 컴퓨팅 시스템(100)은 전형적으로 적어도 하나의 프로세싱 유닛(102)과 메모리(104)를 포함한다. 메모리(104)는 휘발성(RAM 등), 비휘발성(ROM, 플래시 메모리 등), 또는 양자의 일부 결합을 포함할 수 있다. 이런 가장 기본적인 구성은 대시 선(106)으로 도 1에 예시되어 있다.
저장 매체 장치는 부가적인 특징 및 기능을 가질 수 있다. 예를 들어, 장치들은 PCMCIA 카드, 자기 및 광 디스크, 및 자기 테이프를 비롯하여 부가적인 저장장치(분리형 혹은 비분리형)를 포함할 수 있으나, 이에만 한정되지 않는다. 이런 부가적인 저장장치는 분리형 저장장치(108) 및 비분리형 저장장치(110)에 의해 도 1에 예시되어 있다. 컴퓨터-저장 매체는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타 데이터 등의 정보 저장을 위한 임의 방법 또는 기술로 구현된 휘발성 혹은 비휘발성, 분리형 혹은 비분리형 매체를 포함한다. 메모리 (104), 분리형 저장장치(108), 및 비분리형 저장장치(110)는 컴퓨터-저장 매체의 모든 예들이다. 컴퓨터-저장 매체는 RAM, ROM, EEPROM, 플래시 메모리, 기타 메모리 기술, CD-ROM, DVD, 기타 광 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치, 기타 자기 저장 장치, 및 원하는 정보를 저장할 수 있고 컴퓨팅 시스템에 의해 액세스될 수 있는 임의 기타 매체를 포함하나, 이에만 한정되지 않는다.
본원에 사용된 바대로, 용어 "모듈" 또는 "컴포넌트"는 컴퓨팅 시스템상에서 실행되는 객체 또는 루틴을 지칭할 수 있다. 본원에 기술된 여러가지 컴포넌트, 모듈, 엔진, 및 서비스가 컴퓨팅 시스템상에서 실행되는 객체 또는 프로세스(예컨대, 분리된 스레드(thread))로서 구현될 수 있다. 본원에 기술된 시스템 및 방법은 소프트웨어로 구현되는 것이 바람직하지만, 소프트웨어와 하드웨어로 구현하거나 하드웨어로 구현하는 것이 또한 가능하다고 고려된다.
컴퓨팅 시스템(100)은 또한 호스트가 예컨대, 네트워크(120)를 통해 다른 시스템 및 장치들과 통신하도록 하는 통신 채널(112)을 포함할 수 있다. 네트워크(120)가 임의 네트워크 타입(현재 존재하거나 미래에 개발될 수 있음)을 포함할 수 있으나, 예로서 토큰 링, 이더넷, 블루투스, 802.11, USB 1394, SMS, SOAP over IP 등을 포함한다. 통신 채널(112)은 통신 매체의 예이다. 통신 매체는 전형적으로 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타 데이터를 반송파 또는 기타 전송 메커니즘 등의 변조된 데이터 신호에 구현한 것이며, 임의 정보 전달 매체를 포함한다. 예로서, 통신 매체는 유선 네트워크 및 직접 유선 연결 등의 유선 매체, 및 음향, 전파, 적외선, 및 기타 무선 매체 등의 무선 매체를 포함한 다. 본원에 사용된 바와 같은 용어 컴퓨터 판독가능 매체는 저장 매체와 통신 매체 모두를 포함한다.
컴퓨터 시스템(100)은 또한 키보드, 마우스, 펜, 음성 입력 컴포넌트, 터치-입력 장치 등의 입력 컴포넌트(114)를 가질 수 있다. 출력 컴포넌트(116)는 스크린 디스플레이, 스피커, 프린터 등과, 이들을 구동하는 렌더링 모듈(종종 "어댑터"라 칭함)을 포함한다. 컴퓨팅 시스템(100)은 전원 공급 장치(118)를 가진다. 모든 이런 컴포넌트는 해당 분야에서 공지된 것이며, 본원에서 장황하게 기술할 필요가 없다.
도 2는 본 발명의 원리가 이용될 수 있는 환경(200)을 예시한다. 네트워크 환경은 수많은 컴퓨팅 시스템을 포함할 수 있다. 그러나, 제1 컴퓨팅 시스템(210)과 제2 컴퓨팅 시스템(220)은 분명히 도시되어 있다. 제1 컴퓨팅 시스템(210)과 제2 컴퓨팅 시스템은 서로 통신가능하게 연결되어 있다. 이 상세한 설명 및 청구항에서, 2개의 컴퓨팅 시스템은 그들이 서로 통신가능하게 연결되는 능력을 가질 때 "통신가능하게 연결된다". 이 상세한 설명 및 청구항에서, 2개의 컴퓨팅 시스템이 서로 통신하는 경우, "통신가능하게 연결된" 것이다. 2개의 컴퓨팅 시스템(210 및 220)은 심지어 같은 컴퓨팅 시스템 또는 장치 내에서 통합될 수 있으나, 본원의 원리를 이용하여 여전히 통신할 수 있다. 예를 들면, 한 컴퓨팅 시스템이 저장 메커니즘을 나타낼 수 있고, 반면에 다른 한 시스템은 본 발명의 원리를 이용하여 저장 메커니즘으로부터 정보를 수신하고 그 정보를 전송한다.
본 발명의 원리에 따르면, 바인딩 모듈(212)은 구조화된 데이터(211)에 액세 스하고, 그 구조화된 데이터(211)의 구조를 지배하는 구조화된 데이터 프로토콜을 바이트 스트림을 제공하는 바이트 스트림 프로토콜과 바인딩하는 기능을 한다. 바이트 스트림 통신 모듈(214)은 용어 "바이트 스트림"으로 수정되는데, 이 통신 모듈이 기타 컴퓨팅 시스템과 통신하기 위해 바이트 스트림 프로토콜에 따라 바이트 스트림을 제공하는 것을 강조하기 위해서이다. 이 상세한 설명 및 청구항에서, "바이트 스트림"은 필드의 열(sequence)로서 정의된다. 일부 경우에, 사람들은 바이트 스트림의 priori 길이를 알지 못할 것이다. 다른 경우에, 그 길이는 알려진 및/또는 고정된 크기일 수 있다. 이런 경우들 모두가 본원에 사용된 바와 같은 "바이트 스트림"의 정의 내에 속한다.
일 실시예에서, 구조화된 데이터(211)는 예컨대, XML(eXtensible Markup Language) 문서 등의 계층구조로 구조화된 문서일 수 있다. 특정한 일 실시예에서, XML 문서는 SOAP(Simple Object Access Protocol) 문서일 수 있다. 적절한 바이트 스트림 프로토콜의 예로서, 전송 제어 프로토콜(TCP) 및 Named Pipes 등을 포함한다. 바인딩 모듈(212)은 구조화된 데이터(211)를 바이트 스트림(213)으로 변환함으로써 바이트 스트림 프로토콜과의 바인딩을 완성하고, 바이트 스트림(213)을 바이트 스트림 통신 모듈(214)에 제공한다. 그러면 바이트 스트림 통신 모듈(214)은 그 데이터를 화살표(215)에 의해 표시된 대로 제2 컴퓨팅 시스템(220)에 전송한다. 제2 컴퓨팅 시스템에 있는 유사한 바이트 스트림 통신 모듈(224)이 이 데이터를 수신하고, 그 데이터를 바이트 스트림(223)으로서 바인딩 모듈(222)에 제공한다. 바인딩 모듈은 구조화된 데이터(221)를 복구한다.
본 발명의 원리를 광범위하게 기술하였으며, 특정 실시예에 관한 보다 상세한 동작은 도 3 및 도 4에 관련하여 기술될 것이다.
도 3은 먼저 구조화된 데이터를 구조화된 데이터의 표현뿐만 아니라 구조화된 데이터에 관한 속성 정보를 나타내는 바이트 스트림으로 변환함으로써 구조화된 데이터를 전송하는 방법(300)에 대한 흐름도를 예시한다. 본 방법(300)은 구조화된 데이터(211)를 제2 컴퓨팅 시스템(220)에 전송할 때 바인딩 모듈(212)에 의해 수행될 수 있다.
바인딩 모듈(212)은 제2 컴퓨팅 시스템으로의 전송을 위해 구조화된 데이터에 액세스한다(단계(302)). 바인딩 모듈(212)은 예컨대, 구조화된 데이터의 일부 또는 모두를 기타 컴포넌트 또는 컴퓨팅 시스템으로부터 수신하거나/하고 구조화된 데이터의 일부 또는 모두를 생성하는 것으로써, 구조화된 데이터에 액세스할 수 있다. 이전에 언급된 바대로, 구조화된 문서의 예로서 XML 문서와 SOAP 엔벨롭을 포함한다. 하기에 제2 컴퓨팅 시스템(220)으로 전송되길 원하는 SOAP 엔벨롭의 예를 나타낸다(본 발명의 원리가 이 버전에 한정되는 것은 아니나, SOAP 버전 1.2를 사용하여 표현함).
<S:Envelope xmlns:S='http://www.w3.org/2003/05/soap-envelope'>
<S:Body/>
</S:Envelope>
이런 3개 라인의 SOAP 엔벨롭은 단지 단순한 예이며, 본 발명의 실시예의 동작을 더 명확하게 하기 위한 용도로 본 상세한 설명을 통해 예로서 기술될 것이다.
구조화된 데이터(211)에 액세스한 후에(단계(301)), 바인딩 모듈(212)은 구조화된 데이터(211)를 바이트 스트림의 하나 이상의 속성을 집합적으로 나타내는 제1 복수의 바이트, 및 구조화된 데이터를 집합적으로 나타내는 제2 복수의 바이트를 포함하도록 바이트 스트림(213)으로 변환한다(단계(302)). 도 5는 바이트 스트림(213)의 예를 나타내는 적절한 바이트 스트림(500)을 개략적으로 도시한다.
도 5를 참조하면, 바이트 스트림(500)은 수평 타원형(horizontal ellipses)으로 표현된 잠재적인 기타 구조화된 데이터 컴포넌트(520B) 중에서 구조화된 데이터 컴포넌트(520A)를 포함한다. 초기 정보는 도 5의 바이트 스트림(500)의 가장 우측 필드에 명시되고, 계속되는 정보는 좌측으로 삽입된다. 각각의 구조화된 데이터 컴포넌트(520A 및 520B)는 해당하는 구조화된 데이터를 포함한다. 예를 들면, 구조화된 데이터 컴포넌트(520A)는 해당하는 구조화된 데이터(522A)의 바이트 스트림 표현을 포함한다. 이전에 언급한 바대로, 구조화된 데이터(522A)는 예컨대, SOAP 엔벨롭일 수 있다. 각각의 구조화된 데이터 컴포넌트(520A 및 520B)는 또한 구조화된 데이터의 바이트 스트림 표현의 길이를 식별하는 길이 컴포넌트를 선택적으로 포함할 수 있다. 예를 들면, 길이 컴포넌트(521A)는 구조화된 데이터(522A)의 바이트 스트림 표현의 길이를 식별한다. 바이트 스트림의 길이가 이미 알려져 있는 경우(예컨대, 수신 측에 고정된 크기로 알려진 경우), 길이 필드는 선택적인 것이 될 수 있다. 또한 그 길이를 몇몇 기타 메커니즘을 사용하여 협상할 수 있다. 그에 더하여, 각각의 구조화된 데이터 컴포넌트(520A 및 520B)는 또한 기타 정보를 선택적으로 포함할 수 있다. 예를 들면, 구조화된 데이터 컴포넌트 (520A)는 기타 필드(523A)를 포함한다.
바이트 스트림에 길이 필드(512A)를 가지면 수많은 장점을 허용하게 된다. 먼저, 연결을 닫는 것보다도 잘못 만들어진 데이터 컴포넌트를 단순히 생략(skip)할 수 있다. 연결 닫기는 비용이 많이 드는 일인데, 왜냐하면 그 연결을 다시 개방하는데 시간, 프로세싱 자원, 및 메모리 자원이 소모되기 때문이다. 또한, 연결이 닫혀 있는 동안 수신되었던 메시지 중 일부는 손실될 수 있다. 두 번째로, 전체 구조화된 데이터가 메시지를 처리하는 애플리케이션 코드를 호출하기 전에 메모리로 판독될 수 있다. 이로 인해 애플리케이션이 메시지의 나머지가 이용가능하게 될 때까지 기다림 없이도 메시지를 충분히 액세스하고, 완벽히 처리하게 된다.
바이트 스트림(500)은 또한 전체적으로 바이트 스트림(500)에 관한 속성을 정의하는 스트림 속성(510)을 포함한다. 이런 속성은 또한 바이트 스트림(500)의 속성 레코드로서 고려될 수 있다. 이런 속성 레코드의 예가 도시되어 있다. 도시하지는 않았지만, 구조화된 데이터가 스트림 속성을 리셋하기 위해 각각의 속성 필드 사이에 인터리빙될 수 있다.
먼저 바이트 스트림(500)의 프레임화(framing) 버전을 정의하는 버전 레코드(511)가 예시된다. 그러면 수신하는 컴퓨팅 시스템은 연속되는 속성 레코드를 해석하는 방법 및/또는 구조화된 데이터를 복구하는 방법을 지배하는 일련의 규칙과 이 버전을 상관시킬 수 있다. 예를 들면, 버전 정보는 수락가능한 속성 레코드의 리스트를 그 해당하는 의미와 상관시킬 수 있다.
다음에 통신 모드를 정의하는 통신 모드 레코드(512)가 예시된다. 통신 모 드에 관한 보다 많은 내용이 도 6a 내지 도 6c에 관련하여 이하에 기술될 것이다. 요약하자면, 통신 모드는 메시지 교환 패턴 및 신뢰성을 명시함에 있어서 융통성을 고려한다. 모드 레코드(512)를 가지면 단일 네트워크 주소(예컨대, 단일 TCP 포트 번호)가 여러가지 모드로 메시지들을 수신할 수 있게 된다. TCP 포트 번호는 그들이 정해진 기기에 대해 한정된 자원이란 점에서 다소 고가의 것이다.
경유 레코드(513)는 데이터 스트림(500)의 대상 목적지를 정의한다. 바인딩 모듈은 통신 프로토콜 스택에 존재할 수 있으며, 그 통신 프로토콜 스택의 상위 계층이 구조화된 데이터(211)(또는 구조화된 데이터(211)에 표현된 정보)를 또 다른 목적지에 전송한다. 이렇게 행하는 경우에, 해당 정보의 최종 목적지는 경유 레코드(513)의 주소에 의해 표현된 컴퓨팅 시스템보다 통신 경로를 따라 더 멀리 있을 수 있다. 그럼에도, 경유 레코드(513)는 다음의 바인딩 모듈 레벨 목적지의 주소를 나타낸다. 경유 레코드(513)에 의해 충분히 바이트 스트림(500)을 구문 분석하고 구조화된 데이터(522A)를 액세스하는데 필요한 프로세싱 자원을 소비하지 않고도 수신 시스템에 의한 일부 레벨의 디스패치(dispatch)를 허용한다. 경우 레코드(513)의 값은 이전 경유 값을 디폴트로 가질 수 있어서, 바이트 스트림의 크기를 감소시킨다.
부호화 필드(514)는 임의 포함된 구조화된 데이터 컴포넌트(522)용 부호화 포맷을 정의할 수 있다. 이로 인해 시스템이 연결에 대해 하나 이상의 부호화를 지원하게 되고, 필요한 연결 개수를 감소시킬 수 있다. 이로 인해 또한 단일 주소(예컨대, 단일 TCP 포트 번호)가 여러가지 부호화에 사용될 수 있다. 상기 언급한 바대로, TCP 포트 번호는 고가의 것일 수 있다. 콘텐츠 타입에 대해 잘 알려진 확장가능한 값을 지원함으로써 공동 값에 대해 유선 크기(wire size)를 희생하지 않고도 확장성을 허용하게 된다. 예를 들면, 잘 알려진 콘텐츠 타입은 단일 바이트로 부호화될 수 있으나, 부가적인 콘텐츠 타입이 MIME 매체 타입에 해당하는 스트링 값을 지시함으로써 가능하다(그러나 장황하게 됨).
갱신 필드(515)는 보안 갱신이 요청 또는 응답되고 있는지 아닌지 여부를 지시한다. 일단 2개의 컴퓨팅 시스템이 긍정적인 반환 응답을 수반하는 보안 갱신 요청을 완성하면, 2개의 컴퓨팅 시스템은 보안을 세부적으로 협상하기 위해 보안 컴포넌트(예컨대, 보안 소켓 계층)를 사용할 수 있다. 갱신 필드(515)가 세부 협상에 사용될 필요가 없으나 적어도 보안 갱신을 요청하는데 사용될 수 있으며, 보안 갱신이 가능하다고 확인할 수 있어서, 연속되는 협상이 보안 갱신을 완성할 수 있다. 갱신 필드(515)를 사용할 때는 구조화된 데이터 컴포넌트(520)가 존재할 필요가 없다. 이런 갱신 메커니즘은 안전한 통신하기 위해 개별적인 연결이 요구되지 않기 때문에 유용하다. 또한, 갱신 필드(515)는 전체 스트림에 대한 기타 변환에도, 예컨대 압축 및/또는 암호화를 협상 등을 위하여 마찬가지로 사용될 수 있다.
장애 필드(516)는 예컨대, prior 데이터 스트림이 잘 형성되지 않을 경우나, 그렇지 않으면 응답될 수 없는 경우에 장애 정보를 전달하는 것을 고려한다. 이런 경우에도 마찬가지로, 장애 필드(515)를 사용할 때 임의 구조화된 데이터 컴포넌트(520)가 필요하지 않다.
기타 필드(517)는 가능한 속성 레코드의 리스트가 확장될 수 있다는 것을 나타낸다. 예를 들면, 기타 필드(517)는 압축 또는 암호화 레벨 등의 스트림에 관해 협상되는 기타 정보를 포함할 수 있다.
이하에 예시적인 3개 라인의 SOAP 엔벨롭이 해당하는 바이트 스트림으로 변환되고 있는 특정한 예를 예시한다. 이런 특정한 예에서, 부가적인 텍스트가 각 라인에 첨부되는데, 독자가 각 라인에 설정된 바이트 스트림의 해당하는 컴포넌트를 이해하는 것을 돕기 위해서이다. 각 라인의 가장 좌측에는 2자리 수가 괄호 안에 있는데, 각 수는 라인 번호를 나타낸다. 이런 예에서, 라인 번호는 01에서 24까지 이른다. 라인 번호의 괄호를 닫은 다음 바로 한 바이트씩을 나타내는 2자리 16진수의 하나 이상의 클러스터가 존재한다. 각각의 라인을 닫으면, 사람이 판독할 수 있는 표시 명령문이 더블 순방향 슬래시 "//"로부터 시작된다. 바이트 스트림은 물론 바이트의 스트림이고, 라인으로 구성되진 않는다. 이하의 예는 독자들 돕기 위해 논리적인 경계에 따라 라인으로 인위적으로 구성한 것이다.
(01) 00 // 버전 레코드
(02) 01 // 상급(major) 버전은 1
(03) 01 // 하급(minor) 버전은 1
(04) 01 // 모드 레코드
(05) 03 // 모드는 3(simplex)
(06) 02 // 경유 레코드
(07) 0f // 길이 정보(레코드는 23bytes)
(08) 68 74 74 70 3a 2f 2f 65 // UTF-8 for "http://e"
(09) 78 61 6d 70 6c 65 2e 6f // UTF-8 for "xample.o"
(10) 72 67 2f 64 65 73 74 // UTF-8 for "rg/dest"
(11) 03 // 알려진 부호화 레코드
(12) 03 // SOAP 1.2, UTF-8
(13) 06 // 크기가 정해진 엔벨롭 레코드
(14) 54 // 길이 정보(레코드는 84byte)
(15) 3c 53 3a 45 6e 76 65 6c // UTF-8 for "<S:Envel"
(16) 6f 70 65 20 78 6d 6c 6e // UTF-8 for "ope xmln
(17) 73 3a 53 3d 27 68 74 74 // UTF-8 for "s:S='htt
(18) 70 3a 2f 2f 77 77 77 2e // UTF-8 for "p://www.
(19) 77 33 2e 6f 72 67 2f 32 // UTF-8 for "w3.org/2
(20) 30 30 33 2f 30 35 2f 73 // UTF-8 for "003/05/s
(21) 6f 61 70 2d 65 6e 76 65 // UTF-8 for "oap-enve
(22) 6c 6f 70 65 27 3e 3c 53 // UTF-8 for "lope'><S
(23) 3a 42 6f 64 79 2f 3e 3c // UTF-8 for ":Body/><
(24) 2f 53 3a 45 6e 76 65 6c // UTF-8 for "/S:Envel
(24) 6f 70 65 3e // UTF-8 for "ope>
제1 라인(즉, 라인 01)은 바이트 00을 포함한다. 각 레코드는 1byte 이상을 포함한다. 이런 예에서, 각 레코드의 제1 바이트는 레코드 타입을 식별한다. 이 런 경우에, 00은 레코드가 버전 레코드임을 지시한다. 제2 라인 및 제3 라인은 각각 1byte를 포함하며, 제2 라인은 상급 버전을 식별하고, 제3 라인은 하급 버전을 식별한다. 라인 01부터 03은 도 5의 버전 레코드(511)의 예를 함께 나타낸다.
라인 04는 다음 레코드의 레코드 타입 식별자를 나타내는 1byte를 포함한다. 바이트 01은 본원에서 통신 모드 레코드를 나타낸다. 라인 05는 동작 모드가 simplex 임을 나타내는 값 3을 가진 바이트를 포함한다. 기타 예시적인 통신 모드는 multiplex, duplex 및 singleton을 포함한다. 이런 통신 모드의 의미는 도 6a 내지 도 6c에 관련하여 이하에 더 기술될 것이다. 통신 모드의 개수는 프레임화 버전을 더 첨부함으로써, 버전 레코드의 버전을 올바르게 식별함으로써 확장될 수 있다. 라인 04 및 05는 도 5의 모드 레코드(512)의 예를 함께 나타낸다.
라인 06은 경유 레코드의 시작을 지시하는 레코드 타입 식별자 바이트 02를 포함한다. 라인 07은 이 경우 23bytes인 경유 레코드의 길이를 식별한다. 라인 08부터 10은 목적지의 주소를 "http://example.org/dest"라고 정의한 23 UTF-8 문자를 나타내는 23bytes를 포함한다. 라인 06부터 10은 도 5의 경유 레코드(513)의 예를 함께 나타낸다.
라인 11은 레코드 타입 식별자 바이트 03을 포함하고, 부호화 레코드의 시작을 지시한다. 라인 12는 이런 예에서 UTF-8 및 SOAP 버전 1.2에 해당하는 값 3을 가진 바이트를 포함한다. 라인 11 및 12는 도 5의 부호화 레코드(514)의 예를 함께 나타낸다.
라인 13은 레코드 타입 식별자 바이트 06을 포함하고, 크기가 정해진 엔벨롭 레코드의 시작을 지시한다. 크기가 정해진 엔벨롭 레코드는 SOAP 엔벨롭 그 자체뿐만 아니라 SOAP 엔벨롭의 크기 식별도 포함한다. 구체적으로, 라인 14는 SOAP 엔벨롭의 길이가 75bytes(또는 75문자, 왜냐하면 1byte가 UTF-8의 각각의 문자를 표현하는데 사용되기 때문임)라고 식별한다. 라인 15부터 24는 예에서 원래 제공된 3개 라인의 SOAP 엔벨롭의 경우 UTF-8을 나타낸다. 따라서, 라인 15부터 24는 도 5의 구조화된 데이터(522A)의 바이트 스트림 표현을 집합적으로 나타낸다. 라인 14는 도 5의 길이 필드(521A)를 나타낸다. 그러므로, 라인 13부터 24는 도 5의 구조화된 데이터 컴포넌트(520A)를 집합적으로 나타낸다.
기타 속성 레코드는 보안 갱신 요청 또는 응답을 나타내는데, 장애를 나타내는데, 또는 기타 정보를 나타내는데 사용될 수 있다.
바이트 스트림(500)은 현재 바이트 스트림이기 때문에, 이것은 UDP(User Datagram Protocol), MSMQ(Microsoft Message Queue), TCP, 또는 Named Pipes 등의 바이트 스트림을 제공하는 임의 통신 모듈에 제공될 수 있다. 따라서, 도 3을 참조하면, 바이트 스트림을 생성한 이후에, 바인딩 모듈은 그 바이트 스트림(213)을 기타 컴퓨팅 시스템과 통신하기 위해 바이트 스트림을 수락하는 바이트 스트림 통신 모듈(214)에 전달한다(단계(303)).
기타 속성 레코드는 보안 갱신 요청 또는 응답을 나타내는데, 장애를 나타내는데, 또는 기타 정보를 나타내는데 사용될 수 있다.
도 4는 먼저 구조화된 데이터뿐만 아니라 바이트 스트림의 속성도 나타내는 바이트 스트림을 수신함으로써 구조화된 데이터를 수신하는 방법(400)의 흐름도를 예시한다. 본 방법(400)은 메시지들을 수신할 때 제2 컴퓨팅 시스템에 있는 바인딩 모듈(222)에 의해 수행될 수 있거나, 제1 컴퓨팅 시스템(210)에 있는 바인딩 모듈(212)에 의해 수행될 수 있다. 둘 중 어떤 경우라도, 메시지를 수신하면, 바이트 스트림 통신 모듈(224)(또는 214)은 그 바이트 스트림을 해당하는 바인딩 모듈(222)(또는 212)에 제공한다.
그러면 바인딩 모듈이 바이트 스트림을 수신한다(단계(401)). 바인딩 모듈은 버전 정보, 통신 모드 등을 식별하기 위해 속성 레코드를 사용할 수 있다. 수신 바인딩 모듈은 바이트 스트림을 구성하는데 사용되었던 송신 바인딩 모듈과 동일한 프레임화 규칙을 그 바이트 스트림을 해석하는데 사용한다. 따라서, 수신 바인딩 모듈은 바이트 스트림으로부터 구조화된 데이터를 복구할 수 있다(단계(402)). 전송 및 수신 프로세스는 자주 반복될 수 있다.
따라서, 본 발명의 원리는 바이트 스트림(TCP 등)을 제공하는 통신 모듈을 사용하여 구조 정보(SOAP 엔벨롭 등)를 전달하는 융통성 있는 메커니즘을 기술한다. 이런 통신 모듈과 인터페이스하는 능력은 이런 통신 모듈의 융통성이 활용되어 메시지 교환 패턴 및 신뢰성에 관한 광범위한 선택이 가능케 됨을 의미한다. TCP는 단일 요청-응답 메시지 패턴에만 한정되지 않는다. 더 많은 메시지 패턴이 사용될 수 있어서, 예컨대, SOAP-over-HTTP의 가장 고유한 취약점 중 한 가지를 극복하게 된다. 또한, 메커니즘은 프레임화 프로토콜에 통합되는 편리한 보안 갱신을 고려한다.
통신 모드는 또한 변경될 수 있다. 일 실시예에서, 이는 도 5의 바이트 스 트림(500)의 스트림 속성(510)의 모드 필드(512)에 통신 모드 정보를 포함함으로써 수행된다. 도 6a 내지 도 6c는 통신 모드 레코드에 의해 설정될 수 있는 다양한 통신 모드의 여러 예들을 예시한다. 각각의 도면에서, 컴포넌트(610)는 단일 연결(예컨대, TCP 또는 Names Pipes 연결)을 제1 컴퓨팅 시스템상에 나타내고, 반면에 컴포넌트(620)는 단일 연결(예컨대, TCP 또는 Names Pipes 연결)을 제2 컴퓨팅 시스템에 나타낸다.
도 6a는 multiplex 모드를 예시한다. 이 모드에서, 단일 연결(610A)은 데이터를 단일 연결(620A)에 전송한다. 바인딩 모듈에 해당하는 바인딩 계층에서, 단일 연결이 다양한 메시지들을 수신하는데 사용되고 있으나, 이런 다양한 메시지들은 여러가지 종단으로 라우팅될 것이다. 예로서, URI(Uniform Resource Indentifier) 및 TCP 포트(예컨대, 연결(610A)에 연관된)에 연관된 사용자가 URI 및 TCP 포트(예컨대, 연결(620A)에 연관됨)에 의해 나타난 온라인 서점과 인터페이스하길 원하는 경우를 가정한다. 이 단일 TCP 포트는 다수의 여러가지 서비스들을 제공할 수 있다. 예를 들면, 한 가지 서비스가 서점 재고 정보를 제공하는 반면에 다른 한 서비스는 도서 구매를 제공한다. 다른 연결이 각각의 요청에 사용될 필요가 없다. 적절한 요청(611A)이 재고 서비스용으로 적절한 라우팅(612A 내지 614A)을 위해 연결(620A)로 전송되고, 같은 연결들이 나중 도서 구매용으로 사용된다. 도 5의 실시예에서, 이런 라우팅은 경유 레코드(513)의 정보를 사용하여 달성될 수 있다.
도 6b는 단일 연결(610B)이 제2 컴퓨팅 시스템에 있는 단일 연결(620B)로 메 시지(611B)를 신뢰성 있게 전송하기 위해 제1 컴퓨팅 시스템에서 사용될 수 있는 simplex 모드를 예시한다. 이런 simplex 모드는 마찬가지로 도 5의 실시예의 모드 레코드(512)에서 식별될 수 있다. 신뢰성을 보장하기 위해, 화살표(612B)로 나타난 반환 응답확인 메시지 또는 패킷이 존재할 수 있다. 연결(620B)은 바이트 스트림(613)을 프로토콜 스택의 기타 계층에 제공한다. 이런 방식에서, TCP 및 Names Pipes의 경우에 연결들 간 중간 바인딩 레벨 모듈이 존재할 수 없다. 그러나, 신뢰성은 더욱 보장된다. 이런 신뢰성을 제공하는 응답확인 메시지는 구조 데이터(예컨대, 도 5의 구조화된 데이터(522A)) 그 자체 내에 또는 일부 기타 메커니즘에 의해 존재할 수 있다.
도 6c는 단일 연결(610C)이 제2 컴퓨팅 시스템에 있는 단일 연결(620C)로 메시지(611C)를 신뢰성 있게 전송하기 위해 제1 컴퓨팅 시스템에서 사용될 수 있는 duplex 모드를 예시한다. 이 duplex 모드는 도 5의 실시예의 모드 레코드(512)에서 식별될 수 있다. 여기에 신뢰성을 개선하기 위한 연관된 응답확인 메시지(612C)가 존재할 수 있고, 연결(620C)은 해당하는 바이트 스트림(613C)을 프로토콜 스택의 기타 계층에 제공한다. 마찬가지로, 반대 방향으로, 단일 연결(620C)이 제2 컴퓨팅 시스템에 있는 그 동일한 연결(610C)로 메시지(621C)를 신뢰성 있게 전송하기 위해 제2 컴퓨팅 시스템에서 사용된다. 또한 신뢰성을 개선하기 위해 연관된 응답확인 메시지(622C)가 존재할 수 있고, 연결(610C)이 해당하는 바이트 스트림(623C)을 프로토콜의 기타 계층에 제공한다.
예시되지 않았지만, "singleton" 모드가 또한 도 5의 실시예의 모드 필드 (512)를 사용하여 선택될 수 있다. 단일 연결을 사용하는 이런 singleton은 크기 제한을 받지 않는 바이트 스트림을 제2 컴퓨팅 시스템에 전송하는데 사용된다.
본 발명은 본원의 정신 또는 본질적인 특징에서 벗어남 없이 기타 특정한 형태로 구현될 수 있다. 기술된 실시예는 모든 면에서 예시적이며 한정하는 것은 아니라고 간주된다. 그러므로, 본 발명의 범위는 상기 상세한 설명보다는 첨부된 청구항에 의해 지시된다. 청구항과 동등한 의미 및 범위 내에 속하는 모든 변경이 그 범위 내에 포함된다.
US 출원에 의해 주장되고 보장되기를 원하는 것은 다음과 같다.
구조화된 데이터 트랜스포트를 데이터 스트림을 제공하는 프로토콜에 바인딩하는 메커니즘에 관한 방법 및 시스템을 제공하는 효과가 있다.

Claims (41)

  1. 제2 컴퓨팅 시스템에 통신가능하게 연결될 수 있는 제1 컴퓨팅 시스템을 포함하는 네트워크 환경에서, 상기 제1 컴퓨팅 시스템이 구조화된 데이터를 해당하는 바이트 스트림을 사용하여 상기 제2 컴퓨팅 시스템으로 전송하는 방법으로서,
    상기 제2 컴퓨팅 시스템에 전송하기 위한 구조화된 데이터에 액세스하는 단계,
    바이트 스트림을 생성하는 단계로서, 상기 바이트 스트림은 상기 바이트 스트림의 하나 이상의 속성을 집합적으로 나타내는 제1 복수의 바이트, 및 상기 구조화된 데이터를 집합적으로 나타내는 제2 복수의 바이트를 포함하는 바이트 스트림을 생성하는 단계, 및
    기타 컴퓨팅 시스템과의 통신을 위해 바이트 스트림들을 수락하는 바이트 스트림 통신 모듈에 상기 바이트 스트림을 전달하는 단계
    를 포함하는 방법.
  2. 제1 항에 있어서,
    상기 구조화된 데이터에 액세스하는 단계는
    상기 제1 컴퓨팅 시스템 자체가 상기 구조화된 데이터를 생성하는 단계
    를 포함하는 방법.
  3. 제1항에 있어서,
    상기 구조화된 데이터에 액세스하는 단계는
    상기 제1 컴퓨팅 시스템이 상기 구조화된 데이터를 다른 컴퓨팅 시스템으로부터 수신하는 단계
    를 포함하는 방법.
  4. 제1항에 있어서,
    상기 구조화된 데이터는 XML을 포함하는 방법.
  5. 제1항에 있어서,
    상기 구조화된 데이터는 SOAP 엔벨롭인 방법.
  6. 제5항에 있어서,
    상기 바이트 스트림 통신 모듈은 Named Pipes 통신 모듈인 방법.
  7. 제5항에 있어서,
    상기 바이트 스트림 통신 모듈은 TCP(Transmission Control Protocol) 통신 모듈인 방법.
  8. 제5항에 있어서,
    상기 바이트 스트림 통신 모듈은 UDP(User Datagram Protocol) 통신 모듈인 방법.
  9. 제1항에 있어서,
    상기 바이트 스트림 통신 모듈은 Named Pipes 통신 모듈인 방법.
  10. 제1항에 있어서,
    상기 바이트 스트림 통신 모듈은 TCP 통신 모듈인 방법
  11. 제1항에 있어서,
    상기 바이트 스트림 통신 모듈은 UDP 통신 모듈인 방법.
  12. 제1항에 있어서,
    상기 바이트 스트림 통신 모듈은 MSMQ(Microsoft message Queue) 통신 모듈인 방법.
  13. 제1항에 있어서,
    상기 바이트 스트림의 상기 하나 이상의 속성은 상기 바이트 스트림의 버전-상기 버전은 상기 제2 복수의 바이트에 포함될 수 있는 허용가능한 속성들의 집합을 정의함-
    을 포함하는 방법.
  14. 제1항에 있어서,
    상기 바이트 스트림의 상기 하나 이상의 속성은 상기 바이트 스트림의 통신 모드를 포함하는 방법.
  15. 제14항에 있어서,
    상기 바이트 스트림의 통신 모드는 단일 연결이 복수의 바이트 스트림을 상기 제2 컴퓨팅 시스템의 여러가지 프로세스에 전송하기 위해 상기 제1 컴퓨팅 시스템에서 사용될 수 있는 모드를 포함하는 방법.
  16. 제14항에 있어서,
    상기 바이트 스트림의 통신 모드는 단일 연결이 바이트 스트림을 상기 제2 컴퓨팅 시스템에 신뢰성 있게 전송하기 위해 상기 제1 컴퓨팅 시스템에서 사용될 수 있는 모드를 포함하는 방법.
  17. 제16항에 있어서,
    상기 바이트 스트림의 통신 모드는 상기 단일 연결이 바이트 스트림을 상기 제2 컴퓨팅 시스템으로부터 신뢰성 있게 수신하기 위해 상기 제1 컴퓨팅 시스템에서 사용될 수 있는 모드를 포함하는 방법.
  18. 제14항에 있어서,
    상기 바이트 스트림의 통신 모드는 단일 연결이 크기에 제한받지 않는 바이트 스트림을 상기 제2 컴퓨팅 시스템에 신뢰성 있게 전송하기 위해 사용되는 모드를 포함하는 방법.
  19. 제1항에 있어서,
    상기 바이트 스트림의 상기 하나 이상의 속성은 상기 제1 복수의 바이트용 부호화 포맷을 포함하는 방법.
  20. 제1항에 있어서,
    상기 바이트 스트림의 상기 하나 이상의 속성은 대상 목적지 URI(Uniform Resource Indentifier)를 포함하는 방법.
  21. 제1항에 있어서,
    상기 바이트 스트림은 제1 바이트 스트림이고, 상기 구조화된 데이터는 제1 구조화된 데이터이고, 상기 방법은
    제2 바이트 스트림을 상기 바이트 스트림 통신 모듈로부터 수신하는 단계-상기 제2 바이트 스트림은 상기 제2 바이트 스트림의 하나 이상의 속성을 집합적으로 나타내는 제3 복수의 바이트, 및 제2 구조화된 데이터를 집합적으로 나타내는 제4 복수의 바이트를 포함함-, 및
    상기 제2 구조화된 데이터를 상기 제2 바이트 스트림으로부터 복구하는 단계를 더 포함하는 방법.
  22. 제2 컴퓨팅 시스템에 통신가능하게 연결된 제1 컴퓨팅 시스템을 포함하는 네트워크 환경에서 사용되는 컴퓨터 프로그램 제품으로서,
    상기 제1 컴퓨팅 시스템이 구조화된 데이터를 해당하는 바이트 스트림을 사용하여 제2 컴퓨팅 시스템에 전송하는 방법을 구현하고, 상기 제1 컴퓨팅 시스템의 하나 이상 프로세서들에 의해 실행될 때, 상기 제1 컴퓨팅 시스템이 상기 방법을 수행하게 하는 컴퓨터 실행가능 명령어들을 가진 하나 이상의 컴퓨터 판독가능 매체를 포함하며, 상기 방법은
    상기 제2 컴퓨팅 시스템에 전송하기 위한 구조화된 데이터에 액세스하는 단계,
    바이트 스트림을 생성하는 단계로서, 상기 바이트 스트림은 상기 바이트 스트림의 하나 이상의 속성을 집합적으로 나타내는 제1 복수의 바이트, 및 상기 바이트 스트림을 집합적으로 나타내는 제2 복수의 바이트를 포함하는 바이트 스트림을 생성하는 단계, 및
    기타 컴퓨팅 시스템과 통신하기 위해 상기 바이트 스트림을 수락하는 바이트 스트림 통신 모듈에 상기 바이트 스트림을 전달하는 단계
    를 포함하는 컴퓨터 프로그램 제품.
  23. 제22항에 있어서,
    상기 구조화된 데이터에 액세스하는 단계는
    상기 제1 컴퓨팅 시스템 자체가 상기 구조화된 데이터를 생성하는 단계를 포함하는 컴퓨터 프로그램 제품.
  24. 제22항에 있어서,
    상기 구조화된 데이터는 XML을 포함하는 컴퓨터 프로그램 제품.
  25. 제22항에 있어서,
    상기 구조화된 데이터는 SOAP 엔벨롭인 컴퓨터 프로그램 제품.
  26. 제25항에 있어서,
    상기 바이트 스트림 통신 모듈은 Named Pipes 통신 모듈인 컴퓨터 프로그램 제품.
  27. 제25항에 있어서,
    상기 바이트 스트림 통신 모듈은 TCP(Transmission Control Protocol) 통신 모듈인 컴퓨터 프로그램 제품.
  28. 제25항에 있어서,
    상기 바이트 스트림 통신 모듈은 UDP(User Datagram Protocol) 통신 모듈인 컴퓨터 프로그램 제품.
  29. 제22항에 있어서,
    상기 바이트 스트림 통신 모듈은 Named Pipes 통신 모듈인 컴퓨터 프로그램 제품.
  30. 제22항에 있어서,
    상기 바이트 스트림 통신 모듈은 TCP 통신 모듈인 컴퓨터 프로그램 제품
  31. 제22항에 있어서,
    상기 바이트 스트림 통신 모듈은 UDP 통신 모듈인 컴퓨터 프로그램 제품.
  32. 제22항에 있어서,
    상기 바이트 스트림 통신 모듈은 MSMQ(Microsoft message Queue) 통신 모듈인 컴퓨터 프로그램 제품.
  33. 제22항에 있어서,
    상기 바이트 스트림의 상기 하나 이상의 속성은
    상기 제2 복수의 바이트에 포함될 수 있는 속성의 허용가능한 집합을 정의하는 상기 바이트 스트림의 버전,
    상기 바이트 스트림의 통신 모드,
    상기 제1 복수의 바이트용 부호화 포맷, 및
    대상 목적지 URI
    중 하나 이상의 표현을 포함하는 컴퓨터 프로그램 제품.
  34. 제22항에 있어서,
    상기 바이트 스트림은 제1 바이트 스트림이고, 상기 구조화된 데이터는 제1 구조화된 데이터이고, 상기 방법은
    제2 바이트 스트림을 상기 바이트 스트림 통신 모듈로부터 수신하는 단계-상기 제2 바이트 스트림은 상기 제2 바이트 스트림의 하나 이상의 속성을 집합적으로 나타내는 제3 복수의 바이트, 및 제2 구조화된 데이터를 집합적으로 나타내는 제4 복수의 바이트를 포함함-, 및
    상기 제2 구조화된 데이터를 상기 제2 바이트 스트림으로부터 복구하는 단계를 더 포함하는 컴퓨터 프로그램 제품.
  35. 제22항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 물리적인 메모리 매체인 컴퓨터 프로그램 제품.
  36. 제35항에 있어서,
    상기 물리적인 메모리 매체는 비휘발성 메모리를 포함하는 컴퓨터 프로그램 제품.
  37. 제35항에 있어서,
    상기 물리적인 메모리 매체는 시스템 메모리를 포함하는 컴퓨터 프로그램 제품.
  38. 바이트 스트림의 데이터 구조를 가진 하나 이상의 컴퓨터 판독가능 매체로서,
    상기 바이트 스트림의 데이터 구조는
    구조화된 데이터를 집합적으로 나타내는 제1 복수의 바이트, 및
    상기 바이트 스트림의 버전, 상기 바이트 스트림의 통신 모드, 상기 제1 복수의 바이트용 부호화 포맷, 및 대상 목적지 URI를 포함하는 상기 바이트 스트림의 하나 이상의 속성을 집합적으로 나타내는 제2 복수의 바이트
    를 포함하는 하나 이상의 컴퓨터 판독가능 매체.
  39. 제38항에 있어서,
    상기 구조화된 데이터는 SOAP 엔벨롭인 하나 이상의 컴퓨터 판독가능 매체.
  40. 제38항에 있어서,
    상기 하나 이상의 컴퓨터 판독가능 매체는 물리적인 메모리 매체인 하나 이상의 컴퓨터 판독가능 매체.
  41. 제40항에 있어서,
    상기 물리적 메모리 매체는 비휘발성 메모리를 포함하는 하나 이상의 컴퓨터 판독가능 매체.
KR1020050107997A 2004-12-03 2005-11-11 바이트 스트림을 제공하는 프로토콜에 구조화된 데이터 프로토콜을 바인딩하는 메커니즘 KR101137098B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/003,847 2004-12-03
US11/003,847 US8533357B2 (en) 2004-12-03 2004-12-03 Mechanism for binding a structured data protocol to a protocol offering up byte streams

Publications (2)

Publication Number Publication Date
KR20060063658A true KR20060063658A (ko) 2006-06-12
KR101137098B1 KR101137098B1 (ko) 2012-04-19

Family

ID=35747202

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050107997A KR101137098B1 (ko) 2004-12-03 2005-11-11 바이트 스트림을 제공하는 프로토콜에 구조화된 데이터 프로토콜을 바인딩하는 메커니즘

Country Status (7)

Country Link
US (1) US8533357B2 (ko)
EP (1) EP1667404B1 (ko)
JP (1) JP2006190263A (ko)
KR (1) KR101137098B1 (ko)
CN (1) CN1783881B (ko)
AT (1) ATE433252T1 (ko)
DE (1) DE602005014724D1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8533357B2 (en) 2004-12-03 2013-09-10 Microsoft Corporation Mechanism for binding a structured data protocol to a protocol offering up byte streams
EP1909191B1 (en) 2006-10-02 2011-09-14 Sun Microsystems France S.A. Method and system for transmitting data over a network
CN101771700B (zh) * 2010-01-06 2012-07-25 哈尔滨工业大学 基于FPGA的Modbus协议通信节点
FR2965371A1 (fr) * 2010-09-28 2012-03-30 France Telecom Procedes et dispositifs d'envoi et/ou de reception de donnees par un tube nomme
JP2017504996A (ja) * 2013-11-27 2017-02-09 インターデイジタル パテント ホールディングス インコーポレイテッド メディアプレゼンテーション記述
US9781062B2 (en) * 2014-01-08 2017-10-03 Oracle International Corporation Using annotations to extract parameters from messages
CN106254313B (zh) * 2016-07-15 2019-06-21 国云科技股份有限公司 一种通用的大数据采集字节流解析系统及其实现方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE171325T1 (de) * 1993-03-20 1998-10-15 Ibm Verfahren und vorrichtung zur herausarbeitung der vermittlungsinformation aus dem kopfteil eines protokolls
JPH0879252A (ja) 1994-08-30 1996-03-22 Toshiba Corp 通信システム及び受信装置
US5553070A (en) * 1994-09-13 1996-09-03 Riley; Robert E. Data link module for time division multiplexing control systems
JP3351161B2 (ja) 1995-03-27 2002-11-25 三菱電機株式会社 静止画伝送装置および通信方法
JPH10107920A (ja) 1996-09-27 1998-04-24 Murata Mach Ltd 通信端末装置
US5983022A (en) * 1997-04-10 1999-11-09 Lsi Logic Corporation System and method for using profiles to manage data streams for device verification
DE19738340C2 (de) * 1997-09-02 2001-03-15 Siemens Ag Roaming von Mobilteilen in zumindest teilweise asynchronen drahtlosen Telekommunikationsnetzen, insbesondere DECT-Netzen
US6546425B1 (en) * 1998-10-09 2003-04-08 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6611872B1 (en) * 1999-01-11 2003-08-26 Fastforward Networks, Inc. Performing multicast communication in computer networks by using overlay routing
US6792198B1 (en) * 2000-06-06 2004-09-14 Lg Electronics Inc. Method and apparatus for recording digital data streams and management information
US7289964B1 (en) * 1999-08-31 2007-10-30 Accenture Llp System and method for transaction services patterns in a netcentric environment
US7120692B2 (en) * 1999-12-02 2006-10-10 Senvid, Inc. Access and control system for network-enabled devices
JP2002022808A (ja) * 2000-07-12 2002-01-23 Mitsubishi Electric Corp Lsi試験装置及び試験方法
AUPR063400A0 (en) 2000-10-06 2000-11-02 Canon Kabushiki Kaisha Xml encoding scheme
US6934756B2 (en) * 2000-11-01 2005-08-23 International Business Machines Corporation Conversational networking via transport, coding and control conversational protocols
US20030051026A1 (en) * 2001-01-19 2003-03-13 Carter Ernst B. Network surveillance and security system
US7500017B2 (en) 2001-04-19 2009-03-03 Microsoft Corporation Method and system for providing an XML binary format
US7505936B2 (en) * 2001-05-11 2009-03-17 Accenture Global Services Gmbh Digital content subscription conditioning system
US7124299B2 (en) 2001-05-18 2006-10-17 Claymore Systems, Inc. System, method and computer program product for auditing XML messages in a network-based message stream
US20030084443A1 (en) * 2001-11-01 2003-05-01 Commerce Tv Corporation, Inc. System and method for creating program enhancements for use in an interactive broadcast network
ATE423354T1 (de) * 2002-04-02 2009-03-15 Verizon Business Global Llc Nachrichtenantwortsystem
US8856236B2 (en) * 2002-04-02 2014-10-07 Verizon Patent And Licensing Inc. Messaging response system
US7020729B2 (en) * 2002-05-16 2006-03-28 Intel Corporation Protocol independent data transmission interface
US8069225B2 (en) * 2003-04-14 2011-11-29 Riverbed Technology, Inc. Transparent client-server transaction accelerator
CN100464546C (zh) * 2003-02-25 2009-02-25 华为技术有限公司 一种asn.1协议处理器
US20040210663A1 (en) * 2003-04-15 2004-10-21 Paul Phillips Object-aware transport-layer network processing engine
EP2270622B1 (en) * 2003-06-05 2016-08-24 Intertrust Technologies Corporation Interoperable systems and methods for peer-to-peer service orchestration
US7467202B2 (en) * 2003-09-10 2008-12-16 Fidelis Security Systems High-performance network content analysis platform
US8533357B2 (en) 2004-12-03 2013-09-10 Microsoft Corporation Mechanism for binding a structured data protocol to a protocol offering up byte streams
KR100735233B1 (ko) * 2005-02-25 2007-07-03 삼성전자주식회사 개인방송 서비스 제공 시스템

Also Published As

Publication number Publication date
CN1783881A (zh) 2006-06-07
JP2006190263A (ja) 2006-07-20
EP1667404A1 (en) 2006-06-07
CN1783881B (zh) 2010-06-16
DE602005014724D1 (de) 2009-07-16
EP1667404B1 (en) 2009-06-03
KR101137098B1 (ko) 2012-04-19
US8533357B2 (en) 2013-09-10
US20060133427A1 (en) 2006-06-22
ATE433252T1 (de) 2009-06-15

Similar Documents

Publication Publication Date Title
Neira‐Ayuso et al. Communicating between the kernel and user‐space in Linux using Netlink sockets
KR101137098B1 (ko) 바이트 스트림을 제공하는 프로토콜에 구조화된 데이터 프로토콜을 바인딩하는 메커니즘
Bonaventure Computer Networking: Principles, Protocols and Practice
US8099456B2 (en) Application programming interface for implementing directory service access using directory service markup language
US7254621B2 (en) Technique for enabling remote data access and manipulation from a pervasive device
US9720747B2 (en) Method for flow control and reliable communication in a collaborative environment
US7716290B2 (en) Send by reference in a customizable, tag-based protocol
US7870412B2 (en) Passing client or server instructions via synchronized data objects
JP2003208365A (ja) 適応ディスパッチャを有する仮想ネットワーク
WO2003019415A2 (en) Web server resident on a mobile computing device
US20050108639A1 (en) Method for blocking dereferencing elements in messages
US20020116500A1 (en) Protocol for wireless devices
JP4163616B2 (ja) モバイル通信装置用のデータパケットルータ
EP1608131B1 (en) Content retrieval using exchange of context information
Sarker et al. Learning Python Network Programming
US10157287B2 (en) Secure access client
US20060294210A1 (en) Ad-hoc multimedia information exploitation via web services and mobile agents
CN104243522B (zh) 用于超文本传输协议网络的方法及宽带网络网关
US7430596B2 (en) Integrating electronic messaging diagnostics into a messaging pipeline
JP4864022B2 (ja) モバイル配信フレームワークにおけるコンテンツ処理の調和のための方法およびシステム
Kommey et al. Design and Implementation of a Local Area Network Based Multimedia Messaging Application
US20090328060A1 (en) Http based bounding storage space protocol
Curran Understanding the Internet: a glimpse into the building blocks, applications, security and hidden secrets of the Web
Dovey et al. Networking: Connections, Data, and the Cloud
Walthinsen Metanet: Message-Passing Network Daemons

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: 20160318

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 6