KR20100057831A - 컨텍스트-센시티브 리퀘스트 결과들의 클라이언트측 취합 - Google Patents

컨텍스트-센시티브 리퀘스트 결과들의 클라이언트측 취합 Download PDF

Info

Publication number
KR20100057831A
KR20100057831A KR1020107004756A KR20107004756A KR20100057831A KR 20100057831 A KR20100057831 A KR 20100057831A KR 1020107004756 A KR1020107004756 A KR 1020107004756A KR 20107004756 A KR20107004756 A KR 20107004756A KR 20100057831 A KR20100057831 A KR 20100057831A
Authority
KR
South Korea
Prior art keywords
content
request
client
requests
server
Prior art date
Application number
KR1020107004756A
Other languages
English (en)
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 KR20100057831A publication Critical patent/KR20100057831A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/508Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement
    • H04L41/509Network service management, e.g. ensuring proper service fulfilment according to agreements based on type of value added network service under agreement wherein the managed service relates to media content delivery, e.g. audio, video or TV

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 다수의 서버들에 의해서 비동기적으로 제공되는 컨텐츠에 대한 HTTP 리퀘스트들을 핸들링하기 위한 솔류션을 제공하는데, 여기서 리퀘스트를 하는 클라이언트는 컨텐츠를 취합한다. 본 솔류션에서, 클라이언트는 컨텐츠 리퀘스트를 리퀘스트 수신서버로 발행할 수 있다. 상기 컨텐츠 리퀘스트는 리퀘스트 컨텍스트를 정의할 수 있다. 상기 리퀘스트 수신서버는 플레이스홀더들을 포함하는 초기 컨텐츠를 클라이언트로 전송하고, 비동기적인 리퀘스트들을 다수의 플레이스홀더 컨텐츠서버들로 발부하고, 그 후에 쓰레드들/프로세스들을 종료하고 그리고 상기 리퀘스트 컨텍스트를 핸들링하는데 관련된 리소스들을 해제 할 수 있다. 각각의 플레이스홀더 컨텐츠서버들은 상기 비동기적인 리퀘스트들 중 어느 하나를 프로세싱하고 플레이스홀더 컨텐츠결과들을 결과분산서비스로 전달할 수 있다. 상기 결과분산서비스는 클라이언트에 플레이스홀더 컨텐츠를 제공할 수 있다. 상기 클라이언트는 모든 리소스들로부터 상기 컨텐츠를 취합할 수 있다.

Description

컨텍스트-센시티브 리퀘스트 결과들의 클라이언트측 취합{CLIENT-SIDE AGGREGATION OF CONTEXT-SENSITIVE REQUEST RESULTS}
본 발명은 HTTP 리퀘스트(request)를 핸들링하는 방법에 관한 것으로, 보다 자세하게는 컨텍스트-센시티브(context-sensitive) 리퀘스트 결과들의 클라이언트측(client-side) 취합(aggregation)에 관한 것으로, 상기 취합을 위한 결과들은 다수의 서버들에 의해서 비동기적(asynchronously)으로 생성된다.
애플리케이션 서버(applicaion server) 구조에서, 수행될 작업(operation) 들의 세트를 종종 포함하는 리소스들(URL들)에 대한 리퀘스트(요청,request)가 이루어지는데, 상기 작업들은 다른 리소스들을 포함시키거나 다른 리소스들로 포워딩해야하는 것과 같은 것들이다. 일반적으로 상기 작업들 중 일부가 대부분의 딜레이를 유발시킨다. 종래의 리퀘스트 라이프사이클(lifecycle)의 동기적(synchronous)인 성질(nature)은 하나의 작업에 의해서 유발된 지연이 쓰루풋(throughput)에 전체적으로 영향을 미치게 한다. 더욱이 리퀘스트 핸들링(handling)에 주된 책임이 있는 서버의 리소스(자원,response)들이 리퀘스트-컨텍스트가 전체적으로 처리가 완료되고 리퀘스트를 한 클라이언트로 리스폰스(응답, response)를 전달할 때까지 묶여버린다는 것이다. 또한 상기 리퀘스팅 클라이언트는 상기 주서버(primary server)가 상기 작업들은 순차적으로 수행되는 모든 작업들로부터 리스폰스들의 취합할 때까지, 자신들의 리퀘스트에 대한 리스폰스를 받지 못한다.
상술한 문제점에 대한 현재의 솔류션(solution)은 프레임 또는 SSI(server side include)를 활용하는 것을 포함하는데, 여기서 리퀘스트 된 웹페이지의 각 부분은 클라이언트로부터의 별개의 분리된 리퀘스트(a separate distinct request)들과 연관된다. 그러나, 프레임들 또는 SSI들의 이용은 상기 별개의 분리된 리퀘스트들간에 오리지널 리퀘스트에 대한 컨텍스트의 공유가 불가능해지는 것을 초래한다. 디스패치(dispatch)전에, 리퀘스트들에 의해서 호출된 상기 작업들은 상기 클라이언트 또는 프로세싱된 세트들에 의해 발송된 오리지널 리퀘스트 정보에 접근할 필요성이 있기 때문에, 이러한 리퀘스트들간의 컨텍스트의 공유는 매우 많이 필요하다.
예를 들어 미국공개공보번호 11/456,905에서, 리퀘스트 컨텍스트를 동기적으로 공유해서 서로 다른 컨테이너(container) 타입들이나 언어(languages)들로 된 컨텐츠를 취합하기 위한 솔류션이 알려져 있다. 즉, 상기 언급된 솔류션은 포틀렛(portles)들이나 다른 컨테이너들을 핸들링(to handle)하기 위한 리모트 리퀘스트 디스패처(Remote Request Dispatcher, RRD)를 허용하는 확장프레임워크(extensible framework)를 제공한다. 이러한 기술은 서버가 작업들을 핸들링하는 리퀘스트를 서버들의 세트를 거쳐서 분산하는 것을 가능케한다. 따라서, 단일 리퀘스트-컨텍스트(single request-context)가 다수의 서버들에 의해서 핸들링된다. 그러나 상기 언급된 솔류션은 여전히 주서버(primary server)에 리퀘스트하는데, 상기 주서버는 원격컨텐츠(remote content)가 리턴되기를 기다리고, 이를 역직렬화(de-serialize)하고 그리고 동기적으로(synchronously) 발생하는 리스폰스들을 직렬화(serialize)해서 돌려받는다.
단일 애플리케이션 서버환경에서, 비동기적인 컨텍스트-센시티브 리퀘스트 작업들을 클라이언트측에서 취합하기 위한 솔류션이 알려져 있다. 이 솔류션은 작업결과들을 취합해야 하는 책임이 있는 서버 또는 프록시(proxy)의 문제를 해결한다. 이는 메모리 또는 리퀘스트 프로세싱 리소스들의 관점에서는 경제적이지만, 대신 클라이언트에 취합의 책임을 떠넘긴다. 그러나 이러한 클라이언트측 취합은 단일서버로 제한되고 그리고 다수의 서버들로의 리퀘스트 컨텍스르를 전달하는 것은 불가능하다.
이에 따라 상술한 바와 같이 종래 시스템들로는 미해결되는 남아있는 문제점들을 다루어야 할 필요가 있다.
본 발명의 제1 목적은, 리퀘스트 컨텍스트(Request Context)내에서 클라이언트의 리퀘스트들(client requests)을 핸들링(handling)하는 방법을 제공하는 것이다. 상기 방법은, 클라이언트가 컨텐츠 리퀘스트(content request) -상기 컨텐츠 리퀘스트는 리퀘스트 컨텍스트(request context)를 정의(defining)함 - 를 리퀘스트 수신서버(request receiving server)로 발부(issuing)하는 단계; 상기 리퀘스트 수신서버가 플레이스홀더들(placeholders)을 포함하는 초기(initial) 컨텐츠를 클라이언트로 전송하고, 비동기적인(asynchronous) 리퀘스트들을 다수의 플레이스홀더 컨텐츠서버들로 발부하고, 그 후에 쓰레드들/프로세스들(threads/processes)을 종료(terminating)하고 그리고 상기 리퀘스트 컨텍스트를 핸들링하는데 관련된 리소스들을 해제(freeing)하는 단계; 각각의 플레이스홀더 컨텐츠서버들이 상기 비동기적인 리퀘스트들 중 어느 하나를 프로세싱하고 플레이스홀더 컨텐츠결과들을 결과분산서비스(result distribution service)로 전달(conveying)하는 단계; 상기 결과분산서비스가 클라이언트에 플레이스홀더 컨텐츠를 제공하는 단계 및 상기 클라이언트가 상기 초기 컨텐츠와 상기 플레이스홀더 컨텐츠를 취합(aggregating)하는 단계를 포함한다.
상기 컨텐츠 리퀘스트는 상기 클라이언트의 브라우저에 의해서 발행된 HTTP 리퀘스트이고, 상기 초기컨텐츠 및 상기 플레이스홀더 컨텐츠는 마크업 언어(markup language)로 쓰여졌고, 상기 취합된 컨텐츠는 상기 브라우저안에서 표현되는(rendered) 것이 바람직하다.
상기 리퀘스트 수신서버는 공용 웹서버(public web server)이고, 상기 플레이스홀더 컨텐츠서버 중 적어도 어느 하나는 공개적으로 접속가능한 웹서버가 아닌 전용서버(private server)인 것이 바람직하다.
상기 플레이스홀더들은 각각 웹컨텐츠의 컨테이너(container)이고, 리모트 리퀘스트 디스패쳐(RRD, remote request dispatcher) 컨테이너가 상기 플레이스홀더들 중 어느 하나에 사용될 수 있는 컨테이너의 한 타입인 것이 바람직하다.
상기 결과분산서비스는 레스트풀(RESTful) 리퀘스트들을 핸들링하기 위해서 구성된 서버측 프로그램(server-side program)인 것이 바람직하다.
상기 방법은 상기 결과분산서비스가 리퀘스트를 만족시키는 적절한 플레이스홀더 컨텐츠를 제공함으로써 각각의 리퀘스트에 리스폰스할 때까지, 상기 클라이언트가 리퀘스트들의 세트 -상기 리퀘스트들의 세트는 각각의 플레이스홀더들에 대한 컨텐츠에 대한 리퀘스트를 포함하고 있음- 를 결과 분산 서비스로 반복적으로 발행하는 단계를 더 포함할 수도 있다.
상기 방법은 클라이언트에 전송되는 각각의 리스폰스(응답, response)들은 결과분산서비스로부터 수신된 플레이스홀더 컨텐츠를 포함하고, 인터페이스내에서 플레이스홀더 컨텐츠가 표현되도록, 상기 클라이언트가 플레이스홀더 컨텐츠에 특정(specific) 인터페이스의 부분(portion)을 리프레싱(refreshing)하는 단계를 더 포함할 수도 있다.
상기 취합(aggregating)하는 단계는 컨텐츠를 취합할 때, 비동기적인 메시지와 비동기적인 취합 작업(aggregation operations)들을 사용하는 것이 바람직하다.
상기 단계들은 적어도 하나의 장치에서 실행가능한 다수의 코드섹션들을 가지는 적어도 하나의 컴퓨터 프로그램과 부합되는 상기 적어도 하나의 장치에 의해서, 자동적으로 수행되고, 상기 적어도 하나의 컴퓨터 프로그램은 장치 가독성이 있는 저장매체(machine readable medium)에 저장되는 것이 바람직하다.
본 발명의 제2 목적은, 리퀘스트 컨텍스트를 위해서 클라이언트 리퀘스트들을 핸들링하는 시스템을 제공하는 것으로, 상기 시스템은 컨텐츠 리궤스트 -상기 컨텐츠 리퀘스트는 리퀘스트 컨텍스트를 정의(defining)함- 를 원격(remotely)에 위치한 컨텐츠서버로 전달(convey)하기 위해서 구성된 클라이언트를 포함하고, 리퀘스트 결과들은 상기 클라이언트의 인터페이스내에서 표시되고, 상기 리퀘스트 결과들은 다수의 서버들 -상기 서버들은 이들의 컨텐츠를 생산하기 위해서 각각 비동기적으로 작업(operations)들을 수행함- 로부터 생성된 컨텐츠를 포함하고, 그리고 상기 클라이언트는 상기 다수의 서버들로부터의 상기 컨텐츠들을 취합한다.
상기 시스템은 다수의 서버들에 의해서 생산된 결과들을 수신하기 위해서 구성되는 결과분산서비스(result distribution service)를 더 포함할 수도 있으며, 상기 결과분산서비스는 비동기적인 통신들(communications)의 세트(set)안에서 클라이언트로 결과들을 제공한다.
상기 결과분산서비스는 레스트풀 리퀘스트들(RESTful requests)에 대한 수신(receive), 처리(process) 및 응답(respond)을 하기 위해서 구성된 서버측(server-side) 프로그램인 것이 바람직하다.
상기 다수의 서버들 중 어느 하나는 리퀘스트 수신서버이고, 상기 리퀘스트 수신서버는 상기 컨텐츠 리퀘스트를 수신하고, 상기 리퀘스트 컨텍스트를 핸들링하기 위해서 적어도 하나의 프로세스/쓰레드를 초기화하기 위해서 구성되고, 상기 리퀘스트 수신서버는 초기 컨텐츠와 플레이스홀더들을 상기 초기컨텐츠와 플레이스홀더들을 수신받자마자 표현(render)하는 클라이언트로 전달하고, 상기 리퀘스트 수신서버는 다수의 플레이스홀더 컨텐츠 리퀘스트들을 초기화하고, 결과분산 서버에 컨텐츠를 제공할 책임이 있는 다수의 서버들 각각에 이를 전달하고, 상기 리퀘스트 수신서버는 상기 비동기적인 플레이스홀더 컨텐츠 리퀘스트들을 초기화하고 클라이언트로 초기 컨텐츠와 플레이스홀더들을 전달하고 나면, 리퀘스트 컨텍스트를 핸들링하기 위한 적어도 한개의 프로세스/쓰레드를 종료하고 관련된 리소스들을 해제하도록 구성된 것이 바람직하다.
상기 리퀘스트 컨텍스트에 대한 리퀘스트들은 클라이언트들에 의해서 비동기적으로 수신되고 그리고 수신하는 즉시 클라이언트의 인터페이스 내에서 비동기적으로 표현(rendered)되며, 리퀘스트 컨텐츠는 리퀘스트 수신서버에 의해서 생산되고 그리고 상기 클라이언트로 전달되는 플레이스홀더들을 포함하는 초기 컨텐츠를 포함하고, 상기 리퀘스트 컨텐츠는 리퀘스트 수신서버에 의해서 초기화된 비동기적인 컨텐츠 리퀘스트들 세트에 즉각 반응하는 원격서버들의 세트에 의해서 생산되는 플레이스홀더 컨텐츠를 포함하고, 상기 원격서버들은 그들의 결과들을 결과분산서비스에 제공하는 것이 바람직하다.
본 발명의 제3 목적은, 컴퓨터 프로그램 코드를 포함하는 컴퓨터 프로그램을 제공하는 것으로, 상기 코드는 컴퓨터 시스템에 로드되고 그리고 거기서 실행될 때, 상기 컴퓨터 시스템이 제1 목적에 따른 방법의 모든 단계를 수행하도록 한다.
장치(machine)에서 가독가능한(readable) 저장매체(medium)에 저장된, 장치에서 가독가능한 명령어들(instructions)의 세트로 구성된 결과분산서비스가 제공될 수도 있으며, 적어도 하나의 장치에서 하기와 같은 단계들을 실행할 수 있도록 상기 장치에서 가독가능한 명령어들의 세트는 상기 적어도 하나의 장치에서 실행가능한데, 상기 단계들은 다수의 서로 다른 컨텐츠 제공서버들로부터 리퀘스트 컨텍스트에 관련된 결과들을 수신하고 저장하는 단계; 클라이언트로 -상기 클라이언트는 상기 리퀘스트 컨텍스트를 정의하는 컨텐츠 리퀘스트를 초기화함- 부터 다수의 비동기적인 리퀘스트들을 수신하는 단계 및 각각의 수신된 클라이언트의 리퀘스트에 즉각 반응하여, 상기 결과들이 유효해지는(available) 대로, 클라이언트로 결과제공서버들로부터 얻어진 저장된 결과들을 제공하는 단계를 포함한다.
상기 결과분산서비스는 레스트풀 리퀘스트들(RESTful requests)에 대한 응답(respond)을 하기 위해서 구성된 소프트웨어인 것이 바람직하다.
상기 서비스는 레스트풀 리퀘스트들을 핸들링하기 위해서 구성된 서버측 프로그램인 것이 바람직하다.
상기 수신된 결과들 각각은 비동기적인 HTTP 메시지들안에서 결과분산서비스로 전달되는 것이 바람직하고, 상기 각각의 클라이언트로부터의 비동기적인 리퀘스트들은 비동기적인 HTTP 메시지들안에서 명시(specified)되고, 상기 저장된 결과들은 비동기적인 HTTP 메시지들안에서 클라이언트로 제공되는 것이 바람직하다.
상기 결과분산서비스는 상기 결과들을 저장할 때, 각각의 결과들을 클라이언트 -상기 클라이언트는 상기 리퀘스트 컨텍스트를 정의하는 컨텐츠 리퀘스트를 발행(issue)함- 의 식별자와 연동(associate)하는 단계; 상기 수신된 비동기적인 리퀘스트들에 포함된 클라이언트의 식별자를 상기 연동된 식별자에 대하여 체크하는 단계; 상기 체크된 식별자와 상기 연동된 식별자가 매치되는 경우에만 상기 저장된 결과를 제공하는 단계를 더 포함할 수도 있다.
리퀘스트 수신서버는 상기 클라이언트로부터 상기 컨텐츠 리퀘스트를 최초로 수신하고, 다수의 플레이스홀더들을 포함하고 있는 최초 컨텐츠들(initial content)의 세트를 상기 클라이언트로 전달(convey)하고, 그리고 다수의 비동기적인 리퀘스트들 - 상기 리퀘스트들은 컨텐츠 제공서버들이 결과분산서비스로 전달되는 결과들을 생산하도록 함- 을 생성(spawn)하는 것이 바람직하다.
본 발명의 바람직한 일 실시예에서는 결과들이 다수의 서버들에 의해서 비동기적으로 핸들링 되는 경우에, 클라이언트측(client-side)에서 컨텍스트-센시티브(context-sensitive) 리퀘스트 결과들을 취합(aggregation)하는 솔류션(solution)을 제공한다. 본 솔류션에서는, 클라이언트는 공용서버(public server)로부터 컨텐츠의 일부(piece)를 리퀘스트 할 수 있으며, 상기 리퀘스트 된 컨텐츠는 여러개의 원격 컨텐츠의 조각들의 취합물이다. 상기 원격컨텐츠는 선택적으로 전용 서버(privacy server)들에 의해서 제공될 수도 있다. 상기 공용서버는 클라이언트에 콘텐츠를 돌려줄(return) 수 있는데, 상기 콘텐츠는 한 개 또는 그 이상의 플레이스홀더들을 포함한다. 그리고 나서 상기 공용서버는 한 개 또는 그 이상의 비동기적인 프로세스들/쓰레드들을 원격서버들에 초기화 할 수 있으며, 각각의 원격서버들은 상기 플레이스홀더에 대한 컨텐츠를 제공할 책임을 진다. 상기 각각의 원격서버들이 컨텐츠 -동일한 리퀘스트 컨텍스트의 일부분임- 에 대한 프로세싱을 마치면, 상기 컨텐츠는 결과분산서비스로 전달될 수 있다. 상기 클라이언트는 쿼리들을 상기 결과분산서비스로 전송할 수 있으며, 여기서 하나의 쿼리는 각각의 플레이스홀더에 대한 것이다. 플레이스홀더 컨텐츠가 유효해지면, 서비스에 의해서 이를 클라이언트에 전송할 수 있다. 상기 클라이언트는 수신된 컨텐츠의 서비스와 관련되어 표시된 웹페이지의 일부를 수신이 되는데로 완료할 수 있다. 표시된 웹페이지의 다른 부분은 업데이트될 필요가 없다.
상술한 솔류션은 종래 기술에 비하여 현저한 이점이 있다. 특히 오리지널 서버에 의해서 초기화된 모든 리퀘스트 디스패처(RequestDispatcher)는 다수의 서버들에 의해서 비동기적으로 핸들링되고, 로드(load)는 리퀘스트를 한 클라이언트, 컨텐츠 처리/제공 서버들간에 고르게(evenly)게 분산되고, 이것은 알려진 어떠한 솔류션들보다 많은 쓰로풋(throughput)을 허용한다. 상기 클라이언트는 컨텐츠가 유효해지는 단계가 되면 바로 이를 수신하고, 이는 유저의 만족감(experience)을 향상시킨다. 리퀘스트 수신서버는 다수의 원격서버들로부터의 컨텐츠를 취합할 부담을 질 필요가 없으며, 이에 따라 리퀘스트 컨텍스트의 기간(duration)을 위해서 메모리나 다른 제한된 리소스들을 확장할 필요가 없다. 오히려 상기 리퀘스트 수신서버가 플레이스홀더들을 가지는 컨텐츠를 클라이언트로 전송하고 플레이스홀더 컨텐츠에 대한 쓰레드들을 다른 서버들에게 전송하면, 상기 리쉐스트 수신서버는 상기 리퀘스트 컨텍스트에 대한 몫을 끝낸 것이다. 상기 결과분산서비스는 레스트풀(RESTful, 예를 들어 HTTP) 리퀘스트들을 할 수 있는 어떠한 컴포넌트 -예를 들어 서블릿, JSP(Java Service Page), ASP 및 ESB 컴포넌트- 도 될 수 있다.
본 발명은 여기서 서술한 자료와 일치하는 다양한 측면과 부합되게 어떠한 형태로도 구현될 수 있다. 예를 들어, 본 발명의 일 실시예에서는 리퀘스트 컨텍스트내에서 클라이언트 리퀘스트를 핸들링하는 방법을 포함할 수 있다. 상기 방법은 클라이언트가 컨텐츠 리퀘스트를 리퀘스트 수신서버로 발부하는 단계를 포함할 수 있다. 상기 컨텐츠 리퀘스트는 리퀘스트 컨텍스트를 정의(defining)할 수 있다. 상기 리퀘스트 수신서버는 플레이스홀더들을 포함하는 초기(initial) 컨텐츠를 클라이언트로 전송하고, 비동기적인(asynchronous) 리퀘스트들을 다수의 플레이스홀더 컨텐츠서버들로 발부하고, 그 후에 쓰레드들/프로세스들(threads/processes)을 종료(terminating)하고 그리고 상기 리퀘스트 컨텍스트를 핸들링하는데 관련된 리소스들을 해제(freeing) 할 수 있다. 각각의 플레이스홀더 컨텐츠서버들은 상기 비동기적인 리퀘스트들 중 어느 하나를 프로세싱하고 플레이스홀더 컨텐츠결과들을 결과분산서비스로 전달(conveying)할 수 있다. 상기 결과분산서비스는 클라이언트에 플레이스홀더 컨텐츠를 제공할 수 있다. 상기 클라이언트는 모든 리소스들로부터 상기 컨텐츠를 취합할 수 있다.
본 발명의 다른 실시예에서는 리퀘스트 컨텍스트를 위해서 클라이언트 리퀘스트들을 핸들링하는 시스템을 포함할 수 있으며, 상기 시스템은 컨텐츠 리퀘스트 를 원격(remotely)에 위치한 컨텐츠서버로 전달(convey)하기 위해서 구성된 클라이언트를 포함한다. 상기 컨텐츠 리퀘스트는 리퀘스트 컨텍스트를 정의(defining)할 수 있다. 리퀘스트 결과들은 상기 클라이언트의 인터페이스내에서 표시될 수 있다. 상기 리퀘스트 결과들은 다수의 서버들 -상기 서버들은 이들의 컨텐츠를 생산하기 위해서 각각 비동기적으로 작업(operations)들을 수행함- 로부터 생성된 컨텐츠를 포함할 수 있다. 상기 클라이언트는 상기 다수의 서버들로부터의 상기 컨텐츠들을 취합할 수 있다.
본 발명의 또 다른 실시예에서는 다수의 서버들에 의해서 프로세스(processed)되는 컨텐츠 리퀘스트들 -상기 컨텐츠 리퀘스트들을 클라이언트에 의해서 취합됨- 을 핸들링하는 시스템에서 사용되는 결과분산서비스를 포함할 수 있다. 상기 결과분산서비스는 한 개 또는 그 이상의 서로다른 컨텐츠 제공서버들로부터 리퀘스트 컨텍스트와 관련된 결과들을 수신하거나 저장할 수 있다. 상기 결과분산서비스는 또한 클라이언트로부터 비동기적인 리퀘스트들을 수신할 수 있는데, 상기 클라이언트는 리퀘스트 컨텍스트를 정의하는 컨텐츠 리퀘스트들을 초기화한다. 각각의 수신된 클라이언트의 리퀘스트에 응답하여, 결과들이 서비스를 위해서 유효해지자마자, 상기 결과분산서비스는 컨텐츠제공서버들로부터 얻어진 저장된 상기 결과들을 클라이언트에 제공할 수 있다.
본 발명의 다양한 측면들이, 여기서 서술한 기능들을 구현하기 위해서 컴퓨팅 장치들을 제어하는 프로그램으로 또는 여기서 서술한 단계들에 대한 프로세스를 수행하기 위해서 컴퓨팅 장치들을 가능케 하는 프로그램으로 구현될 수 있다는 점에 주의해야 한다. 이 프로그램은 자기디스크, 광디스크, 반도체메모리 또는 기타 다른 기록매체내에 상기 프로그램을 저장해서 제공될 수도 있다. 상기 프로그램은 또한 반송파를 통해서 디지털로 인코딩된 신호로 전달하는 형태로도 제공될 수 있다. 상기 서술된 프로그램은 단일 프로그램일 수도 있으며 또는 다수(multiple)의 서브프로그램들(subprograms)들 -단일 컴퓨팅장치내에서 또는 네트워크공간을 통해서 분산된 방식으로 상호작용하는 프로그램- 의 형태로 구현될 수도 있다.
이하에서는 수반한 도면을 참조하여 일 예로서, 본 발명의 바람직한 실시예를 서술한다.
도 1은 컨텍스트-센시티브 리퀘스트 결과 -상기 결과들은 다수의 서버들에 의해서 비동기적으로 핸들링되는 결과들임- 들을 클라이언트측에서 취합하는 시스템에 대한 구조도 및
도 2는 상술된 본 발명의 일 실시예에 부합되어, 비동기적인 메시지들을 통해서 클라이언트가 다수의 서버들로부터 받은 공통의 리퀘스트 컨텍스내의 컨텐츠를 취합하는 방법을 나타내는 흐름도이다.
도1은 컨텍스트 센시티브(의존,sensitive) 리퀘스트 결과의 클라이언트측 집합을 위한 시스템(100)의 구조도로, 상기 결과들은 다수의 서버들에 의해서 비동기적으로 다루어진다. 상기 시스템(100)에서, 클라이언트(110)의 브라우저(114)는 서버측(102)의 공용서버(120)로부터 컨텐츠를 리퀘스트(150)할 수 있다. 상기 서버(120)는 상기 리퀘스트(150)를 충족시키는 상기 컨텐츠의 부분을 제공할 수 있으며, 다른 서버들-예를 들어 서버 125 및/또는 130-이 상기 리퀘스트(150)의 다른 부분에 대한 컨텐츠를 제공할 수 있다. 상기 서버(120)는 비동기리퀘스트(154 및 156)을 서버들(125 및 130)으로 착수시킨다. 서버(120)는 아마 플레이스홀더들을 포함해서, 클라이언트(110)에 컨텐츠를 전달(152)할 것이다. 상기 클라이언트(110)는 인터페이스(115)를 통해서 리스폰스(152)로 돌려받은 컨텐츠(118)를 즉시 제시할 수 있다. 플레이스홀더(116,117) 세트는 컨텐츠안에 포함될 수 있으며, 상기 플레이스홀더(116,117)은 컨텐츠와 연관되며, 상기 플레이스홀더(116,117)는 비동기쓰레드(154 및 156)의 결과가 될 것이다.
현 시점에서 상기 서버(120)은 리퀘스트(150)의 처리를 완료하였으며, 상기 리퀘스트(150)를 핸들링하기 위해 할당된 리소스 및 저장된 컨텐츠의 일부 또는 전부를 해제할 수 있다. 즉, 나중에 서버(125-130)에 의해서 생성되는 추가 결과들(예를 들어 플레이스홀더(116,117) 충전(filler)컨텐츠)이 결과분산서비스(135)로부터 다른 리퀘스트(162,166)가 검색된 이후에, 쓰레드나 프로세스를 핸들링하는 오리지널리퀘스트(150)는 해제(freed-up)된다.
상기 서버(125)는 비동기 리퀘스트(154)를 처리할 수 있고 결과(160)을 상기 결과분산서비스(135)에 제공할 수 있다. 유사하게, 서버(130)는 비동기 리퀘스트(156)를 처리할 수 있고 결과(158)을 상기 결과분산서비스(135)에 제공할 수 있다. 일단 각각의 서버들(125,130)이 리퀘스트 결과들(158,160)을 제공하면, 상기 서버들(125,130)은 리퀘스트 된 컨텍스트에 대해서 필요한 작업을 완료한다. 리퀘스트(154,156)를 핸들링하기 위해 발생한 모든 쓰레드/프로세스들은 종료될 수 있으며 관련된 리소스들도 해제될 수 있다.
상기 클라이언트(110)는 결과분산서비스(135)로부터 비동기적으로 플레이스홀더 컨텐츠(예를 들어 서버(125)에 의해 제공되는 플레이스홀더(116)에 대한 컨텐츠)를 리퀘스트(162) 할 수 있고, 비동기적으로 플레이스홀더 컨텐츠(예를 들어 서버(130)에 의해 제공되는 플레이스홀더(117)에 대한 컨텐츠)를 리퀘스트(166) 할 수 있다. 리퀘스트된 컨텐츠(162,166)가 유효해졌을 때, 상기 결과분산서비스(135)는 상기 리퀘스트에 대한 결과(164,168)를 클라이언트(110)에 전달할 수 있다. 상기 결과(164,166)를 수신하면, 결과들(164,166)과 연관된 인터페이스(115) 구역을 업데이트함으로써, 관련된 플레이스홀더(116,117)들은 컨텐츠에 덧붙여질 수 있다. 인터페이스(155)의 다른 부분들은 업데이트할 필요가 없다.
시스템(100)에서 상기 서버들(120,125 및 130)은 네트워크로부터 HTTP 리퀘스트를 핸들링 할 수 있고 상기 리퀘스트에 대한 HTTP응답을 제공할 수 있는 컴퓨팅시스템일 수 있다. 각각의 서버들(120-130)은 HTTP 리퀘스트들을 전달할 때, 서버(120-130)의 식별자로서 사용되는 URI(Uniform Resource Identifier)와 결부(associate) 될 수 있다. 상기 HTTP응답은 정적(static)이거나 동적(dynamic) 컨텐츠를 포함할 수 있다. 일반적으로, 서버(120)에 의해서 생성되는 초기 컨텐츠 및 플레이스홀더(152)는 정적컨텐츠를 포함할 것이고, 서버(125,130)에 의해서 제공되는 플레이스홀더컨텐츠는 동적컨텐츠를 포함할 것이다. 서버들(120,125 및 130) 각각은 다수의 선택가능한 피처들(features) -예를 들어 인증지원, 임호화채널지원(예를 들어 TLS(Transport Layer Security) 기술, SSL(Secure Sockets Layer) 기술 및 기타 등등을 통한 HTTPS 지원), 컨텐츠압축 및 압축해제 지원 등등- 을 포함할 수 있다. 각각의 서버들(120-130)은 수신된 리퀘스트(150,154,156)의 프로세스에 리소스를 할당할 수 있으며, 상기 서버들의 처리작업이 완료되면 이러한 리소스들을 해제할 수 있다. 즉, 각각의 서버들(120-130)의 컨텍스트리퀘스트을 핸들링하는데 사용되는 시간간격이 컨텍스트리퀘스트을 핸들링하는데 필요한 총시간보다 적다. 상기 서버들(120-130)은 물리적장치뿐만 아니라 가상컴퓨터장치(virtual computing devices) -예를 들어 가상솔류선(virtualization solutions)(예컨데 브엠웨어(VMWARE), MS 가상서버(MS VIRTUAL SERVER) 기타 등등)- 에서도 구현될 수 있다.
하나 또는 그 이상의 서버들(125-130)은 공개네트워크(Public network)를 통해서 직접 접근할 수 없는 전용서버(private servers)들 일 수 있다. 상기 전용서버들은 파이어월로 보호될 수 있으며, 서버(120)에 VPN(virtual private network)으로 연결된 일부일 수도 있으며, 서버(120)에서 접근하도록 허가된 전용네트워크의 일부일 수도 있다. 또한 상기 서버들(125-130)은 공개 서버들일 수도 있다. 시스템(100)에서 도시된 두개의 서버들(125,130)은 플레이스홀더 컨텐츠(116,117)을 제공하는 것으로 도시되어 있으나, 본 발명은 이러한 예에 한정되는 것은 아니며, 또한 활용가능한 플레이스홀더 컨텐츠제공서버들(125,130)의 어떠한 개수에도 한정되는 것은 아니다. 또한, 시스템(100)에서 서버(120)에 의해서 발생한 각각의 리퀘스트이 단일 서버(single server)(125,130)에 의해 핸들링되고, 이 서버들이 결과를 서비스(135)로 제공하는 것으로 도시하고 있으나, 다른 방식들도 고려가능하다. 예를 들어, 서버(125)가 초기 리퀘스트(154)을 수행하고, 추가 처리를 위해서 중계서버(intermediate server,미도시)로 결과를 전달하고, 상기 중계서버가 서비스(135)로 결과를 전송할 수도 있다.
결과분산서비스(135)는 HTTP와 다른 레스트풀 메시지들(RESTful messages)을 핸들링할 수 있는 서버측(102)의 서비스 프로그램일 수 있다. 예를 들어, 결과분석서버(134)는 서블릿, JSP(Java Server Page), ASP(Active Server Page), EJB(Enterprise Java Bean), ESB(Enterprise Service Bus)서비스 등등으로 구현될 수 있다. 서비스(135)는 서버들(125,130)이 결과(158,160)를 전달할 수 있고 클라이언트(110)가 리퀘스트(162,166)을 전달 할 수 있는 URI와 연관될 수 있다. 결과분산서비스(135)는 서버(120), 서버(125,130) 내부에 또는 그 외 다른 서버들 내부에 위치할 수도 있다. 서비스(135)가 오리지날 HTTP 리퀘스트에 어드레스된 거 이외의 컴포넌트와 관계된다면, 시스템(100)은 서비스(135)의 URLs가 서버들(125,130) 및 클라이언트(110)에게 가능한지를 확실하게 하기 위해서 검증을 실시해야 한다.
클라이언트(110)는 HTTP 리퀘스트(150)를 전송할 수 있고 이러한 리퀘스트에 대한 응답들을 번역할 수 있는 어떠한 컴퓨팅장치가 될 수 있다. 예를 들어, 상기 클라이언트(110)은 퍼스널컴퓨터, 노트북컴퓨터, 모바일컴퓨터, 스마트폰, PDA(personal data assistant), 임베디드 컴퓨팅장치(embedded computting device), 전자게임장치(electronic gaming system) 등등을 포함할 수 있다. 클라이언트(110)는 브라우저(114)를 포함할 수 있으며, 상기 브라우저는 HTTP통신을 핸들링할 수 있다. 상기 브라우저(114)는 인터페이스(115)에 링크될 수 있으며, 이를 통해서 사용자는 클라이언트(110)와 상호작용한다. 상기 인터페이스(115)는 그래픽 유저인터페이스 (GUI), 다중모달인터페이스(multi-modal interface), 음성유저인터페이스(voice user interface,VUI) 기타 등등일 수 있다. 인터페이스(150)는 컨텐츠(118)와 플레이스홀더(116,117)을 포함할 수 있다.
각각의 플레이스홀더(116,117)는 웹컨텐츠의 컨테이너(container)일 수 있다. 각각의 플레이스홀더(116,117)는 동적으로 생성된 컨텐츠로 채워질 수 있다. 플레이스홀더(116,117)는 위젯,포틀렛 및 다른 타입의 컨텐츠들을 포함할 수 있다. 일 실시예에서, 플레이스홀더들은 원격리퀘스트디스패처(RRD) 리퀘스트로부터의 컨텐츠를 대신하여 위치한다. 처음에, 플레이스홀더(116,117)은 컨텐츠가 부족할 수 있다. 플레이스홀더 리스폰스(166,168)가 수신될 때마다, 관련 플레이스홀더(116,117)는 완전해 질 수 있다. 플레이스홀더(116,117) 컨텐츠가 사용할 수 없는 경우라도, 상기 컨텐츠(118)는 해석될 수 있다. 일 실시예에서 상기 플레이스홀더(116,117)은 브라우저 오브젝트 모델(BOM)이나 어떤 문서오브젝트 모델(DOM)을 구성하는 오브젝트가 될 수 있다.
일 실시예에서, 컨텐츠의 클라이언트측(104) 취합(aggregation)은 사용자에 투명한 방식(transparent fashion)으로 일어날 수 있다. 예를 들어, 브라우저(114)는 리스폰스(166,168)가 수신될 때까지 자동적으로 리퀘스트(162,164)을 수행하는 플러그인이나 확장(extension)으로 향상될 수 있다. 일 실시예에서, 상기 서버(120)는 클라이언트(110)와 서버(125,130)로 서비스(135)의 어드레스를 전달할 수 있으며, 이를 통해서 각각의 컴퓨팅장치들이 컨텐츠의 리퀘스트(예를 들어 클라이언트(110)) 및/또는 전달(예를 들어 서버 (125-130))의 타겟을 결정할 수 있다. 다른 일 실시예에서 공개서버(120)는 사용자식별주소를 서버들(125-130)로 전달할 수 있으며, 그 다음으로 서비스(135)로 전달할 수 있다. 서비스(135)는 그러고 나면 결과들(166,168)을 클라리언트(110)로 주소를 참조하여 전달할 수 있으며, 그리고/또는 서비스(135)는 클라이언트(110)에 메시지를 전달할 수 있으며, 이에 클라이언트(110)가 리퀘스트들(162-164)을 어디로 보낼지 알게 된다.
시스템(100)의 다양한 컴포넌트들은 네트워크를 통해서 통신가능하도록 연결될 수 있다(미도시). 네트워크는 반송파에 암호화된 디지탈 컨텐츠를 전달할 수 있는 컴포넌트들을 포함할 수 있다. 컨텐츠는 아날로그나 디지털 신호안에 포함될 수도 있으며, 데이터나 보이스 채널을 통해서 전달될수도 있으며, PAN(personal area network)이나 WAN(wide area network)을 통해서 전달될 수 있다. 네트워크는 컴퓨팅디바이스 컴포넌트 사이나 통합장치컴포넌트와 주변장치사이에서 교환되는 통신을 위해서 필수적인 로컬컴포넌트나 데이터경로(data pathways)를 포함할 수 있다. 네트워크는 또한 네트워크 장비(예를 들어, 라우터, 데이터라인, 허브)나 패킷기반 네트워크(예를 들어 인터넷이나 인트라넷)를 함께 구성하는 중계서버(intermediary servers)를 포함할 수 있다. 네트워크는 회로기반 통신 컴포넌트들이나 모바일통신컴포넌트들(예를 들어 전화스위치, 모뎀, 셀룰러통신타워 기타등등)을 더 포함할 수 있다. 네트워크는 유선 및/또는 무선 통신선로를 포함할 수 있다.
도2는 본 발명의 일 실시예에 따른, 비동기적인 메시지들을 통해서 공통의 리퀘스트 컨텍스트안에서 다수의 서버들(212-216)로부터 받은 컨텐츠를 클라이언트(210)가 취합하는 방법에 대한 흐름도(200)이다. 도2의 흐름도는 컨텍스트시스템(100) 또는 유사한 시스템에서 구현될 수 있다.
흐름도 200에서, 클라이언트(210)는 리퀘스트(230)를 서버(212)로 전송할 수 있다. 상기 리퀘스트는 컨텐츠를 서버(212) 및 서버들(214,216)로부터 요구할 수 있다. 예를 들어, 서버(212)가 리퀘스트(230)에 대한 정적컨텐츠를 제공할 수 있고, 서버들(214,216)이 동적컨텐츠를 제공할 수 있다. 서버(212)가 각각의 동적컨텐츠 세그먼트를 위해서 컨테이너나 플레이스홀더를 설립한다. 그리고 나서, 서버(212)는 컨테이너들 중 어느 하나와 관련된 컨텐츠에 대한 비동기리퀘스트(232)를 서버(214)에 생성하고 전달한다. 서버(212)는 다른 컨테이너와 관련된 컨텐츠에 대한 별도의 비동기리퀘스트(234)를 서버(216)에 생성하고 전달한다. 덧붙여 서버(212)는 플레이스홀더를 포함하는 정적컨텐츠(236)를 클라이언트(210)로 보낼 수 있고, 클라이언트는 인터페이스안에 "공백(blank)" 플레이스홀더를 포함하는 컨텐츠를 바로 표시할 수 있다. 이 때 리퀘스트(230)과 관련된 프로세스/쓰레드는 서버(212)에 의해서 종료될 수 있으며, 서버(212)는 리퀘스트(230)의 핸들링과 관련된 모든 리소스를 해제(free)할 수 있다.
서버(214)는 리퀘스트(232)를 비동기적으로 처리(235)하고 결과(238)를 생성할 수 있는데, 상기 결과(238)는 서비스(218)로 전송된다. 서버(216)는 리퀘스트(234)를 처리(239)하고 결과(240)를 생성할 수 있는데, 상기 결과(240)는 서비스(218)로 전달된다. 각각의 서버(214,216)은 서버(214,216)가 결과(238,240)를 서비스(218)로 전송하고 나면, 리퀘스트(230)와 관련된 모든 프로세스/쓰레드를 제거할 수 있고 관련된 리소스를 해제할 수 있다.
클라이언트(210)은 비동기적으로 그리고 반복적으로 서비스(218)로부터 컨텐츠를 리퀘스트(242,244)할 수 있으며, 상기 리퀘스트 된 컨텐츠는 플레이스홀더나 컨테이너들을 채우는데 사용될 수 있다. 리퀘스트가 충족되면, 컨텐츠는 상기 서비스(218)에 등록되고, 이는 상기 관련된 리퀘스트(242,244)에 대한 리스폰스로 클라이언트(210)에 제공될 수 있다(246,248). 상기 플레이스홀더 컨텐츠가 수신되면(246,248), 상기 클라이언트(210)은 즉시 상기 컨텐츠(246,248)을 작업(render)하고, 인터페이스에 표시 할 수 있다(247,249).
여기서 상기 흐름도(200)의 상세한 내용은 하나의 리퀘스트 컨텍스트에 대한 리스폰스로 다수의 서버들에 의해서 수행되는 비동기적인 작업들의 세트를 클라이언트측에서 취합하기 위한 기술을 도시하기 위해서 사용된다는 점이 인식되어야 한다. 도면(200)의 특정 프로세스 흐름들은 서술된 발명의 범위안에서 전체로서 개략적(liberally)으로 그려졌다. 즉 본 발명은 도시된 특정 흐름순서에 한정되는 것은 아니며, 또한 동등한 목적을 제공하기 위한 상기 도면(200)의 균등범위(derivatives)들도 본 발명의 권리범위 안에 포함되는 것으로 간주되어야 한다. 예를 들어, 도 200은 서비스(218)로부터 컨텐츠를 얻기 위해서, 리퀘스트/리스폰스의 폴링(polling) 접근(242-248)을 도시한다. 대안의 실시예도 여전히 본 발명의 범위에 속하고, 가입 방법론(subscription methodology) 역시도 사용될 수 있으며, 이는 상기 클라이언트(210)가 서비스(218)에 가입(subscrip)하고, 그리고 가입기간동안 상기 컨텐츠가 유효해지자마자 상기 서비스(218)가 자동적으로 업데이트 된 컨텐츠(246-248)를 제공한다.
본 발명은 하드웨어나 소프트웨어 또는 하드웨어와 소프트웨어의 조합으로 실현될 수도 있다. 본 발명은 하나의 컴퓨터 시스템의 집중화된 방식(centralized fashion)하에서 또는 몇개의 상호연결된 컴퓨터 시스템들을 거쳐서 분산된 서로 다른 엘레먼트하에 분산된 방식으로 구현될 수도 있다. 여기서 서술한 방법들을 수행하기 위해서 적용된 어떠한 종류의 컴퓨터 시스템이나 다른 장치들이라도 적용가능하다. 전형적인 하드웨어와 소프트웨어의 조합은 컴퓨터 프로그램을 가진 일반적인 목적의 컴퓨터 시스템일 수도 있는데, 상기 컴퓨터 프로그램은 로드되고 실행될 때 여기서 서술한 방법들을 수행하도록 상기 컴퓨터 시스템을 제어한다.
본 발명은 또한 컴퓨터 프로그램 제품에 임베디드(embedded) 될 수도 있으며, 이는 여기서 서술한 방법들의 구현을 가능하게 하는 모든 특징들을 포함하고 그리고 컴퓨터 시스템에 로드되면, 이러한 방법들을 수행할 수 있다. 현재의 컨텍스트에서의 "컴퓨터 프로그램"은, 직접적으로 또는 이하의 것들 중 어느 하나 또는 모두로 특별한 기능을 수행할 수 있는 처리정보를 가지도록 시스템을 유도하는 명령어들의 세트들을 어떠한 언어, 코드 및 표기법(notation)하에서의 어떠한 표현(expression)으로도 가능하다. a) 다른 언어,코드 또는 표기법으로의 전환(conversion); b) 다른 물리적 형태로의 복제(reproduction)

Claims (15)

  1. 리퀘스트 컨텍스트(Request Context)내에서 클라이언트의 리퀘스트들(client requests)을 핸들링(handling)하는 방법에 있어서,
    클라이언트가 컨텐츠 리퀘스트(content request) -상기 컨텐츠 리퀘스트는 리퀘스트 컨텍스트(request context)를 정의(defining)함 - 를 리퀘스트 수신서버(request receiving server)로 발부(issuing)하는 단계;
    상기 리퀘스트 수신서버가 플레이스홀더들(placeholders)을 포함하는 초기(initial) 컨텐츠를 상기 클라이언트로 전송하고, 비동기적인(asynchronous) 리퀘스트들을 다수의 플레이스홀더 컨텐츠서버들로 발부하고, 그 후에 쓰레드들/프로세스들(threads/processes)을 종료(terminating)하고 그리고 상기 리퀘스트 컨텍스트를 핸들링하는데 관련된 리소스들을 해제(freeing)하는 단계;
    각각의 플레이스홀더 컨텐츠서버들이 상기 비동기적인 리퀘스트들 중 어느 하나를 프로세싱하고 플레이스홀더 컨텐츠결과들을 결과분산서비스(result distribution service)로 전달(conveying)하는 단계;
    상기 결과분산서비스가 상기 클라이언트에 플레이스홀더 컨텐츠를 제공하는 단계 및
    상기 클라이언트가 상기 초기 컨텐츠와 상기 플레이스홀더 컨텐츠를 취합(aggregating)하는 단계를 포함하는 것을 특징으로 하는 클라이언트 리퀘스트들을 핸들링하는 방법.
  2. 제1항에 있어서,
    상기 컨텐츠 리퀘스트는 상기 클라이언트의 브라우저에 의해서 발행된 HTTP 리퀘스트이고, 상기 초기컨텐츠 및 상기 플레이스홀더 컨텐츠는 마크업 언어(markup language)로 쓰여졌고, 상기 취합된 컨텐츠는 상기 브라우저안에서 표현되는(rendered) 것을 특징으로 하는 클라이언트 리퀘스트들을 핸들링하는 방법.
  3. 제1항 내지 제2항 중 어느 한 항에 있어서,
    상기 리퀘스트 수신서버는 공용 웹서버(public web server)이고,
    상기 플레이스홀더 컨텐츠서버 중 적어도 어느 하나는 공개적으로 접속가능한 웹서버가 아닌 전용서버(private server)인 것을 특징으로 하는 클라이언트 리퀘스트들을 핸들링하는 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 플레이스홀더들은 각각 웹컨텐츠의 컨테이너(container)이고,
    리모트 리퀘스트 디스패쳐(RRD, remote request dispatcher) 컨테이너가 상기 플레이스홀더들 중 어느 하나에 사용될 수 있는 컨테이너의 한 타입인 것을 특징으로 하는 클라이언트 리퀘스트들을 핸들링하는 방법.
  5. 앞 항들 중 어느 한 항에 있어서,
    상기 결과분산서비스는 레스트풀(RESTful) 리퀘스트들을 핸들링하기 위해서 구성된 서버측 프로그램(server-side program)인 것을 특징으로 하는 클라이언트 리퀘스트들을 핸들링하는 방법.
  6. 앞 항들 중 어느 한 항에 있어서,
    상기 결과분산서비스가 리퀘스트를 만족시키는 적절한 플레이스홀더 컨텐츠를 제공함으로써 각각의 리퀘스트에 응답할 때까지, 상기 클라이언트가 리퀘스트들의 세트 -상기 리퀘스트들의 세트는 각각의 플레이스홀더들에 대한 컨텐츠에 대한 리퀘스트를 포함하고 있음- 를 결과 분산 서비스로 반복적으로 발행하는 단계를 더 포함하는 것을 특징으로 하는 클라이언트 리퀘스트들을 핸들링하는 방법.
  7. 제6항에 있어서,
    상기 클라이언트에 전송되는 각각의 리스폰스(응답, response)들은 결과분산서비스로부터 수신된 플레이스홀더 컨텐츠를 포함하고,
    인터페이스내에서 플레이스홀더 컨텐츠가 표현(render)되도록, 상기 클라이언트가 플레이스홀더 컨텐츠에 특정(specific) 인터페이스의 부분(portion)을 리프레싱(refreshing)하는 단계를 더 포함하는 것을 특징으로 하는 클라이언트 리퀘스트들을 핸들링하는 방법.
  8. 앞 항들 중 어느 한 항에 있어서,
    상기 취합(aggregating)하는 단계는
    컨텐츠를 취합할 때, 비동기적인 메시지와 비동기적인 취합 작업(aggregation operations)들을 사용하는 것을 특징으로 하는 클라이언트 리퀘스트들을 핸들링하는 방법.
  9. 앞 항들 중 어느 한 항에 있어서,
    상기 단계들은
    적어도 하나의 장치에서 실행가능한 다수의 코드섹션들을 가지는 적어도 하나의 컴퓨터 프로그램과 부합되는 상기 적어도 하나의 장치에 의해서 자동적으로 수행되고, 상기 적어도 하나의 컴퓨터 프로그램은 장치 가독성이 있는 저장매체(machine readable medium)에 저장되는 것을 특징으로 하는 클라이언트 리퀘스트들을 핸들링하는 방법.
  10. 리퀘스트 컨텍스트를 위해서 클라이언트의 리퀘스트들을 핸들링하는 시스템에 있어서,
    컨텐츠 리궤스트 -상기 컨텐츠 리퀘스트는 리퀘스트 컨텍스트를 정의(defining)함- 를 원격(remotely)에 위치한 컨텐츠서버로 전달(convey)하기 위해서 구성된 클라이언트를 포함하고,
    리퀘스트 결과들은 상기 클라이언트의 인터페이스내에서 표시되고, 상기 리퀘스트 결과들은 다수의 서버들 -상기 서버들은 이들의 컨텐츠를 생산하기 위해서 각각 비동기적으로 작업(operations)들을 수행함- 로부터 생성된 컨텐츠를 포함하고, 그리고 상기 클라이언트는 상기 다수의 서버들로부터의 상기 컨텐츠들을 취합하는 것을 특징으로 하는 시스템.
  11. 제10항에 있어서
    다수의 서버들에 의해서 생산된 결과들을 수신하기 위해서 구성되는 결과분산서비스(result distribution service)를 더 포함하고,
    상기 결과분산서비스는 비동기적인 통신들(communications)의 세트(set)안에서 클라이언트로 결과들을 제공하는 것을 특징으로 하는 시스템.
  12. 제11항에 있어서,
    상기 결과분산서비스는
    레스트풀 리퀘스트들(RESTful requests)에 대한 수신(receive), 처리 (process) 및 응답(respond)을 하기 위해서 구성된 서버측(server-side) 프로그램인 것을 특징으로 하는 시스템.
  13. 제11항 내지 제12항 중 어느 한 항에 있어서,
    상기 다수의 서버들 중 어느 하나는 리퀘스트 수신서버이고,
    상기 리퀘스트 수신서버는 상기 컨텐츠 리퀘스트를 수신하고, 상기 리퀘스트 컨텍스트를 핸들링하기 위해서 적어도 하나의 프로세스/쓰레드를 초기화하기 위해서 위해서 구성되고,
    상기 리쉐스트 수신서버는 초기 컨텐츠와 플레이스홀더들을 상기 초기컨텐츠와 플레이스홀더들을 수신받자마자 표현(render)하는 클라이언트로 전달하고,
    상기 리퀘스트 수신서버는 다수의 플레이스홀더 컨텐츠 리퀘스트들을 초기화하고, 결과분산 서버에 컨텐츠를 제공할 책임이 있는 다수의 서버들 각각에 이를 전달하고,
    상기 리퀘스트 수신서버는 상기 비동기적인 플레이스홀더 컨텐츠 리퀘스트들을 초기화하고 클라이언트로 초기 컨텐츠와 플레이스홀더들을 전달하고 나면, 리퀘스트 컨텍스트를 핸들링하기 위한 적어도 한개의 프로세스/쓰레드를 종료하고 관련된 리소스들이 해제하도록 구성된 것을 특징으로 하는 시스템.
  14. 제11항 중 13항 중 어느 한 항에 있어서,
    상기 리퀘스트 컨텍스트에 대한 리퀘스트들은 클라이언트들에 의해서 비동기적으로 수신되고 그리고 수신하는 즉시 클라이언트의 인터페이스 내에서 비동기적으로 표현(rendered)되며,
    리퀘스트 컨텐츠는 리퀘스트 수신서버에 의해서 생산되고 그리고 상기 클라이언트로 전달되는 플레이스홀더들을 포함하는 초기 컨텐츠를 포함하고, 상기 리퀘스트 컨텐츠는 리퀘스트 수신서버에 의해서 초기화된 비동기적인 컨텐츠 리퀘스트들 세트에 즉각 반응하는 원격서버들의 세트에 의해서 생산되는 플레이스홀더 컨텐츠를 포함하고,
    상기 원격서버들은 그들의 결과들을 결과분산서비스에 제공하는 것을 특징으로 하는 시스템.
  15. 컴퓨터 시스템에 로드(load)되고 실행될 때, 상기 컴퓨터 시스템으로 하여금 상기 11항 내지 14항 중 어느 한 항에 포함된 모든 단계를 수행하기 하는 컴퓨터 프로그램 코드를 포함하는 컴퓨터 프로그램.
KR1020107004756A 2007-08-22 2008-08-07 컨텍스트-센시티브 리퀘스트 결과들의 클라이언트측 취합 KR20100057831A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/843,038 2007-08-22
US11/843,038 US9069870B2 (en) 2006-07-12 2007-08-22 Client-side aggregation of context-sensitive request results where results for aggregation are asynchronously produced by multiple servers

Publications (1)

Publication Number Publication Date
KR20100057831A true KR20100057831A (ko) 2010-06-01

Family

ID=39970903

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020107004756A KR20100057831A (ko) 2007-08-22 2008-08-07 컨텍스트-센시티브 리퀘스트 결과들의 클라이언트측 취합

Country Status (6)

Country Link
US (1) US9069870B2 (ko)
EP (1) EP2179376A1 (ko)
JP (1) JP5186565B2 (ko)
KR (1) KR20100057831A (ko)
CN (1) CN101785004A (ko)
WO (1) WO2009024473A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102194513B1 (ko) * 2019-06-20 2020-12-23 배재대학교 산학협력단 Gpgpu 기반 태스크 큐를 활용한 웹 서비스 제공 시스템 및 방법

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8250178B2 (en) * 2006-09-15 2012-08-21 Emc Corporation Protecting client-side code
US20080072069A1 (en) * 2006-09-15 2008-03-20 Emc Corporation Protecting client-side code
US20080127234A1 (en) * 2006-09-19 2008-05-29 International Business Machines Corporation Methods, systems, and computer program products for a remote request dispatcher extension framework for container based programming models
US8229346B2 (en) * 2007-05-15 2012-07-24 Nvidia Corporation Method and apparatus for providing multimedia broadcasting multicasting services
US8032587B2 (en) * 2007-08-28 2011-10-04 International Business Machines Corporation Method and apparatus for client-side aggregation of asynchronous fragmented requests
US8156228B1 (en) * 2007-09-28 2012-04-10 Symantec Corporation Method and apparatus to enable confidential browser referrals
KR101545137B1 (ko) * 2008-04-17 2015-08-19 삼성전자주식회사 사용자 인터페이스를 생성하는 방법 및 장치
KR20090110202A (ko) 2008-04-17 2009-10-21 삼성전자주식회사 개인화된 사용자 인터페이스를 디스플레이하는 방법 및 장치
US7725535B2 (en) * 2008-05-27 2010-05-25 International Business Machines Corporation Client-side storage and distribution of asynchronous includes in an application server environment
US9268871B2 (en) * 2008-10-16 2016-02-23 Qualcomm Incorporated Methods and apparatus for obtaining content with reduced access times
US8364699B2 (en) * 2008-11-14 2013-01-29 Morgan Stanley Commodities framework
US8983984B2 (en) * 2009-07-02 2015-03-17 Catavolt, Inc. Methods and systems for simplifying object mapping for external interfaces
US8332467B2 (en) * 2009-07-29 2012-12-11 International Business Machines Corporation Lightweight RRD extension framework
KR101047017B1 (ko) 2009-10-16 2011-07-06 (주)송도텔레콤 RESTful아키텍처를 이용한 개방형 인터페이스의 삼자 호 통신서비스 시스템 및 운영방법
US8296411B2 (en) * 2010-03-01 2012-10-23 International Business Machines Corporation Programmatically determining an execution mode for a request dispatch utilizing historic metrics
US8321503B2 (en) * 2010-06-24 2012-11-27 Microsoft Corporation Context-specific network resource addressing model for distributed services
US8666997B2 (en) 2010-12-08 2014-03-04 Microsoft Corporation Placeholders returned for data representation items
US8983907B2 (en) * 2010-12-08 2015-03-17 Microsoft Technology Licensing, Llc Change notifications from an updated data representation
US9069829B2 (en) 2011-01-21 2015-06-30 Microsoft Technology Licensing, Llc Data items manager
US8838533B2 (en) 2011-05-20 2014-09-16 Microsoft Corporation Optimistic application of data edits
US20130173662A1 (en) * 2012-01-03 2013-07-04 International Business Machines Corporation Dependency based prioritization of sub-queries and placeholder resolution
US9817910B2 (en) * 2012-10-19 2017-11-14 Red Hat Israel, Ltd. Restful service description language
PL3180897T3 (pl) 2014-08-14 2019-05-31 Nokia Solutions & Networks Oy Prowadzenie przepustowości w oparciu o wgląd w płaszczyznę użytkownika
US11695847B2 (en) 2014-08-14 2023-07-04 Nokia Solutions And Networks Oy Throughput guidance based on user plane insight
EP3222027A1 (en) * 2014-11-17 2017-09-27 Nokia Solutions and Networks Oy Application layer header or payload enrichment without proxy or connection termination
US10620996B2 (en) * 2017-04-26 2020-04-14 Servicenow, Inc. Batching asynchronous web requests
US11533103B2 (en) * 2021-01-07 2022-12-20 Hughes Network Systems, Llc Compensation for attenuation of carrier power by a transmission path

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3160149B2 (ja) 1994-05-13 2001-04-23 株式会社日立製作所 ディスク制御装置の無停止プログラム変更方法およびディスク制御装置
US5944779A (en) 1996-07-02 1999-08-31 Compbionics, Inc. Cluster of workstations for solving compute-intensive applications by exchanging interim computation results using a two phase communication protocol
US6112243A (en) 1996-12-30 2000-08-29 Intel Corporation Method and apparatus for allocating tasks to remote networked processors
JP2000067012A (ja) 1998-08-20 2000-03-03 Hitachi Ltd モバイル通信方法
US6665704B1 (en) 1999-06-18 2003-12-16 Sun Microsystems, Inc. Bounding delays and reducing threading overheads in caching
JP2001109715A (ja) 1999-10-05 2001-04-20 Nippon Telegr & Teleph Corp <Ntt> Wwwクライアント・サーバシステムの情報取得表示方法、クライアント装置及び情報提供サーバ
US7130885B2 (en) * 2000-09-05 2006-10-31 Zaplet, Inc. Methods and apparatus providing electronic messages that are linked and aggregated
US6963917B1 (en) 2000-10-20 2005-11-08 International Business Machines Corporation Methods, systems and computer program products for policy based distribution of workload to subsets of potential servers
US7490343B1 (en) 2000-11-08 2009-02-10 Sedna Patent Services, Llc Method and apparatus for keeping track of program indexes in an interactive delivery system
US20020146129A1 (en) 2000-11-09 2002-10-10 Kaplan Ari D. Method and system for secure wireless database management
US7051330B1 (en) 2000-11-21 2006-05-23 Microsoft Corporation Generic application server and method of operation therefor
US7398216B2 (en) 2000-12-12 2008-07-08 Lockheed Martin Corporation Network dynamic service availability
US6651143B2 (en) 2000-12-21 2003-11-18 International Business Machines Corporation Cache management using a buffer for invalidation requests
US6961776B1 (en) * 2000-12-22 2005-11-01 Nortel Networks Limited Architecture for multiple channel access to applications
NL1017388C2 (nl) 2001-02-16 2002-08-19 Marc Van Oldenborgh Organisch datanetwerk met een dynamische topologie.
JP2003029989A (ja) 2001-07-16 2003-01-31 Matsushita Electric Ind Co Ltd 分散処理システムおよびジョブ分散処理方法
US7089290B2 (en) 2001-08-04 2006-08-08 Kontiki, Inc. Dynamically configuring network communication parameters for an application
US7536472B2 (en) 2001-09-13 2009-05-19 Network Foundation Technologies, Llc Systems for distributing data over a computer network and methods for arranging nodes for distribution of data over a computer network
JP2003141072A (ja) 2001-10-30 2003-05-16 Hitachi Ltd ダイナミックなドキュメントの生成表示方法及びその装置
US7447731B2 (en) * 2001-12-17 2008-11-04 International Business Machines Corporation Method and apparatus for distributed application execution
JP2006502465A (ja) * 2002-01-11 2006-01-19 アカマイ テクノロジーズ インコーポレイテッド コンテンツ配信ネットワーク(CDN)で使用するためのJavaアプリケーションフレームワーク
US20040017395A1 (en) 2002-04-16 2004-01-29 Cook Thomas A. System and method for configuring and managing enterprise applications
JP4035600B2 (ja) 2002-05-22 2008-01-23 国立大学法人 東京大学 イマチニブに対する感受性の判定方法
US7209915B1 (en) 2002-06-28 2007-04-24 Microsoft Corporation Method, system and apparatus for routing a query to one or more providers
US7243352B2 (en) 2002-11-27 2007-07-10 Sun Microsystems, Inc. Distributed process runner
US7895328B2 (en) 2002-12-13 2011-02-22 International Business Machines Corporation System and method for context-based serialization of messages in a parallel execution environment
US7450524B2 (en) 2003-06-30 2008-11-11 Kontiki, Inc. Method and apparatus for determining network topology in a peer-to-peer network
CN1577251B (zh) * 2003-07-28 2012-07-18 国际商业机器公司 小服务器程序的远程协作方法和系统
FR2863127A1 (fr) 2003-12-02 2005-06-03 Canon Kk Procedes et dispositifs pour la delivrance asynchrone de donnees numeriques
US7769802B2 (en) 2003-12-04 2010-08-03 Microsoft Corporation Systems and methods that employ correlated synchronous-on-asynchronous processing
US7502760B1 (en) 2004-07-19 2009-03-10 Amazon Technologies, Inc. Providing payments automatically in accordance with predefined instructions
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
JP4609175B2 (ja) 2005-04-27 2011-01-12 日本電気株式会社 データ配信システム及びその方法、通信中継装置ならびに端末装置
US20070143460A1 (en) 2005-12-19 2007-06-21 International Business Machines Corporation Load-balancing metrics for adaptive dispatching of long asynchronous network requests
US7627662B2 (en) 2006-03-23 2009-12-01 First Data Corporation Transaction request processing system and method
US8639655B2 (en) 2006-08-31 2014-01-28 Red Hat, Inc. Dedicating threads to classes of LDAP service
US20080071922A1 (en) 2006-09-19 2008-03-20 International Business Machines Corporation Methods, systems, and computer program products to transparently dispatch requests to remote resources in a multiple application server environment
US20080127234A1 (en) 2006-09-19 2008-05-29 International Business Machines Corporation Methods, systems, and computer program products for a remote request dispatcher extension framework for container based programming models
US8533272B2 (en) 2007-01-30 2013-09-10 Alcatel Lucent Method and apparatus for notification and delivery of messages to mobile PC users
US8032587B2 (en) 2007-08-28 2011-10-04 International Business Machines Corporation Method and apparatus for client-side aggregation of asynchronous fragmented requests

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102194513B1 (ko) * 2019-06-20 2020-12-23 배재대학교 산학협력단 Gpgpu 기반 태스크 큐를 활용한 웹 서비스 제공 시스템 및 방법

