KR20150003192A - 웹 클라이언트가 웹 서비스를 제공하는 것을 가능하게 하는 기법 - Google Patents
웹 클라이언트가 웹 서비스를 제공하는 것을 가능하게 하는 기법 Download PDFInfo
- Publication number
- KR20150003192A KR20150003192A KR20147028426A KR20147028426A KR20150003192A KR 20150003192 A KR20150003192 A KR 20150003192A KR 20147028426 A KR20147028426 A KR 20147028426A KR 20147028426 A KR20147028426 A KR 20147028426A KR 20150003192 A KR20150003192 A KR 20150003192A
- Authority
- KR
- South Korea
- Prior art keywords
- web
- client
- service
- browser
- http
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/029—Firewall traversal, e.g. tunnelling or, creating pinholes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Between Computers (AREA)
- Telephonic Communication Services (AREA)
- Computer And Data Communications (AREA)
Abstract
다양한 실시예들은 웹 클라이언트들이 웹 서비스를 제공하는 것을 가능하게 한다. 하나 이상의 실시예에서, 웹 클라이언트들은 서버들로서 작용하도록 구성되고, 많은 목적 가운데서 특히 웹 클라이언트에 의해 지원되는 웹 서비스들의 양방향 호출을 위해 사용될 수 있다. 한정이 아닌 예로서, 그러한 사용들은 메시지들을 웹 클라이언트로 그리고 웹 클라이언트로부터 푸시하는 것을 포함할 수 있다. 다양한 기술들은 어떠한 맞춤 코드 또는 맞춤 플러그인에 대한 요구도 없이 표준 프로토콜들 및 라이브러리들을 이용할 수 있다.
Description
웹 서버들이 서로 트랜잭션을 수행할 때, 매우 일반적인 프로그래밍 패턴은 HTTP를 전송 수단으로 사용하는 것이다. 예를 들어, 제1 서버가 제2 서버로부터 특정 자원의 표현을 요청하기 위해 HTTP GET 요청을 발행할 수 있다. 이어서, 제2 서버가 자원 표현으로 응답할 수 있다. 서버들 간의 트랜잭션들은 더 비동기적인 방식으로 발생할 수도 있다. 예를 들어, 제1 서버가 HTTP GET 요청을 발행하고, 제2 서버가 응답하는 데 사용할 반환 URL을 제공할 수 있다. 소정의 시간 이후에, 제2 서버는 제1 서버에 의해 제공된 URL을 이용하여 제1 서버에 비동기적으로 반환할 수 있다. 이러한 프로세스는 서버들 사이에서 반대로도 쉽게 동작할 수 있다.
이러한 동일 모델을 이용하여, 웹 브라우저들과 같은 클라이언트측 애플리케이션들과 서버들 간의 트랜잭션들이 이루어질 수 있으며, 클라이언트측 애플리케이션은 HTTP GET 요청을 발행하고, 서버로부터 응답을 수신할 수 있다. 그러나, 그 반대의 프로세스는 수행될 수 없다. 구체적으로, 서버들은 통상적으로 클라이언트측 애플리케이션들 또는 웹 브라우저들에 대해 HTTP GET 또는 POST 요청을 발행할 수가 없는데, 그 이유는 많은 이유 가운데서 특히 웹 브라우저들이 통상적으로 웹 서버를 실행하지 않기 때문이다. 그들이 실행한 경우에도, 네트워크 어드레스 변환(NAT) 장치들과 같은 방화벽들 또는 다른 메커니즘들이 그러한 트랜잭션의 발생을 실질적으로 불가능하게 할 것이다.
이 요약은 아래의 상세한 설명에서 더 설명되는 개념들의 발췌를 간단한 형태로 소개하기 위해 제공된다. 이 요약은 청구 발명 대상의 중요한 특징들 또는 본질적인 특징들을 식별하는 것을 의도하지 않는다.
다양한 실시예들은 웹 클라이언트가 웹 서비스를 제공하는 것을 가능하게 한다. 하나 이상의 실시예에서, 웹 클라이언트들은 서버들로서 작용하도록 구성되며, 많은 목적 가운데서 특히 웹 클라이언트에 의해 지원되는 웹 서비스들의 양방향 호출(to and from calling)을 위해 사용될 수 있다. 한정이 아닌 예로서, 그러한 사용들은 메시지들을 웹 클라이언트로 그리고 그 웹 클라이언트로부터 푸시(push)하는 것을 포함할 수 있다. 다양한 기술들은 어떠한 맞춤 코드 또는 맞춤 플러그인에 대한 요구 없이 표준 프로토콜들 및 라이브러리들을 이용할 수 있다.
하나 이상의 실시예에서, 중간 서버가 웹 클라이언트와의 지속적인 접속을 설정하는 중개자로서 기능한다. 게다가, 중개 서버는 예를 들어 웹 서비스 URL과 같은 웹 클라이언트의 프레즌스 또는 어드레스를 이용하여 웹 클라이언트를 세상에 공개할 수 있다. 메시지를 제1 웹 클라이언트로 전송하려고 하는 다른 웹 클라이언트들(예로서, 브라우저 기반 클라이언트)은 공개된 웹 서비스 URL을 이용하여, 사전 정의된 웹 서비스를 호출할 수 있다. 호출하는 웹 클라이언트는 또한 동일 중개 서버 또는 다른 중개 서버에 등록하고, 그의 웹 서비스 URL을 공개할 수 있다. 이어서, 제1 웹 클라이언트는 이 URL을 이용하여 메시지들을 제2 웹 클라이언트로 푸시할 수 있다.
첨부 도면들을 참조하여 상세한 설명이 설명된다. 도면들에서, 참조 번호의 가장 좌측의 숫자(들)는 참조 번호가 처음 나오는 도면을 식별한다. 설명 및 도면들에서의 상이한 예들에서의 동일한 참조 번호들의 사용은 유사하거나 동일한 아이템들을 지시할 수 있다. 도면들 내에 표시된 엔티티들은 하나 이상의 엔티티를 지시할 수 있으며, 따라서 설명에서 엔티티들의 단수 또는 복수 형태들이 교체 가능하게 참조될 수 있다.
도 1은 하나 이상의 실시예에 따른 예시적인 구현에서의 환경의 도면이다.
도 2는 하나 이상의 실시예에 따른 예시적은 구현에서의 다른 환경의 도면이다.
도 3은 하나 이상의 실시예에 따른 2개의 웹 클라이언트 간의 통신 흐름의 도면이다.
도 4는 하나 이상의 실시예에 따른 호출자, 터널 서비스 및 웹 클라이언트 사이의 예시적인 시퀀스 흐름의 도면이다.
도 5는 하나 이상의 실시예에 따른 예시적인 구현에서의 절차를 도시하는 흐름도이다.
도 6은 본 명세서에서 설명되는 기술들의 실시예들을 구현하기 위해 도 1 및 2를 참조하여 설명되는 바와 같은 임의 타입의 컴퓨팅 장치로서 구현될 수 있는 예시적인 장치의 다양한 컴포넌트들을 포함하는 예시적인 시스템을 나타낸다.
도 1은 하나 이상의 실시예에 따른 예시적인 구현에서의 환경의 도면이다.
도 2는 하나 이상의 실시예에 따른 예시적은 구현에서의 다른 환경의 도면이다.
도 3은 하나 이상의 실시예에 따른 2개의 웹 클라이언트 간의 통신 흐름의 도면이다.
도 4는 하나 이상의 실시예에 따른 호출자, 터널 서비스 및 웹 클라이언트 사이의 예시적인 시퀀스 흐름의 도면이다.
도 5는 하나 이상의 실시예에 따른 예시적인 구현에서의 절차를 도시하는 흐름도이다.
도 6은 본 명세서에서 설명되는 기술들의 실시예들을 구현하기 위해 도 1 및 2를 참조하여 설명되는 바와 같은 임의 타입의 컴퓨팅 장치로서 구현될 수 있는 예시적인 장치의 다양한 컴포넌트들을 포함하는 예시적인 시스템을 나타낸다.
개요
다양한 실시예들은 웹 클라이언트가 웹 서비스를 제공하는 것을 가능하게 한다. 웹 서비스는 특정 URL로 어드레스되고 URL, 헤더들 및 본문을 포함하는 HTTP 요청의 다양한 필드들 내의 입력 파라미터들을 갖는 HTTP 요청을 프로그램으로 전송함으로써 호출될 수 있는 프로그램이다. 결국, 프로그램 계산의 결과인 상태 코드, 헤더들 및 본문을 포함하는 출력 파라미터들이 HTTP 응답의 다양한 필드들 내에서 반환된다. 하나 이상의 실시예에서, 웹 클라이언트들은 서버들로서 작용하도록 구성되고, 많은 목적 가운데서 특히 웹 클라이언트에 의해 지원되는 웹 서비스들의 양방향 호출을 위해 사용될 수 있다. 한정이 아닌 예로서, 그러한 사용들은 메시지들을 웹 클라이언트로 그리고 그 웹 클라이언트로부터 푸시하는 것을 포함할 수 있다. 다양한 기술들은 어떠한 맞춤 코드 또는 맞춤 플러그인에 대한 요구 없이 표준 프로토콜들 및 라이브러리들을 이용할 수 있다. 다양한 기술들은 예를 들어 브라우저들 내에 어떠한 맞춤 코드 또는 맞춤 플러그인도 설치하지 않고서 표준 프로토콜들 및 라이브러리들을 이용하여 브라우저 기반 채트 클라이언트들을 구현하는 데 사용될 수 있다. 적어도 일부 실시예들에서는, 발생하는 HTTP 통신의 구조를 변경할 필요 없이 표준 HTTP 기술들이 이용될 수 있다.
하나 이상의 실시예에서, 중간 서버가 웹 클라이언트와의 지속적인 접속을 설정하는 중개자로서 기능한다. 지속적인 접속은 임의의 적절한 기술들 또는 기법들을 이용하여 설정될 수 있다. 한정이 아닌 예로서, 그러한 기술들 또는 기법들은 COMET, WebSockets 등을 포함할 수 있다. 게다가, 중개 서버는 예를 들어 웹 서비스 URL과 같은 웹 클라이언트의 프레즌스 또는 어드레스를 이용하여 웹 클라이언트를 세상에 공개할 수 있다. 메시지를 제1 웹 클라이언트로 전송하려고 하는 다른 웹 클라이언트들(예로서, 브라우저 기반 클라이언트)은 공개된 웹 서비스 URL을 이용하여, 사전 정의된 웹 서비스를 호출할 수 있다. 호출하는 웹 클라이언트는 또한 동일 중개 서버 또는 다른 중개 서버에 등록하고, 그의 웹 서비스 URL을 공개할 수 있다. 이어서, 제1 웹 클라이언트는 이 URL을 이용하여 메시지들을 제2 웹 클라이언트로 푸시할 수 있다.
본 명세서에서 설명되는 기술들은 다수의 실제 사용에 이용될 수 있다. 예를 들어, 다양한 실시예들은 표준 웹 서비스 기술들을 이용하여 브라우저 기반 클라이언트들의 구현을 가능하게 할 수 있다. 브라우저들은 어떠한 플러그인의 설치 없이도 웹 서비스들을 호출할 수 있으므로, 브라우저 클라이언트는 매우 가벼운 무게를 갖도록 설계될 수 있으며, 웹 브라우저를 갖는 임의의 장치에서 동작할 수 있다. 따라서, 다양한 유연한 사용 시나리오들이 제공될 수 있다. 게다가, 본 명세서에서 설명되는 기술들은 브라우저에 기초하지 않는 시나리오들에 광범위하게 적용될 수 있다. 예를 들어, 이러한 기술들은 한정이 아닌 예로서 내장 장치들을 포함하는 임의의 적절히 구성된 장치에 의해 이용될 수 있다. 예를 들어, 그러한 내장 장치들은 예를 들어 라이트 스위치와 같은 장치가 본 명세서에서 설명되는 바와 같은 웹 서비스들을 제공하고 소비하기 위한 내장 장치로서 구성될 수 있는 "스마트 홈" 또는 "스마트 오피스" 시나리오들과 같은 다양한 시나리오들에서 이용될 수 있는 것들의 형태를 취할 수 있다.
아래의 설명에서는, 본 명세서에서 설명되는 기술들을 이용할 수 있는 예시적인 환경이 먼저 설명된다. 이어서, 예시적인 환경은 물론, 다른 환경들에서도 수행될 수 있는 예시적인 절차들이 설명된다. 결과적으로, 예시적인 절차들의 수행은 예시적인 환경으로 한정되지 않으며, 예시적인 환경은 예시적인 절차들의 수행으로 한정되지 않는다.
예시적인 환경
도 1은 하나 이상의 실시예에 따른 예시적인 환경(100)의 도면이다. 환경(100)은 호출자(102), 클라이언트(104) 및 중개 서버(106)를 포함한다.
호출자(102)는 한정이 아닌 예로서 중개 서버(106)를 호출하도록 구성되는 클라이언트 컴퓨팅 장치, 서버 또는 임의의 다른 엔티티와 같은 임의의 적절히 구성된 호출자를 포함할 수 있다. 하나 이상의 실시예에서, 호출자 및 클라이언트는 임의의 적절한 컴퓨팅 장치에서 실행되는 임의의 적절한 에이전트들을 포함할 수 있으며, 그 예들이 아래에서 제공된다. 에이전트들은 본 명세서에서 설명되는 방법들, 예를 들어 HTTP 방법들은 물론 클라이언트에 대한 다양한 지속 접속 타입들도 이용하여 통신하도록 구성된다. 도시되고 설명되는 실시예에서, 클라이언트(104)는 중개 서버(106)와의 지속 접속을 포함한다. 임의의 적절한 기술을 이용하여, 지속 접속을 설정하는 것이 가능할 수 있다. 중개 서버(106)는 터널 엔드포인트에 의해 식별되는 터널 서비스를 구현한다. 전술한 바와 같이, 클라이언트(104)는 임의의 적절한 타입의 클라이언트를 포함할 수 있다. 본 명세서에서 사용되는 다양한 예들에서, 클라이언트(104)는 브라우저 기반 기술들을 이용하여 통신하는 웹 브라우저 또는 에이전트로서 존재할 수 있지만 반드시 그럴 필요는 없는 웹 클라이언트를 포함한다. 그러나, 클라이언트(104)는 브라우저 기반 기술을 이용하여 통신할 필요는 없다. 예를 들어, 클라이언트(104)는 이 분야의 기술자가 아는 바와 같이 중개 서버(106)와의 터널링을 위해 고유 라이브러리를 이용하는 이동 클라이언트 또는 내장 장치의 형태로 존재할 수 있다. 웹 클라이언트(104)는 터널 ID를 이용하여 중개 서버(106)에 등록한다.
동작 시에, 호출자(102)는 HTTP 또는 HTTPS와 같은 표준 웹 프로토콜들을 이용하여, 표준 동사들을 이용하여 중개 서버(106)를 호출한다. 이것은 통신에 이용되는 표준 HTTP 기술들에 대한 어떠한 변경 없이도 행해질 수 있다. 호출자(102)가 발행하는 호출은 중개 서버(106)와 관련된 터널 엔드포인트, 웹 클라이언트(104)와 관련된 터널 ID, 및 웹 클라이언트(104)에 의해 구현되는 웹 서비스 및 웹 클라이언트에 의해 구현되는 웹 서비스에 의해 처리될 데이터 또는 정보를 식별하는 페이로드를 포함한다. 이어서, 중개 서버(106)는 호출을 웹 클라이언트에 의해 처리될 수 있는 표준 웹 구조로 변환함으로써 호출을 처리한다. 예를 들어, 중개 서버(106)는 호출을 직렬화하여 표준 웹 구조 내에 캡슐화할 수 있다. 이어서, 캡슐화된 구조는 처리를 위해 중개 서버(106)에 의해 지속 접속을 통해 웹 클라이언트(104)로 전송된다. 웹 클라이언트(104)는 캡슐화된 구조를 수신하면, 라이브러리를 이용하여, 캡슐화된 구조 내에서 수신된 데이터 또는 정보를 포함하는 이벤트를 처리를 위해 웹 서비스로 전달한다. 데이터 또는 정보가 웹 서비스에 의해 처리되면, 웹 클라이언트(104)는 페이로드를 갖는 캡슐화된 구조를 포함하는 응답을 형성한다. 형성된 응답은 중개 서버(106)로 전송된다. 형성된 응답은 TCP 접속과 같은 표준 접속을 이용하여 중개 서비스로 전송될 수 있다. 이어서, 중개 서버(106)는 응답을 처리하고, HTTP 응답을 형성하며, 이어서 HTTP 응답은 호출자(102)에게 전송된다.
이러한 접근법을 이용하여, 방화벽 뒤에 존재하는 웹 클라이언트(104)에 의해 지원되는 웹 서비스들이 이용될 수 있고, 완전히 기능하는 HTTP 엔드포인트들로서 나타날 수 있다. 또한, 표준 프로토콜들을 이용함으로써, 호출자(102)와 웹 클라이언트(104)는 다른 방법으로는 그러한 통신을 불가능하게 하는 NAT들 또는 다른 장치들을 통해 통신할 수 있다. 또한, 설명되는 접근법은 표준 프로토콜들을 이용하므로, 이 분야의 기술자가 인식하는 바와 같이 통신을 실행하기 위해 어떠한 추가적인 플러그인 또는 특수 기술도 이용되지 않는다.
일반적으로, 본 명세서에서 설명되는 임의의 기능은 소프트웨어, 펌웨어, 하드웨어(예로서, 고정 논리 회로) 또는 이러한 구현들의 조합을 이용하여 구현될 수 있다. 본 명세서에서 사용되는 바와 같은 용어 "모듈", "기능" 및 "논리"는 일반적으로 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 나타낸다. 소프트웨어 구현의 경우, 모듈, 기능 또는 논리는 프로세서(예로서, CPU 또는 CPU들)에서 실행될 때 지정된 작업들을 수행하는 프로그램 코드를 나타낸다. 프로그램 코드는 하나 이상의 컴퓨터 판독 가능 메모리 장치 내에 저장될 수 있다. 후술하는 기술들의 특징들은 플랫폼과 무관하며, 이는 기술들이 다양한 프로세서들을 갖는 다양한 상용 컴퓨팅 플랫폼들에서 구현될 수 있다는 것을 의미한다.
예를 들어, 호출자(102) 및 웹 클라이언트(104)는 호출자 또는 웹 클라이언트(104)의 하드웨어, 예를 들어, 프로세서, 기능 블록 등으로 하여금 동작들을 수행하게 하는 엔티티(예로서, 소프트웨어)도 포함할 수 있다. 예를 들어, 호출자(102) 및 웹 클라이언트(104)는 관련 컴퓨팅 장치, 더 구체적으로는 컴퓨팅 장치의 하드웨어로 하여금 동작들을 수행하게 하는 명령어들을 유지하도록 구성될 수 있는 컴퓨터 판독 가능 매체를 포함할 수 있다. 따라서, 명령어들은 동작들을 수행하도록 하드웨어를 구성하는 기능을 하며, 이러한 방식으로 기능들을 수행하도록 하드웨어를 변환한다. 명령어들은 컴퓨터 판독 가능 매체에 의해 다양한 상이한 구성들을 통해 컴퓨팅 장치에 제공될 수 있다.
컴퓨터 판독 가능 매체의 하나의 그러한 구성은 신호 보유 매체이며, 따라서 명령어들을 (예로서, 반송파로서) 예를 들어 네트워크를 통해 컴퓨팅 장치의 하드웨어로 전송하도록 구성된다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 저장 매체로도 구성될 수 있으며, 따라서 신호 보유 매체가 아니다. 컴퓨터 판독 가능 저장 매체의 예는 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 광 디스크, 플래시 메모리, 하드 디스크 메모리, 및 자기, 광학 및 다른 기술들을 이용하여 명령어들 및 다른 데이터를 저장할 수 있는 다른 메모리 장치들을 포함한다.
프로세서들은 그들을 형성하는 재료들 또는 그 안에서 사용되는 처리 메커니즘들에 의해 한정되지 않는다. 예를 들어, 프로세서들은 반도체(들) 및/또는 트랜지스터들(예로서, 전자 집적 회로들(IC들))을 포함할 수 있다. 그러한 상황에서, 프로세서 실행 가능 명령어들은 전자적으로 실행 가능한 명령어들일 수 있다. 대안으로서, 프로세서의 또는 프로세서를 위한, 따라서 컴퓨팅 장치의 또는 컴퓨팅 장치를 위한 메커니즘들은 양자 컴퓨팅, 광학 컴퓨팅, 기계 컴퓨팅(예를 들어, 나노 기술을 이용함) 등을 포함할 수 있지만, 이에 한정되지 않는다.
예시적인 동작 환경을 고찰하였으며, 이제 호출자 및 웹 클라이언트가 웹 브라우저들을 이용하여 통신하는 컴퓨팅 장치들의 형태로 존재하는 특정 예를 고찰한다.
도 2는 본 명세서에서 설명되는 기술들을 이용하도록 동작할 수 있는 예시적인 구현에서의 환경(200)의 도면이다. 도시된 환경(200)은 컴퓨팅 장치들(202, 220), 중개 서버들(230, 240), 및 중개 서버들(230, 240)을 통신적으로 연결하는 인터넷과 같은 네트워크(250)를 포함한다. 컴퓨팅 장치들(202, 220)은 후술하는 바와 같은 웹 서비스들을 구현하도록 구성된다.
컴퓨팅 장치(202)는 운영 체제(206), 하나 이상의 애플리케이션(208) 및 웹 브라우저(210)를 포함하는 컴퓨터 판독 가능 저장 매체(204)를 포함한다. 컴퓨팅 장치(220)는 운영 체제(224), 하나 이상의 애플리케이션(226) 및 웹 브라우저(228)를 포함하는 컴퓨터 판독 가능 저장 매체(222)를 포함한다. 컴퓨팅 장치들의 다양한 자원들, 예를 들어 운영 체제, 운영 체제 자원들, 애플리케이션들 및/또는 웹 브라우저들은 아래에서 명백해지듯이 웹 URL에 의해 표현될 수 있다. 이러한 방식으로, 웹 서비스들은 다양한 레벨의 입도로 노출될 수 있으며, 그 예들이 아래에 제공된다.
운영 체제들(206, 224)은 그들 각각의 컴퓨팅 장치의 기초적인 기능을 컴퓨팅 장치에서 실행될 수 있는 각각의 애플리케이션 또는 웹 브라우저로 추상화하도록 구성된다. 예를 들어, 운영 체제들(206, 224)은 그들 각각의 컴퓨팅 장치의 처리, 메모리, 네트워크 및/또는 디스플레이 기능을 추상화할 수 있으며, 따라서 애플리케이션들은 이러한 기초적인 기능이 "어떻게" 구현되는지를 모르고도 작성될 수 있다. 예를 들어, 애플리케이션들은 컴퓨팅 장치와 관련된 디스플레이 장치에 의해 렌더링 및 표시될 데이터를 이러한 렌더링이 어떻게 수행될지를 이해하지 못하고도 운영 체제에 제공할 수 있다.
운영 체제들은 컴퓨팅 장치의 사용자가 내비게이션할 수 있는 파일 시스템 및 사용자 인터페이스를 관리하는 데 사용되는 것과 같은 다양한 다른 기능도 나타낼 수 있다.
중개 서버(230)는 많은 컴포넌트 가운데서 특히 터널 서비스(232)를 포함한다. 또한, 중개 서버(240)는 터널 서비스(242)를 포함한다. 임의의 적절한 수의 컴퓨팅 장치 및 중개 서버가 사용될 수 있다. 도시되고 설명되는 실시예에서, 컴퓨팅 장치들(202, 220)은 클라이언트 컴퓨팅 장치들을 나타내며, 그 예들이 아래에 제공된다.
컴퓨팅 장치들(202, 220)은 네트워크(250)를 통해 통신할 수 있는 컴퓨터, 예를 들어 데스크탑 컴퓨터, 이동국, 엔터테인먼트 기구, 디스플레이 장치에 통신적으로 결합되는 셋톱 박스, 무선 전화, 게임 콘솔 등으로서 구성될 수 있다. 따라서, 컴퓨팅 장치들(202, 220)은 실질적인 메모리 및 프로세서 자원들을 갖는 충분한 자원의 장치들(예로서, 개인용 컴퓨터, 게임 콘솔)로부터 제한된 메모리 및/또는 처리 자원들을 갖는 부족한 자원의 장치들(예로서, 전통적인 셋톱 박스, 핸드헬드 게임 콘솔)에 이르는 범위에 걸칠 수 있다.
네트워크(250)는 인터넷으로서 설명되지만, 다양한 구성들을 가질 수 있다. 예를 들어, 네트워크(250)는 광역 네트워크(WAN), 근거리 네트워크(LAN), 무선 네트워크, 공중 전화망, 인터넷 등을 포함하거나 이용할 수 있다. 또한, 단일 네트워크(250)가 도시되지만, 네트워크(250)는 다수의 네트워크를 포함하도록 구성될 수 있다.
동작 시에, 아래에 더 상세히 설명되는 바와 같이, 다양한 실시예들은 브라우저들(210, 228)과 같은 브라우저 기반 클라이언트들(또한 브라우저에 기초하지 않는 클라이언트들)과 같은 웹 클라이언트들이 웹 서비스들을 제공하는 것을 가능하게 한다. 브라우저들(210, 228)은 서버들로서 작용하도록 구성되며, 많은 목적 가운데서 특히 브라우저 기반 클라이언트에 의해 지원되는 웹 서비스들의 양방향 호출을 위해 사용될 수 있다. 그러한 사용들은 한정이 아닌 예로서 하나의 브라우저로부터 다른 브라우저로 메시지들을 푸시하는 것을 포함할 수 있다. 다양한 기술들은 예를 들어 전술한 바와 같이 브라우저들 내에 어떠한 맞춤 코드 또는 플러그인도 설치하지 않고서 표준 프로토콜들 및 라이브러리들을 이용하여 브라우저 기반 채트 클라이언트들을 구현하는 데 사용될 수 있다.
중개 서버들(230, 240)은 중개자들로서 기능하며, 브라우저 기반 클라이언트들로 하여금 각각의 중개 서버와 본 명세서에서 260, 262로 각각 표현되는 지속 접속들을 설정하는 것을 가능하게 하도록 구성된다. 지속 접속은 전술한 바와 같이 임의의 적절한 기술들 또는 기법들을 이용하여 설정될 수 있다. 한정이 아닌 예로서, 그러한 기술들 또는 기법들은 COMET, WebSockets 등을 포함할 수 있다. 게다가, 중개 서버는 예를 들어 웹 서비스 URL과 같은 브라우저의 프레즌스 또는 어드레스를 이용하여 브라우저 기반 클라이언트를 세상에 공개할 수 있다. 메시지를 제1 브라우저 기반 클라이언트로 전송하려고 하는 다른 웹 서비스 클라이언트들(예로서, 다른 브라우저 기반 클라이언트)은 공개된 웹 서비스 URL을 이용하여, 사전 정의된 웹 서비스를 호출할 수 있다. 호출하는 브라우저 기반 클라이언트는 또한 동일 중개 서버 또는 다른 중개 서버에 등록하고, 그의 웹 서비스 URL을 공개할 수 있다. 이어서, 제1 브라우저 기반 클라이언트는 이 URL을 이용하여 메시지들을 제2 브라우저 기반 클라이언트로 푸시할 수 있다.
동작 시에, 지속 접속들(260, 262)은 각각의 터널 서비스(232, 242)를 이용하여 웹 브라우저(210, 228)와 같은 웹 클라이언트로부터 각각의 중개 서버로의 터널을 생성하는 데 사용된다. 지속 접속들은 다양한 엔티티들로부터 요청들을 수신하는 데 사용될 수 있다. 예를 들어, 지속 접속들은 브라우저 기반 클라이언트들은 물론, 브라우저에 기초하지 않는 클라이언트들이 다른 브라우저 기반 및 브라우저에 기초하지 않는 클라이언트들을 포함하는 다른 호출자들로부터 웹 서비스 요청들을 수신하는 것을 가능하게 하는 데 사용될 수 있다. 중개 서버는 외부적으로 그리고 계속적으로 이용 가능한 HTTP 엔드포인트로서 작용한다. 이것은 또한 브라우저가 서버들로부터 동기 요청들을 수신하거나 비동기 요청들에 대한 요청들을 처리하기 위해 소켓을 열고 웹 서버를 국지적으로 시동할 수 있는 경우에 발생할 것에 대한 에뮬레이션을 가능하게 한다.
일례로서, 아래의 사항을 고찰한다. 컴퓨팅 장치(202)는 중개 서버(230)와 지속 접속(260)을 설정할 수 있다. 웹 브라우저(210)는 지속 접속(260)을 통해 중개 서버(230)에 등록할 수 있다. 또한, 컴퓨팅 장치(220)는 중개 서버(240)와 지속 접속(262)을 설정할 수 있다. 웹 브라우저(228)는 또한 지속 접속(262)을 통해 중개 서버(240)에 등록할 수 있다. 웹 브라우저(210)가 웹 브라우저(228)와 통신하기를 원할 때, 웹 브라우저(210)는 웹 브라우저(228)와 관련된 웹 서비스 URL을 획득한다. 이것은 예를 들어 중개 서버(240)에 의해 유지되는 레지스트리를 통해 이루어질 수 있다. 이어서, 브라우저(210)는 웹 서비스 URL을 이용하여, 웹 브라우저(228)에 의해 공개된 웹 서비스를 호출하여, 데이터 또는 다른 정보를 웹 브라우저(228)로 전달할 수 있다. 전달되는 데이터와 함께, 웹 브라우저(210)는 그의 웹 서비스 URL도 웹 브라우저(228)에 제공할 수 있다. 이어서, 웹 브라우저(228)는 웹 브라우저(210)의 웹 서비스 URL을 이용하여, 데이터 또는 다른 정보를 웹 브라우저(210)로 전달할 수 있다. 하나 이상의 실시예에서, 웹 서비스 URL들은 중개 서버들(230, 240) 각각과 관련된 어드레스들이다. 웹 서비스 URL들은 중개 서버가 그의 각각의 터널 서비스(232, 242)를 통해 웹 서비스 호출의 주제인 데이터를 전달할 곳을 확인하는 것을 가능하게 하기 위한 관련 브라우저의 식별을 포함하도록 구성된다. 터널 서비스에 대해 행해지는 요청들은 중개 서버와의 표준 TCP 접속을 이용하여 행해질 수 있다. 이어서, 중개 서버는 의도된 수신자와의 지속 접속을 이용하여 요청을 수신자에게 전달할 수 있다. 의도된 수신자로부터의 응답들이 표준 TCP 접속을 이용하여 중개 서비스로 전송될 수 있다.
도 3은 하나 이상의 실시예에 따른 예시적인 환경(300)의 도면이다. 환경(300)은 라이브러리(304)를 갖는 웹 브라우저(302), 라이브러리(308)를 갖는 웹 브라우저(306), 및 터널 서비스(312)를 구현하는 중개 서버(310)를 포함한다. 이 예에서, 2개의 웹 브라우저(즉, 웹 클라이언트) 각각은 하나 이상의 웹 서비스를 구현하며, 서로 통신하기를 원한다.
도시되고 설명되는 실시예에서, 웹 브라우저들(302, 306) 각각은 화살표들에 의해 지시되는 중개 서버(310)와의 지속 접속을 포함한다. 지속 접속은 중개 서버를 통해 호출자로부터 웹 서비스 요청들을 수신하는 데 사용될 수 있다. 임의의 적절한 기술을 이용하여 지속 접속의 설정을 가능하게 할 수 있다. 게다가, 웹 브라우저들 각각은 각각의 터널 ID를 이용하여 중개 서버(310)에 등록된다.
동작 시에, 웹 브라우저(302)및 웹 브라우저(306))는 표준 웹 프로토콜들을 이용하여 HTTP 요청의 형태로 호출을 발행한다. 이러한 특정 예에서, HTTP 요청은 아래의 형태를 취한다.
http://tunnel-endpoint/<tunnel-ID>/service/message
웹 브라우저(302)가 발행하는 호출은 중개 서버(310)와 관련되고 그를 식별하는 터널 엔드포인트("tunnel-endpoint"), 웹 브라우저(306)와 관련된 터널 ID("tunnel-ID"), 및 웹 브라우저(306)에 의해 구현되는 웹 서비스 및 웹 브라우저에 의해 구현되는 웹 서비스에 의해 처리될 데이터 또는 정보("service/message")를 식별하는 페이로드를 포함한다.
이어서, 서버(310) 및 그의 터널 서비스(312)는 호출을 웹 브라우저에 의해 처리될 수 있는 표준 웹 구조로 변환함으로써 호출을 처리한다. 예를 들어, HTTP 요청은 메소드, URL, 본문 및 헤더들을 포함한다. 이들은 본질적으로 메소드, URL, 본문 및 헤더들에 대응하는 키들 및 콘텐츠를 갖는 사전인 자바스크립트 구조를 구성하는 데 사용된다. 이어서, JSON(JavaScript Object Notation)을 이용하여 자바스크립트 구조를 직렬화 및 캡슐화하여, 캡슐화된 요청 구조를 제공한다. 이어서, 중개 서버(310)는 캡슐화된 요청 구조를 처리를 위해 지속 접속을 이용하여 웹 브라우저(306)로 전송한다. 웹 브라우저(306)는 캡슐화된 요청 구조를 수신한 때, 캡슐화된 요청 구조 내에서 수신된 데이터 또는 정보를 포함하는 이벤트(즉, "/service/message")를 처리를 위해 라이브러리(308)를 이용하여 웹 서비스로 전달할 수 있다. 데이터 또는 정보가 웹 서비스에 의해 처리되면, 웹 브라우저(306)는 페이로드를 갖는 캡슐화된 응답 구조, 예를 들어 JSON을 이용하여 캡슐화된 응답 구조를 포함하는 응답을 형성한다. 캡슐화된 응답 구조는 중개 서버(310)로 전송된다. 캡슐화된 응답 구조는 표준 TCP 접속을 이용하여 중개 서버로 전송될 수 있다. 이어서, 중개 서버(310)는 캡슐화된 응답 구조를 처리하여 HTTP 응답을 형성하며, 이어서 이 응답은 웹 브라우저(302)로 전송된다. HTTP 응답은 웹 브라우저(302)에 의해 통상의 방식으로 처리될 수 있다.
게다가, 2개의 웹 브라우저(302, 306)는 아래의 포맷을 이용하여 서로의 HTTP 요청들을 행함으로써 서로 직접 통신할 수 있다.
http://tunnel-endpoint/<respective-tunnel-ID>
또한, 적어도 일부 실시예들에서, 웹 서비스가 서버측 자바스크립트 프로그래밍 언어 및 실행 환경인 Node.JS를 이용하여 구현되는 경우, 이 분야의 기술자가 알듯이, 서버 인스턴스화 라이브러리를 터널 엔드포인트 라이브러리로 간단히 대체함으로써 동일 코드가 서버로부터 임의의 브라우저 클라이언트로 이동될 수 있다. 따라서, 들어오는 웹 요청들을 수신하도록 등록하는 대신에, 소프트웨어가 Node.JS 환경에서 실행되고 있는 경우에 생성되는 바와 같이 동일 이벤트들을 생성하는 터널링 소프트웨어의 클라이언트측 자바스크립트 구현을 이용하여 등록이 이루어질 수 있다.
도 4는 외부 HTTP 요청이 어떻게 JSON 내에 캡슐화된 후에 지속 접속을 통해 클라이언트, 예로서 웹 브라우저로 전송되는지를 나타내는 예시적인 시퀀스 도면(일반적으로 400)을 나타낸다. 이 예에서는, 인증이 수행되지만 도시되지 않는다. 구체적으로, 인증은 메시지들을 클라이언트들로 전송하도록 권한 있는 호출자들을 제한함으로써 터널 서비스에서 또는 클라이언트(예로서, 브라우저) 자체에서 또는 이들 양자에서 수행될 수 있다.
이 예에서는, 다수의 액션이 호출자, 터널 서비스 및 클라이언트를 포함하는 엔티티들에 의해 수행되는 것으로서 도시된다. 액션들 각각은 원 안의 번호를 이용하여 열거되며 후술한다. 전술한 바와 같이, 호출자는 한정이 아닌 예로서 최종 사용자 컴퓨팅 장치, 서버, 컴퓨팅 장치 또는 서버에서 실행되는 적절히 구성된 애플리케이션, 웹 브라우저 등을 포함하는 임의의 적절한 엔티티를 포함할 수 있다. 먼저, 호출자가 "1"에서 HTTP 요청을 행한다. 이것은 지속 접속을 통해 이루어질 수 있지만 그럴 필요는 없다. 예를 들어, HTTP 요청은 터널 서비스와의 통신을 가능하게 하는 TCP 접속을 통해 행해질 수 있다. 이 예에서, HTTP 요청은 POST이며, 설명 바로 아래 표시된 형태를 갖는다. "connID"는 클라이언트를 등록한 tunnel-ID에 대응한다. "myURL"은 페이로드의 일부인 "service/message"에 대응한다.
터널 서비스가 HTTP 요청을 수신하고, "2"에서 "connID"와 매칭되는 접속을 선택한다. "3"에서, 터널 서비스가 HTTP 요청을 직렬화하고, JSON 내에 캡슐화한다. 직렬화 및 캡슐화된 요청 구조는 시퀀스 도면 바로 아래에 도시되어 있다. 클라이언트는 캡슐화된 요청 구조를 지속 접속을 통해 수신하고, 적절히 구성된 라이브러리를 이용하여, 캡슐화된 요청 구조를 처리하고, 정보 및 데이터를 포함하는 적절한 이벤트를 전달하여 클라이언트 지원 웹 서비스가 정보 및 데이터를 처리하는 것을 가능하게 한다. 이어서, 클라이언트가 JSON 내에 캡슐화되는 캡슐화된 응답 구조를 준비하고, "4"에서 캡슐화된 응답 구조를 터널 서비스로 반환한다. 캡슐화된 응답 구조의 구조는 시퀀스 도면 바로 아래에 도시되어 있다. 이러한 응답은 표준 TCP 접속을 이용하여 터널 서비스로 전송될 수 있다.
이어서, 터널 서비스가 캡슐화된 응답 구조를 처리하고, "5"에서 호출자에게 전송되는 HTTP 응답을 준비한다. HTTP 응답의 구조는 시퀀스 도면 바로 아래에 도시되어 있다. 응답은 요청이 이행되었음을 지시하는 HTTP 상태 코드(200), 및 호출자의 요청의 웹 서비스의 처리로부터 발생하는 정보 및 데이터를 포함하는 페이로드를 함께 포함한다. 응답은 이제 호출자에 의해 통상의 HTTP 응답으로서 처리될 수 있다.
위의 설명에 더하여, 추가적인 사항들이 고려될 수 있다. 일례로서, 아래의 사항을 고려한다.
다른 고려 사항들
보안 사항들과 관련하여, 아래의 사항을 고려한다. 하나 이사의 실시예에서, 비밀성을 촉진하기 위해, 호출자들과 중개 서버 및 중개 서버와 클라이언트 사이의 통신은 한정이 아닌 예로서 전송 계층 보안(TLS) 또는 보안 소켓 계층(SSL)을 이용하는 것과 같은 보안 전송 수단을 통해 이루어질 수 있다. HTTP 통신의 경우, HTTPS가 사용될 수 있다. 또한, 서비스 요청들이 허가된 시스템들로 제한되는 것을 보증하기 위해, 서비스 계정이 사용될 수 있다. 서비스 계정들은 계정 키들을 사용할 수 있다. 이러한 방식으로, 서비스의 호출자는 이 키를 이용하여 그의 HTTP 요청에 서명할 수 있으며, 따라서 그가 정말로 키 및 관련 계정을 소유하고 있다는 증명을 용이하게 할 수 있다. 이러한 서명은 임의의 적절한 암호화 방법, 예를 들어 HMAC(Hash-based Message Authentication Code)를 이용하여 구현될 수 있다. 이러한 서명은 HTTP 요청에 추가적인 허가 헤더 내에 첨부될 수 있다. 이러한 서명은 요청의 수신 시에 서비스에 의해 검사될 수 있으며, 검사에 성공한 경우에 서비스 요청이 이행될 수 있다.
또한, 서비스의 호출자가 서버가 아니라 클라이언트인 경우, 추가적인 조항을 이용하여 계정 키의 보안을 보증할 수 있다. 클라이언트 상에서, 통상적으로 키는 서버에 저장되었을 때와 같이 안전하게 저장된 것으로는 추정되지 않는다. 이 때문에, 다른 보안 증명서 대신에 임시 계정 키들이 이들이 획득하기 위한 절차와 결합하여 사용될 수 있다. 그러한 키는 예를 들어 하루 후에 또는 사전 정의된 기간 내에 실효됨으로써 제한된 유효성을 가질 것이다. 또한, 서비스에 접속하는 클라이언트는 전술한 바와 같은 임시 키들의 동일 기술을 이용하여 그 자신을 허가하도록 요청될 수도 있다.
게다가, 보안 관점에서, 허가된 시스템들이 그들의 웹 서비스 요청들을 임의의 주어진 클라이언트로 중계할 수 있는 것을 보증하기 위한 메커니즘이 터널 서비스에 의해 이용될 수 있다. 이것은 클라이언트 접속에 할당되고 클라이언트의 개별 서비스 URL 내에 삽입되는 암호적으로 임의적인 접속 ID들을 이용하여 달성된다. 클라이언트는 그가 요청들을 전송하기를 원하는 시스템들에 그 URL만을 제공한다. 어떠한 다른 시스템도 클라이언트에 할당된 서비스 URL/접속 ID를 모르거나 추측할 수 없다는 간단한 사실로 인해 요청들을 행할 수 없을 것이다.
확장성의 관점에서, 아래 사항을 고려한다. 전술한 바와 같이, 호출자들은 임의의 적절한 타입의 엔티티를 포함할 수 있다. 예를 들어, 위의 설명에서는, 웹 브라우저가 특정 웹 서비스 또는 다른 웹 브라우저에 대한 호출들을 개시하는 데 사용되었다. 운영 체제 자체가 적절히 구성된 중개 서버와의 지속 접속을 유지할 수 있는 상황을 고려한다. 이러한 경우에, 운영 체제는 그의 개별 자원들을 전술한 기술들을 이용하여 액세스될 수 있는 URL들로서 노출시킬 수 있다. 예를 들어, 디스플레이 스크린 상에 나타날 수 있는 개별 타일들이 개별 URL들과 연관될 수 있다. 개별 타일들과 관련된 콘텐츠가 서버에 의해 푸시 모델을 이용하여 갱신될 수 있다. 예를 들어, 운영 체제가 갱신들을 사전에 가져오거나 획득하는 것이 아니라, 갱신들이 그들의 관련 URL들에 있는 운영 체제 자원들로 푸시될 수 있다. 따라서, 예를 들어, 타일이 갱신되어야 하는 경우, 웹 서비스는 타일의 관련 URL을 이용하여, 특정 타일로 터널링되는 HTTP POST 요청을 행할 수 있다. 예를 들어, 컴퓨팅 시스템은 타일을 날씨 갱신들과 연관시킬 수 있다. 날씨 갱신들을 검색할 필요 없이 그러한 갱신들은 전술한 기술을 이용하여 타일로 푸시될 수 있다.
다른 예로서, 호출 서비스들을 고려한다. 호출 서비스들을 이용하는 경우, 클라이언트들은 예를 들어 VoIP(Voice over Internet Protocol)를 이용하여 서로 호출할 수 있다. 이러한 시나리오들에서, 클라이언트가 들어오는 호출을 갖는 경우, 특수화된 호출 서버들을 이용하는 것이 아니라, 전술한 기술들을 HTTP 기반 호출 서버들과 연계하여 이용하여, 들어오는 호출과 관련된 HTTP 요청을 클라이언트로 직접 전송할 수 있으며, 이는 푸시 호출 통지를 발생시킨다.
웹 브라우저 시나리오들과 관련하여, 아래 사항을 고려한다. RTC-웹(월드 와이드 웹 상의 실시간 협력)은 웹의 사용자들 간의 실시간 상호작용 통신을 달성할 수 있는 웹 브라우저들에서 표준화된 기반구조를 달성하기 위한 노력이다. RTC-웹을 이용하여, 웹 브라우저들 사이에 피어 대 피어 오디오 및 비디오 매체 세션들이 설정될 수 있다. RTC-웹을 통해 브라우저들 사이에 설정된 데이터 채널들을 이용하여, 웹 브라우저들에 의해 지원되는 웹 서비스들이 전술한 기술들을 이용하여, 중개 서버를 우회하여 서로 통신할 수 있다. 이러한 방식으로, 웹 브라우저들에 의해 구현되는 라이브러리 기능들이 서로에 대한 HTTP 호출들을 행하여, 웹 브라우저들에 의해 지원되는 웹 서비스들에 액세스하여 이용할 수 있다.
또한, 전술한 기술들은 확장성을 매우 촉진한다. 예를 들어, 클라이언트들 또는 호출자들이 증가할 때, 터널 서비스를 노출시키는 중개 서버들이 쉽게 추가되어 그러한 증가를 수용할 수 있다. 이러한 타입의 확장성을 이용하여, 부하 균형화기들과 관련된 처리 오버헤드가 크게 감소될 수 있다. 구체적으로, 통상적으로 부하 균형화기들은 대형 시스템들에서 호출들을 지향시킬 곳을 확인하는 데 사용된다. 부하 균형화기가 호출에 응답하여 중개 서버에 대한 접속을 결정하면, 이후에는 그 호출자에 대해 부하 균형화를 사용할 필요가 없다. 즉, 접속이 확인되면, 부하 균형화기를 이용할 필요 없이 후속 호출들이 중개 서버로 직접 행해질 수 있다.
확장성과 관련하여, 아래 사항을 고려한다. 확장성은 터널 URL들 형성한 방식으로 지원되고 형성될 수 있다. 예를 들어, 터널 URL은 바로 아래에 표시된 형태를 가질 수 있다.
http://trouterX.trouter.net/connectionID
여기서, trouterX.trouter.net은 지속 접속을 호스트하는 서버의 특정 인스턴스의 도메인 이름이다. 이것은 모든 서버들이 서로를 발견하고 웹 서비스 요청들을 서로 위임할 필요 없이 독립적으로 동작하는 것을 가능하게 한다. 올바른 서버를 발견하는 작업은 인터넷, 예로서 DNS에 맡겨진다. 이러한 실시예에서, 시스템은 서버 인스턴스들 사이에 어떠한 공유 상태로 갖지 않는다. 이것은 이 분야의 기술자가 알듯이 제한되지 않은 확장성을 위한 규정이다.
이것은 예를 들어 URL이 아래의 형태를 취할 수 있는 대안 접근법과 대조적이다.
http://alternativeservice.net/app-assigned-ID
이러한 접근법에서, 요청은 먼저 통상적으로 접속을 갖지 않는 랜덤 서버로 라우팅된다. 따라서, 이러한 랜덤 서버는 접속 소유자를 발견하고 그에게 위임해야 한다. 이러한 상황은 애플리케이션에 의해 선택된 터널/접속 ID에 의해 악화되며, 따라서 서버가 라우팅 정보를 URL 내에 삽입하는 것이 방해된다. 이것은 이 분야의 기술자가 알듯이 "애플리케이션 할당 ID"에 의해 잠기는 라우팅 정보를 유지하기 위한 지속 저장소에 대한 필요를 유발한다.
하나 이상의 실시예에 따른 예시적인 시퀀스 도면 및 다른 사항들이 고려되었으며, 이제 하나 이상의 실시예에 따라 구현될 수 있는 예시적인 절차의 설명을 고려한다.
예시적인 절차들
도 5는 클라이언트가 웹 서비스를 제공하는 것을 가능하게 하는 방식으로 호출자, 터널 서비스 및 클라이언트 사이에서 발생하는 통신 흐름을 설명한다. 통신 흐름은 전술한 시스템들 및 장치들을 이용하여 구현될 수 있다. 절차들 각각의 양태들은 하드웨어, 펌웨어 또는 소프트웨어 또는 이들의 조합에서 구현될 수 있다. 절차들은 하나 이상의 장치에 의해 수행되는 동작들을 지정하는 블록들의 세트로서 도시되지만, 각각의 블록에 의한 동작들을 수행하기 위해 도시된 순서들로 한정될 필요는 없다.
블록 502에서, 호출자가 적절히 구성된 웹 클라이언트에 의해 제공되는 웹 서비스와 관련된 HTTP 요청을 생성한다. HTTP 요청들의 예는 위에서 제공되었다. 블록 504는 HTTP 요청을 터널 서비스로 전송한다. 이 요청은 표준 TCP 접속을 통해 전송될 수 있다.
블록 506은 HTTP 요청을 수신하며, 블록 508은 HTTP 요청을 처리하여 클라이언트를 식별한다. 이것은 임의의 적절한 방식으로 수행될 수 있으며, 그 예들이 위에서 제공되었다. 블록 510은 HTTP 요청을 직렬화하고, 블록 512는 직렬화된 HTTP 요청을 요청 구조 내에 캡슐화한다. 이것은 임의의 적절한 방식으로 수행될 수 있다. 적어도 일부 실시예들에서, 직렬화된 HTTP 요청은 전술한 바와 같이 JSON 내에 캡슐화된다. 블록 514는 캡슐화된 요청 구조를 클라이언트로 전송한다. 하나 이상의 실시예에서, 캡슐화된 요청 구조는 터널 서비스와 클라이언트 사이에 유지되는 지속 접속을 통해 전송된다.
블록 516은 캡슐화된 요청 구조를 클라이언트에서 수신한다. 블록 518은 웹 서비스를 적어도 부분적으로 이용하여, 캡슐화된 요청 구조를 처리한다. 블록 520은 웹 서비스의 실행과 관련된 데이터 및 정보를 적어도 포함하는 캡슐화된 응답 구조를 준비한다. 블록 522는 캡슐화된 응답 구조를 터널 서비스로 전송한다. 하나 이상의 실시예에서, 캡슐화된 응답 구조는 표준 TCP 접속을 통해 전송될 수 있다.
블록 524는 캡슐화된 응답 구조를 터널 서비스에서 수신한다. 블록 516은 캡슐화된 응답 구조를 처리하고, HTTP 응답을 호출자에게 전송한다. 이것을 행할 수 있는 방법의 예들이 위에서 제공되었다.
블록 528은 호출자에서 HTTP 요청을 수신하고, 블록 530은 HTTP 요청을 처리한다. 이것은 클라이언트가 웹 서비스를 실행한 결과로서 HTTP 응답 내에 포함된 데이터 및 정보를 처리하는 것을 포함할 수 있다.
하나 이상의 실시예에 따른 예시적인 절차들이 설명되었으며, 이제 전술한 실시예들을 구현하는 데 사용될 수 있는 예시적인 시스템 및 장치를 고려한다.
예시적인 시스템 및 장치
도 6은 본 명세서에서 설명되는 다양한 기술들을 구현할 수 있는 하나 이상의 컴퓨팅 시스템 및/또는 장치를 나타내는 예시적인 컴퓨팅 장치(602)를 포함하는 예시적인 시스템(일반적으로 600)을 도시한다. 컴퓨팅 장치(602)는 예를 들어 서비스 제공자의 서버, 클라이언트와 관련된 장치(예로서, 클라이언트 장치), 온칩 시스템 및/또는 임의의 다른 적절한 컴퓨팅 장치 또는 컴퓨팅 시스템일 수 있다.
도시된 바와 같은 예시적인 컴퓨팅 장치(602)는 서로 통신적으로 결합되는 처리 시스템(604), 하나 이상의 컴퓨터 판독 가능 매체(606) 및 하나 이상의 I/O 인터페이스(608)를 포함한다. 도시되지 않지만, 컴퓨팅 장치(602)는 다양한 컴포넌트들을 서로 결합하는 시스템 버스 또는 다른 데이터 및 명령 전송 시스템을 더 포함할 수 있다. 시스템 버스는 메모리 버스 또는 메모리 제어기, 주변장치 버스, 유니버설 직렬 버스 및/또는 임의의 다양한 버스 아키텍처를 이용하는 프로세서 또는 로컬 버스와 같은 상이한 버스 구조들 중 어느 하나 또는 조합을 포함할 수 있다. 제어 및 데이터 라인들과 같은 다양한 다른 예들도 고려된다.
처리 시스템(604)은 하드웨어를 이용하여 하나 이상의 동작을 수행하기 위한 기능을 나타낸다. 따라서, 처리 시스템(604)은 프로세서, 기능 블록 등으로서 구성될 수 있는 하드웨어 요소들(610)을 포함하는 것으로 도시된다. 이것은 하나 이상의 반도체를 이용하여 형성되는 주문형 집적 회로 또는 다른 논리 장치로서의 하드웨어 구현을 포함할 수 있다. 하드웨어 요소들(610)은 그들을 형성하는 재료들 또는 그 안에서 사용되는 처리 메커니즘들에 의해 한정되지 않는다. 예를 들어, 프로세서들은 반도체(들) 및/또는 트랜지스터들(예로서, 전자 집적 회로들(IC들))을 포함할 수 있다. 그러한 상황에서, 프로세서 실행 가능 명령어들은 전자적으로 실행 가능한 명령어들일 수 있다.
컴퓨터 판독 가능 저장 매체(606)는 메모리/저장 장치(612)를 포함하는 것으로 도시된다. 메모리/저장 장치(612)는 하나 이상의 컴퓨터 판독 가능 매체와 관련된 메모리/저장 능력을 나타낸다. 메모리/저장 컴포넌트(612)는 (랜덤 액세스 메모리(RAM)와 같은) 휘발성 매체 및/또는 (판독 전용 메모리(ROM), 플래시 메모리, 광 디스크, 자기 디스크 등과 같은) 비휘발성 매체를 포함할 수 있다. 메모리/저장 컴포넌트(612)는 고정 매체(예로서, RAM, ROM, 고정 하드 드라이브 등)는 물론, 이동식 매체(예로서, 플래시 메모리, 이동식 하드 드라이브, 광 디스크 등)도 포함할 수 있다. 컴퓨터 판독 가능 매체(606)는 아래에 더 설명되는 바와 같이 다양한 다른 방식으로 구성될 수 있다.
입출력 인터페이스(들)(608)는, 사용자가 컴퓨팅 장치(602)에 명령 및 정보를 입력하는 것을 가능하게 하고, 또한 정보가 다양한 입출력 장치들을 이용하여 사용자 및/또는 다른 컴포넌트들 또는 장치들에 제공되는 것을 가능하게 하기 위한 기능을 나타낸다. 입력 장치들의 예는 키보드, 커서 제어 장치(예로서, 마우스), 마이크, 스캐너, 터치 기능(예로서, 물리 터치를 검출하도록 구성되는 용량성 또는 기타 센서들), (예로서, 가시 또는 비가시 파장들, 예로서 적외선 주파수들을 이용하여, 움직임을 터치를 수반하지 않는 제스처들로서 인식할 수 있는) 카메라 등을 포함한다. 출력 장치들의 예는 디스플레이 장치(예로서, 모니터 또는 프로젝터), 스피커, 프린터, 네트워크 카드, 촉각 응답 장치 등을 포함한다. 따라서, 컴퓨팅 장치(602)는 사용자 상호작용을 지원하기 위해 아래에 더 설명되는 바와 같은 다양한 방식으로 구성될 수 있다.
컴퓨팅 장치(602)는 그가 제공할 수 있고 본 명세서에서 설명되는 기술들을 이용하여 다양한 호출자들에 의해 이용될 수 있는 하나 이상의 웹 서비스(613)도 포함한다.
다양한 기술들은 본 명세서에서 소프트웨어, 하드웨어 요소들 또는 프로그램 모듈들과 일반적으로 관련하여 설명될 수 있다. 일반적으로, 그러한 모듈들은 특정 작업들을 수행하거나 특정 추상 데이터 타입들을 구현하는 루틴, 프로그램, 객체, 요소, 컴포넌트, 데이터 구조 등을 포함한다. 본 명세서에서 사용되는 바와 같은 용어 "모듈", "기능" 및 "컴포넌트"는 일반적으로 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 나타낸다. 본 명세서에서 설명되는 기술들의 특징들은 플랫폼과 무관하며, 이는 기술들이 다양한 프로세서들을 갖는 다양한 상용 컴퓨팅 플랫폼들에서 구현될 수 있다는 것을 의미한다.
설명되는 모듈들 및 기술들의 구현이 소정 형태의 컴퓨터 판독 가능 매체에 저장되거나 그를 통해 전송될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨팅 장치(602)에 의해 액세스될 수 있는 다양한 매체를 포함할 수 있다. 한정이 아닌 예로서, 컴퓨터 판독 가능 매체는 "컴퓨터 판독 가능 저장 매체" 및 "컴퓨터 판독 가능 신호 매체"를 포함할 수 있다.
"컴퓨터 판독 가능 저장 매체"는 단순한 신호 전송, 반송파 또는 신호 자체가 아니라 정보의 지속 및/또는 비일시적 저장을 가능하게 하는 매체들 및/또는 장치들을 지칭할 수 있다. 따라서, 컴퓨터 판독 가능 저장 매체는 비-신호 보유 매체를 지칭한다. 컴퓨터 판독 가능 저장 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 논리 요소/회로 또는 다른 데이터와 같은 정보의 저장에 적합한 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체들 및/또는 저장 장치들과 같은 하드웨어를 포함한다. 컴퓨터 판독 가능 저장 매체의 예들은 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 다기능 디스크(DVD) 또는 다른 광학 저장 장치, 하드 디스크, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 장치, 또는 원하는 정보를 저장하는 데 적합하고 컴퓨터에 의해 액세스될 수 있는 다른 저장 장치, 유형 매체 또는 제조물을 포함할 수 있지만 이에 한정되지 않는다.
"컴퓨터 판독 가능 신호 매체"는 명령어들을 예를 들어 네트워크를 통해 컴퓨팅 장치(602)의 하드웨어로 전송하도록 구성되는 신호 보유 매체를 지칭할 수 있다. 신호 매체는 통상적으로 반송파, 디지털 신호 또는 다른 전송 메커니즘과 같은 피변조 데이터 신호 내에 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 구현할 수 있다. 신호 매체는 임의의 정보 전달 매체도 포함한다. 용어 "피변조 데이터 신호"는 신호 내에 정보를 인코딩하는 방식으로 신호의 특성들 중 하나 이상이 설정 또는 변경된 신호를 의미한다. 한정이 아닌 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체, 및 음향, RF, 적외선 및 다른 무선 매체와 같은 무선 매체를 포함한다.
전술한 바와 같이, 하드웨어 요소들(610) 및 컴퓨터 판독 가능 매체(606)는 본 명세서에서 설명되는 기술들의 적어도 일부 양태들을 구현하기 위해, 예를 들어 하나 이상의 명령어를 실행하기 위해 일부 실시예들에서 사용될 수 있는 하드웨어 형태로 구현되는 모듈들, 프로그래밍 가능 장치 논리 및/또는 고정 장치 논리를 나타낸다. 하드웨어는 집적 회로 또는 온칩 시스템의 컴포넌트들, 주문형 집적 회로(ASIC), 필드 프로그래머블 게이트 어레이(FPGA), 복합 프로그래밍 가능 논리 장치(CPLD), 및 실리콘 또는 다른 하드웨어 내의 다른 구현들을 포함할 수 있다. 이와 관련하여, 하드웨어는 하드웨어에 의해 구현되는 명령어들 및/또는 논리는 물론, 실행할 명령어들을 저장하는 데 사용되는 하드웨어, 예를 들어 전술한 컴퓨터 판독 가능 저장 매체에 의해 정의되는 프로그램 작업들을 수행하는 처리 장치로서 동작할 수 있다.
위의 것들의 조합들도 본 명세서에서 설명되는 다양한 기술들을 구현하는 데 사용될 수 있다. 따라서, 소프트웨어, 하드웨어 또는 실행 가능 모듈들은 소정 형태의 컴퓨터 판독 가능 저장 매체 상에 그리고/또는 하나 이상의 하드웨어 요소(610)에 의해 구현되는 하나 이상의 명령어 및/또는 논리로서 구현될 수 있다. 컴퓨팅 장치(602)는 소프트웨어 및/또는 하드웨어 모듈들에 대응하는 특정 명령어들 및/또는 기능들을 구현하도록 구성될 수 있다. 따라서, 컴퓨팅 장치(602)에 의해 소프트웨어로서 실행될 수 있는 모듈의 구현은 적어도 부분적으로 하드웨어에서, 예를 들어 컴퓨터 판독 가능 저장 매체 및/또는 처리 시스템(604)의 하드웨어 요소들(610)을 사용하여 달성될 수 있다. 명령어들 및/또는 기능들은 본 명세서에서 설명되는 기술들, 모듈들 및 예들을 구현하기 위해 하나 이상의 제조물(예로서, 하나 이상의 컴퓨팅 장치(602) 및/또는 처리 시스템(604))에 의해 실행/동작 가능할 수 있다.
도 6에 더 도시된 바와 같이, 예시적인 시스템(600)은 개인용 컴퓨터(PC), 텔레비전 장치 및/또는 이동 장치에서 애플리케이션들을 실행할 때 중단 없는 사용자 경험을 위한 유비쿼터스 환경들을 가능하게 한다. 서비스들 및 애플리케이션들은 애플리케이션을 이용하고, 비디오 게임을 행하고, 비디오를 시청하고, 기타 등등을 행하는 동안 하나의 장치로부터 다음 장치로 전환할 때 일반적인 사용자 경험을 위해 3개의 환경 모두에서 실질적으로 유사하게 실행된다.
예시적인 시스템(600)에서, 다수의 장치는 중앙 컴퓨팅 장치를 통해 상호접속된다. 중앙 컴퓨팅 장치는 다수의 장치에 가까울 수 있거나, 다수의 장치로부터 멀리 배치될 수 있다. 일 실시예에서, 중앙 컴퓨팅 장치는 네트워크, 인터넷 또는 다른 데이터 통신 링크를 통해 다수의 장치에 접속되는 하나 이상의 서버 컴퓨터의 클라우드일 수 있다.
일 실시예에서, 이러한 상호접속 아키텍처는 다수의 장치의 사용자에게 일반적으로 중단 없는 경험을 제공하기 위해 다수의 장치에 걸쳐 기능이 전달되는 것을 가능하게 한다. 다수의 장치 각각은 상이한 물리적 요구들 및 능력들을 가질 수 있으며, 중앙 컴퓨팅 장치는 장치에 맞춤화되지만 모든 장치들에 공통인 장치에 대한 경험의 전달을 가능하게 하기 위한 플랫폼을 사용한다. 일 실시예에서, 타겟 장치들의 클래스가 생성되며, 경험들이 장치들의 일반 클래스에 맞춤화된다. 장치들의 클래스는 장치들의 물리적 특징들, 사용 타입들 또는 다른 공통 특성들에 의해 정의될 수 있다.
다양한 구현들에서, 컴퓨팅 장치(602)는 예를 들어 컴퓨터(614), 모바일(616), 텔레비전(618) 및 내장 장치(619) 사용들을 위해 다양한 상이한 구성들을 취할 수 있다. 이러한 구성들 각각은 일반적으로 상이한 구조들 및 능력들을 가질 수 있는 장치들을 포함하며, 따라서 컴퓨팅 장치(602)는 하나 이상의 상이한 장치 클래스에 따라 구성될 수 있다. 예를 들어, 컴퓨팅 장치(602)는 개인용 컴퓨터, 데스크탑 컴퓨터, 멀티스크린 컴퓨터, 랩탑 컴퓨터, 넷북 등을 포함하는 컴퓨터(614) 장치 클래스로서 구현될 수 있다.
컴퓨팅 장치(602)는 이동 전화, 휴대용 뮤직 플레이어, 휴대용 게이밍 장치, 태블릿 컴퓨터, 멀티스크린 컴퓨터 등과 같은 이동 장치들을 포함하는 모바일(616) 장치 클래스로서 구현될 수도 있다. 컴퓨팅 장치(602)는 통상의 시청 환경들에서 일반적으로 더 큰 스크린들을 갖거나 그에 접속되는 장치들을 포함하는 텔레비전(618) 장치 클래스로도 구현될 수 있다. 이러한 장치들은 텔레비전, 셋톱 박스, 게이밍 콘솔 등을 포함한다.
컴퓨팅 장치(602)는 내장 시스템 또는 내장 장치 클래스(619)로도 구현될 수 있다. 내장 장치들은 통상적으로 특정 제어 기능들을 위해 설계된다. 따라서, 내장 장치들은 통상적으로 특정 작업을 처리하도록 전용화될 수 있다. 내장 장치들은 디지털 시계, 매체 플레이어, 라이트 스위치, 트래픽 라이트, 공장 제어기, 전화 스위치, 다양한 다른 타입의 소비자 전자 장치, GPS 수신기, 프린터, 가정용 기구, 예를 들어 마이크로웨이브 오븐, 세탁기, 식기 세척기, 네트워킹된 서모스탯들을 포함하는 HVAC 시스템, 라이트, 기후, 보안, 오디오/비주얼, 감시 등과 같은 것들을 제어하기 위해 유선 또는 무선 네트워킹을 이용하는 홈 자동화 장치들에 광범위하게 걸칠 수 있다. 다른 내장 장치들은 운송 시스템들, 다양한 타입의 모터들, 생명 신호 모니터링, 의료 이미징 등과 같은 것들을 위한 의료 장비에서 사용될 수 있다.
본 명세서에서 설명되는 기술들은 이러한 다양한 컴퓨팅 장치(602)의 구성들에 의해 지원될 수 있으며, 본 명세서에서 설명되는 기술들의 특정 예들로 한정되지 않는다. 이러한 기능은 분산 시스템의 사용을 통해, 예를 들어 후술하는 바와 같이 "클라우드"(620)를 통해 플랫폼(622)을 통해 전부 또는 일부 구현될 수도 있다.
클라우드(620)는 자원들(624)에 대한 플랫폼(622)을 포함하고/하거나 나타낸다. 플랫폼(622)은 클라우드(620)의 하드웨어(예로서, 서버들) 및 소프트웨어 자원들의 기초 기능을 추상화한다. 자원들(624)은 컴퓨팅 장치(602)로부터 떨어진 서버들에서 컴퓨터 처리가 실행되는 동안 사용될 수 있는 애플리케이션들 및/또는 데이터를 포함할 수 있다. 자원들(624)은 인터넷을 통해 그리고/또는 셀룰러 또는 와이파이 네트워크와 같은 가입자 네트워크를 통해 제공되는 웹 서비스들과 같은 서비스들도 포함할 수 있다.
플랫폼(622)은 컴퓨팅 장치(602)와 다른 컴퓨팅 장치들을 접속하기 위한 자원들 및 기능들을 추상화할 수 있다. 플랫폼(622)은 플랫폼(622)을 통해 구현되는 자원들(624)에 대한 마주친 요구에 대해 대응하는 스케일 레벨을 제공하기 위해 자원들의 스케일링을 추상화하는 데에도 사용될 수 있다. 따라서, 상호접속된 장치의 실시예에서, 본 명세서에서 설명되는 기능의 구현은 시스템(600) 전반에 분산될 수 있다. 예를 들어, 기능은 컴퓨팅 장치(602)에서는 물론, 클라우드(620)의 기능을 추상화하는 플랫폼(622)을 통해서도 부분적으로 구현될 수 있다.
결론
다양한 실시예들은 웹 클라이언트들이 웹 서비스를 제공하는 것을 가능하게 한다. 하나 이상의 실시예에서, 웹 클라이언트들은 서버들로서 작용하도록 구성되며, 많은 목적 가운데서 특히 웹 클라이언트에 의해 지원되는 웹 서비스들의 양방향 호출을 위해 사용될 수 있다. 한정이 아닌 예로서, 그러한 사용들은 메시지들을 웹 클라이언트로 그리고 웹 클라이언트로부터 푸시하는 것을 포함할 수 있다. 다양한 기술들은 어떠한 맞춤 코드 또는 맞춤 플러그인에 대한 요구도 없이 표준 프로토콜들 및 라이브러리들을 이용할 수 있다.
하나 이상의 실시예에서, 중간 서버가 웹 클라이언트와의 지속적인 접속을 설정하는 중개자로서 기능한다. 게다가, 중개 서버는 예를 들어 웹 서비스 URL과 같은 웹 클라이언트의 프레즌스 또는 어드레스를 이용하여 웹 클라이언트를 세상에 공개할 수 있다. 메시지를 제1 웹 클라이언트로 전송하려고 하는 다른 웹 클라이언트들(예로서, 브라우저 기반 클라이언트)은 공개된 웹 서비스 URL을 이용하여, 사전 정의된 웹 서비스를 호출할 수 있다. 호출하는 웹 클라이언트는 또한 동일 중개 서버 또는 다른 중개 서버에 등록하고, 그의 웹 서비스 URL을 공개할 수 있다. 이어서, 제1 웹 클라이언트는 이 URL을 이용하여 메시지들을 제2 웹 클라이언트로 푸시할 수 있다.
다양한 실시예들이 구조적 특징들 및/또는 방법적 단계들에 고유한 언어로 설명되었지만, 첨부된 청구범위에서 정의되는 실시예들은 설명된 특정 특징들 또는 단계들로 한정될 필요가 없다는 것을 이해해야 한다. 오히려, 특정 특징들 또는 단계들은 다양한 청구 실시예들을 구현하는 예시적인 형태들로서 개시된다.
Claims (10)
- 웹 클라이언트에 의해 제공되는 웹 서비스와 관련된 HTTP 요청을 생성하는 단계와,
상기 HTTP 요청을 터널 서비스를 구현하는 중개 서버로 전송하는 단계와,
상기 터널 서비스로부터, 상기 HTTP 요청과 관련된 HTTP 응답을 수신하는 단계와,
상기 HTTP 응답을 처리하는 단계 - 상기 HTTP 응답은 상기 웹 클라이언트에 의한 상기 웹 서비스의 실행 결과와 관련된 데이터 및 정보를 포함함 -
를 포함하는 방법.
- 제1항에 있어서,
상기 HTTP 요청은 상기 중개 서버와 관련된 터널 엔드포인트, 상기 웹 클라이언트와 관련된 터널 ID, 및 상기 웹 서비스를 식별하고 상기 웹 서비스에 의해 처리될 데이터 또는 정보를 포함하는 페이로드를 포함하는
방법.
- 제1항에 있어서,
상기 생성하는 단계, 전송하는 단계, 수신하는 단계 및 처리하는 단계는 클라이언트 컴퓨팅 장치를 포함하는 호출자(caller)에 의해 수행되는
방법.
- 제1항에 있어서,
상기 생성하는 단계, 전송하는 단계, 수신하는 단계 및 처리하는 단계는 브라우저를 포함하는 호출자에 의해 수행되는
방법.
- 제1항에 있어서,
상기 생성하는 단계, 전송하는 단계, 수신하는 단계 및 처리하는 단계는 브라우저를 포함하는 호출자에 의해 수행되고, 상기 웹 클라이언트는 다른 브라우저를 포함하는
방법.
- 제1항에 있어서,
상기 생성하는 단계, 전송하는 단계, 수신하는 단계 및 처리하는 단계는 2개의 웹 브라우저 사이에서 브라우저 기반 채트(chat)를 구현하도록 수행되는
방법.
- 실행될 때 방법을 구현하는 컴퓨터 판독 가능 명령어를 구현하는 하나 이상의 컴퓨터 판독 가능 저장 매체로서,
상기 방법은
터널 서비스에서, 호출자로부터 HTTP 요청을 수신하는 단계와 - 상기 HTTP 요청은 웹 서비스를 지원하는 웹 클라이언트를 대상으로 함 -,
상기 HTTP 요청을 직렬화하는 단계와,
상기 직렬화된 HTTP 요청을 요청 구조 내에 캡슐화하는 단계와,
상기 캡슐화된 요청 구조를 웹 클라이언트로 전송하는 단계와,
상기 터널 서비스에서, 상기 웹 클라이언트로부터 캡슐화된 응답 구조를 수신하는 단계와 - 상기 캡슐화된 응답 구조는 상기 웹 서비스의 실행과 관련된 데이터 또는 정보를 포함함 -,
상기 캡슐화된 응답 구조를 처리하여 HTTP 응답을 제공하고, 상기 HTTP 응답을 상기 호출자에게 전송하는 단계 - 상기 HTTP 응답은 상기 데이터 또는 정보를 포함함 -
를 포함하는 하나 이상의 컴퓨터 판독 가능 저장 매체.
- 제7항에 있어서,
상기 캡슐화하는 단계는 상기 직렬화된 HTTP 요청을 자바스크립트 객체 표기법(JavaScript Object Notation) 내에 캡슐화함으로써 수행되는
하나 이상의 컴퓨터 판독 가능 저장 매체.
- 제7항에 있어서,
상기 호출자는 브라우저를 포함하는
하나 이상의 컴퓨터 판독 가능 저장 매체.
- 제7항에 있어서,
상기 호출자도 상기 웹 클라이언트도 브라우저를 포함하지 않는
하나 이상의 컴퓨터 판독 가능 저장 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/447,065 | 2012-04-13 | ||
US13/447,065 US20130275492A1 (en) | 2012-04-13 | 2012-04-13 | Enabling Web Clients to Provide Web Services |
PCT/US2013/036055 WO2013155241A1 (en) | 2012-04-13 | 2013-04-11 | Enabling web clients to provide web services |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20150003192A true KR20150003192A (ko) | 2015-01-08 |
Family
ID=48289611
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR20147028426A KR20150003192A (ko) | 2012-04-13 | 2013-04-11 | 웹 클라이언트가 웹 서비스를 제공하는 것을 가능하게 하는 기법 |
Country Status (10)
Country | Link |
---|---|
US (1) | US20130275492A1 (ko) |
EP (1) | EP2820827A1 (ko) |
JP (1) | JP2015520436A (ko) |
KR (1) | KR20150003192A (ko) |
CN (1) | CN103354542A (ko) |
AU (1) | AU2013245896A1 (ko) |
CA (1) | CA2868411A1 (ko) |
MX (1) | MX2014012325A (ko) |
RU (1) | RU2014141044A (ko) |
WO (1) | WO2013155241A1 (ko) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9319449B2 (en) * | 2012-06-29 | 2016-04-19 | Mckesson Financial Holdings | Method, apparatus, and computer program product for processing data requests |
US9019286B2 (en) * | 2012-09-04 | 2015-04-28 | Massimo J. Becker | Remote GPU programming and execution method |
US9009741B2 (en) * | 2013-02-04 | 2015-04-14 | Futurewei Technologies, Inc. | Mechanism to initiate calls between browsers without predefined call signaling protocol |
FR3001815A1 (fr) * | 2013-02-07 | 2014-08-08 | France Telecom | Communication avec une application web |
US20150046544A1 (en) * | 2013-08-08 | 2015-02-12 | Futurewei Technologies, Inc. | Mirror Presence Between Websites |
US10360064B1 (en) * | 2013-08-19 | 2019-07-23 | Amazon Technologies, Inc. | Task scheduling, execution and monitoring |
CN103546369B (zh) * | 2013-11-13 | 2017-04-05 | 中国农业银行股份有限公司 | 一种协作方法、服务器、客户端与系统 |
JP6393475B2 (ja) * | 2013-12-17 | 2018-09-19 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 通信アダプタ装置、通信システム、トンネル通信方法、及びプログラム |
CN103729292A (zh) * | 2013-12-30 | 2014-04-16 | 瑞达信息安全产业股份有限公司 | 一种跨主机、跨平台的远程命令调用方法和系统 |
US9535816B2 (en) * | 2013-12-30 | 2017-01-03 | Lenovo (Singapore) | Remote diagnostics for a computing device |
SG11201605659SA (en) | 2014-02-07 | 2016-08-30 | Oracle Int Corp | Mobile cloud service architecture |
US9529657B2 (en) | 2014-02-07 | 2016-12-27 | Oracle International Corporation | Techniques for generating diagnostic identifiers to trace events and identifying related diagnostic information |
US9529658B2 (en) | 2014-02-07 | 2016-12-27 | Oracle International Corporation | Techniques for generating diagnostic identifiers to trace request messages and identifying related diagnostic information |
EP3103239B1 (en) | 2014-02-07 | 2023-10-11 | Oracle International Corporation | Cloud service custom execution environment |
EP3127008B1 (en) | 2014-03-31 | 2020-06-03 | Oracle International Corporation | Infrastructure for synchronization of mobile device with mobile cloud service |
US10209992B2 (en) | 2014-04-25 | 2019-02-19 | Avago Technologies International Sales Pte. Limited | System and method for branch prediction using two branch history tables and presetting a global branch history register |
US9961131B2 (en) | 2014-04-25 | 2018-05-01 | Microsoft Technology Licensing, Llc | Enhanced reliability for client-based web services |
CN105812345B (zh) * | 2014-12-31 | 2019-08-23 | 广州市动景计算机科技有限公司 | 一种实现网页到客户端通信的方法及装置 |
US10063661B2 (en) | 2015-01-14 | 2018-08-28 | Oracle International Corporation | Multi-tenant cloud-based queuing systems |
CN104597763A (zh) * | 2015-01-21 | 2015-05-06 | 苏州奥莱维信息技术有限公司 | 一种基于手机控制的智能家居系统 |
US9756020B2 (en) * | 2015-04-27 | 2017-09-05 | Microsoft Technology Licensing, Llc | Persistent uniform resource locators (URLs) for client applications acting as web services |
US10911413B2 (en) * | 2015-09-16 | 2021-02-02 | Oracle International Corporation | Encapsulating and tunneling WebRTC traffic |
KR102427276B1 (ko) | 2016-03-28 | 2022-07-29 | 오라클 인터내셔날 코포레이션 | 모바일 클라우드 서비스에 대한 미리-형성된 명령어들 |
CN106506632A (zh) * | 2016-10-27 | 2017-03-15 | 上海幻电信息科技有限公司 | 一种基于html5浏览器的音视频直播方法 |
US10623450B2 (en) * | 2016-12-01 | 2020-04-14 | Accenture Global Solutions Limited | Access to data on a remote device |
CN107168089A (zh) * | 2017-06-30 | 2017-09-15 | 镇江千月广告传媒有限公司 | 一种对智能家居设备进行监控的方法 |
US20200099738A1 (en) * | 2018-09-24 | 2020-03-26 | Citrix Systems, Inc. | Systems and methods for bridge protocol between diverse applications |
CN112887410B (zh) * | 2021-01-28 | 2022-12-20 | 郑州市景安网络科技股份有限公司 | 一种web服务程序的运行方法、装置、设备及存储介质 |
CN114900505B (zh) * | 2022-04-18 | 2024-01-30 | 广州市迪士普音响科技有限公司 | 一种基于web的音频场景定时切换方法、装置及介质 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5862330A (en) * | 1996-07-16 | 1999-01-19 | Lucent Technologies Inc. | Technique for obtaining and exchanging information on wolrd wide web |
US6412009B1 (en) * | 1999-03-15 | 2002-06-25 | Wall Data Incorporated | Method and system for providing a persistent HTTP tunnel |
US6397264B1 (en) * | 1999-11-01 | 2002-05-28 | Rstar Corporation | Multi-browser client architecture for managing multiple applications having a history list |
WO2002071686A1 (en) * | 2001-03-01 | 2002-09-12 | Invicta Networks, Inc. | Systems and methods that provide external network access from a protected network |
JP2003108449A (ja) * | 2001-10-02 | 2003-04-11 | Seiko Epson Corp | ネットワークに接続された仲介装置 |
GB0314971D0 (en) * | 2003-06-27 | 2003-07-30 | Ericsson Telefon Ab L M | Method for distributing passwords |
JP2009514050A (ja) * | 2003-07-11 | 2009-04-02 | インターナショナル・ビジネス・マシーンズ・コーポレーション | クライアント−サーバ環境においてクライアントを認証するためのシステムおよび方法 |
US7487243B1 (en) * | 2003-08-29 | 2009-02-03 | Juniper Networks, Inc. | Network tunnel termination device selection using weighted load balancing |
US20060031750A1 (en) * | 2003-10-14 | 2006-02-09 | Waldorf Jerry A | Web browser as web service server |
US20070174454A1 (en) * | 2006-01-23 | 2007-07-26 | Mitchell David C | Method and apparatus for accessing Web services and URL resources for both primary and shared users over a reverse tunnel mechanism |
WO2007106791A2 (en) * | 2006-03-10 | 2007-09-20 | Peerant Inc. | Peer to peer inbound contact center |
US8875135B2 (en) * | 2006-04-17 | 2014-10-28 | Cisco Systems, Inc. | Assigning component operations of a task to multiple servers using orchestrated web service proxy |
US8995252B2 (en) * | 2006-10-29 | 2015-03-31 | FatPipe Networks | VoIP multiline failover |
EP2128781A1 (en) * | 2008-05-27 | 2009-12-02 | Benny Kalbratt | Method for authentication |
US20090300750A1 (en) * | 2008-05-27 | 2009-12-03 | Avaya Inc. | Proxy Based Two-Way Web-Service Router Gateway |
EP2489151A4 (en) * | 2009-10-16 | 2013-11-06 | Real Innovations Internat Llc | SYSTEM AND METHOD FOR PROVIDING DATA IN REAL TIME |
US8504818B2 (en) * | 2010-04-15 | 2013-08-06 | Microsoft Corporation | Method and system for reliable protocol tunneling over HTTP |
-
2012
- 2012-04-13 US US13/447,065 patent/US20130275492A1/en not_active Abandoned
-
2013
- 2013-04-11 MX MX2014012325A patent/MX2014012325A/es unknown
- 2013-04-11 WO PCT/US2013/036055 patent/WO2013155241A1/en active Application Filing
- 2013-04-11 AU AU2013245896A patent/AU2013245896A1/en not_active Abandoned
- 2013-04-11 EP EP13720633.0A patent/EP2820827A1/en not_active Withdrawn
- 2013-04-11 CA CA2868411A patent/CA2868411A1/en not_active Abandoned
- 2013-04-11 RU RU2014141044A patent/RU2014141044A/ru unknown
- 2013-04-11 JP JP2015505889A patent/JP2015520436A/ja active Pending
- 2013-04-11 KR KR20147028426A patent/KR20150003192A/ko not_active Application Discontinuation
- 2013-04-12 CN CN2013101265486A patent/CN103354542A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
MX2014012325A (es) | 2015-05-11 |
RU2014141044A (ru) | 2016-04-27 |
CA2868411A1 (en) | 2013-10-17 |
AU2013245896A1 (en) | 2014-10-09 |
CN103354542A (zh) | 2013-10-16 |
EP2820827A1 (en) | 2015-01-07 |
US20130275492A1 (en) | 2013-10-17 |
JP2015520436A (ja) | 2015-07-16 |
WO2013155241A1 (en) | 2013-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20150003192A (ko) | 웹 클라이언트가 웹 서비스를 제공하는 것을 가능하게 하는 기법 | |
EP3275155B1 (en) | Persistent uniform resource locators (urls) for client applications acting as web services | |
US11159626B2 (en) | Session transfer between resources | |
EP3300331B1 (en) | Response method, apparatus and system in virtual network computing authentication, and proxy server | |
CN110311983B (zh) | 服务请求的处理方法、装置、系统、电子设备及存储介质 | |
US10148495B1 (en) | Remote configuration of wireless devices | |
US20100125652A1 (en) | Method, Apparatus, and Computer Program for Binding Local Devices to User Accounts | |
US20210021675A1 (en) | Managing remote support | |
EP3020179B1 (en) | Distributed programmable connection method to establish peer-to-peer multimedia interactions | |
CN112165480B (zh) | 信息获取方法、装置和电子设备 | |
US20070150611A1 (en) | DNS based client-server system and its use in electronic devices | |
CN110177128B (zh) | 数据传输系统及其建立vpn连接的方法、终端、vpn代理 | |
US20160359983A1 (en) | Methods, systems, and computer readable media for application session sharing | |
EP3388938A1 (en) | A method and system for pairing at least two electronical devices | |
Oat et al. | MoCHA: Augmenting pervasive displays through mobile devices and web-based technologies | |
KR101425854B1 (ko) | 자동 로그인을 위한 통합인증 방법 및 장치 | |
WO2021231064A1 (en) | Modification of application-provided turn servers | |
EP4120661A1 (en) | Virtual edge device | |
CN114124508B (zh) | 一种应用登录方法及系统 | |
CN114679486B (zh) | 通信交互方法及系统、应用端、客户端、中转服务端 | |
US10171434B2 (en) | Managed device scatternet administration | |
JP6478770B2 (ja) | 通信システム、着信制御サーバ、ユーザ端末、着信制御方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid |