KR101059904B1 - 실시간 라우팅 네트워크로 개인화된 콘텐트를 전달하는기술 - Google Patents

실시간 라우팅 네트워크로 개인화된 콘텐트를 전달하는기술 Download PDF

Info

Publication number
KR101059904B1
KR101059904B1 KR20077006107A KR20077006107A KR101059904B1 KR 101059904 B1 KR101059904 B1 KR 101059904B1 KR 20077006107 A KR20077006107 A KR 20077006107A KR 20077006107 A KR20077006107 A KR 20077006107A KR 101059904 B1 KR101059904 B1 KR 101059904B1
Authority
KR
South Korea
Prior art keywords
identifier
message
personalized
client device
client
Prior art date
Application number
KR20077006107A
Other languages
English (en)
Other versions
KR20070095273A (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 KR20070095273A publication Critical patent/KR20070095273A/ko
Application granted granted Critical
Publication of KR101059904B1 publication Critical patent/KR101059904B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/30Routing of multiclass traffic
    • 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]
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1029Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers using data related to the state of servers by a load balancer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/562Brokering proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/563Data redirection of data network streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • 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/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Abstract

본 발명은 클라이언트들이 공급받기 위해 개인화된 콘텐트로 라이브 오브젝트를 동적으로 업데이트하는 기술이다. 본 기술은 제 1 식별자 및 제 2 식별자를 포함하는 소스로부터 제 1 메시지를 수신하는 것을 포함한다. 제 1 식별자는 클라이언트에게 고유할 수 있다. 제 2 식별자는 다수의 클라이언트들에게 공통적으로 교차될 수 있다. 제 1 메시지는 제 2 식별자와 연관된 라이브 오브젝트의 특성을 업데이트하기 위한 정보를 포함한다. 제 1 식별자에 대한 클라이언트 특성은 식별될 수 있다. 그리고 제 2 메시지는 네트워크를 통해 상기 클라이언트에게 라우팅될 수 있다. 제 2 메시지는 제 1 식별자 및 제 2 식별자를 포함할 수 있고, 또한 제 2 식별자와 연관된 상기 라이브 오브젝트의 특성을 업데이트하기 위한 정보를 포함할 수 있다. 상기 클라이언트는 제 2 메시지를 수신할 수 있고, 상기 제 2 식별자와 연관된 상기 라이브 오브젝트의 특성의 업데이트시킬 수 있다.
클라이언트, 라이브 오브젝트, 네트워크, 라우팅, 업데이트

Description

실시간 라우팅 네트워크로 개인화된 콘텐트를 전달하는 기술{TECHNIQUES FOR DELIVERING PERSONALIZED CONTENT WITH A REAL-TIME ROUTING NETWORK}
본 출원은 "TECHNIQUES FOR DELIVERING PERSONALIZED CONTENT WITH A REAL-TIME ROUTING NETWORK, MODULAR EVENT-DRIVEN ARCHITECTURE, MODULAR EVENT-DRIVEN PROCESSING AND VIEWER FAILOVER TESTING A SYSTEM MEMORY WHILE AN OPERATING SYSTEM IS ACTIVE"의 제목의 2004년 8월 17일에 출원되어 동시계속중인 미국 임시 특허 출원 제60/602,539호의 우선권을 주장하며, "ASYNCHRONOUS MESSAGING USING A DYNAMIC ROUTING NETWORK"의 제목의 2001년 12월 14일에 출원된 미국 특허 출원 제10/017,182호의 일부계속이며, 이는 2000년 12월 18일에 출원된 미국 임시 출원 제60/256,613호, 2001년 3월 16일에 출원된 미국 임시 출원 제60/276,847호, 2001년 3월 21일에 출원된 미국 임시 출원 제60/278,303호, 2001년 3월 28일에 출원된 미국 임시 출원 제60/279,608호, 2001년 3월 29일에 출원된 미국 임시 출원 제60/280,627호로부터 우선권을 주장한다.
개시하는 실시예들은 일반적으로 네트워크를 통해 정보를 전송하는 것에 관한 것이고, 특히 상기 네트워크를 통해 클라이언트 장치에 콘텐트를 원격으로 업데이트하기 위한 개인화된 정보를 전송하는 것에 관한 것이다.
사용자는 월드 와이드 웹으로부터 매우 다양한 종류의 콘텐트를 다운로드 할 수 있다. 예를 들면, 사용자는 웹 페이지를 사용하여 콘텐트를 다운로드 할 수 있다. 일부 경우에서, 사용자는 사용자가 웹 페이지에서 원하는 콘텐트를 송신하는 서비스들을 신청할 수 있다. 콘텐트 공급자는 상기 콘텐트에 대해 등록된 사용자들의 추적을 유지하는 것이 필요할 수 있다. 상기 콘텐트에 대해 등록된 사용자들의 추적을 유지하는 것에 부가하여, 상기 서비스 공급자는 등록된 개개의 사용자에게 어떻게 상기 콘텐트를 송신할지 아는 것이 또한 필요할 수 있다. 이는 등록된 사용자들의 추적, 개개의 사용자가 원하는 콘텐트, 및 상기 사용자들에게 상기 콘텐트를 라우팅하는 방법을 유지하기 위해 막대한 양의 리소스를 요구할 수 있다.
한 실시예에서, 개인화된 콘텐트는 동적 콘텐트 라우팅 네트워크를 사용하여 원격 클라이언트에게 공급될 수 있다. 상기 동적 콘텐트 라우팅 네트워크는 먼저 설명되고, 그 후에 클라이언트에게 개인화된 콘텐트를 전달하는 것이 설명된다. 본 명세서에 개시된 실시예들의 특징 및 이점들의 더욱 양호한 이해는 본 명세의 나머지 부분들 및 첨부된 도면들을 참조함으로써 실현될 수 있다.
도 1은 동적 콘텐트 라우팅 네트워크를 포함하는 환경을 도시하는 고-레벨의 블록 다이어그램.
도 2는 웹 페이지 상에서 라이브 오브젝트의 특성을 업데이트하기 위한 서버, 정보 공급자, 동적 콘텐트 공급자, 클라이언트, 및 라우팅 네트워크사이의 상호작용을 도시한 상호작용 다이어그램.
도 3은 라우팅 네트워크에 의해 수행되는 다-대-다 맵핑을 시각적으로 나타 내는 고-레벨의 다이어그램.
도 4는 스포츠 점수를 포함하는 다른 두 웹 페이지를 도시한 도면.
도 5는 업데이트 메시지를 생성하기 위해 이용가능한 입력 소스 및 도구를 도시한 블록 다이어그램.
도 6은 활성 모듈의 실시예에 의해 수행된 단계들을 도시한 플로우 차트.
도 7은 한 실시예에 따라 라우팅 네트워크의 저-레벨의 관점에서 도시한 블록 다이어그램.
도 8은 입력 소스로부터 게이트웨이를 경유하여 수신된 메시지의 오브젝트-기반된 라우팅을 수행하도록 클러스터내의 노드에 의하여 수행되는 단계들을 도시한 플로우 차트.
도 9는 한 실시예에 따라 웹 페이지의 예시를 묘사한 도면.
도 10은 한 실시예에 따라 라우팅 네트워크(110)를 사용하여 개인화된 메시지들을 전달하는 시스템을 묘사한 도면.
도 11은 한 실시예에 따라 배치 메시지 생성에 대하여 묘사한 단순화된 플로우 차트.
도 12는 한 실시예에 따라 클라이언트에게 배치 메시지를 라우팅하는 방법을 묘사한 단순화된 플로우 차트.
도 13은 한 실시예에 따라 클라이언트에게 배치 메시지 처리 방법에 대해 묘사한 단순화된 플로우 차트.
동적 콘텐트 라우팅 네트워크
도 1은 동적 콘텐트 라우팅 네트워크(110; 이하 "라우팅 네트워크"라 함)를 포함하는 환경(100)을 도시한 고-레벨의 블록 다이어그램이다. 환경(100)은 또한 클라이언트(114), 정보 공급자(108), 및 동적 콘텐트 공급자(116)와 통신하는 서버(112)를 포함한다. 일반적인 환경(100)은 수백 개의 서버들(112) 및 정보 공급자들(108), 수천 개(또는 심지어 수백만)의 클라이언트(114), 및 다수의 동적 콘텐트 공급자(116)를 가질 수 있다. 도 1은 이 상세한 설명의 명확함을 높이기 위해 이들 개개의 엔티티(entity)들의 하나만을 도시한다.
서버(112), 클라이언트(114), 정보 공급자(108), 동적 콘텐트 공급자(116), 및 라우팅 네트워크(110)는 양호하게는 인터넷을 포함하는 것들과 같은 종래의 통신 링크(117)를 경유하여 통신한다. 통신 링크(117)는 전용 또는 공유 데이터, 케이블 텔레비전 또는 전화 라인과 같은 공지의 유선 통신 미디어, 및/또는 이동 통신(global system for mobile; GSM), 코드 분할 다중 접속(code division multiple access; CDMA), 시 분할 다중 접속(time division multiple access; TDMA)등을 위한 광역 시스템과 같이 프로토콜을 사용하여 이동 전화 네트워크상의 통신과 같은 공지의 무선 통신 미디어를 포함한다.
한 실시예에서, 상기 엔티티들은 인터넷상의 다른 컴퓨터들과의 접속으로 개별적인 엔티티를 공급하는 (도시되지 않은) 하나 이상의 인터넷 서비스 공급자들(ISPs)로 개별적으로 통신할 수 있다. 게다가, 서버(112), 클라이언트(114), 정보 공급자(108), 동적 콘텐트 공급자(116), 및 라우팅 네트워크(110)는 양호하게는 "66.35.209.224"와 같은 적어도 하나 이상의 인터넷 프로토콜(IP)에 의해 개별적으 로 식별된다. 또한 상기 IP주소는 "bangnetworks.com"과 관련된 하나 이상의 도메인 이름들을 가질 수 있다. 본 발명의 대안적인 실시예는 대안적인 어드레싱(addressing) 설계 및/또는 본원에 설명된 것 대신에, 또는 부가하여 네이밍(naming) 관습을 사용할 수 있다. 예를 들면, 한 실시예에서 하나 이상의 클라이언트는 여러 어드레싱 설계에 의존할 수 있는 이동 전화 또는 그외의 휴대용 장치이다.
양호하게는, 정보 공급자(108)는 서버(112)로 웹 페이지들 또는 그외의 데이터 표현들을 공급한다. 상기 웹 페이지들은 실시간 동적으로 오브젝트가 업데이트될 수 있도록 지정되는 하나 이상의 "라이브 오브젝트"를 포함한다. 개개의 라이브 오브젝트는 오브젝트 식별자, 또는 오브젝트 ID에 의해 식별된다. 양호하게는, 서버(112)는 다수의 클라이언트(114)에게 페이지(118)를 공급한다. 클라이언트(114)는 라우팅 네트워크(110)에 접속하고 상기 웹 페이지 상의 오브젝트 ID에 대한 업데이트 메시지를 등록한다. 이번에는 라우팅 네트워크(110)가 양호하게는 오브젝트 ID들을 등록한 클라이언트를 나타내는 레지스트리를 유지한다.
정보 공급자(108) 및/또는 동적 콘텐트 공급자(116)는 라우팅 네트워크(110)로 업데이트 메시지들을 송신한다. 이 메시지들은 라이브 오브젝트의 특성을 업데이트하기 원하는 정보 공급자(108) 또는 동적 콘텐트 공급자(116)에게 언제라도 송신될 수 있다. 개개의 업데이트 메시지는 양호하게는 라이브 오브젝트를 식별하고 식별된 라이브 오브젝트의 특성을 업데이트하기 위한 데이터를 포함한다. 라우팅 네트워크(110)는 레지스트리에 접속하고 어느 클라이언트가 식별된 오브젝트를 등 록했는지 결정한다. 그 후에, 라우팅 네트워크(110)는 적절한 클라이언트에게 업데이트 메시지를 라우팅한다. 업데이트 메시지를 수령하면, 클라이언트(114)는 라이브 오브젝트의 특정된 특성을 업데이트한다.
라우팅 네트워크(110)는 클라이언트에게 오브젝트-기반의 라우팅을 통해 효율적인 오브젝트의 일-대-다 맵핑 (및 정보의 추론에 의해, 클라이언트에게 정보 공급자(108)/동적 콘텐트 공급자(116)의 다-대-다 맵핑)을 공급한다. 정보 공급자(108) 및/또는 동적 콘텐트 공급자(116)에 의해 라우팅 네트워크(110)에 공급되는 메시지들은 오로지 특정된 도착지에 기반하여 클라이언트(114)에게 라우팅되지 않는다. 특히, 종래의 IP 라우팅 설계에서와 같이, 메시지들은 클라이언트의 IP 주소에 기반하여 라우팅되지 않는다. 대신에, 상기 메시지들은 메시지에 의해 참조된 라이브 오브젝트에 기반하여 라우팅된다.
맵핑 및 라우팅 네트워크(110)에 의해 공급되는 오브젝트-기반의 라우팅은 정보 공급자(108) 또는 동적 콘텐트 공급자(116)가 클라이언트 또는 클라이언트에 의해 보여지고 있는 웹 페이지를 추적할 것을 요구하지 않고, 실시간으로 클라이언트의 교차-구역을 동적으로 변경할 때 정보 공급자(108) 및 동적 콘텐트 공급자(116)가 라이브 오브젝트의 특성을 업데이트하도록 허용한다. 클라이언트(114)는 오브젝트 ID들의 임의의 선행 지식을 가질 필요가 없다 - 그들은 서버(112)로부터 페이지(118)를 수신할 때 어떤 ID들을 등록해야 하는지를 "발견(discover)"한다.
오브젝트-기반의 라우팅은 또한 클라이언트(114)에게 콘텐트를 재요청할 것 을 요구하지 않고, 및 정보 공급자(108) 또는 서버(112)가 클라이언트와의 연결을 유지할 것을 요구하지 않고, 정보 공급자(108)가 웹 페이지 상에서 동적으로 콘텐트를 업데이트하는 것을 허용한다. 이러한 방식으로, 종래의 클라이언트-측의 요청에 의해 구동되는 클라이언트와 서버(112)사이의 전송 제어 프로토콜/인터넷 프로토콜(TCP/IP) 연결을 이용하는 것이 할 수 있는 것보다 훨씬 더 많은 클라이언트들은 주어진 정보 공급자(108)로부터 업데이트되는 콘텐트를 수신할 수 있다.
이제 도 1에 도시된 개인적 엔티티로 돌아와서, 서버(112)는 양호하게는 웹 서버로서 동작하도록 구성된 종래의 컴퓨터 시스템이며, 페이지(118) 및 그외의 데이터 표현을 클라이언트(114)에게 제공한다. 서버(112)에 의해 공급되는 페이지(118)는 하나 이상의 정보 공급자(108)와 관련되어 있다.
정보 공급자(108)는 하나 이상의 페이지(108), 웹 페이지에 포함되는 정보, 및/또는 그외의 서버(112)에 의해 제공되는 데이터의 표현들을 공급하는 엔티티이다. 정보 공급자(108)는 양호하게는 인터넷과 결합된 종래의 컴퓨터 시스템을 갖는다. 한 실시예에서, 서버(112)는 정보 공급자(108)에 의해 직접 제어된다. (예를 들면, 서버는 정보 공급자에 물리적으로 위치하고, 및/또는 서버는 단지 정보 공급자의 웹 페이지를 공급하는데 전용된다.) 한 실시예에서, 서버(112) 및 정보 공급자(108)는 동일한 엔티티로서 취급될 수 있다. 대안적인 실시예에서, 서버(112)는 다수의 정보 공급자들로부터 웹 페이지를 제공한다.
알려진 종래기술과 같이, 서버(112)상의 페이지(118) 및 다른 콘텐트는 "서비스://서버//경로//웹 페이지" 형태를 갖는 고정 리소스 로케이터(uniform resource locators; URLs)에 의해 특정된다. 일반적으로, 페이지(118)는 하이퍼텍스트 전송 프로토콜(HTTP)을 통해 획득되고, 따라서 도메인 네임 "www.bangnetworks.com"을 갖는 웹 서버로부터 웹 페이지 "b1.html"을 검색하기 위한 본보기의 URL은 "http://www.bangnetworks.com/news/b1.html"이다.
본원에서 사용된 것과 같이, "웹 페이지"는 서버(112)로부터 이용가능한 데이터의 블록이다. 가장 간단한 경우에, 웹 페이지는 하이퍼텍스트 생성 언어(HTML)로 쓰여진 파일이다. 웹 페이지는 다른 파일들, 텍스트, 이미지, 애플릿, 비디오, 및/또는 음성과 같은 하나 이상의 다른 데이터의 블럭들을 포함하거나 언급한다. 게다가, 상기 웹 페이지는 HTML 태그 및 스타일 시트(sheet)와 같은 웹 페이지 및 웹 페이지의 콘텐트를 제공하는 명령을 포함한다. 또한 상기 명령은 HTML 및 웹 페이지에 시맨틱(semantic) 콘텐트를 부가하는 것에 관한 확장형 생성 언어(XML)일 수 있고, 또는 웹 페이지에 일부의 동적 콘텐트를 부가하는 동적 HTML(DHTML)일 수 있다. 부가적으로, 명령은 JAVA
Figure 112009013702297-pct00014
애플릿 및 JAVASCRIPT
Figure 112009013702297-pct00015
및/또는 DHTML 스크립트와 같은 하나 이상의 프로그램의 형태를 가질 수 있다.
본원에 사용된 것과 같이, 구(phrase) "웹 페이지"는 또한 이들 데이터 표현들이 종래의 웹 페이지의 특징을 포함하는지 여부에 관계없이 서버(112)에 의해 제공되는 데이터의 다른 표현들을 언급한다. 예를 들면, 이 데이터 표현들은 웹 브라우저(120)를 위해 의도된 애플리케이션 프로그램 및 데이터, 또는 그외의 클라이언트(114)에 존재하는 애플리케이션 프로그램, 또는 그밖에 스프레드시트 또는 문자적인 (예를 들면, 워드 프로세싱) 데이터 등을 포함한다.
양호한 실시예에서, 웹 페이지 및 웹 페이지의 구성요소와 같은 클라이언트에서의 오브젝트는 정보 공급자(108)에 의해 "라이브"로서 지정될 수 있다. 라이브 오브젝트의 특성들은 정보 공급자(108) 또는 정보 공급자를 위해 작동하는 다른 엔티티에 의해 클라이언트(114)에 실시간으로 동적으로 업데이트될 수 있다. 본원에서 사용된 바와 같이, "오브젝트"는 클라이언트(114)에서 개인적으로 식별되거나 접속될 수 있는 임의의 데이텀(datum) 또는 데이터이다. 오브젝트들의 예시들은 텍스트 문자 및 문자열, 이미지, 프레임, 표, 음성, 비디오, 애플릿, 스크립트, HTML, XML, 및 그 밖의 웹 페이지, 변수 형태의 코드, 및 그밖의 애플릿, 스크립트 및/또는 코드, 웹 페이지에 내장된 URL등에 의해 사용되는 정보와 같은 웹 페이지의 구성요소들을 포함한다. 애플리케이션 및 운용 시스템 구조들은 또한 오브젝트이다. 예를 들면, 운용 시스템에 또는 애플리케이션에 의해 디스플레이되는 스프레드시트의 셀들, 워드 프로세서 문서의 텍스트, 및 타이틀 바들 및 메시지들은 오브젝트이다. 양호하게는, 다수의 오브젝트들은 단일 로직 오브젝트로 함께 묶일 수 있다. 따라서, 오브젝트는 임의의 원하는 또는 유용한 레벨의 알갱이로 정의될 수 있다.
웹 페이지의 콘텐트는 "오브젝트"에 의해 개념화 및 조직화되기 때문에, 본 발명은 HTML 코드 또는 그외의 종래의 표현에서 벗어나, 반드시 클라이언트(114)에서 웹 페이지 및 웹 페이지 콘텐트, 및 그밖의 모듈 및/또는 기능성을 추출한다. 이 추출은 위치, 디스플레이 형식, 또는 그밖의 데이터가 클라이언트(114)에서 표현되고 있는 방법의 특성에 대한 고려함이 없이 정보 공급자(108)가 오브젝트의 특 성을 업데이트하는 것을 허용한다.
라이브 오브젝트는 오브젝트에 관한 또는 오브젝트에 관하여 참조되는 임의의 수정가능한 데이터를 포함하는 "특성들"과 관련된다. 정보 공급자(108)는 필수적이지 않지만, 일반적으로 클라이언트(114)에게 공급되는 라이브 오브젝트의 특성에 대한 초기 설정을 공급한다. 상기 특성들은 웹 페이지의 오브젝트의 시각적 표현 또는 그밖의 데이터 표현에 영향을 줄 수 있거나 또는 줄 수 없다. 특성은 오브젝트의 내부적 모습에 영향을 줄 수 있고, 따라서 특성에 대한 변경은 상기 오브젝트를 포함하는 웹 페이지상에 임의의 직접적 영향을 갖지 않을 수 있다. 예를 들면, 상기 특성은 오브젝트의 특정 모습들이 수정가능한지 여부, 상기 오브젝트가 사용자 입력 또는 다른 자극 등에 어떻게 반응하는지 등에 영향을 줄 수 있다. 부가적으로, 특성은 클라이언트(114)에서 상기 오브젝트가 어떻게 디스플레이되는지에 직접적인 영향을 가질 수도 있다. 예를 들면, 상기 특성은 상기 오브젝트에 의해 디스플레이되는 콘텐트, 색상, 서체, 크기, 형식, 또는 그밖의 텍스트의 속성, 이미지, 또는 그밖의 데이터에 영향을 줄 수 있다. 다른 특성들은 오브젝트의 시각적 표현에 영향을 주지 못하는 것과 상기 오브젝트의 시각적 표현에 직접 영향을 주는 것 사이에서 일부 범위를 점유할 수 있다. 예를 들면, 풋볼 게임의 점수를 보여주는 웹 페이지는 서버(112)가 웹 페이지를 제공하는 시간과 같이 게임들의 목록 및 게임들의 현재 점수를 포함할 수 있다. 디스플레이되는 게임들의 목록, 게임들의 일부, 및 게임들의 점수는 라이브 오브젝트(또는 단일 라이브 오브젝트의 특성)로 서로 지정될 수 있고 필요 또는 원하는 바에 따라 업데이트될 수 있다.
또한 특성은 양호하게는 상기 오브젝트의 예를 예시하는 것 또는 상기 오브젝트의 기능성을 실시하는 것을 포함한다. 예를 들면, 브라우저 윈도우 오브젝트의 특성은 다른 브라우저 윈도우를 예시하기 위한 기능성을 포함할 수 있다. 이 기능은 상기 오브젝트의 특성에 대한 로직 변화로서 실시될 수 있다. 제 2 브라우저 윈도우는 원래의 브라우저 윈도우(즉, 오브젝트)를 통해 참조될 수 있거나 새로운 라이브 오브젝트로서 지정될 수 있다.
정보 공급자(108) 또는 다른 엔티티는 양호하게는 업데이트 메시지를 경유하여 클라이언트(114)에 라이브 오브젝트를 업데이트한다. 일반적으로, 업데이트 메시지는 상기 라이브 오브젝트를 식별하고, 필요하다면 상기 라이브 오브젝트의 특성을 식별하며, 상기 특성을 업데이트하기 위한 데이터를 포함한다. 한 실시예에서, 상기 데이터는 상기 특성에 대한 실제 값 또는 상기 오브젝트의 특성을 업데이트시키기 위한 실행가능한 코드일 수 있다. 예를 들면, 상기 데이터는 예를 들면 "4"와 같은 단순한 숫자적 또는 문자적 값일 수 있고, 상기 데이터에 상기 특성은 설정되어야 하고, 및/또는 상기 데이터는 상기 오브젝트의 특성에 원하는 변경에 영향을 주는 클라이언트에서 JAVASCRIPT
Figure 112009013702297-pct00016
코드 또는 JAVASCRIPT
Figure 112009013702297-pct00017
기능이라 불리는 것일 수 있다.
상기 업데이트 메시지는 양호하게는 내재적으로 또는 명시적으로 상기 라이브 오브젝트의 특성을 업데이트하는 데 사용하기 위해 클라이언트(114)에서 핸들러를 식별한다. 한 실시예에서, 클라이언트(114)는 상기 메시지가 내재적으로 상기 핸들러를 특정할 때(예를 들면, 상기 메시지가 특정 핸들러를 식별하지 못할 때), 클라이언트(114)는 기본 핸들러를 이용한다. 한 실시예에서, 상기 업데이트 메시지가 상기 특성에 대한 실제 값을 특정한다면, 기본 핸들러는 상기 실제 값을 특정된 값으로 특성을 변경하기위해 JAVASCRIPT
Figure 112009013702297-pct00018
코드를 생성한다. 상기 업데이트 메시지내의 데이터가 JAVASCRIPT
Figure 112009013702297-pct00019
코드라면, 상기 기본 핸들러는 상기 코드의 임의의 처리를 수행하지 않는다. 다른 경우에, 상기 기본 핸들러는 양호하게는 클라이언트(114)에서 자바 가상 머신(JVM)에서 JAVASCRIPT
Figure 112009013702297-pct00020
코드를 실행하도록 라이브커넥트(LiveConnect)를 사용하고, 그래서 상기 라이브 오브젝트의 특성을 업데이트한다.
특정 오브젝트 및/또는 데이터 형태에 대해, 상기 기본 핸들러는 적절하지 않다. 이 경우들에서, 상기 메시지는 양호하게는 업데이트를 수행하기 위해 핸들러를 명시적으로 식별한다. 예를 들면, 상기 메시지는 상기 데이터를 호출하는 기능을 명시적으로 특정할 수 있거나 상기 메시지는 상기 데이터가 실행되어야 하는 환경을 명시적으로 식별할 수 있다. 예를 들면, 상기 업데이트 메시지내의 데이터는 MACROMEDIA FLASH
Figure 112009013702297-pct00021
와 같은 "플러그-인" 소프트웨어에 의해 실행되기 위한 코드를 포함할 수 있고 상기 메시지는 핸들러로서 플래시를 식별할 수 있다.
정보 공급자(108)는 양호하게는 클라이언트(114)에 공급되는 웹 페이지 또는 그밖의 데이터 표현내에서 상기 오브젝트, 오브젝트 ID에 대해 고유한 식별자를 포함하는 것에 의해 "라이브"로서 오브젝트를 지정한다. 한 실시예에서, 정보 공급자(108)는 후술하는 HTML 표현을 사용하여 오브젝트의 HTML "ID" 분배에 대응하는 것에서 오브젝트 ID를 인코딩한다.
ID="구성요소식별자"
여기서 "구성요소식별자"는 오브젝트 ID이고 양호하게는 문자열이다. 상기 문자열은 정보 공급자(108)에 의해 요구되는 임의의 정보 또는 오브젝트 ID를 설정하는 그밖의 엔티티를 인코딩할 수 있고 한 실시예는 단순한 문자적 및/또는 숫자적 식별자인 내에서 인코딩할 수 있다. 한 실시예에서, 정보 공급자(108)는 정의한 ID 분배가 일어나는 다른 오브젝트로부터 라이브 오브젝트를 구별하도록, "Bang$"와 같은 미리 설정된 표시로 상기 오브젝트 ID를 시작한다. 예를 들면, 오브젝트는 오브젝트 ID "Bang$구성요소식별자"를 가질 수 있다.
양호한 실시예에서, 각각의 정보 공급자(108)는 다른 정보 공급자들의 오브젝트 ID들 사이에 명칭 충돌을 방지하기위해 정보 공급자의 오브젝트 ID내에 고유한 정보 공급자 ID를 선택적으로 인코딩한다. 한 실시예에서, 정보 공급자 ID는 문자적 및/또는 숫자적 식별자이다. 정보 공급자(108)는 계층적 이름공간의 일부로서 정보 공급자 ID 와 오브젝트 ID를 특정한다. 예를 들면, 한 실시예에서 오브젝트들은 다음과 같이 명칭된다. "$이름공간1$[이름공간2$...$이름공간N$]". 여기서 $이름공간1"은 정보 공급자 ID이고 "$"는 이름 구분자로서 작동하고 이름공간 계층의 부가적 선택적 레벨을 정의한다. 시스템(100)의 한 실시예는 일반적인 디렉토리 서비스 기능성을 지원한다. 예를 들면, 함께 나타나는 2 달러 표시 문자들 "$$"는 이름공간 계층의 최고 레벨을 언급한다.
그래서, 라이브 오브젝트에 대한 상기 오브젝트 ID는 양호하게는 미리 설정 된 표시, 정보 공급자 ID 이름공간, 및 정보 공급자(108)에 의해 할당된 값의 조합으로부터 형성된다. 예를 들면, 심볼 "BANG"을 갖는 주식의 실시간 가격을 나타내는 라이브 오브젝트에 대한 오브젝트 ID는 다음과 같을 수 있다.
"Bang$$정보공급자ID$가격$실시간$bang". 이 예에서, "Bang$"은 라이브 오브젝트를 의미하는 미리 설정된 표시이고, "$정보공급자ID"는 상기 정보 공급자를 식별하는 것이고, "$가격$실시간$"은 이름공간 계층의 레벨을 정의하는 것이며, "bang"은 특정 오브젝트를 식별한다.
일부 실시예들 및 상황들에서, 상기 오브젝트 ID는 대응하는 이름을 이용한다. 예를 들면, 자신의 오브젝트 ID들을 언급하는 정보 공급자(108)는 내재적으로 자신의 이름공간에 있다. 따라서, 정보 공급자(108)는 내부적으로 이용하는 상기 오브젝트 ID들에 정보 공급자 ID를 포함할 필요가 없다. 한 실시예에서, 정보 공급자 ID는 상기 오브젝트 ID내부에 명시적으로 인코딩되지 않는다. 대신에, 정보 공급자 ID는 페이지의 오브젝트 ID들에 대한 유효범위를 공급하기 위해 그 밖의 웹 페이지에서 인코딩된다.
한 실시예에서, 상기 오브젝트 ID는 클라이언트(114)에 웹 페이지 또는 그 외의 문서의 문서 오브젝트 모델(DOM) 표현에서 포인트(즉, 트리의 노드)를 식별한다. DOM은 오브젝트의 계층으로서 문서를 표현하는 플랫폼 및 언어 중간의 인터페이스이다. DOM은 또한 프로그램들 및 스크립들이 동적으로 접속하고 오브젝트들의 특성들을 업데이트하는 것을 허용한다. 오브젝트 특성들은 전해오는 오브젝트들에 의해 물려받을 수 있다.
이 실시예에서, 클라이언트(114)는 양호하게는 DOM 표현내의 특정된 포인트의 콘텍스트내의 업데이트 메시지를 실행한다. 상기 업데이트는 식별된 포인트에서 상기 오브젝트의 특성 변화를 특정한다. 상기 업데이트는 또한 식별된 포인트에서 오브젝트의 근원적인 또는 전해오는 변화를 특정할 수 있다. 각각의 경우에, 상기 업데이트는 DOM 표현내의 특정된 포인트에 관하여 실행된다. 한 실시예에서, DOM 표현내의 포인트들은 이들 포인트에 위치한 라이브 오브젝트들의 특성을 어떻게 업데이트할지를 특정한다. 그래서, 동일한 업데이트가 DOM 표현내에서 식별된 라이브 오브젝트의 위치에 의존하여 다르게 해석될 수 있다.
예를 들면, "윈도우.문서.프레임[3].오브젝트ID"로 식별된 DOM 표현내에 오브젝트가 있다고 가정하자. 또한 상기 오브젝트는 상기 오브젝트에 의해 디스플레이되는 텍스트를 특정하는 "윈도우.문서.프레임[3].오브젝트ID.내부텍스트"에 위치된 "내부텍스트" 특성을 갖는다고 가정하자. 업데이트 메시지는 "오브젝트ID" 및 내부텍스트 특성에 대한 새로운 값을 특정함에 의해 상기 오브젝트에 의해 디스플레이되는 텍스트를 변경할 수 있다.
오브젝트들을 특정하도록 오브젝트 ID들을 이용하는 장점은 정보 공급자(108) 또는 그외의 엔티티가 DOM 표현내의 오브젝트의 실제 위치를 아는 것 없이 상기 업데이트 메시지가 접속가능하고 오브젝트의 특성을 변경가능한 것을 공급하는 것이다. 게다가, 상기 오브젝트는 다른 DOM 표현에서 다른 위치 및/또는 동일한 DOM 표현내에서 다중적 위치일 수 있다. 이들의 임의의 경우에 있어서, 상기 업데이트 메시지는 주어진 오브젝트 ID를 갖는 모든 오브젝트들의 특정된 특성들을 변 경할 수 있다.
환경(100)의 특정 실시예에 의존하여, 정보 공급자(108) 및/또는 동적 콘텐트 공급자(116)는 라우팅 네트워크(110)로 업데이트 메시지들을 공급한다. 동적 콘텐트 공급자(116)는 양호하게는 주식 가격 및/또는 스포츠 점수와 같은 실시간 정보를 공급하는 엔티티에 의해 작동되는 종래의 컴퓨터 시스템이다. 한 실시예에서, 정보 공급자(108)는 동적 콘텐트 공급자(116) 또는 다른 소스로부터 라이브 오브젝트에 대한 업데이트된 특성들을 수신한다(또는 내부적으로 업데이트된 특성들을 생성한다). 그 후에, 정보 공급자(108)는 라우팅 네트워크(110)에 오브젝트 ID 및 오브젝트 특성 변경을 특정하는 업데이트 메시지를 송신한다. 이 실시예에서, 동적 콘텐트 공급자(116)는 환경(100)으로부터 빠질 수 있다.
다른 실시예에서, 동적 콘텐트 공급자(116)는 하나 이상의 정보 공급자(108)에게 라이브 오브젝트에 대한 오브젝트 ID들을 공급하고 정보 공급자(108)는 클라이언트(114)에게 상기 라이브 오브젝트를 분배한다. 그 후에, 동적 콘텐트 공급자(116)는 라우팅 네트워크(110)로 라이브 오브젝트의 특성 변경을 특정하는 메시지를 송신한다. 예를 들면, 동적 콘텐트 공급자(116)는 정보 공급자(108)에게 특정 야구 게임의 점수와 관련된 오브젝트 ID를 분배한다. 그 후에, 동적 콘텐트 공급자(116)는 라우팅 네트워크(110)로 오브젝트 ID를 특정하는 메시지 및 특정 야구 게임의 디스플레이되는 점수를 제어하는 상기 오브젝트의 특성에 대한 업데이트를 송신한다. 이 두 실시예들은 상호 배타적이지 않으며, 따라서 일부 업데이트들은 다른 업데이트들이 동적 콘텐트 공급자(116)에 의해 공급되는 동안, 정보 공급 자(108)에 의해 라우팅 네트워크(110)로 공급될 수 있다.
클라이언트(114)는 서버(112)로부터 페이지(118) 및/또는 그외의 정보를 검색하는 장치이다. 한 실시예에서, 클라이언트(114)는 인터넷상의 정보에 접속하도록 사람에 의해 사용되는 종래의 개인용 컴퓨터이다. 대안적인 실시예에서, 클라이언트(114)는 인터넷-가능한 텔레비전, 이동 전화, 개인용 디지털 보조기(PDA), 웹 브라우징 기기등과 같은 인터넷 연결성을 갖는 여러가지의 소비자 전자기기이다. 클라이언트(114)는 필수적이지 않지만, 양호하게는 디스플레이 장치와 결합한다.
클라이언트(114)는 양호하게는 웹 페이지를 검색하고, 이를 디스플레이 장치에 디스플레이하기 위해 MICROSOFT INTERNET EXPLORER
Figure 112009013702297-pct00022
와 같은 웹 브라우저(120)를 실행한다. 클라이언트가 종래의 웹 페이지들보다 서버(112)로부터 데이터 표현을 수신하는 실시예들에서, 웹 브라우저(120)는 종래의 웹 브라우저와 유사한 것을 필수적으로 공유하지는 않는다. 양호하게는, 웹 브라우저(120)는 JAVA
Figure 112009013702297-pct00023
애플릿 및/또는 스크립트를 실행하기 위해 JVM(122)를 포함한다. 웹 브라우저(120)는 또한 양호하게는 JAVASCRIPT
Figure 112009013702297-pct00024
(또는 VBScrpit와 같은 다른 스크립트 언어) 및 문서 오브젝트 모델(DOM)을 지원하는 것과 같이 동적 HTML 가능성을 포함하고, JAVA
Figure 112009013702297-pct00025
와 스크립트 언어 사이에 통신할 수 있다. 한 실시예에서, 웹 브라우저(120)는 스크립트 언어가 지원되도록 쓰여진 JAVA
Figure 112009013702297-pct00026
애플릿 및 스크립트사이에 통신을 가능케 하기 위해 라이브커넥트 표준을 지원한다. 웹 브라우저(120)는 또한 MACROMEDIA FLASH
Figure 112009013702297-pct00027
, REAL NETWORKS REALPLAYER
Figure 112009013702297-pct00028
, 및/또는 APPLE QUICKTIME
Figure 112009013702297-pct00029
과 같은 소프트웨어 플러그-인을 통해 확장될 수 있다. 대안적인 실시예에서, JVM(122)의 기능성 및/또는 그외의 웹 브라우저(120)의 모습은 클라이언트(114)내의 하나 이상의 다른 기능적 유니트에 의해 공급된다. "모듈"이라는 단어는 상기 모듈에 분배되는 기능성을 공급하도록 이용되는 소프트웨어 컴퓨터 프로그램 코드 및/또는 임의의 하드웨어 또는 회로를 언급한다. 웹 브라우저(120) 및 JVM(122)는 클라이언트(114)내의 모듈의 예시들이다.
일부 실시예들에서, 클라이언트(114)는 일반적인 소비자 장치와 관련된 디스플레이 장치, 웹 브라우저(120) 및/또는 그 외의 요소들을 필수적으로 갖지 않는다. 예를 들면, 클라이언트(114)는 웹-가능한 기기 또는 자동차, 오디오-시각적 장비, 또는 일부 다른 장치들을 위한 제어부내에 내장된 HTTP 클라이언트와 같은 웹 연결도의 특정 모습을 갖는 전용 목적 장치일 수 있다.
서버(112)로부터 클라이언트(114)로 공급되는 페이지(118)는 양호하게는 웹 페이지상에 라이브 오브젝트를 가능케 하기 위한 명령을 포함한다. 상기 명령은 클라이언트(114)가 자동적으로 및 투명하게(즉, 사용자 상호과정없이) 라이브 오브젝트를 활성화하기 위해 라우팅 네트워크(110)에 접속하고 활성 모듈(124)을 다운로드하도록 일으킨다. 한 실시예에서, 명령은 라우팅 네트워크(110)에서 활성 모듈(124)의 위치를 특정하는 URL을 포함한다. 대안적인 실시예에서, 클라이언트(114)는 서버(112) 또는 다른 소스로부터 활성 모듈(124)을 획득한다.
활성 모듈(124)은 양호하게는 JVM(122)에 의해 실행되기 위해 JAVA
Figure 112009013702297-pct00030
명령을 포함한다. 그러나, 모듈(124)의 대안적인 실시예는 페이지(118) 및/또는 여러가지 언어 및/또는 기술을 사용하는 활성 모듈(124)에서 명령을 인코딩할 수 있다. 예를 들면, 명령 및/또는 활성 모듈(124)은 웹 브라우저(120) 또는 운용 시스템에 네이티브 코드(native code) 또는 플러그-인으로서 내장될 수 있다. 이 대안적인 실시예들에서, 웹 브라우저(120)는 외부 소스로부터 활성 모듈(124)을 다운로드할 필요가 없다.
활성 모듈(124)은 양호하게는 클라이언트(114)에 의해 다운로드된 페이지(118)로부터 라우팅 네트워크(110)로 오브젝트 ID들을 등록하고, 상기 네트워크로부터 수신된 업데이트 메시지들에 응답하는 라이브 오브젝트를 업데이트한다. 라우팅 네트워크(110)는 레지스트리(125)에 등록을 기록한다. 클라이언트의 등록은 양호하게는 시스템(100)의 다른 실시예들이 클라이언트의 등록들을 종료하는 때를 결정하기 위해 여러가지 표준을 사용할 수 있을지라도, 클라이언트가 페이지(118)와 관련된 디스플레이를 하는 한 사실상 유지된다.
도 2는 라이브 오브젝트의 특성을 업데이트하기 위한 서버(112), 정보 공급자(108)/동적 콘텐트 공급자(116)(일반적으로 "입력 소스(210)"으로 언급됨), 클라이언트(114), 및 라우팅 네트워크 사이의 상호작용을 도시한 상호작용 다이어그램이다. 초기에는, 클라이언트(114)는 서버(112)로 웹 페이지 요청(212)을 송신한다. 응답으로, 서버(112)는 하나 이상의 라이브 오브젝트를 포함하거나 아니면 식별하는 웹 페이지(214)를 클라이언트(114)에게 공급한다. 웹 페이지에 인코딩된 명령은 양호하게는 클라이언트(114)가 라우팅 네트워크(110)로부터 명확하게 활성 모듈(124)을 요청(216)하게 한다. 응답으로, 라우팅 네트워크(110)는 활성 모듈(124)을 송신한다(218). 클라이언트(114)는 활성 모듈(124)을 실행(220)하며, 활성 모 듈(124)은 클라이언트에서 라이브 오브젝트의 오브젝트 ID들을 식별하고 라우팅 네트워크(110)로 오브젝트 ID들을 등록(222)한다. 라우팅 네트워크(110)는 클라이언트(114)가 등록한 오브젝트 ID들을 식별하도록 라우팅 네트워크의 레지스트리를 업데이트(223)한다.
일부 포인트에서, 입력 소스(210)는 클라이언트(114)에서 라이브 오브젝트의 특성을 변경하기 위해 업데이트 메시지를 라우팅 네트워크(110)로 송신(224)한다. 한 실시예에서, 입력 소스(210)로부터 라우팅 네트워크(110)로의 메시지는 단지 단일 오브젝트 ID 및 식별된 오브젝트의 특성에 대한 업데이트만을 포함한다. 다른 실시예에서, 메시지는 다수의 오브젝트 ID들과 대응하는 특성 업데이트들을 포함한다. 이 후자의 실시예에서, 상기 메시지는 다수의 오브젝트 ID들 및 업데이트들을 가짐으로써 메시지를 식별하는 "배치(Batch) ID"와 관련될 수 있다. 양호하게는, 정보 공급자(108)는 오브젝트 ID를 포함하는 방식과 같이 페이지(118)의 배치 ID를 포함할 수 있다. 마찬가지로, 클라이언트(114)는 양호하게는 오브젝트 ID와 같은 방식으로 라우팅 네트워크(110)로 배치 ID에 대해 등록할 수 있다. 사실, 배치 ID는 클라이언트(114)가 하나의 ID 등록에 의해 배치 및 비(non)-배치 메시지 모두에 대해 등록하기 위해 오브젝트 ID로서 동일할 수 있다. 대안적으로, 분리된 절차는 배치 메시지들을 등록하기 위해 설정될 수 있다. 클라이언트(114)는 양호하게는 마치 개별 메시지가 분리되어 전달된 것과 같이 배치의 구성요소 메시지들을 처리한다.
라우팅 네트워크(110)는, 이번에는 양호하게는 IP 주소등과 같은 표준 인터 넷 통신 프로토콜을 이용하여 특정된 오브젝트 ID에 대해 등록한 각각의 클라이언트(114)에게 메시지를 라우팅(226)한다. 클라이언트(114)에서 활성 모듈(124)은 상기 메시지를 처리하고 식별된 라이브 오브젝트의 특성을 업데이트(228)한다. 동일한 오브젝트 ID를 갖는 라이브 오브젝트는 클라이언트(114)에서 여러 다중적 위치에서 나타나며(예를 들면, 웹 페이지상의 다중 위치들에서 클라이언트에 디스플레이된다), 활성 모듈(124)은 양호하게는 특정된 ID를 갖는 개별 라이브 오브젝트를 허용한다. 결과적으로, 라우팅 네트워크(110)는 라이브 오브젝트가 클라이언트(114)에서 동적으로 업데이트되는 것을 허용한다. 양호하게는, 이 라우팅과 업데이트는 입력 소스(210)의 목적을 위해 "실시간"으로 고려되기에 충분하게 빨리 일어난다.
도 2에서 박스 선(230)으로 표시된 이 업데이트 처리는 일정하지 않은 횟수로 반복할 수 있고 정보 공급자(210) 및 클라이언트(114)에게 충분히 비동기된다. 예를 들면, 입력 소스(210)는 규칙적인 스포츠 이벤트의 점수 또는 주식 가격 변동과 같은 업데이트 메시지를 라우팅 네트워크(110)로 송신하지만, 한번 스포츠 이벤트가 종료되거나 또는 주식 시장을 마감하면 업데이트 메시지를 송신하는 것을 중지할 수 있다. 클라이언트(114)가 라이브 오브젝트를 포함하는 웹 페이지의 디스플레이를 종료하거나 그렇지 않으면 더 이상 업데이트 메시지를 수신하는 것을 원하지 않으면, 클라이언트는 양호하게는 라우팅 네트워크(110)로 상기 연결을 종료(232)한다. 라우팅 네트워크(110)는 이번에는, 클라이언트의 오브젝트 등록을 제거하도록 레지스트리(125)를 업데이트한다(234). 다른 실시예에서, 클라이언트(114)는 하나 이상의 오브젝트로부터 상기 클라이언트를 선택적으로 등록 및/또는 등록하지 않는 라우팅 네트워크(110)로 메시지들을 송신하지만, 다른 오브젝트들과 관계하는 업데이트 메시지들을 수신하기 위해 연결 개방을 유지한다.
도 3은 라우팅 네트워크(110)에 의해 수행되는 다-대-다 맵핑을 시각적으로 나타내는 고-레벨의 다이어그램이다. 다중 입력 소스(210 a내지 210c로 명칭됨)들은 라우팅 네트워크(110)로 업데이트 메시지들을 송신한다. 개별 업데이트 메시지는 양호하게는 적어도 하나의 오브젝트 ID 및 식별된 오브젝트의 특성의 업데이트를 특정한다. 라우팅 네트워크(110)는 이번에는, 주어진 입력 소스(210)로부터 주어진 오브젝트 ID를 등록한 클라이언트(114)에게 업데이트 메시지들을 선택적으로 라우팅한다. 도 3에서, 예를 들면 다른 클라이언트들이 오브젝트 ID를 등록하지 않은 동안 클라이언트(312a, 312b)가 주어진 오브젝트 ID를 등록했다고 가정하자. 이에 따라, 라우팅 네트워크(110)는 업데이트 메시지를 클라이언트(312a, 312b)에게 라우팅하지만, 클라이언트(312c 내지 312h)에게 메시지를 라우팅하지 않는다.
도 4는 동적 콘텐트 라우팅 네트워크(110)의 가능성의 예를 도시한다. 도 4는 스포츠 점수를 포함하는 두개의 다른 웹 페이지(410, 412)를 도시한다. 상기 웹 페이지들이 다른 형태일지라도, 각각의 페이지는 두 프로 풋볼 게임 및 두 프로 야구 게임의 동일한 점수를 포함한다. 웹 페이지(412)가 "야구 점수"라는 제목 아래에 야구 게임을 포함하고 "풋볼 점수"라는 제목 아래에 풋볼 게임을 포함하는 동안 웹 페이지(410)는 "지역 스포츠 점수"라는 제목 아래에 4게임 모두의 점수를 포함한다.
라이브 오브젝트를 사용하여 웹 페이지에서 게임들 및 점수들을 내부적으로 표현하는 다양한 방법이 있다. 한 실시예에서, "게임" 오브젝트는 각각의 팀과 관련된 게임 및 점수가 수반되는 두 팀에 대한 특성을 갖는 것으로 정의된다. 상기 게임 오브젝트는 웹 페이지에서 선택된 위치에 위치하며 상기 오브젝트의 특성들은 게임에 대해 페이지상에 디스플레이되도록 정보를 일으킨다. 다른 실시예에서, "팀" 및 "점수" 오브젝트는 팀의 이름을 정의하는 특성을 갖는 팀 오브젝트와 점수를 정의하는 특성을 갖는 점수 오브젝트로 정의된다. 이 두번째 실시예에서, 상기 팀 및 점수 오브젝트는 상기 페이지 상에 선택된 위치에 위치되므로 적절한 팀 및 점수는 페이지가 표현될 때 정렬된다. 또 다른 실시예에서, 오브젝트는 팀 및 상기 팀과 관련된 점수의 이름에 대한 특성을 갖는 것으로 정의된다. 그 후에, 오브젝트의 쌍은 게임들 및 점수들을 나타내도록 적절한 정렬안에서 페이지내에 위치한다. 다른 실시예에서, 오브젝트는 두 팀의 이름을 특정하는 특성을 갖는 것으로 정의되며 분리된 오브젝트는 두 점수를 특정하는 특성을 갖는 것으로 정의된다. 이 마지막 실시예에서, 두 오브젝트는 페이지 내에 위치하며 따라서 상기 팀들의 이름들은 관련된 점수와 정렬된다. 명백하게, 이 표현들의 부가적 변화들은 가능하다.
도 4의 예시에 대하여 게임내의 팀들의 이름들이 두 팀에 대한 특성들을 갖는 "이름" 오브젝트에 의해 특정되고 게임내의 점수는 두 점수에 대한 특성을 갖는 "점수" 오브젝트에 의해 특정된다고 가정하자. 웹 페이지(410)에서, "SF 49ers 및 STL Rams"를 식별하도록 설정된 특성을 갖는 이름 오브젝트(414)는 "지역 스포츠 점수" 제목아래에 직접 위치한다. "42"에서 "7"로써 게임의 점수를 식별하도록 설 정된 특성을 갖는 점수 오브젝트(416)는 이름 오브젝트(414)의 오른쪽에 직접 위치한다. 웹 페이지(412)에서, 두번째 이름 오브젝트(418)의 특성은 "SF" 및 "STL"이라는 약간 다른 용어를 사용하여 식별한다. 그러나 이 이름 오브젝트(418)는 웹 페이지(410)내에 이용되는 동일한 점수 오브젝트(416)로 정렬된다.
그래서, 동일한 점수 오브젝트(416)는 각각의 웹 페이지(410, 412)의 다른 위치에서 이용된다. 양쪽 웹 페이지상에 "San Francisco 49ers vs. St. Louis Rams" 풋볼 게임의 점수를 업데이트하기 위해, 입력 소스(210)는 업데이트 메시지를 점수 오브젝트(416) 및 점수 특성의 업데이트에 대한 오브젝트 ID를 특정하는 라우팅 네트워크(110)로 단순히 송신한다. 라우팅 네트워크(110)는 업데이트 메시지를 적절한 클라이언트(114)에게 라우팅하고, 클라이언트는 특정 페이지 레이아웃과 관계없이 적절한 점수를 업데이트 한다.
입력 소스(210), 즉 정보 공급자(108) 및/또는 동적 콘텐트 공급자(116)는 업데이트 메시지들을 생성하도록 다양한 도구들을 사용할 수 있다. 도 5는 업데이트 메시지를 생성하기 위해 입력 소스(210) 및 이용 가능한 도구들을 도시한 블록 다이어그램이다. 그외의 도구들은 본원에 설명된 것에 부가하여 또는 대신하여 이용될 수 있다.
양호하게는, 상기 도구들은 입력 소스(210)가 메시지를 받아들이는 라우팅 네트워크(110)에 의해 공급되는 애플리케이션 프로그래밍 인터페이스(API)에 접속하도록 허용한다. 한 실시예에서, 입력 소스(210)에 의해 송신된 메시지들은 클라이언트(114)에서 활성 모듈(124)에 의해 이용되는 것과 같은 동일한 형식이다. 대 안적인 실시예에서, 라우팅 네트워크(110)로 공급되는 메시지들은 다른 형식이고 라우팅 네트워크는 활성 모듈(124)에 의해 이용되는 형식으로 상기 메시지들을 해석한다.
한 실시예에서, 입력 소스(210)는 API에 접속하도록 데이터 펌프 모듈(510)을 이용한다. 데이터 펌프 모듈(510)은 하나 이상의 오브젝트 ID 및 규칙적인 인터벌에서 식별된 오브젝트에 대한 새로운 값을 포함하는 확장가능한 마크업 언어(extensible markup language; XML) 파일을 읽으며, 오브젝트 특성에 대한 변화를 표현하는 메시지들을 라우팅 네트워크(110)로 송신하는 API 호출을 자동적으로 생성한다. 다른 실시예에서, 데이터 펌프 모듈(510)은 이벤트에 의해 구동되고 파일에서의 변경 또는 일부 다른 사건의 응답으로 XML 파일을 읽는다.
다른 실시예에서, 입력 소스(210)는 API에 접속하도록 디렉터 콘솔 모듈(512)을 이용한다. 양호하게는, 디렉터 콘솔 모듈(512)은 페이지(118)의 콘텐트를 디스플레이하는 그래픽 인터페이스를 관리자에게 보낸다. 예를 들면, 관리자는 문자적 데이터, 이미지들, 및/또는 웹 페이지상의 임의의 오브젝트들 또는 오브젝트의 특성들을 수정하도록 디렉터 콘솔(512)을 사용할 수 있다. 수정한 후에, 관리자는 디렉터 콘솔 모듈(512)이 API를 경유하여 라우팅 네트워크(110)로 변경된 오브젝트 및 특성들을 송신하도록 "송신 업데이트" 버튼 또는 유사한 기술을 사용한다.
다른 실시예에서, 정보 공급자(108) 및 동적 콘텐트 공급자(116)는 입력 소스(210)로서, API에 접속하도록 콘텐트 관리 시스템 모듈(514)을 사용하여 함께 동작한다. 양호하게는, 콘텐트 관리 시스템 모듈(514)은 정보 공급자(108)에 존재하고 동적 콘텐트 공급자(116)로부터 오브젝트 특성 업데이트들을 수신한다. 콘텐트 관리 시스템 모듈(514)은 양호하게는 서버(112)에 저장된 페이지(118)내의 라이브 오브젝트의 특성을 업데이트하고 또한 라우팅 네트워크(110)로 변경된 특성에 대한 메시지들을 송신한다. 이러한 방식으로, 서버(112)에서의 페이지(118) 및 클라이언트(114)에서 디스플레이되는 웹 페이지는 거의 동시에 업데이트된다. 한 실시예에서, 동적 콘텐트 공급자(116)는 정보 공급자(108) 대신에 라우팅 네트워크(110)로 메시지들을 송신한다. 시스템(100)의 실시예들은 또한 본원에 설명된 콘텐트 관리 기술들의 임의의 조합을 이용할 수 있다.
예를 들면, 상기 설명된 도구들은 점수 오브젝트에 의해 "2"로 디스플레이되는 문자를 업데이트하기 위한 후술하는 코드를 갖는 메시지를 생성할 수 있다.
라이브오브젝트 점수=새로운 라이브오브젝트("Bang$홈점수ID");
점수.특성설정("내부텍스트", "2").
이 코드는 오브젝트 ID "Bang$홈점수ID"를 갖는 오브젝트의 내부텍스트 특성을 "2"로 설정한다. 상기 도구는 라우팅 네트워크(110)로 이 메시지를 전달하도록 API를 사용한다.
이제 클라이언트(114)에서 수행되는 작업으로 돌아와서, 도 6은 활성 모듈(124)의 실시예에 의하여 수행된 단계들을 도시한 플로우 차트이다. 당업자들은 여러 실시예들이 여러 순서로 도 6의 단계들을 수행할 수 있다고 인식할 것이다. 활성 모듈(124)은 일반적으로 3가지 기능을 수행한다. 이는 라우팅 네트워크(110)로 오브젝트 ID를 등록하는 기능, 라이브 오브젝트의 특성을 업데이트하기 위해 네트워크로부터 클라이언트(114)에 의해 수신된 메시지를 다루는 기능, 및 상기 클라이언트와 상기 네트워크사이의 통신을 제어하는 기능이다.
오브젝트 ID들을 등록하기 위해, 활성 모듈(124)은 양호하게는 서버(112)로부터 수신된 페이지(118)를 분석하고(610), 라이브 오브젝트의 오브젝트 ID를 식별한다. 대안적인 실시예에서, 활성 모듈(124)은 현재 웹 브라우저(120)에 의해 디스플레이되고 있는 라이브 오브젝트만의 ID와 같은 오브젝트 ID의 부분집합만을 식별한다. 대안적으로, 오브젝트 ID의 목록은 오브젝트 자체에 부가하여 웹 페이지에 미리 인코딩될 수 있고, 그래서 활성 모듈(124)에 의해 쉽게 식별이 가능할 수 있다. 또 다른 실시예에서, 클라이언트(114)의 사용자는 오브젝트 ID가 등록하는 것을 선택한다.
활성 모듈(124)은 양호하게는 클라이언트(114)와 라우팅 네트워크(110)사이에 연결을 개방한다(612). 활성 모듈(124)은 활성 모듈이 페이지(118)를 수신하고, 및/또는 분석하기 전 또는 후에 이 연결을 개방(612)할 수 있다. 일부 경우에서, 클라이언트(114)는 클라이언트가 만들 수 있는 연결 요청의 형태상의 제한을 두는 방화벽 뒤에 위치한다. 방화벽은 예를 들면 모든 HTTP가 아닌 트래픽을 막을 수 있다. 이러한 이유로, 활성 모듈(124)은 양호하게는 방화벽을 통해 라우팅 네트워크911)로 요청을 얻기 위해 HTTP 헤더내의 연결 요청을 감싼다.
활성 모듈(124)은 식별된 오브젝트 ID를 포함하는 벡터(예를 들면, 목록 또는 배열)를 라우팅 네트워크(116)로 통신하는 것에 의해 오브젝트 ID를 등록(614) 하도록 클라이언트(114)와 라우팅 네트워크(110)사이의 연결을 사용한다. 방화벽을 통해 이 일을 성취하기 위해, 활성 모듈(124)은 양호하게는 "오브젝트 데이터"로 언급되는 문자열 내에 상기 벡터를 두며, 그 후에 양호하게는 라우팅 네트워크(110)로 상기 오브젝트 데이터를 통신하도록 HTTP 메시지를 생성한다. 개략적인 예시는 다음과 같다.
POST/HTTP/1.1\r\n
Content-Length:<length of object data>\r\n
\r\n
<object data>
여기서 <object data>는 오브젝트 ID 목록이다. 라우팅 네트워크(110)가 HTTP 요청을 수신할 때, 클라이언트(114)가 식별된 오브젝트를 등록한 것을 나타내도록 오브젝트 데이터를 추출하고 레지스트리(125)를 업데이트한다.
웹 브라우저(120)가 새로운 페이지를 로드(616)하면, 또는 아니면 초기 페이지상의 오브젝트의 디스플레이를 종료하면, 초기 웹 페이지와 관련된 활성 모듈(124)은 양호하게는 라우팅 네트워크(110)로 클라이언트의 연결을 종료한다(618). 당업자들은 이 종료(618)가 도 6에 도시된 다른 단계들과 비동기적으로 발생할 수 있다는 것을 인식할 수 있다. 그래서, 단계(616, 618)의 위치는 종료가 일어날 수 있는 단계의 시퀀스(sequence)에서 단지 하나의 가능한 위치를 나타낸다.
연결이 종료되지 않으면, 활성 모듈(124)은 양호하게는 오브젝트 ID 및 식별된 오브젝트의 특성의 업데이트를 특정하는 라우팅 네트워크(110)로부터 메시지를 수신(618)할 때까지 기다린다. 한 실시예에서, 이 메시지는 HTTP 데이터로서 수신된다. 상기 메시지의 수령이 있으면, 활성 모듈(124)은 양호하게는 상기 HTTP 데이터로부터 오브젝트 ID 및 업데이트를 추출한다(620). 그 후에, 활성 모듈(124)은 상기 메시지에 의해 특정된 것과 같이 식별된 오브젝트의 특성을 업데이트(622)하거나 상기 오브젝트가 업데이트가 일어나도록 한다.
수신하는 메시지(618), 추출하는 데이터(620), 및 업데이트하는 오브젝트(622)의 시퀀스는 양호하게는 새로운 페이지가 로드(616)되거나 그렇지 않고 라우팅 네트워크(110)와의 연결이 종료될 때까지 반복된다. 도 6에 표시되지 않았을지라도, 페이지(118)에 관한 사용자 행동이 새로운 라이브 오브젝트를 활성화 할 때와 같은 특정 환경에서, 활성 모듈(124)은 새로운 페이지를 먼저 다운로드하거나 분석하지 않고 라우팅 네트워크(110)로 새로운 오브젝트 ID를 등록할 수 있다. 한 실시예에서, 새롭게 로드된 페이지가 라이브 오브젝트를 포함하면, 도 6에 의해 설명된 바와 같이 활성 모듈(124)을 다운로드하고 상기 오브젝트를 업데이트하는 처리는 반복된다. 대안적인 실시예에서, 활성 모듈(124)은 클라이언트(114)에 활성으로 유지되고, 따라서 상기 클라이언트는 라우팅 네트워크(110)로부터 활성 모듈을 다시 다운로드하지 않는다. 대신에, 이미 주어진 활성 모듈(124)은 새로운 웹 페이지상에서 라이브를 가능케하는 처리를 수행한다.
도 7은 본 발명의 실시예에 따라 라우팅 네트워크(110)의 저-레벨 관점에서 도시한 블록 다이어그램이다. 당업자들은 라우팅 네트워크(110)의 기능성을 구현하 는 많은 대안적인 방법들이 있다는 것을 인식할 수 있다. 도 7은 정보 공급자(710a) 및 동적 콘텐트 공급자(710b)와 같은 라우팅 네트워크(110)로 메시지들을 공급하는 소스들을 표현하는 다중 입력 소스들(710a 내지 710d로 명칭됨)을 도시한다. 도 7은 또한 임의의 주어진 순간에서 라우팅 네트워크(110)와 통신하는 많은 클라이언트를 표현하는 다중 클라이언트(712a 내지 712f로 명칭됨)를 도시한다.
내부적으로, 라우팅 네트워크(110)는 양호하게는 하나 이상의 클러스터들로 나누어진다. 도 7에서, 다수의 클러스터들이 네트워크의 필요를 처리하는 것에 의존하여 변경할 수 있을지라도, 라우팅 네트워크(110)는 3개의 클러스터(714a, 714b, 714c)를 갖는다. 입력측 광역 로드 분산기(716)는 양호하게는 입력 소스(710)로부터 메시지들을 클러스터(714)로 라우팅한다. 유사하게, 클라이언트측 광역 로드 분산기(718)는 양호하게는 클라이언트(712)로부터 클러스터(714)로 연결 요청을 라우팅한다. 로드 분산기(716, 718)는 로드가 미리 결정된 발견적 방법에 따라 클러스터(714)중에서 분배되는 것을 보장하도록 디자인된다. 예를 들면, 상기 로드는 클러스터(714)중에서 동일하게 분배될 수 있거나 또는 더욱 강력한 클러스터는 다수의 로드에 분배될 수 있다. 한 실시예에서, 하나의 로드 분산기는 입력측(716) 및 클라이언트측(718) 로드 분산기의 기능을 수행하며 로드 균형 유지에 기초한 종래의 도메인 이름 시스템(Domain Name System; DNS)을 이용한다.
클러스터(714a)가 대표적인 각각의 클러스터(714)는 양호하게는 입력측 클러스터 로드 분산기(720a) 및 클라이언트측 클러스터 로드 분산기(722a)를 포함한다. 상기 클러스터 로드 분산기들(720a, 722a)은 입력측 클러스터 로드 분산기(720a)가 균형을 유지하고 하나 이상의 게이트웨이(724a) 중에서 착신 메시지를 라우팅하고, 클라이언트측 클러스터 로드 분산기(722a)가 균형을 유지하고 하나이상의 노드(726a) 및 애플리케이션 서버(728a)중에서 착신 연결 요청을 라우팅하는 것에서 광역 로드 분산기(716, 718)에 대응하도록 유사하게 작용한다.
한 실시예에서, 두 클라이언트측 클러스터 로드 분산기(720a, 722a)의 기능성은 하나의 구성요소에 의해 공급된다. 이 단일 구성요소 로드 분산기는 초기에 착신 요청이 게이트웨이(724a)에 메시지를 송신하도록 찾는 입력 소스(710)로부터인지, 노드(726a)로의 연결을 찾는 클라이언트(712)로부터인지, 또는 애플리케이션 서버(728a)로의 연결을 찾는 클라이언트로부터인지 결정한다. 그 후에, 로드 분산기는 클러스터(714)내의 게이트웨이(724a), 노드(726a), 및 애플리케이션 서버(728a)중에서 메시지/연결 요청을 라우팅한다. 한 실시예에서, 단일구성요소 로드 분산기는 7 계층 로드 균형(즉, 애플리케이션 계층에서의 로드 균형)을 공급한다. 양호하게는, 노드(726a) 및 애플리케이션 서버(728a)에 대한 로드 균형은 보안의 이유로 대부분의 클라이언트 웹 브라우저가 애플리케이션(예를 들면, 활성 모듈(124))을 애플리케이션이 다운로드되는 곳으로부터 상기 위치로 명시적으로 연결하는 것만을 허용하기 때문에 동일한 구성요소에 의해 수행된다.
라우팅 네트워크(110)의 대안적인 실시예들은 광역(716, 718) 및 클러스터(720a, 722a) 로드 분산기들 및/또는 클러스터(714) 내의 또는 외부의 다른 구성요소로 로드 분산기들의 통합된 기능성을 결합한다. 게다가, 대안적인 실시예들은 하나 이상의 이 로드 분산기를 생략할 수 있다. 예를 들면, 여러개의 클러스터 들(714)을 갖는 것은 여러 고객이 광역 로드 분산기(716, 718)에 대한 필요를 미연에 방지하는 편의를 준다.
클러스터(714)내의 게이트웨이(724a)는 입력 소스(710)로부터 메시지를 수신하고 적절한 노드 또는 노드들(726a)로 상기 메시지를 향하게 한다. 한 실시예에서, 개별 게이트웨이(724a)는 모든 클러스터(714)내의 모든 노드(726)에 지속적인 TCP 연결을 유지하고, 모든 메시지들을 모든 노드로 향하게 한다. 그러므로, 게이트웨이(724a)가 클러스터(714a)내부에 위치하고 클러스터의 입력측 로드 분산기(720a)를 경유하여 연결을 수신하더라도, 게이트웨이의 유효범위는 전체적인 라우팅 네트워크(110)에 걸쳐 있다. 이 넓은 유효범위는 메시지가 임의의 입력 소스로부터 임의의 클라이언트(712)로 도달하는 것을 허용한다.
라우팅 네트워크(110)의 대안적인 실시예에서, 개별적 게이트웨이(724)는 동일한 클러스터(714) 및 그외의 개별적인 클러스터들내에 적어도 하나의 연결에서 적어도 하나의 게이트웨이까지 모든 노드(426)들에 지속적인 TCP 연결을 유지한다. 이 실시예는 개별 게이트웨이(724)에 의해 유지되는 동시적 TCP 연결의 수를 감소시킨다. 다른 대안적인 실시예에서, 개별 클러스터(724)는 또한 다른 클러스터들의 게이트웨이(724)와 연결을 유지하는 게이트키퍼(gatekeeper; 도 7에 표시되지 않음)를 포함한다. 게이트웨이(724)는 메시지들을 게이트키퍼로 전송하고, 그후에 게이트키퍼는 다른 클러스터(714)의 게이트웨이로 상기 메시지들을 분배한다.
게이트웨이(724)는 입력 소스(710)로부터 메시지를 수신하는 비율을 제어하지 않기 때문에, 게이트웨이가 메시지들을 처리하는(즉, 메시지들을 노드로 송신하 는) 것보다 빠르게 메시지들을 수신할 수 있다. 그러므로, 개별 게이트웨이(724)는 양호하게는 수신되었지만 메시지 손실을 방지하기 위해 아직 처리되지 않은 메시지들의 대기열(730)을 유지한다. 한 실시예에서, 대기열(730)이 너무 길어지면 게이트웨이(724)는 메시지들을 떨어뜨린다. 다른 실시예에서, 게이트웨이(724)는 어느 메시지를 떨어뜨릴지 결정하도록 특정 메시지들 또는 입력 소스들이 지명되는 특성을 이용한다.
노드(726)는 양호하게는 게이트웨이(724)로부터 메시지들에 의해 식별된 오브젝트 ID에 등록한 클라이언트(712)에게 수신된 메시지들을 전송한다. 어느 클라이언트(712)도 메시지에 의해 특정되는 오브젝트 ID를 등록하지 않았다면, 상기 노드는 양호하게는 상기 메시지를 무시한다. 노드(726)는 양호하게는 상기 노드로 연결되는 클라이언트(712)에 의해 등록된 오브젝트 ID를 포함하는 해시 테이블(hash table; 732)로써 레지스트리(125)의 실체를 유지한다. 한 실시예에서, 해시 테이블(732)은 상기 오브젝트 ID를 등록한 개별 클라이언트(712)에 대한 하나의 엔트리를 포함하는 링크된 목록을 개별 오브젝트 ID와 결합한다. 링크된 목록내의 개별 엔트리는 양호하게는 클라이언트(712)에 대응하는 연결을 표현하는 소켓에 포인터를 포함한다. 종래 기술과 같이, 소켓에 대한 포인터는 일반적으로 "파일 설명어(file descriptor)"로 불리며, 상기 노드가 상기 메시지를 대응하는 클라이언트에게 송신하도록 쓰는 주소를 표현한다. 양호하게는, 클라이언트가 노드로부터 연결되지 않거나 그렇지 않으면 특정 오브젝트에 더 이상 관심을 갖지 않는 것을 나타내는 때에 클라이언트(712)가 오브젝트에 관심을 갖고 해시 테이블 및/또는 링크 된 목록으로부터 대응하는 엔트리를 삭제하는 매 시간에 노드(726)는 해시 테이블(732) 및/또는 링크된 목록을 부가한다.
본 발명의 대안적인 실시예는 해시 테이블(732) 및 링크된 목록에 부가하여/대신하여 다른 데이터 구조를 이용하고, 및/또는 데이터 구조내의 다른 데이터를 이용할 수 있다. 예를 들면, 라우팅 네트워크(110)의 한 실시예는 개별 클러스터(714)내의 노드들의 체계를 갖는다. 상기 체계의 다른 노드들은 특정 입력 소스(210)로부터 수신됨 메시지들을 다룰 수 있거나, 다른 클라이언트(712)에게 송신된 메시지들을 처리한다. 이 실시예에서, 상기 링크된 목록은 클라이언트(712)에게 인도하는 소켓에 대신하여 상기 체계의 낮은 노드를 가리킬 수 있다. 다른 실시예들은 노드 체계가 없지만, 특정 노드들을 특정 입력 소스(210) 또는 클라이언트(712)에 할당한다.
개별 노드(714)안의 애플리케이션 서버(728)는 양호하게는 클라이언트 요청에 대한 응답으로 활성 모듈(124)을 클라이언트(712)에 제공한다. 게다가, 애플리케이션 서버(728)는 환경(100)을 지원하도록 요구될 수 있거나 희망될 수 있는 임의의 다른 모듈을 공급한다. 상기 라우팅 네트워크의 대안적인 실시예에서, 단일 애플리케이션 서버(728)는 모든 클라이언트 요청을 수행한다. 이 애플리케이션 서버(728)는 특정 클러스터(714) 또는 독립된 클러스터들내에 있을 수 있다. 그러나, 이 단일-애플리케이션-서버 실시예는 중복성이 부족하기 때문에 덜 바람직하다.
양호하게는, 라우팅 네트워크(110)는 리눅스 운용 시스템(OS)을 실행하는 종래의 단일-프로세서 컴퓨터 시스템을 이용한다. 양호하게는, 라우팅 네트워크(110) 의 개별 구성요소는 구성요소의 개별적인 최적화를 가능케 하기 위해 개별적 전용 컴퓨터 시스템에 의해 구현된다. 상기 OS의 입력/출력(I/O) 기능성은 양호하게는 캘리포니아의 캘리포니아 버클리 대학으로부터 이용할 수 있는 NBIO와 같은 비-블로킹 OS 패키지의 사용을 통해 향상된다. 노드(728)와의 연결이 오래 지속된다는 가정에 기초하여, 상기 OS는 양호하게는 유휴(idle) 연결을 감시하기 위해서 리소스를 할당하지 않도록 구성된다. 대신에, 잘 알려진 /dev/poll 임시접속은 양호하게는 상기 OS에 향상된 소켓 폴링(polling) 능력을 공급하도록 적용된다.
또한, OS의 TCP/IP 스택은 양호하게는 빠르게 메시지들을 출력하도록 최적화된다. 한 실시예에서, 상기 스택내의 재전송 타이머는 200ms에서 50ms까지 감소된다. 이 타이머는 송신된 패킷이 수신된 것을 통지(ack)하는 것을 얼마나 기다릴 지 결정한다. 리눅스 커널이 상기 재전송 타이머를 구현하는 방식 때문에, 상기 커널은 초기 재전송 타이머가 만기될 때까지 계류중인 외부로 가는 패킷들을(심지어 통지가 도착했어도) 송신하지 않을 것이다. 재전송 값을 줄이는 것은 이 지연 효과를 최소로 한다. 통지가 재전송 타이머가 만기되기 전에 수신되지 않으면, 본 발명의 실시예는 영향받는 TCP 연결 및 통지되지 않은 패킷이 재전송되기 위해 재전송 값을 증가시킨다. 게다가, TCP/IP 스택은 양호하게는 작은 수의 메시지들을 보다 큰 메시지로 연결하여, 라우팅 네트워크(110)에 의해 송신된 패킷의 수를 감소기키도록 내이글의 알고리즘(Nagle's algorithm) 기능성을 이용한다.
도 8은 입력 소스로부터 게이트웨이(724)를 경유하여 수신된 메시지의 오브젝트-기반의 라우팅을 수행하도록 클러스터(714)내의 노드(726)에 의하여 수행된 단계들을 도시한 플로우 차트이다. 초기에, 노드(726)는 입력 소스(710)로부터 메시지를 수신한다(810). 노드(726)는 상기 메시지로부터 오브젝트 ID를 추출한다. 게다가, 노드(726)는 선택적으로 클라이언트(712)에 메시지를 입력 소스(710)에 의해 이용되는 형식으로부터 활성 모듈(124)에 의해 이용되는 형식으로 전환하는 변환을 한다. 상기 설명한 바와 같이, 한 실시예에서 입력 소스(710)에 의해 이용되는 메시지 형식은 활성 모듈(124)에 의해 이용되는 메시지 형식과 동일하다. 그러므로 이 실시예에서, 노드(726)는 상기 메시지를 변환할 필요가 없다. 입력 소스(710) 및 활성 모듈(124)이 여러 메시지 형식을 이용하는 대안적인 실시예에서, 노드(726)는 양호하게는 상기 메시지를 변환한다. 노드(726)는 상기 메시지에 의해 참조된 오브젝트에 등록한 클라이언트(712)의 링크된 목록을 결정하도록 추출된 오브젝트 및 정보 공급자 ID에 대응하는 해시 테이블 엔트리를 찾는다(816). 마지막으로, 노드(726)는 등록된 클라이언트(712) 각각에게 상기 메시지를 전송한다(818). 대안적인 실시예에서, 노드(726)는 해시 테이블내의 등록된 클라이언트를 찾은 후에, 반대로 찾기 전에, 상기 메시지를 변환한다. 이 후자의 스테이지에서 상기 메시지를 변환하는 것은 노드(726)가 등록된 클라이언트(712)의 특정 요구에 따라 상기 메시지를 변환하는 것을 가능케 한다.
동적 콘텐트 라우팅 네트워크를 사용하여 개인화된 콘텐트 전달
도 9는 한 실시예에 따라 웹 페이지(118)의 예시를 묘사한 도면이다. 한 실시예에서, 페이지(118)는 웹 페이지일 수 있다. 다른 실시예에서, 페이지(118)는 워드 프로세싱 문서, 스프레드시트, 및 이메일등과 같은 소프트웨어 애플리케이션에 의해 생성되는 임의의 페이지 일 수 있다. 표시된 바와 같이, 페이지(118)는 시장 데이터 섹션(902-1), 뉴스 헤드라인 섹션(902-2), 최근의 거래 섹션(902-3), 및 계좌 잔액 섹션(902-4)과 같은 복수의 섹션들(902)을 포함한다. 이러한 섹션들이 표시되었을지라도, 임의의 개수의 섹션들이 페이지(118)에 공급될 수 있다는 것은 이해될 수 있다.
한 실시예에서, 페이지(118)는 웹-기반 애플리케이션에 의해 공급된다. 라우팅 네트워크(110)는 많은 수의 클라이언트(114)에게 주식 및 채권에 대한 구매 가격을 전달하는데 사용될 수 있다. 개별 클라이언트의 페이지(118)는 동일한 섹션(902)을 포함할 수 있으나, 특정 섹션(902)에 대한 정보는 개별 사용자에 대해 개인화된다(예를 들면, 다르다). 예를 들면, 시장 데이터 섹션(902-1)은 모든 사용자에게 동일할 수 있다. 그러나, 최근의 거래 섹션(902-3) 및 계좌 잔액 섹션(902-4)은 개별 사용자에 대해 개인화된다. 예를 들면, 특정 사용자 및 그들의 계좌 잔액에 의해 만들어진 최근의 거래는 사용자에게 개인적일 수 있으며, 상기 특정 사용자에게만 송신될 수 있다. 따라서, 개인화된 정보는 사용자에게 특정한 임의의 정보일 수 있다. 여러 사용자들이 실질적으로 동일할 수 있는 개인화된 정보를 가질 수 있다는 것은 이해되어야 한다. 그러나, 개별 사용자에 대한 개인화된 정보는 개별 사용자에게 특정된다.
한 실시예에서, 주어진 사용자에 대하여 거래가 종료되면, 그/그녀의 페이지(118)만 업데이트되어야 한다(예를 들면, 최근의 거래 섹션(902-3)에서). 따라서, 개인화된 정보는 상기 사용자에게만 송신되어야 한다.
한 실시예에서, 섹션(102)에 대한 여러 콘텐트는 여러 입력 소스(210)에 의 해 전달될 수 있다. 예를 들면, 입력 소스(210)는 뉴스 헤드라인 섹션(902-2)에 대한 콘텐트를 공급할 수 있고 다른 입력 소스(210)는 시장 데이터 섹션(902-1)에 대한 콘텐트를 공급할 수 있다. 게다가, 실시간 데이터는 다중 입력 소스(210)에 의해 공급될 수 있다. 입력 소스(210)는 라우팅 네트워크(110) 및 클라이언트(114)로부터 또는 다른 실시예에서 라우팅 네트워크의 일부로부터 원격으로 위치될 수 있다.
페이지(118)에 송신되는 실시간 정보는 라우팅 네트워크(110)를 사용하여 전달된다. 한 실시예에서, 개별 주식(904)은 ID에 할당될 수 있고, 메시지들은 ID가 모든 사용자에게 전달될 수 있는 곳에 발표될 수 있다. 라이브 오브젝트는 그 후에 업데이트된다. 라이브 오브젝트는 업데이트될 수 있는 임의의 데이터이다. 예를 들면, 라이브 오브젝트는 페이지(118)의 구성요소를 디스플레이하는 것, 구성요소가 페이지(118)상에 디스플레이되는 것 등에 대한 소프트웨어 코드와 같이 페이지(118)에 대한 데이터 표현에 포함되는 임의의 데이터일 수 있다. 일반적인 정보에 부가하여, 개인화된 정보는 최근의 거래 섹션(902-3) 및 계좌 잔액 섹션(902-4)으로 전달될 수 있다. 또한, 일반적이고 개인적인 정보의 조합은 섹션에 전달될 수 있다. 예를 들면, 일반적이고 개인적인 정보는 뉴스 헤드라인 섹션(902-2)으로 전달될 수 있다.
한 실시예에서, 개인화된 메시지를 사용자들에게 전달하기 위해, 라우팅 네트워크(110)의 배칭(batching) 능력은 사용될 수 있다. 이 실시예에서, 개별 사용자는 개인화된 ID에 할당될 수 있다. 개인화된 ID는 사용자에게 고유하거나 특정될 수 있다. 후술할 바와 같이, 개인화된 ID는 단 하나의 사용자가 아닌 사용자들의 그룹에 특정될 수도 있다. 개인화된 ID는 개인들의 페이지(118)에 대한 데이터 표현내에서 어느 곳에나 넣을 수 있다(페이지(118)에 대한 소프트웨어 코드의 바디 태그내와 같이). 그 후에 데이터 표현내의 라이브 오브젝트는 일반적인 ID와 관련될 수 있다. 라이브 오브젝트는 페이지(118)에서 발견될 수 있고, 개인화된 정보는 상기 라이브 오브젝트에 대해 디스플레이될 수 있다. 일반적인 ID는 복수의 사용자에 대해 동일할 수 있다. 예를 들면, 웹에 기반한 거래 애플리케이션의 최근의 거래 섹션(902-3)은 ID "최근의거래ID"로 기록될 수 있다. 개인화된 정보는 개별 사용자에 대해 개별 페이지에 디스플레이될지라도, 이 ID는 모든 사용자들의 페이지(118)에 대해 동일하다.
한 실시예에서, 입력 소스(210)는 다음 형식 [개인화된ID, (일반화ID #1, "개인화된 정보 #1"), (일반화ID #2, "개인화된 정보 #2")]을 사용하여 배치 메시지를 공급한다. 개인화된ID는 사용자에게 개인화된 ID이다. 일반화ID #1 및 일반화ID #2는 다수의 사용자들에게 일반적으로 교차될 수 있다. 개인화된 정보#1 및 #2는 페이지를 업데이트하도록 사용될 수 있는 임의의 정보이다. 한 예시에서, 계좌 잔액에 대한 메시지는 다음 메시지 [개인화된ID, (계좌잔액ID, "잔액 정보"),...]를 사용하여 상기 배치 메시지에서 송신될 수 있다. 이 메시지는 상기 사용자에 대한 개인화된 정보로 사용자의 계좌의 계좌 잔액을 업데이트하도록 사용될 수 있다.
라우팅 네트워크(110)는 개인화된 ID에 대하여 등록된 사용자에게 배치 메시지를 전달한다. 배치 메시지가 상기 사용자와 관련된 클라이언트(114)에게 도착하면, 이는 마치 (일반화ID #1, "개인화된 정보#1") 및 (일반화ID #2, "개인화된 정 보#2") 메시지가 클라이언트(114)에게 송신된 것과 같이 취급될 수 있다. 개인화된 ID는 상기 메시지가 수신된 후에는 사용될 수 없을 것이다.
한 실시예에서, 클라이언트(114)의 브라우저는 페이지(118)에 대한 데이터 표현을 평가하고 일반화ID #1 및 일반화ID #2의 ID를 찾는다. 페이지(118)상의 라이브 오브젝트는 개인화된 정보 #1 및 #2로 업데이트될 수 있다. 정보 공급자는 사용자의 페이지(118)의 구조를 알거나 이해할 필요가 없다. 또한, 업데이트 메시지들은 임의의 DOM 정보를 포함하지 않을 것이기 때문에, 상기 메시지 자체는 단순하다. 예를 들면, 메시지 중에 하나가 (계좌잔액ID, "배치 정보")일 수 있다면, 상기 클라이언트의 브라우저는 상기 업데이트 메시지에 의해 특정된 것(즉, 업데이트 메시지의 "잔액 정보")과 같은 정보로 계좌 잔액 섹션 902-4를 업데이트할 수 있다.
그래서, 다중 사용자에 대한 개인화된 정보는 다중 사용자에 대한 페이지(118)상에 포함된 라이브 오브젝트를 업데이트하도록 사용될 수 있는 일반화 ID에 송신될 수 있다. 개인화된 ID는 상기 참조된 배치 메시지 기술을 사용하여 개인화된 정보를 사용자에게 송신하도록 사용될 수 있다. 라이브 오브젝트는 동일한 ID를 갖기 때문에, 입력 소스(210)는 라이브 오브젝트에 대하여 다중 개인화된 메시지를 동일한 일반화 ID에 전달할 수 있다. 이것은 사용될 수 있는 ID들의 수를 감소시킨다.
도 10은 한 실시예에 따라 라우팅 네트워크(110)를 사용하여 개인화된 메시지들을 전달하는 시스템(1000)이다. 시스템(1000)은 다수의 클라이언트(114), 라우팅 네트워크(110), 및 입력 소스(210)를 포함한다.
입력 소스(210)는 라우팅 네트워크(110)의 배칭 능력을 사용하여 개인화된 메시지를 송신하는 능력이 있다. 나타난 바와 같이, 3개의 배치 메시지들 메시지 #1, #2, 및 #3은 입력 소스(210)에 의해 송신될 수 있다. 메시지 #1, #2, 및 #3은 3개의 다른 개인화된ID, 개인화된 ID #1, 개인화된 ID #2, 개인화된 ID #3에 송신될 수 있다. 배치 메시지는 최근의 거래ID 및 계좌잔액ID의 일반화 ID를 사용하여 송신되는 메시지를 포함한다. 그러나 개인화된 정보는 여러 사용자들에 대해 최근의거래ID 및 계좌잔액ID의 ID에 대한 개별 메시지를 포함할 수 있다.
3개의 메시지들은 입력 소스(210)로부터 라우팅 네트워크(110)로 송신될 수 있다. 라우팅 네트워크(110)는 개인화된 ID를 등록한 클라이언트(114)를 결정한다. 나타난 바와 같이, 클라이언트(114-1)는 개인화된 ID #1을 등록하고, 클라이언트(114-2)는 개인화된 ID #2를 등록하고, 클라이언트(114-3)는 개인화된 ID #3을 등록한다. 따라서, 클라이언트(114-1) (또는 사용자)는 개인화된 ID #1을 등록했기 때문에 메시지 #1은 클라이언트(114-1)에 송신된다. 또한, 클라이언트(114-2, 114-3)들은 각각 대응하는 개인화된 ID #2 및 #3를 등록했기 때문에 메시지 #2 및 메시지 #3은 클라이언트(114-2) 및 클라이언트(114-3)에 송신된다. 그 후에 클라이언트(114-1, 114-2, 114-3)는 최근의거래ID 및 계좌잔액ID의 ID에 대하여 공급된 정보로 그들의 페이지(118)를 업데이트할 수 있다. 나타난 바와 같이, 클라이언트(114-1)는 개인화된 정보 #1 및 개인화된 잔액 정보 #1를 디스플레이하고, 클라이언트(114-2)는 개인화된 정보 #2 및 개인화된 잔액 정보 #2를 디스플레이하고, 클라이언트(114-3)는 개인화된 정보 #3 및 개인화된 잔액 정보 #3을 디스플레이한다.
따라서, 3개의 메시지들은 일반화 ID, 최근의거래ID에 대한정보로 송신된다. 그러나, 배치 메시지를 사용하여, 상기 메시지는 3개의 다른 클라이언트(114)에 송신될 수 있다. 그래서, 클라이언트(114)는 개인화 ID에 대한 개인화된 정보를 수신할 수 있다.
도 11은 한 실시예에 따라 배치 메시지를 생성하는 단순화된 플로우 차트(1100)를 도시한다. 단계(1102)에서, 입력 소스(210)는 사용자에 대한 개인화된 정보를 결정한다.
단계(1104)에서, 개인화된 정보에 대한 개인화된 ID 및 일반화 ID는 결정될 수 있다. 한 실시예에서, 입력 소스(210)는 사용자에게 개인화된 정보를 어디로 또는 어떻게 보낼지에 대해 알 필요가 없다. 대신에, 입력 소스(210)는 일반화 ID로 개인화된 정보와 결합할 수 있고 개인화된 ID로 송신될 수 있는 배치 메시지를 생성한다.
단계(1106)에서, 배치 메시지는 라우팅 네트워크(110)에 개인화된 ID로 송신될 수 있다. 상기 배치 메시지의 형식은 상기 설명된 또는 임의의 다른 형식으로 송신될 수 있다. 따라서, 입력 소스(210)는 배치 메시지를 개인화된 ID로 송신할 수 있다. 어떻게 또는 어디로 사용자에게 상기 메시지를 라우팅할지는 입력 소스(210)에 의해 결정될 필요가 없다. 대신에, 라우팅 네트워크(110)는 후술하는 바와 같이 배치 메시지를 라우팅할 수 있다.
도 12는 한 실시예에 따라 배치 메시지를 클라이언트(114)에게 라우팅하는 방법의 단순화된 플로우 차트(1200)를 도시한다. 단계(1202)에서, 배치 메시지는 입력 소스(210)로부터 수신될 수 있다. 단계(1204)에서, 클라이언트(114)는 배치 메시지에서 발견된 개인화된 ID를 등록할지 결정될 수 있다. 한 실시예에서, 클라이언트(114)는 라우팅 네트워크(110)로 활성 모듈(124)을 다운로드 할 수 있고, ID를 등록할 수 있다. 이 처리는 상기에 더 자세하게 설명된다. 배치 메시지가 개인화된 ID에 대하여 입력 소스(210)로부터 수신되면, 라우팅 네트워크(110)는 단계(1206)에서 개인화된 ID를 사용하여 배치 메시지를 클라이언트(114)에게 라우팅한다.
도 13은 한 실시예에 따라 배치 메시지를 클라이언트(114)에 처리하는 방법에 대한 단순화된 플로우 차트(1300)를 도시한다. 단계(1302)에서, 배치 메시지는 라우팅 네트워크(110)로부터 수신될 수 있다. 배치 메시지는 개인화된 ID로 향하게 될 수 있고 개인화된 ID와 관련된 참조에 따라 라우팅될 수 있다. 예를 들면, 개인화된 ID는 IP 주소와 결합될 수 있고, 상기 메시지는 IP 주소에 대응하는 클라이언트(114)에 수신될 수 있다.
단계(1304)에서, 배치 메시지내의 일반화 ID는 결정될 수 있다. 이 일반화 ID는 다중 사용자의 페이지(118)상에 발견될 수 있는 동일한 ID일 수 있다.
단계(1306)에서, 일반화 ID에 대한 개인화된 정보는 결정될 수 있다. 예를 들면, 개인화된 정보는 클라이언트(114)에 개인화된 정보일 수 있고, 특정될 수 있다.
단계(1308)에서, 라이브 오브젝트는 일반화 ID를 사용하여 개인화된 정보로 업데이트될 수 있다. 예를 들면, 클라이언트(114)는 일반화 ID와 관련될 수 있는 페이지(118)상의 라이브 오브젝트를 결정할 수 있다. 라이브 오브젝트의 특성은 개인화된 정보로 업데이트될 수 있다.
예를 들면, 도 9를 언급하여 라이브 오브젝트는 페이지(118)의 최근의 거래 섹션(902-3)에서 발견될 수 있다. 최근의거래ID는 페이지(118)에 대한 데이터 표현에 포함될 수 있다. 그래서 클라이언트(114)는 페이지(118)에 대한 데이터 표현내에서 최근의거래ID의 ID에 의해 참조되는 바와 같은 위치에 대응하는 개인화된 정보를 디스플레이한다. 따라서, 라우팅 네트워크(110) 또는 입력 소스(210)는 사용자의 페이지(118)의 구조 또는 DOM을 이해할 필요가 없다. 클라이언트(114)는 최근의거래ID에 대하여 개인화된 정보에 의해 특정된 바와 같이 최근의 거래 섹션(902-3)을 업데이트할 수 있을 것이다.
동일한 일반화 ID는 폭넓은 관객(예를 들면, 개인이 아닌)에 대해 의도될 수 있고 그외는 페이지(118)의 뉴스 헤드라인 섹션(902-2)과 같이 개인화 될 수 있다. 예를 들면, 입력 소스(210)는 다음 메시지 <뉴스헤드라인ID>, <"뉴스 헤드라인 정보">와 같은 일반화 ID를 사용하여 표준 헤드라인을 사용자에게 송신할 수 있고, [<개인화된ID>,(<뉴스헤드라인ID>,<"개인화된 뉴스 헤드라인 정보">)]와 같은 배치 메시지를 사용하여 개인화된 메시지를 송신할 수 있다. 제 1 메시지는 뉴스헤드라인ID의 ID를 동의하는 임의의 사용자에게 뉴스 헤드라인 정보를 송신할 수 있고, 제 2 메시지는 개인화된ID와 관련된 사용자에게 뉴스 헤드라인 정보를 송신할 수 있다. 따라서, 동일한 일반화 ID는 모든 사용자들에게 송신될 수 있는 표준 헤드라인을 송신하도록 사용될 수 있다. 일반화 ID는 또한 사용자에 대하여 개인화된 ID에 배치 메시지를 송신하는 것에 의해 개인화된 ID와 같이 사용될 수 있다. 개인화된 헤드라인은 개인화된 ID와 관련된 사용자에게 송신될 수 있다. 정보 공급자(210)는 일반화 ID에 대하여 표준 헤드라인 및 개인화된 헤드라인 사이에 교대로 스위칭 할 수 있다.
배치 메시지는 또한 반-개인화된 메시지들, 즉 개인들보다 그룹에 대한 메시지들은 송신되도록 사용될 수 있다. 개인 사용자가 그/그녀의 페이지(118)상의 어딘가에 개인화된 ID와 관련된 라이브 오브젝트를 가질 수 있는 것과 같이, 그룹의 구성원들은 그들의 페이지(118)상에 위치된 그룹 개인화된 ID에 대한 라이브 오브젝트를 가질 수 있다. 그들의 페이지(118)의 뉴스 헤드라인 섹션(902-2)내의 사용자 메시지의 그룹을 송신하기 위해, 정보 공급자(214)는 [<그룹개인화된ID>,(<뉴스헤드라인ID>,<"개인화된 그룹 헤드라인 정보">)]와 같이 그룹 개인화된 ID에 송신된 배치 메시지를 사용할 수 있다. 상기 그룹의 모든(및 단일) 구성원은 그들이 그룹 개인화된 ID와 관련될 수 있기 때문에 이 메시지를 수신할 수 있다. 이 기술은 상기 그룹의 구성원들이 동일한 페이지를 보고 있는 것을 요구하지 않을 수 있다. 대신에, 상기 그룹의 구성원들은 그들이 원하는 어떤 방법이든지 뉴스헤드라인ID에 대한 정보를 디스플레이할 수 있다.
따라서, 일반화 ID와 관련될 수 있는 개인화된 정보는 송신되도록 사용될 수 있다. 그러나, 상기 배치 메시지는 사용자에게 개인화된 ID 특성으로 송신될 수 있다. 따라서, 콘텐트 공급자(214)에 의해 사용되는 ID의 수는 최소화 될 수 있다. 그러나, 개인화된 메시지들을 송신하는 능력은 여전히 개인화된 ID를 사용하여 유 지될 수 있다.
한 실시예에서, 단어 "및/또는"은 사용될 수 있는 "및/또는"에 의해 연결되는 구성요소의 임의의 조합을 나타낼 수 있다. 예를 들면, "및/또는"을 사용하는 구내의 두 단어 또는 표현들은 한쪽 또는 다른 쪽 또는 양쪽을 의미할 수 있다. 한 실시예에서, 단어 "실질적으로"는 대부분이지만 전체적이지 않게 특정될 수 있는, 또는 모두 특정될 수 있는 것을 의미할 수 있다. 한 실시예에서 "가능한"은 구성되고, 적용되고, 할 수 있는 등의 의미일 수 있다. 예를 들면 용어 "동작을 수행하는 능력"은 동작을 수행할 수 있을 수 있는, 동작을 수행할 수 있도록 구성될 수 있는, 및/또는 동작을 수행하도록 적용될 수 있는 구성요소일 수 있다.
상기 개시된 실시예들은 소프트웨어 또는 하드웨어 또는 이 둘의 조합안에서 제어 로직의 형태로 구현될 수 있다. 상기 제어 로직은 한 실시예에서 개시된 단계들의 세트를 수행하도록 정보 처리 장치를 향하도록 적용된 복수의 명령과 같이 정보 저장 매체에 저장될 수 있다. 상기 개시 및 본원에서 제공되는 지도에 기초하여, 당업자는 다른 방법들 및/또는 명세서를 구현하는 방법들을 살펴 알 수 있다.
상기 상세한 설명은 설명하기 위한 것이지 제한하기 위한 것은 아니다. 본 명세서의 많은 변경들은 본 명세서를 관찰하는 당업자에게 명백할 것이다. 그러므로 본 명세서의 범위는 상기 상세한 설명을 참조하지 않고 결정되어야 하며, 그러나 출원한 청구항들의 전체의 범위 또는 등가물과 함께 출원된 청구항을 참조하여 결정되어야 한다.

Claims (35)

  1. 클라이언트 장치들을 위해 개인화된(customized) 정보로 오브젝트들을 동적으로 업데이트하는 시스템에 있어서,
    네트워크 노드로서,
    입력 소스로부터 제 1 식별자 및 제 2 식별자를 식별하는 제 1 메시지 - 상기 제 1 메시지는 상기 제 2 식별자와 연관된 오브젝트의 특성을 업데이트하기 위한 개인화된 정보를 포함하고, 상기 오브젝트는 상기 클라이언트 장치들 중 적어도 하나에 의한 웹페이지의 로딩에 기초하여 상기 클라이언트 장치들 중 상기 적어도 하나에 등록됨 - 를 수신하고,
    상기 제 1 식별자에 특정된 제 1 클라이언트 장치를 식별하고,
    상기 제 1 식별자에 특정된 상기 제 1 클라이언트 장치에게 네트워크를 통해 제 2 메시지 - 상기 제 2 메시지는 상기 제 1 식별자 및 상기 제 2 식별자를 식별하고, 상기 제 2 메시지는 상기 제 2 식별자와 연관된 상기 오브젝트의 특성을 업데이트하기 위한 개인화된 정보를 포함함 - 를 라우팅하도록 구성된, 상기 네트워크 노드
    를 포함하는, 오브젝트 업데이트 시스템.
  2. 제 1 항에 있어서,
    상기 제 1 클라이언트 장치는 상기 개인화된 정보를 사용하여 상기 제 2 식별자와 연관된 상기 오브젝트의 특성을 업데이트시킬 수 있도록 구성되는 것인, 오브젝트 업데이트 시스템.
  3. 제 1 항에 있어서,
    상기 제 2 식별자는 복수의 클라이언트 장치들에 범용되는 것인, 오브젝트 업데이트 시스템.
  4. 제 1 항에 있어서,
    상기 네트워크 노드는 또한,
    상기 입력 소스로부터 제 3 식별자 및 제 4 식별자를 식별하는 제 3 메시지 - 상기 제 3 메시지는 상기 제 4 식별자와 연관된 제 2 오브젝트의 제 2 특성을 업데이트하기 위한 개인화된 정보를 포함함 - 를 수신하고,
    상기 제 3 식별자에 특정된 제 2 클라이언트 장치를 식별하고,
    상기 제 3 식별자에 특정된 상기 제 2 클라이언트 장치에게 상기 네트워크를 통해 제 4 메시지 - 상기 제 4 메시지는 상기 제 3 식별자 및 상기 제 4 식별자를 식별하고, 상기 제 4 메시지는 상기 제 4 식별자와 연관된 상기 제 2 오브젝트의 상기 제 2 특성을 업데이트하기 위한 개인화된 정보를 포함함 - 를 라우팅하도록 구성되는 것인, 오브젝트 업데이트 시스템.
  5. 제 1 항에 있어서,
    상기 네트워크 노드는 상기 제 2 식별자를 사용하여 하나 이상의 부가적인 클라이언트 장치들에게 상기 개인화된 정보를 송신하도록 구성되고,
    상기 네트워크 노드는 상기 개인화된 정보를 라우팅하기 위해 각각의 부가적인 클라이언트 장치들에게 고유한 개인화된 식별자들을 사용하도록 구성되는 것인, 오브젝트 업데이트 시스템.
  6. 제 1 항에 있어서,
    상기 제 1 메시지는 하나 이상의 부가적인 식별자들과 연관된 하나 이상의 오브젝트들의 하나 이상의 특성들을 업데이트하기 위한 부가적인 정보를 포함하고,
    상기 제 2 메시지는 상기 하나 이상의 부가적인 식별자들을 식별하고, 상기 제 2 메시지는 하나 이상의 부가적인 식별자들과 연관된 하나 이상의 오브젝트들의 하나 이상의 특성들을 업데이트하기 위한 상기 부가적인 정보를 포함하는 것인, 오브젝트 업데이트 시스템.
  7. 제 6 항에 있어서,
    상기 하나 이상의 부가적인 식별자들은 상기 제 1 클라이언트 장치에게 특정된 개인화된 콘텐츠 또는 복수의 클라이언트 장치들에게 범용되는 콘텐츠와 연관되는 것인, 오브젝트 업데이트 시스템.
  8. 삭제
  9. 제 1 항에 있어서,
    상기 오브젝트는 상기 제 1 클라이언트 장치에서의 데이터 표현에 포함되는 것인, 오브젝트 업데이트 시스템.
  10. 제 9 항에 있어서,
    상기 데이터 표현은 웹 페이지 또는 애플리케이션 프로그램을 포함하는 것인, 오브젝트 업데이트 시스템.
  11. 제 1 항에 있어서,
    상기 제 1 메시지 및 상기 제 2 메시지는 동일한 개인화된 정보를 포함하는 것인, 오브젝트 업데이트 시스템.
  12. 클라이언트 장치들을 위해 개인화된 정보로 오브젝트들을 동적으로 업데이트하는 방법에 있어서,
    입력 소스로부터 제 1 식별자 및 제 2 식별자를 포함하는 제 1 메시지를 컴퓨터 라우팅 네트워크를 통해 수신하는 단계로서, 상기 제 1 메시지는 상기 제 2 식별자와 연관된 오브젝트의 특성을 업데이트하기 위한 개인화된 정보를 포함하고, 상기 오브젝트는 상기 클라이언트 장치들 중 적어도 하나에 의한 웹페이지의 로딩에 기초하여 상기 클라이언트 장치들 중 상기 적어도 하나에 등록되는 것인, 상기 제 1 메시지 수신 단계;
    상기 제 1 식별자에 특정된 제 1 클라이언트 장치를 식별하는 단계; 및
    상기 제 1 식별자에 특정된 상기 제 1 클라이언트 장치에게 상기 네트워크를 이용하여 제 2 메시지를 라우팅하는 단계로서, 상기 제 2 메시지는 상기 제 1 식별자 및 상기 제 2 식별자를 식별하며, 상기 제 2 메시지는 상기 제 2 식별자와 연관된 상기 오브젝트의 특성을 업데이트하기 위한 개인화된 정보를 포함하는 것인, 상기 제 2 메시지 라우팅 단계
    를 포함하는, 오브젝트 업데이트 방법.
  13. 제 12 항에 있어서,
    상기 개인화된 정보를 사용하여 상기 제 2 식별자와 연관된 상기 오브젝트의 특성을 업데이트시키는 단계를 더 포함하는, 오브젝트 업데이트 방법.
  14. 제 12 항에 있어서,
    상기 제 1 메시지 수신 단계는 상기 제 2 식별자를 수신하는 것을 포함하고,
    상기 제 2 식별자는 복수의 클라이언트 장치들에 범용되는 것인, 오브젝트 업데이트 방법.
  15. 제 12 항에 있어서,
    상기 입력 소스로부터 제 3 식별자 및 제 4 식별자를 포함하는 제 3 메시지를 수신하는 단계로서, 상기 제 3 메시지는 상기 제 4 식별자와 연관된 제 2 오브젝트의 제 2 특성을 업데이트하기 위한 개인화된 정보를 포함하는 것인, 상기 제 3 메시지 수신 단계;
    상기 제 3 식별자에 특정된 제 2 클라이언트 장치를 식별하는 단계; 및
    상기 제 3 식별자에 특정된 상기 제 2 클라이언트 장치에게 상기 네트워크를 통해 제 4 메시지를 라우팅하는 단계로서, 상기 제 4 메시지는 상기 제 3 식별자 및 상기 제 4 식별자를 포함하며, 상기 제 4 메시지는 상기 제 4 식별자와 연관된 상기 제 2 오브젝트의 상기 제 2 특성을 업데이트하기 위한 개인화된 정보를 포함하는 것인, 상기 제 4 메시지 라우팅 단계
    를 더 포함하는, 오브젝트 업데이트 방법.
  16. 제 12 항에 있어서,
    상기 제 2 식별자를 사용하여 하나 이상의 부가적인 클라이언트 장치들에 개인화된 정보를 송신하는 단계; 및
    상기 개인화된 정보를 라우팅하기 위해 상기 하나 이상의 부가적인 클라이언트 장치들에게 고유한 적어도 하나의 개인화된 식별자를 사용하는 단계
    를 더 포함하는, 오브젝트 업데이트 방법.
  17. 제 12 항에 있어서,
    상기 제 1 메시지 수신 단계는 하나 이상의 부가적인 식별자들과 연관된 하나 이상의 오브젝트들의 하나 이상의 특성들을 업데이트하기 위한 부가적인 정보를 수신하는 것을 포함하고,
    상기 제 2 메시지 라우팅 단계는 상기 제 2 메시지 내의 상기 하나 이상의 부가적인 식별자들을 사용하는 것을 포함하고, 상기 제 2 메시지는 하나 이상의 부가적인 식별자들과 연관된 하나 이상의 오브젝트들의 하나 이상의 특성들을 업데이트하기 위한 상기 부가적인 정보를 포함하는 것인, 오브젝트 업데이트 방법.
  18. 제 17 항에 있어서,
    상기 제 2 메시지 라우팅 단계는 하나 이상의 부가적인 식별자들을 상기 제 1 클라이언트 장치에게 특정된 개인화된 콘텐츠 또는 복수의 클라이언트 장치들에 범용되는 콘텐츠와 연관시키는 것인, 오브젝트 업데이트 방법.
  19. 삭제
  20. 제 12 항에 있어서,
    상기 오브젝트를 상기 제 1 클라이언트 장치에서의 데이터 표현에 포함시키는 단계를 더 포함하는, 오브젝트 업데이트 방법.
  21. 제 20 항에 있어서,
    상기 오브젝트를 상기 제 1 클라이언트 장치에서의 데이터 표현에 포함시키는 단계는, 상기 오브젝트를 웹 페이지 또는 애플리케이션 프로그램 내에 포함시키는 것을 포함하는, 오브젝트 업데이트 방법.
  22. 제 12 항에 있어서,
    상기 제 2 메시지 라우팅 단계는, 상기 제 1 메시지와 동일한 개인화된 정보를 포함하는 메시지를 라우팅하는 것을 포함하는, 오브젝트 업데이트 방법.
  23. 클라이언트 장치들을 위해 개인화된 콘텐츠로 오브젝트들을 동적으로 업데이트하기 위해 컴퓨터 라우팅 네트워크를 사용하는 방법에 있어서,
    제 1 클라이언트 장치에 의한 웹페이지의 로딩에 기초하여, 상기 제 1 클라이언트 장치로부터 제 1 개인화된 식별자 및 범용 식별자에 대한 제 1 등록 요청을 상기 컴퓨터 라우팅 네트워크를 사용하여 수신하는 단계;
    제 2 클라이언트 장치에 의한 제 2 웹페이지의 로딩에 기초하여, 상기 제 2 클라이언트 장치로부터 제 2 개인화된 식별자 및 상기 범용 식별자에 대한 제 2 등록 요청을 상기 컴퓨터 라우팅 네트워크를 사용하여 수신하는 단계;
    상기 제 1 클라이언트 장치에 대한 제 1 개인화된 정보를 결정하는 단계;
    상기 범용 식별자와 상기 제 1 개인화된 정보를 연관시키는 단계;
    상기 제 2 클라이언트 장치에 대한 제 2 개인화된 정보를 결정하는 단계;
    상기 범용 식별자와 상기 제 2 개인화된 정보를 연관시키는 단계;
    상기 제 1 개인화된 식별자 및 상기 범용 식별자를 포함하는 제 1 메시지를 생성하는 단계로서, 상기 제 1 메시지는 상기 범용 식별자와 연관된 상기 제 1 개인화된 정보를 포함하는 것인, 상기 제 1 메시지 생성 단계;
    상기 제 2 개인화된 식별자 및 상기 범용 식별자를 포함하는 제 2 메시지를 생성하는 단계로서, 상기 제 2 메시지는 상기 범용 식별자와 연관된 상기 제 2 개인화된 정보를 포함하는 것인, 상기 제 2 메시지 생성 단계;
    상기 제 1 개인화된 식별자를 사용하여 상기 제 1 클라이언트 장치에게 상기 제 1 메시지를 상기 컴퓨터 라우팅 네트워크를 사용하여 송신하는 단계로서, 상기 제 1 클라이언트 장치는 상기 제 1 개인화된 정보를 이용하여 상기 범용 식별자와 연관된 제 1 오브젝트의 특성을 업데이트시키는 것이 가능한, 상기 제 1 메시지 송신 단계; 및
    상기 제 2 개인화된 식별자를 사용하여 상기 제 2 클라이언트 장치에게 상기 제 2 메시지를 상기 컴퓨터 라우팅 네트워크를 사용하여 송신하는 단계로서, 상기 제 2 클라이언트 장치는 상기 제 2 개인화된 정보를 사용하여 상기 범용 식별자와 연관된 제 2 오브젝트의 특성을 업데이트시키는 것이 가능한, 상기 제 2 메시지 송신 단계
    를 포함하는, 컴퓨터 라우팅 네트워크 사용 방법.
  24. 제 23 항에 있어서,
    상기 제 1 등록 요청은 상기 제 1 클라이언트 장치가 상기 웹페이지를 로딩한 후에 송신되고,
    상기 제 2 등록 요청은 상기 제2 클라이언트 장치가 상기 제2 웹페이지를 로딩한 후에 송신되는 것인, 컴퓨터 라우팅 네트워크 사용 방법.
  25. 개인화된 콘텐츠로 오브젝트를 동적으로 업데이트하도록 구성되는 클라이언트 장치에 있어서,
    컴퓨터 라우팅 네트워크로부터 제 1 식별자 및 제 2 식별자를 식별하는 제 1 메시지를 상기 클라이언트 장치에서 수신하도록 구성된 로직으로서, 상기 제 1 메시지는 상기 제 2 식별자와 연관된 오브젝트의 특성을 업데이트하기 위한 개인화된 정보를 포함하고, 상기 제 1 식별자는 상기 클라이언트 장치에 특정되고, 상기 제 2 식별자는 상기 클라이언트 장치 및 하나 이상의 부가적인 클라이언트 장치들에 범용되며, 상기 오브젝트는 상기 클라이언트 장치에 의한 웹페이지의 로딩에 기초하여 상기 클라이언트 장치에 등록되는 것인, 상기 제 1 메시지 수신 로직;
    상기 제 2 식별자와 연관된 상기 오브젝트의 특성을 업데이트하기 위한 상기 개인화된 정보를 상기 클라이언트 장치에서 식별하도록 구성된 로직; 및
    상기 개인화된 정보를 이용하여 상기 오브젝트의 상기 특성을 상기 클라이언트 장치에서 업데이트시키도록 구성되는 로직
    을 포함하는, 클라이언트 장치.
  26. 제 25 항에 있어서,
    상기 제 1 메시지 수신 로직은, 하나 이상의 부가적인 식별자들과 연관된 하나 이상의 오브젝트들의 하나 이상의 특성들을 업데이트하기 위한 부가적인 정보를 수신하도록 구성된 로직을 포함하는 것인, 클라이언트 장치.
  27. 삭제
  28. 제 25 항에 있어서,
    상기 클라이언트 장치는 상기 웹페이지를 로딩한 후에 상기 오브젝트에 대해 등록을 수행하는 것인, 클라이언트 장치.
  29. 제 25 항에 있어서,
    상기 오브젝트는 상기 클라이언트 장치에서의 데이터 표현에 포함되는 것인, 클라이언트 장치.
  30. 제 29 항에 있어서,
    상기 데이터 표현은 웹페이지 또는 애플리케이션 프로그램을 포함하는 것인, 클라이언트 장치.
  31. 클라이언트 장치들을 위해 개인화된 정보로 오브젝트들을 동적으로 업데이트하는 시스템에 있어서,
    컴퓨터 라우팅 네트워크 내의 노드로서,
    상기 클라이언트 장치들 중 적어도 하나의 클라이언트 장치가 웹페이지를 로딩한 후에 상기 적어도 하나의 클라이언트 장치로부터 등록 메시지를 수신하고;
    클라이언트 장치들 중 적어도 하나의 클라이언트 장치에, 개인화된 ID를 할당하고;
    각각 상기 클라이언트 장치들 대해 등록된 오브젝트들을 나타내는 레지스트리를 업데이트하고;
    상기 오브젝트들을 식별하고 상기 오브젝트들의 특성들을 업데이트하기 위한 데이터를 포함하는 업데이트 메시지들을 콘텐츠 공급자로부터 수신하고;
    상기 레지스트리에 액세스하고 어떤 클라이언트 장치들이 상기 오브젝트들 중 적어도 하나에 대해 등록을 수행하였는지를 결정하고;
    식별된 오브젝트에 대해 등록을 수행한 클리이언트 장치들 각각에 대한 배치(batch) 업데이트 메시지들 - 상기 배치 업데이트 메시지들은 각각 클라이언트 장치와 연관된 개인화된 ID를 포함하고, 상기 식별된 오브젝트와 연관된 복수의 범용 ID들을 포함하며, 상기 범용 ID들과 연관되고 상기 클라이언트 디바이스들 중 적어도 하나를 위해 개인화된 복수의 개인화된 ID들을 포함함 - 을 생성하며;
    상기 오브젝트들에 대해 등록을 수행하였다고 결정된 클라이언트 디바이스들에게 상기 배치 업데이트 메시지들을 라우팅하도록 구성되는, 상기 노드
    를 포함하는, 오브젝트 업데이트 시스템.
  32. 제 31 항에 있어서,
    상기 노드는 상기 개인화된 ID를 클라이언트 장치 그룹에 할당하도록 구성되는 것인, 오브젝트 업데이트 시스템.
  33. 제 31 항에 있어서,
    상기 노드는 사용자에 대한 주식 및 채권에 상기 범용 ID들을 할당하는 배치 업데이트 메시지들을 생성하도록 구성되고,
    상기 노드는 사용자에 대해 거래가 종료된 때에 업데이트 메시지들을 수신하도록 구성되는 것인, 오브젝트 업데이트 시스템.
  34. 제 31 항에 있어서,
    상기 노드는 오브젝트들에 대한 등록 메시지들을 송신하는 다수의 클라이언트 장치들과 동작하도록 구성되고, 상기 클라이언트 장치들의 개수는 클라이언트 디바이스들이 웹페이지들을 로딩함에 따라 실시간으로 변화하는 것인, 오브젝트 업데이트 시스템.
  35. 클라이언트 장치들을 위해 개인화된 콘텐츠로 오브젝트들을 동적으로 업데이트하기 위해 컴퓨터 라우팅 네트워크를 사용하는 방법에 있어서,
    상기 컴퓨터 라우팅 네트워크를 사용하여 복수의 클라이언트 장치들 중 적어도 하나의 클라이언트 장치로부터 등록 요청을 수신하는 단계로서, 상기 등록 요청은 개인화된 식별자, 제 1 범용 식별자, 및 제 2 범용 식별자에 대한 요청을 포함하고, 상기 등록 요청은 상기 적어도 하나의 클라이언트 장치에 의한 웹페이지의 로딩에 기초하여 송신되는 것인, 상기 등록 요청 수신 단계;
    상기 적어도 하나의 클라이언트 장치를 위한 제 1 개인화된 정보를 결정하고, 상기 제 1 개인화된 정보를 상기 제 1 범용 식별자와 연관시키는 단계;
    상기 적어도 하나의 클라이언트 장치를 위한 제 2 개인화된 정보를 결정하고, 상기 제 2 개인화된 정보를 상기 제 2 범용 식별자와 연관시키는 단계;
    상기 개인화된 식별자, 상기 제 1 범용 식별자, 상기 제 1 개인화된 정보, 상기 제 2 범용 식별자, 및 상기 제 2 개인화된 정보를 포함하는 제 1 메시지를 생성하는 단계; 및
    상기 개인화된 식별자를 사용하여 상기 적어도 하나의 클라이언트 장치에 상기 제 1 메시지를 상기 컴퓨터 라우팅 네트워크를 사용하여 송신하는 단계로서, 상기 제 1 메시지는 상기 적어도 하나의 클라이언트 장치가 상기 제 1 개인화된 정보를 사용하여 상기 제 1 범용 식별자와 연관된 제 1 오브젝트의 특성을 업데이트하고 상기 제 2 개인화된 정보를 사용하여 상기 제 2 범용 식별자와 연관된 제 2 오브젝트의 특성을 업데이트하도록 구성되는 것인, 상기 제 1 메시지 송신 단계
    를 포함하는, 컴퓨터 라우팅 네트워크 사용 방법.
KR20077006107A 2004-08-17 2007-03-16 실시간 라우팅 네트워크로 개인화된 콘텐트를 전달하는기술 KR101059904B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US60253904P 2004-08-17 2004-08-17
US60/602,539 2004-08-17

Publications (2)

Publication Number Publication Date
KR20070095273A KR20070095273A (ko) 2007-09-28
KR101059904B1 true KR101059904B1 (ko) 2011-08-29

Family

ID=35510945

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020077006144A KR101164698B1 (ko) 2004-08-17 2005-08-15 업스트림 실패 검출 및 실패 복구를 위한 기술들
KR20077006107A KR101059904B1 (ko) 2004-08-17 2007-03-16 실시간 라우팅 네트워크로 개인화된 콘텐트를 전달하는기술
KR20077006143A KR101049501B1 (ko) 2004-08-17 2007-03-16 모듈러 이벤트-구동 처리

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020077006144A KR101164698B1 (ko) 2004-08-17 2005-08-15 업스트림 실패 검출 및 실패 복구를 위한 기술들

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR20077006143A KR101049501B1 (ko) 2004-08-17 2007-03-16 모듈러 이벤트-구동 처리

Country Status (6)

Country Link
US (1) US9043635B2 (ko)
EP (1) EP1779636B1 (ko)
JP (1) JP4668271B2 (ko)
KR (3) KR101164698B1 (ko)
CN (3) CN101057476B (ko)
WO (1) WO2006023508A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7051070B2 (en) * 2000-12-18 2006-05-23 Timothy Tuttle Asynchronous messaging using a node specialization architecture in the dynamic routing network
US8505024B2 (en) 2000-12-18 2013-08-06 Shaw Parsing Llc Storing state in a dynamic content routing network
US7711847B2 (en) 2002-04-26 2010-05-04 Sony Computer Entertainment America Inc. Managing users in a multi-user network game environment
US20030217135A1 (en) 2002-05-17 2003-11-20 Masayuki Chatani Dynamic player management
US8560707B2 (en) 2007-10-05 2013-10-15 Sony Computer Entertainment America Llc Seamless host migration based on NAT type
US8131802B2 (en) 2007-10-05 2012-03-06 Sony Computer Entertainment America Llc Systems and methods for seamless host migration
JP5162240B2 (ja) 2004-08-17 2013-03-13 ショー パーシング リミティド ライアビリティ カンパニー リアルタイム配信ネットワークによって個別コンテンツを配信する技法
WO2006023506A1 (en) * 2004-08-17 2006-03-02 Shaw Parsing Llc Modular event-driven processing
CN101057476B (zh) * 2004-08-17 2014-01-08 肖分析有限公司 用实时路由网络递送个人化内容的方法和装置
US20070250626A1 (en) * 2006-04-21 2007-10-25 Electronic Data Systems Corporation System and method for uniform disaster recovery system access
US20080090555A1 (en) * 2006-10-17 2008-04-17 Patel Pulin R Managing Faults and Filters in Providing Foreign Services
US8984326B2 (en) * 2007-10-31 2015-03-17 Hewlett-Packard Development Company, L.P. Testing disaster recovery elements
US8171111B1 (en) * 2008-08-07 2012-05-01 United Services Automobile Association (Usaa) Systems and methods for non-specific address routing
US8706878B1 (en) 2008-08-21 2014-04-22 United Services Automobile Association Preferential loading in data centers
CN104811486B (zh) * 2009-06-19 2019-06-14 日本技术贸易株式会社 内容管理装置和内容管理方法
US9300525B2 (en) * 2010-07-02 2016-03-29 At&T Intellectual Property I, L.P. Method and system to identify a source of signal impairment
KR101064143B1 (ko) * 2010-08-20 2011-09-15 주식회사 파수닷컴 Drm 환경에서의 클립보드 보호 시스템 및 그 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 기록매체
US8738736B2 (en) * 2010-11-23 2014-05-27 Edgecast Networks, Inc. Scalable content streaming system with server-side archiving
CN104980333B (zh) * 2014-04-14 2018-03-27 纬创资通股份有限公司 Pushlet即时通信方法及平台
CN104168269B (zh) * 2014-07-24 2016-05-04 深圳市腾讯计算机系统有限公司 安全连接建立方法、装置及系统
US9967309B2 (en) * 2014-10-06 2018-05-08 Microsoft Technology Licensing, Llc Dynamic loading of routes in a single-page application
CN107291575B (zh) * 2016-03-31 2020-10-16 阿里巴巴集团控股有限公司 一种数据中心故障时的处理方法和设备
CN107360240A (zh) * 2017-07-20 2017-11-17 广东小天才科技有限公司 一种数据更新方法及系统
US11888840B2 (en) * 2017-11-09 2024-01-30 Mitsubishi Electric Corporation Apparatus and method for selection and transmission of server certificate
US10765952B2 (en) 2018-09-21 2020-09-08 Sony Interactive Entertainment LLC System-level multiplayer matchmaking
US10695671B2 (en) 2018-09-28 2020-06-30 Sony Interactive Entertainment LLC Establishing and managing multiplayer sessions
US11570073B1 (en) * 2019-11-21 2023-01-31 Juniper Networks, Inc. Service status notification

Family Cites Families (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5230048A (en) 1986-09-03 1993-07-20 Wang Laboratories, Inc. Data processing system with tree and list data structure
US5535335A (en) 1992-12-22 1996-07-09 International Business Machines Corporation Method and system for reporting the status of an aggregate resource residing in a network of interconnected real resources
FR2702579B1 (fr) 1993-03-12 1995-05-24 Bull Sa Dispositif de communication entre au moins un client et au moins un serveur, procédé d'utilisation du dispositif et utilisation du dispositif.
US6052447A (en) 1993-05-28 2000-04-18 Sprint Communications Company L.P. Method and apparatus for aggregating customer information for a telecommunications system
US5974457A (en) 1993-12-23 1999-10-26 International Business Machines Corporation Intelligent realtime monitoring of data traffic
US5692193A (en) 1994-03-31 1997-11-25 Nec Research Institute, Inc. Software architecture for control of highly parallel computer systems
US6769009B1 (en) 1994-05-31 2004-07-27 Richard R. Reisman Method and system for selecting a personalized set of information channels
US6460036B1 (en) 1994-11-29 2002-10-01 Pinpoint Incorporated System and method for providing customized electronic newspapers and target advertisements
US5758257A (en) 1994-11-29 1998-05-26 Herz; Frederick System and method for scheduling broadcast of and access to video programs and other data using customer profiles
US5706516A (en) 1995-01-23 1998-01-06 International Business Machines Corporation System for communicating messages among agent processes
US5819284A (en) 1995-03-24 1998-10-06 At&T Corp. Personalized real time information display as a portion of a screen saver
US6240451B1 (en) 1995-05-25 2001-05-29 Punch Networks Corporation Method and apparatus for automatically disseminating information over a network
US5740549A (en) 1995-06-12 1998-04-14 Pointcast, Inc. Information and advertising distribution system and method
US6002667A (en) 1995-07-19 1999-12-14 Fujitsu Network Communications, Inc. Minimum guaranteed cell rate method and apparatus
US5878420A (en) 1995-08-31 1999-03-02 Compuware Corporation Network monitoring and management system
US6029175A (en) 1995-10-26 2000-02-22 Teknowledge Corporation Automatic retrieval of changed files by a network software agent
EP0941515A1 (en) 1995-10-31 1999-09-15 Frederick S.M. Herz System for customized electronic identification of desirable objects
US5938733A (en) 1996-03-08 1999-08-17 International Business Machines Corporation Object oriented representation of network requests in a client server model
US5964839A (en) 1996-03-29 1999-10-12 At&T Corp System and method for monitoring information flow and performing data collection
US6018619A (en) 1996-05-24 2000-01-25 Microsoft Corporation Method, system and apparatus for client-side usage tracking of information server systems
US5822543A (en) 1996-07-08 1998-10-13 International Business Machines Corporation Gathering data handling statistics in non-synchronous data communication networks
US7249037B2 (en) 1996-09-09 2007-07-24 Bancorp Services L.L.P. System for managing a stable value protected investment plan
US5886643A (en) 1996-09-17 1999-03-23 Concord Communications Incorporated Method and apparatus for discovering network topology
US6055493A (en) 1997-01-29 2000-04-25 Infovista S.A. Performance measurement and service quality monitoring system and process for an information system
US6578077B1 (en) 1997-05-27 2003-06-10 Novell, Inc. Traffic monitoring tool for bandwidth management
JP3932462B2 (ja) 1997-05-27 2007-06-20 ソニー株式会社 クライアント装置、画像表示制御方法、共有仮想空間提供装置および方法、並びに記録媒体
JP3799134B2 (ja) 1997-05-28 2006-07-19 ソニー株式会社 システムおよび通知方法
US6490610B1 (en) * 1997-05-30 2002-12-03 Oracle Corporation Automatic failover for clients accessing a resource through a server
US5983227A (en) 1997-06-12 1999-11-09 Yahoo, Inc. Dynamic page generator
US6233600B1 (en) 1997-07-15 2001-05-15 Eroom Technology, Inc. Method and system for providing a networked collaborative work environment
US6173406B1 (en) 1997-07-15 2001-01-09 Microsoft Corporation Authentication systems, methods, and computer program products
US6112240A (en) 1997-09-03 2000-08-29 International Business Machines Corporation Web site client information tracker
GB2344265B (en) 1997-11-20 2003-07-16 Xacct Technologies Inc Network accounting and billing system and method
US6324587B1 (en) 1997-12-23 2001-11-27 Microsoft Corporation Method, computer program product, and data structure for publishing a data object over a store and forward transport
US6449638B1 (en) 1998-01-07 2002-09-10 Microsoft Corporation Channel definition architecture extension
US6094681A (en) 1998-03-31 2000-07-25 Siemens Information And Communication Networks, Inc. Apparatus and method for automated event notification
US6138158A (en) 1998-04-30 2000-10-24 Phone.Com, Inc. Method and system for pushing and pulling data using wideband and narrowband transport systems
US6363421B2 (en) 1998-05-31 2002-03-26 Lucent Technologies, Inc. Method for computer internet remote management of a telecommunication network element
JP4634547B2 (ja) * 1998-06-30 2011-02-16 株式会社東芝 リアルタイム情報配信方法
US6108703A (en) 1998-07-14 2000-08-22 Massachusetts Institute Of Technology Global hosting system
US6314459B1 (en) 1998-08-13 2001-11-06 U.S. Philips Corporation Home-network autoconfiguration
US6560611B1 (en) 1998-10-13 2003-05-06 Netarx, Inc. Method, apparatus, and article of manufacture for a network monitoring system
US6308209B1 (en) 1998-10-22 2001-10-23 Electronic Data Systems Corporation Method and system for measuring usage of a computer network by a network user
ATE273538T1 (de) 1998-10-28 2004-08-15 Verticalone Corp Gerät und verfahren für automatische aggregation und abgabe von elektronischer persönlicher information oder daten
US6691165B1 (en) 1998-11-10 2004-02-10 Rainfinity, Inc. Distributed server cluster for controlling network traffic
US6366926B1 (en) 1998-12-31 2002-04-02 Computer Associates Think, Inc. Method and apparatus for the dynamic filtering and routing of events
US6567411B2 (en) 1998-12-31 2003-05-20 Qwest Communications International, Inc. Method and apparatus for continuous narrowcast of individualized information over a data network
US6446257B1 (en) 1999-02-04 2002-09-03 Hewlett-Packard Company Method and apparatus for pre-allocation of system resources to facilitate garbage collection
US6970924B1 (en) 1999-02-23 2005-11-29 Visual Networks, Inc. Methods and apparatus for monitoring end-user experience in a distributed network
US6408282B1 (en) 1999-03-01 2002-06-18 Wit Capital Corp. System and method for conducting securities transactions over a computer network
US20020013852A1 (en) 2000-03-03 2002-01-31 Craig Janik System for providing content, management, and interactivity for thin client devices
US6609138B1 (en) 1999-03-08 2003-08-19 Sun Microsystems, Inc. E-mail list archiving and management
US6751663B1 (en) 1999-03-25 2004-06-15 Nortel Networks Limited System wide flow aggregation process for aggregating network activity records
US6539427B1 (en) 1999-06-29 2003-03-25 Cisco Technology, Inc. Dynamically adaptive network element in a feedback-based data network
US6829642B1 (en) 1999-07-01 2004-12-07 International Business Machines Corporation Method and system for automatically and optimally selecting a TN3270 server in an internet protocol network
US6789115B1 (en) 1999-07-09 2004-09-07 Merrill Lynch & Company System for collecting, analyzing, and reporting high volume multi-web server usage
US6553412B1 (en) 1999-09-10 2003-04-22 Avantgo, Inc. System, method, and computer program product for web content aggregation and development, and web content delivery to clients
US6873693B1 (en) 1999-09-13 2005-03-29 Microstrategy, Incorporated System and method for real-time, personalized, dynamic, interactive voice services for entertainment-related information
US7293074B1 (en) 1999-09-20 2007-11-06 Fusionone, Inc. Performing server actions using template with field that can be completed without obtaining information from a user
US6792458B1 (en) 1999-10-04 2004-09-14 Urchin Software Corporation System and method for monitoring and analyzing internet traffic
US6484143B1 (en) 1999-11-22 2002-11-19 Speedera Networks, Inc. User device and system for traffic management and content distribution over a world wide area network
US20020010757A1 (en) 1999-12-03 2002-01-24 Joel Granik Method and apparatus for replacement of on-line advertisements
US6418448B1 (en) 1999-12-06 2002-07-09 Shyam Sundar Sarkar Method and apparatus for processing markup language specifications for data and metadata used inside multiple related internet documents to navigate, query and manipulate information from a plurality of object relational databases over the web
US6687729B1 (en) 1999-12-20 2004-02-03 Unisys Corporation System and method for providing a pool of reusable threads for performing queued items of work
US6606643B1 (en) 2000-01-04 2003-08-12 International Business Machines Corporation Method of automatically selecting a mirror server for web-based client-host interaction
US7454457B1 (en) * 2000-02-07 2008-11-18 Parallel Networks, Llc Method and apparatus for dynamic data flow control using prioritization of data requests
US6871346B1 (en) 2000-02-11 2005-03-22 Microsoft Corp. Back-end decoupled management model and management system utilizing same
US7392281B1 (en) 2000-02-25 2008-06-24 Navic Systems, Inc. System and method for providing guaranteed delivery of messages to embedded devices over a data network
US20010047426A1 (en) 2000-03-31 2001-11-29 Hunter Kevin D. Device-based routing for web content retrieval
US7209959B1 (en) 2000-04-04 2007-04-24 Wk Networks, Inc. Apparatus, system, and method for communicating to a network through a virtual domain providing anonymity to a client communicating on the network
US6654804B1 (en) 2000-04-27 2003-11-25 Micron Electronics, Inc. Method and apparatus for automatic dial-up dial-down web hosting
ATE289140T1 (de) 2000-05-05 2005-02-15 Nomadix Inc Gerät und verfahren zur überwachung der netzwerkauslastung
US6918084B1 (en) 2000-05-09 2005-07-12 Sun Microsystems, Inc. Spawning new repository spaces using information provided in advertisement schema messages
US7577834B1 (en) 2000-05-09 2009-08-18 Sun Microsystems, Inc. Message authentication using message gates in a distributed computing environment
US6769010B1 (en) 2000-05-11 2004-07-27 Howzone.Com Inc. Apparatus for distributing information over a network-based environment, method of distributing information to users, and method for associating content objects with a database wherein the content objects are accessible over a network communication medium by a user
US6658652B1 (en) 2000-06-08 2003-12-02 International Business Machines Corporation Method and system for shadow heap memory leak detection and other heap analysis in an object-oriented environment during real-time trace processing
US20030041110A1 (en) * 2000-07-28 2003-02-27 Storymail, Inc. System, Method and Structure for generating and using a compressed digital certificate
US6944662B2 (en) 2000-08-04 2005-09-13 Vinestone Corporation System and methods providing automatic distributed data retrieval, analysis and reporting services
US7139844B2 (en) 2000-08-04 2006-11-21 Goldman Sachs & Co. Method and system for processing financial data objects carried on broadcast data streams and delivering information to subscribing clients
US20020024536A1 (en) 2000-08-25 2002-02-28 Michal Kahan Method and apparatus for information aggregation and personalized display of the aggregated information
US7752214B2 (en) 2000-09-01 2010-07-06 Op40, Inc. Extended environment data structure for distributed digital assets over a multi-tier computer network
US7107326B1 (en) 2000-10-13 2006-09-12 3Com Corporation Method and system for integrating IP address reservations with policy provisioning
US20020087630A1 (en) 2000-10-20 2002-07-04 Jonathan Wu Enhanced information and presence service
US7249197B1 (en) 2000-10-20 2007-07-24 Nortel Networks Limited System, apparatus and method for personalising web content
US20020073165A1 (en) 2000-10-23 2002-06-13 Pingpong Technology, Inc. Real-time context-sensitive customization of user-requested content
US6970939B2 (en) 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
US6725446B1 (en) 2000-11-01 2004-04-20 Digital Integrator, Inc. Information distribution method and system
JP2002236626A (ja) * 2000-12-06 2002-08-23 Site Rock Corp サイト監視方法、および、サイト監視システム
US8505024B2 (en) 2000-12-18 2013-08-06 Shaw Parsing Llc Storing state in a dynamic content routing network
US7051070B2 (en) * 2000-12-18 2006-05-23 Timothy Tuttle Asynchronous messaging using a node specialization architecture in the dynamic routing network
US20020078251A1 (en) 2000-12-18 2002-06-20 Philips Electronics North America Corp. Self-determining command path architecture
US7043525B2 (en) 2000-12-18 2006-05-09 Bang Networks, Inc. Techniques for updating live objects at clients using a dynamic routing network
US7127720B2 (en) 2000-12-18 2006-10-24 Charles E Cano Storing state in a dynamic content routing network
US7177917B2 (en) 2000-12-27 2007-02-13 Softwired Ag Scaleable message system
US6836886B2 (en) 2001-03-19 2004-12-28 Autodesk, Inc. Method and apparatus for delivering electronic information
JP2002343578A (ja) * 2001-05-10 2002-11-29 Nec Corp 発光体、発光素子、および発光表示装置
IL161389A0 (en) 2001-10-15 2004-09-27 Semandex Networks Inc Dynamic content based multicast routing in mobile networks
US7970876B2 (en) 2002-07-23 2011-06-28 Avaya Communication Israel Ltd. Global server load balancer
EP1394701A3 (en) * 2002-07-31 2006-05-03 Hewlett-Packard Development Company, L.P. Establishment of network connections
US7207043B2 (en) 2002-12-31 2007-04-17 International Business Machines Corporation Programmatic response-time based workload distribution techniques
JP2004234123A (ja) 2003-01-28 2004-08-19 Fujitsu Ltd マルチスレッドコンピュータ
US7159034B1 (en) * 2003-03-03 2007-01-02 Novell, Inc. System broadcasting ARP request from a server using a different IP address to balance incoming traffic load from clients via different network interface cards
US7467390B2 (en) 2003-04-01 2008-12-16 International Business Machines Corporation Enhanced staged event-driven architecture
US7350213B2 (en) 2003-06-19 2008-03-25 Sap Ag System and method for dynamic selection of stateless/stateful software components
US8549078B2 (en) * 2003-08-08 2013-10-01 Teamon Systems, Inc. Communications system providing load balancing based upon connectivity disruptions and related methods
GB0325691D0 (en) * 2003-11-04 2003-12-10 Dotworlds Ltd Resolution of network names
US20050125557A1 (en) * 2003-12-08 2005-06-09 Dell Products L.P. Transaction transfer during a failover of a cluster controller
EP1628278A1 (en) * 2004-08-16 2006-02-22 Alcatel Method and system for detecting available parking places
CN101057476B (zh) 2004-08-17 2014-01-08 肖分析有限公司 用实时路由网络递送个人化内容的方法和装置
JP5162240B2 (ja) 2004-08-17 2013-03-13 ショー パーシング リミティド ライアビリティ カンパニー リアルタイム配信ネットワークによって個別コンテンツを配信する技法
WO2006023506A1 (en) 2004-08-17 2006-03-02 Shaw Parsing Llc Modular event-driven processing
WO2006046516A1 (ja) * 2004-10-26 2006-05-04 Olympus Corporation 内視鏡形状検出装置

Also Published As

Publication number Publication date
KR20070095273A (ko) 2007-09-28
KR20070083566A (ko) 2007-08-24
KR20070057838A (ko) 2007-06-07
KR101164698B1 (ko) 2012-07-11
US9043635B2 (en) 2015-05-26
JP2008510436A (ja) 2008-04-03
JP4668271B2 (ja) 2011-04-13
CN101189852A (zh) 2008-05-28
US20060075279A1 (en) 2006-04-06
KR101049501B1 (ko) 2011-07-15
EP1779636B1 (en) 2015-05-27
CN100527086C (zh) 2009-08-12
CN101040261A (zh) 2007-09-19
EP1779636A1 (en) 2007-05-02
WO2006023508A1 (en) 2006-03-02
CN101057476A (zh) 2007-10-17
CN101189852B (zh) 2012-10-03
CN101057476B (zh) 2014-01-08

Similar Documents

Publication Publication Date Title
KR101059904B1 (ko) 실시간 라우팅 네트워크로 개인화된 콘텐트를 전달하는기술
JP5162240B2 (ja) リアルタイム配信ネットワークによって個別コンテンツを配信する技法
US10860567B2 (en) Storing state in a dynamic content routing network
US7043525B2 (en) Techniques for updating live objects at clients using a dynamic routing network
US9071648B2 (en) Asynchronous messaging using a node specialization architecture in the dynamic routing network
US7127720B2 (en) Storing state in a dynamic content routing network
US6701374B2 (en) Method and apparatus for dynamic proxy insertion in network traffic flow
US7861174B2 (en) Method and system for assembling concurrently-generated content
KR100722916B1 (ko) 통신 관리자가 장치된 컴퓨터 시스템에 의한액티브티-베이스 협력 방법 및 장치
US20160006697A1 (en) Remote browsing session management
US20020055956A1 (en) Method and system for assembling concurrently-generated content
US20020099785A1 (en) Enhanced multimedia mobile content delivery and message system using cache management
US20020133566A1 (en) Enhanced multimedia mobile content delivery and message system using load balancing
JP2004527028A (ja) インタラクティブ・テレビ用のデジタル・テレビ・アプリケーション・プロトコル
EP1360598B1 (en) Assembling concurrently-generated personalized web pages
JP2000020415A (ja) Wwwサーバプロキシとwwwブラウザプロキシおよびwwwシステム
KR20050079524A (ko) Http 중계기, 이를 구비한 추가정보전달시스템 및추가정보 전달방법
JP2003518297A (ja) サーバベースのアクティブドキュメントの操作

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140730

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20160629

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170629

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190624

Year of fee payment: 9