Also Published As

Publication number Publication date
US9069870B2 (en) 2015-06-30
US20080016151A1 (en) 2008-01-17
JP2010537290A (ja) 2010-12-02
CN101785004A (zh) 2010-07-21
EP2179376A1 (en) 2010-04-28
JP5186565B2 (ja) 2013-04-17
WO2009024473A1 (en) 2009-02-26

Similar Documents

Publication Publication Date Title
KR20100057831A (ko) 컨텍스트-센시티브 리퀘스트 결과들의 클라이언트측 취합
US10411956B2 (en) Enabling planned upgrade/downgrade of network devices without impacting network sessions
US10303522B2 (en) System and method for distributed graphics processing unit (GPU) computation
US10367890B2 (en) Maintain single session with a single application across multiple clients
CN109313661A (zh) 针对原生移动应用中托管的网络应用的网页加速
US20140136937A1 (en) Providing and procuring worksheet functions through an online marketplace
US7698411B2 (en) Selectively delivering cached content or processed content to clients based upon a result completed percentage
EP3614643B1 (en) Oauth2 saml token service
JP5936103B2 (ja) クライアントでJavaメソッドを呼び出すシステム、コンピュータ、方法及びプログラム
US7877465B2 (en) Providing artifact and configuration cohesion across disparate portal application models
US9059959B2 (en) Client side management of HTTP sessions
US20200250013A1 (en) Applications program interface (api) gateway
CN109936605A (zh) 一种加载接口数据的方法和装置
CN108664510A (zh) 信息获取方法和装置
CN109495553A (zh) 一种网页显示控制方法、系统及反向代理服务器
CN114586325A (zh) 用于基于5g通用媒体应用格式的媒体流式传输的内容准备模板的方法
US9614900B1 (en) Multi-process architecture for a split browser
CN106899564A (zh) 一种登录方法和装置
US20130191498A1 (en) Web page load time reduction by optimized authentication
US9432243B2 (en) Re-using asynchronous server-side results generated for a request context of one client to satisfy a request context of a different client
AU2018390863B2 (en) Computer system and method for extracting dynamic content from websites
CN109218339B (zh) 请求处理方法和装置
CN111639290B (zh) 一种对线上渠道金融产品访问的处理方法及装置
US20170289229A1 (en) Method and terminal device for providing multimedia content
CN109088907A (zh) 文件传递方法及其设备

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application