KR102082092B1 - 웹 애플리케이션을 위한 경량 프레임워크 - Google Patents

웹 애플리케이션을 위한 경량 프레임워크 Download PDF

Info

Publication number
KR102082092B1
KR102082092B1 KR1020197017733A KR20197017733A KR102082092B1 KR 102082092 B1 KR102082092 B1 KR 102082092B1 KR 1020197017733 A KR1020197017733 A KR 1020197017733A KR 20197017733 A KR20197017733 A KR 20197017733A KR 102082092 B1 KR102082092 B1 KR 102082092B1
Authority
KR
South Korea
Prior art keywords
control
calls
user interface
cloud
scripting language
Prior art date
Application number
KR1020197017733A
Other languages
English (en)
Other versions
KR20190077106A (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 KR20190077106A publication Critical patent/KR20190077106A/ko
Application granted granted Critical
Publication of KR102082092B1 publication Critical patent/KR102082092B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

본 명세서에 설명된 다양한 기술은 스크립팅 언어 기반 프레임워크를 사용하여 웹 애플리케이션을 개발하는 것과 관련된다. 호는 스크립팅 언어 기반 프레임워크의 인터페이스를 통해 수신될 수 있다. 호는 스크립팅 언어 기반 프레임워크에 포함된 컨트롤을 관리할 수 있다. 또한, 호는 스크립팅 언어 기반 프레임워크를 참조하는 애플리케이션에 의해 제공될 수 있다. 또한, 사용자 인터페이스는 호에 의해 관리되는 컨트롤에 기초하여 생성될 수 있고, 클라우드 플랫폼 상의 분산 데이터 스토어에 의해 제공되는 백엔드 클라우드 기반 서비스는 호에 의해 관리되는 컨트롤에 기초하여 액세스될 수 있다.

Description

웹 애플리케이션을 위한 경량 프레임워크{LIGHTWEIGHT FRAMEWORK FOR WEB APPLICATIONS}
웹 애플리케이션은 인터넷과 같은 네트워크를 통해 액세스될 수 있는 애플리케이션이다. 웹 애플리케이션은 클라이언트 장치 상의 클라이언트 측 웹 브라우저 또는 다른 애플리케이션(예를 들어, 모바일 애플리케이션, 데스크톱 애플리케이션 등)을 통해 액세스되고 사용될 수 있는 브라우저 지원 언어(예를 들어, 마크업 언어와 결합된 스크립팅 언어)로 코딩될 수 있다. 웹 애플리케이션은 웹 브라우저의 편재성(ubiquity) 및 클라이언트로서 웹 브라우저를 사용하는 편의성으로 인해 점점 인기를 얻고 있다. 또한, 웹 애플리케이션의 인기는 중앙집중형 애플리케이션 시장의 성장을 초래했다.
최근에, 클라우드 컴퓨팅은 더 많이 보급되고 있다. 따라서, 웹 애플리케이션은 클라우드 플랫폼 상에 구축될 수 있으며, 웹 애플리케이션은 클라우드에서 실행되고/되거나 클라우드에 의해 제공되는 백엔드 서비스를 사용할 수 있다. 클라우드 플랫폼 상에 구축된 종래의 애플리케이션의 개발은 통상 클라우드로부터 데이터를 판독하고, 데이터를 클라우드에 기록하고, 다른 백엔드 서비스를 사용하는 등을 수행하기 위해 다양한 클라우드 플랫폼 특정 정보(예를 들어, 프로토콜, 데이터 구조 등)에 대한 이해를 갖는 웹 프로그래머를 필요로 한다. 클라우드 플랫폼 상에서 애플리케이션을 개발하는 것과 연관되는 그러한 복잡성에 더하여, 종래의 개발은 종종 시간 소모적일 수 있다. 중앙집중형 애플리케이션 시장의 성장에 따라, 웹 프로그래머는 이동 장치 및 웹 브라우저에 걸쳐 동작되는 강력한 애플리케이션을 보다 짧은 시간에 작성하는 방법을 점점 찾고 있다.
스크립팅 언어 기반 프레임워크를 사용하여 웹 애플리케이션을 개발하는 것과 관계되는 다양한 기술이 본 명세서에 설명된다. 스크립팅 언어 기반 프레임워크의 인터페이스가 노출될 수 있다. 또한, 호(call)는 스크립팅 언어 기반 프레임워크의 인터페이스를 통해 수신될 수 있다. 호는 스크립팅 언어 기반 프레임워크에 포함된 컨트롤을 관리할 수 있다. 또한, 호는 스크립팅 언어 기반 프레임워크를 참조하는 애플리케이션에 의해 제공될 수 있다. 또한, 사용자 인터페이스는 호에 의해 관리되는 컨트롤에 기초하여 생성될 수 있고, 클라우드 플랫폼 상의 분산 데이터 스토어에 의해 제공되는 백엔드 클라우드 기반 서비스는 호에 의해 관리되는 컨트롤에 기초하여 액세스될 수 있다.
스크립팅 언어 기반 프레임워크는 인에이블될 때 백엔드 클라우드 기반 서비스에 액세스하고 사용자 인터페이스를 생성하도록 사전 프로그램된 한 세트의 컨트롤을 포함할 수 있다. 일 예에 따르면, 스크립팅 언어 기반 프레임워크에 포함된 컨트롤 중 하나 이상을 인에이블하고, 디스에이블하고, 특징의 값을 설정하는 등을 수행하기 위한 호를 제공하는 애플리케이션이 개발될 수 있다. 예를 들어, 호는 애플리케이션에 포함된 스크립팅 언어 코드로부터 생성될 수 있다. 따라서, 기능을 수행하기 위해 애플리케이션에 맞춤형 코드(custom code)를 포함시키기 보다는 (예를 들어, 한 세트의 컨트롤을 관리함으로써) 스크립팅 언어 기반 프레임워크에 통합된 기능을 이용하는 애플리케이션이 개발될 수 있다.
다양한 실시예에서, 클라우드 플랫폼 상의 분산 데이터 스토어에 의해 제공되는 백엔드 클라우드 기반 서비스는 데이터를 분산 데이터 스토어에 기록하는 것, 분산 데이터 스토어로부터 데이터를 판독하는 것, 분산 데이터 스토어에 유지된 데이터를 검색하는 것, 분산 데이터 스토어에서 데이터를 색인화하는 것 등 중 하나 이상을 포함할 수 있다. 부가적으로 또는 대안으로, 하나 이상의 제3자 서비스는 클라우드 플랫폼 상의 분산 데이터 스토어를 통해 및/또는 스크립팅 언어 기반 프레임워크로부터 직접 액세스 가능할 수 있다.
상기 요약은 본 명세서에 논의되는 시스템 및/또는 방법의 일부 양태의 기초적인 이해를 제공하기 위해 간략한 요약을 제공한다. 본 요약은 본 명세서에 논의되는 시스템 및/또는 방법의 포괄적인 개요가 아니다. 그것은 핵심/중대한 요소를 식별하거나 그러한 시스템 및/또는 방법의 범위를 설명하도록 의도되지 않는다. 그것의 유일한 목적은 나중에 제공될 더 상세한 설명에 대한 도입으로서 일부 개념을 간략한 형태로 제공하는 것이다.
도 1은 웹 애플리케이션의 개발을 용이하게 하는 예시적 시스템의 기능 블록도를 예시한다.
도 2는 제3자 서비스를 이용하는 웹 애플리케이션의 개발을 용이하게 하는 예시적 시스템의 기능 블록도를 예시한다.
도 3은 스크립팅 언어 기반 프레임워크를 사용하여 애플리케이션을 개발하는 예시적 시스템의 기능 블록도를 예시한다.
도 4는 웹 애플리케이션을 개발하는 예시적 방법을 예시하는 흐름도이다.
도 5는 웹 애플리케이션을 개발하는 다른 예시적 방법을 예시하는 흐름도이다.
도 6은 예시적 컴퓨팅 장치를 예시한다.
경량의(lightweight) 클라이언트 측 프레임워크를 사용하여 웹 애플리케이션을 개발하는 것과 관련된 다양한 기술이 이제 첨부 도면을 참조하여 설명되고, 첨부 도면에서 동일한 참조 번호는 첨부 도면에 걸쳐 동일한 요소를 지칭하기 위해 사용된다. 이하의 설명에서, 설명을 위해, 다수의 구체적 상세 사항이 하나 이상의 양태의 완전한 이해를 제공하기 위해 진술된다. 그러나, 그러한 양태(들)는 이러한 구체적 상세 사항 없이 실시될 수 있다는 점이 분명할 수 있다. 다른 경우에, 공지된 구조 및 장치는 하나 이상의 양태의 설명을 용이하게 하기 위해 블록도 형태로 도시된다. 또한, 특정 시스템 구성요소에 의해 수행되는 것으로 설명되는 기능은 다수의 구성요소에 의해 수행될 수 있다는 점이 이해되어야 한다. 유사하게, 예를 들어, 하나의 구성요소가 다수의 구성요소에 의해 수행되는 것으로 설명되는 기능을 수행하도록 구성될 수 있다.
또한, 용어 "또는"은 배타적 "또는"보다는 오히려 내포적 "또는"을 의미하도록 의도된다. 즉, 다르게 지정되거나, 상황으로부터 분명하지 않으면, "X는 A 또는 B를 이용한다"라는 문구는 자연 내포적 순열 중 어느 하나를 의미하도록 의도된다. 즉, "X는 A 또는 B를 이용한다"라는 문구는 이하의 경우 중 어느 하나에 의해 만족된다: X는 A를 이용한다; X는 B를 이용한다; 또는 X는 A 및 B 둘 다를 이용한다. 또한, 본 출원 및 첨부된 청구범위에 사용된 바와 같은 단수형은 일반적으로 다르게 지정되지 않거나 단수 형태로 의도된 맥락이 분명하지 않으면 "하나 이상의"를 의미하도록 해석되어야 한다.
본 명세서에 설명된 바와 같이, 경량 프레임워크는 웹 프로그래머에 의한 신속한 웹 애플리케이션 개발을 용이하게 할 수 있다. 본 명세서에 설명된 경량 프레임워크는 스크립팅 언어 기반 프레임워크일 수 있다. 또한, 경량 프레임워크는 장치 호환 사용자 인터페이스 생성을 가능하게 하고 클라우드 플랫폼 상의 분산 데이터 스토어에 유지된 데이터 및/또는 클라우드 플랫폼 상의 분산 데이터 스토어에 의해 제공되거나 분산 데이터 스토어를 통해 이용 가능한 백엔드 클라우드 기반 서비스에 액세스할 수 있다. 대조적으로, 웹 애플리케이션 개발에 사용되는 종래의 프레임워크는 종종 데이터 액세스를 지원하는 것 없이 사용자 인터페이스 생성을 지원한다. 따라서, 종래의 웹 애플리케이션 개발에서, 웹 프로그래머는 종종 클라우드로부터 데이터를 판독하거나, 데이터를 클라우드에 기록하거나, 다른 백엔드 클라우드 기반 서비스를 이용하는 웹 애플리케이션을 개발하기 위해 클라우드 기술, 데이터 구조, 프로토콜에 대한 지식을 가질 필요가 있다.
이제 도면을 참조하면, 도 1은 웹 애플리케이션의 개발을 용이하게 하는 시스템(100)을 예시한다. 시스템(100)은 스크립팅 언어 기반 프레임워크(102)를 포함하고, 이는 예시적 실시예에서 클라이언트 측 프레임워크이다. 예를 들어, 스크립팅 언어 기반 프레임워크(102)는 특징이 풍부한(feature-rich) 경량 프레임워크일 수 있다. 또한, 스크립팅 언어 기반 프레임워크(102)는 애플리케이션 개발 동안 공통 활동과 연관되는 오버헤드를 완화함으로써 웹 애플리케이션의 개발을 지원할 수 있다. 따라서, 웹 프로그래머는 이러한 활동과 연관되는 기능이 스크립팅 언어 기반 프레임워크(102)에 통합될 수 있으므로 애플리케이션 개발 동안 그러한 공통 활동을 수행할 필요가 없고, 그 대신에 웹 프로그래머는 스크립팅 언어 기반 프레임워크(102)에 의해 공급되는 기능을 사용하는 애플리케이션을 생성할 수 있다.
웹 애플리케이션을 개발하는 것은 전형적으로 한 세트의 사용자 인터페이스를 구축하는 것 및 데이터 액세스를 백엔드 시스템에 구축하는 것(및/또는 백엔드 시스템을 구축하는 것)을 수반한다. 사용자 인터페이스는 사용자로부터 다양한 형태의 입력을 수집할 수 있고 백엔드 시스템의 사양에 따르는 입력을 처리할 수 있다. 또한, 사용자 인터페이스는 출력을 사용자에게 제공할 수 있다. 스크립팅 언어 기반 프레임워크(102)는 웹 프로그래머가 백엔드 시스템에 대한 데이터 액세스 및 기본 스크립팅 언어 코드 및/또는 마크업 언어 코드에 의한 사용자 인터페이스의 생성 둘 다를 관리하는 것을 허용함으로써 웹 애플리케이션의 개발을 단순화한다. 예를 들어, 스크립팅 언어는 JavaScript®일 수 있다. 마크업 언어의 일 예는 HTML일 수 있다. 그러나, 청구된 발명 대상은 이전 예에 제한되지 않는다는 점이 이해되어야 한다.
스크립팅 언어 기반 프레임워크(102)는 데이터 액세스 구성요소(104) 및 UI(user interface) 생성 구성요소(106)를 포함한다. 데이터 액세스 구성요소(104)는 클라우드 기반 백엔드 시스템과 통합된다. 특히, 데이터 액세스 구성요소(104)는 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)에 의해 제공되는 백엔드 클라우드 기반 서비스에 액세스할 수 있다. 예를 들어, 데이터 액세스 구성요소(104)는 분산 데이터 스토어(108)로부터 데이터를 판독하는 것, 데이터를 분산 데이터 스토어(108)에 기록하는 것, 분산 데이터 스토어(108)에 의해 추상화된 제3자 백엔드 클라우드 기반 서비스(들)를 이용하는 것 등을 수행할 수 있다. 데이터 액세스 구성요소(104)는 분산 데이터 스토어(108)를 자동으로 사용하도록 설계될 수 있고, 따라서, 웹 프로그래머에 의해 개발되는 웹 애플리케이션은 웹 프로그래머가 분산 데이터 스토어(108)에 의해 제공되는 백엔드 클라우드 기반 서비스에 액세스를 통합할 필요가 없이 분산 데이터 스토어(108)를 자동으로 사용할 수 있다.
또한, UI 생성 구성요소(106)는 한 세트의 사용자 인터페이스를 생성할 수 있다. UI 생성 구성요소(106)는 사용자로부터 다양한 형태의 입력을 수집할 수 있고 백엔드 시스템의 사양에 따르는 입력을 처리할 수 있는 사용자 인터페이스를 생성할 수 있다. 또한, UI 생성 구성요소(106)는 출력을 사용자에게 제공할 수 있는 사용자 인터페이스를 생성할 수 있다.
또한, 스크립팅 언어 기반 프레임워크(102)는 한 세트의 컨트롤(112)을 포함한다. 일 예에 따르면, 스크립팅 언어 기반 프레임워크(102)는 컨트롤(112)을 포함하는 하나 이상의 스크립팅 언어 라이브러리를 포함할 수 있다. 컨트롤(112)은 사용자 인터페이스를 생성하는 UI 생성 구성요소(106) 및 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)에 의해 제공되는 백엔드 클라우드 기반 서비스에 액세스하는 데이터 액세스 구성요소(104)에 의해 이용될 수 있다. 일 예시에 따르면, 컨트롤(112)로부터의 주어진 컨트롤이 인에이블될 때, UI 생성 구성요소(106)는 주어진 컨트롤에 기초하여 사용자 인터페이스를 생성할 수 있고 데이터 액세스 구성요소는 주어진 컨트롤에 기초하여 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)에 의해 제공되는 백엔드 클라우드 기반 서비스에 액세스할 수 있다. 따라서, 주어진 컨트롤은 주어진 컨트롤의 기능을 제공하기 위해 웹 프로그래머가 맞춤형 코드를 기록하는 것과 대조적으로 웹 프로그래머에 의해 이용될 수 있다.
스크립팅 언어 기반 프레임워크(102)는 인터페이스 구성요소(114)를 더 포함할 수 있다. 인터페이스 구성요소(114)는 애플리케이션(116)(예를 들어, 웹 애플리케이션)에 대한 스크립팅 언어 인터페이스일 수 있고, 애플리케이션(116)은 스크립팅 언어 코드 및/또는 마크업 언어 코드를 포함할 수 있다. 애플리케이션(116)은 스크립팅 언어 기반 프레임워크(102)에 통합된 기능을 이용하기 위해 인터페이스 구성요소(114)를 통해 스크립팅 언어 기반 프레임워크(102)를 참조할 수 있다. 또한, 애플리케이션(116)은 호(들)를 인터페이스 구성요소(114)를 통해 스크립팅 언어 기반 프레임워크(102)에 제공할 수 있다. 예를 들어, 호(들)는 컨트롤(112) 중 하나 이상을 관리할 수 있다(예를 들어, 호는 컨트롤(112)로부터 제어를 관리할 수 있음). 일 예에 따르면, 호는 애플리케이션(116)에 포함된 스크립팅 언어 코드로부터 생성될 수 있으며, 따라서, 애플리케이션(116)은 컨트롤(112) 중 하나 이상을 관리하는 하나 이상의 호를 생성할 수 있는 스크립팅 언어 코드를 포함할 수 있고, 하나 이상의 호는 인터페이스 구성요소(114)를 통해 스크립팅 언어 기반 프레임워크(102)에 제공될 수 있다.
스크립팅 언어 기반 프레임워크(102) 내의 컨트롤(112)은 애플리케이션(116)에 포함된 스크립팅 언어 코드에 기초하여(예를 들어, 인터페이스 구성요소(114)를 통해 애플리케이션(116)에 의해 제공되는 호(들)에 대응하여) 인에이블되거나 디스에이블될 수 있다. 또한, 컨트롤(112)은 (예를 들어, 인터페이스 구성요소(114)를 통해 애플리케이션(116)에 의해 제공되는 호(들)에 대응하여) 애플리케이션(116) 내의 스크립팅 언어 코드에 의해 관리될 수 있는 특징 및 효과를 가질 수 있다. 일 예에 따르면, 컨트롤(112) 중 하나 이상은 애플리케이션(116) 내의 스크립팅 언어 코드에 기초하여 동적으로 양식화될 수 있다. 다른 예로서, 컨트롤(112) 중 하나 이상은 애플리케이션(116) 내의 스크립팅 언어 코드에 대응하여 설정될 수 있는 특징의 범위를 가질 수 있다.
스크립팅 언어 기반 프레임워크(102)는 애플리케이션(116)을 개발할 때 웹 프로그래머에 의해 사용될 수 있다. 스크립팅 언어 기반 프레임워크(102)는 데이터 액세스(예를 들어, 데이터 액세스 구성요소(104)를 통한) 및 사용자 인터페이스 생성(예를 들어, UI 생성 구성요소(106)를 통한)과 관련되는 기능을 제공한다. 따라서, 스크립팅 언어 기반 프레임워크(102)의 사용은 애플리케이션(116)을 개발할 때 웹 프로그래머에 의해 소비되는 시간의 양을 감소시킬 수 있다. 따라서, 스크립팅 언어 기반 프레임워크(102)는 스크립팅 언어 코드 및/또는 마크업 언어 코드를 사용하여 데이터 액세스 및 사용자 인터페이스 생성을 관리하기 위해 애플리케이션(116)의 웹 프로그래머의 능력을 개선할 수 있다.
데이터 액세스 구성요소(104)는 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)에 직접 액세스할 수 있다. 따라서, 웹 프로그래머는 간단한 스크립팅 언어 코드 및/또는 마크업 언어 코드를 사용하여 분산 데이터 스토어(108)로부터 판독하고/하거나 분산 데이터 스토어에 기록하기 위한 애플리케이션(116)을 생성할 수 있다. 웹 프로그래머는 클라우드 기술, 데이터 구조, 프로토콜 등에 대한 지식 없이도 애플리케이션(116)을 생성할 수 있다. 오히려, 애플리케이션(116)이 컨트롤(112) 중 하나 이상을 관리(예를 들어, 인에이블, 디스에이블, (특징 또는 효과를) 설정, 양식화 등)할 수 있는데, 애플리케이션(116)에 의해 관리되는 바와 같이 컨트롤(112) 중 하나 이상에 기초하여, 데이터 액세스 구성요소(104)가 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)에 직접 액세스할 수 있다.
분산 데이터 스토어(108)는 클라우드 플랫폼(110) 상에 구축된다. 분산 데이터 스토어(108)는 클라우드 플랫폼(110) 상의 완전히 스케일 가능 복제 데이터 스토어일 수 있다. 예시적 실시예에서, 분산 데이터 스토어(108)는 NoSQL 스토어일 수 있다. 또한, 분산 데이터 스토어(108)는 검색 구성요소(118) 및 색인 구성요소(120) 상에 구축될 수 있다. 검색 구성요소(118)는 완전한 텍스트 및/또는 이미지 검색을 제공하는 검색 엔진일 수 있다. 클라우드 플랫폼(110)은 또한 검색 구성요소(118) 및 색인 구성요소(120)에 더하여 또는 이들 대신에 다른 백엔드 서비스를 제공할 수 있다. 따라서, 일 예에 따르면, 데이터 액세스 구성요소(104)는 검색 구성요소(118)를 사용하여 분산 데이터 스토어(108)에서 데이터를 검색하는 것, 색인 구성요소(120)를 사용하여 분산 데이터 스토어(108)에서 색인 데이터를 검색하는 것 등을 할 수 있다.
클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)는 한 세트의 API(application programming interfaces)(122)를 통해 노출된다. API(122)는 RESTful(representational state transfer) API일 수 있다. 또한, API(122)는 스크립팅 언어 기반 프레임워크(102)에 통합될 수 있다. 예를 들어, 데이터 액세스 구성요소(104)는 분산 데이터 스토어(108)에 액세스하기 위해 API(122)를 이용할 수 있다. 따라서, 스크립팅 언어 기반 프레임워크(102)는 웹 프로그래머가 API(122)를 이용하는 법을 습득할 필요가 없도록 API(122)를 추상화할 수 있다. 오히려, 인터페이스 구성요소(114)는 애플리케이션(116)을 개발하는 웹 프로그래머에 의해 이용될 수 있는 간단한 스크립팅 언어 인터페이스를 노출할 수 있다. 예로서, 스크립팅 언어 기반 프레임워크(102)에 이용 가능한 컨트롤(112)은 인터페이스 구성요소(114)를 통해 노출될 수 있다.
또한, 한 세트의 제3자 서비스, 즉 제3자 서비스(1 124),..., 및 제3자 서비스(N 126)(N은 실질적으로 임의의 정수일 수 있다)(본 명세서에서 제3자 서비스(124-126)로 집합적으로 지칭됨)가 분산 데이터 스토어(108)에 통합될 수 있다. 따라서, 분산 데이터 스토어(108)는 액세스를 제3자 서비스(124-126)의 API에 제공할 수 있다. 그러므로, 데이터 액세스 구성요소(104)는 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)를 통해 제3자 서비스(124-126)(예를 들어, 제3자 백엔드 클라우드 기반 서비스)에 액세스할 수 있다. 제3자 서비스(124-126)의 예는 웹 검색 서비스, 이미지 검색 서비스, 비디오 검색 서비스, 소셜 네트워킹 서비스, 마이크로블로깅 서비스, 매핑 서비스, 반구조화 데이터베이스 검색 서비스, 인증 서비스, 클라우드 플랫폼 서비스 등을 포함할 수 있다. 그러나, 청구된 발명 대상은 전술한 제3자 서비스(124-126)의 예에 제한되지 않고, 어떠한 제3자 서비스도 첨부된 청구항의 범위 내에 있도록 의도된다는 점이 이해되어야 한다.
또한, 개발의 종료 시에, 애플리케이션(116)은 웹 호스팅 서비스(도시되지 않은)에 업로드될 수 있다. 애플리케이션(116)은 스크립팅 언어 코드 및/또는 마크업 언어 코드로 기록될 수 있으므로, 애플리케이션(116)은 예를 들어 실질적으로 임의의 웹사이트에 임베디드되거나 업로드될 수 있다. 이용 가능해지면, 애플리케이션(116)은 검색되어 실행을 위해 클라이언트 장치(도시되지 않은)의 웹 브라우저에 로드될 수 있다. 또한, 애플리케이션(116)은 최신 데스크톱, 랩톱, 및 모바일 브라우저에 걸쳐 동작될 수 있도록 클라이언트 장치에 관계없이 사용 가능할 수 있다(client device agnostic).
이하의 예시는 클라우드 기반 데이터 스토어에 주소록을 유지하는 애플리케이션을 개발하는 종래의 접근법을 설명한다. 웹 프로그래머는 처음 데이터 객체들(예를 들어, 사람, 사람이 속하는 조직 등) 사이의 관계를 정의할 수 있다. 그 후에, 웹 프로그래머는 한 세트의 사용자 인터페이스를 구축할 수 있다. 일 예에 따르면, 웹 프로그래머는 접촉을 생성하는 사용자 인터페이스, 접촉을 다른 접촉과 연관시키는 사용자 인터페이스, 접촉을 갱신하는 사용자 인터페이스, 접촉을 삭제하는 사용자 인터페이스, 접촉을 통해 검색하는 사용자 인터페이스 등을 구축할 수 있다. 사용자 인터페이스를 개발하고 데이터 객체를 정의하면, 웹 프로그래머는 한 세트의 백엔드 서비스(예를 들어, 백엔드 클라우드 기반 서비스)를 구축하고/하거나 한 세트의 백엔드 서비스에 액세스하는 시스템을 구축할 수 있다. 백엔드 서비스의 예는 데이터를 클라우드 기반 데이터 스토어에 기록하는 서비스, 클라우드 기반 데이터 스토어로부터 데이터를 판독하는 서비스, 클라우드 기반 데이터 스토어에 유지되는 데이터를 통해 검색하는 서비스, 클라우드 기반 데이터 스토어 내의 데이터를 편집하는 서비스, 클라우드 기반 데이터 스토어로부터 데이터를 삭제하는 서비스 등을 포함할 수 있다. 이전 접근법은 웹 프로그래머에게 시간 소모적일 수 있다. 또한, 그러한 개발은 다양한 프로토콜, 데이터 구조 등의 중요한 이해를 수반할 수 있다.
대조적으로, 스크립팅 언어 기반 프레임워크(102)는 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)와 통합된다. 또한, 스크립팅 언어 기반 프레임워크(102)는 애플리케이션(116)에 포함된 스크립팅 언어 코드의 함수로서 관리될 수 있는 한 세트의 컨트롤(112)을 포함한다. 또한, 컨트롤(112)은 클라우드 기반 백엔드 시스템(예를 들어, 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108))에 액세스하기 위해 스크립팅 언어 기반 프레임워크(102) 내에 사전 프로그램될 수 있다. 따라서, 웹 프로그래머가 사용자 인터페이스 개발 뿐만 아니라 백엔드 프로그래밍의 범위를 수행해야 하는 것 대신에, 웹 프로그래머는 스크립팅 언어 기반 프레임워크(102)의 컨트롤(112)을 관리하기 위해 스크립팅 언어 코드 및/또는 마크업 언어 코드를 기록할 수 있으며, 이는 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)의 리치 백엔드(rich backend)에 통합된다.
이제 도 2를 참조하면, 제3자 서비스를 이용하는 웹 애플리케이션의 개발을 용이하게 하는 시스템(200)이 예시된다. 시스템(200)은 스크립팅 언어 기반 프레임워크(102)를 포함하며, 이 프레임워크는 데이터 액세스 구성요소(104), UI 생성 구성요소(106), 한 세트의 컨트롤(112), 및 인터페이스 구성요소(114)를 더 포함할 수 있다. 상술한 바와 같이, 데이터 액세스 구성요소(104)는 API(122)를 통해 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)에 직접 액세스할 수 있다.
또한, 하나 이상의 제3자 서비스는 스크립팅 언어 기반 프레임워크(102)에 직접 통합될 수 있다. 따라서, 제3자 서비스(1 202),..., 및 제3자 서비스(M 204)(본 명세서에서 제3자 서비스(202-204)로 집합적으로 지칭되는)의 API는 스크립팅 언어 기반 프레임워크(102)의 데이터 액세스 구성요소(104)에 노출될 수 있으며, M은 실질적으로 임의의 정수일 수 있다. 스크립팅 언어 기반 프레임워크(102)는 제3자 서비스(202-204)의 API를 추상화할 수 있다. 따라서, 애플리케이션(116)은 컨트롤(112) 중 하나 이상을 관리하는 스크립팅 언어 코드를 포함할 수 있으며, 컨트롤(112)은 애플리케이션(116)의 웹 프로그래머가 하나 이상의 제3자 서비스(202-204)의 API에 대한 데이터 구조, 프로토콜 등을 알 필요없이 데이터 액세스 구성요소(104)가 제3자 서비스(202-204) 중 하나 이상을 이용하게 할 수 있다. 따라서, 웹 프로그래머는 그러한 통합이 스크립팅 언어 기반 프레임워크(102)에 포함되므로 애플리케이션(116)을 개발할 때 하나 이상의 제3자 서비스(202-204)에 액세스하는 코드를 기록할 필요가 없다.
제3자 서비스(202-204)의 예는 웹 검색 서비스, 이미지 검색 서비스, 비디오 검색 서비스, 소셜 네트워킹 서비스, 마이크로블로깅 서비스, 매핑 서비스, 반구조화 데이터베이스 검색 서비스, 인증 서비스, 클라우드 플랫폼 서비스 등을 포함할 수 있다. 또한, 청구된 발명 대상은 제3자 서비스(202-204)의 이전 예에 제한되지 않는다. 일 예에 따르면, 제3자 서비스는 분산 데이터 스토어(108) 및 데이터 액세스 구성요소(104) 둘 다에 통합될 수 있다(예를 들어, 제3자 서비스는 제3자 서비스(124-126) 중 하나 및 제3자 서비스(202-204) 중 하나일 수 있다). 부가적으로 또는 대안으로, 제3자 서비스는 분산 데이터 스토어(108) 또는 데이터 액세스 구성요소(104)에 통합될 수 있다(예를 들어, 제3자 서비스는 제3자 서비스(124-126) 중 하나 또는 제3자 서비스(202-204) 중 하나일 수 있다).
예로서, 클라이언트 장치(예를 들어, 애플리케이션(116)을 실행하는 장치)의 인터넷 프로토콜(IP) 어드레스가 (예를 들어, IP 어드레스에 관련된 콘텐츠를 리턴하기 위해) 제3자 서비스에 제공될 때, 컨트롤(예를 들어, 컨트롤(112)로부터의)은 IP 어드레스를 제3자 서비스에 간접적으로 전달하는 것보다는 오히려 데이터 액세스 구성요소(104)가 IP 어드레스를 제3자 서비스에 직접 공급하게 할 수 있다. 따라서, 데이터 액세스 구성요소(104)는 IP 어드레스를 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108)를 통해 액세스 가능한 제3자 서비스(124-126) 중 하나 이상에 송신하는 것보다는 오히려 IP 어드레스를 거기에 직접 통합된 제3자 서비스(202-204) 중 하나 이상에 송신할 수 있다.
이제 도 3을 참조하면, 스크립팅 언어 기반 프레임워크(102)를 사용하여 애플리케이션(116)을 개발하는 시스템(300)이 예시된다. 스크립팅 언어 기반 프레임워크(102)는 클라우드 기반 백엔드 시스템(들)(예를 들어, 도 1의 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108), 도 2의 제3자 서비스(202-204) 등)에 액세스할 수 있는 데이터 액세스 구성요소(104), 사용자 인터페이스를 생성하는 UI 생성 구성요소(106), 및 애플리케이션(116)과 인터페이스될 수 있는 인터페이스 구성요소(114)를 포함한다.
또한, 스크립팅 언어 기반 프레임워크(102)는 컨트롤(112)을 포함한다. 컨트롤(112)은 예를 들어 MVC(model-view-controller) 모델에 기초할 수 있다. 컨트롤(112)은 애플리케이션(116)에 포함된 스크립팅 언어 코드의 함수로 인에이블되거나 디스에이블될 수 있다. 예를 들어, 컨트롤(112) 중 하나 이상이 애플리케이션(116)에서 인에이블될 때, 인에이블된 컨트롤(112)은 UI 생성 구성요소(106)가 사용자 인터페이스(들)를 생성하게 할 수 있다. 또한, 컨트롤(112)은 그것에 적용될 수 있는 특징 및 효과의 범위를 가질 수 있다. 일 예시에 따르면, 컨트롤(112) 중 하나 이상은 애플리케이션(116)에 포함된 스크립팅 언어 코드에 기초하여 양식화될 수 있다. 예를 들어, 컨트롤(112) 중 하나 이상은 UI 생성 구성요소(106)가 클라이언트 장치의 디스플레이 상에 렌더링된 사용자 인터페이스(들)를 애니메이션하게 하기 위해 애플리케이션(116)에 의해 관리될 수 있다. 가능한 애니메이션은 스크립팅 언어 기반 프레임워크(102)에 포함된 컨트롤(112)에 통합될 수 있다. 추가 예에 따라, 스크립팅 언어 기반 프레임워크(102)에 포함된 컨트롤(112)은 서로 종속성을 가질 수 있으며, 이러한 예에 이어, 컨트롤(112) 사이의 종속성은 UI 생성 구성요소(106)가 리치 애니메이션을 생성된 사용자 인터페이스(들)에 제공하는 것을 허용할 수 있다. 다른 예로서, 컨트롤(112)은 예를 들어 명칭, 제목 등과 같은 다수의 특징을 가질 수 있다.
일 예에 따라, 컨트롤(112) 중 하나 이상은 애플리케이션(116)에 대한 인증을 관리할 수 있다. 예를 들어, 애플리케이션(116)은 한 세트의 이용 가능 인증 기법(예를 들어, 상이한 제3자 서비스에 의해 제공되는)으로부터 인증 기법을 선택하는 스크립팅 언어 코드를 포함할 수 있다. 그 후에, 선택된 인증 기법은 백엔드(예를 들어, 도 1의 클라우드 플랫폼(110) 상의 분산 데이터 스토어(108))로부터 프런트엔드를 통해 시스템에 이용될 수 있다.
또한, UI 생성 구성요소(106)는 애플리케이션(116)이 실행되고 있는 클라이언트 장치의 능력을 검출하고 컨트롤(112) 중 하나 이상에 기초하여 생성된 사용자 인터페이스를 검출된 능력의 함수로서 수정할 수 있는 테일러링(tailoring) 구성요소(302)를 포함할 수 있다. 예를 들어, 애플리케이션(116)이 스마트폰 상에 로드되면, 테일러링 구성요소(302)는 클라이언트 장치가 카메라 및 마이크로폰을 포함하는 것을 검출할 수 있다. 이 예에 따르면, 테일러링 구성요소(302)는 스마트폰의 카메라 및 마이크로폰에 관련된 특징을 포함하기 위해 컨트롤(112) 중 하나 이상에 기초하여 UI 생성 구성요소(106)에 의해 생성되는 사용자 인터페이스를 수정할 수 있는 반면, 그러한 특징은 테일러링 구성요소(302)가 클라이언트 장치가 카메라 및 마이크로폰이 없는 것을 검출할 때 UI 생성 구성요소(106)에 의해 생성되는 사용자 인터페이스에서 생략될 수 있다. 테일러링 구성요소(302)를 포함함으로써, 스크립팅 언어 기반 프레임워크(102)는 애플리케이션(116)이 실행되고 있는 클라이언트 장치의 능력을 애플리케이션(116)이 이용가능하게 할 수 있다. 또한, 애플리케이션(116)은 다양한 타입의 장치를 지원하기 위해 웹 프로그래머에 의한 코딩 없이 스크립팅 언어 기반 프레임워크(102)에 통합된 테일러링 구성요소(302)를 이용함으로써 이동 장치, 데스크톱, 랩톱 등에 걸쳐 동작될 수 있다.
UI 생성 구성요소(106)는 애플리케이션(116)의 특징을 단계적으로 롤아웃(rollout)할 수 있는 플라이팅(flighting) 구성요소(304)를 더 포함할 수 있다. 예를 들어, 웹 프로그래머는 특정 사용자 서브세트가 애플리케이션(116)의 특징에 액세스할 수 있는 것을 소망할 수 있다. 따라서, 플라이팅 구성요소(304)는 애플리케이션(116)의 사용자의 나머지에 대해 생성된 사용자 인터페이스(들)에 특징을 숨기는 동안 사용자 서브세트에 대해 생성된 사용자 인터페이스(들)에 애플리케이션(116)의 특징을 제공할 수 있다. 스크립팅 언어 기반 프레임워크(102) 내의 플라이팅 구성요소(304)를 포함함으로써, 애플리케이션(116)의 특징의 스태거드(staggered) 롤아웃을 인에이블하는 맞춤형 코드는 웹 프로그래머에 의해 기록될 필요가 없다.
또한, 스크립팅 언어 기반 프레임워크(102)는 컨트롤(112)로부터 통지를 수신하고 통지를 컨트롤에 송신하는 통지 구성요소(306)를 포함할 수 있다. 따라서, 스크립팅 언어 기반 프레임워크(102)에서, 통지 구성요소(306)는 컨트롤(112) 사이에서 정보를 교환할 수 있으며, 이는 컨트롤(112) 사이에서 종속성을 갖는 것을 허용할 수 있다. 본 예에 따르면, 애플리케이션(116)은 스크립팅 언어 쉘(shell)일 수 있으며, 이는 호들을 복수의 컨트롤(112)에 생성하는 스크립팅 언어 코드를 포함할 수 있다. 이러한 예시에 이어, 애플리케이션(116) 내에 호출되는 복수의 컨트롤(112)은 통지 구성요소(306)로부터 쉘 와이드(shell-wide) 통지를 수신함으로써, 복수의 컨트롤(112) 사이에서 상호 작용을 용이하게 할 수 있다.
예를 들어, 2개의 컨트롤(예를 들어, 컨트롤(112)로부터의)이 웹페이지 상에 포함될 수 있으며, 하나의 컨트롤은 명칭의 리스트 뷰일 수 있고 다른 컨트롤은 예를 들어 상세한 뷰일 수 있다. 이 예에 따르면, 2개의 컨트롤은 통지 구성요소(306)를 통해 정보를 교환할 수 있다. 따라서, 예를 들어, 명칭이 리스트 뷰에서 선택(예를 들어, 클릭 온)되면, 상세 뷰가 리스트 뷰에서 선택된 명칭에 상응하는 상세를 나타낼 수 있다. 또한, 통지 구성요소(306)는 이벤트 체이닝(event chaining)을 달성하기 위해 컨트롤(112)에 의해 사용되는 정보를 교환할 수 있다. 따라서, 컨트롤(112)의 작용은 이벤트(예를 들어, 데이터를 로드하는 것, 트랜잭션을 처리하는 것, 애니메이션의 완료, 수신된 사용자 입력 등)에 기초하여 체이닝될 수 있다.
또한, 데이터 액세스 구성요소(104)는 컨트롤(112)을 데이터 소스(예를 들어, 클라우드 기반 백엔드 시스템(들))에 결합할 수 있는 소스 결합 구성요소(308)를 포함할 수 있다. 일 예에 따르면, 소스 결합 구성요소(308)는 컨트롤(112) 중 2개를 상이한 소스로부터의 객체에 결합할 수 있다. 이러한 예에 따르면, 소스 결합 구성요소(308)는 컨트롤(112) 중 하나를 제 1 소셜 네트워킹 서비스로부터의 객체에 결합하고, 컨트롤(112) 중 다른 것을 제 2 소셜 네트워킹 서비스로부터의 객체에 결합할 수 있지만, 청구된 발명 대상은 이들 예에 제한되지 않는다는 점이 이해되어야 한다. 소스 결합 구성요소(308)는 컨트롤(112)을 상이한 데이터 소스에 결합할 수 있으므로, 데이터 액세스 구성요소(104)는 다양한 데이터 소스로부터의 정보에 대한 정규화된 스키마를 이용할 수 있다. 그러한 스키마의 정규화는 컨트롤(112) 사이에서 정보의 유연한 교환을 허용할 수 있다. 다양한 실시예에서, 소스 결합 구성요소(308)는 컨트롤(112) 중 하나 이상을 개방 데이터 프로토콜(open data protocol(ODdata)) 소스에 결합할 수 있지만, 청구된 발명 대상은 그렇게 제한되지 않는다는 점이 이해되어야 한다.
도 4 및 도 5는 스크립팅 언어 기반 프레임워크를 사용하여 웹 애플리케이션을 개발하는 것과 관련되는 예시적 방법을 예시한다. 방법은 순차적으로 수행되는 일련의 액트인 것으로 도시되고 설명되지만, 방법은 시퀀스의 순서에 의해 제한되지 않는다는 점이 이해되고 인식되어야 한다. 예를 들어, 일부 액트는 본 명세서에 설명된 것과 상이한 순서로 발생할 수 있다. 또한, 액트는 다른 액트와 동시에 발생할 수 있다. 또한, 일부 경우에, 반드시 모든 액트는 본 명세서에 설명된 방법을 구현하도록 요구되지 않는다.
또한, 본 명세서에 설명된 액트는 하나 이상의 프로세서에 의해 구현되고/되거나 컴퓨터 판독 가능 매체 또는 매체들 상에 저장될 수 있는 컴퓨터 실행 가능 명령어일 수 있다. 컴퓨터 실행 가능 명령어는 루틴, 서브루틴, 프로그램, 실행 스레드 등을 포함할 수 있다. 또한, 방법의 액트의 결과는 컴퓨터 판독 가능 매체 내에 저장될 수 있거나, 디스플레이 장치 상에 디스플레이될 수 있거나 할 수 있다.
도 4는 웹 애플리케이션을 개발하는 방법(400)을 예시한다. 402에서, 스크립팅 언어 기반 프레임워크에 대한 인터페이스가 노출될 수 있다. 404에서, 호는 인터페이스를 통해 수신될 수 있다. 인터페이스를 통해 수신된 호는 스크립팅 언어 기반 프레임워크에 포함된 컨트롤을 관리할 수 있다. 또한, 호는 스크립팅 언어 기반 프레임워크를 참조하는 애플리케이션에 의해 제공될 수 있다. 예를 들어, 호는 컨트롤을 인에이블하고, 컨트롤을 디스에이블하고, 컨트롤의 특징 또는 효과를 설정하는 등을 할 수 있다. 406에서, 사용자 인터페이스는 호에 의해 관리되는 바와 같이 컨트롤에 기초하여 생성될 수 있다. 408에서, 클라우드 플랫폼 상의 분산 데이터 스토어에 의해 제공되는 백엔드 클라우드 기반 서비스는 호에 의해 관리되는 바와 같이 컨트롤에 기초하여 액세스될 수 있다.
이제 도 5를 참조하면, 웹 애플리케이션을 개발하는 방법(500)이 예시된다. 502에서, 인에이블될 때 백엔드 클라우드 기반 서비스에 액세스되고 사용자 인터페이스를 생성하도록 사전 프로그램된 한 세트의 컨트롤을 포함하는 스크립팅 언어 기반 프레임워크에 대한 인터페이스가 노출될 수 있다. 504에서, 스크립팅 언어 기반 프레임워크에 포함된 한 세트의 컨트롤로부터 컨트롤을 인에이블하는 호는 인터페이스를 통해 수신될 수 있다. 호는 스크립팅 언어 기반 프레임워크를 참조하는 애플리케이션에 의해 제공될 수 있다. 506에서, 사용자 인터페이스는 호에 의해 인에이블되는 컨트롤에 기초하여 생성될 수 있다. 508에서, 클라우드 플랫폼 상의 분산 데이터 스토어에 의해 제공되는 백엔드 클라우드 기반 서비스는 호에 의해 인에이블되는 컨트롤에 기초하여 액세스될 수 있다.
이제 도 6을 참조하면, 본 명세서에 개시된 시스템 및 방법에 따라 사용될 수 있는 예시적 컴퓨팅 장치(600)의 고급 실례가 예시된다. 예를 들어, 컴퓨팅 장치(600)는 스크립팅 언어 기반 프레임워크를 사용하여 웹 애플리케이션을 개발하는 시스템에 사용될 수 있다. 다른 예로서, 컴퓨팅 장치(600)는 스크립팅 언어 기반 프레임워크 상에 구축된 웹 애플리케이션을 실행하는 시스템에 사용될 수 있다. 컴퓨팅 장치(600)는 메모리(604)에 저장된 명령어를 실행하는 적어도 하나의 프로세서(602)를 포함한다. 명령어는 예를 들어 상기 논의된 하나 이상의 구성요소에 의해 수행되는 것으로 설명되는 기능을 구현하는 명령어 또는 상술된 방법 중 하나 이상을 구현하는 명령어일 수 있다. 프로세서(602)는 시스템 버스(606)를 통해 메모리(604)에 액세스할 수 있다. 실행 가능 명령어를 저장하는 것에 부가하여, 메모리(604)는 또한 애플리케이션, 스크립팅 언어 기반 프레임워크 등을 저장할 수 있다.
컴퓨팅 장치(600)는 시스템 버스(606)로서 프로세서(602)에 의해 액세스 가능한 데이터 스토어(608)를 부가적으로 포함한다. 데이터 스토어(608)는 실행 가능 명령어, 애플리케이션, 스크립팅 언어 기반 프레임워크 등을 포함할 수 있다. 컴퓨팅 장치(600)는 또한 외부 장치가 컴퓨팅 장치(600)와 통신하는 것을 허용하는 입력 인터페이스(610)를 포함한다. 예를 들어, 입력 인터페이스(610)는 외부 컴퓨터 장치, 사용자 등으로부터 명령을 수신하기 위해 사용될 수 있다. 컴퓨팅 장치(600)는 또한 컴퓨팅 장치(600)를 하나 이상의 외부 장치와 인터페이스시키는 출력 인터페이스(612)를 포함한다. 예를 들어, 컴퓨팅 장치(600)는 출력 인터페이스(612)로서 텍스트, 이미지 등을 디스플레이할 수 있다.
부가적으로, 단일 시스템으로 예시되지만, 컴퓨팅 장치(600)는 분산 시스템일 수 있다는 점이 이해되어야 한다. 따라서, 예를 들어, 수개의 장치는 네트워크 연결을 통해 통신할 수 있고 컴퓨팅 장치(600)에 의해 수행되는 것으로 설명되는 작업을 집합적으로 수행할 수 있다.
본 명세서에 사용된 바와 같이, 용어 "구성요소" 및 "시스템"은 프로세서에 의해 실행될 때 특정 기능이 수행되게 하는 컴퓨터 실행 가능 명령어로 구성되는 컴퓨터 판독 가능 데이터 스토리지를 포함하도록 의도된다. 컴퓨터 실행 가능 명령어는 루틴, 기능 등을 포함할 수 있다. 또한, 구성요소 또는 시스템은 단일 장치 상에 국부화되거나 수개의 장치에 걸쳐 분산될 수 있다는 점이 이해되어야 한다.
또한, 본 명세서에 사용된 바와 같이, 용어 "예시적"은 "어떤 것의 실례 또는 예의 역할을 하는"을 의미하도록 의도된다.
본 명세서에 설명된 다양한 기능은 하드웨어, 소프트웨어, 또는 그것의 임의의 조합으로 구현될 수 있다. 소프트웨어로 구현되면, 기능은 컴퓨터 판독 가능 매체 상의 하나 이상의 명령어 또는 코드로서 저장되거나 송신될 수 있다. 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 저장 매체를 포함한다. 컴퓨터 판독 가능 저장 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 이용 가능 저장 매체일 수 있다. 제한이 아닌 예로서, 그러한 컴퓨터 판독 가능 저장 매체는 RAM, ROM, EEPROM, CD-ROM 또는 다른 광 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 저장 장치, 또는 원하는 프로그램 코드를 명령어 또는 데이터 구조의 형태로 전달하거나 저장하기 위해 사용될 수 있고 컴퓨터에 의해 액세스될 수 있는 임의의 다른 매체를 포함할 수 있다. 디스크(Disk 및 disc)는 본 명세서에 사용된 바와 같이, CD(compact disc), 레이저 디스크, 광 디스크, DVD(digital versatile disc), 플로피 디스크, 및 BD(blu-ray disc)를 포함하며, 디스크(disk)는 통상 데이터를 자기적으로 재생하고 디스크(disc)는 통상 데이터를 레이저에 의해 광학적으로 재생한다. 또한, 전파 신호는 컴퓨터 판독 가능 저장 매체의 범위 내에 포함되지 않는다. 컴퓨터 판독 가능 매체는 또한 한 곳으로부터 다른 곳으로 컴퓨터 프로그램의 전송을 용이하게 하는 임의의 매체를 포함하는 통신 매체를 포함한다. 연결은 예를 들어 통신 매체일 수 있다. 예를 들어, 소프트웨어가 웹사이트, 서버, 또는 동축 케이블, 광 섬유 케이블, 트위스트 페어(twisted pair), DSL(digital subscriber line)을 사용하는 다른 리모트 소스, 또는 적외선, 라디오, 및 마이크웨이브와 같은 무선 기술로부터 송신되면, 이 때 동축 케이블, 광 섬유 케이블, 트위스트 페어, DSL, 또는 적외선, 라디오, 및 마이크로웨이브와 같은 무선 기술은 통신 매체의 정의에 포함된다. 상술한 조합은 또한 컴퓨터 판독 가능 매체의 범위 내에 포함되어야 한다.
상술한 것은 하나 이상의 실시예의 예를 포함한다. 물론, 상술한 양태를 설명할 목적으로 상기 장치 또는 방법의 모든 생각 가능한 수정 및 변경을 설명하는 것이 불가능하지만, 당업자는 다양한 양태의 더 많은 수정 및 순열이 가능하다는 점을 인식할 수 있다. 따라서, 설명된 양태는 첨부된 청구범위의 사상 및 범위 내에 있는 모든 그러한 변경, 수정, 및 변형을 포함하도록 의도된다. 또한, 용어 "포함한다(includes)"가 상세한 설명 또는 청구범위에 사용되는 범위에서, 그러한 용어는 "포함하는(comprisinig)"이 청구항 내의 전이어(transitional word)로 이용될 때 포함하는(comprising)으로 해석되는 것과 유사한 방식으로 포괄적이도록 의도된다.

Claims (20)

  1. 컴퓨팅 장치의 프로세서에 의해 수행되는 방법으로서,
    스크립팅 언어 기반 프레임워크(scripting language-based framework)의 일부로서 컨트롤을 노출하는 단계와,
    상기 컨트롤에 대한 하나 이상의 호(call)를 수신하는 단계와,
    상기 컨트롤에 대한 하나 이상의 호에 응답하여, 사용자 인터페이스가 디스플레이될 클라이언트 장치의 검출된 하드웨어 능력(hardware capability)에 기초하여 상기 사용자 인터페이스가 테일러링(tailoring)되도록 상기 사용자 인터페이스의 생성을 관리하는 단계와,
    상기 컨트롤에 대한 하나 이상의 호에 응답하여 클라우드 플랫폼 상의 클라우드 기반 서비스에 대한 액세스를 관리하는 단계 - 상기 컨트롤은 인에이블될 때 상기 클라우드 플랫폼 상의 상기 클라우드 기반 서비스에 액세스하고 상기 사용자 인터페이스를 생성하도록 사전 프로그램되고, 상기 컨트롤에 대한 하나 이상의 호는 상기 컨트롤을 인에이블함 - 를 포함하는
    방법.
  2. 제 1 항에 있어서,
    상기 클라우드 기반 서비스는 분산 데이터 플랫폼에 의해 제공되는
    방법.
  3. 제 1 항에 있어서,
    상기 스크립팅 언어 기반 프레임워크는 상기 클라이언트 장치의 상기 하드웨어 능력을 검출하도록 구성되는
    방법.
  4. 제 1 항에 있어서,
    상기 컨트롤에 대한 하나 이상의 호에 응답하여 사용자 인터페이스의 생성을 관리하는 단계는, 상기 컨트롤에 대한 하나 이상의 호에 응답하여 상기 사용자 인터페이스의 특성(property) 또는 효과를 관리하는 단계를 더 포함하는
    방법.
  5. 제 1 항에 있어서,
    상기 컨트롤에 대한 하나 이상의 호에 응답하여 사용자 인터페이스의 생성을 관리하는 단계는, 상기 컨트롤에 대한 하나 이상의 호에 응답하여 애니메이션을 관리하는 단계를 더 포함하는
    방법.
  6. 제 1 항에 있어서,
    상기 컨트롤에 대한 하나 이상의 호는, 제 1 사용자에게 숨겨지고 제 2 사용자에게 보이는 사용자 인터페이스 특징을 관리하는
    방법.
  7. 제 1 항에 있어서,
    상기 스크립팅 언어 기반 프레임워크의 일부로서 제 2 컨트롤을 노출하는 단계와,
    상기 제 2 컨트롤에 대한 하나 이상의 호를 수신하는 단계와,
    상기 제 2 컨트롤에 대한 하나 이상의 호에 응답하여 제 2 사용자 인터페이스의 생성을 관리하는 것, 또는
    상기 제 2 컨트롤에 대한 하나 이상의 호에 응답하여 상기 클라우드 플랫폼 상의 제 2 클라우드 기반 서비스에 대한 액세스를 관리하는 것
    중 적어도 하나를 수행하는 단계를 더 포함하는
    방법.
  8. 제 7 항에 있어서,
    상기 컨트롤과 상기 제 2 컨트롤 사이에서 이벤트 정보를 교환하는 단계와,
    상기 이벤트 정보에 기초하여 상기 컨트롤 및 상기 제 2 컨트롤에 의해 관리되는 작용들(behaviors)을 체이닝(chaining)하는 단계를 더 포함하는
    방법.
  9. 제 7 항에 있어서,
    상기 제 2 컨트롤은 상기 컨트롤에 대한 종속성(dependency)을 갖는
    방법.
  10. 제 1 항에 있어서,
    상기 클라우드 기반 서비스는 웹 검색 서비스, 이미지 검색 서비스, 비디오 검색 서비스, 소셜 네트워킹 서비스, 마이크로블로깅(microblogging) 서비스, 매핑 서비스, 또는 반구조화(semi-structured) 데이터베이스 검색 서비스 중 적어도 하나인
    방법.
  11. 제 1 항에 있어서,
    상기 사용자 인터페이스는 선택적으로 숨겨지거나 보이도록 테일러링되는
    방법.
  12. 제 1 항에 있어서,
    상기 컨트롤은, 상기 컨트롤에 대한 하나 이상의 호에 응답하여 선택된 인증 기법을 사용하여 상기 클라우드 기반 서비스에 대한 인증을 관리하는
    방법.
  13. 장치로서,
    적어도 하나의 프로세서와,
    상기 적어도 하나의 프로세서에 연결되고, 스크립팅 언어 기반 프레임워크를 구현하도록 구성된 명령어를 저장하는 메모리를 포함하되,
    상기 스크립팅 언어 기반 프레임워크는 상기 스크립팅 언어 기반 프레임워크의 일부로서 노출된 컨트롤을 포함하고, 상기 컨트롤은 하나 이상의 호를 수신하고,
    상기 컨트롤은 사용자 인터페이스가 디스플레이될 클라이언트 장치의 검출된 하드웨어 능력에 기초하여 상기 사용자 인터페이스가 테일러링되도록 상기 사용자 인터페이스의 생성을 관리하고, 상기 스크립팅 언어 기반 프레임워크는 상기 클라이언트 장치의 상기 하드웨어 능력을 검출하도록 구성되며,
    상기 컨트롤은 상기 하나 이상의 호에 응답하여 클라우드 플랫폼 상의 클라우드 기반 서비스에 액세스하고,
    인에이블될 때 상기 클라우드 플랫폼 상의 상기 클라우드 기반 서비스에 액세스하도록 상기 스크립팅 언어 기반 프레임워크의 컨트롤이 구성되도록, 상기 스크립팅 언어 기반 프레임워크는 사전 프로그램되고,
    상기 컨트롤에 대한 하나 이상의 호는 상기 컨트롤을 인에이블하는
    장치.
  14. 제 13 항에 있어서,
    상기 스크립팅 언어 기반 프레임워크는 또한, 인에이블될 때 상기 사용자 인터페이스를 생성하도록 상기 컨트롤이 구성되도록 사전 프로그램되는
    장치.
  15. 제 13 항에 있어서,
    상기 클라우드 기반 서비스는 웹 검색 서비스, 이미지 검색 서비스, 비디오 검색 서비스, 소셜 네트워킹 서비스, 마이크로블로깅 서비스, 매핑 서비스, 또는 반구조화 데이터베이스 검색 서비스 중 적어도 하나인
    장치.
  16. 제 13 항에 있어서,
    상기 컨트롤은 상기 하나 이상의 호에 응답하여 상기 사용자 인터페이스의 특성 또는 효과를 관리하는
    장치.
  17. 제 13 항에 있어서,
    상기 하나 이상의 호에 응답하여, 상기 컨트롤은 제 1 사용자에게 숨겨지고 제 2 사용자에게 보이는 상기 사용자 인터페이스의 사용자 인터페이스 특징을 관리하는
    장치.
  18. 제 13 항에 있어서,
    상기 컨트롤은, 상기 컨트롤에 대한 하나 이상의 호에 응답하여 선택된 인증 기법을 사용하여 상기 클라우드 기반 서비스에 대한 인증을 관리하는
    장치.
  19. 컴퓨터 실행 가능 명령어를 포함하는 컴퓨터 판독가능 저장 매체로서,
    상기 컴퓨터 실행 가능 명령어는 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금,
    스크립팅 언어 기반 프레임워크의 일부로서 컨트롤을 노출하는 것과,
    상기 컨트롤에 대한 하나 이상의 호를 수신하는 것과,
    상기 컨트롤에 대한 하나 이상의 호에 응답하여, 사용자 인터페이스가 디스플레이될 클라이언트 장치의 검출된 하드웨어 능력에 기초하여 상기 사용자 인터페이스가 테일러링되도록 상기 사용자 인터페이스의 생성을 관리하는 것과,
    상기 컨트롤에 대한 하나 이상의 호에 응답하여 클라우드 플랫폼 상의 클라우드 기반 서비스에 대한 액세스를 관리하는 것 - 상기 컨트롤은 인에이블될 때 상기 클라우드 플랫폼 상의 상기 클라우드 기반 서비스에 액세스하고 상기 사용자 인터페이스를 생성하도록 사전 프로그램되고, 상기 컨트롤에 대한 하나 이상의 호는 상기 컨트롤을 인에이블함 -
    을 포함하는 동작을 수행하게 하는
    컴퓨터 판독가능 저장 매체.
  20. 제 19 항에 있어서,
    상기 컴퓨터 실행 가능 명령어는 상기 적어도 하나의 프로세서에 의해 실행될 때, 상기 적어도 하나의 프로세서로 하여금 또한,
    상기 컨트롤에 대한 하나 이상의 호에 응답하여 상기 클라우드 플랫폼 상의 제 2 클라우드 기반 서비스에 대한 액세스를 관리하는 것과,
    상기 컨트롤에 대한 하나 이상의 호에 응답하여 제 2 사용자 인터페이스의 생성을 관리하는 것
    을 포함하는 동작을 수행하게 하는
    컴퓨터 판독가능 저장 매체.
KR1020197017733A 2011-12-12 2012-12-12 웹 애플리케이션을 위한 경량 프레임워크 KR102082092B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/323,198 2011-12-12
US13/323,198 US8671417B2 (en) 2011-12-12 2011-12-12 Lightweight framework for web applications
PCT/US2012/069318 WO2013090476A1 (en) 2011-12-12 2012-12-12 Lightweight framework for web applications

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020147015889A Division KR101993944B1 (ko) 2011-12-12 2012-12-12 웹 애플리케이션을 위한 경량 프레임워크

Publications (2)

Publication Number Publication Date
KR20190077106A KR20190077106A (ko) 2019-07-02
KR102082092B1 true KR102082092B1 (ko) 2020-02-26

Family

ID=48573294

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020197017733A KR102082092B1 (ko) 2011-12-12 2012-12-12 웹 애플리케이션을 위한 경량 프레임워크
KR1020147015889A KR101993944B1 (ko) 2011-12-12 2012-12-12 웹 애플리케이션을 위한 경량 프레임워크

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020147015889A KR101993944B1 (ko) 2011-12-12 2012-12-12 웹 애플리케이션을 위한 경량 프레임워크

Country Status (6)

Country Link
US (2) US8671417B2 (ko)
EP (1) EP2791822A4 (ko)
JP (1) JP6137505B2 (ko)
KR (2) KR102082092B1 (ko)
CN (1) CN103988200B (ko)
WO (1) WO2013090476A1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8671417B2 (en) 2011-12-12 2014-03-11 Microsoft Corporation Lightweight framework for web applications
US8943086B2 (en) * 2012-06-29 2015-01-27 Sap Se Model-based backend service adaptation of business objects
US9195477B1 (en) * 2012-10-09 2015-11-24 Sencha, Inc. Device profiles, deep linking, and browser history support for web applications
US9886424B2 (en) 2013-08-30 2018-02-06 Wal-Mart Stores, Inc. Web application framework for extracting content
JP2015114892A (ja) * 2013-12-12 2015-06-22 株式会社リコー サービス提供システム及びサービス提供方法
CN103957255B (zh) * 2014-04-30 2017-08-25 华南理工大学 一种轻量级应用开发云服务平台及其资源的访问方法
US10185706B2 (en) 2014-10-10 2019-01-22 Aktiebolaget Skf Generating web browser views for applications
CN106708483B (zh) * 2015-07-31 2020-01-31 腾讯科技(深圳)有限公司 物联网设备的控制界面的生成方法及生成装置
US10375072B2 (en) 2015-11-09 2019-08-06 Microsoft Technology Licensing, Llc Dashboard as remote computing services
KR20170110935A (ko) * 2016-03-24 2017-10-12 전자부품연구원 모바일 디바이스에서의 프레임워크
US10476860B1 (en) 2016-08-29 2019-11-12 Amazon Technologies, Inc. Credential translation
US10552442B1 (en) 2016-08-29 2020-02-04 Amazon Technologies, Inc. Stateful database application programming interface
US10572315B1 (en) * 2016-08-29 2020-02-25 Amazon Technologies, Inc. Application programming interface state management
EP3593254B1 (en) 2017-07-24 2023-08-02 Wix.com Ltd. Editing a database during preview of a virtual web page
CN112867989A (zh) * 2018-09-04 2021-05-28 阿韦瓦软件有限责任公司 基于流的组成以及监视服务器系统和方法
CN111294368A (zh) * 2018-12-06 2020-06-16 上海博泰悦臻电子设备制造有限公司 云服务器、智能客户端及其车主服务方法
CN109992267A (zh) * 2019-03-12 2019-07-09 厦门网宿有限公司 一种云应用的客户端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006512694A (ja) 2002-12-26 2006-04-13 リサーチ イン モーション リミテッド プラットホーム中立ジェネリックサービスのクライアントアプリケーションの構築及び実行のためのシステム及び方法
US20070006136A1 (en) 2005-04-25 2007-01-04 Hirschberg Peter D Providing a user interface
US20070106946A1 (en) 2005-11-07 2007-05-10 Philip Goetz Method and system for developing interactive Web applications in a unified framework
US20090313004A1 (en) 2008-06-16 2009-12-17 Real Dice Inc. Platform-Independent Application Development Framework
US20110191407A1 (en) 2010-01-22 2011-08-04 The Regents Of The University Of California Web application development framework

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7305550B2 (en) * 2000-12-29 2007-12-04 Intel Corporation System and method for providing authentication and verification services in an enhanced media gateway
US7546576B2 (en) 2001-06-15 2009-06-09 Lightsurf Technology, Inc. Software framework for web-based applications
US20040046789A1 (en) 2002-08-23 2004-03-11 Angelo Inanoria Extensible user interface (XUI) framework and development environment
US7523401B1 (en) * 2003-09-03 2009-04-21 Theoris Software, Llc System and method for providing a browser-based user interface
US8245049B2 (en) * 2004-06-14 2012-08-14 Microsoft Corporation Method and system for validating access to a group of related elements
US20070061488A1 (en) * 2004-09-20 2007-03-15 Trilibis Inc. System and method for flexible user interfaces
US8015543B1 (en) * 2007-01-10 2011-09-06 The Mathworks, Inc. Hardware specific code generation
US20090013246A1 (en) 2007-04-27 2009-01-08 Bea Systems, Inc. Web based application constructor using extensibility points for page components, page layouts/templates, security roles, shells, and associating data spaces with templates
JP5179822B2 (ja) * 2007-09-27 2013-04-10 株式会社日立ソリューションズ 携帯電話、携帯電話スクリプト開発・実行システム
US9195525B2 (en) * 2008-10-21 2015-11-24 Synactive, Inc. Method and apparatus for generating a web-based user interface
JP5237058B2 (ja) * 2008-11-11 2013-07-17 Jfeスチール株式会社 コンピュータシステム
US8627426B2 (en) 2010-04-26 2014-01-07 Vmware, Inc. Cloud platform architecture
CN102271121A (zh) * 2010-06-01 2011-12-07 铜陵玉成软件科技有限责任公司 面向业务模型的云计算开发平台实现方法
US20120036494A1 (en) * 2010-08-06 2012-02-09 Genwi, Inc. Web-based cross-platform wireless device application creation and management systems, and methods therefor
US8689181B2 (en) * 2010-11-23 2014-04-01 Axeda Corporation Scripting web services
US9626223B2 (en) * 2011-10-28 2017-04-18 Hewlett Packard Enterprise Development Lp Provisioning IaaS services
US8671417B2 (en) 2011-12-12 2014-03-11 Microsoft Corporation Lightweight framework for web applications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006512694A (ja) 2002-12-26 2006-04-13 リサーチ イン モーション リミテッド プラットホーム中立ジェネリックサービスのクライアントアプリケーションの構築及び実行のためのシステム及び方法
US20070006136A1 (en) 2005-04-25 2007-01-04 Hirschberg Peter D Providing a user interface
US20070106946A1 (en) 2005-11-07 2007-05-10 Philip Goetz Method and system for developing interactive Web applications in a unified framework
US20090313004A1 (en) 2008-06-16 2009-12-17 Real Dice Inc. Platform-Independent Application Development Framework
US20110191407A1 (en) 2010-01-22 2011-08-04 The Regents Of The University Of California Web application development framework

