KR20140036229A - Techniques for adapting an interpretive run time application to multiple clients - Google Patents

Techniques for adapting an interpretive run time application to multiple clients Download PDF

Info

Publication number
KR20140036229A
KR20140036229A KR1020137033046A KR20137033046A KR20140036229A KR 20140036229 A KR20140036229 A KR 20140036229A KR 1020137033046 A KR1020137033046 A KR 1020137033046A KR 20137033046 A KR20137033046 A KR 20137033046A KR 20140036229 A KR20140036229 A KR 20140036229A
Authority
KR
South Korea
Prior art keywords
client
server
user interface
gui
application
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
KR1020137033046A
Other languages
Korean (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 KR20140036229A publication Critical patent/KR20140036229A/en
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • 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
    • 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/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • 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
    • 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/543User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/545Gui

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 Hardware Design (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

복수의 클라이언트로 해석 런타임 엔진을 적응시키기 위한 기법이 기재된다. 장치는 웹 클라이언트를 실행하도록 구성된 로직 장치를 포함할 수 있다. 상기 웹 클라이언트는, 클라이언트 사용자 인터페이스에 대한 사용자 이벤트를 검출하고, 상기 사용자 이벤트와 연관된 사용자 이벤트 속성의 변경을 서버 애플리케이션으로 전송하고, 그래픽 사용자 인터페이스(GUI) 독립적 객체 및 업데이트된 사용자 이벤트 속성을 상기 서버 애플리케이션으로부터 수신하며, 상기 서버 애플리케이션으로부터 수신된 GUI 독립적 객체 및 업데이트된 사용자 이벤트 속성을 이용해 클라이언트 사용자 인터페이스에 렌더링된 이미지를 업데이트하도록 동작하는 클라이언트 어댑터, 및 그 밖의 다른 요소를 포함할 수 있다. 그 밖의 다른 실시예가 기재되고 청구된다. Techniques for adapting the interpretation runtime engine to a plurality of clients are described. The device may comprise a logic device configured to execute a web client. The web client detects a user event for a client user interface, sends a change of a user event attribute associated with the user event to a server application, and sends a graphical user interface (GUI) independent object and an updated user event attribute to the server. Client adapters that receive from the application and operate to update the rendered image in the client user interface using GUI-independent objects and updated user event attributes received from the server application, and other elements. Other embodiments are described and claimed.

Description

해석 런타임 애플리케이션을 복수의 클라이언트에게 적용시키기 위한 기법{TECHNIQUES FOR ADAPTING AN INTERPRETIVE RUN TIME APPLICATION TO MULTIPLE CLIENTS}TECHNIQUES FOR ADAPTING AN INTERPRETIVE RUN TIME APPLICATION TO MULTIPLE CLIENTS

클라이언트-서버 아키텍처는 애플리케이션 프로그램에 대한 컴퓨팅 작업 또는 작업부하를 2개의 기본 개체들, 이른바, 서버와 클라이언트 간의 분할(partition)하는 분산 애플리케이션 구조이다. 서버는 자원 또는 서비스의 제공자이다. 클라이언트는 자원 또는 서비스의 요청자이다. 서버는 자신의 자원을 클라이언트와 공유하며 하나 이상의 서버 프로그램을 실행시키는 물리적 또는 논리적 장치이다. 클라이언트는 일반적으로 자신의 자원 중 어느 것도 공유하지 않고 서버로부터 콘텐츠 또는 서비스 기능을 요청하는 물리적 또는 논리적 장치이다. 일반적으로 클라이언트와 서버는 개별 하드웨어 상에서 컴퓨터 네트워크를 통해 통신한다. 그러나 일부 경우 클라이언트와 서버 모두 동일한 시스템에 상주할 수 있다. 따라서 클라이언트가 들어오는 요청(incoming request)을 기다리는 서버와의 통신 세션을 개시한다. The client-server architecture is a distributed application architecture that partitions computing tasks or workloads for application programs between two basic entities, the so-called server and the client. A server is a provider of resources or services. A client is a requester of a resource or service. A server is a physical or logical device that shares its resources with a client and runs one or more server programs. A client is typically a physical or logical device that requests content or service functionality from a server without sharing any of its resources. Typically, clients and servers communicate over a computer network on separate hardware. However, in some cases, both client and server can reside on the same system. Thus, the client initiates a communication session with the server waiting for an incoming request.

클라이언트-서버 아키텍처의 한 가지 형태는, 종종 n-티어 아키텍처(n-tier architecture)라고 일컬어지는 멀티-티어 아키텍처(multi-tier architecture)이다. n-티어 아키텍처는 애플리케이션 프로그램의 특정 양태가 복수의 티어(tier)로 분리되는 클라이언트-서버 아키텍처이다. 예를 들어, 사용자와 데이터베이스 간의 데이터 요청을 서비스하기 위해 미들웨어를 사용하는 애플리케이션은 멀티-티어 아키텍처를 채용한다. n-티어 애플리케이션 아키텍처는 개발자가 유연하고 재사용 가능한 애플리케이션을 생성하기 위한 모델을 제공한다. 애플리케이션을 복수의 티어로 분할함으로써, 개발자는 특정 티어(또는 계층(layer))를 수정 또는 추가하기만 하면 되며, 이로써 전체 애플리케이션을 다시 써야 할 필요성이 사라진다. Client-server architecture in one form is often n-tier architecture, a (multi-tier architecture)-tier architecture (architecture -tier n) multi-reputed. An n -tier architecture is a client-server architecture in which certain aspects of an application program are separated into multiple tiers. For example, applications that use middleware to service data requests between users and databases employ a multi-tier architecture. The n -tier application architecture provides a model for developers to create flexible and reusable applications. By dividing an application into multiple tiers, developers only need to modify or add specific tiers (or layers), thereby eliminating the need to rewrite the entire application.

n-티어 아키텍처는 애플리케이션 프로그램을 개발하고 수정할 때 많은 이점을 제공한다. 그러나 많은 수의 클라이언트가 존재하는 웹-기반 환경을 위해 n-티어 아키텍처를 구현하는 것에는 어려움이 있다. 각각의 클라이언트가 서로 다른 웹 기술, 가령, 서로 다른 웹 브라우저, 웹 서비스, 및 웹 애플리케이션을 이용할 수 있다. 덧붙여, 웹 기술은 여러 다른 유형의 기저 하드웨어 및 소프트웨어 아키텍처, 가령, 서로 다른 입출력(I/O) 구성요소, 폼 팩터, 파워 요건, 처리 능력, 통신 능력, 메모리 자원 등을 갖는 다양한 장치와 함께 동작하도록 설계된다. 따라서 이들 많은 이종(heterogeneous) 장치들 및 아키텍처들에 걸쳐 하나 이상의 티어를 구현하는 것이 어려울 수 있다. 덧붙여, 웹 버전(web version)의 애플리케이션 프로그램은 비-웹 버전의 애플리케이션 프로그램과 호환되지 않을 수 있으며, 이로써 각각에 대해 개별적인 소프트웨어 아키텍처가 필요하게 된다. 이러한 단점 및 그 밖의 다른 단점과 관련해, 본원의 개선사항이 필요하다.
The n- tier architecture offers many advantages when developing and modifying application programs. However, it is difficult to implement an n -tier architecture for a web-based environment with a large number of clients. Each client may use different web technologies, such as different web browsers, web services, and web applications. In addition, Web technologies work with a variety of devices with different types of underlying hardware and software architectures, such as different input / output (I / O) components, form factors, power requirements, processing power, communication capabilities, and memory resources. It is designed to. Thus, it may be difficult to implement one or more tiers across many of these heterogeneous devices and architectures. In addition, the web version of the application program may be incompatible with the non-web version of the application program, requiring a separate software architecture for each. With respect to these and other disadvantages, there is a need for improvements herein.

개요summary

이 개요는 이하의 구체적인 내용에서 더 기재될 개념들의 모음을 단순화된 형태로 소개하기 위해 제공된다. 이 개요는 청구되는 사항의 핵심적 특징 또는 본질적 특징을 식별하려는 것이 아니며, 청구되는 발명의 범위 결정을 보조하려는 것도 아니다. This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to assist in determining the scope of the claimed subject matter.

일반적으로 다양한 실시예가 여러 다른 유형의 애플리케이션 프로그램, 가령, 상업적 라인-오브-비즈니스(line-of-business) 애플리케이션 프로그램을 실행하기에 적합한 클라이언트-서버 아키텍처와 관련된다. 구체적으로, 일부 실시예는 애플리케이션 프로그램의 복수의 티어(또는 계층), 가령, 적어도 하나의 표현 티어(presentation tier)를 갖는 n-티어 클라이언트-서버 아키텍처와 관련된다. 하나의 실시예에서, 예를 들어, 3-티어 클라이언트-서버 아키텍처는 여러 다른 유형의 클라이언트와 동작하도록 해석 런타임 엔진(interpretive runtime engine) 애플리케이션을 적용할 때, 그래픽 사용자 인터페이스(GUI) 렌더링을 분리 및 개선하도록 설계된 기법을 이용해 구현되는 표현 티어를 포함할 수 있다. Various embodiments generally relate to a client-server architecture suitable for running different types of application programs, such as commercial line-of-business application programs. In particular, some embodiments relate to an n -tier client-server architecture having a plurality of tiers (or tiers) of application programs, such as at least one presentation tier. In one embodiment, for example, a three-tier client-server architecture decouples graphical user interface (GUI) rendering when applying an interpretive runtime engine application to work with several different types of clients. It can include representation tiers implemented using techniques designed to improve.

하나의 실시예에서, 예를 들어, 장치는 웹 클라이언트를 실행하도록 구성된 로직 장치를 포함할 수 있다. 상기 웹 클라이언트는 사용자 이벤트를 검출하고, 상기 사용자 이벤트와 연관된 변경된 사용자 이벤트 속성을 서버 애플리케이션으로 전송하며, 그래픽 사용자 인터페이스(GUI) 독립적 객체 및 업데이트된 사용자 이벤트 속성을 상기 서버 애플리케이션으로부터 수신하며, 서버 애플리케이션으로부터 수신된 GUI 독립적 객체 및 업데이트된 사용자 이벤트 속성을 이용해 상기 클라이언트 사용자 인터페이스에서 렌더링된 이미지를 업데이트하도록 동작하는 클라이언트 어댑터 및 그 밖의 다른 요소를 포함할 수 있다. 그 밖의 다른 실시예가 기재되고 청구된다. In one embodiment, for example, the device may include a logic device configured to execute a web client. The web client detects a user event, sends a changed user event attribute associated with the user event to a server application, receives a graphical user interface (GUI) independent object and an updated user event attribute from the server application, and receives a server application. Client adapters and other elements operable to update the rendered image in the client user interface using GUI independent objects and updated user event attributes received from. Other embodiments are described and claimed.

이들 및 그 밖의 다른 특징 및 이점이 이하의 구체적인 내용을 읽고, 이와 연관된 도면을 검토함으로써, 자명해질 것이다. 이상의 포괄적인 기재와 이하의 구체적인 내용 모두 설명을 위한 것에 불과하며 청구되는 사항을 제한하려는 것이 아님을 이해해야 한다.
These and other features and advantages will become apparent by reading the following detailed description and reviewing the associated drawings. It is to be understood that both the foregoing general description and the following detailed description are merely illustrative and are not intended to limit the claimed subject matter.

도 1a는 종래의 데스크톱 애플리케이션 아키텍처를 도시한다.
도 1b는 종래의 2-티어 애플리케이션 아키텍처를 도시한다.
도 1c는 종래의 3-티어 애플리케이션 아키텍처를 도시한다.
도 2는 하나의 실시예에 따르는 복수의 클라이언트 및 클라이언트 어댑터를 갖는 개선된 n-티어 클라이언트-서버 아키텍처의 블록도를 도시한다.
도 3은 하나의 실시예에 따르는 단일 클라이언트와 클라이언트 어댑터를 갖는 개선된 n-티어 클라이언트-서버 아키텍처의 블록도를 도시한다.
도 4는 하나의 실시예에 따르는 클라이언트에 대한 그래픽 사용자 인터페이스(GUI) 독립적 객체 및 클라이언트 어댑터를 갖는 개선된 n-티어 클라이언트-서버 아키텍처의 블록도를 도시한다.
도 5는 하나의 실시예에 따르는 개선된 n-티어 클라이언트-서버 아키텍처의 제 1 논리 흐름도를 도시한다.
도 1a는 하나의 실시예에 따르는 GUI 독립적 객체의 논리도를 도시한다.
도 1b는 하나의 실시예에 따르는 특정 GUI 독립적 객체의 논리도를 도시한다.
도 7은 하나의 실시예에 따르는 개선된 n-티어 클라이언트-서버 아키텍처의 제 2 논리 흐름도를 도시한다.
도 8은 하나의 실시예에 따르는 개선된 n-티어 클라이언트-서버 아키텍처에 대해 적합한 컴퓨팅 아키텍처의 하나의 실시예를 도시한다.
도 9는 하나의 실시예에 따르는 개선된 n-티어 클라이언트-서버 아키텍처에 대해 적합한 통신 아키텍처의 하나의 실시예를 도시한다.
1A illustrates a conventional desktop application architecture.
1B illustrates a conventional two tier application architecture.
1C illustrates a conventional three tier application architecture.
2 shows a block diagram of an improved n -tier client-server architecture with a plurality of clients and client adapters according to one embodiment.
3 shows a block diagram of an improved n- tier client-server architecture with a single client and client adapter according to one embodiment.
4 shows a block diagram of an improved n -tier client-server architecture with a graphical user interface (GUI) independent object and client adapter for a client according to one embodiment.
5 illustrates a first logical flow diagram of an improved n -tier client-server architecture, according to one embodiment.
1A illustrates a logic diagram of a GUI independent object, according to one embodiment.
1B illustrates a logic diagram of a particular GUI independent object according to one embodiment.
7 illustrates a second logic flow diagram of an improved n- tier client-server architecture, according to one embodiment.
8 illustrates one embodiment of a computing architecture suitable for an improved n- tier client-server architecture according to one embodiment.
9 illustrates one embodiment of a communication architecture suitable for an improved n- tier client-server architecture according to one embodiment.

일반적으로 다양한 실시예는 서로 다른 유형의 상업적 라인-오브-비즈니스(line-of-business) 애플리케이션 프로그램을 실행하기에 적합한 클라이언트-서버 아키텍처와 관련된다. 특히 일부 실시예는 개선된 n-티어 클라이언트-서버 아키텍처와 관련되며, 여기서 n은 임의의 정수를 나타내는 변수이다. 개선된 n-티어 아키텍처는 애플리케이션 프로그램의 복수의 티어(또는 계층(layer)), 가령, 적어도 하나의 표현 티어(presentation tier)를 포함할 수 있다. 하나의 실시예에서, 예를 들어, 상기 개선된 n-티어 아키텍처는, 표현 티어(presentation tier), 애플리케이션 처리 티어(application processing tier), 및 데이터 관리 티어(data management tier)를 포함하는 3-티어 아키텍처로서 구현될 수 있다. 일반적으로 표현 티어는 사용자 인터페이스 로직, 가령, 입/출력 연산을 다루는 것을 구현한다. 일반적으로, 애플리케이션 처리 티어는 애플리케이션 또는 비즈니스 로직, 가령, 애플리케이션 규칙의 세트에 따라 데이터를 처리하는 것을 구현한다. 일반적으로 데이터 관리 티어는 데이터 저장 및 액세스, 가령, 데이터 스키마 정의, 데이터 저장, 데이터 질의 처리 등을 구현한다.Various embodiments generally relate to a client-server architecture suitable for running different types of commercial line-of-business application programs. In particular, some embodiments relate to an improved n- tier client-server architecture, where n is a variable representing any integer. The improved n- tier architecture may include a plurality of tiers (or layers) of the application program, such as at least one presentation tier. In one embodiment, for example, the improved n- tier architecture includes a three-tier including a presentation tier, an application processing tier, and a data management tier. It can be implemented as an architecture. In general, the representation tier implements handling user interface logic, such as input / output operations. In general, the application processing tier implements processing data according to an application or business logic, such as a set of application rules. In general, the data management tier implements data storage and access, such as data schema definition, data storage, and data query processing.

개선된 n-티어 클라이언트-서버 아키텍처는 해석 런타임 엔진(interpretive runtime engine)을 이용하는 애플리케이션에서의 GUI 렌더링 및 사용자 이벤트의 분리 및 최적화를 용이하게 하도록 설계된 기법을 이용해 구현되는 표현 티어를 포함할 수 있다. 이는 해석 런타임 엔진 애플리케이션의 변경은 감소시키면서, 2-티어 클라이언트-서버 기반 아키텍처로부터 호스팅되는 3-티어 환경으로의 해석 런타임 엔진 애플리케이션의 채택을 가능하게 한다.The improved n- tier client-server architecture can include an expression tier implemented using techniques designed to facilitate GUI rendering and separation and optimization of user events in applications utilizing an interpretive runtime engine. This enables the adoption of interpretation runtime engine applications from a two-tier client-server based architecture into a three-tier environment, while reducing changes in interpretation runtime engine applications.

도 1a, 1b 및 1c는 개선된 n-티어 클라이언트-서버 아키텍처의 다양한 실시예에 대한 이점을 강조하기 위한 배경으로서, 애플리케이션 개발을 위한 3개의 종래의 아키텍처를 도시한다. 도 1a는 종래의 데스크톱 아키텍처를 도시한다. 도 1b는 종래의 2-티어 아키텍처를 도시한다. 도 1c는 종래의 3-티어(또는 n-티어) 아키텍처를 도시한다. 1A, 1B, and 1C illustrate three conventional architectures for application development as a background to highlight the benefits of various embodiments of an improved n- tier client-server architecture. 1A shows a conventional desktop architecture. 1B shows a conventional two-tier architecture. 1C shows a conventional three-tier (or n -tier) architecture.

도 1a는 애플리케이션 프로그램(112)의 모든 부분(또는 애플리케이션 계층)이 클라이언트 컴퓨터(110)(가령, 데스크톱 컴퓨터) 상에서 구현되는 데스크톱 아키텍처(100)의 일례이다. 상기 애플리케이션 프로그램(112)은, 예를 들어, 사용자 인터페이스(UI) 로직, 비즈니스 로직, 및 데이터베이스 액세스 로직을 구현하는 다양한 애플리케이션 계층을 포함할 수 있다. 상기 애플리케이션 프로그램(112)은, 또한 클라이언트 컴퓨터(110) 상에서 구현되는 데이터베이스(114)에 애플리케이션 데이터를 저장 및 액세스할 수 있다.1A is an example of a desktop architecture 100 in which all portions (or application layers) of application program 112 are implemented on client computer 110 (eg, desktop computer). The application program 112 may include, for example, various application layers that implement user interface (UI) logic, business logic, and database access logic. The application program 112 may also store and access application data in a database 114 implemented on the client computer 110.

도 1b는 현재 데이터베이스(114)가 클라이언트 컴퓨터(110)로부터 원격으로 위치하는 2-티어 아키텍처(120)의 일례이다. 2-티어 아키텍처(120)에서, 애플리케이션 프로그램(112) 및 이의 구성요소인 애플리케이션 계층은 여전히 클라이언트 컴퓨터(110) 상에 존재한다. 그러나 데이터베이스(114)가 클라이언트 컴퓨터(110)로부터 데이터베이스 서버(116)로 이동되었다. 상기 클라이언트 컴퓨터(110)에서 실행 중인 애플리케이션 프로그램(112)은 데이터베이스 애플리케이션 프로그램 인터페이스(API)를 통해, 데이터베이스(114)와 통신 가능하게 연결된 데이터베이스 서버(116)로 데이터에 대한 요청을 전송한다. 그 후, 요청된 데이터가 클라이언트 컴퓨터(110) 상에서 실행 중인 애플리케이션 프로그램(112)으로 반환(return)된다.1B is an example of a two-tier architecture 120 in which the current database 114 is located remotely from the client computer 110. In the two-tier architecture 120, the application program 112 and its components, the application layer, still exist on the client computer 110. However, database 114 has been moved from client computer 110 to database server 116. The application program 112 running on the client computer 110 sends a request for data to a database server 116 communicatively coupled to the database 114 via a database application program interface (API). The requested data is then returned to the application program 112 running on the client computer 110.

도 1c는 3-티어 아키텍처(130)의 일례이다. 3-티어 아키텍처(130)에서, 애플리케이션 프로그램(112)은 클라이언트 컴퓨터(110)와 서버(122) 상에서 각자 실행되는 분산 애플리케이션 프로그램(112, 124)으로 분리될 수 있다. 상기 애플리케이션 프로그램(112)은 UI 로직을 갖는 애플리케이션 계층을 구현할 수 있다. 상기 애플리케이션 프로그램(124)은 비즈니스 및 데이터베이스 액세스 로직을 갖는 애플리케이션 계층을 구현할 수 있다. 상기 클라이언트 컴퓨터(110)에서 실행되는 상기 애플리케이션 프로그램(112)이 상기 애플리케이션 프로그램(124)을 실행하는 서버(122)로 데이터를 전송한다. 그 후 상기 애플리케이션 프로그램(124)은 비즈니스 로직을 실행시키고 데이터에 대한 요청을 데이터베이스(114)와 통신 가능하게 연결된 데이터베이스 서버(116)로 전송한다. 요청된 데이터 및 실행된 비즈니스 로직의 결과가 애플리케이션 프로그램(112)으로 반환되고 클라이언트 컴퓨터(110)에서 렌더링된다. 데이터베이스 서버(116)는 서버(122)와 같은 곳에 위치하거나, 서버(122)의 일부분일 수 있다. 즉, 단일 서버(122)가 애플리케이션 서버와 데이터 서버 모두의 기능을 하도록 하드웨어 아키텍처가 구성될 수 있다. 2-티어 아키텍처와 3-티어(또는 n-티어) 아키텍처를 구별하는 요인은 애플리케이션 계층 중 일부 또는 다수가 클라이언트 컴퓨터(110) 밖으로 이동하고, 하나 이상의 그 밖의 다른 서버(116, 122)들 간에 분포된다는 것이다. 1C is an example of a three-tier architecture 130. In the three-tier architecture 130, the application program 112 may be separated into distributed application programs 112 and 124, each running on the client computer 110 and the server 122. The application program 112 may implement an application layer having UI logic. The application program 124 may implement an application layer having business and database access logic. The application program 112 running on the client computer 110 transmits data to the server 122 running the application program 124. The application program 124 then executes business logic and sends a request for data to a database server 116 communicatively coupled with the database 114. The result of the requested data and executed business logic is returned to the application program 112 and rendered at the client computer 110. The database server 116 may be located at the same location as the server 122 or may be part of the server 122. That is, the hardware architecture can be configured such that a single server 122 functions as both an application server and a data server. The factor that distinguishes a two-tier architecture from a three-tier (or n -tier) architecture is that some or many of the application layers move out of the client computer 110 and are distributed among one or more other servers 116, 122. It is.

n-티어 아키텍처, 가령, 3-티어 아키텍처(130)는 2-티어 아키텍처(120)에 비해, 애플리케이션 프로그램을 개발 및 수정할 때 많은 이점을 제공할 수 있다. 예를 들어, 전체 애플리케이션 프로그램의 완전한 다시 쓰기를 초래하지 않고 단일 티어가 수정 또는 추가될 수 있다. 그러나 많은 수의 클라이언트가 존재하는 웹-기반 환경에 대해 n-티어 아키텍처를 구현하는 데 어려움이 존재한다. 각각의 클라이언트는 서로 다른 웹 기법, 가령, 서로 다른 웹 브라우저, 웹 서비스, 및 웹 애플리케이션을 이용할 수 있다. 덧붙여, 웹 기법이, 여러 다른 유형의 기저 하드웨어 및 소프트웨어 아키텍처, 서로 다른 입/출력(I/O) 구성요소, 폼 팩터, 파워 요건, 프로세싱 능력, 통신 능력, 메모리 자원 등을 갖는 다양한 장치와 함께 동작하도록 설계된다. 따라서 각각의 클라이언트의 고유의 구성에 맞도록 표현 계층을 광범위하게 커스텀화하지 않고, 특정 애플리케이션 계층, 가령, 표현 계층을 이들 많은 이종 장치 및 아키텍처에 걸쳐 균일하게 구현하는 것이 어려울 수 있다. 덧붙여, 웹 버전의 애플리케이션 프로그램은 비-웹 버전의 애플리케이션 프로그램과 호환되지 않을 수 있기 때문에, 각각에 대해 개별 소프트웨어 아키텍처가 필요할 수 있다. The n- tier architecture, such as the three-tier architecture 130, can provide a number of advantages when developing and modifying application programs over the two-tier architecture 120. For example, a single tier can be modified or added without causing a complete rewrite of the entire application program. However, there is a difficulty in implementing n- tier architecture for a web-based environment with a large number of clients. Each client can use different web techniques, such as different web browsers, web services, and web applications. In addition, Web techniques, along with various devices with different types of underlying hardware and software architectures, different input / output (I / O) components, form factors, power requirements, processing capabilities, communication capabilities, memory resources, etc. It is designed to work. Thus, it may be difficult to uniformly implement a particular application layer, such as the presentation layer across many of these heterogeneous devices and architectures, without extensively customizing the presentation layer to suit the unique configuration of each client. In addition, since the web version of the application program may not be compatible with the non-web version of the application program, a separate software architecture may be required for each.

다양한 구현예에서, 개선된 n-티어 아키텍처는 2-티어 클라이언트-서버 애플리케이션 아키텍처가 애플리케이션 프로그램의 표현 계층에 대해 씬 클라이언트(thin client)를 이용하는 3-티어 애플리케이션 아키텍처로 이주(migration)하는 것을 가능하게 하는 프레임워크를 제공한다. 하나의 실시예에서, 예를 들어, 각각의 클라이언트 장치는 웹 클라이언트(web client)의 형태로 된 씬 클라이언트를 구현할 수 있다. 일반적으로 웹 클라이언트는 웹 기법, 가령, 클라이언트 컴퓨터에서 동작하는 웹 브라우저를 이용해 구현되는 씬 클라이언트 애플리케이션을 일컫는다. 웹 클라이언트는 또한, 사이트 또는 서버로부터의 커스텀 서비스를 지원하기 위해 브라우저를 보강하는 플러그-인(plug-in) 및 헬퍼(helper) 애플리케이션을 일컬을 수도 있다. 본원에서 언급되는 웹 클라이언트는 웹 브라우저의 기능부(functionality)를 일컬을 수도 있다. In various implementations, the improved n- tier architecture enables a two-tier client-server application architecture to migrate to a three-tier application architecture using a thin client to the presentation layer of the application program. Provide a framework to In one embodiment, for example, each client device may implement a thin client in the form of a web client. Generally, a web client refers to a thin client application that is implemented using web techniques, such as a web browser running on a client computer. The web client may also refer to plug-in and helper applications that augment the browser to support custom services from a site or server. The web client referred to herein may refer to the functionality of a web browser.

도 2는 클라이언트-서버 시스템(200)을 도시한다. 하나의 실시예에서, 상기 클라이언트-서버 시스템(200)은 개선된 n-티어 클라이언트-서버 시스템을 포함할 수 있다. 상기 개선된 n-티어 클라이언트-서버 시스템은 애플리케이션 프로그램을 표현 티어를 포함해 복수의 티어로 분리시킬 수 있다. 상기 표현 티어는 해석 런타임 엔진(interpretive runtime engine)을 이용해 애플리케이션 프로그램 내 GUI 렌더링 및 사용자 이벤트의 분리 및 최적화를 촉진시키도록 설계된 기법을 이용해 구현될 수 있다. 이는 해석 런타임 엔진 애플리케이션에 대한 요구되는 변경은 감소시키면서, 2-티어 클라이언트-서버 기반 아키텍처로부터 호스팅된 3-티어 환경으로의 해석 런타임 엔진 애플리케이션을 채택하는 것을 가능하게 한다. 2 illustrates a client-server system 200. In one embodiment, the client-server system 200 may include an improved n- tier client-server system. The improved n -tier client-server system can separate an application program into multiple tiers, including the presentation tier. The presentation tier may be implemented using a technique designed to facilitate GUI rendering and separation and optimization of user events in an application program using an interpretive runtime engine. This makes it possible to adopt a interpretation runtime engine application from a two-tier client-server based architecture to a hosted three-tier environment while reducing the required changes to the interpretation runtime engine application.

앞서 도 1a를 참조하여 기재된 바와 같이, 많은 애플리케이션이, 애플리케이션이 2개의 상호 관련된 구성요소-데이터베이스 서버 및 클라이언트 애플리케이션-로 구성되는 2-티어 애플리케이션 아키텍처를 따른다. 상기 데이터베이스 서버는 클라이언트에서 수행되기에 극도로 시간 소모적일 과중한 연산 중 일부를 처리할 수 있게 하는 확장된 비즈니스 로직과 함께, 시스템 및 회사 데이터(company data)를 호스팅할 수 있다. 한편, 클라이언트 애플리케이션은 UI를 전달하는 기능, 데이터 엔트리 검증(data entry validation)을 제공하는 기능, 및 리포트를 렌더링하는 기능 등을 수행할 수 있다. As described above with reference to FIG. 1A, many applications follow a two-tier application architecture in which the application consists of two interrelated components—a database server and a client application. The database server can host system and company data along with extended business logic that allows it to handle some of the heavy computations that would be extremely time consuming to be performed at the client. On the other hand, the client application can perform a function of transmitting a UI, a function of providing data entry validation, and a function of rendering a report.

도 2에 도시된 실시예에서, 클라이언트-서버 시스템(200)은 서버(202)와 복수의 클라이언트(204, 206)를 포함할 수 있다. 서로 다른 하드웨어 플랫폼에서 구현될 때, 서버(202)와 클라이언트(204, 206)는 네트워크(250)를 통해 서로와 통신할 수 있다. 동일한 하드웨어 플랫폼에서 구현될 때, 서버(202)와 클라이언트(204, 206)는 적절한 버스 기법 및 아키텍처를 통해 서로와 통신할 수 있다. 도 2가 간결성을 목적으로 단일 서버(202)와 2개의 클라이언트(204, 206)만 도시하고 있지만, 상기 클라이언트-서버 시스템(200)은 임의의 개수의 서버 및 클라이언트를 특정 구현예에서 원하는 대로 구현할 수 있음이 자명할 수 있다. 실시예는 이러한 맥락에 제한되지 않는다.2, the client-server system 200 may include a server 202 and a plurality of clients 204,206. When implemented on different hardware platforms, server 202 and clients 204, 206 can communicate with each other over network 250. When implemented on the same hardware platform, server 202 and clients 204 and 206 may communicate with each other via appropriate bus techniques and architectures. Although FIG. 2 illustrates only a single server 202 and two clients 204, 206 for the sake of brevity, the client-server system 200 may implement any number of servers and clients as desired in a particular implementation. It can be obvious. Embodiments are not limited in this context.

하나의 실시예에서, 서버(202)는 서버 애플리케이션(210)을 구현하는 전자 장치를 포함할 수 있다. 상기 서버 애플리케이션(210)은 임의의 유형의 서버 애플리케이션, 가령, 상업적 라인-오브-비즈니스 애플리케이션을 포함할 수 있다. 상업적 라인-오브-비즈니스 애플리케이션의 비-제한적 예로는, 회계 프로그램, 기업 자원 계획(ERP: enterprise resource planning) 애플리케이션, 고객 관계 관리(CRM: customer relationship management) 애플리케이션, 공급 체인 관리(SCM: supply chain management) 애플리케이션 등이 있을 수 있다. 이들 상업적 라인-오브-비즈니스 애플리케이션은, 일반적으로 클라이언트 장치, 가령, 데스크톱 컴퓨터가 아니라 상업적 기업 망 내 서버 또는 서버 어레이(server array)에 의해 실행되기 때문에, 때때로 "미들-티어(middle-tier)" 애플리케이션이라고 지칭된다. 특정 예로는 워싱턴, 레드몬드에 소재하는 Microsoft Corporation사의 Microsoft® Dynamics GP가 있을 수 있다. 상기 Microsoft® Dynamics GP는 상업적 회계 소프트웨어 애플리케이션이다. 상업적 라인-오브-비즈니스 애플리케이션의 또 다른 특정 예는 워싱턴, 레드몬드에 소재하는 Microsoft Corporation사의 Microsoft Dynamics® AX를 포함할 수 있다. Microsoft Dynamics AX는 상업적 ERP 소프트웨어 애플리케이션이다. 그러나 실시예는 이들 예시에 한정되지 않는다. In one embodiment, server 202 may include an electronic device that implements server application 210. The server application 210 may include any type of server application, such as a commercial line-of-business application. Non-limiting examples of commercial line-of-business applications include accounting programs, enterprise resource planning (ERP) applications, customer relationship management (CRM) applications, and supply chain management (SCM). ) May be an application. Because these commercial line-of-business applications are typically executed by a server or server array in a commercial enterprise network, rather than a client device, such as a desktop computer, sometimes they are "middle-tier". It is called an application. A particular example may be Microsoft® Dynamics GP from Microsoft Corporation, Redmond, Washington. The Microsoft® Dynamics GP is a commercial accounting software application. Another particular example of a commercial line-of-business application may include Microsoft Dynamics® AX of Microsoft Corporation, Redmond, Washington. Microsoft Dynamics AX is a commercial ERP software application. However, embodiments are not limited to these examples.

서버(202)가 서버 애플리케이션(210)에 대한 코드를 실행하는 중일 때, 상기 서버(202)는 해석 런타임 엔진(interpretive runtime engine)(212)을 형성한다. 상기 해석 런타임 엔진(212)은 서버 애플리케이션(210)에 대해, 클라이언트-서버 시스템(200)에서 애플리케이션 로직(214), 데이터베이스 로직(216), 및 서버 표현 로직(server presentation logic)(218)이라고 일컬어지는 복수의 애플리케이션 계층을 구현한다. 상기 서버 애플리케이션(210)은 클라이언트(204, 206)로부터 네트워크(250)를 통해 신호 또는 메시지의 형태로 수신된 제어 지시(control directive)를 통해 제어 및 동작될 수 있다. When the server 202 is executing code for the server application 210, the server 202 forms an interpretive runtime engine 212. The interpretation runtime engine 212 is referred to as the application logic 214, the database logic 216 and the server presentation logic 218 in the client-server system 200 for the server application 210 Loss implements multiple application layers. The server application 210 may be controlled and operated via control directives received in the form of signals or messages from the clients 204 and 206 via the network 250.

하나의 실시예에서, 클라이언트(204, 206) 각각은 각자의 웹 클라이언트(230, 240)를 구현하는 전자 장치를 포함할 수 있다. 예를 들어, 상기 웹 클라이언트(230, 240) 각각은 각자의 클라이언트(204, 206) 상에서 실행 중인 웹 브라우저의 인스턴스를 포함할 수 있다. 상기 웹 브라우저는 또한 서버(202)로부터의 커스텀 서비스를 지원하기 위해 웹 브라우저를 보강하도록 설계된 플러그-인, 웹 애플리케이션 및 헬퍼 애플리케이션을 포함할 수 있다. 본원에서 언급되는 웹 클라이언트(230, 240)는 웹 브라우저의 기능도 지칭할 수 있다. In one embodiment, each of the clients 204, 206 may include an electronic device that implements its own web client 230, 240. For example, each of the web clients 230, 240 may include an instance of a web browser running on its respective client 204, 206. The web browser may also include plug-ins, web applications and helper applications designed to augment the web browser to support custom services from the server 202. Web clients 230 and 240 referred to herein may also refer to the functionality of a web browser.

상기 클라이언트(204, 206)는 각자의 클라이언트 어댑터(client adapter)(232, 242)를 포함할 수 있다. 클라이언트 어댑터(232, 242) 각각은 특정클라이언트(204, 206)에 의해 사용되도록 구성될 수 있다. 이러한 방식으로, 서로 다른 기법을 이용해 서로 다른 클라이언트에 의해 액세스될 때 서버 애플리케이션(210) 및 해석 런타임 엔진(212)은 수정될 필요가 없다. The clients 204 and 206 may include their respective client adapters 232 and 242. Each of the client adapters 232, 242 can be configured to be used by a particular client 204, 206. In this manner, the server application 210 and the interpretation run-time engine 212 need not be modified when accessed by different clients using different techniques.

상기 클라이언트 어댑터(232, 242)는 각자의 클라이언트 표현 로직(238, 248)을 포함할 수 있다. 상기 클라이언트 표현 로직(238, 248)은 클라이언트(204, 206)에 대한 출력 장치, 가령, 디지털 디스플레이 상에 사용자 인터페이스 요소 또는 뷰(view)를 표현(present)하도록 설계될 수 있다. 서버 애플리케이션(210)에 대해 구현되는 분산 n-티어 아키텍처에 따라, 상기 클라이언트 표현 로직(238, 248)은 서버(202) 상에서 실행되는 서버 애플리케이션(210)의 애플리케이션 로직(214), 데이터베이스 로직(216), 및 서버 표현 로직(218)과 상호운용(interoperate)되도록 설계될 수 있다. The client adapters 232 and 242 may include respective client presentation logic 238 and 248. The client presentation logic 238, 248 may be designed to present a user interface element or view on an output device, such as a digital display, for the client 204, 206. Depending on the distributed n -tier architecture implemented for server application 210, the client representation logic 238, 248 may be configured to include application logic 214, database logic 216 of server application 210 running on server 202. And server representation logic 218.

클라이언트 어댑터(232, 242) 및 이들 각자의 클라이언트 표현 로직(238, 248)은, 서버 표현 로직(218)과 상호운용됨으로써, 상기 서버 애플리케이션(210)은 서로 다른 클라이언트(204, 206)를 통해 액세스될 수 있다. 각각의 클라이언트(204, 206)는 서로 다른 버전의 서버 표현 로직(218)을 각자의 클라이언트 표현 로직(238, 248)으로서 구현하여, 클라이언트(204, 206)에 대해 특정 구성(configuration)을 맞출 수 있다. 이는 서버 표현 로직(218)를 다시 쓸 필요 없이 이뤄질 수 있고, 더 중요한 것은, 비즈니스 로직(214) 및 데이터베이스 로직(216)을 다시 쓸 필요 없다는 것이다. 덧붙여, 서버 표현 로직(218) 및 클라이언트 표현 로직(238, 248)은 네트워크(250)에 대한 통신 트래픽 및 오버헤드를 감소시키는 방식으로 상호대화할 수 있음으로써, 통신 딜레이와 연관된 대기시간(latency)을 감소시키면서 속도와 성능은 증가시킬 수 있다. Client adapters 232 and 242 and their respective client representation logic 238 and 248 interoperate with server representation logic 218 such that the server application 210 is accessed through different clients 204 and 206. Can be. Each client 204,206 may implement different versions of the server presentation logic 218 as its respective client presentation logic 238,248 to tailor a particular configuration for the client 204,206 have. This can be done without having to rewrite the server representation logic 218, and more importantly, the business logic 214 and database logic 216 need not be rewritten. In addition, the server presentation logic 218 and the client presentation logic 238 and 248 can interact with each other in a manner that reduces communication traffic and overhead to the network 250, thereby reducing latency associated with communication delays, Speed and performance can be increased while reducing.

상기 서버 애플리케이션(210)은 클라이언트 어댑터(232, 242) 또는 각각의 개별 버전과 따로 또는 동시에 통신할 수 있다. 동시 동작을 위한 시나리오는 사용자가 보조를 필요로 하고 관리자(administrator)가 사용자의 웹 클라이언트 뷰의 제 2 버전을 보기를 원할 때를 포함할 수 있다. The server application 210 can communicate separately or simultaneously with the client adapters 232 and 242 or their respective versions. Scenarios for concurrent operation may include when a user needs assistance and an administrator wants to see a second version of the user's web client view.

다양한 실시예에서, 상기 서버 표현 로직(218) 및 상기 클라이언트 표현 로직(238, 248)은 그래픽 사용자 인터페이스(GUI: graphical user interface) 독립적 객체(260)를 활용하여 효율적인 방식으로 상호대화할 수 있다. 상기 GUI 독립적 객체(260)는 GUI 요소, 가령, GUI 스크린(가령, Microsoft Windows® Forms)이 데스크톱 환경과 웹 환경 사이에 자유롭게 이동할 수 있게 한다. 상기 GUI 독립적 객체(260)에 의해 상기 서버 애플리케이션(210)은 전통적인 OS 폼(form)을 통해 또는 웹 클라이언트 폼을 통해 수신될 수 있고, 제출됐던 폼의 유형에 무관하게 스크립트 이벤트를 실행시킬 수 있는 사용자 이벤트를 기다리면서 배경(background) 서비스로서 실행될 수 있다. In various embodiments, the server presentation logic 218 and the client presentation logic 238, 248 may interact in an efficient manner utilizing a graphical user interface (GUI) independent object 260. The GUI independent object 260 allows a GUI element, e.g., a GUI screen (e.g., Microsoft Windows® Forms), to move freely between the desktop environment and the web environment. The GUI independent object 260 allows the server application 210 to receive script events via a traditional OS form or via a web client form and to execute script events regardless of the type of form submitted It can run as a background service while waiting for user events.

GUI 독립적 객체(260)는, 애플리케이션 로직 이벤트에 영향을 미칠 수 있는 사용자 이벤트 속성에 추가로, 클라이언트 어댑터(232, 242)에 의한 GUI 종속적 렌더링에 영향을 미칠 수 있는 사용자 이벤트, 임의의 사용자 이벤트 속성, 및 그 밖의 다른 유형의 정보를 포함할 수 있다. 상기 GUI 독립적 객체(260)는 해석 런타임 엔진(212)으로부터 생성되고 클라이언트 어댑터(232, 242)에게로 전송되며, 이는 추후 각자의 클라이언트 표현 로직(238, 248)을 통해 클라이언트 사용자 인터페이스에서 렌더링된다. The GUI independent object 260 includes, in addition to a user event attribute that may affect an application logic event, a user event that may affect GUI dependent rendering by the client adapter 232, 242, , And other types of information. The GUI independent object 260 is generated from the analysis runtime engine 212 and sent to the client adapters 232 and 242 which are then rendered in the client user interface via their respective client presentation logic 238 and 248.

도 3은 n-티어 클라이언트-서버 시스템(300)의 특정 구현예를 도시한다. 상기 클라이언트-서버 시스템(300)은 서버(302) 및 클라이언트(304)를 포함할 수 있다. 상기 서버(302)는, 예를 들어, 도 2를 참조하여 기재된 서버(202)를 나타낼 수 있다. 상기 클라이언트(304)는, 예를 들어, 도 2를 참조하여 기재된 클라이언트(204, 206) 중 하나 또는 둘 모두를 나타낼 수 있다. 3 illustrates a particular implementation of an n -tier client-server system 300. The client-server system 300 may include a server 302 and a client 304. The server 302 may represent the server 202 described with reference to FIG. 2, for example. The client 304 may represent one or both of the clients 204, 206 described with reference to FIG. 2, for example.

클라이언트-서버 시스템(300)에서 나타난 실시예에서, 상기 서버(302)는 서버 애플리케이션(310)을 구현할 수 있다. 하나의 실시예에서, 예를 들어, 서버 애플리케이션(310)은 Microsoft Dexterity® 프로그래밍 언어, 그 밖의 다른 적절한 유형의 프로그래밍 언어를 이용해 코딩될 수 있다. Microsoft Dexterity 애플리케이션으로서 구현될 때, 일반적으로 서버 애플리케이션(310)은 2개의 개별 요소로 나뉠 수 있다. 제 1 요소는 애플리케이션 환경의 기술적인 면, 가령, 운영 체제(OS)와의 통신, 및 파일 관리자(316)를 통한 데이터베이스(320)로의 연결 구축 및 관리를 해결하는 해석 런타임 엔진(312)이다. 제 2 요소는 애플리케이션 로직(315), 가령, 애플리케이션 규칙, 비즈니스 규칙, 폼, 리포트, 자원, 메타데이터, 및 사용자 명령(user command) 및 입력에 대한 응답을 가능하게 하는 애플리케이션 코드를 호스팅하는 애플리케이션 딕셔너리(application dictionary)(313)이다. 애플리케이션 코드의 예시는, 산스크립트(sanScript) 코드, Microsoft Visual Studio® 애드인(addin), Microsoft Visual Basic® 애플리케이션(VBA), Microsoft Dexterity Continuum, 등을 포함할 수 있다. 이 아키텍처는 애플리케이션 로직(315)을 UI 스타일 변경 및 플랫폼 진보, 가령, 플랫폼 OS의 업그레이드로부터 격리시킨다. In the embodiment shown in the client-server system 300, the server 302 may implement a server application 310. In one embodiment, for example, server application 310 may be coded using the Microsoft Dexterity® programming language, or any other suitable type of programming language. When implemented as a Microsoft Dexterity application, server application 310 may generally be divided into two separate elements. The first element is an interpretation runtime engine 312 that solves the technical aspects of the application environment, e.g., communication with the operating system (OS), and establishing and managing connections to the database 320 via the file manager 316. The second element is an application dictionary that hosts application logic 315, such as application rules, business rules, forms, reports, resources, metadata, and application code that enables response to user commands and input. (application dictionary) 313. Examples of application code may include sanScript code, Microsoft Visual Studio® addin, Microsoft Visual Basic® application (VBA), Microsoft Dexterity Continuum, and the like. This architecture isolates application logic 315 from UI style changes and platform advances, such as upgrades of the platform OS.

산스크립트(sanScript) 코드는 애플리케이션이 동작하는 방식을 제어하기 위해 사용된다. 일반적으로 상기 산스크립트 코드는 애플리케이션 딕셔너리(313) 내 객체, 가령, 필드, 메뉴, 스크린 및 폼에 첨부되는 작은 세그먼트, 또는 스크립트로 써진다. 스크립트는 사용자가 애플리케이션 내 특정 객체와 상호대화할 때 실행된다. 예를 들어, 푸시 버튼(push button)에 적용되는 스크립트는 사용자가 버튼을 클릭할 때 실행될 것이다. SanScript code is used to control how the application behaves. Generally, the acid script code is written as an object in the application dictionary 313, e.g., a small segment, or script attached to a field, menu, screen and form. The script is executed when the user interacts with a specific object in the application. For example, a script applied to a push button would run when the user clicks the button.

나타난 바와 같이, 클라이언트(304)는 웹 클라이언트(330)를 포함할 수 있다. 상기 웹 클라이언트(330)는, 예를 들어, 웹 클라이언트(230, 240) 중 하나 또는 둘 모두를 나타낼 수 있다. 상기 웹 클라이언트(330)는 사용자 인터페이스 및 사용자 상호대화에 적응된 컴포넌트와 서비스의 세트, 가령, 서버 애플리케이션(310)에 의해 사용되기 위한 사용자 입력 및 경량 사용자 인터페이스 컨트롤(lightweight user interface control)을 전달할 수 있다. 그러나 3-티어 아키텍처로의 매끄러운 이주(smooth migration)를 이루기 위해, 효율적인 웹 클라이언트 인터페이스를 가능하게 하도록, 웹 클라이언트 아키텍처의 도입에 의해 발생된 다양한 기술적 과제가 극복될 필요가 있다. As shown, the client 304 can include a web client 330. The web client 330 may, for example, represent one or both of the web clients 230 and 240. The web client 330 may deliver a set of components and services adapted to user interface and user interaction, such as user input and lightweight user interface controls for use by the server application 310. have. However, to achieve a smooth migration to the three-tier architecture, various technical challenges created by the introduction of the web client architecture need to be overcome to enable an efficient web client interface.

본원에 기재된 실시예의 목표는 기존 코드 및 GUI 메타데이터에 대해 필요한 변경을 감소시키는 것이다. 앞서 언급된 과제들 중 일부를 해결하기 위해, 다양한 실시예가 사용자 인터페이스 관리자(318)와 OS 렌더링 엔진(322)을 해석 런타임 엔진(312)으로부터 연결해제(decouple)하기 위한 기법과 관련된다. 사용자 인터페이스 관리자(318)는 특정 GUI 시스템 내, 다양한 인터페이스 요소, 가령, GUI 스크린의 배치 및 외관을 제어하는 시스템 소프트웨어이다. 상기 OS 렌더링 엔진(322)은 콘텐츠를 디스플레이하기 위한 시스템 소프트웨어이다. 해석 런타임 엔진(312)은 서버 애플리케이션(310)의 실행된 버전(executed version)이다. The goal of the embodiments described herein is to reduce the necessary changes to existing code and GUI metadata. Various embodiments relate to techniques for decoupling user interface manager 318 and OS rendering engine 322 from interpretation runtime engine 312 to solve some of the aforementioned problems. User interface manager 318 is system software that controls the placement and appearance of various interface elements, such as GUI screens, within a particular GUI system. The OS rendering engine 322 is system software for displaying content. The interpretation runtime engine 312 is an executed version of the server application 310.

폼(또는 스크린)의 사용은 임의의 Microsoft Dexterity 애플리케이션의 핵심 구성요소이다. 상기 폼은 사용자가 서버 애플리케이션(310)과 상호대화할 때 이용할 메커니즘이다. 서버 애플리케이션(310)은 Microsoft Dexterity 애플리케이션, 가령, 일반적으로 상기 스크린을 위한 컨트롤과 연관된 산스크립트 코드를 포함하는 Microsoft Dexterity 애플리케이션 스크린으로서 구현된다. 스크립트 인터프리터(script interpreter)(314)의 지시 하에 스크린 및 컨트롤의 의도된 기능이 주어질 때 상기 산스크립트 코드는 사용자 이벤트에 응답하여 실행된다. The use of forms (or screens) is a key component of any Microsoft Dexterity application. The form is the mechanism that the user will use when interacting with the server application 310. The server application 310 is implemented as a Microsoft Dexterity application screen, typically a Microsoft Dexterity application screen that includes the acid script code associated with the control for the screen. The san script code is executed in response to a user event when given the intended function of the screen and control under the direction of a script interpreter 314. [

서버 애플리케이션(310)의 비-웹 버전(non-web version)에서, UI는 사용자 인터페이스 관리자(318)에 의해 관리되며, 그 후 OS 렌더링 엔진(322)과 통신하여 실제 Microsoft Dexterity 스크린을 개발자에 의해 이전에 배치된 컨트롤 요소와 함께 디스플레이 스크린 상에 디스플레이할 수 있다.In a non-web version of the server application 310, the UI is managed by the user interface manager 318 and is then communicated to the OS rendering engine 322 to provide the actual Microsoft Dexterity screen to the developer It can be displayed on the display screen together with the control elements previously arranged.

그러나 클라이언트-서버 시스템(300)의 웹 클라이언트 3-티어 아키텍처로의 전환(transition)을 촉진하기 위해, 상기 사용자 인터페이스 관리자(318) 및 OS 렌더링 엔진(322)은 해석 런타임 엔진(312)의 기능으로부터 연결해제될 수 있다. 이는 웹 클라이언트(332)가 사용자 인터페이스 관리자(336) 및 렌더링 엔진(338)의 클라이언트 버전을 클라이언트(304) 상에서 구현할 수 있게 해준다. 이는 또한 서버(302) 상에서 실행 중인 해석 런타임 엔진(312)이 웹 클라이언트(332)에 의해 사용되기 위한 GUI 독립적 객체(360)를 생성할 수 있게 해준다. GUI 독립적 객체(360)를 이용해, 서버 애플리케이션(310)의 기저 애플리케이션 클라이언트 로직(315) 중 어느 것도 변경할 필요 없이, 클라이언트(304)의 웹 클라이언트(330)가 동일한 스크린의 웹-기반 표현을 제공할 수 있도록 하면서, 전통 클라이언트는 통상의 GUI 스크린(가령, Microsoft Win32® 스크린)을 계속 제공할 수 있다. However, the user interface manager 318 and the OS rendering engine 322 may be configured to perform the functions of the analysis runtime engine 312 to facilitate the transition of the client-server system 300 to the web client 3-tier architecture. It can be disconnected. This allows web client 332 to implement client versions of user interface manager 336 and rendering engine 338 on client 304. This also allows the interpretation runtime engine 312 running on the server 302 to create a GUI independent object 360 for use by the web client 332. Using the GUI independent object 360, the web client 330 of the client 304 provides a web-based representation of the same screen, without having to change any of the underlying application client logic 315 of the server application 310 In doing so, traditional clients can continue to provide conventional GUI screens (eg, Microsoft Win32® screens).

사용자 인터페이스 관리자(318) 및 OS 렌더링 엔진(322)을 해석 런타임 엔진(312)으로부터 연결해제함으로써, 스크린(폼)이 비-웹(가령, 데스크톱 또는 Win32) 환경과 웹 환경 사이를 자유롭게 이동할 수 있다. 연결해제된 사용자 인터페이스 관리자(318) 및 OS 렌더링 엔진(322)을 이용해, 상기 서버 애플리케이션(310)은 전통적인 Win32 폼 또는 웹 클라이언트 폼을 통해 수신될 수 있고 제출됐던 폼의 유형에 무관하게 스크립트 이벤트를 실행시킬 수 있는 사용자 이벤트를 기다리면서, 배경(background) 서비스로서 실행될 수 있다. By disconnecting the user interface manager 318 and the OS rendering engine 322 from the analysis runtime engine 312, the screen can move freely between the non-web (e.g., desktop or Win32) environment and the web environment . Using the disconnected user interface manager 318 and the OS rendering engine 322, the server application 310 can receive script events, regardless of the type of form submitted, via a traditional Win32 form or web client form It can be executed as a background service while waiting for a user event that can be executed.

연결해제를 촉진시키기 위해, 서버 애플리케이션(310)의 GUI 종속적 처리 계층과 GUI 독립적 처리 계층이 먼저 서로 분리된다. 이들 2개의 계층 간 직접 통신 대신, GUI 독립적 객체(360)를 이용해 렌더링 및 이벤트 메타데이터가 노출(expose)된다. 상기 GUI 독립적 객체(360)는, 애플리케이션 로직 이벤트에 영향을 미칠 수 있는 사용자 이벤트 속성에 추가로, 클라이언트 어댑터(332)에 의한 GUI 종속적 렌더링에 영향을 미칠 수 있는 임의의 사용자 이벤트 속성을 포함할 수 있다. 그 후 상기 GUI 독립적 객체(360)는 클라이언트(304)를 위한 디스플레이 상의 클라이언트 사용자 인터페이스 스크린에서 렌더링된 (GUI 종속적) 클라이언트 어댑터(332)로 전송된다. 일부 클라이언트 어댑터(332)의 비-제한적 예시는, Microsoft Silverlight®, HTML, Win32 GDI, .Net Forms 등을 포함할 수 있다. To facilitate disconnection, the GUI dependent processing layer and the GUI independent processing layer of the server application 310 are first separated from each other. Instead of direct communication between these two layers, rendering and event metadata are exposed using the GUI independent object 360. The GUI independent object 360 may include any user event attributes that may affect GUI dependent rendering by the client adapter 332, in addition to user event attributes that may affect application logic events. have. The GUI independent object 360 is then transferred to the (GUI dependent) client adapter 332 rendered on the client user interface screen on the display for the client 304. Non-limiting examples of some client adapters 332 may include Microsoft Silverlight®, HTML, Win32 GDI, .Net Forms, and the like.

도 4는 n-티어 클라이언트-서버 시스템(400)의 특정 구현예를 도시한다. 상기 클라이언트-서버 시스템(400)은 서버(402)와 클라이언트(404)를 포함할 수 있다. 상기 서버(402)는, 예를 들어, 도 2, 3을 참조하여 기재되는 서버(202, 302)를 나타낼 수 있다. 클라이언트(404)는, 예를 들어, 도 2, 3을 참조하여 기재되는 클라이언트(204, 206, 304) 중 하나 또는 모두를 나타낼 수 있다. 4 illustrates a particular implementation of an n -tier client-server system 400. The client-server system 400 may include a server 402 and a client 404. The server 402 may represent, for example, the servers 202 and 302 described with reference to FIGS. 2 and 3. The client 404 may represent one or both of the clients 204, 206, 304 described with reference to FIGS. 2, 3, for example.

서버(402) 상에서, 하나 이상의 애플리케이션 계층을 실행하는 역할을 하거나 하나 이상의 애플리케이션 계층을 실행하는 그 밖의 다른 구성요소와 연결된 해석 런타임 엔진(412)을 포함하는 서버 애플리케이션(410)이 존재할 수 있다. 해석 런타임 엔진(412)은 스크립트 인터프리터(script interpreter)(414), 파일 관리자(416), 및 사용자 인터페이스 관리자(418)를 더 포함할 수 있다. 상기 스크립트 인터프리터(414)는 파일 관리자(416) 및 서버 사용자 인터페이스 관리자(418)와 통신할 수 있다. 파일 관리자(416)는 또한 데이터베이스(420)와 통신할 수 있다. On server 402, there may be a server application 410 that includes an interpretation runtime engine 412 that is responsible for executing one or more application layers or is coupled to other components that execute one or more application layers. The interpretation runtime engine 412 may further include a script interpreter 414, a file manager 416, and a user interface manager 418. The script interpreter 414 can communicate with a file manager 416 and a server user interface manager 418. File manager 416 may also be in communication with database 420.

클라이언트(404) 상에, 클라이언트 어댑터(432)를 실행하는 웹 클라이언트(430)가 존재한다. 상기 클라이언트 어댑터(432)는 도 2에 도시된 클라이언트 표현 로직(238, 248)에 따라, 클라이언트 사용자 인터페이스, 가령, 클라이언트 사용자 인터페이스에 콘텐츠를 디스플레이하기 위해 사용자 인터페이스 관리자(436) 및 렌더링 엔진(438)을 포함할 수 있다. On the client 404, there is a web client 430 running a client adapter 432. The client adapter 432 uses the user interface manager 436 and the rendering engine 438 to display content in a client user interface, such as the client user interface, in accordance with the client presentation logic 238, 248 shown in FIG. 2. It may include.

도 4는 3-티어 애플리케이션 아키텍처를 나타낼 수 있고, 여기서 특정 애플리케이션 계층이 서버(402)와 클라이언트(40) 간에 분산될 수 있다. 예를 들어, 클라이언트 표현 로직(238 및/또는 248)이 클라이언트(404) 상에 상주할 수 있고, 반면에, 도 2에 도시된 것처럼, 애플리케이션 로직(214) 및 데이터베이스 로직(216)은 서버(402) 상에 분산되어 있을 수 있다. 도 4의 도시된 아키텍처는 사용자 인터페이스 관리자(436) 및 렌더링 엔진(438)의 기능을 서버(402) 상의 해석 런타임 엔진(412)으로부터 연결해제했고, 이를 클라이언트(404) 상에 클라이언트 어댑터(432)와 함께 위치시켰다.4 may represent a three-tier application architecture, where a particular application layer may be distributed between server 402 and client 40. For example, client representation logic 238 and / or 248 may reside on client 404, while application logic 214 and database logic 216, as shown in FIG. 2, 402 may be dispersed. 4 has disconnected the functionality of the user interface manager 436 and the rendering engine 438 from the interpretation runtime engine 412 on the server 402 and sends it to the client adapter 432 on the client 404. [ Located with.

하나의 실시예에서, 해석 런타임 엔진(412)은 스크립트 인터프리터(414)를 포함할 수 있다. 일반적으로, 상기 스크립트 인터프리터(414)는 사용자 이벤트, 비-제한적 예를 들면, 트랜잭션(transaction)의 저장 또는 배치(batch)의 포스팅에 응답하여 스크립트된 코드를 실행하도록 구성될 수 있다. 스크립트된 코드의 예시는 프리-스크립트(pre-script), 변경 스크립트(change script), 포스트-스크립트(post-script), 및 그 밖의 다른 유형의 스크립트를 포함할 수 있다.In one embodiment, the interpretation runtime engine 412 may include a script interpreter 414. Generally, the script interpreter 414 may be configured to execute the scripted code in response to a user event, a non-limiting example, a transaction storage or posting of a batch. Examples of scripted code may include pre-script, change script, post-script, and other types of script.

하나의 실시예에서, 해석 런타임 엔진(412)은 파일 관리자(416)를 포함할 수 있다. 일반적으로 파일 관리자(416)는 데이터베이스(420)에 저장된 파일에 대한 파일 관리 동작을 수행하도록 구성될 수 있다. 파일 관리 동작의 예시는 파일 생성, 파일 열기, 파일 복사, 파일 이동, 파일 삭제 등을 포함할 수 있다. In one embodiment, the interpretation runtime engine 412 may include a file manager 416. In general, the file manager 416 may be configured to perform file management operations on files stored in the database 420. Examples of file management operations may include creating files, opening files, copying files, moving files, deleting files, and the like.

하나의 실시예에서, 해석 런타임 엔진(412)은 사용자 인터페이스 관리자(436)를 포함할 수 있다. 일반적으로, 상기 사용자 인터페이스 관리자(436)는 특정 GUI 시스템을 구현하는 사용자 인터페이스 내, 다양한 사용자 인터페이스 요소, 가령, 스크린 요소의 배치 및 외관을 제어하도록 구성될 수 있다. In one embodiment, the interpretation runtime engine 412 may include a user interface manager 436. In general, the user interface manager 436 may be configured to control the placement and appearance of various user interface elements, such as screen elements, within a user interface implementing a particular GUI system.

동작 중에, 사용자는 웹 클라이언트(430)를 통해 클라이언트 사용자 인터페이스와 상호대화할 수 있다. 상기 웹 클라이언트(430)는 웹-기반 콘텐츠를 렌더링하기 위한 사용자 인터페이스 코드를 갖는 웹 브라우저를 포함할 수 있다. 상기 웹 클라이언트(430)는 다양한 웹 기법, 가령, HTML, XHTML, XML 등을 이용해 구현될 수 있다. 웹 클라이언트(430)의 비-제한적 예를 들면, 워싱턴, 레드몬드에 소재하는 Microsoft Corporation사의 Internet Explorer®, 및 그 밖의 다른 유형의 웹 브라우저 소프트웨어가 있을 수 있다. In operation, the user may interact with the client user interface via the web client 430. The web client 430 may include a web browser having user interface code for rendering web-based content. The web client 430 may be implemented using various web technologies, such as HTML, XHTML, XML, and the like. Non-limiting examples of the web client 430 may be Internet Explorer (R) from Microsoft Corporation of Redmond, Washington, and other types of web browser software.

하나의 실시예에 따라, 동작 중에 사용자는 웹 클라이언트(430)를 통해 클라이언트 사용자 인터페이스와 상호대화할 수 있고, 클라이언트 어댑터(432)에 의해 수신되고 처리될 수 있는 사용자 이벤트를 입력할 수 있다. 사용자 이벤트의 비-제한적 예를 들면, 포인터를 필드로 이동시키기, 필드 위에서 호버링(hover)하기, 필드를 선택하기, 버튼을 마우스로 클릭하기, 텍스트 필드를 채우기, 및 이와 유사한 동작들이 있을 수 있다. 사용자 이벤트는 사용자 이벤트 속성의 세트를 이용해 정의될 수 있다. 하나의 실시예에서, 사용자 이벤트 속성의 완전한 세트 대신, 사용자 이벤트 속성에 대한 변경만 웹 클라이언트(430)에서 서버 애플리케이션(410)으로 전송될 필요가 있다. 이러한 차이 나는 기법이 통신 대역폭을 보존하고 대기시간을 감소시킬 수 있다. According to one embodiment, during operation, the user may interact with the client user interface via the web client 430 and input user events that may be received and processed by the client adapter 432. Non-limiting examples of user events may include moving a pointer to a field, hovering over a field, selecting a field, clicking a button with a mouse, populating a text field, and the like . User events can be defined using a set of user event attributes. In one embodiment, instead of a complete set of user event attributes, only changes to user event attributes need to be sent from the web client 430 to the server application 410. These different techniques can conserve communication bandwidth and reduce latency.

사용자 이벤트 속성은 사용자 인터페이스 레이아웃에 디스플레이되는 사용자 인터페이스 요소, 가령, 필드, 스크린 또는 그래픽 객체로 할당될 수 있는 임의의 속성(attribute)일 수 있다. 사용자 이벤트 속성은 대응하는 사용자 인터페이스 요소에 대한 표현 스타일(presentation style) 또는 표현 포맷(presentation format)의 속성을 기술한다. 사용자 이벤트 속성은, 사용자 인터페이스 요소 식별자(ID), 속성(가령, 테두리(border), 폰트, 폰트 크기, 폰트 색상, 배경, 배경 색상, 스타일, 우정렬, 중앙 정렬, 우정렬, 싱글 스페이스(single space), 더블 스페이스 등), 속성 값(가령, 거짓(false), 참(true), 0, 1 등), 및 그 밖의 다른 유형의 정보를 포함할 수 있다. 예를 들어, GUI 스크린은 거짓(False)으로 설정된 크기 조절 가능함 속성(Resizeable property)과 함께 식별자 "윈도 001"을 가지며, 이는 GUI 스크린이 런타임 시 사용자에 의해 크기 조절될 수 없음을 의미한다. 이는 단지 몇 가지 예에 불과하며, 임의의 사용자 인터페이스 요소 및 사용자 인터페이스 속성이 특정 구현예에 따라 원하는 대로 구현될 수 있다. 이러한 맥락으로 실시예는 제한되지 않는다. The user event attribute may be any user interface element displayed on the user interface layout, e.g., an attribute that can be assigned to a field, screen, or graphic object. A user event attribute describes an attribute of a presentation style or presentation format for a corresponding user interface element. User event attributes may include user interface element identifiers (ID), attributes (e.g., borders, fonts, font sizes, font colors, backgrounds, background colors, styles, , Double space, etc.), attribute values (e.g., false, true, 0, 1, etc.), and other types of information. For example, a GUI screen has an identifier "Window 001" with a Resizeable property set to False, meaning that the GUI screen cannot be resized by the user at runtime. This is just a few examples, and any user interface element and user interface attribute may be implemented as desired, depending on the particular implementation. In this context, embodiments are not limited.

웹 클라이언트(430)는 변경된 사용자 이벤트 속성(451)의 세트를 메시지(450)로 서버 애플리케이션(410)에게 전송할 수 있다. 서버(402) 상에서 동작하는 상기 사용자 인터페이스 관리자(418)는 변경된 사용자 이벤트 속성(451)을 메시지(450)로 스트립트 인터프리터(41)에게 포워드(forward)하여 처리되도록 한다. 상기 서버 애플리케이션(410)은 서버 애플리케이션(410)에 대해 임의의 애플리케이션 로직을 실행하기 전에 애플리케이션 입력 및 애플리케이션 상태가 적절함을 보장할 수 있다. 그 후 클라이언트(404)로부터 수신된 메시지(450) 내 변경된 사용자 이벤트 속성(451)으로부터 도출된 임의의 애플리케이션 규칙의 실행 시 필요한 경우, 상기 스크립트 인터프리터(414)는 데이터베이스(420)를 액세스하는 파일 관리자(416)와 통신할 수 있다. 적절한 애플리케이션 로직의 실행 후, 해석 런타임 엔진(412)은 GUI 독립적 객체(452)를 생성할 수 있다. 상기 GUI 독립적 객체(452)는 업데이트된 사용자 이벤트 속성(454) 및 그 밖의 다른 정보를 포함할 수 있다. 서버(402)에 의해 구현되는 사용자 인터페이스 관리자(418)는 임의의 업데이트된 사용자 이벤트 속성(454)과 함께 GUI 독립적 객체(452)를 클라이언트(404)에게 다시 되전송할 수 있다. 그 후 클라이언트 어댑터(432)는 클라이언트 사용자 인터페이스 관리자(436) 및 렌더링 엔진(438)을 통해 이전에 GUI 독립적 객체(452)를 이용해 렌더링된 이미지를 서버 애플리케이션(410)에 의해 생성되고 이로부터 수신된 업데이트된 사용자 이벤트 속성(454)과 함께 업데이트할 수 있다. The web client 430 can send the changed set of user event attributes 451 to the server application 410 in a message 450. The user interface manager 418 operating on the server 402 forwards the changed user event attribute 451 to the script interpreter 41 as a message 450 for processing. The server application 410 may ensure that application input and application state are appropriate before executing any application logic for the server application 410. The script interpreter 414 then accesses the database 420 as needed to execute any application rules derived from the changed user event attribute 451 in the message 450 received from the client 404. Communicate with 416. After execution of the appropriate application logic, the interpretation runtime engine 412 may create a GUI independent object 452. The GUI independent object 452 may include an updated user event attribute 454 and other information. The user interface manager 418 implemented by the server 402 may again send the GUI independent object 452 back to the client 404 with any updated user event attributes 454. [ The client adapter 432 then sends the rendered image using the GUI independent object 452 previously through the client user interface manager 436 and the rendering engine 438 to the server application 410, It can be updated with the updated user event attribute 454.

앞서 기재된 실시예에 대한 동작은 하나 이상의 논리 흐름을 참조하여 추가로 기재될 수 있다. 나타나는 논리 흐름은, 그렇지 않다고 언급되지 않는 한, 제시되는 순서로, 또는 임의의 특정 순서로 실행될 필요가 없다. 덧붙여, 논리 흐름과 관련하여 기재된 다양한 활동이 순차적으로 또는 병렬로 실행될 수 있다. 논리 흐름은, 설계 및 수행 제약사항의 특정 세트에 대해 원하는 대로, 기재된 실시예의 하나 이상의 하드웨어 요소 및/또는 소프트웨어 요소 또는 대안적 요소를 이용해 구현될 수 있다. 예를 들어, 논리 흐름은 로직 장치(가령, 범용 또는 특수 컴퓨터)에 의해 실행되기 위한 로직(가령, 컴퓨터 프로그램 명령)으로서 구현될 수 있다. Operation for the above-described embodiments may be further described with reference to one or more logic flows. The logic flows that appear do not need to be executed in the order presented, or in any particular order, unless stated otherwise. In addition, the various activities described in connection with the logic flow can be executed sequentially or in parallel. The logic flow may be implemented using one or more hardware elements and / or software elements or alternative elements of the described embodiments, as desired for a particular set of design and performance constraints. For example, the logic flow may be implemented as logic (eg, computer program instructions) for execution by a logic device (eg, a general purpose or special computer).

도 5는 논리 흐름(500)의 하나의 실시예를 도시한다. 상기 논리 흐름(500)은 하나 이상의 실시예에 따라 수행되는 동작을 도시할 수 있다. 예를 들어, 상기 논리 흐름(500)은 웹 클라이언트(430) 및/또는 서버 애플리케이션(410)에 의해 수행되는 동작을 도시할 수 있다. 5 illustrates one embodiment of a logic flow 500. The logic flow 500 may illustrate operations performed in accordance with one or more embodiments. For example, the logic flow 500 may illustrate the operations performed by the web client 430 and / or server application 410.

상기 논리 흐름(500) 중, 블록(502)에서 사용자는 클라이언트 측 사용자 인터페이스에서 실행되는 웹 클라이언트와 상호대화한다. 예를 들어, 웹 클라이언트(430)는 렌더링 엔진(438)에 의해 표현(present)될 때 사용자 인터페이스의 하나 이상의 사용자 인터페이스 요소에 영향을 미치는 입력 장치로부터 수신된 하나 이상의 제어 지시(control directive)의 형태로 된 사용자 입력을 수신할 수 있다. 상기 사용자 입력은 사용자 이벤트를 야기하는 사용자 인터페이스 요소와 상호대화할 수 있다. 예를 들어, 사용자는 GUI 스크린에 표현되는 폼 상에서 하나의 필드를 선택하고 상기 필드에 대한 값을 수정할 수 있다. Of the logic flow 500, at block 502, the user interacts with a web client running in a client-side user interface. For example, the web client 430 may be in the form of one or more control directives received from an input device that affect one or more user interface elements of the user interface when presented by the rendering engine 438. [ User input can be received. The user input may interact with a user interface element that causes a user event. For example, the user can select one field on the form that is displayed on the GUI screen and modify the value for that field.

논리 흐름(500) 중, 블록(504)에서, 거기서 실행 중인 클라이언트 어댑터가 서버 상에서 실행되는 서버 애플리케이션과 호환 가능한 방식으로 사용자 이벤트를 나타내는 제어 지시를 해석(interpret)할 수 있다. 예를 들어, 웹 클라이언트(430)에 의해 실행되는 클라이언트 어댑터(432)는 사용자 이벤트를 서버 애플리케이션(410)과 유사한 방식으로 해석할 수 있다. 사용자 이벤트는 웹 클라이언트(430) 상에서 실행 중인 사용자 인터페이스와의 하나 이상의 사용자 상호대화, 가령, 비-제한적 예를 들면, 버튼 클릭하기, 텍스트 필드 채우기 등을 포함할 수 있다. In logic flow 500, at block 504, the client adapter running there may interpret control instructions representing a user event in a manner compatible with the server application running on the server. For example, the client adapter 432 executed by the web client 430 may interpret the user event in a manner similar to the server application 410. The user event may include one or more user interaction with the user interface running on the web client 430, e.g., non-limiting such as button clicking, text field populating, and the like.

논리 흐름(500) 중, 블록(504)에서의 해석 동작은 새로 입력된 사용자 이벤트 속성을 검사하여, 서버 애플리케이션이 알 필요가 있는 범위까지 다이아몬드(506)에서, 사용자 이벤트 속성이 변경됐는지 여부를 결정할 수 있다. 예를 들어, 클라이언트 어댑터(432)는 임의의 사용자 입력 및 이에 대응하는 영향 받은 사용자 인터페이스 요소의 속성의 변경을 검사하여, 사용자 이벤트 속성이 일부 임계치보다 크게 변경됐는지 여부를 결정할 수 있다. 예를 들어, 필드를 선명하게 만들기 위해 상기 필드 위에서 호버링하는 것은 사용자 이벤트 속성의 어떠한 변경을 트리거하기엔 불충분할 수 있으며, 반면에, 필드를 선택하는 것은 서버 애플리케이션(410)에게 통지하기에 충분할 것이다. In logic flow 500, the analysis operation at block 504 examines the newly entered user event attribute to determine whether the user event attribute has changed in the diamond 506 to the extent that the server application needs to know Can be. For example, the client adapter 432 may examine any user input and the corresponding change in the attribute of the affected user interface element to determine whether the user event attribute has changed greater than some threshold. For example, hovering over the field to sharpen the field may be insufficient to trigger any change in user event attributes, while selecting the field will be sufficient to notify the server application 410.

논리 흐름(500) 중, 통지가 필요한 경우, 블록(508)에서 클라이언트 어댑터는 임의의 계류 중인 변경된 사용자 이벤트 속성을 서버 애플리케이션에게 전송할 수 있다. 예를 들어, 클라이언트 어댑터(432)는 사용자 이벤트 속성(451)을 메시지(450)로 네트워크(250)를 통해 서버 애플리케이션(410)에게 전송할 수 있다. 일부 실시예에서, 클라이언트 어댑터(432)는 복수의 사용자 이벤트에 대해 변경된 사용자 이벤트 속성(451)의 복수의 세트를 메시지(450)로 서버(402) 상에서 실행 중인 서버 애플리케이션(410)에게 전송할 수 있다. 이러한 "배치(batch)" 전송은 많은 점에서 유용할 수 있는데, 가령, 사용자 이벤트 타이밍 설정 시 서버 애플리케이션(410)을 보조한다. 예를 들어, 스크립트 인터프리터(414)는 서버 애플리케이션(410)으로의 업데이트의 정확한 시퀀스를 보장하기 위해, 다양한 스크립트(가령, 프리-스크립트, 변경 스크립트, 포스트-스크립트 등)의 실행을 타이밍 설정할 수 있다. 또한 배치 전송은 네트워크(250)를 통해 더 적은 메시지(450)를 전송함으로써 통신 오버헤드를 감소시킬 수 있다. 그 밖의 다른 이점도 존재하며, 이 맥락에서 실시예는 제한되지 않는다. If, during logic flow 500, a notification is required, at block 508, the client adapter may send any pending changed user event attributes to the server application. For example, the client adapter 432 may send a user event attribute 451 to the server application 410 over the network 250 with a message 450. In some embodiments, the client adapter 432 may send a plurality of sets of modified user event attributes 451 for a plurality of user events to the server application 410 executing on the server 402 with the message 450 . This "batch" transmission may be useful in many ways, such as assisting the server application 410 in setting user event timing. For example, the script interpreter 414 can timing execution of various scripts (eg, pre-scripts, change scripts, post-scripts, etc.) to ensure the correct sequence of updates to the server application 410. . Batch transmission can also reduce communication overhead by sending fewer messages 450 over the network 250. Other advantages also exist, and embodiments are not limited in this context.

논리 흐름(500) 중, 블록(512)에서 비즈니스 로직 이벤트가 실행될 수 있기 전에, 블록(510)에서 서버 상에서 실행 중인 런타임 엔진이 서버 애플리케이션에 대한 적절한 입력/상태를 보장할 수 있다. 예를 들어, 서버(402) 상에서 실행 중인 해석 런타임 엔진(412)이, 임의의 애플리케이션 또는 비즈니스 로직을 실행하기 전에, 서버 애플리케이션(410)에 대해 적절한 애플리케이션 입력 및 애플리케이션 상태를 보장할 수 있다. Of the logic flow 500, before a business logic event can be executed at block 512, a runtime engine running on the server at block 510 can ensure proper input / state to the server application. For example, the interpretation runtime engine 412 running on the server 402 can ensure appropriate application input and application state for the server application 410 before executing any application or business logic.

논리 흐름(500) 중, 블록(514)에서, 비즈니스 로직의 실행으로부터 야기된 업데이트된 사용자 이벤트 속성은 GUI 독립적 객체와 함께 클라이언트 어댑터로 다시 되전송될 수 있다. 예를 들어, 애플리케이션 또는 비즈니스 로직의 실행으로부터 야기된 업데이트된 사용자 이벤트 속성(454)은 GUI 독립적 객체(452)와 함께 서버 애플리케이션(410)으로부터 웹 클라이언트(430)로 전송되어 클라이언트 어댑터(432)로 다시 되전송되게 할 수 있다. Of the logic flow 500, at block 514, the updated user event attribute resulting from the execution of the business logic may be sent back to the client adapter along with the GUI independent object. For example, an updated user event attribute 454 resulting from the execution of an application or business logic is sent from the server application 410 to the web client 430 along with the GUI independent object 452 to the client adapter 432 Can be sent back.

논리 흐름(500) 중, 그 후 클라이언트 어댑터는 업데이트된 사용자 이벤트 속성 및 GUI 독립적 객체를 이용해 블록(516)에서 클라이언트 사용자 인터페이스에 이전에 렌더링된 이미지를 업데이트할 수 있다. 예를 들어, 클라이언트 어댑터(432)는 GUI 독립적 객체(452)를 수신하고 렌더링 엔진(438)은 업데이트된 이벤트 속성(454) 및 GUI 독립적 객체(452)를 이용해 클라이언트 사용자 인터페이스에 이전에 렌더링된 이미지를 업데이트할 수 있다. During logic flow 500, the client adapter may then update the previously rendered image in the client user interface at block 516 using the updated user event attributes and the GUI independent object. For example, the client adapter 432 receives the GUI independent object 452 and the rendering engine 438 uses the updated event attribute 454 and the GUI independent object 452 to render the image previously rendered to the client user interface. Can be updated.

도 1a는 서버 애플리케이션(410)으로부터의 데이터를 이용해 클라이언트 어댑터(432)에 대해 GUI 독립적 객체(452)가 생성될 수 있는 방식에 대한 하나의 실시예를 도시한다. 앞서 기재된 바와 같이, 클라이언트 어댑터(432)는 업데이트된 사용자 이벤트 속성(454)을 갖는 GUI 독립적 객체(452)를 수신할 수 있다. 업데이트된 사용자 이벤트 속성(454)은 GUI 독립적 객체 메타데이터(602) 및 그 밖의 다른 정보를 포함할 수 있다. 하나의 실시예에서, GUI 독립적 객체 메타데이터(602)는 고정적(fixed) 또는 정적(static) 메타데이터를 포함할 수 있다. 업데이트된 사용자 이벤트 속성(454)은 속성/값 집합(property/value collection)(604)을 더 포함할 수 있다. 고정적/정적 GUI 독립적 객체 메타데이터(602)가 GUI 독립적 속성/값 집합(604)과 조합되어, 클라이언트 어댑터(432)에 의해 웹 클라이언트(430)에 렌더링될 수 있는 GUI 독립적 객체(606)를 산출할 수 있다. 1A illustrates one embodiment of how a GUI independent object 452 can be created for a client adapter 432 using data from the server application 410. As described above, the client adapter 432 may receive a GUI independent object 452 having an updated user event attribute 454. The updated user event attribute 454 can include GUI independent object metadata 602 and other information. In one embodiment, the GUI independent object metadata 602 may include fixed or static metadata. The updated user event attribute 454 may further include a property / value collection 604. The static / static GUI independent object metadata 602 is combined with the GUI independent attribute / value set 604 to yield a GUI independent object 606 that can be rendered to the web client 430 by the client adapter 432. can do.

도 1b는 도 1a에 제공된 구성을 이용해 특정 GUI 독립적 객체(452)가 생성될 수 있는 방식에 대한 하나의 실시예를 도시한다. 업데이트된 사용자 이벤트 속성(454)은 객체 메타데이터(612), 속성/값 집합(614), 및 그 밖의 다른 정보를 포함할 수 있다. FIG. 1B illustrates one embodiment of how a particular GUI independent object 452 can be created using the configuration provided in FIG. 1A. The updated user event attribute 454 may include object metadata 612, an attribute / value set 614, and other information.

업데이트된 사용자 이벤트 속성(454)은 하나 이상의 인터페이스 요소를 갖는 객체 메타데이터(612)를 포함할 수 있다. 이러한 예에서, 객체 메타데이터(612)는 필드의 형태를 가지며, 필드 A, 필드 B, 및 필드 C로 라벨링된 3개의 사용자 인터페이스 요소를 포함한다. 필드 A, B, 및 C 각각은 일반적으로 구절 '필드 A', '필드 B', 및 '필드 C' 각각으로 구성된 디폴트 폰트 텍스트를 감싸는 테두리를 갖는 텍스트 박스로서 나타난다.The updated user event attribute 454 can include object metadata 612 with one or more interface elements. In this example, the object metadata 612 is in the form of a field and comprises three user interface elements labeled as field A, field B, and field C. Each of the fields A, B, and C generally appears as a text box with a border surrounding the default font text, which is composed of the phrases 'field A', 'field B', and 'field C'.

업데이트된 사용자 이벤트 속성(454)은 속성/값 집합(614)을 더 포함할 수 있다. 하나의 실시예에서, 속성/값 집합(614)은 데이터 구조, 가령, 하나 이상의 튜플(tuple)(또는 행)을 갖는 테이블로 구현될 수 있으며, 이때 각각의 튜플은 사용자 인터페이스 요소에 대한 식별자, 사용자 인터페이스 요소에 대한 속성(property), 및 상기 속성에 대한 값을 포함하는 속성(attribute)(또는 열)을 포함한다. 식별자, 속성 및 값의 테이블은 객체 메타데이터(612)의 필드에 대응할 수 있다. The updated user event attribute 454 may further include an attribute / value set 614. In one embodiment, attribute / value set 614 may be implemented as a data structure, such as a table having one or more tuples (or rows), where each tuple is an identifier for a user interface element, An attribute for the user interface element, and an attribute (or column) containing a value for the attribute. The table of identifiers, attributes, and values may correspond to fields in object metadata 612.

함께 조합될 때 결과는 GUI 독립적 객체(616)일 수 있다. GUI 독립적 객체(616)에 도시된 것처럼, 필드 A는 일반적 메타데이터 버전으로부터 변경되지 않는데, 이의 속성 또는 값 중 어느 것도 속성/값 집합(614)에서 변경되지 않았기 때문이다. 속성/값 집합(614)에서 속성 '테두리'가 값 '거짓'으로 설정되었기 때문에 필드 B는 자신의 테두리 없이 나타난다. 속성/값 집합(614)에서 속성 '이탤릭체'가 값 '참'으로 설정되었기 때문에, 필드 C의 텍스트는 이탤릭체로 나타난다. 이제, 클라이언트 어댑터(432)의 렌더링 엔진(438)에 의해 객체(616)가 웹 클라이언트(430) 내 클라이언트(404) 상에서 렌더링될 수 있다. When combined together, the result may be a GUI independent object 616. As shown in the GUI independent object 616, the field A does not change from the generic metadata version, because none of its attributes or values have been changed in the attribute / value set 614. In attribute / value set 614, field B appears without its border because the attribute 'border' is set to the value 'false'. Since the attribute 'italic' in the attribute / value set 614 is set to the value 'true', the text in field C appears in italic. The object 616 may now be rendered on the client 404 in the web client 430 by the rendering engine 438 of the client adapter 432. [

도 7은 논리 흐름(700)의 하나의 실시예를 도시한다. 상기 논리 흐름(700)은 하나 이상의 실시예에 따라 수행되는 동작을 도시할 수 있다. 예를 들어, 논리 흐름(700)은 파괴됐던 클라이언트 어댑터(432)를 복원하기 위한 목적으로 웹 클라이언트(430) 및/또는 서버 애플리케이션(410)에 의해 수행되는 동작을 도시할 수 있다. 7 illustrates one embodiment of a logic flow 700. The logic flow 700 may illustrate operations performed in accordance with one or more embodiments. For example, logic flow 700 may illustrate operations performed by web client 430 and / or server application 410 for purposes of restoring a client adapter 432 that has been destroyed.

본원에 기재된 실시예의 또 다른 이점은 클라이언트 어댑터(432)가 파괴되는 경우 특정 클라이언트(404)에 렌더링되는 이미지가 복원될 수 있다는 것이다. 클라이언트 어댑터(432)가 파괴되는 경우, 다양한 GUI 종속적 객체(452)로 구성된 렌더링된 이미지도 역시 파괴된다. 그러나 서버 애플리케이션(410)은 GUI 독립적 객체(452)의 형태로 상태를 계속 보유할 수 있다. 도 7에 도시된 것처럼, 블록(702)에서 사용자는 클라이언트 측 사용자 인터페이스에서 실행 중인 웹 클라이언트(430)와 상호대화하여 클라이언트 어댑터(432)의 새로운 인스턴스를 생성할 수 있다. 그 후 블록(704)에서 상기 클라이언트 어댑터(432)의 새로운 인스턴스는 서버 애플리케이션(410)으로 재-연결될 수 있다. 재-연결 후, 서버 애플리케이션(410)은 모든 GUI 독립적 객체(452)에 대해 마지막으로 알려진 상태를 여전히 유지할 수 있다. 블록(706)에서, 모든 GUI 독립적 객체(452)에 대해 마지막으로 알려진 상태가 클라이언트(404)에게 다시 되전송되고 상기 클라이언트(404)에 의해 수신된다. 그 후 블록(708)에서 모든 GUI 독립적 객체(452)에 대해 마지막으로 알려진 상태가 클라이언트(404)의 웹 클라이언트(430)와 동기화될 수 있다. 결과적으로, 클라이언트 어댑터(432)에 대한 현재 상태가 서버 애플리케이션(410)에 의해 저장된 정보를 이용해 효과적으로 복원될 수 있다.Another advantage of the embodiments described herein is that the image rendered to a particular client 404 can be restored when the client adapter 432 is destroyed. When the client adapter 432 is destroyed, the rendered image composed of the various GUI dependent objects 452 is also destroyed. However, server application 410 may still maintain state in the form of GUI independent object 452. As shown in FIG. 7, at block 702 a user may interact with web client 430 running in a client-side user interface to create a new instance of client adapter 432. The new instance of the client adapter 432 can then be re-connected to the server application 410 at block 704. After re-connection, server application 410 may still maintain the last known state for all GUI independent objects 452. At block 706, the last known state for all GUI independent objects 452 is sent back to the client 404 and received by the client 404. The last known state for all GUI independent objects 452 may then be synchronized with the web client 430 of the client 404 at block 708. As a result, the current state for client adapter 432 can be effectively restored using the information stored by server application 410.

도 8은 이전에 기재된 바와 같은 다양한 실시예를 구현하기에 적합한 예시적 컴퓨팅 아키텍처(800)의 하나의 실시예를 도시한다. 상기 컴퓨팅 아키텍처(800)는 다양한 공통 컴퓨팅 요소, 가령, 하나 이상의 프로세서, 코-프로세서(co-processor), 메모리 유닛, 칩셋(chipset), 제어기, 주변장치, 인터페이스, 오실레이터(oscillator), 타이밍 장치(timing device), 비디오 카드, 오디오 카드, 멀티미디어 입/출력(I/O) 구성요소 등을 포함한다. 그러나 실시예는 상기 컴퓨팅 아키텍처(800)에 의한 구현예로 한정되지 않는다. 8 illustrates one embodiment of an example computing architecture 800 suitable for implementing various embodiments as previously described. The computing architecture 800 may include various common computing elements, such as one or more processors, co-processors, memory units, chipsets, controllers, peripherals, interfaces, oscillators, timing devices ( timing device), video card, audio card, and multimedia input / output (I / O) components. However, embodiments are not limited to implementations by the computing architecture 800.

도 8에 도시된 바와 같이, 컴퓨팅 아키텍처(800)는 처리 유닛(804), 시스템 메모리(806) 및 시스템 버스(808)를 포함한다. 상기 처리 유닛(804)은 다양한 상용화된 프로세서들 중 임의의 것일 수 있다. 듀얼 마이크로프로세서 및 그 밖의 다른 멀티-프로세서 아키텍처가 또한 처리 유닛(804)으로서 채용될 수 있다. 상기 시스템 버스(808)는 시스템 구성요소, 비-제한적 예를 들면, 시스템 메모리(806)에 대한 인터페이스를 처리 유닛(804)에게 제공한다. 상기 시스템 버스(808)는 다양한 상용화된 버스 아키텍처 중 임의의 것을 이용해 메모리 버스(메모리 제어기를 포함하거나 포함하지 않음), 주변장치 버스, 및 로컬 버스로 추가로 인터커넥트될 수 있는 몇 가지 유형의 버스 구조 중 임의의 것일 수 있다. As shown in FIG. 8, the computing architecture 800 includes a processing unit 804, a system memory 806, and a system bus 808. The processing unit 804 may be any of a variety of commercially available processors. Dual microprocessors and other multi-processor architectures may also be employed as the processing unit 804. The system bus 808 provides the processing unit 804 with an interface to system components, non-limiting, for example, system memory 806. The system bus 808 may be any type of bus structure that can be further interconnected to a memory bus (with or without a memory controller), a peripheral bus, and a local bus using any of a variety of commercially available bus architectures. May be any of

시스템 메모리(806)는 다양한 유형의 메모리 유닛, 가령, 리드 온리 메모리(ROM: read only memory), 랜덤 액세스 메모리(RAM: random-access memory, 동적 RAM(DRAM: dynamic RAM), 더블 데이터율 DRAM(DDRAM: Double-Data-Rate DRAM), 정적 RAM(SRAM: static RAM), 프로그램 가능한 ROM(PROM: programmable ROM), 소거 가능하고 프로그램 가능한 ROM(EPROM: erasable programmable ROM), 전기적으로 소거 가능하고 프로그램 가능한 ROM(EEPROM: electrically erasable programmable ROM), 플래시 메모리, 폴리머 메모리, 가령, 강유전체 폴리머 메모리(ferroelectric polymer memory), 오보닉 메모리(ovonic memory), 상 변화 또는 강유전체 메모리, 실리콘-옥사이드-니트라이드-옥사이드-실리콘(SONOS) 메모리, 자성 또는 광학 카드, 또는 정보를 저장하기에 적합한 그 밖의 다른 임의의 유형의 매체를 포함할 수 있다. 도 8에 도시된 실시예에서, 시스템 메모리(806)는 비휘발성 메모리(810) 및/또는 휘발성 메모리(812)를 포함할 수 있다. 기본 입/출력 시스템(BIOS: basic input/output system)이 비휘발성 메모리(810)에 저장될 수 있다. The system memory 806 may include various types of memory units such as read only memory (ROM), random-access memory (RAM), dynamic RAM (DRAM), and double data rate DRAM ( DDRAM: Double-Data-Rate DRAM), static RAM (SRAM), programmable ROM (PROM: programmable ROM), erasable and programmable ROM (EPROM: erasable programmable ROM), electrically erasable and programmable Electrical erasable programmable ROM (EEPROM), flash memory, polymer memory, such as ferroelectric polymer memory, ovonic memory, phase change or ferroelectric memory, silicon-oxide-nitride-oxide- A silicon (SONOS) memory, magnetic or optical card, or any other type of media suitable for storing information In the embodiment shown in FIG. The memory 806 may include a nonvolatile memory 810 and / or a volatile memory 812. A basic input / output system (BIOS) may be stored in the nonvolatile memory 810. have.

컴퓨터(802)는 다양한 유형의 컴퓨터 판독형 저장 매체, 가령, 내부 하드 디스크 드라이브(HDD: hard disk drive)(814), 이동식 자기 디스크(818)로부터 읽거나 쓰기 위해 자기 플로피 디스크 드라이브(FDD: floppy disk drive)(816), 및 이동식 광학 디스크(822)(가령, CD-ROM, 또는 DVD)로부터 읽거나 쓰기 위해 광학 디스크 드라이브(820)를 포함할 수 있다. HDD(814), FDD(816) 및 광학 디스크 드라이브(820)는, 각각 HDD 인터페이스(824), FDD 인터페이스(826) 및 광학 드라이브 인터페이스(828)를 통해 시스템 버스(808)로 연결될 수 있다. 외부 드라이브 구현을 위한 상기 HDD 인터페이스(824)는 전역 직렬 버스(USB: Universal Serial Bus) 및 IEEE 1394 인터페이스 기법 중 적어도 하나 또는 둘 모두를 포함할 수 있다. The computer 802 may be a magnetic floppy disk drive (FDD) for reading or writing from various types of computer readable storage media, such as an internal hard disk drive (HDD) 814, a removable magnetic disk 818. disk drive 816, and optical disk drive 820 for reading from or writing to removable optical disk 822 (eg, CD-ROM, or DVD). The HDD 814, the FDD 816, and the optical disk drive 820 may be connected to the system bus 808 through the HDD interface 824, the FDD interface 826, and the optical drive interface 828, respectively. The HDD interface 824 for implementing an external drive may include at least one or both of a universal serial bus (USB) and an IEEE 1394 interface technique.

드라이브 및 이와 연관된 컴퓨터-판독형 매체는 데이터, 데이터 구조, 컴퓨터-실행형 명령 등의 휘발성 및/또는 비휘발성 저장을 제공한다. 예를 들어, 복수의 프로그램 모듈은 드라이브 및 메모리 유닛(810, 812), 가령, 운영 체제(830), 하나 이상의 애플리케이션 프로그램(832), 그 밖의 다른 프로그램 모듈(834), 및 프로그램 데이터(836)에 저장될 수 있다. 하나 이상의 애플리케이션 프로그램(832), 그 밖의 다른 프로그램 모듈(834), 및 프로그램 데이터(836)는, 예를 들어, 클라이언트-서버 시스템(200, 300 및 400)을 위한 소프트웨어 구성요소를 포함할 수 있다. Drives and their associated computer-readable media provide volatile and / or nonvolatile storage of data, data structures, computer-executable instructions, and the like. For example, the plurality of program modules may include drive and memory units 810, 812, such as operating system 830, one or more application programs 832, other program modules 834, and program data 836. Can be stored in. One or more application programs 832, other program modules 834, and program data 836 may include software components for client-server systems 200, 300, and 400, for example. .

사용자는 하나 이상의 유/무선 입력 장치, 예를 들어, 키보드(838) 및 포인팅 장치, 가령 마우스(840)를 통해 명령어 및 정보를 컴퓨터(802)로 입력할 수 있다. 또 다른 입력 장치는 마이크로폰, 적외선(IR) 원격 제어, 조이스틱, 게임 패드, 스타일러스 펜, 터치 스크린 등을 포함할 수 있다. 이들 그리고 그 밖의 다른 입력 장치는 종종, 시스템 버스(808)로 연결된 입력 장치 인터페이스(842)를 통해 처리 유닛(804)으로 연결되지만, 그 밖의 다른 인터페이스, 가령, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스 등에 의해 연결될 수 있다. A user may enter commands and information into the computer 802 through one or more wired / wireless input devices, such as a keyboard 838 and a pointing device, such as a mouse 840. Still other input devices may include a microphone, infrared (IR) remote control, joystick, game pad, stylus pen, touch screen, and the like. These and other input devices are often connected to the processing unit 804 via an input device interface 842 connected to the system bus 808, but other interfaces such as parallel ports, IEEE 1394 serial ports, gaming It can be connected by a port, a USB port, an IR interface, or the like.

또한 하나 이상의 모니터(844) 또는 그 밖의 다른 유형의 디스플레이 장치가 인터페이스, 가령, 비디오 어댑터(846)를 통해 시스템 버스(808)로 연결된다. 모니터(844)에 추가로, 일반적으로 컴퓨터는 그 밖의 다른 주변 출력 장치, 가령, 스피커, 프린터 등을 포함한다. 또한 하나 이상의 모니터(845)는 입력 장치 인터페이스(842) 및/또는 허브, 가령, USB 허브(843)를 통해 시스템 버스(808)로 연결될 수 있다. 모니터(845)는 다양한 구성요소, 가령, 비디오 카메라, 어레이 마이크로폰, 터치 센서, 모션 센서, 스피커, 등을 포함할 수 있다. 구성요소는 USB 허브(843)를 통해 입력 장치 인터페이스(842)로 연결될 수 있다.One or more monitors 844 or other type of display device are also connected to the system bus 808 via an interface, such as a video adapter 846. In addition to the monitor 844, a computer generally includes other peripheral output devices such as speakers, printers, and the like. One or more monitors 845 may also be connected to the system bus 808 via an input device interface 842 and / or a hub, such as a USB hub 843. The monitor 845 may include various components, such as a video camera, array microphone, touch sensor, motion sensor, speaker, and the like. The component may be connected to the input device interface 842 via a USB hub 843.

컴퓨터(802)는 유선 및/또는 무선 통신을 통한 하나 이상의 원격 컴퓨터, 가령, 원격 컴퓨터(848)로의 논리적 연결을 이용해 네트워크 연결된 환경에서 동작할 수 있다. 상기 원격 컴퓨터(848)는 워크스테이션, 서버 컴퓨터, 라우터, 개인 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서 기반 엔터테인먼트 기기, 피어 장치(peer device) 또는 그 밖의 다른 공통 네트워크 노드일 수 있으며, 일반적으로 컴퓨터(802)와 관련하여 기재된 요소들 중 다수 또는 전부를 포함하지만, 간결성을 위해, 메모리/저장 장치(850)만 도시된다. 도시된 논리적 연결은 로컬 영역 네트워크(LAN)(852) 및/또는 더 큰 네트워크, 가령, 광역 네트워크(WAN)(854)로의 유/무선 연결성을 포함한다. 이러한 LAN 및 WAN 네트워크 연결 환경은 사무실 및 회사에서 일반적인 것이며, 기업내 컴퓨터 네트워크, 가령, 인트라넷을 용이하게 하고, 이들 모두 글로벌 통신 네트워크, 가령, 인터넷으로 연결될 수 있다. Computer 802 may operate in a networked environment using logical connections to one or more remote computers, such as remote computer 848, via wired and / or wireless communications. The remote computer 848 may be a workstation, server computer, router, personal computer, portable computer, microprocessor-based entertainment device, peer device or other common network node, and generally the computer 802 Although many or all of the elements described in connection with the description are included, for simplicity, only memory / storage device 850 is shown. The logical connections shown include wired / wireless connectivity to a local area network (LAN) 852 and / or a larger network, such as a wide area network (WAN) 854. These LAN and WAN network connection environments are commonplace in offices and corporations, facilitating intra-enterprise computer networks, such as intranets, all of which can be connected to a global communications network, such as the Internet.

LAN 네트워킹 환경에서 사용될 때, 컴퓨터(802)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(856)를 통해 LAN(852)으로 연결된다. 상기 어댑터(856)는 LAN(852)으로의 유선 및/또는 무선 통신을 촉진시킬 수 있으며, 상기 LAN은 어댑터(856)의 무선 기능과 통신하기 위해 배치된 무선 액세스 포인트를 더 포함할 수 있다. When used in a LAN networking environment, the computer 802 is connected to the LAN 852 through a wired and / or wireless communication network interface or adapter 856. The adapter 856 may facilitate wired and / or wireless communication to the LAN 852, which may further include a wireless access point disposed to communicate with the wireless function of the adapter 856.

WAN 네트워킹 환경에서 사용될 때, 컴퓨터(802)는 모뎀(858)을 포함할 수 있거나, WAN(854) 상의 통신 서버로 연결되거나 WAN(854)을 통해, 가령 인터넷을 이용해 통신을 구축하기 위한 그 밖의 다른 수단을 가진다. 내부 또는 외부의 유선 및/또는 무선 장치일 수 있는 모뎀(858)이 입력 장치 인터페이스(842)를 통해 시스템 버스(808)로 연결된다. 네트워크 연결된 환경에서, 컴퓨터(802) 또는 이들의 부분에 대하여 도시된 프로그램 모듈이 원격 메모리/저장 장치(850)에 저장될 수 있다. 도시된 네트워크 연결은 예시적이며, 컴퓨터들 간 통신 링크를 구축하기 위한 또 다른 수단이 사용될 수 있음을 알 것이다. When used in a WAN networking environment, the computer 802 may include a modem 858 or may be connected to a communication server on the WAN 854 or other for establishing communications over the WAN 854, such as using the Internet. Have other means. Modem 858, which may be an internal or external wired and / or wireless device, is connected to system bus 808 via input device interface 842. In a networked environment, program modules depicted for the computer 802 or portions thereof may be stored in the remote memory / storage device 850. It will be appreciated that the network connections shown are exemplary and that other means for establishing a communications link between the computers may be used.

상기 컴퓨터(802)는 IEEE 802 표준 패밀리를 이용해 유선 및 무선의 장치 또는 개체, 가령, 무선 통신(가령, IEEE 802.11 오버-더-에어(over-the-air) 변조 기법)으로 동작 가능하게 배치된 무선 장치, 가령, 예를 들어, 프린터, 스캐너, 데스크톱 및/또는 휴대용 컴퓨터, 개인 디지털 어시스턴스(PDA: personal digital assistant), 통신 위성, 무선으로 검출 가능한 태그와 연관된 임의의 시설 또는 장소(가령, 키오스크, 뉴스 스탠드, 화장실), 및 전화기와 통신하도록 동작한다. 이는 적어도 Wi-Fi(즉, Wireless Fidelity), WiMax, 및 Bluetooth™ 무선 기법을 포함한다. 따라서 통신은 종래의 네트워크의 경우와 같은 지정된 구조 또는 단순히 적어도 2개의 장치 간의 애드 호크(ad hoc) 통신일 수 있다. 안전하고, 신뢰할만하며, 고속의 무선 연결성을 제공하기 위해 Wi-Fi 네트워크는 IEEE 802.11x (a, b, g, 등)이라 일컬어지는 라디오 기법을 이용한다. Wi-Fi 네트워크는 컴퓨터들을 서로 연결, 인터넷으로 연결, 그리고 (IEEE 802.3-관련 매체 및 기능을 이용하는) 무선 네트워크로 연결하도록 사용될 수 있다.The computer 802 is operably deployed in wired and wireless devices or entities, such as wireless communications (e.g., IEEE 802.11 over-the-air modulation scheme) using the IEEE 802 standard family. Any facility or location associated with a wireless device such as, for example, a printer, scanner, desktop and / or portable computer, personal digital assistant (PDA), communication satellite, wirelessly detectable tag (eg, Kiosk, news stand, restroom), and telephone. This includes at least Wi-Fi (i.e., Wireless Fidelity), WiMax, and Bluetooth (TM) wireless techniques. Thus, the communication may be a designated structure as in the case of a conventional network or simply an ad hoc communication between at least two devices. To provide secure, reliable, and high-speed wireless connectivity, a Wi-Fi network uses a radio technique called IEEE 802.11x (a, b, g, etc.). Wi-Fi networks can be used to connect computers to each other, to the Internet, and to wireless networks (using IEEE 802.3-related media and functions).

도 9는 이전에 기재된 바와 같이 다양한 실시예를 구현하기에 적합한 예시적 통신 아키텍처(900)의 블록도를 도시한다. 통신 아키텍처(900)는 다양한 일반적인 통신 요소, 가령, 송신기, 수신기, 트랜시버, 라디오, 네트워크 인터페이스, 기저대역 프로세서, 안테나, 증폭기, 필터 등을 포함한다. 그러나 상기 실시예는 통신 아키텍처(900)에 의한 구현으로 한정되지 않는다. 9 illustrates a block diagram of an example communications architecture 900 suitable for implementing various embodiments as previously described. The communication architecture 900 includes various general communication elements, such as transmitters, receivers, transceivers, radios, network interfaces, baseband processors, antennas, amplifiers, filters, and the like. However, the embodiment is not limited to implementation by the communication architecture 900.

도 9에 도시된 바와 같이, 통신 아키텍처(900)는 하나 이상의 클라이언트(902) 및 서버(904)를 포함한다. 상기 클라이언트(902)는 웹 클라이언트(330)를 구현할 수 있다. 상기 서버(904)는 런타임 엔진(312)을 구현할 수 있다. 상기 클라이언트(902) 및 서버(904)는 각각의 클라이언트(902) 및 서버(904)의 로컬 정보, 가령, 쿠키 및/또는 이와 연관된 맥락적 정보(contextual information)를 저장하도록 사용될 수 있는 하나 이상의 각자의 클라이언트 데이터 저장소(908) 및 서버 데이터 저장소(910)로 동작 가능하게 연결된다. As shown in FIG. 9, communication architecture 900 includes one or more clients 902 and a server 904. The client 902 may implement a web client 330. The server 904 may implement a runtime engine 312. The client 902 and server 904 may each be used to store local information of each client 902 and server 904, such as cookies and / or contextual information associated therewith. Are operatively connected to the client data store 908 and the server data store 910.

클라이언트(902) 및 서버(904)는 통신 프레임워크(906)를 이용해 서로 간에 정보를 통신할 수 있다. 상기 통신 프레임워크(906)는 임의의 잘 알려진 통신 기법, 가령, 패킷-교환식 네트워크(packet-switched network)(가령, 공중 네트워크, 가령 인터넷, 사설 네트워크, 가령, 기업 인트라넷 등), 회선-교환식 네트워크(circuit-switched network)(가령, 공중 교환 전화망(public switched telephone network)), 또는 패킷-교환식 네트워크와 회로-교환식 네트워크의 조합(적합한 게이트웨이 및 변환기(translator)를 포함)과 함께 사용되기 위한 적합한 기법을 구현할 수 있다. 상기 클라이언트(902) 및 서버(904)는 통신 프레임워크(906)와 상호운용되도록 설계되는 다양한 유형의 표준 통신 요소, 가령, 하나 이상의 통신 인터페이스, 네트워크 인터페이스, 네트워크 인터페이스 카드(NIC: network interface card), 라디오, 무선 송신기/수신기(송수신기), 유선 및/또는 무선 통신 매체, 물리적 연결기 등을 포함할 수 있다. 비-제한적 예를 들면, 통신 매체는 유선 통신 매체와 무선 통신 매체를 포함한다. 유선 통신 매체의 예시로는 전선(wire), 케이블, 금속 도선(metal lead), 인쇄 회로 기판(PCB), 뒤판(backplane), 스위치 패브릭(switch fabric), 반도체 물질, 꼬임쌍 전선(twisted-pair wire), 동축 케이블(co-axial cable), 광섬유, 전파되는 신호 등을 포함할 수 있다. 무선 통신 매체의 예시는 음향, 라디오 주파수(RF) 스펙트럼, 적외선 및 그 밖의 다른 무선 매체를 포함할 수 있다. 클라이언트(902)와 서버(904) 간의 한 가지 가능한 통신은 둘 이상의 컴퓨터 프로세스 간에 전송되도록 구성된 데이터 패킷의 형태로 된 것일 수 있다. 데이터 패킷은 가령 쿠키 및/또는 이와 연관된 맥락적 정보를 포함할 수 있다.Client 902 and server 904 may communicate information between each other using communication framework 906. The communication framework 906 may be any well-known communication technique, such as a packet-switched network (eg, public network, such as the Internet, a private network, such as a corporate intranet, etc.), a circuit-switched network. suitable techniques for use with circuit-switched networks (e.g., public switched telephone networks) or combinations of packet-switched and circuit-switched networks (including suitable gateways and translators) Can be implemented. The client 902 and server 904 are various types of standard communication elements designed to interoperate with the communication framework 906, such as one or more communication interfaces, network interfaces, network interface cards (NICs). , Radio, wireless transmitter / receiver (transceiver), wired and / or wireless communication media, physical connector, and the like. By way of non-limiting example, communication media includes wired and wireless communication media. Examples of wired communication media include wire, cable, metal lead, printed circuit board (PCB), backplane, switch fabric, semiconductor material, twisted-pair wire, co-axial cable, optical fiber, propagated signal, and the like. Examples of wireless communication media may include acoustic, radio frequency (RF) spectra, infrared, and other wireless media. One possible communication between the client 902 and the server 904 may be in the form of a data packet configured to be transmitted between two or more computer processes. The data packet may comprise a cookie and / or contextual information associated with it, for example.

하드웨어 요소, 소프트웨어 요소, 또는 이들의 조합을 이용해 다양한 실시예가 구현될 수 있다. 하드웨어 요소의 예시는 장치, 로직 장치, 구성요소, 프로세서, 마이크로프로세서, 회로, 회로 요소(가령, 트랜지스터, 레지스터, 커패시터, 인덕터 등), 집적 회로, 주문형 집적 회로(ASIC: application specific integrated circuit), 프로그램 가능한 로직 장치(PLD: programmable logic device), 디지털 신호 프로세서(DSP: digital signal processor), 현장 프로그램 가능한 게이트 어레이(FPGA: field programmable gate array), 메모리 유닛, 로직 게이트, 레지스터, 반도체 장치, 칩, 마이크로칩, 칩 셋 등을 포함할 수 있다. 소프트웨어 요소의 예시는 소프트웨어 컴포넌트, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 기계 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메쏘드, 프로시저, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령 세트(instruction set), 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼, 또는 이들의 임의의 조합을 포함할 수 있다. 실시예가 하드웨어 요소 및/또는 소프트웨어 요소로 이용해 구현되는지 여부를 결정하는 것은 임의의 개수의 요인들, 가령, 희망 계산 속도(computational rate), 파워 레벨, 열 허용오차, 프로세싱 사이클 예산, 입력 데이터 속도, 출력 데이터 속도, 메모리 자원, 데이터 버스 속도 및 그 밖의 다른 설계 또는 성능 제약 사항에 따라, 주어진 구현예에 대해 바람직한 대로 달라질 수 있다.Various embodiments may be implemented using hardware elements, software elements, or a combination thereof. Examples of hardware components include, but are not limited to, devices, logic devices, components, processors, microprocessors, circuits, circuit elements (e.g., transistors, resistors, capacitors, inductors, etc.), integrated circuits, application specific integrated circuits A programmable logic device (PLD), a digital signal processor (DSP), a field programmable gate array (FPGA), a memory unit, a logic gate, a register, Microchips, chipsets, and the like. Examples of software components are software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, An application program interface (API), an instruction set, a computing code, a computer code, a code segment, a computer code segment, a word, a value, a symbol, or any combination thereof. Determining whether an embodiment is implemented using hardware elements and / or software elements may include any number of factors, such as desired computational rate, power level, thermal tolerance, processing cycle budget, input data rate, Depending on the output data rate, memory resources, data bus speed, and other design or performance constraints, it may vary as desired for a given implementation.

일부 실시예는 제조 물품을 포함할 수 있다. 제조 물품은 로직을 저장하도록 구성된 컴퓨터-판독형 저장 매체를 포함할 수 있다. 컴퓨터-판독형 저장 매체의 예는 전자 데이터를 저장할 수 있는 임의의 저장 매체, 가령, 휘발성 메모리 또는 비휘발성 메모리, 이동식 또는 비이동식 메모리, 소거식 또는 비소거식 메모리, 쓰기 가능한(writeable) 또는 다시 쓰기 가능한(re-writeable) 메모리 등을 포함할 수 있다. 로직의 예는 다양한 소프트웨어 요소, 가령, 소프트웨어 구성요소, 프로그램, 애플리케이션, 컴퓨터 프로그램, 애플리케이션 프로그램, 시스템 프로그램, 기계 프로그램, 운영 체제 소프트웨어, 미들웨어, 펌웨어, 소프트웨어 모듈, 루틴, 서브루틴, 함수, 메쏘드, 프로시저, 소프트웨어 인터페이스, 애플리케이션 프로그램 인터페이스(API), 명령 세트, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트, 컴퓨터 코드 세그먼트, 워드, 값, 심볼 또는 이들의 임의의 조합을 포함할 수 있다. 하나의 실시예에서, 예를 들어, 제조 물품은, 컴퓨터에 의해 실행될 때, 컴퓨터로 하여금 기재된 실시예에 따르는 방법 및/또는 동작을 수행하게 하는 실행 가능한 컴퓨터 프로그램 명령을 저장할 수 있다. 실행 가능한 컴퓨터 프로그램 명령은 임의의 적합한 유형의 코드, 가령, 소스 코드, 컴파일된 코드, 해석된 코드(interpreted code), 실행 가능한 코드, 정적 코드, 동적 코드 등을 포함할 수 있다. 상기 실행 가능한 컴퓨터 프로그램 명령은 컴퓨터에게 특정 함수를 수행할 것을 명령하기 위해 지정된 컴퓨터 언어, 방식 또는 신택스(syntax)에 따라 구현될 수 있다. 임의의 적합한 하이-레벨, 로우-레벨, 객체-지향, 비주얼, 컴파일된, 및/또는 해석된 프로그래밍 언어를 이용해 상기 명령은 구현될 수 있다. Some embodiments may include articles of manufacture. The article of manufacture may comprise a computer-readable storage medium configured to store logic. Examples of computer-readable storage media include any storage medium capable of storing electronic data, such as volatile or non-volatile memory, removable or non-removable memory, erasable or non-erasable memory, writeable or rewritable Re-writeable memory and the like. Examples of logic include various software elements, such as software components, programs, applications, computer programs, application programs, system programs, machine programs, operating system software, middleware, firmware, software modules, routines, subroutines, functions, methods, Procedures, software interfaces, application program interfaces (APIs), instruction sets, computing code, computer code, code segments, computer code segments, words, values, symbols, or any combination thereof. In one embodiment, for example, an article of manufacture may store executable computer program instructions that, when executed by a computer, cause the computer to perform a method and / or operation in accordance with the described embodiment. Executable computer program instructions may include any suitable type of code, such as source code, compiled code, interpreted code, executable code, static code, dynamic code, and the like. The executable computer program instructions may be implemented in accordance with a computer language, method, or syntax that is intended to instruct a computer to perform a particular function. The instructions may be implemented using any suitable high-level, low-level, object-oriented, visual, compiled, and / or interpreted programming language.

일부 실시예는 "하나의 실시예" 또는 "한 실시예"라는 표현 및 이들의 파생어를 이용해 기재될 수 있다. 이들 용어는 실시예와 관련하여 기재되는 특정 특징, 구조 또는 특성이 적어도 하나의 실시예에 포함됨을 의미한다. 본 명세서의 다양한 곳에서 "하나의 실시예에서"라는 구문의 등장이 모두 반드시 동일한 실시예를 언급하는 것은 아니다. Some embodiments may be described using the expression “one embodiment” or “an embodiment” and derivatives thereof. These terms mean that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment. The appearances of the phrase “in one embodiment” in various places in the specification are not necessarily all referring to the same embodiment.

일부 실시예는 "결합된" 및 "연결된"이라는 표현 및 이들의 파생어를 이용해 기재될 수 있다. 이들 용어는 반드시 서로 동의어로 의도된 것은 아니다. 예를 들어, 일부 실시예는, 둘 이상의 요소가 서로 직접 물리적 또는 전기적 접촉하고 있음을 나타내기 위해 용어 "연결된" 및/또는 "결합된"을 이용해 기재될 수 있다. 그러나 용어 "결합된"은 또한 둘 이상의 요소가 서로 직접 접촉하지는 않지만, 서로 협업하거나 상호대화하는 것을 의미할 수 있다. Some embodiments may be described using the expression “coupled” and “connected” and derivatives thereof. These terms are not necessarily intended as synonyms for each other. For example, some embodiments may be described using the terms "connected" and / or "coupled" to indicate that two or more elements are in direct physical or electrical contact with each other. However, the term "coupled" may also mean that two or more elements are not in direct contact with each other, but that they cooperate or interact with each other.

본원의 요약서는 읽는 자가 기술적 개시 내용의 본질을 빠르게 알아낼 수 있도록 제공된 것이다. 특허청구범위의 범위 또는 의미를 해석하거나 제한하기 위해 사용되지 않을 것임을 이해해야 한다. 덧붙여, 상기 상세한 설명에서 다양한 특징들이 개시 내용을 간결하게 하기 위한 목적으로 하나의 실시예로 그룹지어짐을 알 수 있다. 이러한 개시 방법은 청구되는 실시예가 각각의 청구항에서 명시적으로 기재되는 것보다 더 많은 특징들을 필요로 한다는 의도를 반영하는 것으로 해석되어서는 안 된다. 오히려, 이하의 특허청구범위가 나타내는 것처럼, 발명은 하나의 단일 개시된 실시예의 모든 특징들보다 적은 것으로 구성된다. 따라서 다음의 특허청구범위는 상세한 설명에 속하며, 각각의 청구항은 그들 자체가 개별적인 실시예이다. 이하의 특허청구범위에서, "포함하는(including)" 및 "여기서(in which)" 라는 용어는 각각의 용어 "포함하는(comprising)" 및 "여기서(wherein)"의 동의어로서 사용된다. 덧붙여, 용어 "제 1", "제 2", "제 3" 등은 라벨로서 사용되는 것에 불과하며, 이들의 목적어에 어떠한 수치적 요건도 부여하고자 하는 것이 아니다.The abstract herein is provided to enable a reader to quickly find out the nature of the technical disclosure. It should be understood that it will not be used to interpret or limit the scope or meaning of the claims. In addition, in the foregoing Detailed Description, it can be seen that various features are grouped into one embodiment for the purpose of streamlining the disclosure. This disclosure should not be interpreted as reflecting an intention that the claimed embodiments require more features than are expressly recited in each claim. Rather, as the following claims indicate, the invention consists in less than all features of one single disclosed embodiment. Accordingly, the following claims are in the detailed description, and each claim is itself a separate embodiment. In the following claims, the terms "including" and "in which" are used as synonyms for the respective terms "comprising" and "wherein". In addition, the terms "first", "second", "third", and the like are merely used as labels, and are not intended to impose any numerical requirements on these objects.

본 발명이 구조의 특징부 및/또는 방법의 동작에 특정적인 언어로 기재되었지만, 이하의 특허청구범위에서 정의되는 발명은 앞서 기재된 특정 특징부 또는 동작으로 반드시 제한되지 않음을 이해해야 한다. 오히려, 앞서 기재된 특정 특징부 및 동작은 특허청구범위를 구현하는 예시적 형태로서 개시된 것이다. While the invention has been described in language specific to the operation of features and / or methods of construction, it is to be understood that the invention as defined in the following claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as exemplary forms of implementing the claims.

Claims (10)

컴퓨터에 의해 구현되는 방법으로서,
클라이언트 사용자 인터페이스에서의 사용자 이벤트를 나타내는 제어 지시(control directive)를 수신하는 단계,
상기 사용자 이벤트와 연관된 사용자 이벤트 속성이 변경됐는지 여부를 결정하는 단계,
변경된 사용자 이벤트 속성을 서버 상에서 실행 중인 서버 애플리케이션으로 전송하는 단계,
상기 서버 애플리케이션으로부터 업데이트된 사용자 이벤트 속성을 갖는 그래픽 사용자 인터페이스(GUI) 독립적 객체를 수신하는 단계, 및
상기 서버 애플리케이션으로부터 수신된 상기 GUI 독립적 객체 및 업데이트된 사용자 이벤트 속성을 기초로 상기 클라이언트 사용자 인터페이스에서 렌더링되는 이미지를 업데이트하는 단계를 포함하는
컴퓨터에 의해 구현되는 방법.
15. A method implemented by a computer,
Receiving a control directive indicating a user event in the client user interface,
Determining whether a user event attribute associated with the user event has changed;
Sending the changed user event attribute to a server application running on the server,
Receiving a graphical user interface (GUI) independent object having updated user event attributes from the server application, and
Updating the image rendered in the client user interface based on the GUI independent object and the updated user event attribute received from the server application.
A method implemented by a computer.
제1항에 있어서,
업데이트된 사용자 이벤트 속성을 갖는 GUI 독립적 객체를 수신하는 상기 단계 - 상기 업데이트된 사용자 이벤트 속성은, 하나 이상의 사용자 인터페이스 요소를 갖는 객체 메타데이터, 또는 각각의 튜플이 사용자 인터페이스 요소에 대한 식별자를 포함하는 하나 이상의 튜플(tuple), 상기 사용자 인터페이스 요소에 대한 속성, 및 상기 속성에 대한 값을 갖는 속성/값 집합 중 적어도 하나를 포함함 -
을 포함하는 컴퓨터에 의해 구현되는 방법.
The method of claim 1,
Receiving a GUI independent object having an updated user event attribute, wherein the updated user event attribute is one in which object metadata having one or more user interface elements or each tuple includes an identifier for a user interface element At least one of at least a tuple, an attribute for the user interface element, and an attribute / value set having a value for the attribute;
A method implemented by a computer comprising a.
제1항에 있어서,
복수의 사용자 이벤트에 대한 복수의 변경된 사용자 이벤트 속성을 메시지로 상기 서버 상에서 실행 중인 상기 서버 애플리케이션에게 전송하는 단계
를 포함하는 컴퓨터에 의해 구현되는 방법.
The method of claim 1,
Sending a plurality of changed user event attributes for a plurality of user events as a message to the server application running on the server.
≪ / RTI >
제1항에 있어서,
상기 서버 애플리케이션으로부터 수신된 상기 GUI 독립적 객체 및 업데이트된 사용자 이벤트 속성을 기초로 클라이언트 사용자 인터페이스에서 렌더링된 이미지의 하나 이상의 사용자 인터페이스 요소를 업데이트하는 단계
를 포함하는 컴퓨터에 의해 구현되는 방법.
The method of claim 1,
Updating one or more user interface elements of an image rendered in a client user interface based on the GUI independent object and updated user event attributes received from the server application.
≪ / RTI >
제1항에 있어서,
클라이언트 어댑터의 이전 인스턴스 및 이와 연관된, GUI 종속적 객체로 구성되는 렌더링된 이미지가 파괴되었을 경우 클라이언트 어댑터의 새로운 인스턴스를 생성하는 단계,
상기 클라이언트 어댑터의 상기 새로운 인스턴스를 상기 서버 애플리케이션으로 재연결(reconnect)하는 단계,
상기 서버 애플리케이션으로부터의 모든 GUI 독립적 객체에 대한 마지막으로 알려진 상태(last known state)를 수신하는 단계, 및
상기 클라이언트 어댑터의 상기 새로운 인스턴스에서 상기 서버 애플리케이션으로부터 수신된 모든 GUI 독립적 객체에 대한 상기 마지막으로 알려진 상태를 동기화하는 단계
를 포함하는 컴퓨터에 의해 구현되는 방법.
The method of claim 1,
Creating a new instance of the client adapter when the rendered image composed of the previous instance of the client adapter and its associated GUI dependent objects is destroyed,
Reconnecting the new instance of the client adapter to the server application,
Receiving a last known state for all GUI independent objects from the server application, and
Synchronizing the last known state for all GUI independent objects received from the server application in the new instance of the client adapter
≪ / RTI >
실행될 때, 시스템으로 하여금, 청구항 제1항, 제2항, 제3항, 제4항 및 제5항 중 어느 한 항에 따른 방법을 수행하도록 하는 명령을 포함하는 저장 매체
를 포함하는 제조 물품.
When executed, a storage medium comprising instructions for causing a system to perform a method according to any one of claims 1, 2, 3, 4 and 5.
An article of manufacture comprising a.
로직 장치, 및
상기 로직 장치 상에서 동작하는 웹 클라이언트 - 상기 웹 클라이언트는 클라이언트 사용자 인터페이스에 대한 사용자 이벤트를 검출하고, 상기 사용자 이벤트와 연관된 사용자 이벤트 속성의 변경을 서버 애플리케이션으로 전송하며, 그래픽 사용자 인터페이스(GUI) 독립적 객체 및 업데이트된 사용자 이벤트 속성을 상기 서버 애플리케이션으로부터 수신하고, 상기 서버 애플리케이션으로부터 수신된 상기 GUI 독립적 객체와 업데이트된 사용자 이벤트 속성을 이용해 상기 클라이언트 사용자 인터페이스에서 렌더링된 이미지를 업데이트하도록 동작하는 클라이언트 어댑터를 포함함 -
를 포함하는 장치.
Logic devices, and
A web client operating on the logic device, the web client detecting a user event for a client user interface, sending a change in a user event attribute associated with the user event to a server application, a graphical user interface (GUI) independent object, and A client adapter operative to receive an updated user event attribute from the server application and to update an image rendered in the client user interface using the updated GUI event and the updated user event attribute received from the server application.
/ RTI >
제7항에 있어서,
상기 GUI 독립적 객체는 업데이트된 사용자 이벤트 속성을 갖고, 상기 업데이트된 사용자 이벤트 속성은 객체 메타데이터와 속성/값 집합을 포함하고, 상기 객체 메타데이터는 하나 이상의 사용자 인터페이스 요소를 포함하며, 상기 속성/값 집합은 각각의 튜플이 사용자 인터페이스 요소에 대한 식별자를 포함하는 하나 이상의 튜플, 상기 사용자 인터페이스 요소에 대한 속성, 및 상기 속성에 대한 값을 포함하는
장치.
8. The method of claim 7,
The GUI independent object has an updated user event attribute, the updated user event attribute includes object metadata and a set of attributes / values, the object metadata includes one or more user interface elements, and the attribute / value The set includes one or more tuples where each tuple includes an identifier for a user interface element, an attribute for the user interface element, and a value for the attribute.
Device.
제7항에 있어서,
상기 클라이언트 어댑터는 상기 클라이언트 사용자 인터페이스를 제어하기 위한 사용자 인터페이스 관리자, 또는 상기 서버 애플리케이션으로부터 수신된 상기 GUI 독립적 객체 및 업데이트된 사용자 이벤트 속성을 기초로 상기 렌더링된 이미지를 업데이트하기 위한 렌더링 엔진 중 적어도 하나를 포함하는
장치.
8. The method of claim 7,
The client adapter may be configured to include at least one of a user interface manager for controlling the client user interface, or a rendering engine for updating the rendered image based on the GUI independent object and an updated user event attribute received from the server application. Containing
Device.
제7항에 있어서,
상기 웹 클라이언트는
상기 클라이언트 어댑터의 이전 인스턴스 및 이와 연관된, 하나 이상의 GUI 종속적 객체를 포함하는 렌더링된 이미지가 파괴되었을 경우 상기 클라이언트 어댑터의 새로운 인스턴스를 생성하고 - 상기 클라이언트 어댑터의 상기 새로운 인스턴스는 상기 서버 애플리케이션으로 재연결되도록 동작함 - , 상기 서버 애플리케이션으로부터 모든 GUI 독립적 객체에 대해 마지막으로 알려진 상태를 수신하며, 상기 클라이언트 어댑터의 상기 새로운 인스턴스에서 상기 서버 애플리케이션으로부터 수신된 모든 GUI 독립적 객체에 대해 마지막으로 알려진 상태를 동기화시키도록 동작하는
장치.
8. The method of claim 7,
The web client
Create a new instance of the client adapter when a rendered image that includes a previous instance of the client adapter and one or more GUI dependent objects associated therewith is destroyed, such that the new instance of the client adapter reconnects to the server application; Operative to receive the last known state for all GUI independent objects from the server application and to synchronize the last known state for all GUI independent objects received from the server application in the new instance of the client adapter. Working
Device.
KR1020137033046A 2011-06-13 2012-06-12 Techniques for adapting an interpretive run time application to multiple clients Withdrawn KR20140036229A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/159,139 2011-06-13
US13/159,139 US20120317488A1 (en) 2011-06-13 2011-06-13 Techniques for adapting an interpretive run time application to multiple clients
PCT/US2012/042104 WO2012174022A2 (en) 2011-06-13 2012-06-12 Techniques for adapting an interpretive run time application to multiple clients

Publications (1)

Publication Number Publication Date
KR20140036229A true KR20140036229A (en) 2014-03-25

Family

ID=47294213

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137033046A Withdrawn KR20140036229A (en) 2011-06-13 2012-06-12 Techniques for adapting an interpretive run time application to multiple clients

Country Status (11)

Country Link
US (1) US20120317488A1 (en)
EP (1) EP2718838A4 (en)
JP (1) JP2014518417A (en)
KR (1) KR20140036229A (en)
CN (1) CN103597464B (en)
AU (1) AU2012271775B2 (en)
BR (1) BR112013031753A2 (en)
CA (1) CA2838306A1 (en)
MX (1) MX2013014797A (en)
RU (1) RU2608472C2 (en)
WO (1) WO2012174022A2 (en)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150281333A1 (en) * 2014-03-26 2015-10-01 Reddo Mobility Method and Apparatus for Delivering GUI Applications Executing on Local Computing Devices to Remote Devices
TWI502482B (en) * 2014-07-29 2015-10-01 Insyde Software Corp Handheld electronic device with the function of starting electronic device and its method, computer program product
CN104270259A (en) * 2014-09-18 2015-01-07 杭州华为数字技术有限公司 Association attribute value determination method and self-adaptive management system
CN105260842B (en) * 2015-10-12 2020-05-15 用友网络科技股份有限公司 Communication method and system between heterogeneous ERP systems
CN105915657B (en) * 2016-06-30 2020-07-24 北京奇虎科技有限公司 Data synchronization method and device and client
CN107479982B (en) * 2017-07-03 2020-01-31 福建网龙计算机网络信息技术有限公司 data synchronization method and terminal
CA3120826A1 (en) * 2018-11-23 2020-05-28 Nagravision S.A. Techniques for managing generation and rendering of user interfaces on client devices
US11625806B2 (en) * 2019-01-23 2023-04-11 Qualcomm Incorporated Methods and apparatus for standardized APIs for split rendering

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6832380B1 (en) * 1996-06-28 2004-12-14 Tarantella, Inc. Client-server application partitioning with metering technique for distributed computing
US20020129096A1 (en) * 2001-02-14 2002-09-12 Mansour Peter M. Platform-independent distributed user interface client architecture
US7219127B2 (en) * 2003-03-13 2007-05-15 Oracle International Corporation Control unit operations in a real-time collaboration server
JP2005228227A (en) * 2004-02-16 2005-08-25 Nippon Telegr & Teleph Corp <Ntt> Thin client system and communication method thereof
US20060069727A1 (en) * 2004-08-25 2006-03-30 Microsoft Corporation System and method for synchronizing between an instant messenger client and a central contact store
US20060265662A1 (en) * 2005-05-19 2006-11-23 Custom Credit Systems, L.P. System and method for generating and updating user interfaces of web-based applications
US7305420B2 (en) * 2005-05-25 2007-12-04 Microsoft Corporation Synchronizing modifiable documents with multiple clients using document subsections
RU2313824C2 (en) * 2005-09-26 2007-12-27 Михаил Васильевич Беляев Information client-server system and method for providing graphical user interface
US7716461B2 (en) * 2006-01-12 2010-05-11 Microsoft Corporation Capturing and restoring application state after unexpected application shutdown
US7555471B2 (en) * 2006-01-27 2009-06-30 Google Inc. Data object visualization
US20070234195A1 (en) * 2006-04-03 2007-10-04 National Instruments Corporation Simultaneous update of a plurality of user interface elements displayed in a web browser
US7953861B2 (en) * 2006-08-10 2011-05-31 International Business Machines Corporation Managing session state for web applications
JP2008071092A (en) * 2006-09-13 2008-03-27 Casio Comput Co Ltd Server device, client device, server-based computing system, and program
US8214752B2 (en) * 2006-09-29 2012-07-03 Sharp Laboratories Of America, Inc. Systems and methods for dynamically generating user interfaces for controlling a device with a client side filter
US7899917B2 (en) * 2007-02-01 2011-03-01 Microsoft Corporation Synchronization framework for occasionally connected applications
WO2008154084A1 (en) * 2007-06-11 2008-12-18 Dulcian, Inc. Method and architecture supporting high performance web applications
US8458727B2 (en) * 2007-11-05 2013-06-04 Microsoft Corporation Asynchronous client to server updates
US8635541B2 (en) * 2007-12-06 2014-01-21 International Business Machines Corporation Indicating pending asynchronous updates in a graphical user interface (GUI)
US8190683B2 (en) * 2008-02-29 2012-05-29 Microsoft Corporation Synchronizing multiple user remote content playback
JP2010055189A (en) * 2008-08-26 2010-03-11 Casio Comput Co Ltd Server device for server base computing system, client device, server control program, and client control program
CN101873311A (en) * 2010-05-26 2010-10-27 上海动量软件技术有限公司 Method for implementing configuration clause processing of policy-based network in cloud component software system

Also Published As

Publication number Publication date
CN103597464B (en) 2017-06-09
WO2012174022A3 (en) 2013-04-04
AU2012271775B2 (en) 2016-10-13
EP2718838A2 (en) 2014-04-16
CA2838306A1 (en) 2012-12-20
MX2013014797A (en) 2014-01-24
BR112013031753A2 (en) 2016-12-13
RU2608472C2 (en) 2017-01-18
JP2014518417A (en) 2014-07-28
EP2718838A4 (en) 2016-03-30
CN103597464A (en) 2014-02-19
RU2013155487A (en) 2015-06-20
WO2012174022A2 (en) 2012-12-20
US20120317488A1 (en) 2012-12-13

Similar Documents

Publication Publication Date Title
JP6210978B2 (en) Automatic conversion and code generation for user interface objects
AU2012271774A1 (en) Automated user interface object transformation and code generation
KR20140036229A (en) Techniques for adapting an interpretive run time application to multiple clients
US12106077B2 (en) Process flow builder for extensible web component sequences
WO2019032040A1 (en) A system and method for accessing digital content on a personal computer
US11797638B2 (en) Aggregate component for parallel browser-initiated actions
AU2012271775A1 (en) Techniques for adapting an interpretive run time application to multiple clients
US11681585B2 (en) Data migration for a shared database
US11675964B2 (en) Management of remote access user application layouts
CN117751347A (en) Techniques for distributed interface component generation
CN112905858A (en) Node relation graph display method and device, computer equipment and storage medium
US20160328370A1 (en) Rendering Based on a Document Object Model
US12353401B1 (en) Database systems and client-side methods for offline operation
US11750460B1 (en) Identifying duplicate entries in views of same and other network management interfaces
US11588654B2 (en) Method and apparatus for operating blockchain system, device and storage medium
US12287744B2 (en) Merged input/output for accelerating directory listing phase in client drive redirection
US12147419B2 (en) Database systems and methods of batching data requests for application extensions
US11385876B1 (en) Infrastructure control interface for database systems
US12353411B2 (en) Database systems and client-side query transformation methods
US20240069933A1 (en) Database systems and client-side field retrieval methods
US20240070151A1 (en) Database systems and client-side query transformation methods
US20240070139A1 (en) Database systems and methods for client-side initiation of server-side actions

Legal Events

Date Code Title Description
PA0105 International application

Patent event date: 20131212

Patent event code: PA01051R01D

Comment text: International Patent Application

PG1501 Laying open of application
N231 Notification of change of applicant
PN2301 Change of applicant

Patent event date: 20150715

Comment text: Notification of Change of Applicant

Patent event code: PN23011R01D

PC1203 Withdrawal of no request for examination
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid