KR101292401B1 - 풍부한 데이터 바인딩된 애플리케이션 - Google Patents

풍부한 데이터 바인딩된 애플리케이션 Download PDF

Info

Publication number
KR101292401B1
KR101292401B1 KR1020060008323A KR20060008323A KR101292401B1 KR 101292401 B1 KR101292401 B1 KR 101292401B1 KR 1020060008323 A KR1020060008323 A KR 1020060008323A KR 20060008323 A KR20060008323 A KR 20060008323A KR 101292401 B1 KR101292401 B1 KR 101292401B1
Authority
KR
South Korea
Prior art keywords
model
view
component
binding
data
Prior art date
Application number
KR1020060008323A
Other languages
English (en)
Other versions
KR20060101221A (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 KR20060101221A publication Critical patent/KR20060101221A/ko
Application granted granted Critical
Publication of KR101292401B1 publication Critical patent/KR101292401B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01CCONSTRUCTION OF, OR SURFACES FOR, ROADS, SPORTS GROUNDS, OR THE LIKE; MACHINES OR AUXILIARY TOOLS FOR CONSTRUCTION OR REPAIR
    • E01C19/00Machines, tools or auxiliary devices for preparing or distributing paving materials, for working the placed materials, or for forming, consolidating, or finishing the paving
    • E01C19/12Machines, tools or auxiliary devices for preparing or distributing paving materials, for working the placed materials, or for forming, consolidating, or finishing the paving for distributing granular or liquid materials
    • E01C19/16Machines, tools or auxiliary devices for preparing or distributing paving materials, for working the placed materials, or for forming, consolidating, or finishing the paving for distributing granular or liquid materials for applying or spreading liquid materials, e.g. bitumen slurries
    • E01C19/17Application by spraying or throwing
    • EFIXED CONSTRUCTIONS
    • E04BUILDING
    • E04GSCAFFOLDING; FORMS; SHUTTERING; BUILDING IMPLEMENTS OR AIDS, OR THEIR USE; HANDLING BUILDING MATERIALS ON THE SITE; REPAIRING, BREAKING-UP OR OTHER WORK ON EXISTING BUILDINGS
    • E04G23/00Working measures on existing buildings
    • E04G23/02Repairing, e.g. filling cracks; Restoring; Altering; Enlarging
    • E04G23/0296Repairing or restoring facades
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60PVEHICLES ADAPTED FOR LOAD TRANSPORTATION OR TO TRANSPORT, TO CARRY, OR TO COMPRISE SPECIAL LOADS OR OBJECTS
    • B60P3/00Vehicles adapted to transport, to carry or to comprise special loads or objects
    • B60P3/30Spraying vehicles

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Architecture (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • Structural Engineering (AREA)
  • Civil Engineering (AREA)
  • Chemical & Material Sciences (AREA)
  • Chemical Kinetics & Catalysis (AREA)
  • Electrochemistry (AREA)
  • Mechanical Engineering (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

소프트웨어 개발자들에게 광범위한 그래픽 설계를 요구하지 않고 그래픽 설계자들에게 광범위한 소프트웨어 지식을 요구하지 않는 애플리케이션 개발을 가능하게 하기 위하여, 애플리케이션들이 뷰 및 모델로 분리된다. 뷰에서의 속성들 및 모델에서의 속성들은, 예컨대 데이터 바인딩 엔진을 통한 데이터 바인딩을 통해서 연관된다. 이러한 연관은 뷰들이 선언적으로 정의되는 것을 가능하게 한다. 이러한 데이터 바인딩을 가능하게 하는 데에 변환작업들이 필수적일 수 있을 것이다. 데이터 바인딩은 모델 내의 데이터 및 기능이 뷰에서 정의된 대로 UI를 통해서 이용되는 것을 가능하게 한다. 자동으로 생성된 UI 및 커맨드 바인딩 또한 가능해진다.
데이터 바인딩, 뷰, 모델

Description

풍부한 데이터 바인딩된 애플리케이션{RICH DATA-BOUND APPLICATIONS}
도 1은 본 발명의 특징이 구현될 수 있는 예시적인 컴퓨팅 환경의 블럭도.
도 2는 본 발명의 일 실시예에 따른 UI 컴포넌트를 포함하는 애플리케이션의 블럭도.
도 3은 본 발명의 일 실시예에 따른 모델과 함께 이용될 수 있는 뷰를 도시하는 도면.
도 4는 본 발명의 일 실시예에 따른 애플리케이션의 일부의 블럭도.
도 5는 본 발명의 일 실시예에 따른 뷰, 데이터 바인딩 컴포넌트 및 모델 사이의 흐름을 도시하는 블럭도.
도 6은 본 발명의 일 실시예에 따른 커맨드 바인딩의 이용을 도시하는 블럭도.
도 7은 본 발명의 일 실시예에 따른, 사용자 인터페이스를 통하여 사용자에 기능을 제공하는 방법을 도시하는 블럭도.
<도면 주요 부분에 대한 부호의 설명>
100 : 컴퓨팅 환경 120 : 처리 유닛
121 : 시스템 버스 130 : 시스템 메모리
134 : 오퍼레이팅 시스템 135 : 애플리케이션 프로그램
136 : 기타 프로그램 모듈 137 : 프로그램 데이터
140 : 비분리형 비휘발성 메모리 인터페이스
144 : 오퍼레이팅 시스템 145 : 애플리케이션 프로그램
146 : 기타 프로그램 모듈 147 : 프로그램 데이터
150 : 분리형 비휘발성 메모리 인터페이스
160 : 사용자 입력 인터페이스
161 : 포인팅 장치 162 : 키보드
170 : 네트워크 인터페이스 171 : LAN
173 : WAN 172 : 모뎀
180 : 원격 컴퓨터 182 : 그래픽 인터페이스
185 : 원격 애플리케이션 프로그램
186 : 비디오 메모리 190 : 비디오 인터페이스
191 : 모니터 195 : 출력 주변 인터페이스
196 : 프린터 197 : 스피커
200 : 애플리케이션 210 : 뷰
220 : 데이터 바인딩 컴포넌트
240 : 모델 400 : 애플리케이션
410 : 뷰 420 : 데이터 바인딩 컴포넌트
430 : 어댑터 층 440 : 모델
510 : 뷰 520 : 데이터 바인딩 컴포넌트
530 : 어댑터 층 540 : 모델
550 : 뷰 속성 560 : 모델 속성
640 : UI 요소 650 : 커맨드
관련 출원에 대한 상호 참조
본 출원은 2004년 4월 13일에 출원되고 본 출원인에게 양도된 "PRIORITY BINDING"라는 발명의 명칭의 미국 특허 출원 번호 제10/823,461호(MSFT-3489/307340.1) 및 "DATA-BINDING MECHANISM TO PERFORM COMMAND BINDING"이라는 발명의 명칭의 미국 특허 출원 번호 제10/822,910호(MSFT-3490/307339.1)와 관련된다.
본 발명은 컴퓨터 프로세싱 및 사용자 인터페이스를 가지는 애플리케이션의 동작에 관련된다.
그래픽 사용자 인터페이스(GUI)를 가지는 풍부한 클라이언트 애플리케이션을 생성하기 위하여, 양질의 그래픽 설계 작업과 전통적인 소프트웨어 엔지니어링 기술 모두가 요구된다. 그래픽 소프트웨어 엔지니어링 기술은 애플리케이션의 기능을 제공하는 데에 요구된다.
그래픽 설계 및 소프트웨어 개발은 2가지의 매우 상이한 훈련이다. 그래픽 설계자 및 소프트웨어 개발자가 함께 생산적으로 작업하는 것은 종종 매우 어려운 작업이며, 양질의 GUI 및 양질의 기능을 가지는 클라이언트 애플리케이션을 생성하는 것을 어렵게 만든다.
통상적으로, 설계자는 UI가 보이고자 하는 뷰(view)를 생성하는 데에 (Adobe System Inc.의)Photoshop, (역시 Adobe System Inc.의)Illustrator, (Macromedia Inc.의)Flash 및 (역시 Macromedia Inc.의)Director와 같은 그래픽 툴을 이용할 것이다. 그 후에, 이러한 "마크 업(mock up)"은 (Microsoft Corp.의)Visual Studio와 같은 프로그래밍 툴을 이용하여 개발자에 의해서 재구현된다. 통상적으로, 최종 구현에 있어서 원래의 그래픽 설계 요소들을 재사용하는 경우는 거의 없다. 때때로, 제1 애플리케이션으로부터의 몇몇 비트맵들 및 아이콘들은 새로운 애플리케이션에서 재사용될 수 있을 것이나, 다른 원형 제어 및 쌍방향 참가(interactivity)는 사용되지 않는다.
이러한 프로세스에서의 추가적인 문제점은, 나타내기 쉬운 몇몇 효과가 소프트웨어 개발자가 재창조하기 어렵거나 불가능하기 때문에 그래픽 설계자에 의해서 생성되는 설계의 부분들이 프로세스에서 소실된다는 점이다. 설계자의 시각을 구현하는 한가지 제한은 소프트웨어 개발자가 코드 및 현재 애플리케이션 프로그램 인터페이스(API)를 가지고 실제로 행해질 수 있는 것에 대하여 한계를 가진다는 점이다. 다른 실질적인 제한은 개발자가 설계를 완전히 이해하지 못하며, 구현시에 설계자의 의도와는 다른 구현을 선택할 수 있다는 점이다.
부가적으로는, 결과적인 애플리케이션은 재사용될 수 없다는 점이다. 설계가 시간의 흐름에 따라 변경되는 경우에는, 설계자는 설계 툴을 가지고서 UI를 다시 나타내어야 하며, 프로그래머는 설계에 필적하도록 코드의 일부를 재기록하여야 한다. 이것은 임의의 다수의 레벨들에서, 폼(form) 또는 애플리케이션의 전체 레이아웃으로부터 단일 제어의 외관까지 발생할 수 있을 것이다. 통상적으로, 전술된 방식으로 생성되는 코드는 디버깅(debugging), 유지 및 확장이 어렵다.
UI가 외부적으로 특정되기 전에, 애플리케이션 비지니스 로직(application business logic)을 프리젠테이션(presentation)으로부터 분리하는 것이 필요하다. 이들 둘을 분리하는 한가지 접근방식은 모델-뷰-제어기(Model-View-Controller, MVC)설계 패턴이다. MVC는 이러한 문제점을 애플리케이션을 3개의 영역, 즉 추상 모델, 그러한 모델의 뷰 및 각각의 뷰에 대한 제어기로 분리함으로써 해결하려고 한다. 이러한 제어기는 입력 이벤트를 처리하고, 그들을 뷰 또는 모델에 대한 변경으로 변환한다. 역으로, 뷰 및 제어기는 관찰자(observer)들을 모델에 참가시켜서 변경시에 그들이 자신을 갱신할 수 있도록 한다. 예컨대, 사용자가 카탈로그를 검색하고 카탈로그 정보를 보는 웹 클라이언트 애플리케이션에 대하여, 모델은 카탈로그 정보가 저장되는 곳이다. 뷰는 사용자에 대한 프리젠테이션이다. 제어기는 (사용자로부터의 클릭 및 텍스트와 같은)입력 이벤트들을 처리하고, 뷰를 식별하고, 결과로서 어떻게 처리할지를 모델링한다. 뷰 및 제어기는 모델 내에서 관찰자를 통해서 뷰 및 제어기가 발견하는 변경의 결과로서 모델 내에서 변경한다.
MVC 패턴은 개념적으로 명확하다. 그러나, 실제에 있어서는 뷰와 제어기를 분리하기 어렵다. 이러한 어려움에 기인하여, 2개는 통상적으로 설계와 로직의 혼합인 단일의 ViewController 클래스(class)에 결합되며, 따라서, 다시 설계자 및 개발자가 협력하거나 그 중 하나가 단독으로 생성하기 어렵다. 더욱이, 이벤트의 처리와, 관찰자의 구현 및 갱신 메커니즘은 ViewController와 일치할 것이 요구되며, Model은 장황하며, 에러에 취약한 코드집약적 업무이며, 전체적으로 설계자들에게 부적절하다. 더욱이, 관찰자 및 갱신 코드는 전형적으로 한 인스턴스(instance)에서 다음 인스턴스까지 유사하다.
따라서, 전술한 바와 같이, 현재 개발자/설계자 작업 흐름 및 애플리케이션 구조는 많은 고유한 문제점들을 가진다. 전술한 결함의 관점에서, UI 컴포넌트를 가지는 애플리케이션 또는 애플리케이션의 일부를 생성하고 구성하는 향상된 방식에 대한 요구가 존재한다. 본 발명은 이러한 요구를 충족시킨다.
본 발명의 요약
관찰자 및 갱신 처리 코드를 최소화하면서 뷰 및 모델의 분리를 가능하게 하기 위하여, 데이터 바인딩(data binding)이 이용된다. 뷰는 모델 내의 적어도 하나의 모델 속성에 묶이는 적어도 하나의 뷰 속성을 포함한다. 이러한 바인딩은 뷰를 설계와 맞물리도록 하는 업무를 단순화하며, 이벤트를 처리, 이전에 처리된 관찰자 및 갱신 메커니즘의 기능을 자동으로 수행한다.
몇몇 실시예에서, 뷰에서의 이용을 위해 데이터를 모델로부터 변환하는 변환기가 이용될 수 있다. 몇몇 실시예들에서, 뷰로부터 기인하는 UI의 일부가 자동으로 생성될 수 있을 것이다. 몇몇 실시예들에서, 커맨드 바인딩이 이용되어 UI에서 트리거(trigger)된 커맨드들이 모델에서 처리되도록 할 수 있을 것이다.
본 발명의 다른 특징들 및 장점들이 후술하는 본 발명의 설명 및 첨부된 도면으로부터 명백해질 수 있을 것이다.
전술한 요약과 후술하는 바람직한 실시예들의 상세한 설명은 첨부된 도면과 함께 읽혀질 때에 보다 잘 이해될 것이다. 본 발명을 설명하기 위하여, 도면에서는 본 발명의 예시적인 구성들이 도시될 것이다. 그러나, 본 발명은 개시된 특정한 방법들 및 수단들에 한정되지 않는다.
예시적인 컴퓨팅 환경
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 일 예를 도시한다. 컴퓨팅 시스템 환경(100)은 적절한 컴퓨팅 환경의 단지 일 예일 뿐이며, 본 발명의 범위 또는 본 발명의 기능에 대한 임의의 제한을 암시하는 것은 아니다. 컴퓨팅 환경(100)은 예시적인 오퍼레이팅 환경(100)에 예시된 임의의 컴포넌트 또는 그 결합에 관하여 임의의 종속성 또는 요구사항을 가지는 것으로 해석되어서도 안된다.
본 기술 분야의 당업자는 컴퓨터 또는 다른 클라이언트 또는 서버 장치가 컴퓨터 네트워크의 일부로서, 또는 분산 컴퓨팅 환경에서 이용될 수 있음을 알 수 있다. 이러한 관점에서, 본 발명은 임의의 수의 메모리 또는 저장 유닛과, 임의의 수의 애플리케이션 및 임의의 수의 저장 유닛들 또는 볼륨(volume)들 사이에 프로세스들을 가지는 임의의 컴퓨터 시스템에 관련되며, 이들은 본 발명과 관련하여 이 용될 수 있을 것이다. 본 발명은 네트워크 환경 또는 분산 컴퓨팅 환경에서 이용되며, 원격 또는 로컬 저장 장치를 가지는 서버 컴퓨터들과 클라이언트 컴퓨터들을 가지는 환경에 적용될 수 있을 것이다. 본 발명은 프로그래밍 언어 기능과 원격 또는 로컬 서비스와 관련된 정보를 생성하고, 수신하고, 전송하기 위한 해석 및 실행 능력을 가지는 독립형 컴퓨팅 장치들에서도 적용될 수 있을 것이다.
본 발명은 많은 기타 범용 또는 특수 목적 컴퓨팅 환경 또는 구성에서 동작가능하다. 본 발명을 이용하기에 적절한 공지된 컴퓨팅 시스템, 환경 및/또는 구성의 예들은 퍼스널 컴퓨터, 서버 컴퓨터, 핸드헬드 또는 랩톱 장치, 마이크로프로세스 시스템, 마이크로프로세서 기반 시스템, 셋톱 박스, 프로그램가능 가전 장치, 네트워크 PC, 미니 컴퓨터, 메인프레임 컴퓨터, 상기된 시스템 또는 장치 중 임의의 것을 포함하는 분산 컴퓨팅 환경 등을 포함한다.
본 발명은 컴퓨터에 의해서 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령의 일반적인 컨텍스틀 기술될 수 있을 것이다. 통상적으로, 프로그램 모듈은 특정 업무를 수행하거나 특정한 추상 데이터 타입을 구현하는 루틴, 프로그램, 객체, 컴포넌트, 데이터 구조 등을 포함한다. 본 발명은 업무가 통신 네트워크 또는 다른 데이터 전송 매체를 통해서 연결된 원격 처리 장치들에 의해서 수행되는 분산 컴퓨팅 환경에서 실시될 수도 있을 것이다. 분산 컴퓨팅 환경에서, 프로그램 모듈들 및 기타 데이터는 메모리 저장 장치를 포함하는 로컬 및 원격 컴퓨터 저장 매체 모두에 위치할 수 있을 것이다. 분산 컴퓨팅은 컴퓨팅 장치들과 시스템들 사이의 직접 교환에 의해서 컴퓨팅 자원 및 서비스의 공유를 돕는다. 이들 자원들 및 서 비스들은 정보의 교환, 파일들에 대한 캐시 저장 장치 및 디스크 저장 장치를 포함한다. 분산 컴퓨팅은 네트워크 접속을 이용하며, 클라이언트가 그들의 집합적인 능력을 모아서 전체 사업을 이롭게 하는 것을 가능하게 한다. 이러한 관점에서, 다양한 장치들은 본 발명의 기술을 이용할 수 있는 애플리케이션들, 객체들 또는 자원들을 가질 수 있을 것이다.
도 1을 참조하면, 본 발명을 구현하는 예시적인 시스템은 컴퓨터(110) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(110)의 컴포넌트들은 프로세싱 유닛(120), 시스템 메모리(130) 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트들을 프로세싱 유닛(120)에 결합하는 시스템 버스(121)를 포함할 수 있을 것이며, 이에 한정되지 않는다. 시스템 버스(121)는 메모리 버스 또는 메모리 제어기, 주변 버스 및 임의의 다양한 버스 구조를 포함하는 로컬 버스를 포함하는 임의의 몇몇 타입의 버스 구조일 수 있을 것이다. 예시적으로 이러한 아키텍쳐는 ISA(Indudtry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스 및 PCI(Peripheral Component Interconnect) 버스(메자닌(Mezzanine) 버스로도 알려짐)를 포함하며, 이에 한정되는 것은 아니다.
컴퓨터(110)는 전형적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해서 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함할 수 있다. 예시적으로, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체 를 포함할 수 있을 것이며, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CDROM, DVD(digital versatile disks) 또는 기타 광 디스크 저장 장치, 자기 카세트, 자기 테이프, 자기 디스크 저장 장치 또는 기타 자기 저장 장치들 또는 원하는 정보를 저장하는 데에 이용될 수 있고, 컴퓨터(110)에 의해서 액세스될 수 있는 임의의 다른 매체를 포함하며, 이에 한정되지는 않는다. 통신 매체는 반송파 또는 다른 전송 메커니즘과 같은 변조된 데이터 신호에 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들 또는 기타 데이터를 전형적으로 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 설정되거나 변환된 속성을 하나 또는 그 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하며, 이에 한정되지 않는다. 상술한 것들 중의의 임의의 조합 또한 컴퓨터 판독가능 매체의 범위 내에 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리의 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133, BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 전형적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고/있거나 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 제한적이 아닌, 예시적으로, 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(140), 분리형 비휘발성 자기 디스크(152)로부터 판독하거나 그 자기 디스크에 기록하는 자기 디스크 드라이브(151) 및 CD-ROM 또는 기타 광학 매체 등의 분리형 비휘발성 광학 디스크(156)로부터 판독하거나 그 광학 디스크에 기록하는 광학 디스크 드라이브(155)가 도시되어 있다. 예시적인 오퍼레이팅 환경에서 사용될 수 있는 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체는 자기 테이프 카세트, 플래쉬 메모리 카드, DVD(Digital versatile disk), 디지털 비디오 테이프, 반도체 RAM, 반도체 ROM 등을 포함하지만 이에 한정되지 않는다. 하드 디스크 드라이브(141)는 일반적으로 인터페이스(140)와 같은 비분리형 메모리 인터페이스를 통해 시스템 버스(121)에 접속되고, 자기 디스크 드라이브(151) 및 광학 디스크 드라이브(155)는 일반적으로 인터페이스(150)와 같은 분리형 메모리 인터페이스에 의해 시스템 버스(121)에 접속된다.
앞서 기술되고 도 1에 도시된 드라이브 및 그 관련 컴퓨터 저장 매체는 컴퓨터(110)를 위한 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 및 기타 데이 터의 저장을 제공한다. 도 1에서, 예를 들어, 하드 디스크 드라이브(141)는 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 기타 프로그램 모듈(146) 및 프로그램 데이터(147)를 저장하는 것으로 도시된다. 이들 컴포넌트는 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136) 및 프로그램 데이터(137)와 동일할 수도 있고 다를 수도 있다. 오퍼레이팅 시스템(144), 애플리케이션 프로그램(145), 다른 프로그램 모듈(146) 및 프로그램 데이터(147)는 최소한 다른 복사본(different copies)임을 나타내기 위하여 다른 번호를 부여하였다. 사용자는 일반적으로 마우스, 트랙볼, 또는 터치 패드라 불리는 포인팅 장치(161) 및 키보드(162)와 같은 입력 장치를 통해 컴퓨터(110)에 명령 및 정보를 입력할 수 있다. (도시되지 않은)기타 입력 장치는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 장치 및 그외의 입력 장치는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB)와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다. 모니터(191) 또는 다른 유형의 디스플레이 장치는 또한 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 접속된다. 모니터외에도, 컴퓨터는 또한 출력 주변 인터페이스(195)를 통해 접속될 수 있는 스피커(197) 및 프린터(196) 등의 기타 주변 출력 장치를 포함할 수 있다.
컴퓨터(110)는 원격 컴퓨터(180)와 같은 하나 이상의 원격 컴퓨터로의 논리적 접속을 이용한 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(180)는 퍼스널 컴퓨터, 서버, 라우터, 네트워크 PC, 피어(peer) 장치 또는 기타 공통 네트워크 노드일 수 있으며, 비록 도 1 에는 메모리 저장 장치(181)만이 도시되어 있지만, 컴퓨터(110)에 관하여 상술한 구성요소 중 다수 또는 모든 구성요소를 일반적으로 포함할 수 있다. 도시된 논리적 접속은 근거리 통신망(LAN, 171) 및 원거리 통신망(WAN, 173)을 포함하지만, 그 외의 네트워크를 포함할 수도 있다. 이러한 네트워크 환경은 사무실, 기업 광역 컴퓨터 네트워크(enterprise-wide computer network), 인트라넷 및 인터넷에서 일반적인 것이다.
LAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 네트워크 인터페이스 또는 어댑터(170)를 통해 LAN(171)에 접속된다. WAN 네트워크 환경에서 사용되는 경우, 컴퓨터(110)는 일반적으로 인터넷 등의 WAN(173)을 통해 통신을 구축하기 위한 모뎀(172) 또는 기타 수단을 포함한다. 내장형 또는 외장형일 수 있는 모뎀(172)은 사용자 입력 인터페이스(160) 또는 기타 적절한 메커니즘을 통해 시스템 버스(121)에 접속될 수 있다. 네트워크 환경에서, 컴퓨터(110)에 관하여 도시된 프로그램 모듈 또는 그 일부분은 원격 메모리 저장 장치에 저장될 수 있다. 제한적이 아닌, 예시적으로, 도 1은 메모리 장치(181)에 상주하는 원격 애플리케이션 프로그램(185)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터들간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다.
예시된 실시예는 컴퓨팅 장치 상에 상주하는 소프트웨어와 관련하여 기재되지만, 본 발명의 하나 이상의 부분은, 서비스가 모든 .NET의 언어 및 서비스에 의해 수행될 수 있거나, 지원될 수 있거나, 이를 통해 액세스될 수 있도록, 모든 오 퍼레이팅 시스템, 애플리케이션 프로그래밍 인터페이스(API), 또는 코프로세서(coprocessor)와 요구 객체 간의 "미들 맨(middle man)" 객체를 통해 구현될 수 있을 뿐 아니라, 기타 분산형 컴퓨팅 프레임워크에서 구현될 수도 있다.
데이터 바운딩된 애플리케이션에서의 데이터 바인딩 컴포넌트의 이용
보다 높은 생산성을 제공하기 위하여, 애플리케이션의 요소들의 보다 나은 재사용성 및 개발자들과 설계자들 사이의 보다 용이한 협동이 필요하며, 본 발명은 사용자 인터페이스(UI)의 보기(또는 "뷰")와 기초 동작("모델") 사이의 완전한 분리를 제공한다. 도 2는 본 발명의 일 실시예에 따른 UI 컴포넌트를 포함하는 애플리케이션의 블럭도이다. 도 2에 도시된 바와 같이, 애플리케이션(200)은 뷰(210) 및 모델(240)을 포함한다. 이들은 애플리케이션을 구성하는 MCV 패턴 내의 뷰 및 모델에 대응한다. 모델(240)은 애플리케이션의 로직을 위한 UI가 없는 코드를 나타낸다. 예컨대, 카탈로그를 위한 데이터 베이스 및 비지니스 로직이 모델(240)로 구현될 수 있을 것이다. 추가적인 예로서, 애플리케이션(200)이 사용자가 파일 시스템을 조사하는 것을 가능하게 하는 경우에, 이러한 예시적인 경우에서 애플리케이션에 대한 모델은 파일 시스템, 즉 선택된 디렉토리 내의 폴더들 및 파일들의 세트이다. 모델(240)은 (카탈로그 데이터와 같은)데이터와 그러한 데이터에 대한 로직, 예컨대 일관성 규칙(consistency rule)을 모두 포함한다. 일관성 규칙은 카탈로그 내의 제품들의 가격이, 예컨대 부정적이지 않을 것을 요구한다.
모델(240)을 이용함으로써, 전통적인 프로그래밍 언어에서 정의된 모델을 가지는 이점을 가지게 되어, 소프트웨어 개발자가 이해할 수 있는 바가 유지된다. 상기 파일 시스템 예에서, 모델은 파일들을 이동(move), 복사(copy) 및 개명(rename)하고, 폴더들을 생성하고 애플리케이션 파일들을 실행하는 메써드(method)들로 구성된다. 이러한 동작들은 업무에 특정한, 그러나 이들 동작들을 최종 사용자에게 노출시키는 데에 이용된 UI에는 독립적인 비지니스 로직을 필수적으로 요구한다. 뷰(210)는 선언적으로 특정된다. 예컨대, 뷰(210)는 Microsoft 사의 Visual Studio 제품 또는 Macromedia 사의 Flex 제품과 같은 툴을 이용함으로써 정의될 수 있을 것이다.
뷰(210)와 모델(240) 사이의 링크를 제공하기 위하여, 애플리케이션(200)은 범용 데이터 바인딩 컴포넌트(220)를 이용한다. 범용 데이터 바인딩 컴포넌트는 애플리케이션(200) 내에 도시되어 있으나, 몇몇 실시예에서 애플리케이션(200)에 의해서 이용되는 이용가능한 자원이다. 몇몇 실시예들에서의 데이터 바인딩 컴포넌트(220)는 데이터 바인딩 엔진(220)이다. 이러한 데이터 바인딩 엔진은 모델에 관한 속성과 뷰에 관한 속성 사이의 연관과 같은 객체 쌍들의 속성 사이의 동적인 바인딩을 가능하게 한다. 데이터 바인딩 엔진(220)은 이들 객체들에 대한 속성 변경 통지를 청취하여, 소스 속성에 대한 변경들은 자동으로 타겟 속성을 반영하고, 그 역 또한 이루어진다. 데이터 바인딩 엔진은 속성 경로들의 평가를 지원하여 타겟의 특정 부분들의 바인딩이 소스의 부분들을 특정하는 것을 가능하도록 할 것이다. 본 발명의 몇몇 실시예들에서, 소스 객체 속성들에 대한 타겟 객체 속성들의 바인딩은 HTML(HyperText Markup Language), XML(eXtensible Markup Language), XAML(eXtensible Application Markup Language) 또는 다른 적절한 마크업 언어 (markup language)와 같은 마크업 언어로 선언적으로 행해질 수 있을 것이다.
따라서 데이터 바인딩 엔진(220)은 뷰(210)와 모델(240) 사이의 중재자로서 기능한다. 따라서, 데이터 바인딩 엔진을 이용함으로써, 애플리케이션들은 애플리케이션 코드가 뷰(210)로부터 이벤트들을 명시적으로 처리할 것을 요구하지 않고서 모델로부터 별도로 구성되는 사용자 인터페이스로 구성되며, 모델(240)에 대한 관찰자 및 갱신 메커니즘을 구현할 수 있을 것이다. 데이터 바인딩 엔진(220)은 그 소스와 타겟을 자동으로 동기화한다. 따라서, 사용자가 뷰(210)에 입력하거나 모델(240) 내에 변경이 발생하는 때에 적절한 갱신이 이루어진다.
예로서, 애플리케이션(200)은 온도를 나타내는 간단한 애플리케이션일 수 있을 것이다. 뷰(210)은 그래픽 설계자에 의해서 그래픽 툴로 제작될 수 있다. 예컨대, 간단한 뷰가 도 3에 도시되어 있다. 도 3에 도시된 바와 같이, 그래픽(300)은 텍스트 박스(310) 및 온도계 그래픽(320)을 포함한다. 예에서, 애플리케이션(200)은 사용자가 집 코드(zip code)를 텍스트 박스(310)에 입력하고, 그러한 집 코드에 대응하는 온도를 온도계 그래픽(320) 내에 디스플레이하는 것을 가능하게 한다. 온도계의 판독은 그래픽 설계자에 의해서 그래픽(300)과 관련된 가변 "길이(Length)"에 대응하도록 설정된다. 텍스트 입력 박스로부터의 데이터는 가변 "집코드(zipcode)"와 관련된다. 본 발명의 한 변형에서, 집코드에 대한 올바른 온도를 검색하기 위하여, 데이터베이스가 참고된다. 데이터베이스는 각각의 집코드에 대하여 온도계 그래픽(320)에 대하여 디스플레이할 길이를 저장한다. 데이터 바인딩 엔진(220)은 집코드와 길이를 데이터베이스 내의 집코드와 길이에 결합시키며, 도 3의 온도계 애플리케이션을 위한 데이터베이스는 모델(240)이다.
데이터 바인딩 컴포넌트 및 어댑터 층의 이용
도 4는 본 발명의 일 실시예에 따른 애플리케이션의 일부의 블럭도이다. 도 4는 뷰(410), 데이터 바인딩 컴포넌트(420) 및 모델(440)을 가지는 애플리케이션(400)을 도시한다. 뷰(410), 데이터 바인딩 컴포넌트(420) 및 모델(440)은 도 2의 대응 요소들을 참조하여 전술한 바와 같다. 그러나, 도 4는 모델(440) 내의 뷰로의/뷰로부터의 뷰(410)에서의 임의의 필요한 변환을 수행하는 어댑터 층(430) 또한 포함한다.
예컨대 온도계 애플리케이션 예의 다른 변경에서, 도 3에 도시된 온도계 애플리케이션에 대한 모델은 월드 와이드 웹(World Web Web)을 통해서 이용가능한 서비스에 의해서 수행된다. 이러한 웹 서비스는 후속하는 예에서 TemperatureModel이 아래와 같이 기술되는 모델(440)에 의해서 애플리케이션에서 노출될 수 있다.
Figure 112006006339911-pat00001
제공된 바와 같이, 웹서비스는 길이 값이 아니라 뷰(410)에서 직접적으로 이 용될 수 있는 도(degree) 단위의 온도에 대응하는 플로팅 포인트 수를 리턴한다. 이러한 경우에 있어서, 어댑터 층(430)은 이러한 플로팅 포인트 수를 뷰(410)에서 이용될 수 있는 길이로 변환할 수 있을 것이다. 데이터 바인딩 컴포넌트(420)는, 예컨대 인터넷을 통한 서비스에의 액세스를 가능하게 하는 랩퍼(wrapper)를 통해서 웹 서비스에 대하여 직접적으로 작용할 수 있을 것이며, 이러한 서비스에 의해서 제공되는 결과는 뷰(410)가 이해할 수 없으며, 도(degree)로 나타나는 온도가 아닌 길이를 요구한다. 따라서, 어댑터 층(430)은 변환을 제공한다. 웹 기반 온도계 애플리케이션 예에 대한 어댑터 층(430)의 예는 다음과 같다.
Figure 112006006339911-pat00002
이러한 어댑터 층(430)은 웹 서비스로부터 리턴된 온도로부터 길이가 결정되는 것을 가능하게 한다. 이러한 온도는 웹서비스, 클라이언트 측 스크립트로부터 획득되어 모델(440) 상의 온도 속성으로부터 월드 와이드 웹("webservice.get_temp(zipcode)")을 통해서 노출된 원격의 메써드를 호출한다. 길이는 획득된 온도에 근거한다. 그 후에, 데이터 바인딩 컴포넌트(420)는 어댑터 층(430)을 통해서 뷰(410)의 집코드를 모델(440) 내의 집코드에 바인딩하고, 뷰(410)의 길이를 모델(440) 내의 길이에 바인딩한다. 뷰(410) 내의 길이에 대한 바인딩 선언은 모델(440) 내의 온도와 어댑터 층(430) 내의 변환기를 모두 참조할 것이다. 새로운 집코드가 뷰(410) 내에 입력되는 경우에, 데이터 바인딩 컴포넌트는 모델(440) 내의 ZipCode 속성을 갱신할 것이다. 결과적으로, 모델은 모델 내의 집코드 및 온도 속성들이 변경되었음을 청취자들에게 통지할 것이다. 그 후에, 데이터 바인딩 컴포넌트는 모델(440)(웹 서비스)을 이용하여 새로운 길이를 계산하여 갱신된 온도 값을 획득할 것이며, 그 후에 어댑터 층(430) 내의 변환을 이용할 것이다. 결과적인 길이 값은 뷰(410) 내에 공급될 것이다.
도 5는 본 발명의 일 실시예에 따른 뷰, 데이터 바인딩 컴포넌트 및 모델 사이의 데이터의 흐름을 도시하는 블럭도이다. 화살표(512)에 의해서 나타나는 바와 같이, 데이터 바인딩 컴포넌트(520)는 뷰(510)로부터 속성 변경 통지를 청취한다. 부가적으로, 화살표(542)에 의해서 나타나는 바와 같이, 데이터 바인딩 컴포넌트(520)는 모델(540)로부터 속성 변경 통지를 청취한다. 변경 통지가 수신되는 경우에는, 화살표(525,526)에 의해서 도시된 바와 같이, 데이터 바인딩 컴포넌트(520)는 뷰(510) 내의 뷰 속성(550)을 모델(540) 내의 모델 속성(560)과 동기화할 것이다. 어댑터 층(530)이 존재하는 경우에, 전술한 바와 같이, 어댑터 층(530)은 속성이 직접적으로 대응하지 않는 이러한 동기화를 가능하게 한다.
변환기들, 자동으로 생성된 UI 및 커맨드 바인딩
다시 도 2를 참조하면, 전술한 바와 같이, 어댑터 층은 뷰(210) 내의 속성이 모델(240)에서의 속성에 대응하도록 변환기들을 허용한다. 변환기들은 한 세트의 값들로부터 다른 세트의 값들로 데이터의 특정 클래스를 변환하는 객체들이다. 변환기들은 한 방향 또는 양 방향으로 작용할 수 있다. 따라서, 온도계의 예에서, 변환기가 공급되어 웹 서비스로부터 검색된 결과를 길이로 변형한다. 이러한 변형 은 온도 값으로 다시 변환될 필요가 없어서 단지 단방향성 변환기만이 필요했기 때문에 단방향성이었다. 그러나 양방향성 변환기가 요구되는 경우가 존재할 수 있을 것이다. 예컨대, 미국의 지도가 도 3의 그래픽(300) 상에 나타나고, 텍스트 박스(310) 내에 집코드를 타이핑하는 대신에 지도 상의 소정의 지점이 사용자에 의해서 선택될 수 있는 경우를 가정하자. 그러한 경우에, 클릭의 위치를 유지하는 뷰(210) 내의 속성은 집코드를 식별하는 모델(240)에서의 속성으로 변환될 것이다. 그 후에, 추가적인 변형들을 통해서, 이러한 집코드는 텍스트 박스(310) 내에 디스플레이되는 값과 온도계 그래픽(320) 상에 디스플레이되는 값을 변경시키는 데에 이용된다.
변환기는 모델(240)이 데이터를 단일의 일관된 포맷을 유지하면서 UI가 상이한 포맷의 데이터를 노출시키는 것을 가능하게 한다. 이들은 모델(240)이 잉여 정보를 노출하도록 강제하지 않고서 모델(240) 상의 동일한 데이터가 몇몇 상이한 방식으로 동시에 디스플레이되는 것 또한 가능하게 한다. 속성들을 UI 컴포넌트에 바인딩하는 것에 추가하여, 데이터 바인딩은 모델(240)에 근거하여 사용자 인터페이스를 위한 컨텐츠를 자동으로 생성하는 강력한 능력 또한 제공한다. 예컨대, 모델(240)은 데이터의 집합인 속성을 노출할 수 있을 것이다. 뷰는 새로운 사용자 인터페이스 컴포넌트들이 모델 집합 내의 각각의 아이템을 위하여 뷰 내에 생성됨을 선언적으로 특정할 수 있다. 그 후에, 뷰 측 상의 집합은 데이터의 집합인 모델 상의 속성과 바인딩된다. 따라서, 이러한 바인딩은 UI 내의 사용자 인터페이스 컴포넌트들의 자동 생성을 야기한다. 따라서, 예컨대 모델 내의 이름들의 목록은 각각의 이름들이 UI 내에 열거되는 메뉴를 야기한다. 뷰(210)는 얼마나 많은 요소들이 이름들의 목록 내에 존재하는지를 알 필요가 없으며, 올바른 수를 가지는 리스트가 바인딩에 근거하여 자동으로 생성된다. 상이한 UI 요소들이 메뉴의 아이템들을 파퓨레이팅(populating)하고, 리스트 뷰들을 파퓨레이팅하고, 콤보 박스를 파퓨레이팅하는 방식을 포함하는 이러한 방식으로 생성될 수 있다.
커맨드 바인딩은 모델 내의 동작을 UI 요소에 결합하는 데에 이용된다. 도 6은 본 발명의 일 실시예에 따른 커맨드 바인딩의 이용을 도시하는 블럭도이다. 뷰(210) 내에서, (예컨대 메뉴 아이템과 같은)UI 요소(640)는 속성(645)을 노출할 것이다. 속성(645)은 데이터 바인딩 동안에 싱크(sink, 타겟)로서 동작한다. 예컨대, UI 요소(640)는 파일 시스템 예에서의 삭제(Delete) 버튼일 수 있을 것이며, 속성(645)은 선택된 파일을 삭제하기 위하여 대응하는 모델에 결합되는 커맨드 속성이다. 커맨드를 속성(645)에 결합하는 기능은 데이터 소스로서의 모델(240)을 할당하고, UI 요소(640) 상의 속성(645)을 모델 상의 커맨드(650)의 커맨드 속성(655)에 데이터 바인딩함으로써 획득될 수 있다. 따라서, 뷰(210) 내의 커맨드의 기능은 어떠한 필수적인 프로그램 코드도 포함하지 않고서 선언적으로 획득될 수 있다. 예에서의 버튼 UI 요소는 커맨드가 무엇인지에 관계없이 버튼이 눌러지는 때에 관련 커맨드를 간단하게 호출하는 것을 담당한다.
몇몇 실시예들에서, 선언적인 바인딩은 속성 경로를 이용하여 먼저 모델(240) 내의 활성 문서를 어드레싱(addressing)하고, 그 후에 속성 경로가 사용자 인터페이스(640) 상의 버튼의 커맨드 속성(645) 내에서 특정된 상태로 활성 문서 상의 편집 커맨드를 선택함으로써 획득될 수 있을 것이다.
본 발명에 따라 사용자에게 기능을 제공하는 방법
도 7은 본 발명의 일 실시예에 따라 사용자 인터페이스를 통해서 사용자에게 기능을 제공하는 방법의 흐름도이다. 이러한 기능은 풍부한, 데이터 바운드 애플리케이션을 제공할 수 있다. 단계 700에서, 사용자 인터페이스를 기술하는 뷰 데이터가 제공된다. 이러한 뷰 데이터는 적어도 하나의 뷰 속성을 포함한다. 부가적으로, 단계 710에서, 기능을 발효시키는 모델 데이터가 제공된다. 이러한 모델 데이터는 (예컨대, 데이터베이스 또는 다른 데이터 저장 장치로부터)그를 위한 데이터를 제공하거나, 또는 프로그램의 기능을 제공함으로써 기능을 발효시킬 수 있을 것이다. 단계 720에서, 적어도 하나의 뷰 속성이 적어도 하나의 모델 속성에 결합된다. 본 발명의 몇몇 실시예들에서, 이것은 데이터 바인딩 엔진에 의해서 수행된다. 단계 720은 뷰-컴플라이언트(view-compliant) 속성으로의 모델 속성의 변환 및 그 후의 모델 속성에의 바인딩을 통해서 수행될 수 있을 것이다. 부가적으로, 단계 720은 뷰 속성에 바인딩되는 뷰 속성의 모델 컴플라이언트 속성으로의 변환을 통해서 이루어질 수 있을 것이다. 뷰 및 커맨드 바인딩을 위한 UI 요소의 자동 생성은 바인딩 단계 720을 통해서 달성될 수 있다.
뷰 데이터의 제공 및 바인딩에 의한 모델 데이터로부터의 애플리케이션의 생성과 마찬가지로, 모델 데이터를 제공하고, 몇몇 모델 데이터 속성을 뷰 데이터 속성에 바인딩함으로써 뷰 데이터로부터 애플리케이션을 생성하는 것은 가능하다.
결론
본 명세서에 기술된 다양한 기술들은 하드웨어 또는 소프트웨어, 또는 적절한 경우에 소프트웨어와 하드웨어의 결합에 의해서 구현될 수 있을 것이다. 따라서, 본 발명의 방법들 및 장치들, 또는 소정의 특징 또는 그 일부는 플로피 디스켓, CDROM, 하드 드라이브 또는 임의의 다른 머신 판독가능 저장 매체와 같은 유형의 매체로 구현되는 프로그램 코드(즉, 명령)의 형태를 띨 수 있을 것이며, 이러한 프로그램 코드가 컴퓨터와 같은 머신 내에 로딩되고 실행되는 때에 이러한 머신은 본 발명을 실시하는 장치가 된다. 프로그램가능 컴퓨터 상에서의 프로그램 코드의 실행의 경우에, 컴퓨팅 장치는 통상적으로 프로세서, (휘발성 및 비휘발성 메모리 및/또는 저장 요소들을 포함하는)프로세서에 의해서 판독가능한 저장 매체, 적어도 하나의 입력 장치 및 적어도 하나의 출력 장치를 포함할 것이다. 예컨대, 데이터 프로세싱 API 등을 통한 본 발명의 범위 특정 프로그래밍 모델들 특징의 생성 및/또는 구현을 이용할 하나 이상의 프로그램들은 컴퓨터 시스템과 통신하는 고레벨 절차(procedural) 또는 객체 지향 프로그래밍 언어로 바람직하게 구현된다. 그러나, 프로그램(들)은 원하는 경우에는 어셈블리어 또는 기계어로 구현될 수 있다. 어떤 경우든 간에, 언어는 컴파일 또는 인터프리트 언어일 수 있으며, 하드웨어 구현과 결합될 것이다.

Claims (20)

  1. 사용자 인터페이스를 통해서 애플리케이션의 기능을 제공하는, 컴퓨터에 의해 실행되는 방법으로서,
    뷰 컴포넌트에, 사용자 인터페이스를 기술하는 뷰 데이터(view data)를 제공하는 단계 - 상기 뷰 데이터는 적어도 하나의 뷰 속성(view property)을 포함함 -;
    모델 컴포넌트에, 상기 기능을 발효시키는(effectuating) 모델 데이터를 제공하는 단계 - 상기 모델 데이터는 적어도 하나의 모델 속성을 포함함 -; 및
    상기 뷰 컴포넌트 및 상기 모델 컴포넌트와 독립적인 바인딩 컴포넌트에서, 상기 뷰 속성들 중 적어도 하나를 상기 모델 속성들 중 적어도 하나에 바인딩(binding)하는 것을 선언(declare)하는 단계 - 모든 바인딩 선언은 상기 바인딩 컴포넌트에 의해 수행되고, 상기 바인딩 컴포넌트는 상기 뷰 컴포넌트 및 상기 모델 컴포넌트에 대한 인스턴스화 없이 인스턴스화(instantiate) 가능함 - ; 및
    뷰 속성이 모델 속성에 대응되도록 하거나 모델 속성이 뷰 속성에 대응되도록 하기 위해 필요한 경우에만 변환을 실행하는 어댑터 층 컴포넌트를 제공하는 단계 - 상기 어댑터 층 컴포넌트는 상기 뷰 컴포넌트, 상기 모델 컴포넌트 및 상기 바인딩 컴포넌트와 독립적이고, 상기 바인딩 컴포넌트는 상기 어댑터 층 컴포넌트의 상기 변환을 참조함 -
    를 포함하는, 방법.
  2. 제1항에 있어서,
    상기 바인딩하는 것을 선언하는 단계는 데이터 바인딩 엔진(data binding engine)을 이용하여 바인딩하는 단계를 포함하는, 방법.
  3. 제1항에 있어서,
    상기 뷰 속성들 중 적어도 하나를 상기 모델 속성들 중 적어도 하나에 바인딩(binding)하는 것을 선언하는 단계는,
    상기 모델 속성의 변환(transformation)을 제공하는 단계 - 상기 변환으로 뷰-컴플라이언트 모델 속성(view-compliant model property)이 생김 -; 및
    상기 뷰 컴플라이언트 모델 속성을 상기 모델 속성에 바인딩하는 단계
    를 포함하는, 방법.
  4. 제1항에 있어서,
    상기 뷰 데이터는 적어도 하나의 특정 뷰 속성에 기초하여 사용자 인터페이스 요소들의 프리젠테이션을 기술하고, 상기 특정 뷰 속성은 적어도 하나의 특정 모델 속성에 바인딩되고, 상기 바인딩은 상기 프리젠테이션이 상기 적어도 하나의 모델 속성에 기초하여 상기 사용자 인터페이스 요소들을 자동 생성하는 것을 가능하게 하는, 방법.
  5. 제4항에 있어서,
    상기 자동 생성은 메뉴의 아이템들의 파퓨레이팅(populating), 목록 뷰들의 파퓨레이팅, 콤보박스들(comboboxes)의 파퓨레이팅 중 선택된 하나 이상을 포함하는, 방법.
  6. 제1항에 있어서,
    상기 모델 속성은 커맨드(command)인, 방법.
  7. 제1항의 방법의 단계들을 수행하는 컴퓨터 실행가능 명령어들을 포함하는, 컴퓨터 판독가능 기록매체.
  8. 사용자 인터페이스를 사용하여 애플리케이션을 제공하는 시스템으로서,
    상기 시스템은 프로세서를 포함하고, 상기 프로세서는 실행되어,
    사용자 인터페이스를 기술하는 뷰 컴포넌트 - 상기 뷰 컴포넌트는 뷰 데이터를 포함하는 뷰를 포함하고, 상기 뷰 데이터는 적어도 하나의 뷰 속성을 포함함 - ;
    상기 애플리케이션의 기능을 발효시키는 모델 데이터를 포함하는 모델 컴포넌트 - 상기 모델 데이터는 적어도 하나의 모델 속성을 포함함 - ;
    상기 뷰 속성들 중 적어도 하나를 상기 모델 속성들 중 적어도 하나에 바인딩하는 것을 선언하는 데이터 바인딩 컴포넌트 - 상기 데이터 바인딩 컴포넌트는 상기 뷰 컴포넌트 및 상기 모델 컴포넌트와 독립적이고, 상기 데이터 바인딩 컴포넌트는 상기 뷰 컴포넌트 및 상기 모델 컴포넌트를 인스턴스화하지 않고 인스턴스화 가능하며, 상기 데이터 바인딩 컴포넌트는 모든 바인딩들을 선언함 - ;
    뷰 속성이 모델 속성에 대응되도록 하거나 모델 속성이 뷰 속성에 대응되도록 하기 위해 필요한 경우에만 변환을 실행하는 어댑터 층 컴포넌트 - 상기 어댑터 층 컴포넌트는 상기 뷰 컴포넌트, 상기 모델 컴포넌트 및 상기 데이터 바인딩 컴포넌트와 독립적이고, 상기 데이터 바인딩 컴포넌트는 상기 어댑터 층 컴포넌트의 상기 변환을 참조함 -
    를 구현하는, 시스템.
  9. 제8항에 있어서,
    상기 바인딩은 데이터 바인딩 엔진을 이용한 바인딩을 포함하는, 시스템.
  10. 제8항에 있어서,
    상기 뷰 속성을 상기 모델 속성에 바인딩하는 것은,
    상기 모델 속성의 변환을 제공하는 것 - 상기 변환으로 뷰 컴플라이언트 모델 속성이 생김 -, 및
    상기 뷰 컴플라이언트 모델 속성을 상기 모델 속성에 바인딩하는 것
    을 포함하는, 시스템.
  11. 제8항에 있어서,
    상기 뷰 데이터는 적어도 하나의 특정 뷰 속성에 기초하여 사용자 인터페이스 요소들의 프리젠테이션을 기술하고, 상기 특정 뷰 속성은 적어도 하나의 특정 모델 속성에 바인딩되고, 상기 바인딩은 상기 프리젠테이션이 상기 적어도 하나의 모델 속성에 기초하여 상기 사용자 인터페이스 요소들을 자동 생성하는 것을 가능하게 하는, 시스템.
  12. 제11항에 있어서,
    상기 자동 생성은 메뉴의 아이템들의 파퓨레이팅, 목록 뷰들의 파퓨레이팅, 콤보박스들의 파퓨레이팅 중 선택된 하나 이상을 포함하는, 시스템.
  13. 제8항에 있어서,
    상기 모델 속성은 커맨드인 시스템.
  14. 사용자 인터페이스를 기술하는 뷰 컴포넌트 내의 뷰 데이터를 포함하는 뷰를 사용하여 애플리케이션을 생성하는 방법으로서, 상기 뷰 데이터는 적어도 하나의 뷰 속성을 포함하고, 상기 방법은 컴퓨터에 의해 실행되며,
    모델 컴포넌트에 기능을 발효시키는 모델 데이터를 제공하는 단계- 상기 모델 데이터는 적어도 하나의 모델 속성을 포함함 -; 및
    상기 뷰 컴포넌트 및 상기 모델 컴포넌트와 독립적인 바인딩 컴포넌트에서 상기 뷰 속성들 중 적어도 하나를 상기 모델 속성들 중 적어도 하나에 바인딩하는 것을 선언하는 단계 - 상기 바인딩 컴포넌트는 상기 뷰 컴포넌트 및 상기 모델 컴포넌를 인스턴스화하지 않고 인스턴스화 가능하고, 모든 바인딩 선언은 상기 바인딩 컴포넌트에 의해 수행됨 - ; 및
    뷰 속성이 모델 속성에 대응되도록 하거나 모델 속성이 뷰 속성에 대응되도록 하기 위해 필요한 경우에만 변환을 실행하는 어댑터 층 컴포넌트를 제공하는 단계 - 상기 어댑터 층 컴포넌트는 상기 뷰 컴포넌트, 상기 모델 컴포넌트 및 상기 바인딩 컴포넌트와 독립적이고, 상기 바인딩 컴포넌트는 상기 어댑터 층 컴포넌트의 상기 변환을 참조함 -
    를 포함하는, 방법.
  15. 제14항에 있어서,
    상기 바인딩하는 것을 선언하는 단계는 데이터 바인딩 엔진을 이용하여 바인딩하는 단계를 포함하는, 방법.
  16. 제14항에 있어서,
    상기 뷰 속성들 중 적어도 하나를 상기 모델 속성들 중 적어도 하나에 바인딩하는 것을 선언하는 단계는,
    상기 모델 속성의 변환을 제공하는 단계 - 상기 변환으로 뷰 컴플라이언트 모델 속성이 생김 -; 및
    상기 뷰 컴플라이언트 모델 속성을 상기 모델 속성에 바인딩하는 단계
    를 포함하는, 방법.
  17. 제14항에 있어서,
    상기 뷰 데이터는 적어도 하나의 특정 뷰 속성에 기초하여 사용자 인터페이스 요소들의 프리젠테이션을 기술하고, 상기 특정 뷰 속성은 적어도 하나의 특정 모델 속성에 바인딩되고, 상기 바인딩은 상기 프리젠테이션이 상기 적어도 하나의 모델 속성에 기초하여 상기 사용자 인터페이스 요소들을 자동 생성하는 것을 가능하게 하는, 방법.
  18. 제17항에 있어서,
    상기 자동 생성은 메뉴의 아이템들의 파퓨레이팅, 목록 뷰들의 파퓨레이팅, 콤보박스들의 파퓨레이팅 중 선택된 하나 이상을 포함하는, 방법.
  19. 제14항에 있어서,
    상기 모델 속성은 커맨드인, 방법.
  20. 제14항의 방법의 단계들을 수행하는 컴퓨터 실행가능 명령어들을 포함하는, 컴퓨터 판독가능 기록매체.
KR1020060008323A 2005-03-15 2006-01-26 풍부한 데이터 바인딩된 애플리케이션 KR101292401B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/080,531 US20060212842A1 (en) 2005-03-15 2005-03-15 Rich data-bound application
US11/080,531 2005-03-15

Publications (2)

Publication Number Publication Date
KR20060101221A KR20060101221A (ko) 2006-09-22
KR101292401B1 true KR101292401B1 (ko) 2013-08-01

Family

ID=36579740

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060008323A KR101292401B1 (ko) 2005-03-15 2006-01-26 풍부한 데이터 바인딩된 애플리케이션

Country Status (5)

Country Link
US (1) US20060212842A1 (ko)
EP (1) EP1703381B1 (ko)
JP (1) JP5031242B2 (ko)
KR (1) KR101292401B1 (ko)
CN (1) CN1834906A (ko)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8099710B2 (en) 2006-12-14 2012-01-17 Microsoft Corporation UI behaviors
JP2008171281A (ja) * 2007-01-12 2008-07-24 Fujitsu Ltd 表示画面構成装置
US20090193410A1 (en) 2007-09-28 2009-07-30 Xcerion Aktiebolag Network operating system
CN101861581A (zh) * 2007-09-28 2010-10-13 埃克斯里昂股份公司 网络操作系统
US20090112915A1 (en) * 2007-10-31 2009-04-30 Microsoft Corporation Class configuration for locally cached remote data binding
US9058483B2 (en) 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US9176754B2 (en) * 2008-07-16 2015-11-03 Google Inc. Method and system for executing applications using native code modules
US8327332B2 (en) 2008-09-02 2012-12-04 Microsoft Corporation Seamless debugging among different application views
US9253536B2 (en) * 2009-03-18 2016-02-02 Microsoft Technology Licensing, Llc Updating data-consuming entities
US8997053B2 (en) 2010-01-14 2015-03-31 Worksoft, Inc. System and method for automated testing of software applications with dynamic user interfaces spanning multiple technologies
JP5537330B2 (ja) * 2010-08-11 2014-07-02 富士通株式会社 表示画面構成装置
US8694900B2 (en) * 2010-12-13 2014-04-08 Microsoft Corporation Static definition of unknown visual layout positions
US9529866B2 (en) * 2010-12-20 2016-12-27 Sybase, Inc. Efficiently handling large data sets on mobile devices
CN102591629A (zh) * 2011-01-18 2012-07-18 腾讯科技(深圳)有限公司 一种添加图像元件的方法和装置
US8499122B2 (en) * 2011-11-21 2013-07-30 Microsoft Corporation Asynchronous data binding
CN102722372B (zh) * 2012-05-25 2015-04-22 上海学智科技有限公司 一种通过分类配置自动生成代码的方法及系统
US9516088B2 (en) * 2012-08-29 2016-12-06 Ebay Inc. Systems and methods to consistently generate web content
US10150043B2 (en) 2014-03-11 2018-12-11 Microsoft Technology Licensing, Llc Interactive smart beads
US9555326B2 (en) 2014-03-11 2017-01-31 Microsoft Technology Licensing, Llc Gaming system for modular toys
US9592443B2 (en) * 2014-03-11 2017-03-14 Microsoft Technology Licensing, Llc Data store for a modular assembly system
US10188939B2 (en) 2014-03-11 2019-01-29 Microsoft Technology Licensing, Llc Modular construction for interacting with software
US9703896B2 (en) 2014-03-11 2017-07-11 Microsoft Technology Licensing, Llc Generation of custom modular objects
US20150286691A1 (en) * 2014-04-02 2015-10-08 Microsoft Corporation Data view exposure mechanisms
CN105988778A (zh) * 2015-01-28 2016-10-05 阿里巴巴集团控股有限公司 一种页面设置方法及装置
US9483240B1 (en) * 2015-05-27 2016-11-01 Google Inc. Data binding dependency analysis
CN104834533B (zh) * 2015-06-05 2018-12-14 东信和平科技股份有限公司 一种pc机安装程序的建立方法及装置
CN105335160B (zh) * 2015-11-10 2018-12-28 河海大学 一种基于jsf的web端组件敏捷开发方法
CN108052365B (zh) * 2017-12-19 2021-04-27 深圳市四格互联信息技术有限公司 用户界面的组件生成方法及装置
US10394627B2 (en) 2017-12-28 2019-08-27 Schneider Electric Software, Llc Asynchronous C#-JS data binding bridge
CN108549570B (zh) * 2018-04-28 2021-10-26 北京小米移动软件有限公司 用户界面的更新方法及装置
GB201914521D0 (en) * 2019-10-08 2019-11-20 Wanilla Holdings Ltd A method of and a system for user interface generation
CN116917862A (zh) * 2021-03-31 2023-10-20 西门子(中国)有限公司 用于跨控制对象执行工作流任务的方法和装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030035003A1 (en) 1997-04-14 2003-02-20 Paul Marcos Method and apparatus for binding user interface objects to application objects
WO2004107200A1 (en) 2003-05-17 2004-12-09 Microsoft Corporation System and method for controlling user interface properties with data

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5255356A (en) * 1989-05-31 1993-10-19 Microsoft Corporation Method for hiding and showing spreadsheet cells
US5396587A (en) * 1990-04-11 1995-03-07 501 Lotus Development Corp. Asynchronous, minimal update display system
US5388196A (en) * 1990-09-07 1995-02-07 Xerox Corporation Hierarchical shared books with database
CA2099918C (en) * 1992-07-06 2002-11-19 Robert G. Atkinson Method and system for naming and binding objects
US5452459A (en) * 1993-01-08 1995-09-19 Digital Equipment Corporation Method and apparatus for allocating server access in a distributed computing environment
US5485617A (en) * 1993-12-13 1996-01-16 Microsoft Corporation Method and system for dynamically generating object connections
US5706505A (en) * 1994-08-19 1998-01-06 Microsoft Corporation Method and system for binding data in a computer system
US5835904A (en) * 1995-10-31 1998-11-10 Microsoft Corporation System and method for implementing database cursors in a client/server environment
US6401099B1 (en) * 1996-12-06 2002-06-04 Microsoft Corporation Asynchronous binding of named objects
US6378004B1 (en) * 1998-05-07 2002-04-23 Compaq Computer Corporation Method of communicating asynchronous elements from a mini-port driver
US6330006B1 (en) * 1998-05-12 2001-12-11 Silverstream Software, Inc. Method and apparatus for synchronizing an application's interface and data
US6463442B1 (en) * 1998-06-30 2002-10-08 Microsoft Corporation Container independent data binding system
US6438618B1 (en) * 1998-12-16 2002-08-20 Intel Corporation Method and device for filtering events in an event notification service
JP4000718B2 (ja) * 1999-06-24 2007-10-31 株式会社日立製作所 プログラム間バインド方法及び分散処理システム
AUPQ808700A0 (en) * 2000-06-09 2000-07-06 Honeywell Limited Human-machine interface
US7099958B2 (en) * 2000-08-15 2006-08-29 Fujitsu Limited System for designing and performing web application
GB2377784B (en) * 2001-02-12 2003-11-05 Altio Ltd A presentation server which enables a client device to run a network based application
US20020198747A1 (en) * 2001-06-26 2002-12-26 Boyer Stanley Gene Event driven airport
US6968329B1 (en) * 2001-09-26 2005-11-22 Syniverse Brience, Llc Event-driven and logic-based data transformation
TWI237354B (en) * 2002-01-31 2005-08-01 Advanced Semiconductor Eng Stacked package structure
US7028288B2 (en) * 2002-06-03 2006-04-11 Sun Microsystems, Inc. Input field constraint mechanism
US20060069717A1 (en) * 2003-08-27 2006-03-30 Ascential Software Corporation Security service for a services oriented architecture in a data integration platform
US7409692B2 (en) * 2003-09-30 2008-08-05 Sap Ag Software component architecture
US7469402B2 (en) * 2004-12-28 2008-12-23 Sap Aktiengesellschaft Pluggable model framework

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030035003A1 (en) 1997-04-14 2003-02-20 Paul Marcos Method and apparatus for binding user interface objects to application objects
WO2004107200A1 (en) 2003-05-17 2004-12-09 Microsoft Corporation System and method for controlling user interface properties with data

Also Published As

Publication number Publication date
EP1703381B1 (en) 2013-05-29
JP5031242B2 (ja) 2012-09-19
CN1834906A (zh) 2006-09-20
EP1703381A2 (en) 2006-09-20
US20060212842A1 (en) 2006-09-21
KR20060101221A (ko) 2006-09-22
EP1703381A3 (en) 2008-06-25
JP2006260540A (ja) 2006-09-28

Similar Documents

Publication Publication Date Title
KR101292401B1 (ko) 풍부한 데이터 바인딩된 애플리케이션
EP0679274B1 (en) Runtime loader
US5519862A (en) Concurrent processing apparatus with incremental command objects
US9430193B2 (en) Interface for a computer platform
US6158903A (en) Apparatus and method for allowing computer systems with different input/output devices to collaboratively edit data
US5530864A (en) Command object system for an object-oriented software platform
EP1586994B1 (en) System and method for dynamic binding of user interface controls and commands
US5446842A (en) Object-oriented collaboration system
US5551055A (en) System for providing locale dependent user interface for presenting control graphic which has different contents or same contents displayed in a predetermined order
US8904368B2 (en) Instantiating a composite application for different target platforms
US7469402B2 (en) Pluggable model framework
JP2006107478A (ja) ワークフローを設計するための拡張可能フレームワーク
Powers et al. Microsoft visual studio 2008 Unleashed
US7917856B2 (en) Converting between user interface technologies
Anton Distributed User Interfaces for the Web
Morohoshi et al. A user-friendly platform for developing and accessing grid services
Ciliberti et al. ASP. NET Core MVC Fundamentals
Pirchheim Visual programming of user interfaces for distributed graphics applications
Anderson in Information and Computer Science
Context-Aware Serenoa Framework (R2)

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160630

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170704

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 6