KR102641971B1 - 하이브리드 클라이언트-서버 데이터 제공 - Google Patents
하이브리드 클라이언트-서버 데이터 제공 Download PDFInfo
- Publication number
- KR102641971B1 KR102641971B1 KR1020227033888A KR20227033888A KR102641971B1 KR 102641971 B1 KR102641971 B1 KR 102641971B1 KR 1020227033888 A KR1020227033888 A KR 1020227033888A KR 20227033888 A KR20227033888 A KR 20227033888A KR 102641971 B1 KR102641971 B1 KR 102641971B1
- Authority
- KR
- South Korea
- Prior art keywords
- content
- content provider
- server
- mediation
- request
- Prior art date
Links
- 238000000034 method Methods 0.000 claims abstract description 74
- 238000012545 processing Methods 0.000 claims abstract description 17
- 238000004458 analytical method Methods 0.000 claims description 43
- 230000004044 response Effects 0.000 claims description 29
- 230000005540 biological transmission Effects 0.000 claims description 10
- 238000000354 decomposition reaction Methods 0.000 claims description 4
- 230000000903 blocking effect Effects 0.000 claims description 2
- 230000010354 integration Effects 0.000 abstract description 3
- 230000008569 process Effects 0.000 description 13
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000002716 delivery method Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000011273 social behavior Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/957—Browsing optimisation, e.g. caching or content distillation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/612—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/562—Brokering proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/567—Integrating service provisioning from a plurality of service providers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
Abstract
하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 구현예는 클라이언트 장치에 의해 실행되는 애플리케이션에 의해, 애플리케이션과 통합된 복수의 콘텐츠 제공자 소프트웨어 개발 키트들(SDK들)로부터 상기 클라이언트 장치에 의한 디스플레이를 위해 콘텐츠 아이템을 요청하는 단계를 포함한다. 상기 방법은 또한 상기 콘텐츠 제공자 SDK들의 복수의 요청 어댑터들에 의해, 복수의 콘텐츠 제공자 서버들로의 잠재적인 제출을 위한 상기 요청을 프로세싱하여 복수의 프로세싱된 요청들을 발생하는 단계를 더 포함한다. 상기 방법은 상기 애플리케이션과 통합된 중개 SDK의 인터셉터 모듈에 의해, 상기 복수의 콘텐츠 제공자 SDK들로부터 복수의 프로세싱된 요청들을 수신하는 단계를 더 포함한다. 상기 방법은 상기 중개 SDK의 통합 모듈에 의해, 상기 복수의 프로세싱된 요청들을 배치 요청으로 배칭하는 단계 - 상기 배치 요청은 콘텐츠 제공자 우선순위 정보를 포함함 -를 더 포함한다. 상기 방법은 상기 중개 SDK에 의해, 상기 콘텐츠 제공자 우선순위 정보에 기초하여 상기 복수의 콘텐츠 제공자 서버들에 대한 상기 배치 요청의 중개를 위해 중개 서버에 상기 배치 요청을 전송하는 단계; 그리고 상기 중개 SDK에 의해, 상기 클라이언트 장치에 의한 디스플레이를 위해 상기 중개 서버로부터 적어도 하나의 콘텐츠 아이템을 수신하는 단계를 더 포함한다.
Description
본 발명은 하이브리드 클라이언트-서버 데이터 제공에 관한 것이다.
퍼블리셔들(Publishers)은 다수의 제3자 콘텐츠 제공자들로부터 콘텐츠를 요청할 수 있다. 이는 애플리케이션을 실행하는 클라이언트 장치상의 컴퓨팅 리소스, 예를 들어 상기 복수의 요청을 전송하기 위해 복수의 네트워크 연결들을 개방하는데 사용되는 메모리 측면에서 문제가 될 수 있다. 특히 네트워크가 3G 또는 4G 네트워크와 같은 모바일 네트워크인 경우 대기 시간 측면에서 문제가 발생할 수도 있다. 복수의 요청을 전송하고 클라이언트 장치에 의해 응답을 수신하는 것 사이에 상당한 지연 또는 랙(lag)이 있을 수 있다.
본 명세서에 설명된 구현예들은 데이터를 제공하도록 하는 요청의 중개(mediation)에 관한 것이다. 본 명세서에 설명된 방법은 다른 것들 중에서 중개 SDK가 클라이언트 장치에서 하나의 배치 요청(batch request)으로 여러 요청을 배칭(batching)하도록 하여 여러 콘텐츠 요청에 의해 나타나는 문제들을 개선하는 데 도움이 될 수 있고, 서드-파티(third-party) 콘텐츠 제공자들 중 적어도 하나로부터 콘텐츠를 획득하기 위해 중개 서버에 단일 배치 요청만을 전송할 수 있다.
하나의 구현예는 하이브리드 클라이언트-서버 데이터 제공 방법에 관한 것이다. 이 구현예에서, 이 방법은 클라이언트 장치에 의해 실행되는 애플리케이션으로 클라이언트 장치에 의해 디스플레이되는 콘텐츠 아이템을 상기 애플리케이션과 통합된 복수의 콘텐츠 제공자 소프트웨어 개발 키트들(software development kits, SDKs)에 요청하는 단계를 포함한다. 상기 방법은 복수의 콘텐츠 제공자 서버로의 잠재적 제출을 위해 상기 콘텐츠 제공자 SDK들의 복수의 요청 어댑터로 콘텐츠 아이템에 대한 요청을 프로세싱함으로써 복수의 프로세싱된 요청을 발생하는 단계를 더 포함한다. 상기 방법은 복수의 콘텐츠 제공자 SDK들로부터 상기 애플리케이션과 통합된 중개 SDK의 인터셉터 모듈로 복수의 프로세싱된 요청을 수신하는 단계를 더 포함한다. 상기 방법은 중개 SDK의 통합 모듈(consolidator module)로 복수의 프로세싱된 요청을 배치 요청으로 배칭하는 단계를 더 포함하며, 상기 배치 요청은 콘텐츠 제공자 우선순위 정보를 포함한다. 상기 방법은 상기 중개 SDK에 의해, 상기 콘텐츠 제공자 우선순위 정보에 기초하여 상기 복수의 콘텐츠 제공자 서버에 대한 상기 배치 요청의 중개를 위해 상기 배치 요청을 상기 중개 서버에 전송하는 단계를 더 포함한다. 본 방법은 중개 SDK(mediation SDK)에 의해, 클라이언트 장치에 의한 디스플레이를 위해 상기 중개 서버로부터 적어도 하나의 콘텐츠 아이템을 수신하는 단계를 더 포함한다.
이러한 구현예들 중 일부에서, 복수의 콘텐츠 제공자 서버로의 잠재적 제출을 위한 요청의 프로세싱은 복수의 콘텐츠 제공자 서버 중 하나에 대한 적절한 헤더 정보(proper header information)를 포함하는 단계를 포함한다.
이러한 구현예들 중 일부에서, 상기 콘텐츠 제공자 우선순위 정보는 콘텐츠 제공자 서버의 우선순위 랭킹(priority ranking)을 포함한다.
이러한 구현예들 중 일부에서, 콘텐츠 제공자 우선순위 정보는 상기 애플리케이션에 의해 상기 중개 SDK에 제공된다.
이러한 구현예들 중 일부에서, 상기 중개 SDK의 분석 엔진은 콘텐츠 제공자 우선순위 정보에 기초하여 상기 클라이언트 장치로 디스플레이하기 위해 적어도 하나의 콘텐츠 아이템으로부터 단일 콘텐츠 아이템을 선택한다.
이러한 구현예들 중 일부에서, 상기 중개 서버로부터 수신된 디스플레이를 위한 적어도 하나의 콘텐츠 아이템은 상기 중개 서버로부터 수신된 디스플레이를 위한 상기 콘텐츠의 유일한 아이템이고, 상기 디스플레이를 위한 상기 적어도 하나의 콘텐츠 아이템은 상기 중개 서버가 획득할 수 있는 상기 콘텐츠 제공자 우선순위 정보에 기초한 디스플레이를 위한 콘텐츠의 최상위 우선순위 아이템(highest priority item)이다.
이러한 구현예들 중 일부에서, 상기 배치 요청은 상기 중개 서버로부터의 응답에 대한 최대 허용 시간과 관련된 타이밍 정보를 더 포함한다.
이러한 구현예들 중 일부에서, 상기 배치 요청의 중개는 상기 타이밍 정보에 적어도 부분적으로 근거한다.
이러한 구현예들 중 일부에서, 상기 인터셉터 모듈은 상기 프로세싱된 요청들을 인터셉트(intercept)한다.
이러한 구현예들 중 일부에서, 상기 프로세싱된 요청들을 인터셉트하는 인터셉터 모듈은 상기 중개 SDK의 콜백 인터페이스(callback interface)를 사용하는 콘텐츠 제공자 SDK들을 포함한다.
이러한 구현예들 중 일부에서, 상기 프로세싱된 요청들을 인터셉트하는 상기 인터셉터 모듈은 상기 콘텐츠 제공자 서버들에 대한 상기 콘텐츠 제공자 SDK들에 의한 콜들(calls)을 차단하는 것을 포함한다.
하나의 구현예는 하이브리드 클라이언트-서버 데이터 제공 방법에 관한 것이다. 이 구현예에서, 상기 방법은 상기 중개 서버에 의해, 중개 소프트웨어 개발 키트(SDK)로부터 클라이언트 장치로 디스플레이하기 위한 콘텐츠 아이템에 대한 배치 요청을 수신하는 단계를 포함하며, 상기 배치 요청은 클라이언트 장치상의 복수의 콘텐츠 제공자 SDK들에 의해 프로세싱된 콘텐츠 아이템에 대한 복수의 프로세싱된 요청들에 기초하여 상기 중개 SDK의 통합 모듈(consolidator module)로 발생되고, 상기 배치 요청은 콘텐츠 제공자 우선순위 정보를 포함한다. 상기 방법은 상기 중개 서버의 해체 엔진(deconstruction engine)으로, 복수의 콘텐츠 제공자 특정 요청들을 발생하기 위한 배치 요청을 프로세싱하는 단계를 더 포함한다. 상기 방법은 상기 중개 서버로, 복수의 콘텐츠 제공자 서버들에 상기 복수의 콘텐츠 제공자 특정 요청들을 전송하는 단계를 더 포함한다. 상기 방법은, 상기 콘텐츠 제공자 서버들로부터 상기 중개 서버에 의해, 상기 콘텐츠 제공자 특정 요청들 중 적어도 하나에 응답하여 적어도 하나의 콘텐츠 아이템을 수신하고, 그리고 상기 콘텐츠 아이템을 상기 중개 서버의 분석 모듈의 콘텐츠 저장소에 저장하는 단계를 더 포함한다. 상기 방법은 상기 중개 서버의 분석 모듈로, 전송을 위해 적어도 하나의 저장된 콘텐츠 아이템을 선택하는 단계를 더 포함한다. 상기 방법은 상기 중개 서버에 의해, 상기 중개 SDK에 상기 선택된 콘텐츠 아이템을 전송하는 단계를 더 포함한다.
이러한 구현예들 중 일부에서, 상기 선택된 콘텐츠 아이템을 전송하는 단계는 미리결정된 타임아웃 기간 후에 발생한다.
이러한 구현예들 중 일부에서, 상기 배치 요청은 타이밍 정보를 더 포함한다.
이러한 구현예들 중 일부에서, 상기 선택된 콘텐츠 아이템을 전송하는 것은 상기 타이밍 정보에 기초하여 상기 분석 모듈에 의해 설정된 타임아웃 기간 후에 발생한다.
이러한 구현예들 중 일부에서, 전송을 위한 적어도 하나의 저장된 콘텐츠 아이템을 선택하는 것은 전송을 위한 복수의 저장된 콘텐츠 아이템을 선택하는 것을 포함한다.
이러한 구현예들 중 일부에서, 전송을 위한 적어도 하나의 저장된 콘텐츠 아이템을 선택하는 것은 상기 콘텐츠 제공자 우선순위 정보에 기초한다.
이러한 구현예들 중 일부에서, 본 방법은 상기 중개 SDK의 인터셉터 모듈에 의해, 상기 복수의 프로세싱된 요청들을 인터셉트하는 단계를 더 포함한다.
이러한 구현예들 중 일부에서, 상기 인터셉터 모듈에 의한 인터셉터는 상기 콘텐츠 제공자 SDK들에 의해 상기 중개 SDK의 콜백 인터페이스를 사용하는 것을 포함한다.
이러한 구현예들 중 일부에서, 상기 인터셉터 모듈에 의한 인터셉터는 상기 콘텐츠 제공자 서버들에 대한 상기 콘텐츠 제공자 SDK들에 의한 콜들을 차단(blocking)하는 것을 포함한다.
하나 이상의 구현예의 세부사항들은 첨부된 도면들 및 이하의 설명에서 설명된다. 본 명세서의 다른 특징들, 양태들 및 이점들은 상세한 설명, 도면들 및 청구 범위들로부터 명백해질 것이며,
도 1은 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 구현예에 사용될 수 있는 일반적인 아키텍처를 도시하는 개요이며;
도 2는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 구현예에 사용되는 컴포넌트들의 상세도이며;
도 3은 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 구현예에서 이들 컴포넌트들 간의 상호작용들 중 일부의 상세도이며;
도 4는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 또 다른 구현예에서 이들 컴포넌트들 간의 상호작용들 중 일부의 상세도이며;
도 5는 중개 서버의 분석 모듈의 결정 프로세스를 나타내는 흐름도이다.
도면들의 일부 또는 전부는 설명 목적을 위한 개략적인 표현인 것으로 인식될 것이다. 상기 도면들은 청구 범위의 범위 또는 의미를 제한하는 데 사용되지 않을 것이라는 명백한 이해로 하나 이상의 실시예들을 설명하기 위한 목적으로 제공된다.
도 1은 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 구현예에 사용될 수 있는 일반적인 아키텍처를 도시하는 개요이며;
도 2는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 구현예에 사용되는 컴포넌트들의 상세도이며;
도 3은 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 구현예에서 이들 컴포넌트들 간의 상호작용들 중 일부의 상세도이며;
도 4는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 또 다른 구현예에서 이들 컴포넌트들 간의 상호작용들 중 일부의 상세도이며;
도 5는 중개 서버의 분석 모듈의 결정 프로세스를 나타내는 흐름도이다.
도면들의 일부 또는 전부는 설명 목적을 위한 개략적인 표현인 것으로 인식될 것이다. 상기 도면들은 청구 범위의 범위 또는 의미를 제한하는 데 사용되지 않을 것이라는 명백한 이해로 하나 이상의 실시예들을 설명하기 위한 목적으로 제공된다.
다음은 하이브리드 클라이언트-서버 콘텐츠 제공 방법들 및 이들의 구현예들과 관련된 다양한 개념들에 대한 상세한 설명이다. 위에서 소개되고 아래에서보다 상세하게 논의되는 다양한 개념들은 설명된 개념들이 임의의 특정 구현 방식에 한정되지 않기 때문에 다양한 방식들 중 임의의 방식으로 구현될 수 있다. 특정 구현 예들 및 응용 예들은 주로 예시를 목적으로 제공된다.
컴퓨팅 장치(예를 들어, 클라이언트 장치)는 웹 페이지, 문서, 애플리케이션 등과 같은 리소스를 볼 수 있다. 일부 구현예들에서, 상기 컴퓨팅 장치는 그 리소스에 대응하는 웹 페이지 서버와 같은 서버와 통신함으로써 인터넷을 통해 상기 리소스에 액세스할 수 있다. 상기 리소스는 단일 서버에 의해 제공하거나 복수의 서버에 의해 제공될 수 있다. 예를 들어, 일부 구현예들에서, 리소스는 복수의 서버들로부터 이용 가능할 수 있고, 상기 컴퓨팅 장치는 둘 이상의 서버들로부터 상기 리소스를 요청할 수 있으며, 상기 리소스는 예컨대 상기 리소스에 대한 요청에 응답하기 위해 복수의 서버 중 제1 서버에 의해 상기 컴퓨팅 장치에 제공된다. 부가적으로 또는 대안으로, 상기 리소스는 상이한 서버들에 의해 제공될 수 있는 상이한 콘텐츠를 포함할 수 있다. 예를 들어, 상기 리소스의 퍼스트-파티 콘텐츠(first party content)는 제1 서버로부터 제공될 수 있고, 상기 리소스의 부가적인 서드-파티(third-party) 콘텐츠는 상기 리소스의 퍼스트-파티 콘텐츠가 상기 제1 서버로부터 제공될 수 있도록 복수의 추가 서버에 의해 제공될 수 있으며, 상기 리소스의 서드-파티 콘텐츠는 미리 결정된 기준에 기초하여 하나 이상의 추가 서버들에 의해 제공될 수 있다. 이러한 방식으로 복수의 서버들로부터의 콘텐츠 제공은, 예를 들어, 컴퓨팅 장치에 대한 콘텐츠의 가장 신속한 제과 같은 미리결정된 기준에 기초하여 콘텐츠의 제공을 위해 서버가 선택되도록 한다.
또한, 모바일 애플리케이션과 같은 애플리케이션에 의해 데이터를 실행하고 또는 시청하는(viewing) 컴퓨팅 장치(예를 들어, 클라이언트 장치)에 콘텐츠를 제공하기 위해 복수의 서버로부터의 콘텐츠 제공이 추가로 사용될 수 있다. 상술한 웹 페이지와 같은 리소스의 시청과 유사하게, 애플리케이션과 연관된 콘텐츠는 복수의 서버로부터 이용 가능할 수 있고, 상기 콘텐츠는 미리결정된 기준에 기초하여 상기 서버들 중 하나에 의해 제공되는 상기 애플리케이션과 연관된 콘텐츠를 갖는 복수의 서버들로부터 컴퓨팅 장치에 의해 요청될 수 있고, 또는 퍼스트-파티 콘텐츠는 퍼스트-파티 콘텐츠 제공자에 의해 제공될 수 있으며, 추가적인 서드-파티가 제공한 콘텐츠는 미리결정된 기준에 기초하여 서드-파티 콘텐츠 제공자에 의해 제공되는 서드-파티가 제공한 콘텐츠를 갖는 복수의 서드-파티 콘텐츠 제공자들로부터 요청될 수 있다. 일 구현예에서, 상기 애플리케이션의 사용에 응답하여, 리소스 서버 및/또는 클라이언트 장치는 콘텐츠 아이템 선택 시스템과 같은 데이터 처리 시스템과 통신하여 콘텐츠 아이템이 상기 애플리케이션의 사용자 인터페이스 및/또는 다른 것으로 제공되도록 요청할 수 있다. 상기 콘텐츠 아이템 선택 시스템은 서드-파티 콘텐츠 아이템을 선택할 수 있고, 클라이언트 장치의 디스플레이상에 상기 애플리케이션과 함께 상기 콘텐츠 아이템의 프리젠테이션을 수행하도록 데이터를 제공할 수 있다.
일부 경우에, 장치 식별자는 클라이언트 장치와 연관될 수 있다. 상기 장치 식별자는 리소스 및/또는 콘텐츠 아이템에 대한 후속 요청 동안 상기 장치를 식별하기 위해 상기 클라이언트 장치와 연관된 무작위 번호일 수 있다. 일부 예에서, 상기 장치 식별자는 상기 클라이언트 장치에 관련된 정보를 저장하고 및/또는 상기 클라이언트 장치로 하여금 상기 클라이언트 장치와 관련된 정보를 상기 콘텐츠 아이템 선택 시스템 및/또는 리소스 서버에 전송하도록 구성될 수 있다(예를 들어, 센서 데이터의 값들, 웹 브라우저 타입, 운영 시스템, 히스토리 리소스 요청들, 이력 콘텐츠 아이템 요청들 등).
본 명세서에 설명된 시스템들이 사용자들에 대한 개인 정보를 수집하거나 개인 정보를 사용할 수 있는 상황에서, 사용자는 프로그램들 또는 피처들(features)이 사용자 정보(예를 들어, 사용자의 소셜 네트워크, 사회적 행동 또는 활동, 직업, 사용자의 선호도 또는 사용자의 현재 위치에 대한 정보)를 수집하는지 또는 콘텐츠 서버로부터 콘텐츠를 수신할지 및/또는 수신하는 방법을 제어할지 여부를 제어할 수 있는 기회를 제공받을 수 있다. 또한, 소정 데이터는 저장되거나 사용되기 전에 하나 이상의 방법으로 취급되어 개인 식별 정보가 제거된다. 예를 들어, 사용자의 신원정보가 처리되어 사용자에 대한 개인 식별 정보가 결정될 수 없거나 사용자의 지리적 위치가 위치 정보가 획득된 곳(예를 들어, 도시, 우편 번호 또는 주 레벨(state level))로 일반화될 수 있어, 사용자의 특정 위치는 결정될 수 없다. 따라서, 사용자는 사용자에 관한 정보 수집 방법 및 콘텐츠 서버에 의한 사용 방법을 제어할 수 있다.
전술한 바와 같이, 컴퓨팅 장치(예를 들어, 클라이언트 장치)는 또한 모바일 애플리케이션과 같은 애플리케이션을 보거나 실행하는데 사용될 수 있다. 상기 애플리케이션은 퍼스트-파티 콘텐츠 제공자로부터의 애플리케이션의 서브젝트인 퍼스트-파티 콘텐츠를 포함할 수 있으며, 또한, 추가적인 서드-파티 콘텐츠를 포함할 수 있다. 일 구현예에서, 상기 애플리케이션의 사용에 응답하여, 리소스 서버 및/또는 클라이언트 장치는 콘텐츠 아이템 선택 시스템과 같은 데이터 처리 시스템과 통신하여 콘텐츠 아이템이 상기 애플리케이션의 사용자 인터페이스 및/또는 다른 것으로 제공되도록 요청할 수 있다.
상기 요청은 적어도 하나 또는 복수의 서드-파티 콘텐츠 제공자가 적어도 하나 또는 복수의 콘텐츠 아이템을 제공하도록 하는 목적으로 복수의 서드-파티 콘텐츠 제공자에 대한 요청일 수 있고, 적어도 하나 또는 복수의 애플리케이션의 사용자 인터페이스상에서 사용자에게 제공될 수 있다. 이러한 요청은 상기 서드-파티 콘텐츠 제공자들에 제공되기 전에 프로세싱될 필요가 있다. 예를 들어, 상기 요청은 HTTP GET 요청일 수 있으며, 상기 요청은 서드-파티 콘텐츠 제공자에 제공되기 전에, 예를 들어 적절한 IP 헤더, 쿼리 파라미터들(query parameters)의 적절한 설정 또는 기타 요구 사항들이 필요할 수 있다. 그러한 프로세싱은 상기 애플리케이션과 통합된 SDK들을 사용하여 처리될 수 있다. 상기 SDK들은 상기 애플리케이션의 개발자가 사용하기 위한 서드-파티 콘텐츠 제공자에 의해 제공될 수는 있지만, 그렇게 할 필요가 없을 수도 있다.
일부 경우에, 전술한 바와 같이, 상기 애플리케이션은 예를 들어 콘텐츠를 가장 신속하게 제공할 수 있는 서드-파티 콘텐츠 제공자와 같이 미리결정된 기준을 만족시키는 서드-파티 콘텐츠 제공자들 중 하나로부터 콘텐츠를 획득하기 위해 복수의 서드-파티 콘텐츠 제공자에 콘텐츠를 요청할 수 있다.
예를 들어, 복수의 서버들로부터 콘텐츠를 요청하는 애플리케이션에 의해 많은 수의 요청들이 전송될 필요가 있음이 이해될 것이다. 이는 애플리케이션을 실행하는 클라이언트 장치상의 컴퓨팅 리소스, 예를 들어 상기 복수의 요청을 전송하기 위해 복수의 네트워크 연결들을 개방하는데 사용되는 메모리 측면에서 문제가 될 수 있다. 특히 네트워크가 3G 또는 4G 네트워크와 같은 모바일 네트워크인 경우 대기 시간 측면에서 문제가 발생할 수도 있다. 복수의 요청을 전송하고 클라이언트 장치에 의해 응답을 수신하는 것 사이에 상당한 지연 또는 랙이 있을 수 있다. 본 명세서에 설명된 방법들은 다른 것들 중에서 중개 SDK가 클라이언트 장치에서 하나의 배치 요청으로 여러 요청을 배칭하도록 하여 적어도 이 문제를 개선하는 데 도움이 될 수 있고, 상기 클라이언트 장치에 콘텐츠의 제공을 인스턴스화(instantiate)하기 위해 중개 서버에 단일 배치 요청만 전송할 수 있다. 이러한 방식으로, 콘텐츠는 상기 기술된 클라이언트 장치 및 대기시간에 대한 상기 컴퓨팅 리소스들과 연관된 문제점들을 피하면서 더 효과적으로 콘텐츠를 수신할 수 있도록 복수의 콘텐츠 소스 중 하나로부터 상기 클라이언트 장치에 제공될 수 있다.
도 1은 하이브리드 클라이언트-서버 콘텐츠 제공을 위한 방법의 구현예에 사용될 수 있는 시스템(100)의 일반적인 아키텍처를 도시하는 개요이다. 클라이언트 장치(102)는 컴퓨터, 랩탑, 데스크탑, 스마트 폰, 태블릿, 개인 휴대 정보 단말기, 텔레비전 세트용 셋톱 박스, 스마트 텔레비전, 또는 예를 들어, 네트워크(108)를 통해 다른 장치들과 통신하도록 구성된 서버 장치와 같은 하나 이상의 장치를 포함할 수 있다. 상기 클라이언트 장치는 이하에서 상세히 설명되는 중개 SDK뿐만 아니라 콘텐츠 제공자 SDK 1 및 콘텐츠 제공자 SDK n과 같은 하나 또는 복수의 콘텐츠 제공자 SDK들을 포함할 수 있다.
일구현예에서, 시스템(100)은 LAN(local area network), WAN(wide area network), 무선 링크, 인트라넷, 인터넷, 또는 이들의 조합을 각각 포함할 수 있는 네트워크(108) 및 네트워크(110)를 포함한다. 시스템(100)은 이하에서보다 상세하게 설명되는 중개 서버(104) 및 콘텐츠 제공자 서버(106)를 더 포함한다.
도 2는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 구현예에 사용될 수 있는 시스템(100)에서 사용될 수 있는 컴포넌트들, 장치들 및 네트워크들 중 일부를 나타낸다.
시스템(100)은 클라이언트 장치(102)를 포함할 수 있다. 클라이언트 장치(102)는 컴퓨터, 랩탑, 데스크탑, 스마트 폰, 태블릿, 개인 휴대 정보 단말기, 텔레비전 세트용 셋톱 박스, 스마트 텔레비전, 또는 예를 들어 네트워크(108)를 통해 다른 장치들과 통신하도록 구성된 서버 장치와 같은 하나 이상의 장치를 포함할 수 있다. 상기 장치는 데이터 프로세서 및 메모리를 포함하는 임의의 형태의 휴대용 전자 장치일 수 있다. 상기 메모리는 프로세서에 의해 실행될 때 프로세서로 하여금 본 명세서에 설명된 하나 이상의 동작들을 수행하게 하는 기계 명령어들을 저장할 수 있다. 상기 메모리는 컴퓨팅 장치상의 하나 이상의 리소스들, 콘텐츠 아이템들 등의 프리젠테이션을 수행하기 위한 데이터를 저장할 수도 있다. 상기 프로세서는 마이크로 프로세서, 주문형 집적 회로(ASIC), FPGA(field-programmable gate array) 등 또는 이들의 조합들을 포함할 수 있다. 상기 메모리는 전자, 광학, 자기 또는 프로세서에 프로그램 명령어들을 제공 할 수 있는 임의의 다른 저장소 또는 전송 장치를 포함 할 수 있지만, 이에 한정되는 것은 아니다. 상기 메모리는 플로피 디스크, CD-ROM(compact disc read-only memory), DVD(digital versatile disc), 자기 디스크, 메모리 칩, ROM(read-only memory), RAM(random-access memory), EEPROM(Electrically Erasable Programmable Read-Only Memory), EPROM(erasable programmable read only memory), 플래시 메모리, 광 매체 또는 프로세서가 명령어들을 판독할 수 있는 임의의 다른 적절한 메모리를 포함할 수 있다. 상기 명령어들은 ActionScript, C, C ++, C#, HTML, 자바(Java), 자바스크립트(JavaScript), 펄(Perl), 파이썬(Python), 비주얼 베이직(Visual Basic) 및 XML과 같은 적합한 컴퓨터 프로그래밍 언어의 코드를 포함될 수 있지만, 이에 한정되지는 않는다.
상기 클라이언트 장치(102)는 네트워크(108)를 통해 다른 컴퓨팅 장치들로부터 콘텐츠를 검색하기 위해 소프트웨어 애플리케이션(206)(예를 들어, 웹 브라우저 또는 다른 애플리케이션)을 실행할 수 있다. 일부 경우들에 있어서, 클라이언트 장치(110)상에서 실행되는 애플리케이션은 예를 들어, 게임, 미디어 플레이어 등일 수 있다. 일 구현예에서, 클라이언트 장치(102)는 클라이언트 장치의 디스플레이 상에 브라우저 윈도우를 제공하는 웹 브라우저 애플리케이션을 실행할 수 있다. 상기 브라우저 윈도우를 제공하는 웹 브라우저 애플리케이션은 입력 장치(예를 들어, 포인팅 장치, 키보드, 터치 스크린 또는 다른 형태의 입력 장치)로부터 웹 주소와 같은 URL(Uniform Resource Locator)의 입력을 수신함으로써 작동할 수 있다. 이에 응답하여, 상기 웹 브라우저 애플리케이션으로부터의 명령어들을 실행하는 클라이언트 장치의 하나 이상의 프로세서(200)는 URL 주소(예를 들어, 중개 서버(104))에 의해 참조되는 네트워크(108)에 연결된 다른 장치에 데이터를 요청할 수 있다. 상기 다른 장치는 웹 페이지 데이터 및/또는 다른 데이터를 클라이언트 장치(102)에 제공할 수 있으며, 이는 시각적인 표시(visual indicia)가 클라이언트 장치(102)의 디스플레이(204)에 의해 디스플레이되게 한다.
상기 애플리케이션(206)은 콘텐츠 제공자(108)와 같은 복수의 콘텐츠 제공자로부터 콘텐츠 아이템에 대한 요청을 시작(initiate)할 수 있다. 이는 콘텐츠 제공자 1, 2, ..., n에 의해 제공된 콘텐츠 아이템에 대한 요청 1, 2, ..., n을 포함할 수 있다. 상기 요청은 위에서 설명된 것처럼 상기 콘텐츠 제공자들에게 제공되기 전에 프로세싱을 요구할 수 있다. 일 구현예에서, 상기 요청은 상기 애플리케이션과 통합될 수 있는 콘텐츠 제공자 SDK 1, 콘텐츠 제공자 SDK 2, ... 및 콘텐츠 제공자 SDK n과 같은 다수의 콘텐츠 제공자 SDK들 각각으로 전송된다. 상기 SDK들은 예를 들어 라이브러리, API 및/또는 하드웨어 플랫폼과 같은 소프트웨어 개발 도구 세트를 포함할 수 있다. 콘텐츠 제공자 SDK 1는 콘텐츠 제공자 1과 연관되어, 콘텐츠 제공자 1에 제공될 수 있는 콘텐츠 아이템에 대한 요청을 적어도 프로세싱할 수 있다. 마찬가지로, 콘텐츠 제공자 SDK n은 콘텐츠 제공자 n과 연관되어, 콘텐츠 제공자 n에 제공될 수 있는 콘텐츠 아이템에 대한 요청을 적어도 프로세싱할 수 있다. 상기 프로세싱은 콘텐츠 제공자 SDK의 어댑터 예를 들어 콘텐츠 제공자 SDK 1의 어댑터 1에 의해 처리될 수 있다. 상기 어댑터는 예를 들어 상기 요청에 특정 콘텐츠 제공자에 제출할 적절한 헤더(proper header)가 있음을 보장할 수 있다.
일 구현예에서, 상술한 바와 같이 요청들을 프로세싱한 후에, 콘텐츠 제공자 SDK들은 상기 프로세싱된 요청을 콘텐츠 제공자에 전송하지 않는다. 오히려, 상술한 바와 같이 요청들을 프로세싱한 후에, 상기 프로세싱된 요청들은 인터셉터 모듈(222)을 통해 중개 SDK(216)에 의해 인터셉트된다. 일 구현예에서, 인터셉터 모듈(222)은 콘텐츠 제공자 SDK들과 통합되어 잘 정의된 콜백 인터페이스를 제공하고, 각각의 콘텐츠 제공자 서버들과 접촉을 시작하는 콘텐츠 제공자 SDK들 대신에, 상기 프로세싱된 요청은 예를 들어, 최종적으로 배칭하기 위해 상기 인터셉터 모듈로 전달된다. 일 구현예에서, 인터셉트는 부가적으로 또는 대안적으로, 콘텐츠 제공자 SDK들로부터 콘텐츠 제공자 서버들로의 HTTP 콜들(calls)이 차단되도록 낮은 네트워크 레벨에서 구현될 수 있다. 예를 들어, 패킷 인스펙션 필터링(packet inspection filtering)을 사용하여 차단될 수 있다. 중개 SDK(216)는 예를 들어 라이브러리, API 및/또는 하드웨어 플랫폼과 같은 소프트웨어 개발 도구 세트를 포함할 수 있다. 일 구현예에서, 중개 SDK(216)는 콘텐츠 우선순위 정보 저장소(220)를 포함하는 메모리(218)를 포함한다. 중개 SDK(216)는 또한 일 구현예에서 통합 모듈(consolidator module)(224)을 포함한다. 상기 중개는 애플리케이션(206) 및/또는 콘텐츠 제공자 SDK 1 내지 n 중 어느 것 또는 모두와 통합될 수 있다. 상기 콘텐츠 제공자 우선순위 정보 저장소는 예를 들어, 우선순위 랭킹과 같은 콘텐츠 제공자 우선순위 정보, 또는 상이한 콘텐츠 제공자들이 얼마나 효과적으로 콘텐츠를 제공하는지를 결정하는데 유용한 다른 정보를 저장할 수 있다. 예를 들어, 상기 데이터는 각각의 콘텐츠 제공자에 대한 평균 연결 속도 또는 대기시간을 나타내거나, 또는 각 콘텐츠 제공자로부터 제공된 콘텐츠의 압축률과 같이 제공된 콘텐츠의 품질을 나타내는 데이터를 나타낼 수 있다.
일 구현예에서, 인터셉터 모듈(222)은 예를 들어, 개별적인 콘텐츠 제공자 SDK들(1 내지 n)뿐만 아니라 상기 애플리케이션 내의 코드를 통해 통합될 수 있어서, 콘텐츠 제공자 SDK들은 전술한 상기 프로세싱된 요청들을 인터셉터 모듈(222)에 전송한다. 일 구현예에서, 통합 모듈(224)은 임의의 및 모든 프로세싱된 요청들을 프로세싱하고 그리고 단일 배치 요청을 발생한다. 상기 배치 요청은 중개 서버(104)가 콘텐츠 제공자 SDK들(1 내지 n)에 의해 프로세싱된 상기 프로세싱된 요청들을 재구성하는데 필요한 일부 또는 모든 정보를 포함한다. 또한, 이는 콘텐츠 제공자 우선순위 정보 저장소(220)에 저장된 콘텐츠 제공자 우선순위 정보를 포함한다.
일 구현예에서, 상기 배치 요청은 네트워크(108)를 통하고 중개 SDK(216)의 네트워크 인터페이스를 통해 중개 서버(104)로 전송된다. 네트워크(108)는 근거리 통신망(LAN), 광역 통신망(WAN), 무선 링크, 인트라넷, 인터넷, 또는 이들의 조합들을 포함할 수 있다. 단일 요청만이 네트워크(108)를 통해 전송된다는 사실로 인해, 중개 SDK(216)의 네트워크 인터페이스에 대한 부하가 적고 네트워크(108)상의 부하가 적기 때문에 콘텐츠에 대한 다수의 요청들을 중개하려고 시도할 때 종종 나타나는 대기시간 문제들이 크게 개선된다.
일 구현예에서, 상기 배치 요청은 중개 서버(104)의 네트워크 인터페이스에 의해 수신된다. 중개 서버(104)는 웹 페이지 또는 다른 리소스(예를 들어, 기사(articles), 댓글 스레드(comment threads), 음악, 비디오, 그래픽, 검색 결과들, 정보 피드들(information feeds) 등)와 같은 리소스를 호스팅하도록 구성되고, 서버와 같은 컴퓨팅 장치를 포함할 수 있다. 중개 서버(104)는 컴퓨터 서버(예를 들면, 파일 전송 프로토콜(FTP) 서버, 파일 공유 서버, 웹 서버 등) 또는 서버들의 조합(예를 들어, 데이터 센터, 클라우드 컴퓨팅 플랫폼 등)이 될 수 있다. 중개 서버(104)는 클라이언트 장치(102)에 리소스 데이터 또는 다른 콘텐츠 (예를 들어, 텍스트 문서, PDF 파일들 및 다른 형태의 전자 문서들)를 제공할 수 있다.
일 구현예에서, 상기 배치 요청은 중개 서버의 메모리(228)에 저장된 중개 서버(104)의 해체 엔진(deconstruction engine)(230)에 의해 프로세싱된다. 상기 해체 엔진은 중개 SDK(216)에 의해 발생된 배치 요청을 콘텐츠 제공자 SDK들(1 내지 n)에 의해 프로세싱된 상기 프로세싱된 요청들에 대응하는 복수의 프로세싱된 요청들로 해체할 수 있도록 미리 구성된다. 상기 복수의 프로세싱된 요청 각각은 전술한 바와 같이 콘텐츠 제공자에 제출하기에 적합하다.
일 구현예에서, 중개 서버는 또한 메모리(228)에 저장된 분석 모듈(232)을 갖는다. 상기 분석 모듈은 이하에서 설명되는 콘텐츠 저장소(234), 카운터(236) 및 콘텐츠 제공자 우선순위 정보 저장소(238)를 갖는다.
상기 중개 서버는 상기 프로세싱된 요청을 네트워크(110)를 통해 네트워크 인터페이스로 특정 콘텐츠 제공자 서버들에 전송할 수 있다(네트워크(110)는 근거리 통신망(LAN), 광역 통신망(WAN), 무선 링크, 인트라넷, 인터넷, 또는 이들의 조합을 포함할 수 있다). 예를 들어, 콘텐츠 제공자 SDK 1에 의해 프로세싱된 요청에 대응하는 프로세싱된 요청은 콘텐츠 제공자 서버 1에 전송될 수 있다. 콘텐츠 제공자 SDK 2에 의해 프로세싱된 요청에 대응하는 프로세싱된 요청은 콘텐츠 제공자 서버 2로 전송될 수 있고, 콘텐츠 제공자 SDK n에 의해 프로세싱된 요청에 대응하는 이후 프로세싱된 요청은 콘텐츠 제공자 서버 n에 전송될 수 있다. 이러한 방식으로, 클라이언트 장치(102)상의 애플리케이션(206)에 의해 이루어진 초기 요청들에 대응하는 요청들은 적합한 콘텐츠 제공자 서버들에서 적절하게 프로세싱되고 제공될 수 있다.
콘텐츠 제공자 서버, 예를 들어 도 2에 도시된 바와 같은 콘텐츠 제공자 서버(108)는 상술한 요청들과 같은 요청에 응답할 수 있고, 네트워크(110)를 통해 콘텐츠 아이템을 중개 서버(104)에 전송할 수 있다. 그 다음에 이 콘텐츠 아이템은 콘텐츠 저장소(234)에 저장될 수 있다. 일 구현예에서, 중개 서버(104)의 분석 모듈(232)은 상기 수신된 콘텐츠 아이템(들)을 프로세싱한다. 상기 분석 모듈에는 얼마나 많은 응답이 예상되는지를 결정할 수 있는 데이터가 저장되어 있다. 이 데이터는 예를 들어 상기 배치 요청을 프로세싱한 후 상기 해체 엔진에 의해 제공될 수 있다. 상기 중개 서버가 콘텐츠 제공자들로부터 콘텐츠의 아이템들을 수신함에 따라, 상기 아이템들은 상기 콘텐츠가 수신될 때 중개 SDK(216)로 전송되어, 그 콘텐츠가 상기 콘텐츠에 대한 요청과 상기 장치로의 상기 콘텐츠의 제공 간의 최소화된 시간으로 상기 클라이언트 장치에 제공될 수 있다. 대안적으로, 상기 콘텐츠는 상술한 바와 같이 콘텐츠 저장소(234)에 저장될 수 있고, 카운터(236)는 저장된 콘텐츠의 각 아이템에 대해 증가될 수 있다. 상기 중개 서버가 예를 들어 콘텐츠 제공자로부터 콘텐츠의 아이템을 제공할 수 없거나 또는 제공할 의사가 없다는 통지를 수신하면, 카운터(236)는 또한 증가될 수 있다. 일부 구현예들에서, 카운터(236)는 예를 들어, 예상되는 모든 응답이 언제 고려되었는지를 결정하기 위해 분석 모듈(232)에 의해 사용될 수 있다. 그 다음에 분석 모듈(232)은 네트워크(108)를 통해 중개 SDK(216)에 상기 저장된 콘텐츠 아이템들을 전송하거나, 중개 서버(104)가 네트워크(108)를 통해 중개 SDK(216)에 상기 저장된 콘텐츠 아이템들을 전송하도록 하거나, 상기 중개 서버의 임의의 컴포넌트 또는 모듈이 네트워크(108)를 통해 중개 SDK(216)에 상기 저장된 콘텐츠 아이템들을 전송하도록 할 수 있다. 대안적으로 또는 부가적으로, 상기 저장된 콘텐츠 아이템들은 클라이언트 장치(102) 또는 클라이언트 장치(102)의 임의의 컴포넌트 또는 모듈에 전송될 수 있다. 일단 클라이언트 장치로 전송되면, 중개 SDK(216), 또는 애플리케이션(206), 또는 클라이언트 장치 또는 클라이언트 장치의 임의의 컴포넌트 또는 모듈을 조합하여 또는 달리 사용하여 디스플레이할 콘텐츠 아이템을 결정할 수 있다. 이러한 결정은 상기 콘텐츠 제공자 우선순위 정보에 기초할 수 있다. 예를 들어, 고품질의 콘텐츠로 결정된 콘텐츠 제공자에 의해 제공되는 콘텐츠 아이템이 선택될 수 있다.
분석 모듈(232)은 저장된 모든 콘텐츠 아이템들을 전송하는 대신에, 어떤 단일 콘텐츠 아이템이 디스플레이되어야 하는지를 결정하고, 그 콘텐츠 아이템만을 예를 들어 중개 SDK에 전송할 수 있다. 이러한 결정은 콘텐츠 제공자 우선순위 정보 저장소(238)에 저장된 콘텐츠 제공자 우선순위 정보에 기초할 수 있다. 예를 들어, 상기 제공된 콘텐츠의 품질은 상기 우선순위 정보, 예를 들어, 상기 콘텐츠 제공자에 의해 제공된 품질에 대한 히스토리 데이터(historical data)에 기초하여 결정될 수 있고, 상기 분석 모듈은 상기 품질이 미리결정된 기준을 충족시키지 않으면 미리 결정된 시간 동안 추가 데이터를 대기할 수 있다. 상기 미리 결정된 시간이 초과되면, 상기 분석 모듈은 고품질을 갖는 수신 된 콘텐츠를 전송할 수 있다.
일 구현예에서, 분석 모듈(232)은 전술한 방식으로 고려될 모든 전송된 요청들을 기다리지 않고 콘텐츠 저장소(234)에 저장되면 콘텐츠의 최상위 전체 우선순위 아이템을 동적으로 선택하여 전송한다. 이는 분석 모듈이 상기 콘텐츠 제공자 우선순위 정보에 기초하여 가장 높은 전체 우선순위 콘텐츠 제공자를 결정하게 함으로써 구현될 수 있다. 이 콘텐츠 제공자로부터 수신된 콘텐츠 저장소(234)에 저장된 콘텐츠 아이템은 분석 모듈(232)에 의해 콘텐츠의 가장 높은 전체 우선순위 아이템으로 태그(tag)된다. 일 구현예에서, 일단 그 콘텐츠 아이템이 그렇게 태그되면, 예를 들어, 중개 SDK(216)에 즉시 전송되고, 차례로 디스플레이할 수 있다. 이는 분석 모듈(232)이 콘텐츠의 가장 높은 전체 우선순위 아이템보다 우선순위가 낮은 콘텐츠 아이템을 수신하고 저장하는 것을 기다릴 필요가 없기 때문에, 가장 높은 우선순위의 콘텐츠 아이템을 제공하는 전체 프로세스를 단축할 수 있게 한다.
다른 구현예에서, 분석 모듈(232)은 타임아웃 기간을 사용하여 콘텐츠 제공자로부터의 콘텐츠 아이템이 수신될 수 있는 최대 시간을 설정한다. 상기 타임아웃 기간은, 예를 들어, 중개 서버(104)로부터의 응답에 대한 최대 허용 시간과 관련된 타이밍 정보에 기초할 수 있다. 중개 SDK(216)에 의해 전송된 상기 배치 요청은 이러한 타이밍 정보를 포함할 수 있다. 예를 들어, 분석 모듈(232)은 콘텐츠 제공자 SDK n에 의해 프로세싱된 상기 프로세싱된 요청에 대응하는 콘텐츠 제공자 n에 제1 프로세싱된 요청을 전송할 때 타이머를 시작할 수 있다. 이 타이머는 상기 타이밍 정보에 기초하여 분석 모듈(232)에 의해 결정된 타임아웃 기간과 연속적으로 비교된다. 대안적으로, 상기 타임아웃 기간은 상기 중개 서버에 저장된 미리 결정된 값에 대응할 수 있다. 상기 타임아웃 기간은 임의의 시간일 수 있지만, 바람직하게는 1초 이하이다.
일 구현예에서, 상기 타이머가 상기 고정된 타임아웃 기간을 초과하는 시간을 카운트하면, 분석 모듈(232)은 상기 저장된 콘텐츠 아이템들을 네트워크(108)를 통해 중개 SDK(216)에 전송한다. 상기 분석 모듈은 또한 전술한 방식으로 콘텐츠 저장소(234)에 저장된 콘텐츠 아이템들 중 가장 높은 우선순위 콘텐츠 아이템으로 결정하는 단일 콘텐츠 아이템을 전송할 수 있다.
도 3은 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 구현예에서 시스템(100)의 컴포넌트들 간의 상호작용의 일부를 나타낸다. 이 도면에서, 화살표들은 일반적으로 프로세싱된, 프로세싱되지 않은, 배칭된(batched) 또는 다른 상태의 콘텐츠 아이템에 대한 요청들을 나타낸다. 일 구현예에서, 2개의 요청은 애플리케이션(206)으로부터 발생하고, 하나는 콘텐츠 제공자 SDK 1로 가고, 다른 하나는 콘텐츠 제공자 SDK n으로 간다. 어댑터 1과 어댑터 n은 각각 수신된 요청들을 프로세싱하고, 콘텐츠 제공자 서버에 제출하기 위해 적절한 형식으로 프로세싱된 요청들을 출력하며, 예를 들어, 어댑터 1에 의해 프로세싱된 상기 프로세싱된 요청은 콘텐츠 제공자 1에 제출하기 위한 적절한 헤더 정보를 갖으며, 어댑터 n에 의해 프로세싱된 상기 프로세싱된 요청은 콘텐츠 제공자 n에 제출하기 위한 적절한 헤더 정보를 갖는다.
일 구현예에서, 상기 애플리케이션 또는 콘텐츠 제공자 SDK들, 또는 둘 모두와 통합된 인터셉터 모듈(222)은 이들 2개의 프로세싱된 요청들을 수신한다. 통합 모듈(224)은 이들 요청들을 콘텐츠 제공자 우선순위 정보를 포함하는 단일 배치 요청으로서 함께 배칭하고, 그 단일 배치 요청(단일 화살표로 표시됨)을 네트워크(108)를 통해 중개 서버(104)에 전송한다. 그 다음에 중개 서버(104)는 상기 콘텐츠 제공자 우선순위 정보에 기초하여 2개의 콘텐츠 제공자 서버들에 대한 상기 배치 요청을 중개한다. 그 다음에, 중개 서버(104)는 네트워크(108)를 통해 중개 SDK(216)에 하나의 최우선순위의 콘텐츠 아이템을 다시 전송하고, 중개 SDK(216)는 상기 단일 최우선순위 콘텐츠 아이템을 디스플레이하거나 디스플레이하게 한다.
도 4는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법의 구현예에서 시스템(100)의 컴포넌트들 간의 일부 다른 상호작용들을 나타낸다. 일 구현예에서, 중개 서버(104)는 네트워크(108)를 통해 중개 SDK(216)로부터 단일 화살표로 나타낸 단일 배치 요청을 수신한다. 상기 배치 요청은 콘텐츠 우선순위 정보를 콘텐츠 우선순위 정보 저장소(238)에 저장하는 분석 모듈(232)의 해체 엔진(230)에 의해 프로세싱되고, 네트워크(110)를 통해 2개의 화살표로 나타낸 2개의 요청을 전송하고, 콘텐츠 제공자 SDK 1에 의해 프로세싱된 상기 프로세싱된 요청에 대응하는 하나의 요청은 콘텐츠 제공자 서버 1로 가고, 콘텐츠 제공자 SDK n에 의해 프로세싱된 상기 프로세싱된 요청에 대응하는 하나의 요청은 콘텐츠 제공자 서버 n로 간다. 콘텐츠 제공자 서버들은 콘텐츠 저장소(234)에 저장된 2개의 콘텐츠 아이템들을 반환(return)한다. 그 다음에 상기 중개 서버의 분석 모듈(232)은 네트워크(108)를 통해 콘텐츠 저장소(234)로부터 중개 SDK(216)로 두 콘텐츠 아이템들을 선택하여 전송한다. 중개 SDK(216)는 콘텐츠 제공자 우선순위 정보에 기초하여 단일 최우선순위 콘텐츠 아이템을 디스플레이하거나 디스플레이하게 할 수 있다.
도 5는 분석 모듈(232)에 의한 전송 결정 프로세스를 나타내는 흐름도이다. 일 구현예에서, 분석 모듈(232)은 미리결정된 타임아웃 기간을 갖는다. 중개 서버(104)는 400단계에서 복수의 콘텐츠 제공자 서버에 콘텐츠 아이템을 요청할 수 있다. 402단계에서, 중개 서버는 타임아웃(상기 미리결정된 타임아웃 기간에 기초함) 또는 새로운 응답, 즉 콘텐츠 제공자 서버에 의해 제공된 새로운 콘텐츠 아이템 또는 실패 통지를 기다린다. 타임아웃이 발생하면, 416단계에서 분석 모듈(232)은 콘텐츠 저장소(234)에 저장된 콘텐츠 아이템이 존재하는지를 결정한다. 만약 존재하지 않으면, 418단계에서 중개 서버(104)는 네트워크(108)를 통해 중개 SDK(216)에 실패 응답을 전송한다. 예를 들어, 중개 서버(104)는 미리결정된 실패 신호를 중개 SDK(216)에 전송하여 중개를 트리거하여 콘텐츠 프로시져(procedure) 아이템을 획득하지 못하게 할 수 있으며, 예를 들어 클라이언트 장치(102) 상에 저장된 미리결정된 콘텐츠 아이템을 디스플레이한다. 만약, 416단계에서, 분석 모듈(232)이 콘텐츠 저장소(234)에 적어도 하나의 저장된 콘텐츠 아이템이 존재한다고 결정하면, 그 다음에 420단계에서, 분석 모듈(232)은 콘텐츠 제공자 우선순위 정보에 기초하여 임의의 저장된 콘텐츠 아이템들 중에서 최우선순위의 콘텐츠 아이템을 결정하고 선택한다. 422단계에서, 상기 선택된 콘텐츠는 그 다음 중개 서버(104)에 의해 네트워크(108)를 통해 중개 SDK(216)로 전송된다.
다시 402단계로 돌아가서, 콘텐츠 제공자로부터 새로운 응답이 중개 서버(104)에 의해 수신되면, 즉 콘텐츠 제공자 서버에 의해 제공되는 새로운 콘텐츠 아이템 또는 실패 통지가 수신되면, 그 다음에 분석 모듈(232)은 상기 응답이 콘텐츠 아이템인지 실패 응답인지 여부를 결정한다. 만약 상기 응답이 실패 응답이면, 카운터(236)는 410단계에서 증가되고, 412단계에서 분석 모듈(232)은 모든 예상된 응답들이 해체 엔진(230)에 의해 제공된 예상 응답 정보들의 수에 기초하여 고려되었는지를 결정한다. 만약 아니면, 402단계로 돌아가서 대기한다. 예상되는 모든 응답들이 고려되면, 420단계로 진행하여 위에서 설명한 바와 같이 진행된다.
404단계로 돌아가서, 상기 새로운 응답이 분석 모듈(232)에 의해 콘텐츠 아이템인 것으로 결정되면, 상기 콘텐츠 아이템은 콘텐츠 저장소(234)에 저장된다. 408단계에서, 분석 모듈(232)은 상기 콘텐츠 아이템이 콘텐츠의 최상위 전체 우선순위 아이템인지 여부, 즉 콘텐츠 제공자 우선순위 정보 저장소(238)에 저장된 콘텐츠 제공자 우선순위 정보로부터 분석 모듈(232)에 의해 결정된 바와 같이 최우선순위 콘텐츠 제공자에 대응하는지 여부를 결정한다. 만약 콘텐츠 아이템이 최상위 전체 우선순위 콘텐츠 아이템이면, 상기 콘텐츠 아이템은 414단계에서 분석 모듈(232)에 의해 선택되고, 422단계에서 상기 선택된 콘텐츠 아이템은 네트워크(108)를 통해 중개 서버(104)에 의해 중재 SDK(216)에 전송된다. 만약 408단계에서, 분석 모듈(232)이 상기 콘텐츠 아이템이 최상위 전체 우선순위 콘텐츠 아이템이 아니라고 결정하면, 410단계로 진행하여 전술한 바와 같이 진행된다.
전술한 바와 같이, 복수의 서버에 콘텐츠를 요청하는 애플리케이션에 의해 복수의 콘텐츠 요청이 전송될 때 많은 문제점이 발생할 수 있다. 예를 들어, 애플리케이션을 실행하는 클라이언트 장치상의 컴퓨팅 리소스들, 예를 들어 상기 복수의 요청을 전송하기 위해 복수의 네트워크 연결을 개방하는데 사용되는 메모리 측면에서 문제가 있을 수 있다. 또한, 복수의 요청들 및 이들 요청들에 대한 응답들의 중개를 수행하기 위해 상기 애플리케이션을 실행하는 클라이언트 장치에서 컴퓨팅 리소스를 많이 소모할 수 있다. 예를 들어, 콘텐츠의 요청들에 대한 어떤 응답이 상기 제공된 콘텐츠의 선택을 제어하는 파티(party)에 대해 가장 바람직한지를 결정하기 위해 분석을 수행하는 것은(예를 들어, 상기 애플리케이션의 개발자) 컴퓨팅 리소스를 많이 소모할 수 있다. 이는 상기 개발자가 상기 애플리케이션에 복수의 요인들(예를 들어 콘텐츠의 품질, 노출 기회(impression opportunity)를 채울 수 있는 기회를 얻기 위해 서드-파티 콘텐츠 제공 업체가 제안한 입찰가(bid amount) 또는 서드-파티 콘텐츠 제공자와의 연결 대기시간에 근거하여 이 선택을 하도록 한경우 특히 어려울 수 있다. 네트워크를 통해 복수의 요청들을 전송하려고 시도하는 애플리케이션은 특히 상기 네트워크가 예를 들어 3G 또는 4G 네트워크와 같은 모바일 네트워크인 경우 대기시간 측면에서 문제가 발생할 수 있다. 복수의 요청들을 전송하고 애플리케이션이 실행되는 클라이언트 장치에 의해 응답을 수신하는 것 사이에 상당한 지연 또는 랙이 있을 수 있다. 본 명세서에 설명된 하이브리드 클라이언트-서버 데이터 제공 방법들은 다른 것들 중에서 예를 들어 서버가 콘텐츠에 대한 복수의 요청들에 대한 컴퓨팅-리소스 집약적인 중개를 처리하도록 함으로써, 또는 대기시간 문제를 개선하기 위해 서버 대 서버 간 네트워크 연결을 레버리징(leveraging)함으로써, 또는 이들 방법들의 사용에 의해 제공되는 임의의 다른 장점에 의해 이러한 문제들을 개선하는 데 도움이 될 수 있다.
예로서, 이들 방법들의 일 구현예는 뉴스 아이템들을 디스플레이하려고 시도하는 클라이언트 장치에서 실행되는 뉴스 애플리케이션을 포함할 수 있다. 상기 뉴스 애플리케이션은 뉴스 콘텐츠 제공자들에게 뉴스 아이템들이 디스플레이되도록 여러 요청을 할 수 있다. 예를 들어, 상기 요청들은 CNN, NBC 뉴스 및 FOX 뉴스와 같은 다양한 뉴스 콘텐츠 제공자에게 전송될 수 있다. 이러한 요청들은 콘텐츠 제공자 서버들에 제출할 요청들을 프로세싱하는 상기 애플리케이션과 통합된 상기 클라이언트 장치의 콘텐츠 제공자 SDK들을 통해 전송될 수 있다. 예를 들어, 상기 뉴스 애플리케이션과 통합된 CNN 뉴스 SDK는 뉴스 콘텐츠 아이템들을 제공하는 CNN 뉴스 서버에 제출하기 위해 의도된 요청을 프로세싱할 수 있으며, 상기 뉴스 애플리케이션과 통합된 NBC 뉴스 SDK는 뉴스 콘텐츠 아이템들을 제공하는 NBC 뉴스 서버에 제출하기 위해 의도된 요청을 프로세싱할 수 있다. 그 다음에, 상기 프로세싱된 요청들은 상기 애플리케이션과 통합되고 함께 배칭된 중개 SDK에 의해 인터셉터될 수 있다. 그 다음에, 상기 중개 SDK는 상기 배치된 요청을 상기 중개 서버에 전송할 수 있다. 상기 배치 요청은 콘텐츠 제공자 우선순위 정보를 포함할 수 있다. 예를 들어, 상기 배치 요청은 사용자가 과거에 제공된 콘텐츠를 얼마나 자주 클릭했는지에 근거하여 뉴스 제공자 서버들을 순위화(rank)하는 뉴스 제공자들의 "품질" 등급을 포함할 수 있다. 상기 배치 요청은 택일적으로 또는 부가적으로 제공된 콘텐츠 내의 뉴스 제공자 서버들의 이력 압축 효율(historical compression efficiency)에 기초한 "압축" 정보를 포함할 수 있다. 상기 중개 SDK는 콘텐츠에 대한 여러 요청들을 중개할 때 이 콘텐츠 제공자 우선순위 정보를 사용할 수 있다.
일 구현예에서, 상기 배치 요청은 단일 네트워크 연결만을 열어(open)야 하므로 상기 클라이언트 장치상의 컴퓨팅 리소스들을 보존해야 한다는 점에서 뉴스 제공자 서버들에 대한 콘텐츠의 여러 요청들을 수행하는 상기 애플리케이션보다 중요한 이점을 제공한다. 또한, 상기 복수의 요청들 및 이들 요청들에 대한 응답의 중개는 상기 중개 서버에서 행해질 수 있고, 상기 클라이언트 장치상의 컴퓨팅 리소스들을 더 보존할 수 있다. 또한, 상기 중개 서버는 상기 콘텐츠 제공자들과 통신하기 위해 서버 대 서버 간 네트워크 연결을 레버리지할 수도 있고, 특히 그 연결이 3G 또는 4G와 같은 모바일 네트워크를 통해 이루어질 때 클라이언트 장치 대 서버 네트워크 연결을 통한 응답 속도 및 대기시간 측면에서 종종 이점을 제공할 수 있다.
이러한 방법들의 또 다른 구현예는 노출 기회를 채우기 위해 상기 애플리케이션에 의해 요청되는 서드-파티 콘텐츠를 포함할 수 있다. 상기 노출 기회는 장치에 일부 콘텐츠를 디스플레이하도록 하는 기회이다. 일부 구현예들에서, 서드 파티들은 콘텐츠를 통해 상기 노출 기회를 채우도록 비용을 지불할 수 있다. 이러한 구현예들에서, 옥션 프로세스는 예를 들어 상기 애플리케이션에 의해 직접적으로 또는 예를 들어 상기 애플리케이션을 실행하는 상기 운영 체제상에서 실행되는 프로그램에 의해 간접적으로, 또는 예를 들어 상기 애플리케이션과 통신하는 서버에 의해, 또는 임의의 다른 적절한 방식으로 구현될 수 있다. 그러한 옥션에서, 입찰가들은 복수의 서드 파티 콘텐츠 제공자들에서 요청할 수 있고, 하나의 입찰가는 경매인의 기준(auctioneer’s criteria)에 기초하여 선택될 수 있다. 이러한 기준은, 예를 들어, 상기 콘텐츠 제공자에 대한 연결의 상기 예상된 대기시간, 상기 제공된 콘텐츠의 예상 품질, 실제 입찰 금액, 예측된 클릭률(pCTR), 예측된 전환율(pCVR) 또는 경매인이 고려하기를 원하는 기타 요인들에 기초할 수 있다.
일부 경우에, 상기 애플리케이션이 중개 워터폴(mediation waterfall)을 설정하는 프로세서의 일부로 상기 노출 기회를 채우기 위해 복수의 서드-파티 콘텐츠 제공자들에 콘텐츠를 요청할 수 있다. 중개 워터폴은 퍼블리셔 또는 노출 기회를 가진 사람이 해당 기회를 콘텐츠 제공자에 판매할 때 버는 금액을 최대화하는 데 도움이 되는 콘텐츠 아이템들에 대한 요청을 구성하는 방법이다. 다른 콘텐츠 제공자들은 노출 기회에 대해 서로 다른 금액을 기꺼이 지불할 수 있다. 상기 중개 워터폴에서, 복수의 요청들이 콘텐츠 제공자들에 전송된다. 상기 중개 워터폴을 개시하는 경매인은 요청을 보낸 콘텐츠 제공자들의 그룹 중에서 최상위 지불 콘텐츠 제공자로 예상되는 콘텐츠 제공자에게 우선순위를 부여할 수 있다. 또한, 상위 지불 콘텐츠 제공자가 요청된 가격과 교환하여 콘텐츠 아이템을 제공하는 데 동의하지 않는 경우, 다른 요청들이 해당 콘텐츠 제공자가 제공한 콘텐츠 아이템을 수락할 의도를 갖는 다른 콘텐츠 제공자들에게 전송된다. 일반적으로 항상 그런 것은 아니지만, 두 번째로 높은 지불 콘텐츠 제공자인 것으로 예상되는 콘텐츠 제공자에게 우선순위가 부여되며, 해당 콘텐츠 제공자와 합의가 이루어지지 않을 경우 세 번째로 높은 지불 콘텐츠 제공자로 예상되는 콘텐츠 제공자에게 우선순위가 부여된다.
애플리케이션이 중재 워터폴을 설정하려는 의도로 콘텐츠에 대한 여러 요청들을 수행하는 구현예들에서, 배치 요청은 단일 네트워크 연결만 열 필요가 있다는 점에서 상기 콘텐츠 제공자들에 대한 콘텐츠의 여러 요청들을 수행하는 상기 애플리케이션에 비해 중요한 이점을 제공하므로 클라이언트 장치상의 컴퓨팅 리소스들을 보존할 수 있다. 또한, 상기 중개 서버가 상기 옥션을 수행하는 것을 포함하여 상기 중개 서버상에서 복수의 요청들 및 이 요청들에 대한 응답의 중개가 이루어질 수 있고, 클라이언트 장치에서 컴퓨팅 리소스들을 더 보존할 수 있다. 또한, 상기 중개 서버는 상기 콘텐츠 제공자들과 통신하기 위해 서버 대 서버 간 네트워크 연결을 레버리지할 수도 있고, 특히 그 연결이 3G 또는 4G와 같은 모바일 네트워크를 통해 이루어질 때 클라이언트 장치 대 서버 네트워크 연결을 통한 응답 속도 및 대기시간 측면에서 종종 이점을 제공할 수 있다.
본 명세서는 많은 특정 구현 세부사항들을 포함하고 있지만, 이들은 청구할 수있는 범위에 대한 제한으로 해석되어서는 안되며, 오히려 특정 구현예들에 특정한 특징들에 대한 설명으로 해석되어야 한다. 별도의 구현예들의 맥락에서 본 명세서에 기술된 특정 특징들은 또한 단일 구현으로 조합하여 구현될 수 있다. 반대로, 단일 구현예의 맥락에서 기술된 다양한 특징은 복수의 구현예에서 개별적으로 또는 임의의 적절한 하위 조합으로 구현될 수 있다. 더욱이, 특징들은 특정 조합들로 동작하고, 그 자체로 초기에 청구된 것으로서 위에서 기술될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징이 어떤 경우에는 조합으로부터 제거될 수 있고, 청구된 조합은 하위조합의 변형 또는 하위조합을 지향할 수 있다.
유사하게, 동작들이 특정 순서로 도면들에 도시되어 있지만, 이는 바람직한 동작들을 달성하기 위해, 그러한 동작들이 도시된 순서 또는 순차적인 순서로 수행되거나, 도시된 모든 동작들이 수행될 것을 요구하는 것으로 이해되어서는 안된다. 특정 상황에서 멀티 태스킹 및 병렬 프로세싱이 유리할 수 있다. 또한, 상술한 구현예들에서 다양한 시스템 컴포넌트들의 분리는 모든 구현예들에서 그러한 분리를 요구하는 것으로 이해되어서는 안되며, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품에 통합되거나 유형의 매체(tangible media)상에 구현된 복수의 소프트웨어 제품들로 패키징될 수 있다는 것을 이해해야 한다. "또는"에 대한 언급은 "또는"을 사용하여 기술된 용어가 기술된 용어 중 하나, 둘 이상 및 모두를 나타낼 수 있도록 포괄적인 것으로 해석될 수 있다.
따라서, 상기 요지의 특정 구현예들이 설명되었다. 다른 구현예들은 다음의 청구항들의 범위 내에 있다. 일부 경우에, 청구항들에서 나열된 동작들은 상이한 순서로 수행될 수 있고 여전히 바람직한 결과들을 달성한다. 또한, 첨부된 도면들에 도시된 프로세서들은 바람직한 결과들을 얻기 위해 도시된 특정 순서 또는 순차적 순서를 반드시 필요로 하지는 않는다. 특정 구현예들에서, 멀티태스킹 및 병렬 프로세싱이 유리할 수 있다.
청구 범위는 해당 효과가 명시되지 않는 한 설명된 순서 또는 요소로 제한된 것으로 해석되어서는 안된다. 첨부된 청구 범위의 사상 및 범위를 벗어나지 않으면 서 형태 및 세부 사항의 다양한 변경이 당업자에 의해 이루어질 수 있음을 이해해야 한다. 다음의 특허 청구항들 및 그 균등물의 사상 및 범위 내에 있는 모든 구현예들이 청구된다.
Claims (20)
- 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법으로서,
애플리케이션과 통합된 복수의 콘텐츠 제공자 소프트웨어 개발 키트들(SDK들)로부터 클라이언트 장치에 의해 실행되는 애플리케이션에 의해, 상기 클라이언트 장치에 의한 디스플레이를 위해 콘텐츠 아이템에 대한 요청을 제공하는 단계 -상기 복수의 콘텐츠 제공자 SDK들은 복수의 콘텐츠 제공자 서버들에 각각 대응함-;
상기 복수의 콘텐츠 제공자 SDK들의 복수의 요청 어댑터에 의해, 복수의 콘텐츠 제공자 서버들로의 잠재적 제출을 위해, 콘텐츠 아이템에 대한 상기 요청을 프로세싱하여, 복수의 프로세싱된 요청들을 생성하는 단계;
상기 애플리케이션과 통합된 중개 SDK의 인터셉터 모듈에 의해, 상기 복수의 콘텐츠 제공자 SDK들로부터 복수의 프로세싱된 요청들을 수신하는 단계;
상기 중개 SDK의 통합기 모듈에 의해, 상기 복수의 프로세싱된 요청들을 배치 요청으로 배칭하는 단계 -상기 배치 요청은 상기 복수의 콘텐츠 제공자 서버들 각각에 대한 우선순위 값을 포함함-;
상기 중개 SDK에 의해, 상기 복수의 콘텐츠 제공자 서버들에 대한 상기 배치 요청의 중개를 위해 중개 서버에 상기 배치 요청을 전송하고, 상기 중개 서버로 하여금 상기 복수의 콘텐츠 제공자 서버들 중 적어도 하나로부터 수신된 적어도 하나의 콘텐츠 아이템 및 상기 복수의 콘텐츠 제공자 서버들 각각에 대한 상기 우선순위 값을 선택하게 하는 단계;
상기 중개 SDK에 의해, 상기 클라이언트 장치에 의한 디스플레이를 위해 상기 중개 서버로부터 상기 적어도 하나의 콘텐츠 아이템을 수신하는 단계; 그리고
상기 애플리케이션에 의해, 상기 클라이언트 장치의 디스플레이 상에 상기 적어도 하나의 콘텐츠 아이템을 제공하는 단계를 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법. - 제1항에 있어서, 상기 복수의 콘텐츠 제공자 서버들로의 잠재적 제출을 위해 상기 요청을 프로세싱하는 단계는 상기 복수의 콘텐츠 제공자 서버들 중 하나에 대한 적절한 헤더 정보를 포함하는 단계를 더 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법.
- 제1항에 있어서, 상기 복수의 콘텐츠 제공자 서버들 각각에 대한 우선순위 값은 상기 복수의 콘텐츠 제공자 서버들의 우선순위 랭킹을 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법.
- 제1항에 있어서, 상기 복수의 콘텐츠 제공자 서버들 각각에 대한 우선순위 값은 상기 애플리케이션에 의해 상기 중개 SDK에 제공되는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법.
- 제4항에 있어서, 상기 방법은,
상기 중개 SDK의 분석 엔진에 의해, 상기 복수의 콘텐츠 제공자 서버들 각각에 대한 우선순위 값에 기초하여 상기 클라이언트 장치에 의해 디스플레이하기 위해 상기 적어도 하나의 콘텐츠 아이템으로부터 단일 콘텐츠 아이템을 선택하는 단계를 더 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법. - 제1항에 있어서,
상기 중개 서버로부터 수신된 디스플레이를 위한 상기 적어도 하나의 콘텐츠 아이템은 상기 중개 서버로부터 수신된 디스플레이를 위한 유일한 콘텐츠 아이템이고, 디스플레이를 위한 상기 적어도 하나의 콘텐츠 아이템은 상기 중개 서버가 획득할 수 있는 복수의 콘텐츠 제공자 서버들 각각에 대한 우선순위 값에 기초하여 디스플레이하기 위한 최상위 우선순위 콘텐츠 아이템인 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법. - 제1항에 있어서, 상기 배치 요청은 상기 중개 서버로부터의 응답에 대한 최대 허용 시간과 관련된 타이밍 정보를 더 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법.
- 제7항에 있어서, 상기 배치 요청의 중개는 상기 타이밍 정보에 적어도 부분적으로 기초하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법.
- 제1항에 있어서, 상기 인터셉터 모듈은 상기 복수의 프로세싱된 요청들을 인터셉트하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법.
- 제9항에 있어서, 상기 복수의 프로세싱된 요청들을 인터셉트하는 상기 인터셉터 모듈은 상기 중개 SDK의 콜백 인터페이스를 사용하는 상기 복수의 콘텐츠 제공자 SDK들을 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법.
- 제9항에 있어서, 상기 복수의 프로세싱된 요청들을 인터셉트하는 상기 인터셉터 모듈은 상기 복수의 콘텐츠 제공자 SDK들에 의해 상기 복수의 콘텐츠 제공자 서버들에 대한 콜들을 차단하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 컴퓨터로 구현되는 방법.
- 하이브리드 클라이언트-서버 데이터 제공을 위한 방법으로서,
중개 서버에 의해, 중개 소프트웨어 개발 키트(SDK)로부터 클라이언트 장치에 의한 디스플레이를 위해 콘텐츠 아이템에 대한 배치 요청(batch request)을 수신하는 단계 -상기 배치 요청은 상기 클라이언트 장치의 복수의 콘텐츠 제공자 SDK들에 의해 프로세싱된 콘텐츠 아이템에 대한 복수의 프로세싱된 요청들에 기초하여 상기 중개 SDK의 통합기 모듈에 의해 발생되고, 상기 배치 요청은 배치 요청에서 식별된 복수의 콘텐츠 제공자 서버들 각각에 대한 우선순위 값을 포함함-;
상기 중개 서버의 해체 엔진에 의해, 복수의 콘텐츠-제공자-특정 요청들을 발생하도록 상기 배치 요청을 프로세싱하는 단계;
상기 중개 서버에 의해, 상기 복수의 콘텐츠 제공자 서버들에 상기 복수의 콘텐츠-제공자-특정 요청들을 전송하는 단계;
상기 중개 서버에 의해, 상기 복수의 콘텐츠 제공자 서버들 중 적어도 하나로부터 상기 복수의 콘텐츠-제공자-특정 요청들 중 적어도 하나에 응답하여 적어도 하나의 콘텐츠 아이템을 수신하고, 그리고 상기 중개 서버의 분석 모듈의 콘텐츠 저장소에 상기 콘텐츠 아이템을 저장하는 단계;
상기 중개 서버의 분석 모듈에 의해, 상기 복수의 콘텐츠 제공자 서버들 각각에 대한 우선순위 값에 기초하여 전송을 위해 저장된 적어도 하나의 콘텐츠 아이템을 선택하는 단계; 그리고
상기 중개 서버에 의해, 상기 분석 모듈에 의해 선택된 상기 저장된 적어도 하나의 콘텐츠 아이템을 상기 중개 SDK로 전송하는 단계를 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법. - 제12항에 있어서, 상기 저장된 적어도 하나의 콘텐츠 아이템을 전송하는 단계는 미리 결정된 타임아웃 기간 후에 발생하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법.
- 제12항에 있어서, 상기 배치 요청은 타이밍 정보를 더 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법.
- 제14항에 있어서, 상기 저장된 적어도 하나의 콘텐츠 아이템을 전송하는 단계는 상기 타이밍 정보에 기초하여 상기 분석 모듈에 의해 설정된 타임아웃 기간 후에 발생하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법.
- 제12항에 있어서, 전송을 위해 상기 저장된 적어도 하나의 콘텐츠 아이템을 선택하는 단계는 전송을 위해 복수의 저장된 콘텐츠 아이템들을 선택하는 단계를 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법.
- 제12항에 있어서, 전송을 위해 상기 저장된 적어도 하나의 콘텐츠 아이템을 선택하는 단계는 상기 복수의 콘텐츠 제공자 서버들 각각에 대한 우선순위 값에 의해 표시되는 랭킹에 기초하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법.
- 제12항에 있어서, 상기 방법은,
상기 중개 SDK의 인터셉터 모듈에 의해, 상기 복수의 프로세싱된 요청들을 인터셉트하는 단계를 더 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법. - 제18항에 있어서,
상기 인터셉터 모듈에 의한 인터셉트는, 상기 복수의 콘텐츠 제공자 SDK들에 의해 상기 중개 SDK의 콜백 인터페이스를 사용하는 단계를 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법. - 제18항에 있어서, 상기 인터셉터 모듈에 의한 인터셉트는 상기 복수의 콘텐츠 제공자 SDK들에 의해 상기 복수의 콘텐츠 제공자 서버들에 대한 콜들을 차단하는 단계를 포함하는 것을 특징으로 하는 하이브리드 클라이언트-서버 데이터 제공을 위한 방법.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2016/022871 WO2017160295A1 (en) | 2016-03-17 | 2016-03-17 | Multi-provider data provision with request batching |
KR1020187007209A KR102450487B1 (ko) | 2016-03-17 | 2016-03-17 | 하이브리드 클라이언트-서버 데이터 제공 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187007209A Division KR102450487B1 (ko) | 2016-03-17 | 2016-03-17 | 하이브리드 클라이언트-서버 데이터 제공 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20220136511A KR20220136511A (ko) | 2022-10-07 |
KR102641971B1 true KR102641971B1 (ko) | 2024-02-29 |
Family
ID=55699805
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227033888A KR102641971B1 (ko) | 2016-03-17 | 2016-03-17 | 하이브리드 클라이언트-서버 데이터 제공 |
KR1020187007209A KR102450487B1 (ko) | 2016-03-17 | 2016-03-17 | 하이브리드 클라이언트-서버 데이터 제공 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187007209A KR102450487B1 (ko) | 2016-03-17 | 2016-03-17 | 하이브리드 클라이언트-서버 데이터 제공 |
Country Status (6)
Country | Link |
---|---|
US (2) | US10404835B2 (ko) |
EP (2) | EP3241343B1 (ko) |
JP (1) | JP6396587B2 (ko) |
KR (2) | KR102641971B1 (ko) |
CN (2) | CN112989239A (ko) |
WO (1) | WO2017160295A1 (ko) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102393818B1 (ko) * | 2017-02-02 | 2022-05-03 | 구글 엘엘씨 | 커스텀 디지털 컴포넌트 |
US10521344B1 (en) | 2017-03-10 | 2019-12-31 | Pure Storage, Inc. | Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems |
CN108073417A (zh) * | 2017-12-28 | 2018-05-25 | 北京奇虎科技有限公司 | 一种在应用程序中展示信息的方法及装置 |
FR3099266B1 (fr) * | 2019-07-24 | 2022-06-03 | Nothing2Install | Procédé de transmission de données |
CN114915662A (zh) * | 2022-04-18 | 2022-08-16 | 上海斑马来拉物流科技有限公司 | 数据请求的处理方法、***、终端及可读存储介质 |
CN115080278A (zh) * | 2022-07-24 | 2022-09-20 | 北京结慧科技有限公司 | 基于方法参数获取当前登录用户信息的方法及*** |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005041035A1 (en) | 2003-10-14 | 2005-05-06 | International Business Machines Corporation | Method and apparatus for processing service requests in a service-oriented architecture |
US20070050477A1 (en) | 2005-09-01 | 2007-03-01 | Microsoft Corporation | Web application resource management |
US20140101235A1 (en) | 2012-10-05 | 2014-04-10 | Redfin Corporation | Multiplexing web requests for improved performance |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2345661A1 (en) * | 1998-10-02 | 2000-04-13 | International Business Machines Corporation | Conversational browser and conversational systems |
US6834110B1 (en) * | 1999-12-09 | 2004-12-21 | International Business Machines Corporation | Multi-tier digital TV programming for content distribution |
CN1448025A (zh) * | 2000-07-10 | 2003-10-08 | Qvc有限公司 | 用于使电视商业同时对多个商家多路频道的***和方法 |
US20020196793A1 (en) * | 2000-11-29 | 2002-12-26 | Quikcat.Com, Inc. | End-user communication systems access network |
JP2002373149A (ja) * | 2001-06-15 | 2002-12-26 | Nippon Telegr & Teleph Corp <Ntt> | 同時アクセス方法及び要求処理サーバ及びプロキシサーバ及びクライアント端末及び同時アクセス制御プログラム及び同時アクセス制御プログラムを格納した記憶媒体 |
JP2005514673A (ja) * | 2001-06-22 | 2005-05-19 | オモイグイ,ノサ | 知識の取得、管理、伝達、及び提示のシステム及び方法 |
KR20060004909A (ko) * | 2003-02-14 | 2006-01-16 | 너바나, 인코퍼레이티드. | 시맨틱 지식의 검색, 관리, 포착, 공유, 발견, 전달 및프리젠테이션 시스템 및 방법 |
US8176167B2 (en) * | 2006-12-05 | 2012-05-08 | Qualcomm Incorporated | Methods and apparaus for requesting wireless communication device performance data and providing the data in optimal file size |
US8407706B2 (en) * | 2006-12-28 | 2013-03-26 | Sap Ag | Framework for parallel business object processing |
US20090063262A1 (en) * | 2007-08-31 | 2009-03-05 | Microsoft Corporation | Batching ad-selection requests for concurrent communication |
US7991740B2 (en) * | 2008-03-04 | 2011-08-02 | Apple Inc. | Synchronization server process |
US8406739B2 (en) | 2008-11-19 | 2013-03-26 | At&T Mobility Ii Llc | Mediation router |
US20100228642A1 (en) | 2009-03-05 | 2010-09-09 | Wendell Craig Baker | Traffic Management in an Online Advertisement Bidding System |
CN101706786A (zh) * | 2009-11-20 | 2010-05-12 | 深圳市科陆电子科技股份有限公司 | 在浏览器/服务器中批量处理数据的方法及装置 |
JP2011171983A (ja) * | 2010-02-18 | 2011-09-01 | Sony Corp | 情報処理装置、情報処理方法およびコンピュータ読み取り可能な記録媒体 |
US10102301B2 (en) * | 2010-04-01 | 2018-10-16 | Cloudflare, Inc. | Internet-based proxy security services |
US8589515B2 (en) * | 2010-07-21 | 2013-11-19 | International Business Machines Corporation | Aggregated widget request processing |
CN102469032B (zh) * | 2010-10-29 | 2015-03-25 | 国际商业机器公司 | 发布-订阅消息传递的方法和*** |
US20120226552A1 (en) | 2011-03-01 | 2012-09-06 | Openwave Systems Inc. | Mediation system and method to provide relevant advertisements |
CN102254031A (zh) * | 2011-08-03 | 2011-11-23 | 无锡浙潮科技有限公司 | 基于批处理请求的Microsoft SQL Server数据库集群 |
US9177334B2 (en) * | 2011-11-03 | 2015-11-03 | Google Inc. | Ad extensions on content network |
US9059939B2 (en) * | 2012-02-23 | 2015-06-16 | Infosys Limited | End-to-end network service assurance solution |
JP2014057149A (ja) * | 2012-09-11 | 2014-03-27 | Toshiba Corp | 通信装置、中継装置および通信方法 |
CN103916442A (zh) * | 2013-01-07 | 2014-07-09 | 阿里巴巴集团控股有限公司 | 消息推送实现方法、移动终端及消息推送*** |
CN103198216B (zh) * | 2013-03-23 | 2016-01-13 | 四三九九网络股份有限公司 | 一种批量防止使用作弊工具来减速Flash游戏的方法 |
CN103401909B (zh) * | 2013-07-24 | 2017-03-08 | 迈普通信技术股份有限公司 | 基于bs的数据交互方法与***、客户端及服务器 |
US20150067024A1 (en) * | 2013-08-27 | 2015-03-05 | Apple Inc. | Autobatching |
US20160239873A1 (en) | 2013-11-06 | 2016-08-18 | Yume Inc. | Mediation recommendation systems for multiple video advertisement demand sources |
CN103713902B (zh) * | 2013-12-26 | 2017-10-24 | Tcl集团股份有限公司 | 一种基于Android***的BOA编译方法和*** |
US10635505B2 (en) * | 2015-06-30 | 2020-04-28 | Coursera, Inc. | Automated batch application programming interfaces |
-
2016
- 2016-03-17 EP EP16715392.3A patent/EP3241343B1/en active Active
- 2016-03-17 CN CN202110178776.2A patent/CN112989239A/zh active Pending
- 2016-03-17 KR KR1020227033888A patent/KR102641971B1/ko active IP Right Grant
- 2016-03-17 CN CN201680016359.5A patent/CN107409149B/zh active Active
- 2016-03-17 WO PCT/US2016/022871 patent/WO2017160295A1/en active Application Filing
- 2016-03-17 JP JP2017517267A patent/JP6396587B2/ja active Active
- 2016-03-17 EP EP18208385.7A patent/EP3471376B1/en active Active
- 2016-03-17 US US15/512,491 patent/US10404835B2/en active Active
- 2016-03-17 KR KR1020187007209A patent/KR102450487B1/ko active IP Right Grant
-
2019
- 2019-08-29 US US16/556,024 patent/US11190621B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005041035A1 (en) | 2003-10-14 | 2005-05-06 | International Business Machines Corporation | Method and apparatus for processing service requests in a service-oriented architecture |
US20070050477A1 (en) | 2005-09-01 | 2007-03-01 | Microsoft Corporation | Web application resource management |
US20140101235A1 (en) | 2012-10-05 | 2014-04-10 | Redfin Corporation | Multiplexing web requests for improved performance |
Also Published As
Publication number | Publication date |
---|---|
JP2018515819A (ja) | 2018-06-14 |
EP3241343A1 (en) | 2017-11-08 |
KR20220136511A (ko) | 2022-10-07 |
US20170331925A1 (en) | 2017-11-16 |
EP3471376A1 (en) | 2019-04-17 |
CN107409149B (zh) | 2021-02-26 |
KR20180123001A (ko) | 2018-11-14 |
US11190621B2 (en) | 2021-11-30 |
US10404835B2 (en) | 2019-09-03 |
JP6396587B2 (ja) | 2018-09-26 |
EP3471376B1 (en) | 2020-06-17 |
KR102450487B1 (ko) | 2022-10-04 |
EP3241343B1 (en) | 2018-11-28 |
WO2017160295A1 (en) | 2017-09-21 |
CN107409149A (zh) | 2017-11-28 |
CN112989239A (zh) | 2021-06-18 |
US20190387077A1 (en) | 2019-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102641971B1 (ko) | 하이브리드 클라이언트-서버 데이터 제공 | |
US11743348B2 (en) | Custom digital components | |
US10515132B2 (en) | Optimizing transmission of digital components | |
US20050125508A1 (en) | Systems and methods that employ correlated synchronous-on-asynchronous processing | |
WO2015117558A1 (en) | Promotion method, apparatus, and system based on microblog message | |
KR102019411B1 (ko) | 최적화된 디지털 컴포넌트 분석 시스템 | |
US8954523B2 (en) | Method and apparatus for identifying virtual content candidates to ensure delivery of virtual content | |
JP6574293B2 (ja) | ハイブリッドクライアントサーバデータプロビジョン | |
US12014039B2 (en) | Interaction tracking controls | |
US20230222151A1 (en) | Determining types of digital components to provide | |
US20200133670A1 (en) | Probabilistic techniques for formatting digital components |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A107 | Divisional application of patent | ||
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
E701 | Decision to grant or registration of patent right | ||
E801 | Decision on dismissal of amendment |