KR101137070B1 - 우선 순위 바인딩 - Google Patents

우선 순위 바인딩 Download PDF

Info

Publication number
KR101137070B1
KR101137070B1 KR1020050014603A KR20050014603A KR101137070B1 KR 101137070 B1 KR101137070 B1 KR 101137070B1 KR 1020050014603 A KR1020050014603 A KR 1020050014603A KR 20050014603 A KR20050014603 A KR 20050014603A KR 101137070 B1 KR101137070 B1 KR 101137070B1
Authority
KR
South Korea
Prior art keywords
binding
statement
statements
delete delete
priority
Prior art date
Application number
KR1020050014603A
Other languages
English (en)
Other versions
KR20060043081A (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 KR20060043081A publication Critical patent/KR20060043081A/ko
Application granted granted Critical
Publication of KR101137070B1 publication Critical patent/KR101137070B1/ko

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65BMACHINES, APPARATUS OR DEVICES FOR, OR METHODS OF, PACKAGING ARTICLES OR MATERIALS; UNPACKING
    • B65B69/00Unpacking of articles or materials, not otherwise provided for
    • B65B69/0025Removing or cutting binding material, e.g. straps or bands
    • 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
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B26HAND CUTTING TOOLS; CUTTING; SEVERING
    • B26FPERFORATING; PUNCHING; CUTTING-OUT; STAMPING-OUT; SEVERING BY MEANS OTHER THAN CUTTING
    • B26F3/00Severing by means other than cutting; Apparatus therefor
    • B26F3/06Severing by using heat
    • B26F3/08Severing by using heat with heated members
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65HHANDLING THIN OR FILAMENTARY MATERIAL, e.g. SHEETS, WEBS, CABLES
    • B65H20/00Advancing webs
    • B65H20/02Advancing webs by friction roller
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B65CONVEYING; PACKING; STORING; HANDLING THIN OR FILAMENTARY MATERIAL
    • B65HHANDLING THIN OR FILAMENTARY MATERIAL, e.g. SHEETS, WEBS, CABLES
    • B65H2301/00Handling processes for sheets or webs
    • B65H2301/40Type of handling process
    • B65H2301/44Moving, forwarding, guiding material
    • B65H2301/443Moving, forwarding, guiding material by acting on surface of handled material
    • B65H2301/4431Moving, forwarding, guiding material by acting on surface of handled material by means with operating surfaces contacting opposite faces of material
    • B65H2301/44318Moving, forwarding, guiding material by acting on surface of handled material by means with operating surfaces contacting opposite faces of material between rollers
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mechanical Engineering (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Forests & Forestry (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Devices For Executing Special Programs (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Bus Control (AREA)

Abstract

우선 순위 바인딩으로 인하여, 하나 이상의 바인딩 명령문의 명세에 의한 복잡한 코드 개발을 필요로 하지 않으면서 소스에 대한 타깃의 일 대 다중 매핑을 가능하게 한다. 성공적으로 평가되는 가장 높은 우선 순위 바인딩이 실행되며, 소스와 타깃 간의 양방향 정보 전송을 제어한다. 실행 동안, 모든 가능한 데이터 바인딩 경로가 모니터된다. 현존하는 바인딩보다 높은 우선 순위를 갖는 바인딩이 성공적으로 평가되면, 현존하는 바인딩은 종료되고, 새로운 바인딩이 실행된다.
우선 순위, 바인딩, 소스, 타깃, 바인딩 경로

Description

우선 순위 바인딩{PRIORITY BINDING}
도 1은 본 발명의 양상이 구현될 수도 있는 예시적인 컴퓨팅 환경을 보여주는 블록도.
도 2는 본 발명의 실시예에 따른 우선 순위 바인딩을 수행하기 위한 예시적인 시스템의 블록도.
도 3a는 본 발명의 실시예에 따른 도 2의 세부적인 다이어그램.
도 3b는 본 발명의 실시예에 따른 도 3a의 세부적인 다이어그램.
도 4a~4c는 본 발명의 실시예에 따른 예시적인 사용자 인터페이스를 나타내는 도면.
도 5는 본 발명의 실시예에 따른 우선 순위 바인딩의 예시적인 방법의 순서도.
도 6은 본 발명의 실시예에 따른 우선 순위 바인딩 명령문의 리스트를 평가하는 예시적인 방법의 순서도.
<도면의 주요 부분에 대한 부호의 설명>
202 : 컴퓨터
203 : 타깃
206 : 소스
208 : 데이터 바인딩 엔진
관련 출원에 대한 상호 참조
본 출원은 "APPLICATION OF A DATA-BINDING MECHANISM TO PERFORM COMMAND BINDING" 제목의 특허 출원 대리인 명세서 번호 MSFT-3490/307339.1에 관한 것이다.
본 발명은 컴퓨팅에 관한 것으로서, 특히 타깃(target)을 우선 순위 바인딩 기술을 통해 수많은 데이터 엘리먼트에 매핑하는 것에 관한 것이다.
소프트웨어 애플리케이션을 위한 사용자 인터페이스(UI)를 설계하는 것은, 지루하면서도 시간이 많이 소모되는 작업이다. 전형적으로, 개발자들은 코드를 기록하여, 그 애플리케이션의 기본 데이터에서 UI의 엘리먼트 또는 컴포넌트에 이르는 정보와, 다시 그 역순에 해당하는 정보를 전송시키는데 많은 시간을 사용한다. 이는, 개발자의 시간을 소모시킬 뿐만 아니라, 개발자가 UI 설계에 매우 집중해야한다는 점을 의미하기도 한다. UI가 시각적으로 매우 정교해지고 있기 때문에, 개발자보다는 프로 설계자가 UI를 제조하는 것이 점점 중요해지고 있다. 그러나, 코드는 여전히 인터페이스를 기본 데이터에 "후크 업(hook up)"하기 때문에, UI를 설계하는 작업은 개발자와 설계자 간에 공유되어야 한다.
인터페이스를 기본 데이터에 용이하면서도 융통적으로 후크 업하는 방식이 존재한다면, 도움이 될 것이다.
우선 순위 바인딩을 위한 시스템 및 방법에 의해, UI는 데이터 커넥션 코드없이 선언적으로 정의된다. UI 엘리먼트를 UI 명세 내 하나 이상의 기본 데이터 엘리먼트에 일 대 다중 매핑하는 선언 명세(declarative specification)에 의해, 복잡한 코드 개발을 요구하지 않으면서도 정교한 UI를 제조한다. 바인딩의 리스트와 우선 순위가 제공된다. 실행 시간 동안, 이러한 바인딩이 평가된다. 타당한 결과로 평가(즉, 성공적으로 평가)되는 가장 높은 우선 순위 바인딩을 실행하여, UI와 기본 데이터 간의 정보 전송을 제어한다. UI가 실행되는 동안, 모든 가능한 데이터 바인딩 경로가 모니터된다. 현존하는 바인딩보다 높은 우선 순위를 갖는 바인딩이 성공적으로 평가되면, 현존하는 바인딩은 종료되고, 새로운 바인딩이 실행된다.
이하에서는, 첨부되는 도면을 참조하여 설명에 도움이 되는 실시예를 상세하게 설명한다. 도면은 본 발명의 예시적인 구성을 보여줌으로써 본 발명을 설명하는데 그 목적이 있지만, 본 발명이 특정 방법 및 공개된 수단에 한정되는 것은 아니다.
개요
UI 엘리먼트 또는 컴포넌트를 기본 데이터에 "후크 업"할 필요가 있는 코딩을 없애기 위하여, "데이터 바인딩"으로 공통적으로 불리는 특징은, 설계자가 기본 데이터와 UI 간의 커넥션을 선언적으로 기술하는 것을 가능하게 한다. Text Box와 같은 UI 엘리먼트 또는 컴포넌트를, 예를 들어 데이터의 부분과 커넥션하는 것을 기술함으로써, 플랫폼은 데이터를 UI 내부 및 외부로 이동시키는 프로세스를 자동적으로 처리할 수도 있다. 예를 들어, 데이터 바인딩은 다음과 같이 종업원의 수를 UI의 텍스트 박스에 표시하는 명령문(statement)에 의해 시동될 수도 있다.
Text.TextContent = Bind("Employees.Count");
더욱이, 양방향 바인딩으로 인하여, 타깃의 변경을 모델에 반영하는 것을 가능하게 한다. 예를 들어, 다음의 명령문은 양방향 바인딩을 시동한다.
CheckBox.IsChecked = Bind("Employee.IsMarried");
상술한 바에 있어서, 상태를 검사하는 변경은, Employee 모델에 즉시 반영되며, 또한 그 모델의 상태를 표시한다.
이 접근법이 갖는 단점은 융통성이 없다는 점이다. 예를 들어, UI에 상태 또는 도움말 표시가 발생될 수도 있는 것처럼, 단일 UI 엘리먼트가 다중 데이터 엘리먼트에 접속될 수도 있다. 상태 텍스트는 다른 상태에 따른 상이한 메시지를 UI에 보여줄 수도 있다. 이를 증명하기 위하여, 항목 리스트 중 하나의 항목이 선택되면, 상태 텍스트는 선택된 항목에 대한 정보를 보여줄 수도 있다. 아무것도 선택되지 않으면, 텍스트는 전체 리스트에 대한 정보를 보여줄 수도 있다(예를 들어, 텍스트는 리스트 내 항목의 수를 표시할 수도 있다).
코드를 사용함으로써, 개발자는, 종래의 데이터 바인딩으로 수행되는 일 대 일 데이터 매핑보다 정교한 데이터와 UI 간의 커넥션을 기술할 수 있지만, 이 접근 법은, 설계자와 개발자 모두가 UI의 개발에 집중할 필요가 있다는 점에 관해서 상술한 문제점을 발생시킨다.
본 발명은 좀더 융통성 있는 시스템 및 방법을 사용하여 일 대 일 매핑을 확장시킴으로써, 이러한 이슈 및 다른 이슈를 처리하며, 설계자는 개발자의 참여없이 좀더 정교한 UI를 기술한다. 이 접근법을 사용함으로써, 단일 UI는 단일 데이터 엘리먼트에만 제한되지 않는 대신, 바인딩의 리스트 및 우선 순위 순서가 제공될 수도 있다. 일부 실시예에서, 우선 순위는, 명령문이 나타나는 순서(즉, 코드 또는 마크업 내 명령문의 출현 시퀀스)에 의해 표시된다. 대안적으로, 바인딩 명령문의 컬렉션 및 바인딩이 평가 및/또는 실행(예를 들어, 바인딩 명령문과 관련된 우선 순위 인디케이터(indicator)에 의해)되는 순서의 표시가 제공될 수도 있다. UI가 실행 시간 동안 실행될 때, 이러한 바인딩이 평가되며, 데이터 바인딩 명령문에 의해 식별된 특정 데이터 엘리먼트가 존재하면(즉, 명령문이 성공적으로 평가됨), 그 바인딩은 라이브(live)가 되며, UI와 기본 데이터 간의 데이터 전송을 제어한다.
UI의 수명(lifetime) 동안, 데이터 엘리먼트의 리스트 내에서 참조된 임의의 상태가 변경되면, 데이터 바인딩 엔진은 바인딩의 리스트를 재평가한 다음, 가장 높은 우선 순위의 유효 바인딩을 탐색한다. 가장 높은 우선 순위의 유효 바인딩이 실행된다. 다음의 명령문이 상술한 예를 기술한다고 가정한다.
StatusTextLabel.Text.Bindings.Add("Employees.SelectedItem.Name");
StatusTextLabel.Text.Bindings.Add("Employees.Count");
바인딩 평가 시점에서, 본 발명의 일부 실시예의 데이터 바인딩 엔진은 제1 바인딩을 먼저 조사할 것이다. 표식 "Employees.SelectedItem.Name"이 성공적으로 평가되면, 그 바인딩은 타당한 것이며, 데이터 바인딩 엔진은 그 바인딩을 라이브로 하며, 데이터를 요구되는 상태 텍스트 레벨로 복사할 것이다. "Employees"로 명명된 현재 데이터가 존재하지 않거나, 선택된 항목이 데이터 내에 현재 존재하지 않거나, SelectedItem이 특성 "Name"을 구비하지 않기 때문에, 명령문이 성공적으로 평가되지 않으면, 제1 바인딩은 실행되지 않고, 그 다음 바인딩이 평가된다. 바인딩이 타당하면, 그 바인딩이 실행된다. 어떠한 바인딩도 타당하지 않으면, 바인딩은 실행되지 않으며, 데이터는 UI 엘리먼트로/로부터 복사되지 않는다.
예시적인 컴퓨팅 환경
도 1 및 다음의 논의는, 본 발명이 구현될 수도 있는 적합한 컴퓨팅 환경의 개략적인 설명을 제공한다. 그러나, 핸드헬드, 포터블 및 모든 종류의 다른 컴퓨팅 디바이스가, 본 발명과 관련하여 사용될 수 있음을 이해해야 한다. 범용 컴퓨터가 이하에서 설명되지만, 이는 하나의 예이며, 본 발명은, 네트워크 서버 상호 운용성 및 상호 작용을 구비한 신 클라이언트(thin client)만을 필요로 한다. 따라서, 본 발명은, 매우 적거나 최소한의 클라이언트 리소스가 밀접하게 결합되는 네트워크 호스트 서비스의 환경, 예를 들어 클라이언트 디바이스가 단순히 World Wide Web에 대한 브라우저 또는 인터페이스로서의 역할을 하는 네트워크 환경에서 구현될 수도 있다.
비록 요구되지는 않지만, 본 발명은 개발자용 애플리케이션 프로그래밍 인터 페이스(API)를 통해 구현될 수 있으며, 또는 클라이언트 워크스테이션, 서버 또는 다른 디바이스와 같은 하나 이상의 컴퓨터에 의해 실행되는 프로그램 모듈과 같은 컴퓨터 실행가능 명령과 일반적으로 관련하여 설명되는 네트워크 브라우징 소프트웨어 내에 포함될 수 있다. 일반적으로, 프로그램 모듈은 특정 태스크를 수행하거나 특정 추상 데이터 유형을 구현하는 루틴, 프로그램, 오브젝트, 컴포넌트, 데이터 구조 등을 포함한다. 전형적으로, 프로그램 모듈의 기능성은 다양한 실시예에서 바람직하게 조합 또는 분산될 수도 있다. 더욱이, 본 기술 분야의 숙련자는, 본 발명이 다른 컴퓨터 시스템 구성에서 실행될 수도 있음을 인식할 것이다. 본 발명과 함께 사용하기에 적합할 수 있는 잘 알려진 컴퓨팅 시스템, 환경, 및/또는 구성의 예로는, 퍼스널 컴퓨터(PC), 자동 현금 입출 장치, 서버 컴퓨터, 핸드헬드 또는 랩탑 디바이스, 멀티프로세서 시스템, 마이크로프로세서-기반 시스템, 프로그램 가능 가전제품(programmable consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터 등이 있지만, 이에 한정되지는 않는다. 또한, 본 발명은, 통신 네트워크 또는 다른 데이터 전송 매체를 통해 링크되는 원격 프로세싱 디바이스에 의해 작업이 수행되는 분산 컴퓨팅 환경에서 실행될 수도 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은, 메모리 저장 디바이스를 포함하는 로컬 및 원격 컴퓨터 저장 미디어 모두에 배치될 수도 있다.
도 1은 본 발명이 구현될 수 있는 적절한 컴퓨팅 시스템 환경(100)의 예를 나타내지만, 컴퓨팅 시스템 환경(100)은 단지 적절한 컴퓨팅 환경의 일 예이며 본 발명의 사용 또는 기능의 범위에 제한을 가하도록 의도된 것은 아니다. 컴퓨팅 환 경(100)은 예시적인 오퍼레이팅 환경(100)에 도시된 컴포넌트 중 임의의 하나 또는 조합에 관하여 임의의 종속성(dependency) 또는 요구사항(requirement)을 갖는 것으로 해석되어서는 안 된다.
도 1을 참조하면, 본 발명을 구현하기 위한 예시적인 시스템은 컴퓨터(110)의 형태의 범용 컴퓨팅 디바이스를 포함한다. 컴퓨터(110)의 컴포넌트들로는, 프로세싱 유닛(120), 시스템 메모리(130), 및 시스템 메모리를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(120)에 연결시키는 시스템 버스(121)가 포함될 수 있지만, 이에 한정되는 것은 아니다. 시스템 버스(121)는 다양한 버스 아키텍처 중의 임의의 것을 사용하는 로컬 버스, 주변 버스, 및 메모리 버스 또는 메모리 컨트롤러를 포함하는 몇 가지 유형의 버스 구조 중의 임의의 것일 수 있다. 예로서, 이러한 아키텍처는 산업 표준 아키텍처(ISA) 버스, 마이크로 채널 아키텍처(MCA) 버스, 인핸스드 ISA(Enhanced ISA; EISA) 버스, 비디오 일렉트로닉스 표준 어소시에이션(VESA) 로컬 버스, 및 (메자닌(Mezzanine) 버스로도 알려진) 주변 컴포넌트 상호접속(PCI) 버스를 포함하지만, 이에 한정되는 것은 아니다.
컴퓨터(110)는 통상적으로 다양한 컴퓨터 판독가능 매체를 포함한다. 컴퓨터 판독가능 매체는 컴퓨터(110)에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있으며, 휘발성 및 비휘발성 매체, 분리형(removable) 및 비분리형(non-removable) 매체를 둘 다 포함한다. 예로서, 컴퓨터 판독가능 매체는 컴퓨터 저장 매체 및 통신 매체를 포함할 수 있지만, 이에 한정되는 것은 아니다. 컴퓨터 저장 매체는 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈 또는 다른 데이터와 같 은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 둘 다 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래쉬 메모리 또는 기타 메모리 기술, CDROM, DVD(digital versatile disk) 또는 기타 광학 디스크 저장 디바이스, 자기 카세트, 자기 테이프, 자기 디스크 저장 디바이스 또는 기타 자기 저장 디바이스, 또는 컴퓨터(110)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 기타 매체를 포함할 수 있지만, 이에 한정되지 않는다. 통신 매체는 통상적으로 반송파 또는 기타 전송 메커니즘 등의 변조된 데이터 신호에 컴퓨터 판독가능 명령, 데이터 구조, 프로그램 모듈, 또는 다른 데이터를 구현하며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라는 용어는 신호 내에 정보를 인코딩하도록 설정되거나 변환된 특성을 하나 또는 그 이상을 갖는 신호를 의미한다. 예로서, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선 및 기타 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지 않는다. 상술한 것들 중 임의의 조합이 컴퓨터 판독가능 매체의 범위 내에 또한 포함되어야 한다.
시스템 메모리(130)는 ROM(131) 및 RAM(132) 등의 휘발성 및/또는 비휘발성 메모리 형태의 컴퓨터 저장 매체를 포함한다. 시동중과 같은 때에 컴퓨터(110) 내의 구성요소들 간에 정보를 전송하는 것을 돕는 기본 루틴을 포함하는 기본 입출력 시스템(133; BIOS)은 일반적으로 ROM(131)에 저장된다. RAM(132)은 일반적으로 프로세싱 유닛(120)에 즉시 액세스될 수 있고 및/또는 프로세싱 유닛(120)에 의해 현재 작동되는 프로그램 모듈 및/또는 데이터를 포함한다. 예로서, (한정하고자 하 는 것은 아님) 도 1은 오퍼레이팅 시스템(134), 애플리케이션 프로그램(135), 기타 프로그램 모듈(136), 및 프로그램 데이터(137)를 도시한다.
컴퓨터(110)는 또한 다른 분리형/비분리형, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수 있다. 단지 예로서, 도 1에는 비분리형 비휘발성 자기 매체로부터 판독하거나 그 자기 매체에 기록하는 하드 디스크 드라이브(141), 분리형 비휘발성 자기 디스크(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)에 커멘드(command) 및 정보를 입력할 수 있다. (도시되지 않은) 기타 입력 디바이스는 마이크로폰, 조이스틱, 게임 패드, 위성 안테나, 스캐너 등을 포함할 수 있다. 이들 입력 디바이스 및 그외의 입력 디바이스는 시스템 버스에 연결된 사용자 입력 인터페이스(160)를 통해 종종 프로세싱 유닛(120)에 접속되지만, 병렬 포트, 게임 포트 또는 유니버설 시리얼 포트(USB) 와 같은 기타 인터페이스 및 버스 구조에 의해 접속될 수 있다.
모니터(191) 또는 다른 유형의 표시 디바이스는 비디오 인터페이스(190) 등의 인터페이스를 통해 시스템 버스(121)에 또한 접속된다. Northbridge와 같은 그래픽 인터페이스(182)가 시스템 버스(121)에 또한 접속될 수도 있다. Northbridge는, CPU 또는 호스트 프로세싱 유닛(120)과 통신하는 칩세트이며, AGP(accelerated graphics port) 통신을 책임진다고 가정한다. 하나 이상의 그래픽 프로세싱 유닛(GPU)(184)이 그래픽 인터페이스(182)와 통신할 수도 있다. 이러한 관점에서, GPU(184)는 일반적으로 레지스터 저장과 같은 온-칩 메모리 저장을 포함하며, GPU(184)는 비디오 메모리(186)와 통신한다. 그러나, GPU(184)는 보조 처리기의 예이므로, 다양한 보조처리 디바이스가 컴퓨터(110)에 포함될 수도 있다. 모니터(191) 및 다른 유형의 표시 디바이스가, 비디오 메모리(186)와 통신할 수도 있는 비디오 인터페이스(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)을 도시한다. 도시된 네트워크 접속은 예시적인 것이며, 컴퓨터 간의 통신 링크를 구축하는 그 외의 수단이 사용될 수 있다.
본 기술 분야의 숙련자는, 컴퓨터(110) 또는 다른 클라이언트 디바이스가 컴퓨터 네트워크의 부분으로서 배치될 수 있음을 인식할 수 있다. 이러한 관점에서, 본 발명은, 임의의 수의 메모리 또는 저장 유닛과, 임의의 수의 저장 유닛 또는 볼륨에서 발생하는 임의의 수의 애플리케이션 및 프로세스를 구비하는 임의의 컴퓨터 시스템에 관한 것이다. 본 발명은, 원격 또는 로컬 저장을 구비하는 네트워크 환경에 배치되는 서버 컴퓨터와 클라이언트 컴퓨터를 사용하는 환경에 적용할 수도 있다. 또한, 본 발명은, 프로그래밍 언어 기능성, 해석 및 실행 능력을 구비한 자립형 컴퓨팅 디바이스에 적용할 수도 있다.
우선 순위 데이터 바인딩을 수행하기 위한 시스템 및 방법
도 2는 본 발명의 일부 실시예에 따른 우선 순위 바인딩을 수행하기 위한 예시적인 시스템을 나타낸다. 그 시스템은, 도 2의 예시적인 컴퓨터(202)와 같은 하나 이상의 컴퓨터 전체 또는 일부에 속할 수도 있다. 컴퓨터(202)는 도 1에 도시한 컴퓨터(110)와 같은 컴퓨터를 포함할 수도 있다. 우선 순위 바인딩을 수행하기 위한 시스템은, 데이터 바인딩 컴포넌트(208), 소스(206) 및/또는 타깃(203)과 같은 하나 이상의 엘리먼트를 포함할 수도 있다.
소스(206)는 소스 오브젝트(210a,210b 등)로 표현한 하나 이상의 소스 오브젝트를 포함할 수도 있다. 소스 오브젝트(210a,210b 등)는, 도 2에서 소스 오브젝트(212a 등)로 표현한 하나 이상의 자(子) 소스 오브젝트와 조합될 수도 있다. 본 발명의 일부 실시예에서, 소스(206)는 모델을 표현할 수도 있다. 본 발명의 일부 실시예에서의 모델은 기본 상태의 컬렉션을 표현하는 기본 애플리케이션 논리이다.
예를 들어, 사용자가 파일 시스템을 익스플로어(explore) 할 수 있는 애플리케이션을 고려하자. 이 경우의 애플리케이션을 위한 모델은, 선택된 디렉토리의 폴더 내에 폴더와 파일의 세트를 구비하는 파일 시스템일 수도 있다. 뷰(view)의 수는 모델에서 설정될 수도 있다. 모델에서 설정되는 뷰는 그 모델에 의존할 수도 있다. 그러나, 본 발명의 일부 실시예에서, 모델은 뷰 또는 뷰들에 의존하지 않는다. 모델은, 오브젝트 중 하나에 대한 특성이 변경되거나, 상태의 변경이 발생하면, 변경 통지를 송신할 수도 있다. 예를 들어, 새로운 파일이 폴더에 추가되면, 변경 통지가 송신될 수도 있다.
타깃(203)은 도 2에서 타깃 오브젝트(204a,204b 등)로 표현한 하나 이상의 타깃 오브젝트를 포함할 수도 있다. 타깃 오브젝트(204a,204b 등)는 하나 이상의 자(子) 타깃 오브젝트(도시하지 않음)와 조합될 수도 있다. 본 발명의 일부 실시예에서, 타깃은 뷰 또는 사용자 인터페이스일 수도 있다. 하나 이상의 뷰가 모델에서 설정될 수도 있으며, 기본 모델의 상태를 표시할 수도 있다. 본 발명의 일부 실시예에서, 뷰 또는 사용자 인터페이스는 사용자 인터페이스의 룩(look)을 정의하며, 사용자 인터페이스의 엘리먼트 또는 컴포넌트를 정의하는 HTML(hypertext markup language), XML(eXtensible Markup Language), XAML(eXtensible Application Markup Language) 또는 다른 적합한 마크업 언어 등의 마크업 언어에서 정의된다. 타깃 오브젝트는, 메뉴 항목, 버튼, 텍스트 제어 또는 리스트 박스와 같은 사용자 인터페이스 엘리먼트 또는 제어일 수도 있지만, 이에 한정되지는 않는다. 상술한 파일 시스템의 예에서, 예시적인 사용자 인터페이스는 현재 선택된 폴더 내 파일의 리스트를 표시할 수도 있다.
타깃을 소스에 바인드(예를 들어, 사용자 인터페이스를 기본 모델에)하기 위하여, 본 발명의 일부 실시예에서는, 사용자 인터페이스와, 이벤트 핸들러(handler)를 사용하는 기본 모델 간의 관계를 유지하는 코드를 통해 바인딩을 명시적으로 정의하는 대신, 데이터 소스와, 예를 들어 질의 경로에 한정되지 않는 바인딩 경로를 지정함으로써, 사용자 인터페이스 컴포넌트를 나타내는 오브젝트를 기본 모델 오브젝트에 설정한다. 질의의 임의의 부분이 변경되면, 오브젝트는 변경 통지를 송신하고, 우선 순위 데이터 바인딩 엔진은 변경 통지를 검출하여, 적당한 오브젝트를 업데이트한다. 질의되고 있는 주체는 작동 중인 프로그램 내 라이브 오브젝트인 점을 인식할 것이다. 본 발명의 일부 실시예에서, 참조되는 데이터 소스는, URI(Uniform Resource Identifier)에 의해 지정된 오브젝트, 데이터베이스 질의를 통해 액세스된 데이터베이스, 프로그램 모델 등의 임의의 타입의 데이터 소스일 수도 있지만, 이에 한정되지는 않는다. 질의 경로는, XML XPath 표식 등과 같이 오브젝트 경로로서 지정될 수도 있다.
본 발명의 일부 실시예에서, 데이터 바인딩 컴포넌트(208)는 우선 순위 데이 터 바인딩 엔진으로서, 임의의 소스 오브젝트(예를 들어, 예시적인 소스 오브젝트 210a, 210b,,212a,,)를 타깃 오브젝트(예를 들어, 예시적인 타깃 오브젝트 204a, 204b,,)에 동적으로 바인딩한다. 우선 순위 데이터 바인딩 엔진(208)은 오브젝트(예를 들어, 오브젝트 204a, 204b,,210a, 210b,,212a,,)에 대한 특성 변경 통지에 주의하여, 소스 오브젝트에 대한 변경을 관련 타깃 오브젝트에 자동적으로 반영할 수도 있으며, 그 반대를 반영할 수도 있다. 타깃 오브젝트는, 그 타깃 오브젝트를 제한하는 소스 모델을 식별할 수도 있는 데이터 소스와 관련될 수도 있다. 우선 순위 데이터 바인딩 엔진(208)은 특성 경로를 지원하여, 타깃의 특정 부분을 소스의 특정 부분에 바인딩하는 것을 가능하게 한다. 본 발명의 일부 실시예에서, 타깃 오브젝트를 소스 오브젝트에 바인딩하는 것은, HTML(HyperText Markup Language), XML(eXtensible Markup Language), XAML(eXtensible Application Markup Language) 또는 다른 적합한 마크업 언어 등의 마크업 언어에서 선언적으로 행해질 수도 있다. 데이터 바인딩 엔진(208)은 타깃 오브젝트의 데이터 소스에 대한 소스 오브젝트를 탐색하여 적절한 업데이트를 수행할 수도 있으며, 그 반대를 수행할 수도 있다.
본 발명의 일부 실시예에서, 객체 지향 오브젝트의 그래프가 생성되는데, 하나, 일부, 또는 모든 오브젝트는, 그래프를 형성하는 다른 오브젝트를 가리키며, 각각의 화살표는, 오브젝트로부터, 특성을 나타내는 그래프 내 또다른 오브젝트를 가리킨다. 객체 지향 오브젝트의 예시적인 그래프를 도 3a의 부분에서 나타낸다. 도 3a 및 3b는 파일 시스템(파일 및 폴더)의 예를 제공한다. 본 발명이 파일 및 폴더, 또는 파일 시스템 익스플로러 애플리케이션에 대한 모델에 한정되지 않으며, 데이터 소스와 특성 계층으로서 표현될 수 있는 임의의 적절한 주체, 예를 들어 객체 지향 프로그래밍 언어계에서의 오브젝트가 의도될 수 있지만, 이에 한정되지 않는다는 점이, 본 기술 분야의 숙련자에게 명백해질 것이다. 도 3a에서, 예를 들어 오브젝트(324)는 파일 시스템 익스플로러 애플리케이션(모델)을 나타내며, 오브젝트 323 및 312는 파일 시스템 내 폴더와 파일 오브젝트를 각각 나타낼 수도 있다. 오브젝트 322 및 316은 폴더(323)와 파일(312) 오브젝트의 이름 특성을 각각 나타낼 수도 있다. 본 발명의 일부 실시예에서, 우선 순위 데이터 바인딩 엔진(208)은, 데이터 소스(예컨대, 오브젝트 324)와, 데이터 소스(오브젝트 324)로부터 데이터 경로(오브젝트 323에서 오브젝트 322)에 의해 식별된 오브젝트까지의 경로를 표현하는 특성 경로(예컨대, "CurrentFolder.Name")의 명세를 가능하게 한다. 그러므로, 이 예에서, 우선 순위 데이터 바인딩 엔진(208)은 오브젝트 그래프에 질의하여, 경로 "CurrentFolder.Name"에 의해 어떤 오브젝트(이 경우, 오브젝트 322)가 표현되는지 결정하고, 그 오브젝트(322)의 콘텐츠를 결정하며, 지정된 타깃 오브젝트(예를 들어, UI(328)의 텍스트 필드 330)를 업데이트할 수 있다.
도 3a에서, 우선 순위 데이터 바인딩 엔진(320)은, 소스 오브젝트(312)(모델 324의 부분)에 대한 특성(316)을, 타깃 오브젝트(330)에 대한 특성(예를 들어, UI 컴포넌트 텍스트 필드)에 바인드할 수도 있다. 우선 순위 데이터 바인딩 엔진(320)은 특성 변경 통지에 주의할 수도 있다(예를 들어, 모델(324)의 선택된 항목 오브젝트(312)의 이름 특성(316)이 변경되면, 선택된 항목 오브젝트(312)는 변경 통지를 송신할 수도 있음). 우선 순위 데이터 바인딩 엔진(320)은 변경 통지에 주의하여, 그 변경 통지를 검출하면, 소스와 타깃(UI 엘리먼트, 텍스트 필드 330)을 자동적으로 동기시킨다.
도 3b는 본 발명의 일부 실시예에 따른 예시적인 우선 순위 바인딩 시스템을 나타낸다. 도 3b에서, 모델(324)은, 오브젝트 323(현재 폴더) 및 312(선택된 항목)으로 표현되는 하나 이상의 오브젝트를 포함하며, 현재 폴더(323)를 위한 하나 이상의 특성(이름 322로 표현)과, 선택된 항목(312)을 위한 하나 이상의 특성(이름 316으로 표현)을 노출한다. UI(328)는 도 3b에서 텍스트 필드(330)로 표현한 하나 이상의 UI 컴포넌트를 포함한다. UI(328)의 명세는, 도 3b에서 바인딩 1(305), 바인딩 2(306)...바인딩 n(308)으로 표현한 하나 이상의 바인딩 명령문 및 폴백(fallback) 값(310)(옵션)을 포함한다. 텍스트 필드의 콘텐츠(UI에서 표시됨)는 현재 폴더의 이름(오브젝트 322) 또는 선택된 항목의 이름(오브젝트 316)으로 설정될 수도 있다. 본 발명의 일부 실시예에서, 데이터 바인딩 엔진(320)은 어떤 바인딩을 실행하는지를 결정하므로, 콘텐츠가 텍스트 필드(320)에 표시될 것이다. 하나 이상의 바인딩 명령문을 지정하여 평가할 수도 있다. 바인딩 명령문을 제공하는 순서가 우선 순위를 결정할 수도 있는데, 즉 제공된 제1 명령문이 가장 높은 우선 순위가 될 수도 있으며, 제2 명령문이 그 다음으로 높은 우선 순위가 될 수도 있지만, 우선 순위를 식별하는 임의의 적합한 수단이 의도된다는 점을 이해할 것이다. 예를 들어, 관련 태그(tag), 마크업 프리젠테이션의 알파벳 순서(우선 순위는 톱(top)에서 보텀(bottom) 또는 보텀에서 톱으로의 순서가 됨), 또는 임의의 다른 적합한 수단으로 우선 순위를 나타낼 수도 있다. 도 3b에서, 바인딩 명령문의 컬렉션(collection)은 바인딩 1(305)과 바인딩 2(306)를 포함하지만, 임의의 수의 바인딩이 지정될 수도 있다. 본 발명의 일부 실시예에서, 명령문의 평가 순서는 우선 순위의 순서가 되지만, 바인딩 명령문이 임의의 순서대로 평가될 수도 있음을 이해하게 될 것이다. 본 발명의 일부 실시예에서, 데이터 바인딩 엔진(320)은 첫 번째로 바인딩 1(305)을 평가한다. 바인딩 1(305)이 현재 폴더(323)의 이름(322)과 관련이 있다고 가정한다. 바인딩 1(305)이 성공적으로 평가되면, 현재 폴더의 이름이 텍스트 필드(330)에 표시될 것이다. 바인딩 2(306)는 선택된 항목(312)의 이름(316)과 관련이 있다고 가정한다. 바인딩 1(305)이 성공적으로 평가되지 않으면, 데이터 바인딩 엔진(320)은 바인딩 2(306)를 평가한다. 바인딩 2(306)가 성공적으로 평가되면, 선택된 항목(312)의 이름(316)이 텍스트 필드(330)에 표시될 것이다. 또한, 본 발명의 일부 실시예에서, 폴백 값(310)이 지정될 수도 있다. 이 경우, 바인딩 1(305) 및 바인딩 2(306) 모두 성공적으로 평가되지 않으면, 폴백 값(310)이 텍스트 필드(330)에 표시될 수도 있다. 따라서, 데이터 바인딩 엔진(320)은 이벤트 변경에 주의하여, 바인딩 컬렉션의 어떤 바인딩(즉, 라이브 바인딩)을 실행하는지를 결정하며, 현재의 라이브 바인딩에 의해 타깃(예를 들어, UI 컴포넌트)을 업데이트한다.
본 발명의 일부 실시예에서, 데이터 바인딩 엔진은 변경 통지를 위하여 모든 오브젝트를 계속해서 모니터한다. 데이터 바인딩 엔진이 더 높은 우선 순위 바인딩에 대한 변경 통지를 수신하면, 그 바인딩이 평가되며, 바인딩이 성공적으로 평 가되면, 데이터 바인딩 엔진은 더 높은 우선 순위 바인딩을 실행한다. 또한, 현재의 바인딩이 유효하지 않으면(예를 들어, 항목이 선택되지 않아서 선택된 항목이 널(null)이 되기 때문), 전체 표식은 더 이상 성공적으로 평가되지 않으며, 데이터 바인딩 엔진은 바인딩 표식의 컬렉션을 다시 평가한다. 정확하게 평가되는 가장 높은 우선 순위 표식이 실행되며, 표시가 적절하게 업데이트된다.
도 4a~4c는 상술한 내용에서의 가능한 시나리오를 증명하는 일련의 사용자 인터페이스를 나타낸다. 도 4a는, 파일 시스템(파일 및 폴더)이 모델인 예시적인 UI(400)를 나타낸다. Detail 페인(pane)(402)은 현재 선택에 대한 상태를 표시한다. 본 발명의 일부 실시예에서, Detail 페인(402)에 표시되는 것은, UI 정의 내 우선 순위 바인딩 명령문의 컬렉션을 통해 선언적으로 지정된다. 본 발명의 일부 실시예에서, UI는, HTML(Hypertext Markup Language), XML(eXtensible Markup Language), XAML(eXtensible Markup Application Language), 또는 다른 적합한 마크업 언어 등의 마크업 언어를 통해 정의된다. UI의 정의에서 지정된 우선 순위 바인딩의 리스트는, Detail 페인(402)의 텍스트 콘텐츠(도 3a 및 3b의 타깃 텍스트 필드(330)에 대응함)를, 현재 선택(도 3a 및 3b의 선택된 항목(312)에 대응함)과 현재 폴더(현재 폴더 323)에 관련시킬 수도 있다. 우선 순위 바인딩의 리스트는, 텍스트 제어가 단일 선택의 이름(가장 높은 우선 순위)에 설정된다는 점을 나타낼 수도 있으며, 단일 선택이 존재하지 않으면, 텍스트는 현재 폴더의 이름에 설정된다. 다음은 XAML로 기록된 상술한 내용의 예시적인 명세이다.
<Text>
<TextContent>
<BindingList>
<Bind Path="Model.SelectedItem.Name"/>
<Bind Path="Model.CurrentFolder.Name"/>
</BindingList>
</TextContent>
</Text>
따라서, 아무것도 선택되지 않을 때, Detail 페인(402)은 현재 폴더(404)의 이름("Internet Explorer")을 표시할 수도 있다.
마크업의 유사한 섹션을 지정함으로써, 항목("File Folder" 406)과 수정 시간(408)의 디스크립션(description)을 또한 표시할 수도 있다. 예를 들어, 어떤 것이 선택되면, 텍스트 제어는 단일 선택의 디스크립션에 설정될 수도 있다. 단일 선택이 존재하지 않으면, 텍스트는 선택된 항목의 수에 설정될 수도 있다. 어떤 종류의 선택이 존재하지 않으면, 텍스트는 현재 폴더의 디스크립션에 설정될 수도 있다. 다음은 XAML로 기록된 상술한 내용의 예시적인 명세이다.
<Text>
<TextContent>
<BindingList>
<Bind Path="Model.SelectedItem.Description"/>
<Bind Path="Model.SelectedItem.SelectionCount"/>
<Bind Path="Model.CurrentFolder.Description"/>
</BindingList>
</TextContent>
</Text>
도 4a에서, 선택된 항목이 존재하지 않기 때문에, 첫 번째 2개의 바인딩 명령문 중 어느 것도 평가되지 않는다. 그러나, 제3 바인딩 명령문이 성공적으로 평가되어, 현재 폴더 디스크립션("File Folder")이 평가되며, "File Folder"가 텍스트 필드(406)에 표시된다. 도 4b는, 단일 항목이 선택된 이후의 도 4a의 예시적인 UI(400)를 나타낸다. 도 4b에서, 항목 "IEXPLORE.EXE"가 선택된다. 항목 "IEXPLORE.EXE"(412)는 도 3a 및 3b의 선택된 항목(312)에 대응한다.
이제, Detail 페인(402)은 선택된 항목의 이름("IEXPLORE.EXE" 414), 디스크립션("File" 416)을 표시한다. 또한, 텍스트 제어는 단일 선택의 파일 크기에 설정될 수도 있다. 단일 선택이 존재하지 않으면, 텍스트는, 선택된 항목의 세트에 의해 노출된 전체 파일 크기에 설정될 수도 있다. 어떤 종류의 선택도 존재하지 않으면, 텍스트는, 비어있는 스트링을 그 제어 타입을 위한 디폴트 값으로 이용할 수도 있다. 다음은 XAML로 기록된 상술한 내용의 예시적인 명세이다.
<Text>
<TextContent>
<BindingList>
<Bind Path="Model.SelectedItem.FileSize"/>
<Bind Path="Model.SelectedItems.TotalFileSize"/>
</BindingList>
</TextContent>
</Text>
그러므로, 도 4b에서는 항목이 선택되었기 때문에, 파일 크기(420)가 표시된다. 마크업의 유사한 블록을 지정하여 수정 시간(418)을 표시할 수 있다.
도 4c는, 복수의 항목이 선택된 이후의 도 4a의 예시적인 UI(400)를 나타낸다. 도 4c에서, 항목 "HMMAPI.DLL"(422) 및 "IEXPLORE.EXE"(412)가 선택된다. 이 경우, Detail 페인(402)은, 선택된 항목의 이름보다는 폴더의 이름(404)("Internet Explorer")을 표시하며, 선택된 항목의 수(424)와 전체 파일 크기(426)를 표시하는 디스크립션을 표시한다. 수정 시간은 표시되지 않는다.
본 발명의 일부 실시예에서, 수많은 항목이 선택되며, 모든 선택 항목을 포함하는 항목의 단일 컬렉션으로서 노출될 수도 있다("파일" 등의 타입보다는 "컬렉션"의 타입). 항목의 컬렉션에 어떤 것이 추가 또는 제거되면, 바인딩 엔진에 의해 변경 통지가 송신되어 업데이트된다.
본 발명의 일부 실시예에서, 바인딩이 타당하지 않으면, 디폴트 값을 사용한다. 리터럴(literal) 값은 UI 정의에서 지정될 수도 있다. 우선 순위 바인딩 리스트를 통한 탐색에서, 성공적으로 평가되는 바인딩 명령문을 발견하지 못한 경우, 리터럴 값이 타깃에 적용될 것이다. 예를 들어, 디스크립션 필드를 위한 바인딩 명령문 중 어떠한 것도 성공적으로 평가될 수 없는 경우, 텍스트 제어는 지정된 폴 백 값("No description available")을 사용할 수도 있다. 다음은 XAML로 기록된 상술한 내용의 예시적인 명세이다.
<Text>
<TextContent>
<BindingList>
<Bind Path="Model.SelectedItem.Description"/>
<Bind Path="Model.SelectedItem.SelectionCount"/>
<Bind Path="Model.CurrentFolder.Description"/>
<Default Text="No description available"/>
</BindingList>
</TextContent>
</Text>
본 발명의 일부 실시예에서, 우선 순위 바인딩 메커니즘은 각각의 바인딩 명령문에 대한 선택적인 표식을 평가하여 추가적인 융통성을 제공한다. 예를 들어, 도 4a~4c의 파일 시스템 내 이름 필드의 예 UI Details Pane에 대안적인 접근을 제공하는 표식이 지정될 수도 있다. 선택 내에 하나의 항목만이 존재하는 경우, 그 필드는 선택된 항목의 이름에 설정되며, 그렇지 않은 경우에는 현재 폴더의 이름에 설정된다고 가정한다. 다음의 명령문 그룹은 그러한 결과를 지정할 수도 있다.
<Text>
<TextContent>
<BindingList>
<Bind Path="Model.SelectedItems[0].Name">
<Expression>
<Property>
<Bind Path="Model.SelectedItems.Count"/>
</Property>
<Value>1</Value>
</Expression>
</Bind>
<Bind Path="Model.CurrentFolder.Name"/>
</BindingList>
</TextContent>
</Text>
이 경우에서는, 두 개의 항목이 선택된다고 가정한다. SelectedItems가 0번째 항목을 포함하며, 그 항목이 Name 특성을 구비할 수도 있지만, 바인딩 명령문 1에서의 표식은, SelectedItems.Count가 1이 아니기 때문에 실패한다. 따라서, 바인딩 명령문 1은 성공적으로 평가되지 않으며, 바인딩 명령문 2 <Bind Path="Model.CurrentFolder.Name"/>가 바인딩 명령문 1에 대해 상술한 바와 같이 평가된다.
도 5는, 본 발명의 실시예에 따른 우선 순위 바인딩을 지정하고 실행하는 방법에 대한 예시적인 순서도를 나타낸다. 본 방법의 하나 이상의 단계는 선택적일 수도 있다. 도 5의 단계(502)에서, 소스 정의를 수신한다. 이는, 모델 또는 애플리케이션의 코딩 및/또는 인스턴스 생성(instantiation)을 포함할 수도 있다. 예를 들어, 개발자는, 설정되는 하나 이상의 특성을 노출하는 모델을 구현할 수도 있다. 단계(504)에서, 타깃 정의를 수신한다. 이는, 사용자 인터페이스 및/또는 사용자 인터페이스의 인스턴스 생성과 같은 타깃의 코드 또는 마크업에서의 명세를 포함할 수도 있다. 예를 들어, 설계자는 사용자 인터페이스를 마크업 언어 내에 생성할 수도 있으며, 개발자는 사용자 인터페이스를 코드 내에 생성할 수도 있다. 단계(506)에서, 실행의 순서 또는 우선 순위를 나타내는 하나 이상의 바인딩 명령문의 컬렉션을 수신할 수도 있다. 본 발명의 일부 실시예에서, 우선 순위 순서는 명령문의 순서에 의해 표시되는데, 명령문 리스트 내 제1 바인딩 명령문이 가장 높은 우선 순위 명령문이며, 명령문 리스트 내 제2 바인딩 명령문은 두 번째로 높은 우선 순위 명령문이 된다. 대안적으로, 실행의 우선 순위는, 바인딩 명령문과 관련된 마커(marker) 또는 인디케이터(indicator)에 의해, 또는 임의의 다른 적합한 수단에 의해 표시될 수도 있다. 예를 들어, 실행의 우선 순위는, 톱에서 보텀으로, 또는 보텀에서 톱으로 제공되는 바인딩 명령문의 시퀀스에 의해 표시될 수도 있다. 우선 순위를 표시하는 다른 적합한 수단이 의도된다. 본 발명의 일부 실시예에서, 바인딩 명령문의 명세는 타깃의 정의(단계 504)에 포함될 수도 있다. 이는, 상술한 바와 같이, 타깃과 소스 간의 데이터 커넥션의 코딩(예컨대, 개발자에 의해) 또는 마크업 내 하나 이상의 바인딩 명령문의 컬렉션의 명세(예컨대, 설계자에 의해)를 포함할 수도 있다.
단계(508)에서, 모델과 사용자 인터페이스를 포함하는 애플리케이션이 생성 및/또는 실행될 수도 있다. 바인딩 엔진은 모델의 경로에 주의하며, 데이터 바인딩 명령문의 컬렉션을 우선 순위 순서대로 실행하는데, 즉 성공적으로 평가되는 가장 높은 우선 순위 명령문이 실행되므로, 상술한 바와 같이 타깃과 모델을 동기시킨다. 본 발명의 일부 실시예에서, 바인딩 명령문은 우선 순위 실행 순서로 평가되지만, 바인딩 명령문은 랜덤한 시퀀스로, 현재 실행중인 명령문의 포인트로부터, 표시된 평가 순서로, 또는 다른 적합한 순서로 평가될 수도 있다.
도 6은 상술한 바인딩 명령문 컬렉션의 평가를 설명하는 순서도이다. 단계(602)에서, 바인딩 명령문을 평가한다. 성공적으로 평가되는 경우, 표식은 참(true)(단계 604, 선택적)이며, 그 오브젝트의 값이 단계(606)에서 적용된다. 바인딩 명령문이 성공적으로 평가되지 않은 경우, 그 다음 바인딩 명령문(존재한다면)이 평가된다(단계 608). 그 다음 바인딩 명령문이 성공적으로 평가되고, 표식이 참인 경우(단계 610, 선택적), 바인딩 명령문에 의해 표시된 값이 단계(612)에서 적용된다. 그 다음 바인딩 명령문이 성공적으로 평가되지 않은 경우, 그 다음 바인딩 명령문(존재한다면)이 평가된다. 이러한 단계는, 명령문의 컬렉션 내 모든 바인딩 명령문이 평가될 때까지 반복된다. 바인딩 명령문은, 상술한 바와 같이 우선 순위 순서 또는 임의의 다른 순서로 평가될 수도 있다. 성공적으로 평가(관련 표현이 존재한다면 참인 경우)되는 가장 높은 우선 순위 바인딩 명령문이 실행된 다. 명령문 컬렉션 내 모든 바인딩 명령문이 평가되어, 그 중에서 성공적으로 평가되는 바인딩 명령문이 없는 경우, 폴백 값이 지정되는데(단계 614, 선택적), 폴백 값을 사용하여 타깃을 업데이트할 수도 있다. 폴백 명령문이 제공되지 않는 경우, 타깃 값은 설정되지 않은 상태로 남을 수도 있고, 소거(clear)될 수도 있으며, 또는 디폴트 값으로 설정될 수도 있다.
도 3b 및 도 4b를 다시 참조하면서, 바인딩 명령문 1을 다음과 같이 가정한다.
<Bind Path="Model.SelectedItem.Name"/>
단계(602)에서, 바인드 경로 "Model.SelectedItem.Name"를 평가할 수도 있다. 그 오브젝트 그래프가 질의될 수도 있으며, 다음과 같이 결정될 수도 있다.
- 데이터 소스, 모델 내에 SelectedItem 특성이 존재하는가?
- 그렇다면, 오브젝트 값은 널이 아닌가?
- 그렇다면, 오브젝트는 "Name" 특성을 갖는가?
- 그렇다면, 정의된 표식이 존재하는가?
- 그렇다면, 그 표식을 평가한다. 그 표식을 정확하게 평가하는가?
- 그렇다면, 그 바인딩을 적용한다.
- 그렇지 않다면, 그 바인딩 평가는 실패이다.
상술한 예에서, 모델의 SelectedItem 특성이 존재하고, 이름 특성 (IEXPLORE.EXE)을 구비하며, 표식이 존재하지 않으면, 바인딩 명령문 1이 적용되며, IEXPLORE.EXE를 리턴하여 UI 텍스트 필드에 표시한다. 이러한 단계의 세트는, 성공적으로 평가되는 가장 높은 우선 순위의 바인딩 명령문을 발견할 때까지, 평가된 각각의 바인딩 명령문에 대해서 반복될 수도 있음을 이해할 것이다.
바인딩 엔진은 변경 통지를 위해 모니터할 수도 있다. 예를 들어, 변경 통지가 오브젝트(316)으로부터 송신된 경우, 바인딩 명령문을 재평가하여 가장 높은 우선 순위 명령문을 결정한다.
본 발명에서 설명한 다양한 기술은, 하드웨어 또는 소프트웨어, 또는 그 둘의 조합에서 구현될 수도 있다. 따라서, 본 발명의 방법 및 장치, 또는 어떤 양상 또는 부분은, 플로피 디스켓, CD-ROM, 하드드라이브, 또는 임의의 다른 머신 판독가능한 저장 매체와 같은 실재 미디어에 내장된 프로그램 코드(즉, 명령문)의 형태를 이용할 수도 있는데, 프로그램이 로드되어, 컴퓨터와 같은 머신에 의해 실행될 때, 그 머신은 본 발명을 실행하기 위한 장치가 된다. 프로그램 가능 컴퓨터에서 프로그램 코드를 실행하는 경우, 컴퓨팅 디바이스는, 프로세서, 그 프로세서에 의해 판독 가능한 저장 매체(휘발성 및 비휘발성 메모리 및/또는 저장 엘리먼트를 포함), 적어도 하나의 입력 디바이스 및 적어도 하나의 출력 디바이스를 일반적으로 구비한다. 도메인 지정 프로그래밍 모델의 생성 및/또는 구현을 사용할 수도 있는 하나 이상의 프로그램은, 본 발명의 양상에 따르면, 예를 들어 데이터 프로세싱 API 등을 사용하여, 높은 레벨의 절차적 또는 객체 지향 프로그래밍 언어에서 바람직하게 구현되어 컴퓨터 시스템과 통신한다. 그러나, 그 프로그램은 어셈블리 또는 머신 언어에서 구현될 수 있다. 어떤 경우에서, 그 언어는 컴파일되거나 해석된 언어일 수도 있으며, 하드웨어 구현과 조합될 수도 있다.
본 발명은 다양한 도면의 바람직한 실시예를 통해 설명되지만, 다른 유사한 실시예가 사용될 수도 있으며, 또는 변경과 추가를 통해 본 발명을 벗어나지 않으면서 본 발명의 동일한 기능을 수행하기 위한 실시예를 설명할 수도 있음을 이해한다. 그러므로, 본 발명은 임의의 단일 실시예에 한정되어서는 안 되고, 첨부한 청구범위에 의한 범위 내에서 해석되어야 한다.
우선 순위 바인딩을 위한 시스템 및 방법에 의해, UI는 데이터 커넥션 코드없이 선언적으로 정의된다. UI 엘리먼트를 UI 명세 내 하나 이상의 기본 데이터 엘리먼트에 일 대 다중 매핑하는 선언 명세(declarative specification)에 의해, 복잡한 코드 개발을 요구하지 않으면서도 정교한 UI를 제조한다.

Claims (40)

  1. 타깃(target)과 소스(source)를 바인딩하기 위한 시스템으로서,
    복수의 바인딩 명령문을 저장하는 컴퓨터 - 상기 복수의 바인딩 명령문은 상기 컴퓨터에 의한 사용자 인터페이스 소프트웨어의 실행 동안 사용자 인터페이스에 디스플레이될 콘텐츠를 결정하는 데에 이용되며, 선언적인 명령문들(declarative statements)에 의해 기술되며, 적어도 제1 바인딩 명령문과 제2 바인딩 명령문을 포함함 -;
    상기 컴퓨터 상에서 실행되는 바인딩 엔진 - 상기 바인딩 엔진은 상기 타깃을 상기 소스에 바인딩하기 위하여 상기 복수의 바인딩 명령문이 상기 컴퓨터에 의해 실행되어야 할 우선 순위 순서를 정하며, 실행 우선 순위 순서는 상기 복수의 바인딩 명령문 각각과 관련된 우선 순위 인디케이터(indicator) 또는 마커(marker)를 이용하여 정해지며, 상기 바인딩 엔진은 상기 컴퓨터에 의한 사용자 인터페이스 소프트웨어의 실행 동안 사용자 인터페이스에 디스플레이될 콘텐츠를 결정하기 위하여 상기 복수의 바인딩 명령문을 평가함- 을 포함하고,
    이에 의해 상기 우선 순위 순서에 따라 상기 바인딩 명령문을 실행하는 것은 상기 사용자 인터페이스의 효과적인 생성을 가능하게 하는 바인딩 시스템.
  2. 제1항에 있어서,
    상기 제1 바인딩 명령문은 제1 우선 순위와 관련되며, 상기 제2 바인딩 명령문은 제2 우선 순위와 관련되는 바인딩 시스템.
  3. 제1항에 있어서,
    상기 제1 바인딩 명령문은 데이터 소스를 포함하는 바인딩 시스템.
  4. 제1항에 있어서,
    상기 제1 바인딩 명령문은 바인딩 경로를 포함하는 바인딩 시스템.
  5. 제1항에 있어서,
    상기 제2 바인딩 명령문은 디폴트 값을 포함하며, 상기 디폴트 값은 상기 제2 바인딩 명령문이 성공적으로 평가될 때만, 타깃을 업데이트하는 데에 사용되는 바인딩 시스템.
  6. 타깃을 복수의 데이터 엘리먼트 중 적어도 두 개에 바인딩하기 위한, 컴퓨터로 구현되는 방법으로서,
    사용자 인터페이스 소프트웨어의 프로그램 개발 동안 제공되는 선언적인 명령문에 의해 기술되는 복수의 바인딩 명령문을 저장하는 단계 - 상기 복수의 바인딩 명령문은 적어도 제1 바인딩 명령문과 제2 바인딩 명령문을 포함하고, 바인딩 엔진이 상기 컴퓨터에 의한 사용자 인터페이스 소프트웨어의 실행 동안 사용자 인터페이스에 디스플레이될 콘텐츠를 결정하기 위하여 상기 복수의 바인딩 명령문을 평가함 -;
    상기 복수의 바인딩 명령문의 실행 순서를 표시하는 우선 순위 순서를 수신하는 단계 - 상기 제1 바인딩 명령문은 가장 높은 우선 순위와 관련되며, 상기 제2 바인딩 명령문은 그 다음으로 높은 우선 순위와 관련되고, 상기 우선 순위 순서는 상기 복수의 바인딩 명령문 각각과 관련된 우선 순위 인디케이터를 이용하여 정해짐 - ;
    우선 순위가 더 높은 상기 제1 바인딩 명령문을 평가하는 단계;
    평가가 성공한다면 상기 제1 바인딩 명령문을 실행하는 단계;
    상기 제1 바인딩 명령문이 평가되는 것을 실패한다면 자동으로 상기 제2 바인딩 명령문을 평가하는 단계 - 상기 제1 바인딩 명령문 및 상기 제2 바인딩 명령문의 평가는 상기 바인딩 엔진에 의해 수행됨 - ; 및
    상기 제1 바인딩 명령문 및 상기 제2 바인딩 명령문 모두가 성공적으로 평가되는 것을 실패하면 상기 사용자 인터페이스에 폴백(fallback) 값을 디스플레이하는 단계를 포함하고,
    이에 의해 상기 우선 순위 순서에 따라 상기 바인딩 명령문을 실행하는 것은 상기 사용자 인터페이스의 효과적인 생성을 가능하게 하는 방법.
  7. 제6항에 있어서,
    상기 제1 바인딩 명령문을 실행하는 단계는, 상기 제1 바인딩 명령문에 의해 식별된 데이터 엘리먼트를 가지고 타깃을 업데이트하는 단계를 포함하는 방법.
  8. 제6항에 있어서,
    상기 제1 바인딩 명령문이 성공적으로 평가되지 않는다는 결정에 응답하여, 자동으로 상기 제2 바인딩 명령문을 평가하는 단계를 포함하는 방법.
  9. 제6항에 있어서,
    변경 통지를 위해 상기 복수의 바인딩 명령문과 관련된 복수의 데이터 바인딩 경로를 모니터링하는 단계를 더 포함하는 방법.
  10. 컴퓨터 실행가능 명령을 포함하는 컴퓨터 판독가능 기억 매체로서,
    상기 컴퓨터 실행가능 명령은
    컴퓨터에 의한 사용자 인터페이스 소프트웨어의 실행 동안 사용자 인터페이스에 디스플레이될 콘텐츠를 결정하는 데에 이용되는 바인딩 명령문의 컬렉션을 사용하여 소스의 복수의 데이터 엘리먼트 중 적어도 제1 데이터 엘리먼트와 제2 데이터 엘리먼트에 타깃을 매핑하기 위한 명령 - 복수의 바인딩 명령문이 선언적인 마크업 언어(declarative markup language)로 되어 있으며, 상기 바인딩 명령문의 컬렉션은 사용자 인터페이스의 프로그램 개발 동안 제공됨 - ;
    상기 바인딩 명령문 중 어느 것이 컴퓨터에 의한 상기 사용자 인터페이스의 실행 동안 상기 사용자 인터페이스에 디스플레이될 콘텐츠를 결정하는 데에 이용될지를 결정하기 위하여 우선 순위 순서를 이용하여 상기 타깃을 바인딩하기 위한 우선 순위 데이터 바인딩 엔진을 가지고 상기 바인딩 명령문의 컬렉션을 평가하는 명령; 및
    상기 바인딩 명령문의 컬렉션이 성공적으로 평가되는 것을 실패하면 상기 사용자 인터페이스에 폴백 값을 디스플레이하는 명령을 포함하고,
    이에 의해 상기 우선 순위 순서에 따라 상기 바인딩 명령문을 실행하는 것은 상기 사용자 인터페이스의 효과적인 생성을 가능하게 하는 컴퓨터 판독가능 기억 매체.
  11. 제10항에 있어서,
    상기 바인딩 명령문의 컬렉션에 대한 실행 순서를 표시하기 위한 컴퓨터 실행가능 명령을 더 포함하는 컴퓨터 판독가능 기억 매체.
  12. 제11항에 있어서,
    상기 바인딩 명령문의 컬렉션은, 상기 제1 데이터 엘리먼트와 관련된 제1 바인딩 명령문, 가장 높은 우선 순위를 표시하는 제1 실행 순서, 상기 제2 데이터 엘리먼트와 관련된 제2 바인딩 명령문 및 두 번째로 높은 우선 순위를 표시하는 제2 실행 순서를 포함한다는 것을 나타내기 위한 컴퓨터 실행가능 명령을 더 포함하는 컴퓨터 판독가능 기억 매체.
  13. 제12항에 있어서,
    상기 제1 바인딩 명령문을 평가하고, 상기 제1 바인딩 명령문이 성공적으로 평가된다는 결정에 응답하여 상기 제1 바인딩 명령문을 실행하기 위한 컴퓨터 실행가능 명령을 더 포함하는 컴퓨터 판독가능 기억 매체.
  14. 제12항에 있어서,
    변경 통지를 위해 상기 제1 데이터 엘리먼트와 상기 제2 데이터 엘리먼트를 모니터링하고, 상기 변경 통지의 검출에 응답하여 상기 바인딩 명령문의 컬렉션을 재평가하기 위한 컴퓨터 실행가능 명령을 더 포함하는 컴퓨터 판독가능 기억 매체.
  15. 제12항에 있어서,
    상기 제1 바인딩 명령문이 성공적으로 평가되지 않는다고 결정하고, 이에 응답하여 상기 제2 바인딩 명령문을 평가하기 위한 컴퓨터 실행가능 명령을 더 포함하는 컴퓨터 판독가능 기억 매체.
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
KR1020050014603A 2004-04-13 2005-02-22 우선 순위 바인딩 KR101137070B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/823,461 US7539687B2 (en) 2004-04-13 2004-04-13 Priority binding
US10/823,461 2004-04-13

Publications (2)

Publication Number Publication Date
KR20060043081A KR20060043081A (ko) 2006-05-15
KR101137070B1 true KR101137070B1 (ko) 2012-04-19

Family

ID=34939124

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050014603A KR101137070B1 (ko) 2004-04-13 2005-02-22 우선 순위 바인딩

Country Status (10)

Country Link
US (1) US7539687B2 (ko)
EP (1) EP1586993A3 (ko)
JP (1) JP2005301994A (ko)
KR (1) KR101137070B1 (ko)
CN (1) CN1684035A (ko)
AU (1) AU2005200697B2 (ko)
BR (1) BRPI0500698A (ko)
CA (1) CA2498696A1 (ko)
MX (1) MXPA05002946A (ko)
RU (1) RU2405190C2 (ko)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7624350B2 (en) * 2006-08-10 2009-11-24 Kabushiki Kaisha Toshiba System and method for XML based data driven generation of a composite source user interface
US20090327238A1 (en) * 2008-06-28 2009-12-31 Microsoft Corporation Extensible binding of data within graphical rich applications
KR101044870B1 (ko) * 2008-10-02 2011-06-28 한국전자통신연구원 경로 코드를 이용한 xml 문서의 부호화 및 복호화 방법과 장치
US20110090236A1 (en) * 2009-10-15 2011-04-21 Microsoft Corporation Graphic Object Data Binding
US8935254B2 (en) * 2012-12-31 2015-01-13 Perinote LLC Methods and systems for organizing information
US11250203B2 (en) 2013-08-12 2022-02-15 Microsoft Technology Licensing, Llc Browsing images via mined hyperlinked text snippets
US20150052465A1 (en) * 2013-08-16 2015-02-19 Microsoft Corporation Feedback for Lasso Selection
US20170322696A1 (en) 2016-05-07 2017-11-09 Perinote LLC Selecting and performing contextual actions via user interface objects
US10606924B2 (en) * 2016-11-18 2020-03-31 Microsoft Technology Licensing, Llc Contextual file manager
CN108845856B (zh) * 2018-06-11 2021-12-14 腾讯科技(深圳)有限公司 基于对象的同步更新方法、装置、存储介质及设备
CN110674017B (zh) * 2018-07-03 2023-04-28 百度在线网络技术(北京)有限公司 埋点方法、装置及存储介质
CN112230909B (zh) * 2019-07-15 2023-05-23 腾讯科技(深圳)有限公司 小程序的数据绑定方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6023271A (en) 1998-06-11 2000-02-08 Sun Microsystems, Inc. Framework for binding data viewers/data manipulation with one to many objects through introspection
US6330006B1 (en) 1998-05-12 2001-12-11 Silverstream Software, Inc. Method and apparatus for synchronizing an application's interface and data
US20040034833A1 (en) 1999-11-12 2004-02-19 Panagiotis Kougiouris Dynamic interaction manager for markup language graphical user interface

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5083262A (en) 1986-04-28 1992-01-21 International Business Machines Corporation Language bindings for graphics functions to enable one application program to be used in different processing environments
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
EP0578207B1 (en) 1992-07-06 1999-12-01 Microsoft Corporation Method 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
US6167455A (en) 1995-05-05 2000-12-26 Apple Computer, Inc. Method and system for synchronous operation of linked command objects
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
US6826759B2 (en) 1997-04-01 2004-11-30 Sun Microsystems, Inc. Method and apparatus for discovering and activating software components
US6262729B1 (en) 1997-04-14 2001-07-17 Apple Computer, Inc. Method and apparatus for binding user interface objects to application objects
US6378004B1 (en) 1998-05-07 2002-04-23 Compaq Computer Corporation Method of communicating asynchronous elements from a mini-port driver
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
US6922708B1 (en) * 1999-02-18 2005-07-26 Oracle International Corporation File system that supports transactions
US6429882B1 (en) 1999-03-15 2002-08-06 Sun Microsystems, Inc. User interface component
US6571253B1 (en) 2000-04-28 2003-05-27 International Business Machines Corporation Hierarchical view of data binding between display elements that are organized in a hierarchical structure to a data store that is also organized in a hierarchical structure
US6832220B1 (en) * 2000-08-03 2004-12-14 Microsoft Corporation Method and apparatus for file searching, accessing file identifiers from reference page
US7099958B2 (en) 2000-08-15 2006-08-29 Fujitsu Limited System for designing and performing web application
JP3902959B2 (ja) * 2002-01-28 2007-04-11 キヤノン株式会社 情報処理装置及びその制御方法、プログラム
US7519969B2 (en) * 2003-05-17 2009-04-14 Microsoft Corporation System and method for controlling user interface properties with data
US20050160107A1 (en) * 2003-12-29 2005-07-21 Ping Liang Advanced search, file system, and intelligent assistant agent

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330006B1 (en) 1998-05-12 2001-12-11 Silverstream Software, Inc. Method and apparatus for synchronizing an application's interface and data
US6023271A (en) 1998-06-11 2000-02-08 Sun Microsystems, Inc. Framework for binding data viewers/data manipulation with one to many objects through introspection
US20040034833A1 (en) 1999-11-12 2004-02-19 Panagiotis Kougiouris Dynamic interaction manager for markup language graphical user interface

Also Published As

Publication number Publication date
US7539687B2 (en) 2009-05-26
CN1684035A (zh) 2005-10-19
EP1586993A3 (en) 2007-10-10
AU2005200697A1 (en) 2005-10-27
JP2005301994A (ja) 2005-10-27
AU2005200697B2 (en) 2010-04-29
CA2498696A1 (en) 2005-10-13
EP1586993A2 (en) 2005-10-19
RU2405190C2 (ru) 2010-11-27
KR20060043081A (ko) 2006-05-15
RU2005107096A (ru) 2006-08-20
MXPA05002946A (es) 2005-10-17
BRPI0500698A (pt) 2005-11-16
US20050228801A1 (en) 2005-10-13

Similar Documents

Publication Publication Date Title
KR101137070B1 (ko) 우선 순위 바인딩
US8793649B2 (en) XML application framework
US9772822B2 (en) Visualization framework for customizable types in a development environment
RU2398266C2 (ru) Использование механизма привязки данных для выполнения привязки команд
US7886269B2 (en) XML application framework
US10379847B2 (en) Representation of customizable types in a development environment
US7543268B2 (en) Development environment for developing applications using a metamodel and a metadata API
US10078501B2 (en) Domain specific language modeling framework in a development environment
US8566782B2 (en) Generating application data editors
US10067755B2 (en) Model driven customization framework
US9785416B2 (en) Presenting a custom view in an integrated development environment based on a variable selection
US8201147B2 (en) Generic XAD processing model
CN117193802A (zh) 提供对应用程序内容多个实例的访问的合并空间
Ali Advanced IOS 4 Programming: Developing Mobile Applications for Apple IPhone, IPad, and IPod Touch
US8793645B2 (en) Replacement of data element in a graph
US20230116489A1 (en) Migration of software extensions
Ludin Learn BlackBerry 10 App Development: A Cascades-Driven Approach
Ali iPhone SDK 3 Programming
Allwood et al. A User Friendly, Type-Safe, Graphical Shell
Mthombeni VisTrails is an open-source scientific workflow and provenance management system
McKenna Semantic graphs in support of software reverse engineering.

Legal Events

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

Payment date: 20160318

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20170317

Year of fee payment: 6