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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 34
- 230000008859 change Effects 0.000 claims abstract description 9
- 238000009877 rendering Methods 0.000 claims description 22
- 238000003860 storage Methods 0.000 claims description 9
- 230000001419 dependent effect Effects 0.000 claims description 7
- 238000004519 manufacturing process Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 39
- 238000013515 script Methods 0.000 description 25
- 238000012545 processing Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 239000002253 acid Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 235000014510 cooky Nutrition 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 229920000642 polymer Polymers 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 238000013068 supply chain management Methods 0.000 description 2
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910003460 diamond Inorganic materials 0.000 description 1
- 239000010432 diamond Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/543—User-generated data transfer, e.g. clipboards, dynamic data exchange [DDE], object linking and embedding [OLE]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/545—Gui
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
클라이언트-서버 아키텍처는 애플리케이션 프로그램에 대한 컴퓨팅 작업 또는 작업부하를 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
도 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-
도 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-
n-티어 아키텍처, 가령, 3-티어 아키텍처(130)는 2-티어 아키텍처(120)에 비해, 애플리케이션 프로그램을 개발 및 수정할 때 많은 이점을 제공할 수 있다. 예를 들어, 전체 애플리케이션 프로그램의 완전한 다시 쓰기를 초래하지 않고 단일 티어가 수정 또는 추가될 수 있다. 그러나 많은 수의 클라이언트가 존재하는 웹-기반 환경에 대해 n-티어 아키텍처를 구현하는 데 어려움이 존재한다. 각각의 클라이언트는 서로 다른 웹 기법, 가령, 서로 다른 웹 브라우저, 웹 서비스, 및 웹 애플리케이션을 이용할 수 있다. 덧붙여, 웹 기법이, 여러 다른 유형의 기저 하드웨어 및 소프트웨어 아키텍처, 서로 다른 입/출력(I/O) 구성요소, 폼 팩터, 파워 요건, 프로세싱 능력, 통신 능력, 메모리 자원 등을 갖는 다양한 장치와 함께 동작하도록 설계된다. 따라서 각각의 클라이언트의 고유의 구성에 맞도록 표현 계층을 광범위하게 커스텀화하지 않고, 특정 애플리케이션 계층, 가령, 표현 계층을 이들 많은 이종 장치 및 아키텍처에 걸쳐 균일하게 구현하는 것이 어려울 수 있다. 덧붙여, 웹 버전의 애플리케이션 프로그램은 비-웹 버전의 애플리케이션 프로그램과 호환되지 않을 수 있기 때문에, 각각에 대해 개별 소프트웨어 아키텍처가 필요할 수 있다. The n- tier architecture, such as the three-
다양한 구현예에서, 개선된 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
하나의 실시예에서, 서버(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,
서버(202)가 서버 애플리케이션(210)에 대한 코드를 실행하는 중일 때, 상기 서버(202)는 해석 런타임 엔진(interpretive runtime engine)(212)을 형성한다. 상기 해석 런타임 엔진(212)은 서버 애플리케이션(210)에 대해, 클라이언트-서버 시스템(200)에서 애플리케이션 로직(214), 데이터베이스 로직(216), 및 서버 표현 로직(server presentation logic)(218)이라고 일컬어지는 복수의 애플리케이션 계층을 구현한다. 상기 서버 애플리케이션(210)은 클라이언트(204, 206)로부터 네트워크(250)를 통해 신호 또는 메시지의 형태로 수신된 제어 지시(control directive)를 통해 제어 및 동작될 수 있다. When the
하나의 실시예에서, 클라이언트(204, 206) 각각은 각자의 웹 클라이언트(230, 240)를 구현하는 전자 장치를 포함할 수 있다. 예를 들어, 상기 웹 클라이언트(230, 240) 각각은 각자의 클라이언트(204, 206) 상에서 실행 중인 웹 브라우저의 인스턴스를 포함할 수 있다. 상기 웹 브라우저는 또한 서버(202)로부터의 커스텀 서비스를 지원하기 위해 웹 브라우저를 보강하도록 설계된 플러그-인, 웹 애플리케이션 및 헬퍼 애플리케이션을 포함할 수 있다. 본원에서 언급되는 웹 클라이언트(230, 240)는 웹 브라우저의 기능도 지칭할 수 있다. In one embodiment, each of the
상기 클라이언트(204, 206)는 각자의 클라이언트 어댑터(client adapter)(232, 242)를 포함할 수 있다. 클라이언트 어댑터(232, 242) 각각은 특정클라이언트(204, 206)에 의해 사용되도록 구성될 수 있다. 이러한 방식으로, 서로 다른 기법을 이용해 서로 다른 클라이언트에 의해 액세스될 때 서버 애플리케이션(210) 및 해석 런타임 엔진(212)은 수정될 필요가 없다. The
상기 클라이언트 어댑터(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
클라이언트 어댑터(232, 242) 및 이들 각자의 클라이언트 표현 로직(238, 248)은, 서버 표현 로직(218)과 상호운용됨으로써, 상기 서버 애플리케이션(210)은 서로 다른 클라이언트(204, 206)를 통해 액세스될 수 있다. 각각의 클라이언트(204, 206)는 서로 다른 버전의 서버 표현 로직(218)을 각자의 클라이언트 표현 로직(238, 248)으로서 구현하여, 클라이언트(204, 206)에 대해 특정 구성(configuration)을 맞출 수 있다. 이는 서버 표현 로직(218)를 다시 쓸 필요 없이 이뤄질 수 있고, 더 중요한 것은, 비즈니스 로직(214) 및 데이터베이스 로직(216)을 다시 쓸 필요 없다는 것이다. 덧붙여, 서버 표현 로직(218) 및 클라이언트 표현 로직(238, 248)은 네트워크(250)에 대한 통신 트래픽 및 오버헤드를 감소시키는 방식으로 상호대화할 수 있음으로써, 통신 딜레이와 연관된 대기시간(latency)을 감소시키면서 속도와 성능은 증가시킬 수 있다.
상기 서버 애플리케이션(210)은 클라이언트 어댑터(232, 242) 또는 각각의 개별 버전과 따로 또는 동시에 통신할 수 있다. 동시 동작을 위한 시나리오는 사용자가 보조를 필요로 하고 관리자(administrator)가 사용자의 웹 클라이언트 뷰의 제 2 버전을 보기를 원할 때를 포함할 수 있다. The
다양한 실시예에서, 상기 서버 표현 로직(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
GUI 독립적 객체(260)는, 애플리케이션 로직 이벤트에 영향을 미칠 수 있는 사용자 이벤트 속성에 추가로, 클라이언트 어댑터(232, 242)에 의한 GUI 종속적 렌더링에 영향을 미칠 수 있는 사용자 이벤트, 임의의 사용자 이벤트 속성, 및 그 밖의 다른 유형의 정보를 포함할 수 있다. 상기 GUI 독립적 객체(260)는 해석 런타임 엔진(212)으로부터 생성되고 클라이언트 어댑터(232, 242)에게로 전송되며, 이는 추후 각자의 클라이언트 표현 로직(238, 248)을 통해 클라이언트 사용자 인터페이스에서 렌더링된다. The GUI
도 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
클라이언트-서버 시스템(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
산스크립트(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
나타난 바와 같이, 클라이언트(304)는 웹 클라이언트(330)를 포함할 수 있다. 상기 웹 클라이언트(330)는, 예를 들어, 웹 클라이언트(230, 240) 중 하나 또는 둘 모두를 나타낼 수 있다. 상기 웹 클라이언트(330)는 사용자 인터페이스 및 사용자 상호대화에 적응된 컴포넌트와 서비스의 세트, 가령, 서버 애플리케이션(310)에 의해 사용되기 위한 사용자 입력 및 경량 사용자 인터페이스 컨트롤(lightweight user interface control)을 전달할 수 있다. 그러나 3-티어 아키텍처로의 매끄러운 이주(smooth migration)를 이루기 위해, 효율적인 웹 클라이언트 인터페이스를 가능하게 하도록, 웹 클라이언트 아키텍처의 도입에 의해 발생된 다양한 기술적 과제가 극복될 필요가 있다. As shown, the
본원에 기재된 실시예의 목표는 기존 코드 및 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
폼(또는 스크린)의 사용은 임의의 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
서버 애플리케이션(310)의 비-웹 버전(non-web version)에서, UI는 사용자 인터페이스 관리자(318)에 의해 관리되며, 그 후 OS 렌더링 엔진(322)과 통신하여 실제 Microsoft Dexterity 스크린을 개발자에 의해 이전에 배치된 컨트롤 요소와 함께 디스플레이 스크린 상에 디스플레이할 수 있다.In a non-web version of the
그러나 클라이언트-서버 시스템(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
사용자 인터페이스 관리자(318) 및 OS 렌더링 엔진(322)을 해석 런타임 엔진(312)으로부터 연결해제함으로써, 스크린(폼)이 비-웹(가령, 데스크톱 또는 Win32) 환경과 웹 환경 사이를 자유롭게 이동할 수 있다. 연결해제된 사용자 인터페이스 관리자(318) 및 OS 렌더링 엔진(322)을 이용해, 상기 서버 애플리케이션(310)은 전통적인 Win32 폼 또는 웹 클라이언트 폼을 통해 수신될 수 있고 제출됐던 폼의 유형에 무관하게 스크립트 이벤트를 실행시킬 수 있는 사용자 이벤트를 기다리면서, 배경(background) 서비스로서 실행될 수 있다. By disconnecting the
연결해제를 촉진시키기 위해, 서버 애플리케이션(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
도 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
서버(402) 상에서, 하나 이상의 애플리케이션 계층을 실행하는 역할을 하거나 하나 이상의 애플리케이션 계층을 실행하는 그 밖의 다른 구성요소와 연결된 해석 런타임 엔진(412)을 포함하는 서버 애플리케이션(410)이 존재할 수 있다. 해석 런타임 엔진(412)은 스크립트 인터프리터(script interpreter)(414), 파일 관리자(416), 및 사용자 인터페이스 관리자(418)를 더 포함할 수 있다. 상기 스크립트 인터프리터(414)는 파일 관리자(416) 및 서버 사용자 인터페이스 관리자(418)와 통신할 수 있다. 파일 관리자(416)는 또한 데이터베이스(420)와 통신할 수 있다. On
클라이언트(404) 상에, 클라이언트 어댑터(432)를 실행하는 웹 클라이언트(430)가 존재한다. 상기 클라이언트 어댑터(432)는 도 2에 도시된 클라이언트 표현 로직(238, 248)에 따라, 클라이언트 사용자 인터페이스, 가령, 클라이언트 사용자 인터페이스에 콘텐츠를 디스플레이하기 위해 사용자 인터페이스 관리자(436) 및 렌더링 엔진(438)을 포함할 수 있다. On the
도 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
하나의 실시예에서, 해석 런타임 엔진(412)은 스크립트 인터프리터(414)를 포함할 수 있다. 일반적으로, 상기 스크립트 인터프리터(414)는 사용자 이벤트, 비-제한적 예를 들면, 트랜잭션(transaction)의 저장 또는 배치(batch)의 포스팅에 응답하여 스크립트된 코드를 실행하도록 구성될 수 있다. 스크립트된 코드의 예시는 프리-스크립트(pre-script), 변경 스크립트(change script), 포스트-스크립트(post-script), 및 그 밖의 다른 유형의 스크립트를 포함할 수 있다.In one embodiment, the
하나의 실시예에서, 해석 런타임 엔진(412)은 파일 관리자(416)를 포함할 수 있다. 일반적으로 파일 관리자(416)는 데이터베이스(420)에 저장된 파일에 대한 파일 관리 동작을 수행하도록 구성될 수 있다. 파일 관리 동작의 예시는 파일 생성, 파일 열기, 파일 복사, 파일 이동, 파일 삭제 등을 포함할 수 있다. In one embodiment, the
하나의 실시예에서, 해석 런타임 엔진(412)은 사용자 인터페이스 관리자(436)를 포함할 수 있다. 일반적으로, 상기 사용자 인터페이스 관리자(436)는 특정 GUI 시스템을 구현하는 사용자 인터페이스 내, 다양한 사용자 인터페이스 요소, 가령, 스크린 요소의 배치 및 외관을 제어하도록 구성될 수 있다. In one embodiment, the
동작 중에, 사용자는 웹 클라이언트(430)를 통해 클라이언트 사용자 인터페이스와 상호대화할 수 있다. 상기 웹 클라이언트(430)는 웹-기반 콘텐츠를 렌더링하기 위한 사용자 인터페이스 코드를 갖는 웹 브라우저를 포함할 수 있다. 상기 웹 클라이언트(430)는 다양한 웹 기법, 가령, HTML, XHTML, XML 등을 이용해 구현될 수 있다. 웹 클라이언트(430)의 비-제한적 예를 들면, 워싱턴, 레드몬드에 소재하는 Microsoft Corporation사의 Internet Explorer®, 및 그 밖의 다른 유형의 웹 브라우저 소프트웨어가 있을 수 있다. In operation, the user may interact with the client user interface via the
하나의 실시예에 따라, 동작 중에 사용자는 웹 클라이언트(430)를 통해 클라이언트 사용자 인터페이스와 상호대화할 수 있고, 클라이언트 어댑터(432)에 의해 수신되고 처리될 수 있는 사용자 이벤트를 입력할 수 있다. 사용자 이벤트의 비-제한적 예를 들면, 포인터를 필드로 이동시키기, 필드 위에서 호버링(hover)하기, 필드를 선택하기, 버튼을 마우스로 클릭하기, 텍스트 필드를 채우기, 및 이와 유사한 동작들이 있을 수 있다. 사용자 이벤트는 사용자 이벤트 속성의 세트를 이용해 정의될 수 있다. 하나의 실시예에서, 사용자 이벤트 속성의 완전한 세트 대신, 사용자 이벤트 속성에 대한 변경만 웹 클라이언트(430)에서 서버 애플리케이션(410)으로 전송될 필요가 있다. 이러한 차이 나는 기법이 통신 대역폭을 보존하고 대기시간을 감소시킬 수 있다. According to one embodiment, during operation, the user may interact with the client user interface via the
사용자 이벤트 속성은 사용자 인터페이스 레이아웃에 디스플레이되는 사용자 인터페이스 요소, 가령, 필드, 스크린 또는 그래픽 객체로 할당될 수 있는 임의의 속성(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
앞서 기재된 실시예에 대한 동작은 하나 이상의 논리 흐름을 참조하여 추가로 기재될 수 있다. 나타나는 논리 흐름은, 그렇지 않다고 언급되지 않는 한, 제시되는 순서로, 또는 임의의 특정 순서로 실행될 필요가 없다. 덧붙여, 논리 흐름과 관련하여 기재된 다양한 활동이 순차적으로 또는 병렬로 실행될 수 있다. 논리 흐름은, 설계 및 수행 제약사항의 특정 세트에 대해 원하는 대로, 기재된 실시예의 하나 이상의 하드웨어 요소 및/또는 소프트웨어 요소 또는 대안적 요소를 이용해 구현될 수 있다. 예를 들어, 논리 흐름은 로직 장치(가령, 범용 또는 특수 컴퓨터)에 의해 실행되기 위한 로직(가령, 컴퓨터 프로그램 명령)으로서 구현될 수 있다. 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
상기 논리 흐름(500) 중, 블록(502)에서 사용자는 클라이언트 측 사용자 인터페이스에서 실행되는 웹 클라이언트와 상호대화한다. 예를 들어, 웹 클라이언트(430)는 렌더링 엔진(438)에 의해 표현(present)될 때 사용자 인터페이스의 하나 이상의 사용자 인터페이스 요소에 영향을 미치는 입력 장치로부터 수신된 하나 이상의 제어 지시(control directive)의 형태로 된 사용자 입력을 수신할 수 있다. 상기 사용자 입력은 사용자 이벤트를 야기하는 사용자 인터페이스 요소와 상호대화할 수 있다. 예를 들어, 사용자는 GUI 스크린에 표현되는 폼 상에서 하나의 필드를 선택하고 상기 필드에 대한 값을 수정할 수 있다. Of the
논리 흐름(500) 중, 블록(504)에서, 거기서 실행 중인 클라이언트 어댑터가 서버 상에서 실행되는 서버 애플리케이션과 호환 가능한 방식으로 사용자 이벤트를 나타내는 제어 지시를 해석(interpret)할 수 있다. 예를 들어, 웹 클라이언트(430)에 의해 실행되는 클라이언트 어댑터(432)는 사용자 이벤트를 서버 애플리케이션(410)과 유사한 방식으로 해석할 수 있다. 사용자 이벤트는 웹 클라이언트(430) 상에서 실행 중인 사용자 인터페이스와의 하나 이상의 사용자 상호대화, 가령, 비-제한적 예를 들면, 버튼 클릭하기, 텍스트 필드 채우기 등을 포함할 수 있다. In
논리 흐름(500) 중, 블록(504)에서의 해석 동작은 새로 입력된 사용자 이벤트 속성을 검사하여, 서버 애플리케이션이 알 필요가 있는 범위까지 다이아몬드(506)에서, 사용자 이벤트 속성이 변경됐는지 여부를 결정할 수 있다. 예를 들어, 클라이언트 어댑터(432)는 임의의 사용자 입력 및 이에 대응하는 영향 받은 사용자 인터페이스 요소의 속성의 변경을 검사하여, 사용자 이벤트 속성이 일부 임계치보다 크게 변경됐는지 여부를 결정할 수 있다. 예를 들어, 필드를 선명하게 만들기 위해 상기 필드 위에서 호버링하는 것은 사용자 이벤트 속성의 어떠한 변경을 트리거하기엔 불충분할 수 있으며, 반면에, 필드를 선택하는 것은 서버 애플리케이션(410)에게 통지하기에 충분할 것이다. In
논리 흐름(500) 중, 통지가 필요한 경우, 블록(508)에서 클라이언트 어댑터는 임의의 계류 중인 변경된 사용자 이벤트 속성을 서버 애플리케이션에게 전송할 수 있다. 예를 들어, 클라이언트 어댑터(432)는 사용자 이벤트 속성(451)을 메시지(450)로 네트워크(250)를 통해 서버 애플리케이션(410)에게 전송할 수 있다. 일부 실시예에서, 클라이언트 어댑터(432)는 복수의 사용자 이벤트에 대해 변경된 사용자 이벤트 속성(451)의 복수의 세트를 메시지(450)로 서버(402) 상에서 실행 중인 서버 애플리케이션(410)에게 전송할 수 있다. 이러한 "배치(batch)" 전송은 많은 점에서 유용할 수 있는데, 가령, 사용자 이벤트 타이밍 설정 시 서버 애플리케이션(410)을 보조한다. 예를 들어, 스크립트 인터프리터(414)는 서버 애플리케이션(410)으로의 업데이트의 정확한 시퀀스를 보장하기 위해, 다양한 스크립트(가령, 프리-스크립트, 변경 스크립트, 포스트-스크립트 등)의 실행을 타이밍 설정할 수 있다. 또한 배치 전송은 네트워크(250)를 통해 더 적은 메시지(450)를 전송함으로써 통신 오버헤드를 감소시킬 수 있다. 그 밖의 다른 이점도 존재하며, 이 맥락에서 실시예는 제한되지 않는다. If, during
논리 흐름(500) 중, 블록(512)에서 비즈니스 로직 이벤트가 실행될 수 있기 전에, 블록(510)에서 서버 상에서 실행 중인 런타임 엔진이 서버 애플리케이션에 대한 적절한 입력/상태를 보장할 수 있다. 예를 들어, 서버(402) 상에서 실행 중인 해석 런타임 엔진(412)이, 임의의 애플리케이션 또는 비즈니스 로직을 실행하기 전에, 서버 애플리케이션(410)에 대해 적절한 애플리케이션 입력 및 애플리케이션 상태를 보장할 수 있다. Of the
논리 흐름(500) 중, 블록(514)에서, 비즈니스 로직의 실행으로부터 야기된 업데이트된 사용자 이벤트 속성은 GUI 독립적 객체와 함께 클라이언트 어댑터로 다시 되전송될 수 있다. 예를 들어, 애플리케이션 또는 비즈니스 로직의 실행으로부터 야기된 업데이트된 사용자 이벤트 속성(454)은 GUI 독립적 객체(452)와 함께 서버 애플리케이션(410)으로부터 웹 클라이언트(430)로 전송되어 클라이언트 어댑터(432)로 다시 되전송되게 할 수 있다. Of the
논리 흐름(500) 중, 그 후 클라이언트 어댑터는 업데이트된 사용자 이벤트 속성 및 GUI 독립적 객체를 이용해 블록(516)에서 클라이언트 사용자 인터페이스에 이전에 렌더링된 이미지를 업데이트할 수 있다. 예를 들어, 클라이언트 어댑터(432)는 GUI 독립적 객체(452)를 수신하고 렌더링 엔진(438)은 업데이트된 이벤트 속성(454) 및 GUI 독립적 객체(452)를 이용해 클라이언트 사용자 인터페이스에 이전에 렌더링된 이미지를 업데이트할 수 있다. During
도 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
도 1b는 도 1a에 제공된 구성을 이용해 특정 GUI 독립적 객체(452)가 생성될 수 있는 방식에 대한 하나의 실시예를 도시한다. 업데이트된 사용자 이벤트 속성(454)은 객체 메타데이터(612), 속성/값 집합(614), 및 그 밖의 다른 정보를 포함할 수 있다. FIG. 1B illustrates one embodiment of how a particular GUI
업데이트된 사용자 이벤트 속성(454)은 하나 이상의 인터페이스 요소를 갖는 객체 메타데이터(612)를 포함할 수 있다. 이러한 예에서, 객체 메타데이터(612)는 필드의 형태를 가지며, 필드 A, 필드 B, 및 필드 C로 라벨링된 3개의 사용자 인터페이스 요소를 포함한다. 필드 A, B, 및 C 각각은 일반적으로 구절 '필드 A', '필드 B', 및 '필드 C' 각각으로 구성된 디폴트 폰트 텍스트를 감싸는 테두리를 갖는 텍스트 박스로서 나타난다.The updated
업데이트된 사용자 이벤트 속성(454)은 속성/값 집합(614)을 더 포함할 수 있다. 하나의 실시예에서, 속성/값 집합(614)은 데이터 구조, 가령, 하나 이상의 튜플(tuple)(또는 행)을 갖는 테이블로 구현될 수 있으며, 이때 각각의 튜플은 사용자 인터페이스 요소에 대한 식별자, 사용자 인터페이스 요소에 대한 속성(property), 및 상기 속성에 대한 값을 포함하는 속성(attribute)(또는 열)을 포함한다. 식별자, 속성 및 값의 테이블은 객체 메타데이터(612)의 필드에 대응할 수 있다. The updated
함께 조합될 때 결과는 GUI 독립적 객체(616)일 수 있다. GUI 독립적 객체(616)에 도시된 것처럼, 필드 A는 일반적 메타데이터 버전으로부터 변경되지 않는데, 이의 속성 또는 값 중 어느 것도 속성/값 집합(614)에서 변경되지 않았기 때문이다. 속성/값 집합(614)에서 속성 '테두리'가 값 '거짓'으로 설정되었기 때문에 필드 B는 자신의 테두리 없이 나타난다. 속성/값 집합(614)에서 속성 '이탤릭체'가 값 '참'으로 설정되었기 때문에, 필드 C의 텍스트는 이탤릭체로 나타난다. 이제, 클라이언트 어댑터(432)의 렌더링 엔진(438)에 의해 객체(616)가 웹 클라이언트(430) 내 클라이언트(404) 상에서 렌더링될 수 있다. When combined together, the result may be a GUI
도 7은 논리 흐름(700)의 하나의 실시예를 도시한다. 상기 논리 흐름(700)은 하나 이상의 실시예에 따라 수행되는 동작을 도시할 수 있다. 예를 들어, 논리 흐름(700)은 파괴됐던 클라이언트 어댑터(432)를 복원하기 위한 목적으로 웹 클라이언트(430) 및/또는 서버 애플리케이션(410)에 의해 수행되는 동작을 도시할 수 있다. 7 illustrates one embodiment of a
본원에 기재된 실시예의 또 다른 이점은 클라이언트 어댑터(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
도 8은 이전에 기재된 바와 같은 다양한 실시예를 구현하기에 적합한 예시적 컴퓨팅 아키텍처(800)의 하나의 실시예를 도시한다. 상기 컴퓨팅 아키텍처(800)는 다양한 공통 컴퓨팅 요소, 가령, 하나 이상의 프로세서, 코-프로세서(co-processor), 메모리 유닛, 칩셋(chipset), 제어기, 주변장치, 인터페이스, 오실레이터(oscillator), 타이밍 장치(timing device), 비디오 카드, 오디오 카드, 멀티미디어 입/출력(I/O) 구성요소 등을 포함한다. 그러나 실시예는 상기 컴퓨팅 아키텍처(800)에 의한 구현예로 한정되지 않는다. 8 illustrates one embodiment of an
도 8에 도시된 바와 같이, 컴퓨팅 아키텍처(800)는 처리 유닛(804), 시스템 메모리(806) 및 시스템 버스(808)를 포함한다. 상기 처리 유닛(804)은 다양한 상용화된 프로세서들 중 임의의 것일 수 있다. 듀얼 마이크로프로세서 및 그 밖의 다른 멀티-프로세서 아키텍처가 또한 처리 유닛(804)으로서 채용될 수 있다. 상기 시스템 버스(808)는 시스템 구성요소, 비-제한적 예를 들면, 시스템 메모리(806)에 대한 인터페이스를 처리 유닛(804)에게 제공한다. 상기 시스템 버스(808)는 다양한 상용화된 버스 아키텍처 중 임의의 것을 이용해 메모리 버스(메모리 제어기를 포함하거나 포함하지 않음), 주변장치 버스, 및 로컬 버스로 추가로 인터커넥트될 수 있는 몇 가지 유형의 버스 구조 중 임의의 것일 수 있다. As shown in FIG. 8, the
시스템 메모리(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
컴퓨터(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
드라이브 및 이와 연관된 컴퓨터-판독형 매체는 데이터, 데이터 구조, 컴퓨터-실행형 명령 등의 휘발성 및/또는 비휘발성 저장을 제공한다. 예를 들어, 복수의 프로그램 모듈은 드라이브 및 메모리 유닛(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
사용자는 하나 이상의 유/무선 입력 장치, 예를 들어, 키보드(838) 및 포인팅 장치, 가령 마우스(840)를 통해 명령어 및 정보를 컴퓨터(802)로 입력할 수 있다. 또 다른 입력 장치는 마이크로폰, 적외선(IR) 원격 제어, 조이스틱, 게임 패드, 스타일러스 펜, 터치 스크린 등을 포함할 수 있다. 이들 그리고 그 밖의 다른 입력 장치는 종종, 시스템 버스(808)로 연결된 입력 장치 인터페이스(842)를 통해 처리 유닛(804)으로 연결되지만, 그 밖의 다른 인터페이스, 가령, 병렬 포트, IEEE 1394 직렬 포트, 게임 포트, USB 포트, IR 인터페이스 등에 의해 연결될 수 있다. A user may enter commands and information into the
또한 하나 이상의 모니터(844) 또는 그 밖의 다른 유형의 디스플레이 장치가 인터페이스, 가령, 비디오 어댑터(846)를 통해 시스템 버스(808)로 연결된다. 모니터(844)에 추가로, 일반적으로 컴퓨터는 그 밖의 다른 주변 출력 장치, 가령, 스피커, 프린터 등을 포함한다. 또한 하나 이상의 모니터(845)는 입력 장치 인터페이스(842) 및/또는 허브, 가령, USB 허브(843)를 통해 시스템 버스(808)로 연결될 수 있다. 모니터(845)는 다양한 구성요소, 가령, 비디오 카메라, 어레이 마이크로폰, 터치 센서, 모션 센서, 스피커, 등을 포함할 수 있다. 구성요소는 USB 허브(843)를 통해 입력 장치 인터페이스(842)로 연결될 수 있다.One or
컴퓨터(802)는 유선 및/또는 무선 통신을 통한 하나 이상의 원격 컴퓨터, 가령, 원격 컴퓨터(848)로의 논리적 연결을 이용해 네트워크 연결된 환경에서 동작할 수 있다. 상기 원격 컴퓨터(848)는 워크스테이션, 서버 컴퓨터, 라우터, 개인 컴퓨터, 휴대용 컴퓨터, 마이크로프로세서 기반 엔터테인먼트 기기, 피어 장치(peer device) 또는 그 밖의 다른 공통 네트워크 노드일 수 있으며, 일반적으로 컴퓨터(802)와 관련하여 기재된 요소들 중 다수 또는 전부를 포함하지만, 간결성을 위해, 메모리/저장 장치(850)만 도시된다. 도시된 논리적 연결은 로컬 영역 네트워크(LAN)(852) 및/또는 더 큰 네트워크, 가령, 광역 네트워크(WAN)(854)로의 유/무선 연결성을 포함한다. 이러한 LAN 및 WAN 네트워크 연결 환경은 사무실 및 회사에서 일반적인 것이며, 기업내 컴퓨터 네트워크, 가령, 인트라넷을 용이하게 하고, 이들 모두 글로벌 통신 네트워크, 가령, 인터넷으로 연결될 수 있다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(802)는 유선 및/또는 무선 통신 네트워크 인터페이스 또는 어댑터(856)를 통해 LAN(852)으로 연결된다. 상기 어댑터(856)는 LAN(852)으로의 유선 및/또는 무선 통신을 촉진시킬 수 있으며, 상기 LAN은 어댑터(856)의 무선 기능과 통신하기 위해 배치된 무선 액세스 포인트를 더 포함할 수 있다. When used in a LAN networking environment, the
WAN 네트워킹 환경에서 사용될 때, 컴퓨터(802)는 모뎀(858)을 포함할 수 있거나, WAN(854) 상의 통신 서버로 연결되거나 WAN(854)을 통해, 가령 인터넷을 이용해 통신을 구축하기 위한 그 밖의 다른 수단을 가진다. 내부 또는 외부의 유선 및/또는 무선 장치일 수 있는 모뎀(858)이 입력 장치 인터페이스(842)를 통해 시스템 버스(808)로 연결된다. 네트워크 연결된 환경에서, 컴퓨터(802) 또는 이들의 부분에 대하여 도시된 프로그램 모듈이 원격 메모리/저장 장치(850)에 저장될 수 있다. 도시된 네트워크 연결은 예시적이며, 컴퓨터들 간 통신 링크를 구축하기 위한 또 다른 수단이 사용될 수 있음을 알 것이다. When used in a WAN networking environment, the
상기 컴퓨터(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
도 9는 이전에 기재된 바와 같이 다양한 실시예를 구현하기에 적합한 예시적 통신 아키텍처(900)의 블록도를 도시한다. 통신 아키텍처(900)는 다양한 일반적인 통신 요소, 가령, 송신기, 수신기, 트랜시버, 라디오, 네트워크 인터페이스, 기저대역 프로세서, 안테나, 증폭기, 필터 등을 포함한다. 그러나 상기 실시예는 통신 아키텍처(900)에 의한 구현으로 한정되지 않는다. 9 illustrates a block diagram of an
도 9에 도시된 바와 같이, 통신 아키텍처(900)는 하나 이상의 클라이언트(902) 및 서버(904)를 포함한다. 상기 클라이언트(902)는 웹 클라이언트(330)를 구현할 수 있다. 상기 서버(904)는 런타임 엔진(312)을 구현할 수 있다. 상기 클라이언트(902) 및 서버(904)는 각각의 클라이언트(902) 및 서버(904)의 로컬 정보, 가령, 쿠키 및/또는 이와 연관된 맥락적 정보(contextual information)를 저장하도록 사용될 수 있는 하나 이상의 각자의 클라이언트 데이터 저장소(908) 및 서버 데이터 저장소(910)로 동작 가능하게 연결된다. As shown in FIG. 9,
클라이언트(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) 간의 한 가지 가능한 통신은 둘 이상의 컴퓨터 프로세스 간에 전송되도록 구성된 데이터 패킷의 형태로 된 것일 수 있다. 데이터 패킷은 가령 쿠키 및/또는 이와 연관된 맥락적 정보를 포함할 수 있다.
하드웨어 요소, 소프트웨어 요소, 또는 이들의 조합을 이용해 다양한 실시예가 구현될 수 있다. 하드웨어 요소의 예시는 장치, 로직 장치, 구성요소, 프로세서, 마이크로프로세서, 회로, 회로 요소(가령, 트랜지스터, 레지스터, 커패시터, 인덕터 등), 집적 회로, 주문형 집적 회로(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.
업데이트된 사용자 이벤트 속성을 갖는 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.
복수의 사용자 이벤트에 대한 복수의 변경된 사용자 이벤트 속성을 메시지로 상기 서버 상에서 실행 중인 상기 서버 애플리케이션에게 전송하는 단계
를 포함하는 컴퓨터에 의해 구현되는 방법.
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 >
상기 서버 애플리케이션으로부터 수신된 상기 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 >
클라이언트 어댑터의 이전 인스턴스 및 이와 연관된, 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 >
를 포함하는 제조 물품.
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 >
상기 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.
상기 클라이언트 어댑터는 상기 클라이언트 사용자 인터페이스를 제어하기 위한 사용자 인터페이스 관리자, 또는 상기 서버 애플리케이션으로부터 수신된 상기 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.
상기 웹 클라이언트는
상기 클라이언트 어댑터의 이전 인스턴스 및 이와 연관된, 하나 이상의 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.
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)
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)
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 |
-
2011
- 2011-06-13 US US13/159,139 patent/US20120317488A1/en not_active Abandoned
-
2012
- 2012-06-12 WO PCT/US2012/042104 patent/WO2012174022A2/en active Application Filing
- 2012-06-12 BR BR112013031753A patent/BR112013031753A2/en not_active IP Right Cessation
- 2012-06-12 EP EP12800011.4A patent/EP2718838A4/en not_active Withdrawn
- 2012-06-12 CN CN201280028934.5A patent/CN103597464B/en not_active Expired - Fee Related
- 2012-06-12 AU AU2012271775A patent/AU2012271775B2/en not_active Ceased
- 2012-06-12 JP JP2014515927A patent/JP2014518417A/en active Pending
- 2012-06-12 CA CA2838306A patent/CA2838306A1/en not_active Abandoned
- 2012-06-12 MX MX2013014797A patent/MX2013014797A/en unknown
- 2012-06-12 RU RU2013155487A patent/RU2608472C2/en not_active IP Right Cessation
- 2012-06-12 KR KR1020137033046A patent/KR20140036229A/en not_active Withdrawn
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 |