KR101628433B1 - 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체 - Google Patents

애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체 Download PDF

Info

Publication number
KR101628433B1
KR101628433B1 KR1020127023102A KR20127023102A KR101628433B1 KR 101628433 B1 KR101628433 B1 KR 101628433B1 KR 1020127023102 A KR1020127023102 A KR 1020127023102A KR 20127023102 A KR20127023102 A KR 20127023102A KR 101628433 B1 KR101628433 B1 KR 101628433B1
Authority
KR
South Korea
Prior art keywords
web service
service call
call
response
components
Prior art date
Application number
KR1020127023102A
Other languages
English (en)
Other versions
KR20120128661A (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 KR20120128661A publication Critical patent/KR20120128661A/ko
Application granted granted Critical
Publication of KR101628433B1 publication Critical patent/KR101628433B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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/10Architectures or entities
    • H04L65/1063Application servers providing 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/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)
  • Human Computer Interaction (AREA)
  • Telephonic Communication Services (AREA)

Abstract

애플리케이션 서버 상에서 구동하는 애플리케이션의 콤포넌트들에 의한 서비스에 대한 콜들을 최적화하는 방법이 제공된다. 이 방법은, 제 1 콜 및 제 2 콜을 수신하는 단계, 서비스에 대해 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 것을 포함하는 복수의 최적화 기법들 중 하나의 최적화 기법을 선택하는 단계, 및 복수의 최적화 기법들 중 하나의 최적화 기법으로서 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 것을 선택하는 것에 응답하여, 제 1 콜 및 제 2 콜을 제 3 콜로 결합하는 단계를 포함하며, 제 1 콜은 복수의 콤포넌트들 중의 제 1 콤포넌트에 의해 서비스에 대해 행해지고, 제 2 콜은 복수의 콤포넌트들 중의 제 2 콤포넌트에 의해 서비스에 대해 행해진다.

Description

애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체{AN APPARATUS, A METHOD AND A MACHINE-READABLE STORAGE MEDIUM FOR OPTIMIZING CALLS TO A SERVICE BY COMPONENTS OF AN APPLICATION RUNNING ON THE APPLICATION SERVER}
관련 출원들
본 PCT 출원은, 35 U.S.C. § 120 또는 365(c) 하에서, "WIDGET FRAMEWORK, REAL-TIME SERVICE ORCHESTRATION, AND REAL-TIME RESOURCE AGGREGATION"라는 명칭으로 2010 년 2 월 5 일에 출원된 미국 특허 가출원 제 61/302,082 호를 우선권 주장하여 출원된 "WIDGET FRAMEWORK, REAL-TIME SERVICE ORCHESTRATION, AND REAL-TIME RESOURCE AGGREGATION"라는 명칭의 2010 년 4 월 5 일자 출원의 미국 특허 출원 제12/754,564 호를 우선권으로 주장하며, 이들 출원들의 전체를 참조로서 본원에 인용한다.
분야
본 출원은 전반적으로 서버 성능을 최적화하는 기술 분야에 관한 것이며, 일 특정 실례에서, 애플리케이션 서버에서 구동하는 애플리케이션의 콤포넌트들에 의한 서비스 콜들의 효율성을 최적화하는 것에 관한 것이다.
글로벌 시장에서 경쟁하기 위해서, 사용자들의 넓은 세계적 커뮤니티를 서비스하는 네트워크 기반 시장은, (1) 급속하게 변화하는 사용자들의 요구들이 충족하도록 다수의 서버측 애플리케이션들을 신속하게 개발, 변형, 테스트 또는 설치하고, (2) 그들의 설치가 리소스 및 성능 제약들을 위반하지 않도록 서버측 애플리케이션들을 최적화하는 목적들을 충족시키는 것이 유익하다는 것을 인식할 수 있다. 일 접근방안에서, 네트워크 기반 시장은 대규모 개발자 그룹을 채용하여 각각의 서버측 애플리케이션을 수동으로 코딩함으로써 그 목적을 성취할 수도 있지만, 이러한 접근방안은, 예를 들어 코드의 재사용의 관점에서, 다른 접근방안들을 이용하여 생성된 애플리케이션들보다 덜 지속적인 룩-앤드-필(look-and-feel)을 갖거나, 개발에 더 긴 시간을 소요하거나, 또는 덜 효율적인 애플리케이션들을 생성하는 것을 포함한 다양한 단점들을 가질 수도 있다. 다른 접근방안에서, 네트워크 기반 시장은, 또한, 소규모 개발자 그룹을 채용하여 템플릿에 엄격하게 부합하는 애플리케이션들을 코딩함으로써 그 목적들을 성취할 수도 있지만, 다른 접근방안들을 이용하여 생성된 애플리케이션들보다 맞춤화하기가 더 어렵거나, 더 많은 리소스들을 소비하거나, 또는 더 느린 성능을 갖는 애플리케이션들을 생성하는 것을 포함하는 다양한 단점들을 가질 것이다.
따라서, 위젯(widget)들을 이용한 다수의 서버측 애플리케이션들의 신속한 개발, 변형, 테스트 또는 설치를 지원하는 프레임워크를 이용하여 각각의 서버측 애플리케이션을 개발할 필요가 존재할 수도 있다. 위젯은, 하나 이상의 사용자 인터페이스들(UIs)을 가지며 비지니스 로직(business logic)(또는 서비스들)에 의해 지원되는 소프트웨어 콤포넌트일 수도 있다. 즉, 위젯은, 하나 이상의 뷰들(views)에 플러그인될 수도 있고 또는 그들을 표시하도록 구성될 수도 있는 표시 층, 및 다양한 데이터 소스들 또는 서비스들에 플러그인될 수도 있고 또는 그들을 포함하도록 구성될 수도 있는 로직 층을 가질 수도 있다. 위젯은 또한 표시 층을 로직 층에 접속시키는 접속 모듈을 가질 수도 있다.
일부 실시형태들은 첨부한 도면에서 제한사항이 아닌 실례로서 설명된다.
도 1a는 애플리케이션들의 콤포넌트들과 데이터 소스들 및 리소스들 사이의 예시적인 관계들을 설명한 블록도이다,
도 1b는, 콜 최적화기 및 리소스 집약기가 도 1a의 애플리케이션에 포함된 후, 애플리케이션들의 콤포넌트들과 데이터 소스들 및 리소스들 사이의 예시적인 관계들을 설명한 블록도이다,
도 2a는 도 1b의 콜 최적화기의 예시적인 실시형태의 모듈들을 예시한 블록도이다,
도 2b는 도 1b의 콜 최적화기의 예시적인 실시형태의 추가 모듈들을 예시한 블록도이다,
도 2c는 도 1b의 리소스 집약기의 예시적인 실시형태의 모듈들을 예시한 블록도이다,
도 2d는 도 1a 및 도 1b의 위젯 1의 예시적인 모듈들을 예시한 블록도이다,
도 3은 메타모델 프레임워크의 예시적인 아키텍처의 블록도이다,
도 4a는 모델 정의의 라이프사이클을 관리하는 방법의 예시적인 실시형태의 플로우차트이다,
도 4b는 애플리케이션의 콤포넌트(예컨대, 도움말 페이지)를 구성하도록 하는 API를 생성하는 예시적인 방법의 플로우차트이다,
도 5는 도 4b의 콤포넌트의 구성의 예시적인 스키마 다이어그램을 나타낸다,
도 6은 도 4의 스키마 다이어그램에 대응하는 예시적인 스키마를 나타낸다,
도 7은 도 5의 예시적인 스키마에 대응하는 예시적인 타입들(예컨대, 클래스들)을 나타낸다,
도 8은 도 6의 예시적인 스키마 또는 도 7의 타입들에 기초하는, 콤포넌트를 구성하기 위한 예시적인 API를 나타낸다,
도 9는 리소스 프레임워크의 아키텍처의 예시적인 실시형태의 블록도이다,
도 10은 예시적인 위젯 프레임워크의 구성요소들과 상호 작용하는 2개의 위젯들의 블록도이다,
도 11은 애플리케이션의 다양한 각각의 클라이언트들과 연계될 수도 있는 애플리케이션의 다양한 버전들을 개발하기 위한 예시적인 개발자 툴 간의 상호 작용들의 블록도이다,
도 12a는 시뮬레이팅 모듈과 연계된 예시적인 HTML 페이지(예컨대, demo.html)의 소스 코드 리스팅이다,
도 12b는 예시적인 자바 테스트 클라이언트(예컨대, TestClient.java)의 소스 코드 리스팅이다,
도 12c는 웹 브라우저에서 예시적인 HTML 페이지 및 자바 테스트 클라이언트의 구동과 연계된 자바 콘솔 로그이다,
도 12d는 애플리케이션 서버 상에서 예시적인 HTML 페이지의 설치를 시뮬레이션하는 시뮬레이팅 모듈의 예시적인 사용자 인터페이스이다,
도 13a는 애플리케이션의 콤포넌트들로부터 서비스에 대한 콜들을 최적화하는 예시적인 방법의 플로우차트이다,
도 13b는 애플리케이션의 콤포넌트들에 의해 사용되는 리소스들을 집약하기 위한 예시적인 방법의 플로우차트이다,
도 14는 애플리케이션의 다수의 버전들을 설계, 편집, 구성, 테스트, 또는 설치하기 위한 예시적인 방법이다,
도 15는 다양한 예시적인 실시형태들이 설치될 수도 있는 클라이언트-서버 시스템을 도시하는 네트워크 다이어그램이다,
도 16은, 일 예시적인 실시형태에서, 네트워크형 시스템의 일부로서 제공되는 다수의 애플리케이션들을 예시한 블록도이다,
도 17은 예시적인 실시형태가 실행될 수도 있는 머신의 블록도이다.
하기의 설명에서는, 설명을 위해, 많은 특정 세부사항들이 본 발명의 주제의 다양한 실시형태들의 이해를 제공하기 위해 설명된다. 그러나, 당업자에게는, 실시형태들이 이들 특정 세부사항 없이 실시될 수도 있다는 것이 자명할 것이다. 또한, 주지된 명령 인스턴스들, 프로토콜들, 구조들, 및 기술들은 상세히 설명되지 않았다. 본원에서 사용되는 바와 같이, "또는"이라는 용어는 포괄적인(inclusive) 관점에서 이해될 수도 있고, 또는 배타적인(exclusive) 관점에서 이해될 수도 있다.
"비즈모(BizMo)"라는 용어는 사용자 인터페이스(UI) 표시, 입력을 포함한 데이터/서비스 액세스, 또는 구성을 포함할 수도 있는 비지니스 모듈을 포함한다. "동작 입력(Action Input)"이라는 용어는 동작을 하도록 하는 비지니스 모듈의 입력 파라미터들을 포함한다. "비즈오피(BizOp)" 또는 "비즈오퍼레이션(BizOperation)"이라는 용어는 비지니스 모듈이 외부 엔티티(예컨대, 서비스 콜)에게 위임할 수도 있는 비지니스 동작들을 포함한다. BizOp는 비지니스 모듈 내에 전략으로서 플러그인될 수도 있다. "비즈모 뷰(BizMo View)"라는 용어는 비지니스 모듈의 UI를 포함한다. "뷰 빌더(View Builder)"라는 용어는 비지니스 모듈 내에 전략으로서 플러그인 될 수 있는 UI 빌더를 포함한다. "비즈모매니저(BizMoManager)"라는 용어는 비지니스 모듈의 라이프사이클을 구동하는 제어기를 포함한다. "비즈오피엔진(BizOpEngine)"이라는 용어는 비지니스 동작들을 최적화하고 실행하는 엔진을 포함한다. "비즈모(BizMo)", "위젯(widget)" 및 "비지니스 모듈"이라는 용어들은 상호 교환가능하게 사용될 수도 있다. "사용자"라는 용어는 사람 또는 머신을 포함한다. 애플리케이션의 콤포넌트는 위젯을 포함할 수도 있다. 위젯은 또한 실시간 리소스 집약(resource aggregation) 및 실시간 서비스 결합(service orchestration)을 포함한 최적화를 지원할 수도 있다. 실시간 서비스 결합은 위젯이 다수의 위젯들에 의한 콜(call)들을 검출하여 동일한 서비스로 결합하는 것을 포함하는 런타임 최적화(run-time optimization)를 지원하게 할 수도 있다. 실시간 리소스 집약은 위젯이 웹 페이지에 대한 모든 리소스들을 그 웹 페이지에 대한 싱글 리소스 내에 런타임으로 집약하게 할 수도 있다(예컨대, 자바스크립트(JavaScript) 또는 캐스케이딩 스타일 시트(cascading style sheet: CSS)의 모든 버전들 또는 인스턴스들을 그 웹 페이지에 대한 싱글 리소스 내에 집약하게 할 수도 있다). 프레임워크는 또한 그 페이지의 설계 시간(design-time) 또는 실시간(real-time) 작성, 변형, 또는 삭제를 (예컨대, 콤포넌트들의 드래드-앤드-드롭을 지원하는 개발자 툴을 통해) 지원할 수도 있다.
예시적인 실시형태에서, 애플리케이션 서버 상에서 구동하는 애플리케이션의 콤포넌트들에 의한 서비스에 대한 콜들을 최적화하도록 하는 시스템이 제공된다. 그 시스템은 애플리케이션에 콜 최적화기를 포함시킨다. 콜 최적화기는 콤포넌트들 중 제 1 콤포넌트에 의한 서비스에 대해 행해지는 제 1 콜 및 콤포넌트들 중 제 2 콤포넌트에 의한 서비스에 대해 행해지는 제 2 콜을 인터셉트하도록 하는 인터셉트 모듈 및 제 1 콜과 제 2 콜을 제 3 콜로 결합하도록 하는 결합 모듈을 포함한다.
다른 예시적인 실시형태에서, 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트들에 의한 서비스에 대한 콜들을 최적화하도록 하는 시스템이 제공된다. 그 시스템은 애플리케이션과 연계된 콜 최적화기를 포함한다. 콜 최적화기는, 제 1 콜 및 제 2 콜을 인터셉트하도록 하는 인터셉트 모듈, 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 것을 포함한 다수의 최적화 기법들 중 하나를 선택하도록 하는 최적화-기법 선택 모듈, 및 다수의 최적화 기법들 중 하나로서 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 것을 선택하는 것에 응답하여 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 결합 모듈을 포함한다.
다른 예시적인 실시형태에서, 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트들에 의한 서비스에 대한 콜들을 최적화하도록 하는 방법이 제공된다. 그 방법은 콤포넌트들 중 제 1 콤포넌트에 의한 서비스에 대해 행해지는 제 1 콜 및 콤포넌트들 중 제 2 콤포넌트에 의한 서비스에 대해 행해지는 제 2 콜을 수신하는 단계, 서비스에 대해 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 것을 포함한 다수의 최적화 기법들 중 하나를 선택하는 단계, 다수의 최적화들 중 하나로서 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 것을 선택하는 것에 응답하여 제 1 콜과 제 2 콜을 제 3 콜로 결합하도록 하는 단계를 포함한다.
다른 예시적인 실시형태에서, 머신의 하나 이상의 프로세서들에 의해 실행될 때, 머신으로 하여금 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트들에 의한 서비스에 대한 콜들을 최적화하도록 하는 방법을 수행하게 하는 명령들을 포함하는 머신-판독가능 저장 매체가 제공된다. 그 방법은 제 1 콜 및 제 2 콜을 수신하는 단계, 서비스에 대해 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 것을 포함하는, 다수의 최적화 기법들 중 하나를 선택하는 단계, 및 다수의 최적화 기법들 중 하나로서 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 선택에 응답하여 제 1 콜과 제 2 콜을 제 3 콜에 결합하는 단계를 포함한다.
도 1a는 애플리케이션의 콤포넌트들과 데이터 소스들 및 리소스들 사이의 예시적인 관계들을 설명한 블록도(100)이다. 애플리케이션의 콤포넌트들은 위젯 1(112) 및 위젯 2(114)를 포함할 수도 있다. 데이터 소스들은 데이터 소스 1(132), 데이터 소스 2(136), 또는 데이터 소스 3(140)을 포함할 수도 있다. 리소스들은 리소스 1(134) 및 리소스 2(138)를 포함한다. 도 1a는 위젯 1(112)이 데이터 소스 1(132), 리소스 1(134) 및 데이터 소스 2(136)와 관계를 갖는 것으로 도시한다. 도 1a는 또한 위젯 2(114)가 데이터 소스 2(136), 리소스 2(138) 및 데이터 소스 3(140)과 관계를 갖는 것으로 도시한다.
위젯 1(112)과 데이터 소스 2(136) 사이의 관계는 위젯 1(112)이 데이터 소스 1(132)의 서비스를 호출하는 것일 수도 있다. 마찬가지로, 위젯 2(114)와 데이터 소스 2(136) 사이의 관계는 위젯 2(114)가 역시 데이터 소스 2(136)의 서비스를 호출하는 것일 수도 있다. 위젯 1(112)과 리소스 1(134) 사이의 관계는 위젯 1(112)이 포함될 수도 있는 애플리케이션(102)의 다른 콤포넌트(미도시)가 리소스 1(134)을 사용하는 것일 수도 있다. 예를 들어, 위젯 1(112)은 마크업 언어(예컨대, HTML, XHTML, XML, SVG, 또는 XUL)로 기록된 다큐먼트에 포함될 수도 있으며, 그 다큐먼트는 이어서 애플리케이션(102)에 포함될 수도 있다.
리소스 1(134)은 스타일 시트 언어로 다큐먼트의 표시(예컨대, 룩 앤드 포맷팅(look and formatting))을 설명하는 리소스일 수도 있다. (예컨대, 리소스는 월드와이드웹 컨소시엄(W3C)에 의해 정의된 CSS일 수도 있고, 또는 자바스크립트 스타일 시트(JavaScript Style Sheet: JSSS)일 수도 있다.) 이 경우, 위젯 1(112)은 다큐먼트의 표시를 결정하기 위해 리소스 1(134)을 사용할 수도 있다. 리소스 1(134)은 또한 자바스크립트 리소스, HTML 리소스, ESF 리소스, 콘텐츠 리소스(예컨대, 텍스트, 이미지들 등), 프로토타입 리소스, 룰 리소스, 메타데이터 리소스, 메타모델 리소스, 또는 다른 타입의 리소스일 수도 있다. 마찬가지로, 위젯 2(114)와 리소스 2(138) 사이의 관계는 위젯 2(114)가 포함될 수도 있는 애플리케이션(102)의 다른 콤포넌트(미도시)가 리소스 2(138)를 사용하는 것일 수도 있다.
데이터 소스들 각각은 웹 서비스일 수도 있다. 또한, 데이터 소스들 또는 리소스들 각각은 애플리케이션(102)에 대해 (예컨대, 동일한 서버, 동일한 시스템, 또는 동일한 네트워크 상에) 국부적으로 위치될 수도 있고, 또는 (예컨대, 상이한 서버, 상이한 시스템, 또는 상이한 네트워크 상에) 원격으로 위치될 수도 있다.
도 1b는, 콜 최적화기(call optimizer)(116) 및 리소스 집약기(resource aggregator)(118)가 애플리케이션(104)과 연계된 후, 애플리케이션(104)의 콤포넌트들과 데이터 소스들 및 리소스들 사이의 예시적인 관계들을 설명한 블록도(150)이다. 이 실례에서, 애플리케이션(104) 내로의 콜 최적화기(116)의 포함은 위젯 2(114)가 데이터 소스 2(1236)와의 관계를 유지할 필요성을 제거하였다. 또한, 리소스 집약기(118)의 포함은 위젯 1(112)이 리소스 1(134)과의 관계를 유지하고 위젯 2(114)가 리소스 2(138)와의 관계를 유지할 필요성을 제거하였다.
또한, 리소스 집약기(118)의 포함은 리소스 3(142)의 추가, 위젯 1(112)과 리소스 3(142) 사이의 관계의 확립, 및 위젯 2(114)와 리소스 3(142) 사이의 관계의 확립을 가져왔다. 리소스 3(142)은 애플리케이션(104)이 사용하는 리소스 1(134) 및 리소스 2(138)의 구성요소들의 집약을 포함할 수도 있다. 리소스 3(142)은 서로 중복되는(redundant) 리소스 1(134) 또는 리소스 2(138)의 구성요소들을 포함하지 않을 수도 있다. 따라서, 애플리케이션(104) 내로의 콜 최적화기(116)의 포함은 애플리케이션(104)이 의존하는 서비스 콜들의 수를 감소하게 할 수도 있으며, 애플리케이션(104) 내로의 리소스 집약기(118)의 포함은 애플리케이션(104)이 의존하는 리소스들의 수를 감소하게 할 수도 있다. 서비스 콜들의 이 최적화 및 리소스들의 집약은 애플리케이션(104)의 효율성 및 성능을 개선할 수도 있다.
도 2a는 도 1b의 콜 최적화기(116)의 예시적인 실시형태의 모듈들을 예시한 블록도이다. 콜 최적화기(116)는 애플리케이션(예컨대, 애플리케이션(102))의 콤포넌트들(예컨대, 위젯 1(112) 또는 위젯 2(114))로부터의 콜들(예컨대, 제 1 콜 및 제 2 콜)을 인터셉트하거나 수신하도록 하는 인터셉트 모듈(202) 또는 콜들의 결합을 적용하는 결합 모듈(206)을 포함할 수도 있다.
콜들의 결합의 적용은, 제 1 콜의 복수의 요청 파라미터들을 제 3 콜의 복수의 요청 파라미터들에 통합하는 것, 제 2 콜의 복수의 요청 파라미터들을 제 3 콜의 복수의 요청 파라미터들에 통합하는 것, 제 3 콜을 행하는 것, 제 3 콜의 결과를 수신하는 것, 그 결과의 제 1 부분을 제 1 콜에 대응하는 것으로 식별하는 것, 그 결과의 제 2 부분을 제 2 콜에 대응하는 것으로 식별하는 것, 제 1 콜에 대한 응답으로서 그 결과의 제 1 부분을 복수의 콤포넌트들 중 제 1 콤포넌트에게 제공하는 것, 또는 제 2 콜에 대한 응답으로서 그 결과의 제 2 부분을 복수의 콤포넌트들 중 제 2 콤포넌트에 제공하는 것을 포함할 수도 있다. 콜들을 최적화하는 다수의 기법들 중 다른 기법들이 도 2b를 참조하여 하기에서 설명된다.
도 2b는 도 1b의 콜 최적화기(116)의 예시적인 실시형태의 추가 모듈들을 예시한 블록도이다. 콜 최적화기(116)는 최적화-기법 선택 모듈(204), 배칭(batching) 모듈(242), 캐싱 모듈(244), 또는 실행 모듈(246)을 포함할 수도 있다. 최적화-기법 선택 모듈(204)은 콜들을 최적화하는 다수의 기법들 중에서 콜들을 최적화하는 한 가지 기법을 선택할 수도 있다. 콜들을 최적화하는 다수의 기법들은 캐시로부터 제 1 콜 또는 제 2 콜에 대한 응답을 제공하는 것, 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 것, 배칭 콜을 행하는 것, 제 1 콜 및 제 2 콜을 동시에 실행하는 것 등을 포함할 수도 있다. 콜들을 최적화하는 하나의 기법의 선택은, 하나의 기법이, 다수의 기법들 중 다른 기법들이 콜들을 프로세싱하는 데 걸릴 수도 있는 시간의 양에 비해 그 하나의 기법이 콜들을 프로세싱하는 데 걸릴 수도 있는 시간의 양, 하나의 기법의 가용성 또는 다수의 기법들 중 다른 기법들의 가용성의 결여에 대한 판정, 또는 하나의 기법에 대해 다수의 기법들 중 다른 기법들에 대한 적합성의 다른 측정을 포함한 다양한 기준들에 기초할 수도 있다. 이 경우, 결합 모듈(206)은 하나의 기법으로서 결합하는 것을 선택하는 것에 응답하여 결합을 적용할 수도 있다.
배칭 모듈(242)은, 콜들을 최적화하는 하나의 기법으로서 배칭 콜을 행하는 것을 선택하는 것에 대한 응답으로, 제 1 콜 또는 제 2 콜 대신에 배칭 콜을 행할 수도 있다. 배칭 콜은 제 1 콜 및 제 2 콜이 향해진 데이터 소스의 서비스로서 공급될 수도 있다. 따라서, 배칭 콜을 행하는 것을 선택하는 것은 데이터 소스에서의 배칭 서비스의 가용성에 기초할 수도 있다. 또한, 배칭 콜을 행하는 것을 선택하는 것은, 배칭 콜의 결과 중 제 1 부분이 제 1 콜에 대한 응답으로서 이용가능하고 배칭 콜의 결과 중 제 2 부분이 제 2 콜에 대한 응답으로서 이용가능하다는 판정에 기초할 수도 있다.
캐싱 모듈(244)은, 콜들을 최적화하는 하나의 기법으로서 캐시로부터의 제 1 콜 또는 제 2 콜에 대한 응답을 제공하는 것을 선택하는 것에 응답하여, 제 1 콜 또는 제 2 콜을 행하는 것으로부터 수신된 응답을 제공하는 대신에 메모리의 캐시에 포함된 데이터를 이용하여 각각 제 1 콜 또는 제 2 콜에 대한 응답을 제공할 수도 있다. 메모리의 캐시에 포함된 데이터는 서비스에 대해 제 3 콜을 행하는 것으로부터 수신된 응답일 수도 있다. 또한, 하나의 기법으로서 캐시로부터 제 1 콜 또는 제 2 콜에 대한 응답을 제공하는 것을 선택하는 것은, 제 3 콜이 제 1 콜 또는 제 2 콜과 실질적으로 동일하다거나 또는 제 3 콜을 행하는 것과 제 1 콜 또는 제 2 콜을 행하는 것이 중복된다는 판정에 기초할 수도 있다.
실행 모듈(246)은 일반적으로 콜들의 실행을 처리(handling)할 수도 있다. 실행 모듈(246)은, 하나의 기법으로서 제 1 콜 및 제 2 콜을 동시에 실행하는 것을 선택하는 것에 대한 응답으로, 제 1 콜 및 제 2 콜을 동시에 실행할 수도 있다. 제 1 콜 및 제 2 콜을 동시에 실행하는 것을 선택하는 것은, 제 1 콜이 제 2 콜에 의존적이지 않거나 제 2 콜이 제 1 콜에 의존적이지 않다는 판정에 기초할 수도 있다. 실행 모듈(246)은 애플리케이션의 적절한 콤포넌트(예컨대, 도 1b의 위젯 1(112))에 대한 콜에 대한 응답의 포워딩을 처리할 수도 있다. 실행 모듈(246)은 또한 최적화((예컨대, 배칭 콜을 행하는 것, 캐시로부터 제 1 콜 또는 제 1 콜의 결과를 제공하는 것, 또는 제 1 콜과 제 2 콜의 결합))의 결과로부터 콜에 대한 응답의 어셈블리를 처리할 수도 있다.
간소성을 위해, 전술된 설명은 제 1 콜 및 제 2 콜에 대해 단일의 최적화 기법을 적용하는 것을 참조한다. 그러나, 콜 최적화기(116)는 하나 이상의 애플리케이션 콤포넌트들에 의해 행해진 하나 이상의 콜들을 인터셉트할 수도 있고, 그 하나 이상의 콜들에 대해 하나 이상의 콜 최적화 기법들을 선택할 수도 있으며, 그 하나 이상의 콜 최적화 기법들을 그 하나 이상의 콜들에 적용할 수도 있다는 것이 이해되어야 한다. 예를 들어, 콜 최적화기(116)는 임의의 수의 콜들을 프로세싱할 수도 있고, 또는 임의의 수의 콜들에 임의의 수의 최적화 기법들을 적용할 수도 있다. 또한, 콜 최적화기(116)는 동시에 또는 순차적으로 동작들을 수행할 수도 있다. 또한, 콜 최적화기(116)는 런타임으로 동작들을 자동으로 수행할 수도 있다. 그럼에도 불구하고, 동작들의 성능의 효과는 설계 시에 애플리케이션의 콤포넌트(예컨대, 웹 페이지)가, 그것이 애플리케이션 개발자에 의해 핸드-코딩 또는 수동으로 최적화된 것처럼 수행하게 하는 것일 수도 있다. 또한, 콜 최적화기(116)는 하나 이상의 애플리케이션 콤포넌트들 중 하나로부터의 하나 이상의 콜들에 하나 이상의 최적화 기법들을 적용할 수도 있다. 다시 말해, 콜 최적화기(116)는 2 이상의 콤포넌트로부터의 하나 이상의 콜들에 하나 이상의 최적화 기법들을 적용하는 것으로 국한되지 않는다.
도 2c는 도 1b의 리소스 집약기의 예시적인 실시형태의 모듈들을 예시한 블록도이다. 리소스 집약기(118)는 식별 모듈(222), 집약 모듈(224), 또는 업데이트 모듈(226)을 포함할 수도 있다. 식별 모듈(222)은, 애플리케이션(예컨대, 애플리케이션(102))과 연계된 다수의 리소스들 중 제 1 리소스의 적어도 일부분이 다수의 리소스들 중 제 2 리소스의 적어도 일부분과 중복됨을 식별할 수도 있다. 예를 들어, 식별 모듈(222)은 제 1 리소스가 제 2 리소스의 업데이트 버전이거나 애플리케이션이 제 2 리소스 대신에 제 1 리소스의 적어도 일부분을 이용할 수 있음을 식별할 수도 있다.
집약 모듈(224)은, 제 1 리소스의 적어도 일부분이 제 2 리소스의 적어도 일부분과 중복된다는 식별에 대한 응답으로, 제 1 리소스와 제 2 리소스를 제 3 리소스에 집약할 수도 있다. 제 3 리소스는 애플리케이션이 사용하는 제 1 리소스의 일부분 및 제 2 리소스의 일부분을 포함할 수도 있다.
업데이트 모듈(226)은 제 3 리소스를 사용하도록 애플리케이션을 업데이트할 수도 있다. 애플리케이션의 업데이트는 제 1 리소스의 중복 부분 또는 제 2 리소스의 중복 부분에 대한 애플리케이션의 의존성을 제거할 수도 있다. 예를 들어, 업데이트 모듈(226)은 제 2 리소스의 중복 부분 대신에 제 1 리소스의 일부분을 제 3 리소스에 포함시키도록 애플리케이션을 업데이트할 수도 있다. 따라서, 업데이트 모듈(226)은 애플리케이션이 의존하는 리소스들의 전체 사이즈를 감소시킬 수도 있다. 또한, 업데이트 모듈(226)은 클라이언트가 제 1 리소스 또는 제 2 리소스 대신에 제 3 리소스를 캐싱할 수도 있도록 제 3 리소스를 표면화(externalize)할 수도 있다. 예를 들어, 클라이언트는 처음 애플리케이션에 액세스할 때 제 3 리소스를 다운로드 및 캐싱할 수도 있다. 그 후, 두 번째로 애플리케이션에 액세스할 때, 클라이언트는 제 3 리소스를 다시 다운로드할 필요가 없다. 리소스 집약기(118)는 런타임으로 리소스 집약을 자동으로 수행할 수도 있다. 그럼에도 불구하고, 리소스 집약의 효과는, 애플리케이션(예컨대, 애플리케이션(102))의 콤포넌트(예컨대, 웹 페이지)가, 그것이 설계 시에 애플리케이션 개발자에 의해 핸드-코딩 또는 수동으로 최적화된 것처럼 보이게 하는 것일 수도 있다.
도 2d는 도 1a 및 도 1b의 위젯 1(112)의 예시적인 모듈들을 예시한 블록도이다. 위젯 1(112)은 애플리케이션의 더 복잡한 콤포넌트(예컨대, 웹 페이지)의 기본 콤포넌트(예컨대, 헤더 유닛, 검색 유닛, 카테고리 네비게이션 유닛, 승인 또는 인가 유닛, 또는 멤버 뱃지 유닛)일 수도 있다. 위젯 1(112)은 표시 모듈(presenting module)(262), 로직 구현 모듈(264), 접속 모듈(266), 또는 구성 모듈(268)을 포함할 수도 있다. 표시 모듈(262)은 위젯 1(112)과 연계된 하나 이상의 UI들을 표시할 수도 있다. 예를 들어, 위젯 1(112)에 액세스하는 클라이언트가 모바일-디바이스 기반 웹 브라우저(예컨대, 애플 사파리브라우저(Apple Safari browser))인 경우, 표시 모듈(262)은 모바일-디바이스 기반 웹 브라우저에 적응되는 UI(예컨대, 개인-컴퓨터 기반 웹 브라우저에 대한 UI보다 더 적은 텍스트 또는 더 적은 이미지들을 포함하는 UI)를 표시할 수도 있다. 위젯 1(112)에 액세스하는 클라이언트가 개인-컴퓨터 기반 웹 브라우저(예컨대, 마이크로소프트 윈도우즈 인터넷 익스플로러 브라우저)인 경우, 위젯은 개인 컴퓨터 기반 웹 브라우저에 적응된 UI(예컨대, 모바일-디바이스 기반 웹 브라우저에 대한 UI보다 더 많은 이미지들 또는 더 많은 텍스트를 포함하는 UI)를 표시할 수도 있다. 표시 모듈(262)은 위젯 1(112)의 로직의 구현으로부터 위젯 1(112)의 사용자 인터페이스의 표시를 분리시킬 수도 있다.
로직 구현 모듈(264)은 위젯 1(112)의 로직을 구현할 수도 있다. 로직의 구현은 하나 이상의 데이터 소스들(예컨대, 도 1b의 데이터 소스 1(132), 데이터 소스 2(136), 또는 양측 모두)에 액세스하는 것을 포함할 수도 있다. 또한, 하나 이상의 데이터 소스들의 액세스는 하나 이상의 데이터 소스들과 연계된 하나 이상의 애플리케이션 프로그래밍 인터페이스들(APIs)을 호출하는 것을 포함할 수도 있다. 로직 구현 모듈(264)은 위젯 1(112)의 사용자 인터페이스의 표시로부터 위젯 1(112)의 로직의 구현을 분리시킬 수도 있다.
접속 모듈(266)은, 표시 모듈(262)이 하나 이상의 데이터 소스들의 액세스를 통해 로직 구현 모듈(264)이 수신하는 데이터를 포함하는, 로직 구현 모듈(264)로부터 수신된 데이터의 표시를 하나 이상의 UI들 내에 통합할 수 있도록 표시 모듈(262)을 로직 구현 모듈(264)에 접속시킬 수도 있다.
구성 모듈(268)은 구성 API를 통해 위젯 1(112)의 구성가능한 속성들을 노출시킬 수도 있다. 구성 API는 위젯 1(112)과 연계된 구성 데이터(예컨대, 데이터 스키마)로의 프로그램적 액세스를 제공할 수도 있다. 구성 API는 위젯 1(112)이 (예컨대, XML 파일과 연계된 XSD 스키마의 핸드-코딩을 통해) 수동으로 구성될 것을 요구하는 대신에 위젯 1(112)이 간단한 사용자 인터페이스(예컨대, 구성 API를 통해 위젯 1(112)에 액세스하는 툴의 사용자 인터페이스)를 통해 구성되게 할 수도 있다. 구성 API는 테마(예컨대, 크리스마스 또는 할로윈 테마)를 정의하거나 위젯 1(112)에 적용하도록 하는 기능을 포함할 수도 있다. 테마의 적용은 위젯 1(112)의 구성가능한 속성들 중 다수의 속성들을 단일 동작으로 변경하는 것을 포함할 수도 있다. 위젯 1(112)이 검색 위젯인 경우, 구성 API는 위젯 1(112)의 구성가능한 속성으로서 디폴트 검색 스트링을 노출시킬 수도 있다. 그 후, 구성 API는 디폴트 검색 스트링을 (예컨대, "방수 부츠", "MP3 플레이어들", 또는 다른 스트링으로) 설정하도록 호출될 수도 있다. 구성 API는 위젯 1(112)의 지역화를 정의하거나 적용하도록 하는 기능들을 포함할 수도 있다. 지역화(localization)의 적용은 위젯 1(112)에 액세스하는 사용자의 지역성(locality)(언어, 영역 등)에 기초하여 위젯 1(112)과 연계된 텍스트 또는 이미지들의 변경을 초래할 수도 있다. 예를 들어, 위젯 1(112)에 독일(예컨대, de-DE) 지역화를 적용하는 것은, 위젯 1(11)과 연계된 텍스트로 하여금 독일어로 되게 할 수도 있고, 그 반면에 위젯 1(112)에 미국(예컨대, en-US)에서 사용되는 영어를 적용하는 지역화는 위젯 1(112)과 연계된 텍스트가 영어로 표시되게 할 수도 있다.
구성 모듈(268)은 또한 메타모델과의 위젯 1(112)의 연계성을 관리할 수도 있다. 예를 들어, 구성 모듈(268)은 메타데이터 정의 프레임워크(또한, 메타모델 프레임워크, 메타데이터 프레임워크, 또는 메타모델 정의 프레임워크라고도 지칭됨)를 사용할 수도 있다. 메타모델 프레임워크는 위젯 1(112)의 구성가능한 속성들을 설명하는 데 사용될 수도 있는 타입들과 같은, 모델들(또는 타입들)의 기술들(descriptions)을 관리하도록 하는 API(예컨대, IDataDef API)를 포함할 수도 있다. 메타모델 정의 프레임워크는 (예컨대, XML 스키마와 등가인) 일 타입의 구조적 또는 기능적 정의를 지원할 수도 있거나, 싱글 타입의 고유성(inheritance) 또는 다형성(polymorphism) 지원으로 객체 지향될 수도 있거나, 데이터 고유성 또는 레이어링(예컨대, 자바스크립트와 유사함)으로 프로토타입 지향될 수도 있다. 각각의 기본 타입은 슈퍼타입(단일 고유성 타입), 제약들(타입 불변 조항(예컨대, 열거물(enumeration)들)), 동작들(임의의 리턴 타입을 갖는 위임 메소드들), 변환들(다른 타입들로 전환할 수 있는 위임 메소드들(예컨대, 다형성을 지원하는 메소드들)), 또는 초기 혹은 디폴트 데이터(예컨대, 데이터 고유성 또는 레이어링 지원을 가짐)를 포함하는 멤버들을 가질 수도 있다. 각각의 복잡한 타입은 기본 타입의 멤버들, 또는 연계성들(역할, 타입, 또는 다중성)이나 속성들(약칭 또는 값의 쌍들)을 포함한 추가 멤버들을 포함할 수도 있다. 역할은 연계성의 인스턴스의 명칭일 수도 있다. 다중성은 싱글 다중성(0, 0..1, 1), 리스트 다중성(0..n, 1..n), 또는 맵 다중성(키(key)들로서 스트링들 또는 열거물들을 가짐)일 수도 있다.
메타데이터 프레임워크는 도메인 특정 언어(DSL)을 이용하여 타입들의 정의를 지원할 수도 있다. DSL은 모델(또는 데이터) 정의들(예컨대, IDataDef 인터페이스)이 모델(또는 데이터) 인스턴스들(예컨대, IManagedData 인터페이스)과 상관되는 프로토타입 기반 접근방안을 이용할 수도 있다. IDataDef 인터페이스는 DSL 정의 계층의 최상단에 있을 수도 있다. IDataDef 인터페이스는, 구조적 정의 또는 데이터 레이어링을 포함한 정의의 라이프사이클을 관리할 수도 있다. IDataDef 인터페이스는 제약들, 동작들, 또는 전환들의 타입 계층 또는 정의들을 보유할 수도 있다. DSL 정의 계층은 하나의 타입으로부터 다른 타입으로의 객체의 전환(예컨대, 스트링들로 또는 스트링들로부터의 자바 객체들의 변환)을 관리하는 간단한-값-단위-정의 인터페이스(예컨대, ISimpleValueUnitDef 인터페이스)를 포함할 수도 있다. DSL 정의 계층은 속성들 또는 연계성들의 정의들을 보유한 복잡한-데이터-정의 인터페이스(예컨대, IComplexDataDef 인터페이스)를 포함할 수도 있다. 복잡한-데이터-정의 인터페이스는 또한 연계성들에 대응하는 다수의 시멘틱들을 관리하도록 하는 구현들을 포함할 수도 있다. 예를 들어, 복잡한-데이터-정의 인터페이스는 코드 생성 프로세스를 통해 클래스들이 되는 비컨형 구조들(예컨대, StructDataDef 객체들)이나, 또는 코드 생성 프로세스를 통해 인터페이스들 또는 열거물들이 되는 인터페이스형 선택들 또는 대안물들(예컨대, ChoiceDataDef 객체들)을 포함할 수도 있다.
도 3은 메타모델 프레임워크의 예시적인 아키텍처(300)의 블록도이다. 메타모델 프레임워크는 사용자(302)를 포함할 수도 있다. 사용자(302)는 모델 메타데이터에 대해 프레임워크의 메타데이터 모델링 (310) 콤포넌트와 상호 작용(예컨대, 타입 정의들을 작성, API들을 생성, 등)할 수도 있다. 메타데이터 모델링(310) 콤포넌트는 메타데이터를 모델링하기 위해 사용자 인터페이스를 제공하는 메타데이터 툴 또는 애플리케이션(306)을 포함할 수도 있다. 툴은 메타데이터 또는 도메인 모델(308)을 작성할 수도 있다. 모델링된 메타데이터는 입력일 수도 있고, 또는 그와 달리 메타데이터 시스템(320)과 연계될 수도 있다. 메타데이터 시스템(320)은 에이전트 또는 중재 층(314)을 포함할 수도 있다. 에이전트 또는 중재 층(314)은 인터프리터(312), 발생기(316), 또는 맵퍼(318)를 포함할 수도 있다. 인터프리터(312)는 메타데이터 정의에 액세스할 수도 있고, 또는 타입, 도메인, 또는 범위를 유효화시킬 수도 있다. 발생기(316)는 연계된 구체적인 클래스를 메타데이터 정의와 맵핑할 수도 있고, 또는 구체적인 객체를 구성하거나 확보(wire-up)할 수도 있다. 맵퍼(318)는 메타데이터 클래스들을 구체적인 클래스들에 맵핑할 수도 있다. 메타데이터 모델링(310) 콤포넌트는 메타데이터 또는 모델을 저장하거나 그에 액세스하도록 하기 위해 지속 층(322)과 상호 작용할 수도 있다. 지속 층(322)은, 이어서, 메타데이터 정의 리포지토리(324)와 상호 작용하여 메타데이터 정의들(예컨대, 타입 정의들), 모델, 또는 다른 메타데이터를 저장하도록 할 수도 있다. 메타데이터 시스템(320)은 또한 지속 층(322)과 상호 작용할 수도 있다. 지속 층(322)은, 이어서, 또한 메타데이터 인스턴스 리포지토리(326)와 상호작용하여 메타데이터의 인스턴스들(예컨대, 타입 정의들의 인스턴스들)을 저장하도록 할 수도 있다.
메타모델 프레임워크는 클래스 기반 고유성 패러다임이 아니라 프로토타입 기반 패러다임을 지원할 수도 있다. 예를 들어, 헤더, 콘텐츠, 또는 푸터(footer)를 갖는 제 1 웹 페이지는 더 상세한 헤더를 갖는 제 2 웹 페이지에 대한 프로토타입일 수도 있다. 제 2 웹 페이지는, 이어서, 더 상세한 헤더 및 좌측 네비게이션 페인(pane)을 갖는 제 3 웹 페이지에 대한 프로토타입일 수도 있다. 서브클래스형 프로토타입은 프로토타입 불변성들(예컨대, 유효화 룰들) 또는 값의 제한들(예컨대, 열거된 스트링들이나 최소 또는 최대 값들)과 같은 제약들을 추가할 수도 있다. 서브클래스형 프로토타입은 어떠한 것도 제거하지 않을 수도 있다(그러나, 0에 대한 다중성을 변경할 수도 있다). 서브클래스형 프로토타입은 새로운 속성들 또는 구조적 구성요소들을 추가하거나 혼입(mix in)할 수도 있다(예컨대, 혼입은 명칭 충돌을 피하기 위해 명칭 공간 지원을 추가할 수도 있다). 서브클래스형 프로토타입은 동작들의 형태(예컨대, 모델을 판독 또는 기록하도록 하는 임의적 코드)로 또는 변환들의 형태(예컨대, 하나의 타입으로부터 다른 타입으로 데이터를 전환 또는 다형화하도록 하는 코드)로 행동에 위브(weave)할 수도 있다.
메타모델 프레임워크는 모델(또는 메타데이터) 정의 라이프사이클을 지원할 수도 있다. 즉, 메타모델은 (예컨대, 프로토타입 기반 접근방안을 이용하여) 구조적 정의와 데이터 세팅 동작을 결합한 모델 정의들을 지원할 수도 있다. 데이터 세팅은 구조적 정의에 기초한 타입의 객체의 인스턴스와 연계된 값들을 세팅하는 것을 포함할 수도 있다. 이러한 객체는 관리된 데이터라고 지칭될 수도 있다. 도 4a는 모델 정의의 라이프사이클을 관리하는 방법(400)의 예시적인 실시형태의 플로우차트이다. 방법(400)은 타입을 선언(예컨대, 타입에 대한 기준을 포함하는 타입 정의를 작성)하는 단계(402), 타입에 기초하여 객체 또는 구조를 인스턴스화(예컨대, 타입을 인스턴스화)하는 단계(404), 또는 구조에 데이터를 세팅(예컨대, 인스턴스화 타입과 연계된 값을 세팅)하는 단계(406)를 포함할 수도 있다.
도 4b는 애플리케이션의 콤포넌트(예컨대, 도움말 페이지)를 구성하도록 하는 API를 생성하는 예시적인 방법(450)의 플로우차트이다. 방법(450)은, 콤포넌트의 구성가능한 속성들(예컨대, 그 구성가능한 속성들을 나타내거나, 또는 그 구성가능한 속성들이 어떻게 스키마 다이어그램을 (예컨대, 통합 모델링 언어(UML)를 통해) 이용하거나 또는 스키마를 (예컨대, DSL을 통해) 이용하여 서로에게 관련되는지를 나타냄)을 결정하는 단계(452), 스키마로부터 타입 정의들을 작성 또는 생성하는 단계(454), 스키마 또는 타입 정의들로부터 콤포넌트를 구성하기 위한 API를 작성 또는 생성하는 단계(456), 콤포넌트가 API를 이용하여 (예컨대, 런타임으로) 구성될 수 있도록 API를 콤포넌트에 연계시키는 단계(458), 또는 스키마 다이어그램, 스키마, 타입 정의들, API 또는 다른 메타데이터를 (예컨대, 리소스 프레임워크를 이용하여) 저장하는 단계(460)를 포함할 수도 있다. 콤포넌트의 구성은, 사용자 인터페이스를 통해 API를 노출시키거나 그와 달리 사용자가 API에 액세스하게 하는 (또는 사용자에게 전단을 제공하는) 개발 툴과 같이, 클라이언트를 이용하는 것을 포함할 수도 있다.
도 5, 도 6, 도 7 및 도 8은 애플리케이션의 콤포넌트를 구성하기 위해 API를 생성하는 방법(450)(도 4b)과 연계된 소스 코드의 예시적인 스냅샷을 제공한다. 도 5는 콤포넌트의 구성의 예시적인 스키마 다이어그램(500)을 도시한다. 도 6은 도 5의 스키마 다이어그램에 대응하는 예시적인 스키마(600)를 도시한다. 도 7은 도 6의 예시적인 스키마(600)에 대응하는 예시적인 타입들(예컨대, 클래스들)을 도시한다. 도 8은 예시적인 스키마(600) 또는 예시적인 타입들(700)에 기초한 콤포넌트를 구성하기 위한 예시적인 API(800)를 도시한다.
메타모델 프레임워크는 모델 정의 팩토리를 포함할 수도 있다. 모델 정의 팩토리는 정의 또는 프로토타입의 인스턴스를 얻는 데 이용될 수도 있다. 모델 정의 팩토리는 새로운 타입들 또는 적응된 (예컨대, 레거시) 타입들에 대한 기준 모델 또는 단일 모델을 지원할 수도 있다. 모델 정의 팩토리는 코드 발생기들에 의해 (예컨대, 타입 정의들을 생성하도록(454) 또는 API를 생성하도록(456)) 사용될 수도 있다. 모델 정의 팩토리는 툴들(예컨대, 에디터들 또는 메타모델 구동 툴들)에 의해 사용될 수도 있다. 모델 정의 팩토리는 메타데이터 정의 라이프사이클을 관리할 수도 있다. 모델 정의 팩토리는 데이터의 반복적인 타입들 또는 레이어링을 지원할 수도 있다. 모델 정의는 프레임워크- 또는 컨테이너-제공된 또는 애플리케이션-특정 메타데이터 정의 인젝터(injector)들의 등록을 지원할 수도 있다. 프레임워크-제공된, 컨테이너-제공된, 또는 애플리케이션-특정 메타데이터 정의 인젝터들은 콜백(callback) 메커니즘을 통해 구현될 수도 있다.
따라서, 메타모델 프레임워크의 예시적인 아키텍처(300)는, 키-값-코딩(KVC) 지원을 갖는 타입 보호 POJO(plain-old Java object) 모델 생성, XML 집행자(marshaller) 또는 비집행자의 생성, 툴링을 위한 정의들을 질의하기 위한 런타임 자바 API들의 제공, 다큐먼트화 또는 툴링 목적을 위한 XSD 또는 XMI(UML) 생성을 가능하게 하는 자바 기반 모델 정의를 제공할 수도 있다. 메타모델 프레임워크의 이점들은, 정의 및 데이터 소비 양측 모두에 대한 지속적 인터페이스, 상이한 부분들 또는 레거시 시스템들에 걸친 정의들의 재사용, 툴링 지원(발견 가능성(discoverability) 또는 정의들 또는 툴링 도우미들), 고유성 프로세스 전반에 걸쳐 혼합 타입 정의들 또는 값 세팅들을 허용하는 프로토타입 기반 정의들, 다수의 정의들 또는 AOP 정의 인젝터들의 혼입들을 통한 관심사들의 분리, 행위 위빙(weaving)(예컨대, 변환기들 또는 기준들을 위한 타입 보호 액세서들)을 통한 관심사들의 분리, 또는 (각각의 리소스에 저장될) "호환가능성 키"의 사양을 지원하거나 버전 변환기들을 제공하여 호환불가능한 버전들을 이동시키도록 하는 정의 버저닝(versioining)을 포함할 수도 있다.
도 2d의 구성 모듈(268)은 또한 위젯 1(112)과 연계된 리소스들의 저장 및 취출을 관리할 수도 있다. 예를 들어, 구성 모듈(268)은 리소스 프레임워크를 이용하여 리소스들을 저장 및 취출하도록 할 수도 있다. 도 9는 리소스 프레임워크의 아키텍처(900)의 예시적인 실시형태의 블록도이다. 리소스 프레임워크는 애플리케이션 층(902), 타입 특정 액세스 층(922), 리포지토리 층(repository layer)(942), 저장 지속 인터페이스(storage persistence interface)(962), 또는 저장 리포지토리들이나 시스템들의 다양한 구현물들(982)을 포함할 수도 있다. 애플리케이션 층(902)은 애플리케이션들(예컨대, e페이지들(904), 서비스 프레임워크 런타임(906) 콤포넌트, 서비스 프레임워크 런타임(908) 콤포넌트, 또는 콘텐츠 리포지토리 런타임(912) 콤포넌트)에 (예컨대, 애플리케이션 레벨 API를 통해) 런타임으로 리소스들로의 액세스들을 제공할 수도 있다.
타입 특정 액세스 층(922)은 애플리케이션 층(902) API와 리포지토리 층(942) API 사이의 변환에 도움이 될 수도 있다. 예를 들어, 타입 특정 액세스 층(922)은 다양한 리소스 타입들과 연계된 도우미들(예컨대, HTML 리소스 액세스 도우미(924), 자바스크립트 리소스 액세스 도우미들(926), CSS 리소스 액세스 도우미(928), 프로토타입 리소스 액세스 도우미(930), 콘텐츠 리소스 액세스 도우미(932) 등)을 포함할 수도 있다.
리포지토리 층(914)은 메모리(예컨대, 휘발성 메모리) 내로의 리소스들의 저장을 관리하도록 하는 리포지토리 레벨 API(예컨대, IresourceRepository(944))를 포함할 수도 있다. 리포지토리 레벨 API는 레거시 리소스들, 직렬 변환기(serializer), 또는 컨버터에 대한 어댑터들의 등록을 지원하는 리소스 리포지토리 구현물(946)과 연계될 수도 있다. 이 방식으로, 리포지토리 레벨 API는 다수의 소유자들 또는 레거시 시스템들에 걸쳐서 동일한 기준 모델을 이용하는 것을 지원할 수도 있다. 리포지토리 레벨 API는 리포지토리 구조의 정의(예컨대, 리소스의 로직 키들)을 지원할 수도 있다. 리포지토리 레벨 API는 다양한 포맷들 사이(예컨대, 휘발성 메모리 포맷과 비휘발성 메모리 포맷 사이, 레거시 시스템 포맷과 현재 시스템 포맷 사이, 또는 다른 포맷들 사이)에서의 리소스들의 전환들 또는 직렬변환들을 지원할 수도 있다. 리포지토리 레벨 API는 기초 리소스 리포지토리들의 자바 기반 타입 보호 랩퍼(wrapper)일 수도 있다. 리포지토리 레벨 API는 로직 키와 물리적 키 사이의 맵핑을 지원하도록 하는 리졸버(resolver)일 수도 있다. 리졸버는 리소스 패턴 어웨어일 수도 있다. 예를 들어, 리졸버는 순열들(예컨대, 사이트들 또는 현장(locale)들), 버저닝(예컨대, 릴리스(release) "트레인" 넘버들), 라이프사이클 상태들(예컨대, 검토 상태 또는 생성 상태) 또는 호환가능성 관리를 지원할 수도 있다. 리포지토리 레벨 API는 정보세트 기반 지속성을 지원하여, 신속하거나 콤팩트한 2진 XML 직렬 변환들, 입자형 타깃, 오버라이드, 바인딩, 또는 레이어링 속성들의 지원, 또는 플러그가능한 직렬 변환기나 직병렬 변환기를 레버리징할 수도 있다. 플러그가능한 직렬 변환기 또는 직병렬 변환기는 메타모델 프레임워크에 커플링되지 않을 수도 있다. 리포지토리 레벨 API는 트레이서를 지원하여 리소스 사용을 추적할 수도 있다. 리포지토리 레벨 API는 또한 데이터 타입들의 인스턴스들(예컨대, 관리된 데이터)의 관리를 지원할 수도 있다. 리포지토리 레벨 API(944)는 타입 보호 KVC 객체들뿐 아니라 일반 객체들에 리소스들을 적용할 수도 있다. 리포지토리 레벨은 또한 (예컨대, 툴을 통해) 편집될 객체들의 정의들(예컨대, 타입 선언들)을 노출시킬 수도 있다.
리포지토리 층(942)은 저장 지속 인터페이스(962)와 연계될 수도 있다. 저장 지속 인터페이스(962)는, StaaS(storage-as-a-service) 기반 구현물(984), 프록시-서비스 구현물(986), 파일-시스템 기반 구현물(988), 또는 서비스 지향 아키텍처(SOA) 클라이언트 기반 구현물(990)을 포함할 수도 있는 기본적인 지속(예컨대, 비휘발성) 저장 구현물들(982)로 공통 API를 제공하도록 하는 지속-매니저 API(예를 들어, IResourcePersistenceManager(964))를 포함할 수도 있다. Staas 기반 구현물(984)은 핫 디플로이먼트(hot deployment) 및 고속의 롤-아웃 또는 롤-백(예컨대, 데이터 센터 이중화) 또는 진실의 런타임 소스(예컨대, UGC)를 지원할 수도 있고, 지원을 오버라이드할 수도 있다. 프록시 서버는 페처(fetcher) 또는 로컬 디스크 캐시(예컨대, 고성능용)를 포함할 수도 있다. 이어서, SOA 클라이언트 기반 구현물(990)은 하나 이상의 SOA 서비스들(미도시)에 기초할 수도 있고, 또는 추가의 StaaS 기반 구현물(미도시)을 포함할 수도 있다. 리소스들의 저장 및 취출의 관리는 런타임으로 수행될 수도 있다.
따라서, 리소스 프레임워크의 아키텍처(900)의 예시적인 실시형태는 균일한 API를 액세스 리소스들에 제공하지만 타입 특정 API들의 추가, 플러그가능한 지속 메커니즘들을 제공하는 리소스 지속 서비스, 또는 설계 시간으로부터 런타임까지의 발군의 솔루션으로서의 프로토타입 리소스 리포지토리를 허용하는 리소스 리포지토리를 포함할 수도 있다. 이 방식으로, 아키텍처(900)의 예시적인 실시형태는, 최상의 실행들 및 특징들을 대부분의 리소스 타입들로 확장할 수도 있고, 또는 유지하거나 조정하기에 쉽거나 저렴할 수도 있고, 또는 대부분의 구성 표면화 요구들에 대한 쉬운 고-투 솔루션(go-to solution)을 제공할 수도 있다.
도 10은 예시적인 위젯 프레임워크(1000)의 구성요소들과 상호 작용하는 2개의 위젯들의 블록도이다. 2개의 위젯들 중 제 1 위젯인 위젯 1(112)은 단계 A1(1002), 단계 A2(1004) 또는 단계 A3(1006)을 포함할 수도 있다. 단계 A1(1002)은 동작 1(OP1)(1008), 동작 2(OP2)(1010), 또는 콜백(1012)을 포함할 수도 있다. 단계 A2(1004)는 동작 3(OP3)(1014) 및 콜백(CB)(1018)을 포함할 수도 있다. 단계 A3(1006)은 동작 4(OP4)(1016) 및 콜백(1020)을 포함할 수도 있다. OP2(1010)는 제 2 서비스에 대한 콜을 포함할 수도 있다. OP1(1008), OP2(1010), OP3(1014), 및 OP4(1016)는 제 1 서비스, 제 2 서비스, 제 3 서비스, 및 제 4 서비스에 대한 콜을 각각 포함할 수도 있다. 콜백(1011)은 위젯 관리자(1040)가 제 1 콜 또는 제 2 콜의 실행에 대한 응답으로 호출하는 기능일 수도 있다. 콜백(1018)은 위젯 관리자(1040)가 제 3 콜의 실행에 대한 응답으로 호출하는 콜백 기능일 수도 있다. 콜백(1020)은 위젯 관리자(1040)가 제 4 콜의 실행에 대한 응답으로 호출하는 기능일 수도 있다. 2개의 위젯들 중 제 2 위젯인 위젯(1024)은 단계 B1(1022)을 포함할 수도 있다. 단계 B1은 동작 5(OP5)(1026), 동작 6(OP6)(1028), 및 콜백(1030)을 포함할 수도 있다. OP5(1026) 및 OP6(1028)은 제 5 서비스 및 제 6 서비스에 대한 콜을 각각 포함할 수도 있다.
위젯 관리자(1040)는 위젯 1(1012) 및 위젯 2(1024)를, 그들의 라이프사이클 또는 런타임 동작을 포함하여 관리할 수도 있다. 위젯 관리자(1040)는 위젯 1(1012)에 대한 참조(reference)(1042) 또는 위젯 2(1024)에 대한 참조(1044)를 포함할 수도 있다. 또한, 위젯 관리자(1040)는 각각의 위젯 내에서의 단계들에 대한 참조들을 포함할 수도 있다. 예를 들어, 위젯 관리자(1040)는 단계 A1(1022)에 대한 참조(1046) 또는 단계 B1(1022)에 대한 참조(1052)를 포함할 수도 있다. 위젯 관리자(1040)는 위젯으로부터 서비스에 대한 콜을 인터셉트할 수도 있고, 그 콜을 위젯 엔진(1060)에 포워딩할 수도 있다.
위젯 엔진(1060)은 위젯에 의한 하나 이상의 콜들의 프로세싱을 처리할 수도 있다. 예를 들어, 위젯 엔진(1060)은 (예컨대, OP 1(1008)에 대한 위젯 1(1012)의 콜 또는 OP 5(1026)에 대한 위젯 2(1024)의 콜의 위젯 관리자(1040)에 의한 인터셉트에 대한 응답으로) 위젯 관리자(1040)로부터 OP1(1008)에 대한 참조(1062) 또는 OP5(1026)에 대한 참조(1064)를 수신할 수도 있다. 위젯 엔진(1060)은 최적화기(1066), 실행기(1068), 또는 캐시(1070)를 포함할 수도 있다. 최적화기(1066)는 도 2a 및 도 2b를 참조하여 전술된 바와 같이 콜들을 최적화할 수도 있다. 실행기(1068)는 도 2b를 참조하여 전술된 바와 같이 하나 이상의 콜들을 순차적으로 또는 동시에 실행할 수도 있다. 캐시(1070)는 위젯 엔진(1060)이 도 2b에 대해 전술된 바와 같이 콜의 결과를 캐싱하는 메모리(예컨대, 다른 시스템 메모리들보다 더 높은 속도를 갖는 휘발성 메모리)일 수도 있다. 위젯 엔진(1060)은 프로세싱할 콜들에 관한 정보(예컨대, 응답 또는 리플라이 데이터)를 수신하거나 프로세싱된 콜들에 관한 정보를 전송하도록 하는 모듈(미도시)을 포함할 수도 있다. 위젯 엔진(1060)은 도 2a 및 도 2b에 관해 전술된 바와 같이 최적화된 콜의 결과의 프로세싱에 기초하여 하나 이상의 콜들에 대한 응답을 제공할 수도 있다.
도 11은 애플리케이션의 다양한 각각의 클라이언트들(예컨대, 모바일 웹 브라우저(1152), 웹 브라우저(1154), 이메일 클라이언트(1156), 또는 다른 클라이언트(1158))과 연계될 수도 있는 애플리케이션(예컨대, 도 1b의 애플리케이션(104))의 다양한 버전들(예컨대, 버전 1(1162), 버전 2(1164), 버전 3(1166), 또는 버전 4(1168))을 개발하기 위한 예시적인 개발자 툴(1122) 사이의 상호작용들(1100)의 블록도이다. 개발자 툴(1122)은 애플리케이션 서버(1112)에 통신 가능하게 커플링된 개발자 머신(1102) 상에서 구동하는 중일 수도 있다. 애플리케이션의 다양한 버전들은 애플리케이션 서버(1112) 상에서 구동하는 중일 수도 있다. 모바일 웹 브라우저(1152)는 모바일 디바이스(1104) 상에서 구동하는 중일 수도 있고, 웹 브라우저(1154)는 개인 컴퓨터(1106) 상에서 구동하는 중일 수도 있으며, 이메일 클라이언트(1156)는 사용자 머신(1108) 상에서 구동하는 중일 수도 있고, 다른 클라이언트(1158)는 다른 디바이스 (1110) 상에서 구동하는 중일 수도 있다. 다양한 클라이언트들이 애플리케이션 서버(1112)에 통신적으로 커플링될 수도 있다.
개발자 툴(1122)은 편집 모듈(1132), 시뮬레이팅 모듈(1136), 또는 설치 모듈(deploying module)(1138)을 포함할 수도 있다. 편집 모듈(1132)은 편집을 위한 콤포넌트(예컨대, 도 2d의 위젯 1(112))의 구성가능한 속성들을 노출시킬 수도 있다. 즉, 편집 모듈(1132)은 편집을 위해 (전술된) 도 2d의 구성 모듈(268)과 상호 작용하여, 구성 가능한 속성들 또는 구성가능한 속성들(예컨대, 메타데이터 정의들)과 연계된 메타데이터를 발견할 수도 있다. 편집 모듈(1132)은 런타임으로 (예컨대, 설치 모듈(1138)을 이용한 신속한 설치를 통해) 콤포넌트를 구성할 수도 있다.
개발자 툴(1122)은 애플리케이션의 설치를 요구하지 않고 애플리케이션(또는 애플리케이션의 특정 콤포넌트들 또는 애플리케이션의 특정 버전들)의 시뮬레이션을 가능하게 하는 시뮬레이팅 모듈(1136)을 포함할 수도 있다. 예를 들어, 시뮬레이팅 모듈(1136)은 애플리케이션이 웹 브라우저에서 구동하게 하는 웹 브라우저 (예컨대, Firefox) 확장일 수도 있다. 확장은 자바 가상 머신(JVM)이 웹 브라우저 확장과 동일한 머신 상에서 구동할 필요가 없도록 (예컨대, 대조적으로, 애플릿들은 그들이 구동 중인 머신 상에서 JVM을 요구함) JVM으로부터 이격될 수도 있다. 애플리케이션은 웹 페이지들과 상호 작용할 수도 있고, 브라우저 메뉴들을 제어할 수도 있다. 시뮬레이팅 모듈(1136)은 애플릿들을 이용하지 않을 수도 있다. 시뮬레이팅 모듈(1136)은 브라우저 메뉴들 및 웹 페이지 탭들 내에 가시성을 가질 수도 있다. 시뮬레이팅 모듈(1136)의 보안 모델은 애플릿들(파일 입력 또는 출력, 크로스-도메인 등)과 같이 제한되는 것이 아닐 수도 있다. 시뮬레이팅 모듈(1136)은 고도로 상호 작용적인 웹 페이지 애플리케이션들에 대해 설계될 수도 있다. 시뮬레이팅 모듈(1136)은, 자바 기반 다큐먼트 객체 모델(DOM)로 웹 페이지들을 조작하는 것, 자바에서 DOM 이벤트들을 처리(예컨대, DOM 이벤트들은 그들이 자바에 영향을 주기 전에 정규화될 수도 있고, 그에 따라 브라우저 특정 이벤트 동작들(또는 이벤트 데이터)이 감소할 수도 있음)하는 것, 브라우저 시작 또는 정지, 페이지 로딩 또는 언로딩 또는 탭 이벤트들을 처리하는 것, 툴들 및 우측 클릭 메뉴들을 변경하는 것, 메뉴들로부터 이벤트들을 수신하는 것, 브라우저 및 시뮬레이팅 모듈(1136) 레벨들에서 데이터를 지속시키거나 액세스하는 것, 임의적 자바스크립트를 웹 페이지에 전송하는 것, 임의적 자바스크립트의 전송에 연계된 리턴 값들을 역으로 수신하는 것, 애플리케이션 관리자를 갖는 애플리케이션들(예컨대, 애플리케이션들은 표준 HTTP URL을 통해 배포될 수도 있음)을 발견, 인스톨, 또는 관리하는 것, 편리한 UI 특징들의 빌트인 라이브러리에 액세스하는 것을 지원할 수도 있다. 애플리케이션 관리자는 OSGi 프레임워크를 이용할 수도 있고, 또는 OSGi-provided manifest.fm 옵션들과 연계될 수도 있다. 따라서, 애플리케이션은 .jab 파일(예컨대, OSGi manifest.fm 파일 및 custom install.rdf 파일을 갖는 .jab 파일)일 수도 있다. 자바와 시뮬레이팅 모듈(1136) 사이의 통신은 플랫폼 독립 메시징 표준(예컨대, DLC)로 이루어질 수도 있다.애플리케이션 서버(1112)의 콤포넌트들은, 개발자 툴(1122)이 애플리케이션 서버(1112) 대신에 개발자 머신(1102) 상에 설치된 콤포넌트들(예컨대, 애플리케이션 서버의 구성요소)과 통신할 수도 있도록, 개발자 머신(1102) 또는 애플리케이션 서버(1112)보다 개발자 머신(1102)에 더 긴밀하게 통신적으로 커플링된 머신 상에 설치될 수도 있다. 따라서, 시뮬레이팅 모듈(1136)은 개발자 툴(1122)과 애플리케이션 서버(1112) 사이의 더 느린 통신 채널을 통해 통신하지 않고 애플리케이션의 설치를 긴밀하게 시뮬레이션할 수도 있다.
도 12a는 시뮬레이팅 모듈(1136)과 연계된 예시적인 HTML 페이지(예컨대, demo.html)의 소스 코드 리스팅(1200)이다. 도 12b는 예시적인 자바 테스트 클라이언트(예컨대, TestClient.java)의 소스 코드 리스팅(1220)이다. 도 12c는 웹 브라우저에서 예시적인 HTML 페이지 및 자바 테스트 클라이언트의 구동과 연계된 자바 콘솔 로그(1240)이다. 도 12d는 애플리케이션 서버 상에서 예시적인 HTML 페이지의 설치를 시뮬레이션하는 시뮬레이팅 모듈(1136)의 예시적인 사용자 인터페이스(1260)이다.
도 13a는 애플리케이션의 콤포넌트들로부터 서비스에 대한 콜들을 최적화하는 예시적인 방법(1300)의 플로우차트이다. 방법(1300)은 서비스에 대한 제 1 콜 및 서비스에 대한 제 2 콜을 인터셉트하는 단계(1302), 제 1 콜 및 제2 콜을 최적화하는 기법을 선택하는 단계(1304), 또는 제 1 콜 및 제 2 콜을 최적화하는 선택된 기법을 적용하는 단계(1306)를 포함할 수도 있다. 그 기법들은 제 1 콜에 대한 응답을 캐시로부터 제 2 콜로 제공하는 단계(1310), 제 1 콜과 제 2 콜을 제 3 콜로 결합하는 단계(1312), 배칭 콜을 행하는 단계(1314), 제 1 콜 및 제 2 콜을 동시에 실행하는 단계(1316), 또는 다른 기법(예컨대, 설명된 기법들의 조합)을 적용하는 단계(1318)를 포함할 수도 있다.
도 13b는 애플리케이션의 콤포넌트들에 의해 사용되는 리소스들을 집약하기 위한 예시적인 방법(1350)의 플로우차트이다. 방법(1350)은 제 1 위젯에 의한 제 1 리소스의 사용이 제 2 위젯에 의한 제 2 리소스의 사용과 중복된다는 것을 검출하는 단계(1352), 제 1 리소스와 제 2 리소스를 결합한 제 3 리소스를 생성하는 단계(1354), 제 3 리소스를 사용하도록 제 1 위젯 및 제 2 위젯을 구성하는 단계(1356), 또는 클라이언트가 제 3 리소스를 캐싱할 수 있도록 제 3 리소스를 표면화하는 단계(1358)를 포함할 수도 있다.
도 14는 애플리케이션의 다수의 버전들을 설계, 편집, 구성, 테스트, 또는 설치하는 예시적인 방법(1400)이다. 방법(1400)은 애플리케이션을 수신하는 단계(1402), 애플리케이션을 생성하는 단계(1404), 애플리케이션에서 위젯을 발견하는 단계(1406), 애플리케이션에 위젯을 추가하는 단계(1408), 위젯을 구성하는 단계(1410), 애플리케이션의 설치를 시뮬레이션하는 단계(1412), 또는 애플리케이션의 다수의 버전들을 설치하는 단계(1414)를 포함할 수도 있다.
아키텍처(ARCHITECTURE)
도 15는 다양한 예시적인 실시형태들이 설치될 수도 있는 클라이언트-서버 시스템(1500)을 도시한 네트워크 다이어그램이다. 네트워크 기반 시장의 예시적인 형태인 네트워크형 시스템(102) 또는 다른 공개 시스템은 네트워크(1504)(예컨대, 인터넷 또는 광역 네트워크(WAN))를 통해 서버 측 기능을 하나 이상의 클라이언트에게로 제공한다. 도 15는, 예를 들어, 각각의 클라이언트 머신들(1510, 1512) 상에서 실행하는 웹 클라이언트(1506)(예컨대, 워싱톤주 레드몬드의 마이크로소프트 사에 의해 개발된 인터넷 익스플로러 브라우저와 같은 브라우저) 및 프로그램적 클라이언트(1508)를 예시한다.
애플리케이션 프로그램 인터페이스(API) 서버(1514) 및 웹 서버(1516)는 하나 이상의 애플리케이션 서버들(1518)에 커플링되어, 프로그램 및 웹 인터페이스들을 각각 제공한다. 애플리케이션 서버들(1518)은 하나 이상의 시장 애플리케이션들(1520) 및 지불 애플리케이션들(1522)을 호스팅한다. 애플리케이션 서버들(1518)은, 이어서, 하나 이상의 데이터베이스들(1526)로의 액세스를 가능하게 하는 하나 이상의 데이터베이스 서버들(1524)에 커플링되는 것으로 도시된다.
시장 애플리케이션들(1520)은 네트워크형 시스템(1502)에 액세스하는 사용자들에게 다수의 시장 기능들 및 서비스들을 제공할 수도 있다. 지불 애플리케이션들(1522)은 마찬가지로 다수의 지불 서비스들 및 기능들을 사용자들에게 제공할 수도 있다. 지불 애플리케이션들(1522)은 사용자들이 값을 (예컨대, 미국 달러와 같은 상용 통화 또는 "포인트"와 같은 사적 통화로) 누적하게 하고, 그 후에 시장 애플리케이션들(1520)을 통해 이용할 수 있게 만들어진 제품들(예컨대, 선물 또는 서비스)에 대해 누적된 값을 현금으로 교환하게 할 수도 있다. 시장 및 지불 애플리케이션들(1520, 1522) 양측 모두가 네트워크형 시스템(1502)의 일부분을 형성하는 것으로 도 15에 도시되어 있지만, 대안의 실시형태들에서, 지불 애플리케이션들(1522)은 네트워크형 시스템(1502)과는 이격되어 별도인 지불 서비스의 일부분을 형성할 수도 있다.
또한, 도 15에 도시된 시스템(1500)이 클라이언트-서버 아키텍처를 이용하고 있지만, 물론, 본 개시물은 그러한 아키텍처로 국한되지 않고, 예를 들어 분산되거나 피어-투-피어인 아키텍처 시스템의 애플리케이션을 동등하게 잘 찾을 수 있다. 다양한 시장 및 지불 애플리케이션들(1520, 1522)은 또한 네트워킹 능력을 반드시 갖는 것은 아닌 독자적 소프트웨어 프로그램들로서 구현될 수 있다.
웹 클라이언트(1506)는 웹 서버(1516)에 의해 지원되는 웹 인터페이스를 통해 다양한 시장 및 지불 애플리케이션들(1520, 1522)에 액세스한다. 유사하게, 프로그램적 클라이언트(1508)는 API 서버(1514)에 의해 제공된 프로그램적 인터페이스를 통해 시장 및 지불 애플리케이션들(1520, 1522)에 의해 제공되는 다양한 서비스들 및 기능들에 액세스한다. 프로그램적 클라이언트(1508)는, 예를 들어 판매자들이 네트워크형 시스템(1502) 상의 리스팅들을 오프라인 방식으로 저술하고 관리하게 하고, 프로그램적 클라이언트(1508)와 네트워크형 시스템(1502) 사이의 배칭 모드 통신들을 수행하게 하도록 하는 판매자 애플리케이션(예컨대, 캘리포니아주 산호세의 eBay Inc.에 의해 개발된 TurboLister 애플리케이션)일 수도 있다.
도 15는 또한 API 서버(1514)에 의해 제공된 프로그램적 인터페이스를 통해 네트워크형 시스템(1502)에 대한 프로그램적 액세스를 갖는 것으로서 제 3 자 서버 머신(1530) 상에서 실행하는 제 3 자 애플리케이션(1528)을 예시한다. 예를 들어, 제 3 자 애플리케이션(1528)은 네트워크형 시스템(1502)으로부터 취출된 정보를 이용하여, 제 3 자에 의해 호스팅된 웹사이트 상의 하나 이상의 특징들 또는 기능들을 지원할 수도 있다. 제 3 자 웹사이트는, 예를 들어 네트워크형 시스템(1502)의 관련 애플리케이션들에 의해 지원되는 하나 이상의 프로모션, 시장, 또는 지불 기능들을 지원할 수도 있다.
도 16은, 일 예시적인 실시형태에서, 네트워크형 시스템(1502)의 일부분으로서 제공되는 다수의 애플리케이션들(1520, 1522)을 예시한 블록도이다. 애플리케이션들(1520, 1522)은 서버 머신들 사이의 통신을 가능하게 하도록 통신적으로 커플링된 전용 또는 공용 서버 머신들(미도시) 상에서 호스팅될 수도 있다. 애플리케이션들(1520, 1522) 자체는 서로 및 다양한 데이터 소스들에게 (예컨대, 적절한 인터페이스들을 통해) 통신적으로 커플링되어, 정보가 애플리케이션들(1520, 1522) 사이에서 전달되게 하거나 애플리케이션들(1520, 1522)이 공통 데이터를 공유하고 그에 액세스하게 하도록 한다. 애플리케이션들(1520, 1522)은 또한 도 15의 데이터베이스 서버들(1524)을 통해 하나 이상의 데이터베이스들(1526)에 액세스할 수도 있다.
네트워크형 시스템(1502)(도 15)은 다수의 공개, 리스팅, 및 가격 설정 메커니즘들을 제공하며, 이에 의해 판매자는 판매용 선물 또는 서비스들을 리스팅할 수도 있고(또는 그에 관한 정보를 공개할 수도 있고), 구매자는 그러한 선물들 또는 서비스들을 구매하고자 하는 데 관심을 표하거나 구매하고자 하는 의사를 나타낼 수 있으며, 가격은 선물들 또는 서비스들에 관한 거래에 대해 설정될 수 있다. 이를 위해, 도 16에서, 시장 및 지불 애플리케이션들(1520, 1522)은 적어도 하나의 공개 애플리케이션(1600)과, 경매-포맷 리스팅 및 가격 설정 메커니즘들(예컨대, 영어, 독어, 비크리(Vickrey), 중국, 이중, 역 경매들 등)을 지원하는 하나 이상의 경매 애플리케이션들(1602)을 포함하는 것으로 도시되어 있다. 다양한 경매 애플리케이션들(1602)은, 또한 예약 가격 특징과 같은 그러한 경매 포맷 리스팅들을 지원하여 다수의 특징들을 제공하고, 이에 의해 판매자는 리스팅과 관련하여 예약 가격을 특정할 수도 있으며, 프록시 호가 특징을 지원하여 응찰자가 자동화된 프록시 호가를 호출할 수도 있게 한다.
다수의 고정가 애플리케이션들(1604)은 고정가 리스팅 포맷들(예컨대, 전통적인 항목별 광고형 리스팅 또는 카탈로그 리스팅) 및 인수형 리스팅을 지원한다. 구체적으로, 인수형 리스팅들(예컨대, 캘리포니아주 산호세의 eBay Inc.에 의해 개발된 Buy-It-Now(BIN)을 포함함)은 경매 포맷 리스팅들과 관련하여 공급될 수도 있고, 구매자가 경매를 통해 판매용으로 공급되고 있는 선물들 또는 서비스들을 경매 시작가보다 일반적으로 더 높은 고정가에 대해 구매하게 한다.
스토어 애플리케이션(1606)은 판매자가 판매자에 의해 및 판매자에 대해 브랜드화되고 그와 달리 개별 주문될 수도 있는 "가상" 스토어 내의 리스팅들을 그룹화하게 한다. 이러한 가상 스토어는 또한 관련 판매자에게 특정적이고 그에 대해 개별 주문되는 프로모션들, 인센티브들 및 특징들을 공급할 수도 있다.
평판 애플리케이션들(1608)은 네트워크형 시스템(1502)을 이용하여 거래하는 사용자들이 잠재적 매매 파트너들에게 이용 가능하고 공개되게 만들 수도 있는 평판을 확립, 구축 및 유지하도록 거래하게 한다. 예를 들어, 네트워크형 시스템(1502)이 개인 대 개인 매매를 지원하는 경우를 고려하면, 사용자들은 그와 달리 어떠한 히스토리도 갖지 않거나 다른 참조 정보를 갖게 되고, 이에 의해 잠재적 매매 파트너들의 신용도 및 신뢰성이 평가될 수도 있다. 평판 애플리케이션들(1608)은 사용자가 (예를 들어, 다른 거래 파트너들에 의해 제공되는 피드백을 통해)시간에 따라 네트워크형 시스템(1502) 내에서 평판을 확립하게 한다. 그 후, 다른 잠재적 거래 파트너들은 신뢰성 및 신용도를 평가하기 위해 그러한 평판을 참조할 수도 있다.
개별 주문 애플리케이션들(1610)은 네트워크형 시스템(1502)의 사용자들이 네트워크형 시스템(1502)과의 그들의 상호작용들의 다양한 양태들을 개별 주문하게 한다. 예를 들어, 사용자는, 적절한 개별 주문 애플리케이션(1610)을 이용하여, 어떤 사용자가 거래 당사자인지(당사자였는지)에 관한 정보가 리뷰될 수도 있는 개별 주문용 참조 페이지를 생성할 수도 있다. 또한, 개별 주문 애플리케이션(1610)은 사용자가 리스팅들과, 네트워크형 시스템(1502) 및 다른 당사자들과의 그들의 상호작용들에 대한 다른 양태들을 개별 주문화하게 할 수도 있다.
네트워크형 시스템(1502)은, 예를 들어 특정 지리적 영역들에 대해 맞춤화된 다수의 시장들을 지원할 수도 있다. 네트워크형 시스템(1502)의 버전은 영국에 대해 맞춤화될 수도 있고, 그 반면에 네트워크형 시스템(1502)의 다른 버전은 미국에 맞춤화될 수도 있다. 각각의 이들 버전들은 독립적인 시장으로서 동작할 수도 있고, 또는 공통의 기초 시장의 맞춤화된(또는 국제화된) 표시들일 수도 있다. 네트워크형 시스템(1502)은 이에 따라 사전 결정된 기준(예컨대, 지리적 기준, 인구 통계적(demographic) 기준 또는 시장 기준)에 따라서 네트워크형 시스템(1502)에 의해 정보(및/또는 정보의 표시)를 맞춤화하는 다수의 국제화 애플리케이션들(1612)을 포함할 수도 있다. 예를 들어, 국제화 애플리케이션들(1612)은, 네트워크형 시스템(1502)에 의해 동작되고 각각의 웹 서버들(1516)을 통해 액세스 가능한 다수의 지역 웹사이트들에 대한 정보의 맞춤화를 지원하는 데 이용될 수도 있다.
네트워크형 시스템(1502)의 네비게이션은 하나 이상의 네비게이션 애플리케이션들(1614)에 의해 가능해질 수도 있다. 네트워크형 시스템(1502)을 통해서 이용 가능한 리스팅들을 가능한 한 시각적으로 정보성이 있고 매력적인 것으로 만들기 위해, 시장 및 지불 애플리케이션들(1520, 1522)은 사용자들이 리스팅들 내에 포함시킬 이미지들을 업로드하는 데 이용할 수도 있는 하나 이상의 이미징 애플리케이션들(1616)을 포함할 수도 있다. 이미징 애플리케이션(1616)은 또한 뷰잉된 리스팅들 내에 이미지들을 통합하도록 동작한다. 이미징 애플리케이션들(1616)은 또한, 잠재적 구매자들에게 표시되는 이미지 갤러리들과 같은 하나 이상의 프로모션 특징들을 지원할 수도 있다. 예를 들어, 판매자는 프로모션된 항목들에 대한 이미지들의 갤러리 내에 포함된 이미지를 갖는 데 추가의 비용을 지불할 수도 있다.
리스팅 생성 애플리케이션들(1618)은 판매자들이 네트워크형 시스템(1502)을 통해 거래하기를 원하는 선물들 또는 서비스들에 관한 리스팅들을 판매자가 편리하게 저술하게 하며, 리스팅 관리 애플리케이션(1620)은 판매자들이 그러한 리스팅들을 관리하게 한다. 구체적으로, 특정 판매자가 다량의 리스팅들을 저술 및/또는 공개한 경우, 그러한 리스팅들의 관리는 도전을 나타낼 수도 있다. 리스팅 관리 애플리케이션들(1620)은 그러한 리스팅들을 관리하는 데 있어 판매자를 돕도록 하는 다수의 특징들(예컨대, 자동 재리스팅, 재고 레벨 모니터들 등)을 제공한다. 하나 이상의 사후 리스팅 관리 애플리케이션들(1622)도 일반적으로 사후 리스팅을 발생시키는 다수의 활동으로 판매자들을 돕는다. 예를 들어, 하나 이상의 경매 애플리케이션들(1602)에 의해 가능해진 경매의 완료 시, 판매자는 특정 구매자에 관한 피드백을 남겨두기를 원할 수도 있다. 이를 위해, 사후 리스팅 관리 애플리케이션(1622)은 하나 이상의 평판 애플리케이션들(1608)에 인터페이스를 제공하여, 판매자가 다수의 구매자들에 관한 피드백을 평판 애플리케이션들(1608)에 편리하게 제공하게 할 수도 있다.
논쟁 해결 애플리케이션들(1624)은, 거래 당사자들 사이에서 발생하는 논쟁들이 해결될 수도 있게 하는 메커니즘들을 제공한다. 예를 들어, 논쟁 해결 애플리케이션들(1624)은 가이드 절차들을 제공하여, 당사자들이 논쟁을 해결하고자 하는 다수의 동작들을 통해 가이드되게 한다. 논쟁이 가이드 절차들을 통해 해결될 수 없는 이벤트 시, 논쟁은 제 3의 중재자 또는 조정자에게 확대될 수도 있다.
다수의 사기 방지 애플리케이션들(1626)은 네트워크형 시스템(1502) 내에서의 사기 발생을 감소시키도록 하는 사기 검출 및 방지 메커니즘들을 구현한다.
메시징 애플리케이션들(1628)은 메시지들의 생성 및 네트워크형 시스템(1502)의 사용자들에게로의 전달을 담당한다. 이들 메시지들은, 예를 들어 사용자들에게 네트워크형 시스템(1502)에서 리스팅들의 상태(예컨대, 경매 프로세스 동안 응찰자들에게 "아웃비드(outbid)" 통지를 제공하거나 사용자들에게 프로모션 및 판촉 정보를 제공함)에 관해 조언할 수도 있다. 각각의 메시징 애플리케이션들(1628)은 다수의 메시지 전달 네트워크들 및 플랫폼들 중 어느 하나를 이용하여 메시지들을 사용자들에게 전달할 수도 있다. 예를 들어, 메시징 애플리케이션들(1628)은 유선(예컨대, 인터넷), 기존 전화 서비스(Plain Old Telephone Service: POTS), 또는 무선(예컨대, 모바일, 셀룰러, WiFi, WiMAX) 네트워크들을 통해, 전자 메일(e-메일), 인스턴트 메시지(IM), 단문자 서비스(SMS), 텍스트, 팩시밀리, 또는 음성(예컨대, VoIP) 메시지들을 전달할 수도 있다.
머천다이징 애플리케이션들(1630)은 판매자들에게 이용 가능하게 만들어진 다양한 머천다이징 기능들을 지원하여, 판매자들이 네트워크형 시스템(1502)을 통해 매출을 증가시키게 한다. 머천다이징 애플리케이션들(1630)은 또한, 판매자들에 의해 호출될 수도 있는 다양한 머천다이징 특징들을 동작할 수도 있고, 판매자들에 의해 채용된 머천다이징 전략들의 성공을 모니터링 및 추적할 수도 있다.
네트워크형 시스템(1502) 자체, 또는 네트워크형 시스템(1502)을 통해 거래하는 하나 이상의 당사자들은 하나 이상의 로얄티/프로모션 애플리케이션들(1632)에 의해 지원되는 프로그램들을 충성스럽게 동작시킬 수도 있다. 예를 들어, 구매자는 특정 판매자에게 설정 및/또는 협정 맺어진 각각의 거래에 대해 로얄티 또는 프로모션 포인트들을 얻을 수도 있고, 누적된 로얄티 포인트들이 다시 현금으로 교환될 수 있는 보상금을 제공받을 수도 있다.
모듈들, 콤포넌트들 및 로직(MODULES, COMPONENTS AND LOGIC)
특정 실시형태들은 여기에서 로직 또는 다수의 콤포넌트들, 모듈들, 또는 메커니즘들을 포함하는 것으로 설명된다. 모듈들은 소프트웨어 모듈들(예컨대, 머신-판독가능 매체 상에서 또는 송신 신호에 구현된 코드) 또는 하드웨어 모듈들 중 어느 하나를 구성할 수도 있다. 하드웨어 모듈은 특정 동작들을 수행할 수 있는 유형의 유닛이며, 특정 방식으로 구성 또는 배열될 수도 있다. 예시적인 실시형태들에서, 하나 이상의 컴퓨터 시스템들(예컨대, 독립형, 클라이언트 또는 서버 컴퓨터 시스템), 또는 컴퓨터 시스템의 하나 이상의 하드웨어 모듈들(예컨대, 프로세서 또는 프로세서들의 그룹)은 여기에서 설명되는 특정 동작들을 수행하도록 동작하는 하드웨어 모듈로서 소프트웨어(예컨대, 애플리케이션 또는 애플리케이션 부분)에 의해 구성될 수도 있다.
다양한 실시형태들에서, 하드웨어 모듈은 머신적 또는 전자적으로 구현될 수도 있다. 예를 들어, 하드웨어 모듈은 (예컨대, 필드 프로그래밍가능 게이트 어레이(FPGA) 또는 사용자 주문 집적회로(ASIC)와 같은 특수 목적 프로세서와 같이) 특정 동작들을 수행하도록 영구적으로 구성된 전용 회로 또는 로직을 포함할 수도 있다. 하드웨어 모듈은 또한 특정 동작들을 수행하도록 소프트웨어에 의해 일시적으로 구성된 (예컨대, 범용 프로세서 또는 다른 프로그래밍가능 프로세서 내에 포함되는 바와 같은) 프로그래밍가능 로직 또는 회로를 포함할 수도 있다. 하드웨어 모듈을 머신적으로 구현할지, 전용의 영구적으로 구성된 회로에 구현할지, 또는 일시적으로 구성된 회로(예컨대, 소프트웨어에 의해 구성됨)에 구현할지의 결정은 비용 및 시간의 고려 사항들에 의해 운용될 수도 있다는 것이 인지될 것이다.
이에 따라, "하드웨어 모듈"이라는 용어는, 특정 방식으로 동작하도록 및/또는 여기에서 설명된 특정 동작들을 수행하도록 물리적으로 구성되거나 영구적(하드웨어 내장형)으로 구성되거나 일시적으로 구성된(예컨대, 프로그래밍된) 유형의 엔티티를 포괄하는 것으로 이해되어야 한다. 하드웨어 모듈들이 일시적으로 구성(예컨대, 프로그래밍)된 실시형태들을 고려하면, 각각의 하드웨어 모듈들은 임의의 한 인스턴스 시점에서 구성 또는 인스턴스화될 필요가 없다. 예를 들어, 하드웨어 모듈이 소프트웨어를 이용하여 구성된 범용 프로세서를 포함하는 경우, 범용 프로세서는 때에 따라 각각의 상이한 하드웨어 모듈들로서 구성될 수도 있다. 소프트웨어는 이에 따라, 예를 들어 일 이스턴스 시간에 특정 하드웨어 모듈을 구성하고, 상이한 인스턴스 시간에 상이한 하드웨어 모듈을 구성하도록 프로세서를 구성할 수도 있다.
하드웨어 모듈들은 다른 하드웨어 모들들로 정보를 제공할 수 있고, 그로부터 정보를 수신할 수 있다. 이에 따라, 설명된 하드웨어 모듈들은 통신적으로 커플링된 것으로 간주될 수도 있다. 다수의 그러한 하드웨어 모듈들이 동시에 존재하는 경우, 통신은 하드웨어 모들들을 접속시키는 신호 송신(예컨대, 적절한 회로들 및 버스들을 통함)을 통해 성취될 수도 있다. 다수의 하드웨어 모듈들이 구성되거나 상이한 시간에 인스턴스화되는 실시형태들에서, 그러한 하드웨어 모듈들 사이의 통신들은, 예를 들어 다수의 하드웨어 모듈들이 액세스를 갖는 메모리 구조들에서의 정보의 저장 및 취출을 통해 성취될 수도 있다. 예를 들어, 하나의 하드웨어 모듈은 동작을 수행할 수도 있고, 그것이 통신적으로 커플링되어 있는 메모리 디바이스에 그 동작의 출력을 저장할 수도 있다. 추가 하드웨어 모듈은, 그 후, 메모리 디바이스에 액세스하여, 저장된 출력을 취출 및 프로세싱하도록 할 수도 있다. 하드웨어 모듈들은 또한 입력 또는 출력 디바이스들과의 통신을 인스턴스화할 수도 있고, 리소스(예컨대, 정보의 집합)에 대해 동작할 수 있다.
여기서 설명되는 예시적인 방법들의 다양한 동작들은, 적어도 부분적으로, 관련 동작들을 수행하도록 일시적으로 (예컨대, 소프트웨어에 의해) 또는 영구적으로 구성된 하나 이상의 프로세서들에 의해 수행될 수도 있다. 일시적으로 구성되든 영구적으로 구성되든, 그러한 프로세서들은 하나 이상의 동작들 또는 기능들을 수행하도록 동작하는 프로세서-구현 모듈들을 구성할 수도 있다. 여기에서 언급된 모듈들은, 일부 예시적인 실시형태들에서, 프로세서-구현 모듈들을 포함할 수도 있다.
마찬가지로, 여기에서 설명되는 방법들은 적어도 부분적으로 프로세서-구현될 수도 있다. 예를 들어, 방법의 동작들 중 적어도 일부는 하나 이상의 프로세서들 또는 프로세서-구현 모듈들에 의해 수행될 수도 있다. 동작들 중 특정 동작의 수행은, 싱글 머신 내에 존재할 뿐 아니라 다수의 머신들에 걸쳐서 배치된 하나 이상의 프로세서들 중에 분포될 수도 있다. 일부 예시적인 실시형태들에서, 프로세서 또는 프로세서들은 싱글 위치(예컨대, 가정 환경 내, 사무실 환경 내, 또는 서버 팜으로서)에 위치될 수도 있고, 그 반면에 다른 실시형태들에서, 프로세서들은 다수의 위치들에 걸쳐서 분포될 수도 있다.
하나 이상의 프로세서들은 또한 "클라우드 컴퓨팅" 환경에서 또는 "서비스로서의 소프트웨어(software as a service: SaaS)"로서의 관련 동작들의 수행을 지원하도록 동작할 수도 있다. 예를 들어, 동작들 중 적어도 일부는 (프로세서들을 포함하는 머신들의 실례들로서) 컴퓨터들의 그룹에 의해 수행될 수도 있으며, 이들 동작들은 네트워크(예컨대, 인터넷)를 통해 또는 하나 이상의 적절한 인터페이스들(예컨대, API들)을 통해 액세스 가능하다.
전자 장치 및 시스템(ELECTRONIC APPARATUS AND SYSTEM)
예시적인 실시형태들은 디지털 전자 회로에서 구현될 수도 있고, 또는 컴퓨터 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수도 있다. 예시적인 실시형태들은 컴퓨터 프로그램 제품(예를 들어, 데이터 프로세싱 장치, 예를 들어 프로그래밍가능한 프로세서, 컴퓨터 또는 다수의 컴퓨터들에 의해 또는 이들의 동작을 제어하기 위해, 정보 캐리어, 예를 들어 머신-판독가능한 매체에 유형적으로 구현된 컴퓨터 프로그램)을 이용하여 구현될 수도 있다.
컴퓨터 프로그램은, 컴파일링 또는 인터프리팅된 언어들을 포함한 임의의 형태의 프로그래밍 언어로 기록될 수 있으며, 자립형 프로그램으로서 또는 모듈로서, 서브루틴, 또는 모듈 컴퓨팅 환경에서 사용하는 데 적합한 다른 유닛을 포함하는 임의의 형태로 설치될 수 있다. 컴퓨터 프로그램은 하나의 사이트에서 하나의 컴퓨터 또는 다수의 컴퓨터들 상에서 실행되거나 다수의 사이트들에 걸쳐서 분포되도록 설치될 수 있다.
예시적인 실시형태들에서, 동작들은, 입력 데이터 상에서 동작하고 출력을 생성하여 기능들을 수행하도록 컴퓨터 프로그램을 실행함으로써 수행될 수도 있다. 특수 목적 로직 회로, 예컨대 필드 프로그래밍가능 게이트 어레이(FPGA) 또는 사용자 주문형 집적회로(ASIC)에 의해, 방법 동작들이 또한 수행될 수 있고, 예시적인 실시형태들의 장치가 구현될 수도 있다.
컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 원거리에 위치하며, 일반적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트와 서버의 관계는, 각각의 컴퓨터들 상에서 구동하고 서로에게 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다. 프로그래밍가능 컴퓨팅 시스템을 설치하는 실시형태들에서, 하드웨어 및 소프트웨어 아키텍처들 양측 모두는 고려사항들을 요구한다는 것이 인지될 것이다. 구체적으로, 특정 기능을, 영구적으로 구성된 하드웨어(예컨대, ASIC)로 구현할 것인지, 일시적으로 구성된 하드웨어(예컨대, 소프트웨어와 프로그래밍가능 프로세서의 조합)로 구현할 것인지, 또는 영구적 및 일시적으로 구성된 하드웨어의 조합으로 구현할 것인지의 선택은 설계 시의 선택사항일 수도 있다는 것이 인지될 것이다. 하기에는, 다양한 예시적인 실시형태들에서, 설치될 수도 있는 하드웨어(예컨대, 머신) 및 소프트웨어 아키텍처들이 설명된다.
예시적인 머신 아키텍처 및 머신-판독가능 매체(EXAMPLE MACHINE ARCHITECTURE AND MACHINE-READABLE MEDIUM)
도 17은 머신으로 하여금 여기에서 설명된 방법들 중 임의의 하나 이상을 수행하게 하는 명령들이 실행될 수도 있는 컴퓨터 시스템(1700)의 예시적인 형태의 머신의 블록도이다. 대안의 실시형태들에서, 머신은 독립형 디바이스로서 동작하거나, 또는 다른 머신들에게 (예컨대, 네트워크에 의해) 접속될 수도 있다. 네트워크형 설치에서, 머신은 서버-클라이언트 네트워크 환경에서 서버 또는 클라이언트 머신의 능력으로 동작할 수도 있으며, 또는 피어-투-피어(또는 분산형) 네트워크 환경에서의 피어 머신으로서 동작할 수도 있다. 머신은 개인 컴퓨터(PC), 태블릿 PC, 셋톱박스(STB), 개인 휴대용 디지털 보조기(PDA), 셀룰러 전화, 웹 어플라이언스, 네트워크 라우터, 스위치 또는 브리지, 또는 그 머신에 의해 취해질 행동들을 특정하는 명령들을 (순차적으로 또는 그와 달리) 실행할 수 있는 임의의 머신일 수도 있다. 또한, 오로지 싱글 머신만이 예시되어 있지만, "머신"이라는 용어는 또한 여기에서 설명된 방법들 중 임의의 하나 이상을 수행하도록 하는 명령들의 세트(또는 다수의 세트들)를 개별적으로 또는 연계하여 실행하는 머신들의 임의의 집합을 포함하는 것으로 취해져야 한다.
예시적인 컴퓨터 시스템(1700)은, 버스(1708)를 통해 서로 통신하는, 프로세서(1702)(예컨대, 중앙 처리 유닛(CPU), 그래픽 프로세싱 유닛(GPU), 또는 양측 모두), 메인 메모리(1704) 및 정적 메모리(1706)를 포함한다. 컴퓨터 시스템(1700)은 비디오 디스플레이 유닛(1710)(예컨대, 액정 디스플레이(LCD) 또는 음극관(CRT)을 더 포함할 수도 있다. 컴퓨터 시스템(1700)은 또한 문자숫자식 입력 디바이스(1712)(예컨대, 키보드), 사용자 인터페이스(UI) 네비게이션(또는 커서 제어) 디바이스(1714)(예컨대, 마우스), 디스크 드라이브 유닛(1716), 신호 생성 디바이스(1718)(예컨대, 스피커) 및 네트워크 인터페이스 디바이스(1720)를 더 포함할 수도 있다.
머신-판독가능 매체(MACHINE-READABLE MEDIUM)
디스크 드라이브 유닛(1716)은, 여기에서 설명되는 방법들 중 임의의 하나 이상의 방법 또는 기능들을 구현하거나 그들에 의해 이용되는, 명령들(1724)의 하나 이상의 세트들 및 데이터 구조들(예컨대, 소프트웨어)이 저장된 머신-판독가능 매체(1722)를 포함한다. 명령들(1724)은 또한 메인 메모리(1704) 및/또는 프로세서(1702) 내에서, 그들이 머신-판독가능 매체를 역시 구성하는 컴퓨터 시스템(1700), 메인 메모리(1704), 및 프로세서(1702)에 의해 완전히 또는 실행되는 동안에 적어도 부분적으로 상주할 수도 있다. 명령들(1724)은 또한, 정적 메모리(1706) 내에서 완전히 또는 적어도 부분적으로 상주할 수도 있다.
머신-판독가능 매체(1722)가 예시적인 실시형태에서 싱글 매체로 도시되고 있지만, "머신-판독가능 매체"라는 용어는 하나 이상의 명령들(1724) 또는 데이터 구조들을 저장하는 싱글 매체 또는 다수의 매체(예컨대, 중앙 집중 또는 분산형 데이터베이스, 및/또는 관련 캐시들 및 서버들)을 포함할 수도 있다. "머신-판독가능 매체"라는 용어는 또한, 머신에 의한 실행을 위해 명령들을 저장, 인코딩, 또는 전달할 수 있고 머신으로 하여금 본 실시형태들의 방법들 중 하나 이상을 수행하게 하거나, 그러한 명령들에 의해 이용되거나 그들에 연관된 데이터 구조들을 저장, 인코딩, 또는 전달할 수 있는 임의의 유형의 매체를 포함하는 것으로 취해져야 한다. 이에 따라, "머신-판독가능 매체"라는 용어는 고체 상태 메모리들, 광학적 및 자기적 매체를 포함하는 것으로 취해야 하지만, 이들로 국한되지 않는다. 머신-판독가능 매체의 구체적인 실례들은, 예를 들어 반도체 메모리 디바이스들, 예컨대 소거가능 프로그래밍가능한 판독 전용 메모리(EPROM), 전기적으로 소거 가능한 프로그래밍 가능 판독 전용 메모리(EEPROM), 및 플래시 메모리 디바이스들, 내부 하드 디스크들 및 착탈가능 디스크들과 같은 자기적 디스크들, 자기적-광학적 디스크들, 및 컴팩트디스크 판독 전용 메모리(CD-ROM) 및 디지털 범용 디스크(또는 디지털 비디오 디스크) 판독 전용 메모리(DVD-ROM) 디스크들을 포함하는 비휘발성 메모리를 포함한다.
송신 매체(TRANSMISSION MEDIUM)
명령들(1724)은 또한 송신 매체를 이용하여 통신 네트워크(1726)를 통해 송신 또는 수신될 수도 있다. 명령들(1724)은 다수의 주지된 전송 프로토콜들(예를 들어, 하이퍼텍스트 전송 프로토콜(Hyper Text Transfer Protocol) 또는 HTTP) 중 어느 하나와 네트워크 인터페이스 디바이스(1720)를 이용하여 송신될 수도 있다. 통신 네트워크들의 실례들은 근거리망("LAN"), 광역망("WAN"), 인터넷, 모바일 전화망, 일반 전화 서비스(POTS) 네트워크들 및 무선 데이터 네트워크들(예컨대, WiFi 및 WiMax 네트워크들)을 포함한다. "송신 매체"라는 용어는 머신에 의한 실행을 위한 명령들을 저장, 인코딩 또는 전달할 수 있는 임의의 유형적 매체를 포함하는 것으로 취해져야 하며, 디지털 또는 아날로그 통신 신호들이나 그러한 소프트웨어의 통신을 가능하게 하는 다른 유형적인 매체를 포함한다.
일 실시형태가 특정의 예시적인 실시형태들을 참조하여 설명되었지만, 본 개시물의 보다 넓은 사상 및 범주로부터 벗어나지 않고 이들 실시형태들에 대해 다양한 변형들 및 변경들이 이루어질 수도 있다는 것이 명백할 것이다. 따라서, 명세서 및 도면은 제한적인 관점이 아니라 예시적인 관점으로 고려되어야 한다. 본 개시물의 일부를 형성하는 첨부 도면은, 주제가 실시될 수도 있는 특정 실시형태들을 제한사항이 아니라 예시로서 도시한다. 예시된 실시형태들은 충분히 상세하게 설명되어, 당업자들이 본원에 개시된 교시사항들을 실시하게 한다. 다른 실시형태들은, 구조적 및 논리적 치환물 및 변경물이 본 개시물의 범주로부터 벗어나지 않고 이루어질 수도 있도록 본 개시물의 예시적인 실시형태들로부터 이용 및 도출될 수도 있다. 따라서, 본 개시물의 상세한 설명은 제한적인 관점에서 취해져서는 안 되며, 다양한 실시형태들의 범주는 첨부한 청구범위가 권리를 제공하는 전체 범위의 균등물들과 함께 그러한 청구범위에 의해서만 정의된다.
본 발명의 대상의 그러한 실시형태들은 본원에서 단지 편의를 위해 그리고 2 이상의 것이 사실상 개시된 경우에 임의의 단일 발명 또는 발명적 개념으로 본 출원의 범주를 자발적으로 제한하고자 하는 의도 없이 "발명"이라는 용어로 개별적 및/또는 총체적으로 지칭될 수도 있다. 따라서, 특정 실시형태들이 본원에 예시되고 설명되었다 하더라도, 동일한 목적을 성취하도록 게산된 임의의 배열이 도시된 특정 실시형태들을 대체할 수도 있다는 것이 인지되어야 한다. 본 개시물은 다양한 실시형태들의 임의의 적응물 또는 변형물 및 모든 적응물 또는 변형물을 포괄하도록 의도된다. 전술된 실시형태들의 조합들 및 본원에서 구체적으로 설명되지 않은 다른 실시형태들은 상기의 설명을 검토할 때 당업자에게 자명할 것이다.

Claims (20)

  1. 하나 이상의 하드웨어 프로세서를 포함하는 장치로서,
    상기 하나 이상의 하드웨어 프로세서는 애플리케이션 서버 상에서 구동되는 애플리케이션과 연계된 콜 최적화기(call optimizer), 및 상기 애플리케이션과 연계된 리소스 집약기(resource aggregator)를 포함하도록 구성되며,
    상기 애플리케이션은 복수의 콤포넌트들을 포함하며,
    상기 콜 최적화기는,
    제 1 웹 서비스 콜 및 제 2 웹 서비스 콜을 인터셉트하는 인터셉트 모듈 - 상기 제 1 웹 서비스 콜은 상기 복수의 콤포넌트들 중의 제 1 콤포넌트에 의해 웹 서비스에 대해 행해지고, 상기 제 2 웹 서비스 콜은 상기 복수의 콤포넌트들 중의 제 2 콤포넌트에 의해 상기 웹 서비스에 대해 행해짐 - 과,
    상기 웹 서비스에 대해 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 제 3 웹 서비스 콜로 런타임에(at run time) 결합하는 것을 포함하는 복수의 최적화 기법들 중 하나의 최적화 기법을 상기 최적화 기법이 콜을 처리하는데 소요되는 시간량에 기초하여 선택하도록 하는 최적화-기법 선택 모듈과,
    상기 제 1 웹 서비스 콜 및 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합(orchestrate)하고,
    상기 제 3 웹 서비스 콜의 결과를 수신하고,
    상기 결과의 제 1 부분을 상기 제 1 웹 서비스 콜에 대응하는 것으로 식별하며,
    상기 결과의 제 2 부분을 상기 제 2 웹 서비스 콜에 대응하는 것으로 식별하고,
    상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트가 상기 제 1 웹 서비스 콜을 행하였다는 판단에 근거하여, 상기 결과의 상기 제 1 부분을 상기 제 1 웹 서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트에게 제공하며,
    상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트가 상기 제 2 웹 서비스 콜을 행하였다는 판단에 근거하여, 상기 결과의 상기 제 2 부분을 상기 제 2 웹 서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트에게 제공하도록 구성되는 결합 모듈을 포함하고,
    상기 리소스 집약기는
    제 1 리소스의 적어도 일 부분이 제 2 리소스의 적어도 일 부분과 중복(redundant)된다는 것을 식별하도록 하는 식별 모듈 - 상기 제 1 리소스는 상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트에 의해 이용되고, 상기 제 2 리소스는 상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트에 의해 이용됨 - 과,
    상기 제 1 리소스의 적어도 일 부분이 상기 제 2 리소스의 적어도 일 부분과 중복(redundant)된다고 식별하는 것에 대한 응답으로, 상기 제 1 리소스 및 상기 제 2 리소스를 제 3 리소스 내에 집약하도록 하는 집약 모듈을 포함하는
    장치.
  2. 제 1 항에 있어서,
    상기 결합 모듈은,
    상기 제 1 웹 서비스 콜의 복수의 요청 파라미터들을 상기 제 3 웹 서비스 콜의 복수의 요청 파라미터들에 통합(integrate)하고,
    상기 제 2 웹 서비스 콜의 복수의 요청 파라미터들을 상기 제 3 웹 서비스 콜의 상기 복수의 요청 파라미터들에 통합하여,
    상기 제 3 웹 서비스 콜을 행하도록 구성되는
    장치.
  3. 삭제
  4. 제 1 항에 있어서,
    상기 리소스 집약기는, 상기 집약에 대한 응답으로, 상기 애플리케이션을 업데이트하여 상기 제 3 리소스를 사용하게 하는 업데이트 모듈을 더 포함하고,
    상기 애플리케이션의 상기 업데이트는 상기 제 1 리소스의 중복되는 부분 또는 상기 제 2 리소스의 중복되는 부분에 대한 상기 애플리케이션의 의존성을 제거하는
    장치.
  5. 제 4 항에 있어서,
    상기 제 1 리소스는 캐스케이딩 스타일 시트(cascading style sheet)의 제 1 버전이고,
    상기 제 2 리소스는 상기 캐스케이딩 스타일 시트의 제 2 버전인
    장치.
  6. 제 1 항에 있어서,
    상기 애플리케이션 서버의 제 1 클라이언트를 더 포함하고,
    상기 제 1 클라이언트는 상기 애플리케이션 서버 상에서의 상기 애플리케이션의 설치(deployment)를 상기 제 1 클라이언트 상에서 시뮬레이션하도록 하는 시뮬레이팅 모듈을 포함하며,
    상기 시뮬레이팅 모듈은 상기 애플리케이션 서버와 통신하는 대신에 상기 클라이언트 상에 인스톨되는 구성요소와 통신할 수 있는
    장치.
  7. 제 6 항에 있어서,
    상기 제 1 클라이언트는 상기 애플리케이션 서버 상에 상기 애플리케이션의 복수의 버전들을 설치하도록 하는 설치 모듈을 더 포함하고,
    상기 복수의 버전들 중 제 1 버전은 제 2 클라이언트에게 적용되며,
    상기 복수의 버전들 중 제 2 버전은 제 3 클라이언트에게 적용되고,
    상기 제 2 클라이언트는 모바일 디바이스 상에서 구동되며,
    상기 제 3 클라이언트는 개인 컴퓨터 상에서 구동되는
    장치.
  8. 하나 이상의 하드웨어 프로세서를 포함하는 장치로서,
    상기 하나 이상의 하드웨어 프로세서는 애플리케이션 서버 상에서 구동되는 애플리케이션과 연계된 콜 최적화기를 포함하도록 구성되며,
    상기 애플리케이션은 복수의 콤포넌트들을 포함하며,
    상기 콜 최적화기는,
    제 1 웹 서비스 콜 및 제 2 웹 서비스 콜을 인터셉트하는 인터셉트 모듈 - 상기 제 1 웹 서비스 콜은 상기 복수의 콤포넌트들 중의 제 1 콤포넌트에 의해 웹 서비스에 대해 행해지고, 상기 제 2 웹 서비스 콜은 상기 복수의 콤포넌트들 중의 제 2 콤포넌트에 의해 상기 웹 서비스에 대해 행해짐 - 과,
    상기 웹 서비스에 대해 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 제 3 웹 서비스 콜로 런타임에(at run time) 결합하는 것을 포함하는 복수의 최적화 기법들 중 하나의 최적화 기법을 상기 최적화 기법이 콜을 처리하는데 소요되는 시간량에 기초하여 선택하도록 하는 최적화-기법 선택 모듈과,
    상기 복수의 최적화 기법들 중 상기 하나의 최적화 기법으로서 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합하는 것을 선택하는 것에 응답하여,
    상기 제 1 웹 서비스 콜 및 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합하고,
    상기 제 3 웹 서비스 콜의 결과를 수신하고,
    상기 결과의 제 1 부분을 상기 제 1 웹 서비스 콜에 대응하는 것으로 식별하며,
    상기 결과의 제 2 부분을 상기 제 2 웹 서비스 콜에 대응하는 것으로 식별하고,
    상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트가 상기 제 1 웹 서비스 콜을 행하였다는 판단에 근거하여, 상기 결과의 상기 제 1 부분을 상기 제 1 웹 서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트에게 제공하며,
    상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트가 상기 제 2 웹 서비스 콜을 행하였다는 판단에 근거하여, 상기 결과의 상기 제 2 부분을 상기 제 2 웹 서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트에게 제공하는 결합 모듈을 포함하는
    장치.
  9. 제 8 항에 있어서,
    상기 복수의 최적화 기법들은 상기 웹 서비스에 대해 제 4 웹 서비스 콜을 행하는 것을 포함하고,
    상기 제 4 웹 서비스 콜은 배칭 콜(batch call)이며,
    상기 배칭 콜의 결과의 제 1 부분은 상기 제 1 웹 서비스 콜에 대한 응답으로서 이용가능하고,
    상기 배칭 콜의 결과의 제 2 부분은 상기 제 2 웹 서비스 콜에 대한 응답으로서 이용가능하며,
    상기 장치는 배칭 모듈을 더 포함하되,
    상기 배칭 모듈은, 상기 복수의 최적화 기법들 중 상기 하나의 최적화 기법으로서 상기 제 4 웹 서비스 콜을 행하는 것을 선택하는 것에 응답하여,
    상기 제 4 웹 서비스 콜을 행하고,
    상기 결과의 상기 제 1 부분을 상기 제 1 웹 서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트에 제공하며,
    상기 결과의 상기 제 2 부분을 상기 제 2 웹 서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트에 제공하는
    장치.
  10. 제 9 항에 있어서,
    상기 복수의 최적화 기법들 중 상기 하나의 최적화 기법으로서 상기 제 4 웹 서비스 콜을 행하는 것을 선택하는 것은, 상기 웹 서비스가 상기 제 4 웹 서비스 콜에 대응하는 인터페이스를 제공했다는 판정에 기초하는
    장치.
  11. 제 9 항에 있어서,
    상기 복수의 최적화 기법들 중 상기 하나의 최적화 기법으로서 상기 제 4 웹 서비스 콜을 행하는 것을 선택하는 것은, 상기 제 4 웹 서비스 콜을 행하는 것이 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합하는 것보다 더 적은 시간을 소요할 것이라는 판정에 기초하는
    장치.
  12. 제 8 항에 있어서,
    상기 복수의 최적화 기법들은, 상기 제 1 웹 서비스 콜이 행해질 필요가 없도록 캐시로부터 상기 제 1 웹 서비스 콜에 대한 응답을 제공하는 것을 포함하고,
    상기 장치는, 상기 복수의 서비스 최적화 기법들 중 상기 하나의 최적화 기법으로서 상기 캐시로부터 상기 제 1 웹 서비스 콜에 대한 응답을 제공하는 것을 선택하는 것에 응답하여, 상기 캐시로부터 상기 제 1 웹 서비스 콜에 대한 상기 응답을 제공하는 캐싱 모듈을 더 포함하는
    장치.
  13. 제 12 항에 있어서,
    상기 캐시로부터 상기 제 1 웹 서비스 콜에 대한 상기 응답을 제공하는 것을 상기 복수의 최적화 기법들 중 상기 하나의 최적화 기법으로서 선택하는 것은, 상기 제 1 웹 서비스 콜이 상기 제 3 웹 서비스 콜과 동일하다는 판정에 기초하고,
    상기 제 3 웹 서비스 콜을 행하는 것은 상기 응답의 수신을 초래하는
    장치.
  14. 제 8 항에 있어서,
    상기 복수의 최적화 기법들은 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 동시에 행하는 것을 포함하고,
    상기 장치는, 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 상기 복수의 최적화 기법들 중 상기 하나의 최적화 기법으로서 동시에 행하는 것을 선택하는 것에 응답하여, 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 동시에 행하도록 하는 실행 모듈을 더 포함하는
    장치.
  15. 제 14 항에 있어서,
    상기 복수의 최적화 기법들 중 상기 하나의 최적화 기법으로서 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 동시에 행하는 것을 선택하는 것은, 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 동시에 행하는 것이 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합하는 것보다 더 적은 시간을 소요할 것이라는 판정에 기초하는
    장치.
  16. 제 1 웹 서비스 콜 및 제 2 웹 서비스 콜을 수신하는 단계 - 상기 제 1 웹 서비스 콜은 애플리케이션 서버 상에서 구동되는 애플리케이션에 포함된 복수의 콤포넌트들 중의 제 1 콤포넌트에 의해 웹 서비스에 대해 행해지고, 상기 제 2 웹 서비스 콜은 상기 복수의 콤포넌트들 중의 제 2 콤포넌트에 의해 상기 웹 서비스에 대해 행해짐 - 와,
    상기 웹 서비스에 대해 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 제 3 웹 서비스 콜로 런타임에 결합하는 것을 포함하는 복수의 최적화 기법들 중 하나의 최적화 기법을 상기 최적화 기법이 콜을 처리하는데 소요되는 시간량에 기초하여 선택하는 단계와,
    상기 복수의 최적화 기법들 중 상기 하나의 최적화 기법으로서 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합하는 것을 선택하는 것에 응답하여, 상기 제 1 웹 서비스 콜 및 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합하는 단계 - 상기 결합하는 단계는 하나 이상의 하드웨어 프로세서에 의해 수행됨 - 와,
    상기 제 3 웹 서비스 콜의 결과를 수신하는 단계와,
    상기 결과의 제 1 부분을 상기 제 1 웹 서비스 콜에 대응하는 것으로 식별하는 단계와,
    상기 결과의 제 2 부분을 상기 제 2 웹 서비스 콜에 대응하는 것으로 식별하는 단계와,
    상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트가 상기 제 1 웹 서비스 콜을 행하였다는 판단에 근거하여, 상기 결과의 상기 제 1 부분을 상기 제 1 웹서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트에게 제공하는 단계와,
    상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트가 상기 제 2 웹 서비스 콜을 행하였다는 판단에 근거하여, 상기 결과의 상기 제 2 부분을 상기 제 2 웹 서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트에게 제공하는 단계를 포함하는
    방법.
  17. 제 16 항에 있어서,
    상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합하는 단계는,
    상기 제 1 웹 서비스 콜의 복수의 요청 파라미터들을 상기 제 3 웹 서비스 콜의 복수의 요청 파라미터들에 통합하는 단계와,
    상기 제 2 웹 서비스 콜의 복수의 요청 파라미터들을 상기 제 3 웹 서비스 콜의 상기 복수의 요청 파라미터들에 통합하는 단계와,
    상기 제 3 웹 서비스 콜을 행하는 단계를 포함하는
    방법.

  18. 제 16 항에 있어서,
    상기 복수의 최적화 기법들은 상기 웹 서비스에 대해 제 4 웹 서비스 콜을 행하는 것을 포함하고,
    상기 제 4 웹 서비스 콜은 배칭 콜(batch call)이며,
    상기 배칭 콜의 결과의 제 1 부분은 상기 제 1 웹 서비스 콜에 대한 응답으로서 이용가능하고,
    상기 배칭 콜의 결과의 제 2 부분은 상기 제 2 웹 서비스 콜에 대한 응답으로서 이용가능하며,
    상기 방법은,
    상기 복수의 최적화 기법들 중 상기 하나의 최적화 기법으로서 상기 제 4 웹 서비스 콜을 행하는 것을 선택하는 것에 응답하여,
    상기 제 4 웹 서비스 콜을 행하는 단계와,
    상기 결과의 상기 제 1 부분을 상기 제 1 웹 서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트에 제공하는 단계와,
    상기 결과의 상기 제 2 부분을 상기 제 2 웹 서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트에 제공하는 단계를 더 포함하는
    방법.
  19. 머신의 하나 이상의 프로세서들에 의해 실행될 때, 상기 머신으로 하여금 동작을 수행하게 하는 명령들을 포함하는 머신-판독가능 저장 매체로서,
    상기 동작은,
    제 1 웹 서비스 콜 및 제 2 웹 서비스 콜을 수신하는 단계 - 상기 제 1 웹 서비스 콜은 애플리케이션 상에서 구동되는 애플리케이션에 포함된 복수의 콤포넌트들 중의 제 1 콤포넌트에 의해 웹 서비스에 대해 행해지고, 상기 제 2 웹 서비스 콜은 상기 복수의 콤포넌트들 중의 제 2 콤포넌트에 의해 상기 웹 서비스에 대해 행해짐 - 와,
    상기 웹 서비스에 대해 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 제 3 웹 서비스 콜로 런타임에 결합하는 것을 포함하는 복수의 최적화 기법들 중 하나의 최적화 기법을 상기 최적화 기법이 콜을 처리하는데 소요되는 시간량에 기초하여 선택하는 단계와,
    상기 복수의 최적화 기법들 중 상기 하나의 최적화 기법으로서 상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합하는 것을 선택하는 것에 응답하여, 상기 제 1 웹 서비스 콜 및 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합하는 단계와,
    상기 제 3 웹 서비스 콜의 결과를 수신하는 단계와,
    상기 결과의 제 1 부분을 상기 제 1 웹 서비스 콜에 대응하는 것으로 식별하는 단계와,
    상기 결과의 제 2 부분을 상기 제 2 웹 서비스 콜에 대응하는 것으로 식별하는 단계와,
    상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트가 상기 제 1 웹 서비스 콜을 행하였다는 판단에 근거하여, 상기 결과의 상기 제 1 부분을 상기 제 1 웹서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 1 콤포넌트에게 제공하는 단계와,
    상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트가 상기 제 2 웹 서비스 콜을 행하였다는 판단에 근거하여, 상기 결과의 상기 제 2 부분을 상기 제 2 웹 서비스 콜에 대한 응답으로서 상기 복수의 콤포넌트들 중의 상기 제 2 콤포넌트에게 제공하는 단계를 포함하는
    머신-판독가능 저장 매체.
  20. 제 19 항에 있어서,
    상기 제 1 웹 서비스 콜과 상기 제 2 웹 서비스 콜을 상기 제 3 웹 서비스 콜로 런타임에 결합하는 단계는,
    상기 제 1 웹 서비스 콜의 복수의 요청 파라미터들을 상기 제 3 웹 서비스 콜의 복수의 요청 파라미터들에 통합하는 단계와,
    상기 제 2 웹 서비스 콜의 복수의 요청 파라미터들을 상기 제 3 웹 서비스 콜의 상기 복수의 요청 파라미터들에 통합하는 단계와,
    상기 제 3 웹 서비스 콜을 행하는 단계를 포함하는
    머신-판독가능 저장 매체.
KR1020127023102A 2010-02-05 2011-01-21 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체 KR101628433B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US30208210P 2010-02-05 2010-02-05
US61/302,082 2010-02-05
US12/754,564 2010-04-05
US12/754,564 US9367371B2 (en) 2010-02-05 2010-04-05 Widget framework, real-time service orchestration, and real-time resource aggregation
PCT/US2011/022109 WO2011097078A1 (en) 2010-02-05 2011-01-21 Widget framework, real-time service orchestration, and real-time resource aggregation

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020147027561A Division KR101660148B1 (ko) 2010-02-05 2011-01-21 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체

Publications (2)

Publication Number Publication Date
KR20120128661A KR20120128661A (ko) 2012-11-27
KR101628433B1 true KR101628433B1 (ko) 2016-06-08

Family

ID=44354666

Family Applications (3)

Application Number Title Priority Date Filing Date
KR1020147027561A KR101660148B1 (ko) 2010-02-05 2011-01-21 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체
KR1020157009935A KR101703196B1 (ko) 2010-02-05 2011-01-21 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체
KR1020127023102A KR101628433B1 (ko) 2010-02-05 2011-01-21 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체

Family Applications Before (2)

Application Number Title Priority Date Filing Date
KR1020147027561A KR101660148B1 (ko) 2010-02-05 2011-01-21 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체
KR1020157009935A KR101703196B1 (ko) 2010-02-05 2011-01-21 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체

Country Status (7)

Country Link
US (2) US9367371B2 (ko)
EP (1) EP2531926A4 (ko)
JP (3) JP5582428B2 (ko)
KR (3) KR101660148B1 (ko)
AU (1) AU2011213189B2 (ko)
CA (1) CA2788899C (ko)
WO (1) WO2011097078A1 (ko)

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9367371B2 (en) 2010-02-05 2016-06-14 Paypal, Inc. Widget framework, real-time service orchestration, and real-time resource aggregation
US8775946B2 (en) 2010-05-07 2014-07-08 Salesforce.Com, Inc. Resolving information in a multitenant database environment
US9069905B2 (en) 2012-07-16 2015-06-30 Microsoft Technology Licensing, Llc Tool-based testing for composited systems
US9621635B1 (en) * 2012-07-31 2017-04-11 Niantic, Inc. Using side channels in remote procedure calls to return information in an interactive environment
US9189619B2 (en) 2012-11-13 2015-11-17 International Business Machines Corporation Runtime based application security and regulatory compliance in cloud environment
US9195294B2 (en) 2012-11-13 2015-11-24 International Business Machines Corporation Cooperatively managing enforcement of energy related policies between virtual machine and application runtime
CN104252412B (zh) * 2013-06-28 2017-12-29 国际商业机器公司 用于css冲突的自动检测的方法和系统
US9760345B2 (en) * 2014-07-26 2017-09-12 Alfonso Diez Recursive ontology-based systems engineering
US9398081B2 (en) * 2014-08-20 2016-07-19 Futurewei Technologies, Inc. Automating client development for network APIs
US10579354B2 (en) * 2015-03-10 2020-03-03 Kordata, Llc Method and system for rapid deployment and execution of customized functionality across multiple distinct platforms
US9900380B2 (en) 2015-07-14 2018-02-20 Bank Of America Corporation Common function modules for use with multiple applications
US10802660B1 (en) * 2015-07-29 2020-10-13 Intuit Inc. Metadata-driven binding of platform-agnostic content to platform-specific user-interface elements
US9672140B1 (en) * 2015-12-28 2017-06-06 Sap Se Processing special requests at dedicated application containers
US11010024B2 (en) * 2018-03-29 2021-05-18 Cerner Innovation, Inc. Intelligent user interface and application rendering
US11379497B2 (en) * 2018-06-21 2022-07-05 At&T Intellectual Property I, L.P. Data model database
US20220391201A1 (en) * 2019-11-21 2022-12-08 Schlumberger Technology Corporation Widget delivery workflow system and method
US10977059B1 (en) * 2020-03-25 2021-04-13 Red Hat, Inc. Implementing object validation, web request handling, object relational mapping, or messaging via direct bytecode generation
CN114237413A (zh) * 2020-09-09 2022-03-25 华为技术有限公司 处理交互事件的方法和装置
US11816456B2 (en) * 2020-11-16 2023-11-14 Microsoft Technology Licensing, Llc Notebook for navigating code using machine learning and flow analysis

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273792A1 (en) 1998-09-25 2005-12-08 Shigekazu Inohara Method for optimizing remote procedure call (RPC) and program execution method by use of the optimized RPC
US20070240041A1 (en) 2006-04-05 2007-10-11 Larry Pearson Methods and apparatus for generating an aggregated cascading style sheet
US20080313659A1 (en) 2007-06-15 2008-12-18 Microsoft Corporation Page and device-optimized cascading style sheets

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325524A (en) * 1989-04-06 1994-06-28 Digital Equipment Corporation Locating mobile objects in a distributed computer system
US5649103A (en) 1995-07-13 1997-07-15 Cabletron Systems, Inc. Method and apparatus for managing multiple server requests and collating reponses
US6321274B1 (en) * 1996-06-28 2001-11-20 Microsoft Corporation Multiple procedure calls in a single request
US6427234B1 (en) * 1998-06-11 2002-07-30 University Of Washington System and method for performing selective dynamic compilation using run-time information
US7281268B2 (en) 1999-11-14 2007-10-09 Mcafee, Inc. System, method and computer program product for detection of unwanted processes
US20020078103A1 (en) 2000-12-20 2002-06-20 Gorman William Phillip Wizard development kit
US7110525B1 (en) * 2001-06-25 2006-09-19 Toby Heller Agent training sensitive call routing system
US8069225B2 (en) 2003-04-14 2011-11-29 Riverbed Technology, Inc. Transparent client-server transaction accelerator
CN1799026A (zh) * 2003-06-05 2006-07-05 瑞士再保险公司 用于产生一致的设备无关图形用户界面的方法和终端
WO2005009412A1 (en) * 2003-07-24 2005-02-03 Wockhardt Limited Oral compositions for treatment of diseases
US20050080930A1 (en) 2003-10-14 2005-04-14 International Business Machines Corporation Method and apparatus for processing service requests in a service-oriented architecture
US7421700B2 (en) * 2004-03-15 2008-09-02 Microsoft Corporation Interprocess buffer management using a buffer delay time
JP4163670B2 (ja) 2004-05-10 2008-10-08 株式会社ソニー・コンピュータエンタテインメント ディスク装置
JP2008511928A (ja) 2004-08-31 2008-04-17 インターナショナル・ビジネス・マシーンズ・コーポレーション メタデータの管理
JP4280703B2 (ja) 2004-11-09 2009-06-17 日立オムロンターミナルソリューションズ株式会社 プロセス間通信
US7706895B2 (en) * 2005-02-25 2010-04-27 Rockwell Automation Technologies, Inc. Reliable messaging instruction
US7457797B2 (en) * 2005-03-30 2008-11-25 International Business Machines Corporation Method and apparatus for associating logical conditions with the re-use of a database query execution strategy
US7912810B2 (en) * 2005-06-28 2011-03-22 Sap Ag Methods, systems and computer program products for integrating carrier services into an enterprise
US20070291776A1 (en) * 2005-07-28 2007-12-20 Dilithium Networks, Inc. Method and apparatus for billing for media during communications in channel-based media telecommunication protocols
US7890955B2 (en) * 2006-04-03 2011-02-15 Microsoft Corporation Policy based message aggregation framework
CN101064960B (zh) * 2006-04-27 2010-12-08 华为技术有限公司 一种对语音呼叫连续锚定进行优化的方法、系统及装置
US9074364B2 (en) * 2006-06-17 2015-07-07 Rotating High Towers S.A. Rotatable building structure
US20080228920A1 (en) * 2007-03-16 2008-09-18 Souders Steven K System and method for resource aggregation and distribution
US8341595B2 (en) * 2007-05-30 2012-12-25 Roam Data Inc System and method for developing rich internet applications for remote computing devices
US8156164B2 (en) * 2007-07-11 2012-04-10 International Business Machines Corporation Concurrent directory update in a cluster file system
ATE475256T1 (de) * 2007-08-13 2010-08-15 Accenture Global Services Gmbh Architektur für dienstanfrageausführung für einen kommunikationsdienstanbieter
US8285813B1 (en) * 2007-12-05 2012-10-09 Appcelerator, Inc. System and method for emulating different user agents on a server
US8176205B2 (en) 2008-02-14 2012-05-08 Research In Motion Limited Method, server and system for optimizing HTML-based content
JP2009205264A (ja) 2008-02-26 2009-09-10 Nippon Telegr & Teleph Corp <Ntt> ウェブサービス要求処理装置、ウェブサービス要求処理方法、及びウェブサービス要求処理システム
NZ566291A (en) * 2008-02-27 2008-12-24 Actionthis Ltd Methods and devices for post processing rendered web pages and handling requests of post processed web pages
US9110685B2 (en) 2008-03-25 2015-08-18 Qualcomm, Incorporated Apparatus and methods for managing widgets in a wireless communication environment
US8010624B2 (en) 2008-03-27 2011-08-30 Amazon Technologies, Inc. Dynamic composition for image transmission
US8234622B2 (en) 2008-03-31 2012-07-31 Microsoft Corporation Cross platform compositional widgets
CN101572598B (zh) 2008-04-28 2013-03-06 国际商业机器公司 用于可靠的快速集成的方法和装置
JP2009290729A (ja) 2008-05-30 2009-12-10 Ricoh Co Ltd 画像形成装置、情報処理方法、及びプログラム
US8990289B2 (en) * 2009-02-27 2015-03-24 Oracle America, Inc. Server based framework for improving Ajax performance
US8572554B2 (en) * 2009-07-17 2013-10-29 Ebay Inc. Method and system for integrating Java and JavaScript technologies
US9367371B2 (en) 2010-02-05 2016-06-14 Paypal, Inc. Widget framework, real-time service orchestration, and real-time resource aggregation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273792A1 (en) 1998-09-25 2005-12-08 Shigekazu Inohara Method for optimizing remote procedure call (RPC) and program execution method by use of the optimized RPC
US20070240041A1 (en) 2006-04-05 2007-10-11 Larry Pearson Methods and apparatus for generating an aggregated cascading style sheet
US20080313659A1 (en) 2007-06-15 2008-12-18 Microsoft Corporation Page and device-optimized cascading style sheets

Also Published As

Publication number Publication date
CA2788899C (en) 2016-12-13
KR20150048903A (ko) 2015-05-07
JP2016026348A (ja) 2016-02-12
US20160266949A1 (en) 2016-09-15
JP5582428B2 (ja) 2014-09-03
US20110197197A1 (en) 2011-08-11
EP2531926A4 (en) 2015-08-26
AU2011213189B2 (en) 2014-11-06
KR101660148B1 (ko) 2016-09-26
WO2011097078A1 (en) 2011-08-11
AU2011213189A1 (en) 2012-08-30
CA2788899A1 (en) 2011-08-11
KR20120128661A (ko) 2012-11-27
JP2013519158A (ja) 2013-05-23
JP5809328B2 (ja) 2015-11-10
US9367371B2 (en) 2016-06-14
JP2014211898A (ja) 2014-11-13
KR101703196B1 (ko) 2017-02-06
EP2531926A1 (en) 2012-12-12
KR20140130532A (ko) 2014-11-10

Similar Documents

Publication Publication Date Title
KR101628433B1 (ko) 애플리케이션 서버 상에서 구동되는 애플리케이션의 콤포넌트에 의한 서비스에 대한 콜을 최적화하기 위한 장치, 방법 및 머신-판독가능 저장 매체
Jendrock et al. Java EE 7 Tutorial, The, Volume 1
US8898285B2 (en) Service oriented architecture version and dependency control
US9870202B2 (en) Business object model layer interface
US20100153150A1 (en) Software for business adaptation catalog modeling
CN105787123B (zh) 提供最小下载和模拟页面导航特征的服务器计算机和方法
US20100153149A1 (en) Software for model-based configuration constraint generation
Freeman et al. Pro Asp. net Mvc 4
US11797273B2 (en) System and method for enhancing component based development models with auto-wiring
US9990595B2 (en) Modeled service endpoints in business process model and notation tools
EP2369480A2 (en) Mashup infrastructure with learning mechanism
US8930441B2 (en) Architecture for modeled pattern based user interfaces
US20120023421A1 (en) Model for extensions to system providing user interface applications
US20110022943A1 (en) Document object model (dom) application framework
US20120030612A1 (en) Dynamic property attributes
WO2011118003A1 (ja) ウェブアプリケーション構築システム、ウェブアプリケーション構築方法、ウェブアプリケーション構築プログラムおよびウェブアプリケーション構築プログラムを記録した記録媒体
AU2016203934B2 (en) Widget framework, real-time service orchestration, and real-time resource aggregation
US20210342130A1 (en) Systems and methods for software application generation and delivery
AU2015200369B2 (en) Widget framework, real-time service orchestration, and real-time resource aggregation
US20230409291A1 (en) Generating applications for various platforms by use of a no code environment
Tan Implementing a Web-Based Computerized Restaurant System
Beckner et al. Microsoft Dynamics CRM API Development for Online and On-Premise Environments: Covering On-Premise and Online Solutions
Josifovic OSS for booking purposes: Fork of Open Eshop
Jawzal On-Line Football Tickets Reservation System

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
A107 Divisional application of patent
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20190429

Year of fee payment: 4