Also Published As

Publication number Publication date
CN103988200A (zh) 2014-08-13
JP2015501993A (ja) 2015-01-19
US20140149965A1 (en) 2014-05-29
CN103988200B (zh) 2018-05-29
KR20140101361A (ko) 2014-08-19
EP2791822A1 (en) 2014-10-22
WO2013090476A1 (en) 2013-06-20
US10387123B2 (en) 2019-08-20
KR101993944B1 (ko) 2019-06-27
JP6137505B2 (ja) 2017-05-31
EP2791822A4 (en) 2015-05-20
US20130152107A1 (en) 2013-06-13
US8671417B2 (en) 2014-03-11
KR20190077106A (ko) 2019-07-02

Similar Documents

Publication Publication Date Title
KR102082092B1 (ko) 웹 애플리케이션을 위한 경량 프레임워크
US11799984B2 (en) Installable web applications
US7698628B2 (en) Method and system to persist state
US8516037B2 (en) Methods for dynamic partitioning of applications in client-server environments
AU2014308856B2 (en) Opening unsupported file types through remoting sessions
US9400633B2 (en) Methods and apparatus for voiced-enabling a web application
US9781262B2 (en) Methods and apparatus for voice-enabling a web application
WO2020263415A1 (en) Voice assistant-enabled web application or web page
US10157612B2 (en) Methods and apparatus for voice-enabling a web application
US20140040746A1 (en) Methods and apparatus for voiced-enabling a web application
US9491266B2 (en) Representational state transfer communications via remote function calls
US20210097027A1 (en) Opening unsupported file types through remoting sessions
US20140040745A1 (en) Methods and apparatus for voiced-enabling a web application
US20130080506A1 (en) Remotely-hosted interactive client-server session
US11556608B2 (en) Caching for single page web applications
Belotserkovskiy et al. Building Web Services with Microsoft Azure
White et al. Workflows in Windows Azure

Legal Events

Date Code Title Description
A107 Divisional application of patent
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant