KR101331260B1 - 메타데이터를 이용하여 사용자 인터페이스를 렌더링하기위한 장치, 사용자 인터페이스를 생성하는 방법, 및 컴퓨터판독 가능 매체 - Google Patents
메타데이터를 이용하여 사용자 인터페이스를 렌더링하기위한 장치, 사용자 인터페이스를 생성하는 방법, 및 컴퓨터판독 가능 매체 Download PDFInfo
- Publication number
- KR101331260B1 KR101331260B1 KR1020087010883A KR20087010883A KR101331260B1 KR 101331260 B1 KR101331260 B1 KR 101331260B1 KR 1020087010883 A KR1020087010883 A KR 1020087010883A KR 20087010883 A KR20087010883 A KR 20087010883A KR 101331260 B1 KR101331260 B1 KR 101331260B1
- Authority
- KR
- South Korea
- Prior art keywords
- metadata
- controls
- user interface
- computer
- control
- Prior art date
Links
Images
Classifications
-
- 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
- G06F9/451—Execution arrangements for user interfaces
-
- 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
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
-
- 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
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
애플리케이션을 위한 사용자 지정 UI 부분들을 생성하기 위해 메타데이터가 이용된다. 메타데이터는 XML 기반일 수 있을 것이고 해석된 후 데이터와 UI 컨트롤들 사이의 데이터 바인딩을 지원하는 사용자 지정 UI를 구현하기 위해 렌더링된다. 생성되면, UI 컨트롤들을 디스플레이하기 위해 메타데이터가 렌더링 엔진에 의해 처리된다. 렌더링 엔진에 보내지기 전에 메타데이터 파일을 해석하기 위해 인터프리터가 이용될 수 있을 것이다. 렌더링 엔진이든 인터프리터든 호스트 애플리케이션에 관해 알 필요가 없고 임의의 메타데이터 구동 UI를 위한 지원이 가능하게 한다. 메타데이터 스키마는 UI를 위한 사용자 지정 컨트롤들을 생성하고 코드 비하인드 어셈블리에 대한 액세스를 제공함으로써 UI 컨트롤들을 프로그램적으로 변경할 뿐만 아니라 UI 컨트롤들을 위한 이벤트 처리를 지원하기 위한 메커니즘들을 포함할 수 있을 것이다.
애플리케이션, 사용자, 인터페이스, 메타데이터, 렌더링, 액세스, 이벤트, 컨트롤
Description
일부의 애플리케이션 개발자들은 자신들의 애플리케이션들을 워드 프로세싱 애플리케이션, 전자메일 애플리케이션 등과 같은 특정한 광범위하게 이용되는 기존의 애플리케이션들과 상호운용하도록 사용자 지정하고자 한다. 일부의 경우에, 애플리케이션 개발자는 애플리케이션을 위해 사용자 지정되지만 애플리케이션이 변화함에 따라 용이하게 변경 또는 확장될 수 있는 사용자 인터페이스를 제공하고자 할 것이다. 오늘날, 애플리케이션 개발자는 이 기능을 애플리케이션에 과도하게 코드화해 넣음으로써 변경 및 업데이트가 번거롭게 한다.
이 개요는 아래의 상세한 설명에서 더 기술되는 개념들의 선택을 간단히 소개하기 위해 제공된다. 이 개요는 청구대상의 주요 특징 또는 본질적인 특징을 식별하려는 것도 아니고, 청구대상의 범위를 판정함에 있어서의 보조로서 이용되려는 것도 아니다.
메타데이터는 어떤 애플리케이션을 위해 사용자 지정된 UI(user interface) 부분들을 생성하기 위해 정해진다. 메타데이터는 애플리케이션 데이터를 UI의 컨트롤에 대해 데이터 바인딩하기 위한 메커니즘을 정하는 메타데이터 스키마에 따라 생성된다. 메타데이터는 XML 기반일 수 있을 것이고, 데이터와 UI 컨트롤들 사이의 데이터 바인딩을 지원하기도 하는 사용자 지정된 UI를 구현하기 위해 해석되어 렌더링된다. 예를 들어, 애플리케이션 개발자는 기본값뿐만 아니라 사용자 지정 UI 컨트롤, 컨트롤들의 속성, 컨트롤들의 레이아웃 들을 정하는 메타데이터 파일을 쓸 수 있다. 생성되면, 메타데이터가 렌더링 엔진에 의해 처리되어 UI 컨트롤들을 디스플레이한다. 메타데이터 파일을 렌더링 엔진에 보내기 전에 해석하기 위해 인터프리터가 이용될 수 있을 것이다. 렌더링 엔진이든 인터프리터든 호스트 애플리케이션에 관해 알 필요가 없고 임의의 메타데이터 구동되는 UI를 위한 지원이 가능하게 한다. 메타데이터 스키마는 UI를 위한 사용자 지정 컨트롤들을 생성하기 위한, 즉 코드 비하인드 어셈블리(code-behind assembly)에 대한 액세스를 제공함으로써 UI 컨트롤들을 프로그램적으로 변경할 뿐만 아니라 UI 컨트롤들을 위한 이벤트 처리를 지원하기 위한 메커니즘들을 포함할 수 있다.
도 1은 예시적 컴퓨팅 환경을 도시한다.
도 2는 사용자 인터페이스 메타데이터 시스템을 도시한다.
도 3A 및 3B는 메타데이터 파일에 의해 기술되는 예시적 UI 양식을 도시한다.
도 4는 메타데이터를 이용하여 UI 양식을 기술하기 위한 프로세스를 도시한다.
도 5는 대응 메타데이터에 의해 UI 양식을 렌더링하기 위한 프로세스를 도시한다.
이제, 유사한 숫자들은 유사한 요소들을 나타내는 도면을 참조하여, 다양한 실시예들이 기술될 것이고, 특히, 도 1 및 대응하는 설명은 실시예들이 구현될 수 있는 적합한 컴퓨팅 환경의 간단하고 일반적인 기술을 제공하려는 것이다.
일반적으로, 프로그램 모듈들은 특정한 작업들을 수행하거나 또는 특정한 추상 데이터 유형들을 구현하는 루틴, 프로그램, 구성요소, 데이터 구조, 및 기타 유형의 구조들을 포함한다. 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그래머블 가전기기, 미니컴퓨터, 메인프레임 컴퓨터 등을 포함하는 기타의 컴퓨터 시스템 구성들도 이용될 수 있을 것이다. 통신 네트워크를 통해 연결된 원격 처리 장치에 의해 작업이 수행되는 분산 컴퓨팅 환경들이 이용될 수도 있을 것이다. 분산 컴퓨팅 환경에서, 프로그램 모듈들은 로컬 및 원격 메모리 저장 장치 모두에 배치될 수 있을 것이다.
도 1은 여기에 기술된 기술들을 구현하기 위해 이용될 수 있는 예시적 컴퓨터 환경(100)을 도시한다. 컴퓨터 환경(100)은 컴퓨팅 환경의 단지 한 예일 뿐이며, 컴퓨터 및 네트워크 아키텍처들의 이용 또는 기능의 범위에 대한 어떤 제한을 제안하려는 것이 아니다. 컴퓨터 환경(100)은 예시적 컴퓨터 환경(100)에 도시된 구성요소들 중 어느 하나 또는 결합에 관해 어떤 종속성 또는 요구조건을 갖는 것으로 해석되지 않아야 한다.
컴퓨터 환경(100)은 컴퓨터(102) 형태의 범용 컴퓨팅 장치를 포함한다. 컴퓨터(102)의 구성요소들은 하나 이상의 프로세서 또는 처리 장치(104), 시스템 메모리(106), 및 프로세서(104)를 포함하는 다양한 시스템 구성요소들을 시스템 메모리(106)에 연결하는 시스템 버스(108)를 포함할 수 있을 것이지만, 제한적인 것은 아니다.
시스템 버스(108)는 다양한 버스 아키텍처들 중 어떤 것이든 이용하는 메모리 버스 또는 메모리 컨트롤러, 주변장치 버스, AGP(accelerated graphics port) 및 프로세서 또는 로컬 버스를 포함하는 몇몇 유형의 버스 구조들 중 하나 이상의 어떤 것이든 나타낸다. 예를 들어, 그러한 아키텍처들은 ISA(Industry Standard Architecture) 버스, MCA(Micro Channel Architecture) 버스, EISA(Enhanced ISA) 버스, VESA(Video Electronics Standards Association) 로컬 버스, 메자닌(Mezzanine) 버스라고도 알려진 PCI(Peripheral Component Interconnects) 버스, PCI 익스프레스 버스, USB(Universal Serial Bus), SD(Secure Digital) 버스, 또는 IEEE 1394, 즉, 파이어와이어(FireWire) 버스를 포함할 수 있다.
컴퓨터(102)는 다양한 컴퓨터 판독 가능 매체를 포함할 수 있을 것이다. 그러한 매체는 컴퓨터(302)에 의해 액세스 가능한 어떤 이용 가능한 매체든 될 수 있으며, 휘발성 및 비휘발성 매체, 이동식 및 비이동식 매체를 포함한다.
시스템 메모리(106)는 RAM(random access memory)(110) 등과 같은 휘발성 메모리, 및/또는 ROM(read only memory)(112) 또는 플래시 RAM 등과 같은 비휘발성 메모리 형태의 컴퓨터 판독 가능 매체를 포함한다. 시동 등과 같은 때에 컴퓨 터(102) 내의 요소들 사이의 정보 전송을 돕는 기본 루틴들을 포함하는 BIOS(basic input/output system)(114)가 ROM(112) 또는 플래시 RAM에 저장된다. RAM(110)은 통상적으로 처리 장치(304)에 의해 즉시 액세스 가능하거나 및/또는 현재 동작하고 있는 데이터 및/또는 프로그램 모듈들을 수용한다.
컴퓨터(102)는 또한 기타의 이동식/비이동식, 휘발성/비휘발성 컴퓨터 저장 매체를 포함할 수도 있을 것이다. 예를 들어, 도 1은 비이동식, 비휘발성 자기 매체(도시 안됨)로부터 읽고 쓰는 하드 디스크 드라이브(116), 이동식, 비휘발성 자기 디스크(120)(예를 들어, "플로피 디스크")로부터 읽고 쓰는 자기 디스크 드라이브(118), CD-ROM, DVD-ROM, 또는 기타의 광 매체 등과 같은 이동식, 비휘발성 광 디스크(124)로부터 읽고 쓰는 광 디스크 드라이브(122)를 도시한다. 하드 디스크 드라이브(116), 자기 디스크 드라이브(118) 및 광 디스크 드라이브(122)는 하나 이상의 데이터 매체 인터페이스(125)에 의해 시스템 버스(108)에 각각 접속된다. 대안적으로, 하드 디스크 드라이브(116), 자기 디스크 드라이브(118) 및 광 디스크 드라이브(122)는 하나 이상의 인터페이스(도시 안됨)에 의해 시스템 버스(108)에 접속될 수 있다.
디스크 드라이브 및 그들과 관련된 컴퓨터 판독 가능 매체는 컴퓨터(102)를 위한 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 및 기타 데이터의 비휘발성 저장이 가능하게 한다. 예시가 하드 디스크(116), 이동식 자기 디스크(120) 및 이동식 광 디스크(124)를 도시할지라도, 자기 카세트 또는 기타의 자기 저장 장치, 플래시 메모리 카드, CD-ROM, DVD(digital versatile disks) 또는 기타 의 광 저장장치, RAM, ROM, EEPROM(electrically erasable programmable read-only memory) 등과 같이 컴퓨터에 의해 액세스 가능한 데이터를 저장할 수 있는 기타 유형의 컴퓨터 판독 가능 매체도 예시적 컴퓨팅 시스템 및 환경을 구현하기 위해 이용될 수 있음을 알아야 한다.
예를 들어, 운영 체제(126)(일부의 실시예에서는 앞서 기술된 높고 낮은 우선권을 갖는 I/O 파일 시스템 및 인덱싱 시스템들을 포함), 하나 이상의 애플리케이션 프로그램(128), 인터프리터(130) 및 렌더링 엔진(132)을 포함하는 어떤 수의 프로그램 모듈들이든 하드 디스크(116), 자기 디스크(120), 광 디스크(124), ROM(112) 및/또는 RAM(110) 상에 저장될 수 있다. 그러한 운영 체제(126), 하나 이상의 애플리케이션 프로그램(128), 메타데이터 인터프리터(130), UI 렌더링 엔진(132) 및 메타데이터(133)의 각각(또는 그 중의 일부의 결합)이 상주하는 구성요소들의 전부 또는 일부를 구현할 수 있을 것이다. 메타데이터 리포지토리(133)는 애플리케이션 프로그램(128)들과 관련이 있는 UI 상의 UI 요소들의 사용자 지정을 가능하게 하는 정보를 포함한다. 예를 들어, 메타데이터는 모니터(142) 상에 디스플레이되는 UI(164)를 위한 UI 양식들의 사용자 지정을 가능하게 하는 정보를 포함할 수 있다. 메타데이터 리포지토리(133)는 다양하게 연결된 컴퓨팅 장치들의 다수의 애플리케이션들을 위한 정보를 포함할 수 있을 것이다.
사용자는 키보드(134) 및 포인팅 장치(136)(예를 들어, "마우스") 등과 같은 입력 장치들에 의해 명령 및 정보를 컴퓨터(102)에 입력할 수 있다. 기타의 입력 장치(138)(자세하게 도시 안됨)는 마이크, 조이스틱, 게임 패드, 위성 안테나, 직 렬 포트, 스캐너 등을 포함할 수 있을 것이다. 이러한 및 기타의 입력 장치들은 시스템 버스(108)에 연결된 입력/출력 인터페이스(140)들에 의해 처리 장치(104)에 접속될 수 있지만, 병렬 포트, 게임 포트, 또는 USB 등과 같은 기타의 인터페이스 및 버스 구조들에 의해 접속될 수도 있을 것이다.
모니터(142) 또는 기타 유형의 디스플레이 장치가 비디오 어댑터(144) 등과 같은 인터페이스에 의해 시스템 버스(108)에 접속될 수도 있을 것이다. 모니터(142) 외에, 기타의 출력 주변 장치들은 I/O 인터페이스(140)들에 의해 컴퓨터(102)에 접속될 수 있는 스피커(도시 안됨) 및 프린터(146) 등과 같은 구성요소들을 포함할 수 있다.
컴퓨터(102)는 원격 컴퓨팅 장치(148) 등과 같은 하나 이상의 원격 컴퓨터에 대한 논리 접속을 이용하여 네트워크 환경에서 동작할 수 있다. 예를 들어, 원격 컴퓨팅 장치(148)는 PC, 포터블 컴퓨터, 서버, 라우터, 네트워크 컴퓨터, 피어 장치 또는 기타의 보편적인 네트워크 노드 등일 수 있다. 원격 컴퓨팅 장치(148)는 컴퓨터(102)와 관련하여 여기에 기술된 요소 및 기능들의 다수 또는 전부를 포함할 수 있는 포터블 컴퓨터로서 도시된다.
컴퓨터(102)와 원격 컴퓨터(348) 사이의 논리 접속은 LAN(local area network)(150) 및 일반적인 WAN(wide area network)(152)으로서 도시되어 있다. 그러한 네트워킹 환경은 사무실, 전사적 컴퓨터 네트워크, 인트라넷 및 인터넷에서 보편적인 것이다.
LAN 네트워킹 환경에서 구현될 때, 컴퓨터(102)는 네트워크 인터페이스 또는 어댑터(154)에 의해 로컬 네트워크(150)에 접속된다. WAN 네트워킹 환경에서 구현될 때, 컴퓨터(102)는 통상적으로 광역 네트워크(152)를 통한 통신을 설정하기 위한 모뎀(156) 또는 기타의 수단을 포함한다. 컴퓨터(102)에 대해 내장 또는 외장일 수 있는 모뎀(156)이 I/O 인터페이스(140) 또는 기타의 적절한 메커니즘들에 의해 시스템 버스(108)에 접속될 수 있다. 도시된 네트워크 접속은 예시이고, 컴퓨터(102 및 148)들 사이에 적어도 하나의 통신 연결을 설정하기 위한 기타의 수단이 채택될 수 있다.
컴퓨팅 환경(100)에 도시된 바와 같은 네트워크 환경에서, 컴퓨터(102)와 관련하여 도시된 프로그램 모듈, 또는 그 일부가 원격 메모리 저장 장치에 저장될 수 있다. 예를 들어, 원격 애플리케이션 프로그램(158)들은 원격 컴퓨터(148)의 메모리 장치에 상주한다. 예시를 위해, 애플리케이션 또는 프로그램 및 운영 체제 등과 같은 기타의 실행 가능한 프로그램 구성요소들이 여기에서는 별개의 블록들로 도시되지만, 그러한 프로그램 및 구성요소들이 다양한 시각에 컴퓨팅 장치(102)의 상이한 저장장치 구성요소들에 상주하고 컴퓨터의 적어도 하나의 데이터 프로세서에 의해 실행됨을 알고 있다.
다양한 모듈 및 기술들은 여기에서 하나 이상의 컴퓨터 또는 기타의 장치들에 의해 실행되는 프로그램 모듈 등과 같은 컴퓨터 실행 가능한 명령어의 일반적 콘텍스트로 기술될 수 있을 것이다. 일반적으로, 프로그램 모듈들은 특정한 작업들을 수행하기 위한 루틴, 프로그램, 개체, 구성요소, 데이터 구조 등을 포함하거나 또는 특정한 추상 데이터 유형들을 구현한다. 통상적으로, 프로그램 모듈들의 기능은 다양한 실시예에서 원하는 대로 결합 또는 분산될 수 있을 것이다.
이러한 모듈 및 기술들의 구현은 일부의 형태의 컴퓨터 판독 가능 매체에 저장되거나 또는 그것을 통해 전송될 수 있을 것이다. 컴퓨터 판독 가능 매체는 컴퓨터에 의해 액세스될 수 있는 어떤 이용 가능한 매체든 될 수 있다. 예를 들어, 컴퓨터 판독 가능 매체는 "컴퓨터 저장 매체" 및 "통신 매체"를 포함할 수 있을 것이지만, 제한적인 것은 아니다.
"컴퓨터 저장 매체"는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 또는 기타의 데이터 등과 같은 정보 저장을 위한 어떤 방법 또는 기술로든 구현되는 휘발성 및 비휘발성, 이동식 및 비이동식 매체를 포함한다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리 또는 기타의 메모리 기술, CD-ROM, DVD 또는 기타의 광 저장장치, 자기 카세트, 자기 테이프, 자기 디스크 저장장치 또는 기타의 자기 저장 장치, 또는 원하는 정보를 저장하기 위해 이용될 수 있고 컴퓨터에 의해 액세스될 수 있는 기타의 어떤 매체든 포함하지만 제한적인 것은 아니다.
"통신 매체"는 통상적으로 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타의 데이터를 반송파 또는 기타의 전송 메커니즘 등과 같은 변조된 데이터 신호로 구현한다. 통신 매체는 또한 어떤 정보 전달 매체든 포함한다. "변조된 데이터 신호"라는 용어는 신호의 하나 이상의 특성들이 신호에 있는 정보를 인코딩하는 방식으로 설정 또는 변경된 신호를 의미한다. 제한적인 것이 아니라, 단지 예시적으로, 통신 매체는 유선 네트워크 또는 직접 유선 접속 등과 같은 유선 매체, 및 음향, RF, 적외선 및 기타의 무선 매체 등과 같은 무선 매체를 포함한다. 위 어떤 것들의 결합이든 컴퓨터 판독 가능 매체의 범위 내에 포함된다.
도 2는 사용자 인터페이스 메타데이터 시스템을 도시한다. 도시된 바와 같이, 시스템(200)은 사용자 인터페이스(240) 및 백 엔드 데이터 소스(250)를 렌더링하는 메타데이터(210), 인터프리터(220), 코드 비하인드 어셈블리(225), 렌더링 엔진(230)을 포함한다. 초기에, 개발자, 또는 일부의 기타 사용자는 정해진 UI 양식을 위한 메타데이터(210)를 정의한다. 일반적으로, 메타데이터가 생성 및 정의되었으면, 인터프리터(220)는 메타데이터에 액세스하고 UI(240)가 사용자에게 디스플레이될 수 있도록 UI 정보를 렌더링 엔진(230)에 전달한다. 인터프리터(220)가 렌더링 엔진(230)과 별도로 도시되어 있을지라도, 인터프리터(220) 및 렌더링 엔진(230)을 둘러싸는 점선 박스로 도시된 바와 같이, 그 기능은 렌더링 엔진(230) 내에 포함될 수 있을 것이다.
메타데이터(210)는 개발자가 사용자 인터페이스(240) 상에 포함된 각각의 컨트롤(241-243)을 위해 한 세트의 이벤트(215)들을 정의하게 한다. 메타데이터(210)는 UI 양식 개발자가 UI에 추가될 컨트롤들을 정의하고, 이러한 추가된 컨트롤들에 대한 사용자 지정 이벤트들을 정하며(또는 기존의 컨트롤들에 이벤트들을 추가하며), 이러한 새로운 사용자 지정 이벤트들을 위해 코드 비하인드 어셈블리(225)에서의 코드에 의해 이벤트 처리기들을 정하게(또는 기본 상태를 무효화(overriding)함으로써 기존의 사용자 지정 처리기들을 변경하게) 한다. 개발자가 컨트롤들의 속성들을 읽고 코드 비하인드 어셈블리(225)에서 이벤트-처리기들이 정해지게 하는 형태로 컨트롤들의 속성들을 변경하게 하는 OM(Object Model)이 노 출된다. 코드 비하인드 어셈블리(225)의 이름 및 위치는 메타데이터(210)의 일부로서 캡처된다.
한 실시예에 따르면, 이벤트들은 WINFORMS 환경에서의 동일한 유형의 컨트롤을 위해 지원되는 통상적 이벤트들을 미러링한다. 컨트롤에 의해 초기에 지원될 수 있을 것인 표준 이벤트들에 더하여, 또다른 컨트롤 및 사용자 지정 이벤트들이 메타데이터(210)를 통해 추가될 수 있을 것이다.
도시된 바와 같이, 렌더링 엔진(230)은 인터프리터(220)를 통해 UI를 정하는 메타데이터를 수신하고 UI 양식(240)을 렌더링한다. 한 실시예에 따르면, 렌더링 엔진(230)은 IBF 작업 틀(task pane) 또는 MICROSOFT OUTLOOK 사용자 지정 양식으로 UI 양식을 렌더링한다. 이 실시예에 따르면, 렌더링 엔진(230)은 메타데이터(210)에 의해 정해진 UI에 대응하는 .NET 컨트롤 개체를 생성하며, 그 .NET 컨트롤은 IBF 작업 틀 또는 OUTLOOK 사용자 지정 양식으로 호스트된다. 이 실시예에서는, 렌더링 엔진(230)이 인터프리터(220)에 의해 공급되는 메타데이터를 구문분석하고 메타데이터(210)에 의해 기술되는 상이한 컨트롤(즉 241-243)들을 인스턴스화하며, UI 양식을 기술하는 .NET 컨트롤을 출력한다.
한 실시예에 따르면, 렌더링 엔진(230)은 메타데이터(210)를 이용하여 UI 양식을 디자인하면서 UI 양식 개발자가 이용할 수 있는 10개의 기본적 컨트롤들을 제공한다. 이러한 10개의 기본적 컨트롤들은 패널(Panel), 라벨(Label), 링크라벨(LinkLabel), 텍스트박스(TextBox), 버튼(Button), 목록박스(ListBox), 콤보박스(ComboBox), 라디오버튼(RadioButton), 체크박스(CheckBox) 및 이미지(Image) 컨 트롤을 포함한다. 앞서 설명했듯이, 사용자 지정 컨트롤 및 이벤트들이 생성될 수도 있을 것이다. 기타의 기본적 컨트롤들이 제공될 수도 있을 것이다.
각각의 컨트롤은 컨트롤(즉, 원시 WINFORM(.NET) 컨트롤)을 래핑(wrap)하는 래퍼 클래스(wrapper class)를 포함한다. 래퍼는 프로그램적 OM을 통해 코드 비하인드 어셈블리(225)에 대해 데이터 바인딩하고 컨트롤 속성들을 노출하는 기능을 제공한다. 아래는 TextBox 컨트롤을 위한 예시적 래퍼 클래스이다.
'IXamlTextBox' 인터페이스는 코드 비하인드 파일에 대한 TextBox 특수 속성들을 노출한다. 애플리케이션 개발자는 'IXamlTextBox' 인터페이스를 이용하여 코드 비하인드에서의 UI 상의 TextBox 컨트롤에 액세스하여 컨트롤 속성들을 읽고 쓸수 있다.
'XamlControl'은 렌더링 엔진(230)에 의해 렌더링되는 컨트롤들을 위한 베이스 클래스를 제공한다.
'IXamlControl' 인터페이스는 코드 비하인드 파일에 대한 컨트롤을 노출한 다. 애플리케이션 개발자는 코드 비하인드 어셈블리(225)에서의 이 인터페이스를 통해 컨트롤의 속성들에 액세스할 수 있다. 'IBindable' 인터페이스는 데이터 소스에서의 속성들에 바인딩되는 컨트롤 속성들을 설정하기 위해 'Binder' 구성요소에 의해 이용된다. 'XamlControl' 클래스는 컨트롤을 정하는 의사 XAML 메타데이터(XML)를 수신하고, 원시 .NET WINFORM 컨트롤을 인스턴스화(유형에 따라)하며, 컨트롤을 위해 메타데이터에서 정의되는 컨트롤 속성들을 설정한다.
렌더링 엔진(230)이 UI 양식을 정하는 의사 XAML 메타데이터를 수신할 때, 그것은 입력 XML을 읽고 구문분석하며, 컨트롤을 정하는 메타데이터에서 전달되는 컨트롤들을 위한 래퍼 클래스들을 인스턴스화한다. 한 실시예에 따르면, 구문분석은 깊이 우선 방식(depth first manner)으로 수행된다. 다른 방법들이 이용될 수도 있을 것이다. 래퍼 클래스는 원시 WINFORM(.NET) 컨트롤을 인스턴스화하고 메타데이터에서 정해진 바와 같은 컨트롤 속성들을 설정한다. 각각의 컨트롤을 위한 래퍼 클래스는 메타데이터에 정의된 바와 같은 컨트롤 속성들을 설정한다. 베이스 'XamlControl' 클래스는 모든 컨트롤에 대해 보편적인 속성(예를 들어, Background, Foreground, Anchor, Font 등)들을 설정한다. 'XamlTextBox' 등과 같은 특수한 파생 클래스들은 컨트롤(textbox) 특수 속성들을 처리한다. 특정한 컨트롤 속성이 데이터 소스(250) 등과 같은 데이터 소스에서의 속성에 바인딩되면, 래퍼 클래스가 컨트롤, 속성명 및 바인딩 식을 'Binder'에 전달하며, 그것은 데이터 소스로부터 속성 값을 얻고 'IBindable' 인터페이스를 통해 특수한 컨트롤 속성을 설정한다. 각각의 컨트롤을 위한 래퍼 클래스는 의사 XAML 메타데이터에 의해 노출되는 컨트롤 이벤트(SubscribeToEvents())들에 섭스크라이브(subscribe)하기도 한다. 그 후, 컨트롤 상의 이벤트가 코드 비하인드 어셈블리(225)에 정해진 이벤트 처리기에 대한 이벤트를 향해 렌더링 엔진(230)을 시작(fire)한다. 래퍼 클래스는 또한 컨트롤을 위한 자식 컨트롤들을 인스턴스화하는 'GetChildControls()' 방법을 호출하기도 한다.
양식 상에서 발생하는 컨트롤 이벤트들을 위해 이벤트 처리기(226)들이 개발될 수도 있을 것이다. 컨트롤 상의 특수한 이벤트를 처리하기 위해, 개발자는, 이벤트 처리기 코드를 포함하는 코드 비하인드 어셈블리(225)를 개발하고, 메타데이터에서의 코드 비하인드 어셈블리를 정의하며, 컨트롤을 위한 특정한 이벤트를 처리하는 이벤트 처리기(방법) 이름을 정의하는 것을 포함하는 단계들을 수행한다. 한 실시예에 따르면, 컨트롤 상의 이벤트를 위한 메타데이터에서의 이벤트 처리기를 정의하기 위해 개발자는 코드 비하인드 어셈블리에 존재하는 이벤트 처리기 방법 이름을 컨트롤 상의 이벤트에 대응하는 특성 값으로서 공급한다. 메타데이터(210)는 버튼 컨트롤을 위한 "Click" 이벤트가 코드 비하인드 어셈블리에서 공개적 방법으로서 존재하는 "ButtonClick"이라는 방법에 의해 처리된다는 것을 정의한다. 한 실시예에 따르면, 이벤트 처리기를 위한 서명(signature)은 .NET WINFORMS 환경의 경우에서 그 특정한 컨트롤에 대한 그 이벤트를 위한 것과 동일하다. 예를 들어, 버튼에 대한 클릭 이벤트를 위한 이벤트 처리기는 다음의 서명을 가질 것이다: public void ButtonClick(object sender, System.EventArgs e) { }. 한 실시예에 따르면, 이것은 프로그래머의 이해 및 일치를 위해 제공하는 오리지널 버튼 컨트롤과 동일한 서명이다.
렌더링 엔진(230)은 그것이 인터프리터(220)에 의해 제공된 메타데이터(210)를 구문분석하고 리플렉션(reflection)을 통해 코드 비하인드 클래스를 인스턴스화할 때 코드 비하인드 어셈블리(225)를 로드한다. 컨트롤 상의 메타데이터를 통해 노출하는 이벤트들은 메타데이터의 구문분석 동안에 그 컨트롤이 인스턴스화될 때 섭스크라이브된다. 한 실시예에서, 컨트롤 이벤트들을 위한 이벤트 처리기들은 이벤트를 "Page" 레벨로 버블 업(bubble up)하고 코드 비하인드 어셈블리에서의 이벤트 처리기가 리플렉션을 통해 호출된다. 하나 이상의 "코드 비하인드" 어셈블리가 "페이지" 또는 양식에 결합될 수 있다. 하나 이상의 "코드 비하인드" 어셈블리를 제공하는 것은 다수의 레벨(다수의 관계자)의 확장성을 허용한다.
데이터는 백 엔드 데이터 소스(250)로부터 하나 이상의 컨트롤(예를 들어 컨트롤(241-243))들에 바인딩될 수도 있을 것이다. 한 실시예에 따르면, 데이터 소스(250)를 하나 이상의 컨트롤(예를 들어, 컨트롤(241-243))들에 바인딩하는 바인딩 식들은 메타데이터에 정의된다. 컨트롤의 각각의 속성(즉 컨트롤(241-243))은 데이터 소스로부터 오는 데이터에 바인딩될 수 있다. 그래서, 데이터 소스는 데이터 소스(250)가 변경될 때 컨트롤들과 관련이 있는 컨트롤 속성들을 변경한다. 하나 이상의 데이터 소스가 바인딩될 수 있을 것이다. 예를 들어, 컨트롤 1(241)이 한 데이터 소스에 바인딩되는 동안, 컨트롤 2(242)는 상이한 데이터 소스에 바인딩될 수 있을 것이다. 한 실시예에 따르면, 개체 데이터 소스 및 XML 데이터 소스를 포함하는 두개의 상이한 유형의 데이터 소스들이 있다. 개체 데이터 소스는 UI 상의 컨트롤들을 위한 데이터 소스로서 작용하는 .NET 어셈블리에 상주하는 .NET 클래스이다. XML 데이터 소스는 UI를 정하는 XAML 메타데이터에서 인라인(inline)으로 정의되는 XML 데이터의 소스로서 작용한다.
한 실시예에 따르면, 개체 데이터 소스는 메타데이터에서 다음과 같이 정의될 수 있다: <xaml:ObjectDataSource Name="myDataSource" TypeName="DataSourceNamespace.DataSourceClass, DataSourceAssembly"/>. "DataSourceClass"는 'IBindData" 및 "INotifyPropertyChanged" 인터페이스들을 구현한다. 이러한 인터페이스들의 예시적 실시예들이 아래에 기술되어 있다.
이 실시예에서는, "IBindData" 인터페이스가 표준 .NET 이벤트 델리게이트 모델(delegate model)을 통해 데이터 소스와 컨트롤 속성(아래에서 설명됨)들 사이에 데이터를 바인딩하는 것을 허용한다.
"INotifyPropertyChanged" 인터페이스는 데이터 소스가 그 데이터 소스에 바인딩되는 UI 속성들이 업데이트될 수 있도록 데이터 소스 상에서 일어나는 어떤 변화든 시그널링하게 한다. 데이터 소스는 데이터 소스에서의 속성이 변할 때마다 "PropertyChanged" 이벤트를 일으킨다. 그리고, 이 이벤트가 시작될 때마다 UI 상의 관련 속성들이 업데이트된다. 메타데이터에서 데이터 소스들이 정의되면, 컨트롤의 어떤 속성이든 데이터 소스로부터 오는 데이터에 바인딩될 수 있다.
컨트롤 속성을 위한 바인딩을 정의하기 위해, 개발자는 바인딩 식을 그 속성에 대응하는 특성 값으로서 공급한다. 예를 들어, 텍스트 박스의 "텍스트" 속성을 바인딩하기 위해, 개발자는 메타데이터(210)에서의 바인딩 식을 다음과 같이 정의할 수 있다: <xaml:TextBox Name="textBox1" Top="40" Left="8" Width="200" Text="{Binding Source=DataSourceName, Path=CustomerName, Mode=TwoWay}" Anchor="Top,Left,Right"/>. Text="{Binding Source=DataSourceName, Path=CustomerName, Mode=TwoWay}"이라는 식은 'Text' 속성을 위한 바인딩 식이다. 'Source' 절(clause)은 메타데이터에 정해진 데이터 소스를 지칭한다. 이것은 개 체 데이터 소스 또는 XML 데이터 소스일 수 있다. 개체 데이터 소스인 경우에, 'Path' 절의 값은 바인딩된 속성을 위한 값을 검색할 때 데이터 소스의 "GetData(string path)" 방법에 전달된다. XML 데이터 소스인 경우에, 'Path' 절은 이 실시예에서는 Xpath 식이고, 그것은 컨트롤 속성에 바인딩될 값을 갖는 XML 데이터에서의 특정한 노드/특성(node/attribute)을 선택한다. 'Mode' 절은 'OneWay' 또는 'TwoWay' 바인딩을 표시한다. 데이터가 데이터 소스로부터 UI 상의 컨트롤들로 흐르면, 바인딩은 'OneWay'이지만, UI 속성 변화들도 데이터 소스로 되돌려 전파되면, 바인딩은 'TwoWay'이다. 'UpdateSourceTrigger'는 UI 속성이 변했고 변경된 속성 값이 데이터 소스로 전파될 필요가 있음을 언제(어떤 이벤트에) 데이터 소스에게 시그널링할지를 정의하는 표시(enumeration)이다. 기본적으로, 이 실시예에서는, 이 절을 위한 값이 바인딩된 속성이 변할 때 그것이 데이터 소스에게 시그널링됨을 의미하는 'PropertyChanged'이다. 한 실시예에 따르면, 이것은 단지 'TwoWay' 바인딩인 경우에만 유효하다.
목록 컨트롤의 'ItemsSource' 특성은 목록에서의 항목들을 데이터 소스로부터 오는 개체들의 집합에 바인딩하는 것을 허용한다. 'ItemsSource' 속성이 바인딩될 때 데이터 소스는 'System.Collections.IEnumerable' 인터페이스를 구현하는 .NET 집합을 반환한다. 목록 컨트롤의 'DisplayMemberPath' 특성은 목록 컨트롤에서의 항목을 위한 디스플레이 텍스트로서 이용되는 값을 갖는 집합을 이루는 .NET 개체들의 속성을 지정한다. 'DisplayMemberPath'가 널(null)이면, 기본값 'ToString()' 방법이 .NET 개체 상에 호출되고 반환되는 문자열은 디스플레이 텍스 트로서 이용된다. 예를 들어, 데이터 소스가 목록 컨트롤에 보이는 'Customer' 개체들의 집합을 반환하면, 'Customer' 개체는 목록 컨트롤에서 디스플레이 텍스트로서 이용될 값을 갖는 'Name' 속성을 가질 수 있을 것이다. 이 경우에는, 'DisplayMemberPath'가 'Name'으로 설정된다. 마찬가지로, 'SelectedValuePath'는 목록 컨트롤에서 특정한 항목이 선택될 때 목록 컨트롤의 'SelectedValue' 속성에 의해 반환될 값을 갖는 집합을 이루는 .NET 개체들의 속성으로 설정된다. 예를 들어, 목록 컨트롤에서의 'SelectedValuePath' 속성이 'CustomerID'로 설정될 때 'SelectedValue' 속성에 의해 반환될 값을 갖는 'CustomerID' 속성을 'Customer' 개체가 갖는다고 가정하자. 아무런 'SelectedValuePath' 특성도 제공되지 않으면, 모든 개체('Customer' 개체)가 목록 컨트롤의 'SelectedValue' 속성에 의해 반환된다.
XML 데이터 소스인 경우에, 목록 컨트롤의 'ItemsSource' 특성을 위한 바인딩 식은 XML 노드들의 목록을 반환한다. 예를 들어, 아래의 것이 XML 데이터 소스라고 가정하자.
북(book) 목록을 나타내는 목록의 'ItemsSource' 속성을 위한 바인딩 식은 다음과 같다: <ListBox ItemsSource="{Binding Source=BookData, Path=/Books/Book}"/>. 위 바인딩 식에서 'Path' 절은 실제로 XML 데이터 소스로부터 목록 컨트롤에 삽입되는 노드들의 목록을 반환하는 Xpath 식이다. 목록 컨트롤의 'DisplayMemberPath' 특성은 목록 컨트롤에서의 디스플레이 텍스트로서 이용될 값을 갖는 노드/특성을 선택하는 Xpath(XmlDataSource인 경우)이어야 한다. 예를 들어, UI 양식 개발자가 목록 컨트롤에서의 각각의 북을 위한 'Title'을 디스플 레이하고 싶다면, 사용자의 XML은 다음과 같을 것이다: <ListBox ItemsSource="{Binding Source=BookData, Path=/Books/Book}" DisplayMemberPath="Title"/>. 마찬가지로, 목록 컨트롤의 'SelectedValuePath' 특성은 목록의 'SelectedValue' 특성에 의해 반환되는 값을 갖는 목록 항목의 노드/특성을 가리킨다.
예를 들어, UI 양식 개발자가 특정한 북이 목록에서 선택될 때 목록 컨트롤의 'SelectedValue' 속성에서 북을 위한 'ISBN' 값을 반환하고자 한다고 가정하면, 'SelectedValuePath' 특성은 북 항목의 'ISBN' 특성을 가리키는 Xpath일 수 있을 것이다.
<ListBox ItemsSource="{Binding Source=BookData, Path=/Books/Book} "DisplayMemberPath="Title" SelectedValuePath="@ISBN"/>
데이터 바인딩을 이용하는 컨트롤들은 아래에 도시된 바와 같은 'IBindable' 인터페이스를 구현한다.
UI 양식(240)이 초기에 렌더링될 때, 모든 바인딩된 속성에 대해, 관련 데이터 소스의 'GetData(string path)' 방법(바인딩 식에 정의됨)은 바인딩 식에서의 'Path' 절의 값에서 인수(argument)로서 전달되면서 호출된다. 이 방법은 'object'라는 유형의 값을 반환한다. 다음에, 데이터 소스에 의해 반환되는 'Value' 및 바인딩된 속성의 이름에서 전달되어 바인딩되는 속성을 갖는 컨트롤 상에 'SetBoundValue(string propName, object value)'가 호출된다. 컨트롤은 'Value' 개체를 이해하고 그것을 해석하여 바인딩된 속성을 업데이트할 책임이 있다. UI 양식의 초기 렌더링 외에, 데이터 소스가 변할 때마다 데이터 소스가 바인더에게 데이터 소스(INotifyPropertyChanged)에서의 변화를 시그널링한다. 바인더는 어떤 컨트롤 속성들이 변경된 데이터 소스에 바인딩되는지를 찾아내고 그러한 속성들을 업데이트한다. 'TwoWay' 바인딩의 경우에, 바인딩된 UI 속성이 UI 양식 상에서 변할 때마다, 바인더에게 알려지며 바인더는 변경된 속성 값을 데이터 소스에 되돌려 전파한다.
앞서 간략히 설명했듯이, 렌더링 엔진(230)은 사용자 지정 빌트 컨트롤(custom built control)들을 호스팅하기 위해 일반적인 프레임워크를 제공하기도 한다. 한 실시예에 따르면, 프레임워크는 사용자 지정 .NET winform 컨트롤들을 지원한다. 한 실시예에 따르면, 어떤 사용자 지정 컨트롤들이든 'System.Windows.Forms.UserControl'이라는 클래스로부터 파생된다. 각각의 사용자 지정 컨트롤은 기본값 컨트랙터(default contractor)를 가지며, 또한 그것이 데이터 바인딩에 참여할 수 있도록 ICustomControl 인터페이스 및 'IBindable' 인터페이스를 구현하기도 한다. 아래는 예시적 'ICustomControl' 인터페이스이다.
컨트롤을 위한 사용자 지정 속성들을 설정하기 위해 렌더링 엔진(230)에 의해 'SetControlProperty(string propName, string propValue)' 방법이 이용된다. 사용자 지정 컨트롤이 노출되고 컨트롤의 기본적 속성(예를 들어 Width, Height, Top, Left 등)에는 포함되지 않은 각각의 사용자 지정 속성을 위해, 렌더링 엔진(230)이 사용자 지정 컨트롤 상에 'SetControlProperty' 방법을 호출하며, 그것은 사용자 지정 컨트롤이 'SetControlProperty' 방법에 전달될 메타데이터에 정의된 'string' 속성 값을 이해 및 해석하려는 것이다.
컨트롤에 의해 노출되는 사용자 지정 이벤트가 시작될 때 사용자 지정 컨트롤에 의해 'ControlEventFired' 이벤트가 일어난다. 이것은 사용자 지정 컨트롤 상에서 이벤트가 시작되었고 렌더링 엔진이 코드 비하인드 어셈블리(225)에서의 그 이벤트를 위한 이벤트 처리기(만일 있다면)를 호출할 필요가 있음을 렌더링 엔진(230)에게 시그널링하려는 것이다. 렌더링 엔진(230)은 컴파일 시점에서 사용자 지정 컨트롤에 의해 지원된 이벤트(및 이벤트 서명)가 무엇인지를 알지 못한다. 그와 같이, 렌더링 엔진(230)은 사용자 지정 컨트롤에게 언제 사용자 지정 이벤트가 사용자 지정 컨트롤 상에서 시작하는지를 알려줄 것을 요청한다. 사용자 지정 컨트롤은 'ControlEventFiredArgs' 클래스의 인스턴스를 생성하고 그것을 렌더링 엔진(230)에 의해 수신되는 'ControlEventFired' 이벤트에 전달한다. 'ControlEventFiredArgs'는 시작된 이벤트의 이름, 송신자 및 그 이벤트를 위한 이벤트 처리기에 전달될 필요가 있는 이벤트 인수들에 관한 정보를 포함한다. 렌더링 엔진(230)이 이 정보를 가지면, 그것은 코드 비하인드 어셈블리(225)에 정의된 그 이벤트를 위한 이벤트 처리기를 호출할 수 있다.
한 실시예에 따르면, 사용자 지정 컨트롤들은 런타임에 .NET 어셈블리에 상주한다. 메타데이터에서의 사용자 지정 컨트롤 어셈블리는 다음과 같이 정의될 수 있을 것이다: <xaml:Mapping XmlNamespace="urn-Mendocino/CustomControls" ClrNamespace="CustomControlNamespace" Assembly="CustomControlAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>. 'Mapping' 요소는 XML 요소라기보다는 처리 지시(processing directive)이다. 사용자 지정 컨트롤 어셈블리를 정의하는 다른 방식이 이용될 수도 있을 것이다.
사용자 지정 컨트롤은 다음의 예시적 메타데이터를 통해 메타데이터에서 정의될 수 있다: <custom:CustomControl xmlns:custom="urn-Mendocino/CustomControls" Top="0" Left="0" Height="100" Width="100" .../>. 이 실시예에서는, 렌더링 엔진(230)이 리플렉션을 통해 사용자 지정 컨트롤을 인스턴스화하고, 먼저 Height, Width, Top, Left 등과 같은 기본적 속성들을 설정하며, 이어서 기타의 속성(사용자 지정 속성)들을 위해 렌더링 엔진(230)이 사용자 지정 컨트롤 상에 'SetControlProperty()' 방법을 호출한다.
메타데이터 스키마 내의 메커니즘은 UI 양식 개발자가 코드 비하인드 어셈블리에서의 UI 컨트롤 및 그들의 속성들에 액세스하게 한다. 코드 비하인드 클래스는 아래에 기술된 'IPageCodeBehind' 인터페이스를 구현한다.
'PageControls' 속성은 렌더링 엔진(230)이 UI 양식을 렌더링하고 컨트롤들을 인스턴스화할 때 렌더링 엔진(230)에 의해 삽입(populate)된다. 'Application' 속성은 UI 양식들이 렌더링되고 있는 호스트 애플리케이션(즉 OUTLOOK)을 나타낸다. 한 실시예에 따르면, 'Mediator' 속성은 코드 비하인드 개발자가 메타데이터에 정해진 IBF 동작들을 실행하게 한다. 'ReturnValue'는 양식을 렌더링하는 호출자에게 되돌려보내지는 코드 비하인드 개발자에 의해 설정될 수 있는 변수이다. 이것은 모달 대화 상자(modal dialog)들인 경우에 호출자에게 대화 상자로부터의 값을 되돌려보내기 위해 이용된다.
아래는 예시적 'IPageControlCollection' 인터페이스이다.
'IXamlControl' 인터페이스는 양식 상에 컨트롤을 위한 속성들을 노출한다.
이것은 UI 양식 개발자가 다음과 같은 방식으로 양식 상의 컨트롤에 액세스하게 한다: MessageBox.Show(this.PageControls["myButton"].Text); 'IXamlControl' 인터페이스는 모든 컨트롤에 대해 보편적인 컨트롤의 기본적 속성들을 노출한다. 컨트롤을 위한 특수 속성(예를 들어, CheckBox 컨트롤을 위한 IsChecked)들에 액세스하기 위해 개발자는 'IXamlControl' 개체를 'IXamlCheckBox', 'IXamlTextBox', 등과 같은 특수한 컨트롤 인터페이스로 강제 변환(cast)할 수 있다. ((IXamlCheckBox)this.PageControls["myCheckBox"]).IsChecked
아래는 예시적 'IXamlControl' 인터페이스로부터 파생된 'IXamlCheckBox' 인 터페이스이다.
마찬가지로, UI 양식 개발자가 컨트롤 특수 속성들에 액세스하게 하는 컨트롤들을 위한 특수한 인터페이스들이 노출된다.
한 실시예에 따르면, 렌더링 엔진(230)은 UI 양식이 IBF 작업 틀, OUTLOOK 사용자 지정 양식 또는 대화 상자에서 호스트되는지에 무관하게 UI 양식을 기술하는 메타데이터로부터 동일한 .NET 컨트롤을 발생시킨다. 아래 시나리오들은 .NET 컨트롤이 호스트될 수 있을 것인 방법의 예를 제공한다.
한 실시예에 따르면, IBF 작업 틀은 'IRegion' 인터페이스를 구현하는 어떤 .NET 컨트롤이든 호스팅하는 것을 지원한다. 렌더링 프레임워크는 'IRegion' 인터페이스를 구현하고 UI 메타데이터로부터 UI 렌더링 엔진에 의해 발생된 .NET 컨트롤을 호스팅하는 블랭크(텅 빈) .NET 컨트롤을 포함한다. 메타데이터에 의해 정해진 UI 양식을 IBF 작업 틀에서 디스플레이하기 위해 UI 렌더링 프레임워크의 블랭크 .NET 호스트 컨트롤 부분을 디스플레이하는 'MSIBF.UI.ShowRegion' 사용자 지정 동작이 이용된다. 이 'MSIBF.UI.ShowRegion' 동작에 전달되는 입력은 IBF 작업 틀에서 호스트될 UI 양식을 정하는 메타데이터이다. MSIBF.UI.ShowRegion' 동작은 블랭크 호스트 .NET 컨트롤을 인스턴스화하고, UI 양식을 정하는 메타데이터를 'Data'로서 블랭크 호스트 .NET 컨트롤에 전달한다. 호스트 컨트롤은 UI 양식을 정하는 메타데이터에서 전달되는 렌더링 엔진(230)을 호출하고, 그것은 UI 양식을 기술하는 .NET 컨트롤을 반환하며, 그 후 IBF 작업 틀에서의 UI 양식의 디스플레이로 귀결되는 호스트 컨트롤에 추가된다.
다른 한 실시예에 따르면, OUTLOOK에서 UI 양식을 기술하는 .NET 컨트롤을 호스팅하기 위해, .NET 컨트롤들을 호스팅할 수 있는 ActiveX 컨테이너 컨트롤이 OUTLOOK 양식에 추가되고, 그 후 .NET 컨트롤이 컨테이너 컨트롤의 자식 컨트롤로서 UI 양식을 기술하는 것에 추가된다. ActiveX 컨테이너 컨트롤은 UI 렌더링 프레임워크의 일부이다. 한 실시예에 따르면, Forms 2.0이 메타데이터에 의해 기술된 .NET WinForms 컨트롤을 호스팅하는 ActiveX 컨테이너를 호스팅한다.
메타데이터에 의해 정해진 양식들은 모달 .NET Winform 대화 상자들로도 생성될 수 있을 것이다. 이 실시예에서는, 애드인(addin) 내에 포함된 것 등과 같은 프로그램 코드가 양식을 정하는 XAML 메타데이터에서 전달되는 렌더링 엔진(230)을 호출하고, 렌더링 엔진(230)은 IBF 작업 틀, OUTLOOK 사용자 지정 양식 또는 대화 상자에서 호스팅될 수 있는 XAML 메타데이터로부터 발생된 .NET 컨트롤을 되돌려 보낸다. 애드인은 'IRenderingEngine' 인터페이스를 구현하는 'RenderingEngine' 클래스의 인스턴스를 만든다.
호출자는 양식을 기술하는 XAML 메타데이터에서 전달되는 'CreateXamlForm' 방법을 호출할 수 있다. 렌더링 엔진(230)은 필요한 컨트롤들을 인스턴스화하고 'xaml' 양식을 나타내는 개체('IXamlPage')를 되돌려 보낸다.
이 실시예에서는, 위에서의 'NativeControl' 속성이 IBF 작업 틀, OUTLOOK 사용자 지정 양식 또는 대화 상자에서 호스팅될 수 있는 메타데이터 UI 양식을 기술하는 .NET 컨트롤을 나타낸다. 'ReturnValue' 속성은 코드 비하인드 파일로부터 설정될 수 있고 모달 대화 상자로부터 값을 반환하기 위해 이용될 것인 변수이다.
도 3A 및 3B는 메타데이터 파일에 의해 기술되는 예시적 UI 양식을 도시한다. 도 3A를 보면, UI 양식(300)은 라벨(305), 페이지(310), 패널(315), 텍스트 박스(320), 체크 박스(325), 링크(330), 버튼(335), 목록 박스(340) 및 라디오 버튼 목록(345)을 포함한다.
도 3B는 도 3A에 도시된 바와 같이 UI 양식(300)을 정하기 위해 이용될 수 있는 예시적 UI 메타데이터 파일(360)을 도시한다. 예시적 UI 메타데이터 파일(360)은 컨트롤의 속성들이 대응하는 XML 노드의 특성들에 의해 정의되는 것을 도시한다. 한 실시예에 따르면, 대부분의 속성들은 기본 값을 가지며 특별히 정의될 필요가 없다. 도 3B에 도시된 바와 같이, 표시기(362)는 패널(310)의 기술을 도시하고, 표시기(364)는 라벨(305)의 기술을 도시하며, 표시기(366)는 텍스트 박스(320)의 기술을 도시하고, 표시기(368)는 체크 박스(325)의 기술을 도시하며, 표시기(370)는 버튼(335)의 기술을 도시하고, 표시기(372)는 링크(330)의 기술을 도시하며, 표시기(374)는 목록 박스(340)의 기술을 도시하고, 표시기(376)는 라디오 버튼 목록(345)의 기술을 도시한다.
도 4는 메타데이터를 이용하여 UI 양식을 기술하기 위한 프로세스를 도시한다. 시작 동작 후에, 프로세스는 메타데이터 파일이 정해지는 동작(410)으로 이동한다. 앞서 설명했듯이, 파일 내의 메타데이터는 UI를 기술하고 컨트롤 상의 정보, 데이터 바인딩 및 사용자 인터페이스에 관한 기타의 관련 정보를 포함한다.
동작(420)으로 이동하여, 메타데이터 파일이 저장된다. 한 실시예에 따르면, 메타데이터 파일은 하드 드라이브 등과 같은 컴퓨터 판독 가능 매체 상에 저장된다. 메타데이터 파일은 관련된 UI를 디스플레이하는 컴퓨팅 장치로부터 로컬 및/또는 원격으로 저장될 수 있을 것이다.
동작(430)으로 이동하여, 메타데이터 파일이 액세스된다. 한 실시예에 따르면, 메타데이터 파일이 렌더링 엔진에 의해 액세스된다. 대안적으로, 앞서 설명했듯이, 메타데이터 파일에 액세스하기 위해 인터프리터가 이용될 수 있을 것이다.
동작(440)으로 이동하여, 0개 이상의 데이터 소스들이 메타데이터를 통해 UI를 위해 정해진 하나 이상의 컨트롤들에 대해 바인딩될 수 있을 것이다.
동작(450)으로 이동하여, 메타데이터가 해석되고, UI를 디스플레이하기 위해 렌더링된다. UI 양식의 각각의 컨트롤이 UI(도 5 및 관련 설명을 참조) 상에 렌더 링된다.
그 후, 프로세스는 종료 동작으로 이동하고 기타의 동작들을 처리하는 동작으로 복귀한다.
도 5는 대응 메타데이터에 의해 UI 양식을 렌더링하기 위한 프로세스를 도시한다. 시작 동작 후에, 프로세스는 컨트롤이 인스턴스화되는 동작(510)으로 이동한다. 컨트롤은 컨트롤의 유형(즉, 라벨, 텍스트 박스 등)에 기반하여 인스턴스화된다.
동작(520)으로 이동하여, 컨트롤의 기본 속성들이 설정된다. 예를 들어, 상단, 좌단, 높이, 폭 등과 같은 속성들이 설정된다.
동작(530)으로 이동하여, 컨트롤 속성들이 설정된다. 설정되는 컨트롤 속성들은 컨트롤의 유형에 따른다.
다음에, 동작(540)에서, 메타데이터 내에서 정의되는 컨트롤 이벤트들이 섭스크라이브된다. 동작(550)으로 이동하여, 컨트롤을 위한 어떤 자식 컨트롤들이든 인스턴스화된다. 그 후, 프로세스는 종료 동작으로 이동하고, 기타의 동작들을 처리하는 동작으로 복귀한다.
아래는 메타데이터를 이용하여 UI 양식을 정하기 위해 이용될 수 있는 예시적 스키마이다.
위 설명, 예시 및 데이터는 본 발명의 구성의 제조 및 이용에 관한 완전한 기술을 제공한다. 본 발명의 정신 및 범위로부터 벗어남이 없이 본 발명의 많은 실시예들이 이루어질 수 있으므로, 본 발명은 첨부된 특허청구의 범위에 속한다.
Claims (20)
- 메타데이터 구동 사용자 인터페이스(metadata driven user interface)를 생성하기 위한 컴퓨터 실행 가능 명령어를 갖는 컴퓨터 판독 가능 매체에 있어서,사용자 인터페이스를 정의하는데 이용되는 XML(extensible markup language)에 의해 표현되는 파일로부터 메타데이터에 액세스하는 명령어- 상기 메타데이터는 상기 사용자 인터페이스 내에서의 컨트롤들을 정의하고, 상기 컨트롤들 각각은 래퍼 클래스(wrapper class)에 의해 래핑되고, 상기 래퍼 클래스는 코드 비하인드 어셈블리(code-behind assembly)에 대해 데이터 바인딩하고 상기 컨트롤의 속성들을 노출시키는 기능을 제공하고, 상기 컨트롤들 중 하나 이상에 대한 메타데이터는 상기 하나 이상의 컨트롤 각각에 대해 이벤트의 이름 및 이벤트를 처리하기 위한 메소드 이름을 상기 메타데이터 내에 지정함으로써 상기 이벤트를 노출시키고,상기 메타데이터는,바인딩 식(binding expression)을 사용하여 상기 사용자 인터페이스의 컨트롤의 속성에 데이터를 바인딩하는 XML 요소- 상기 바인딩 식은 상기 데이터에 대한 데이터 소스를 포함함 -; 및상기 코드 비하인드 어셈블리에서 컨트롤의 이벤트에 대한 이벤트 처리기를 지정하는 XML 요소- 상기 이벤트는 상기 코드 비하인드 어셈블리에 노출되고, 상기 컨트롤의 속성은 상기 코드 비하인드 어셈블리를 통해 액세스됨 -를 포함함 -; 및상기 메타데이터에 따라 상기 사용자 인터페이스를 렌더링하는 명령어를 포함하는 컴퓨터 판독 가능 저장 매체.
- 제1항에 있어서,상기 메타데이터는 또한 상기 컨트롤들을 프로그램적으로 변경하는 메커니즘들을 지원하는컴퓨터 판독 가능 저장 매체.
- 제2항에 있어서,메타데이터 스키마에 따라 상기 사용자 인터페이스에 대한 상기 메타데이터를 생성하고 상기 메타데이터를 파일에 저장하는 명령어를 더 포함하는컴퓨터 판독 가능 저장 매체.
- 제3항에 있어서,상기 메타데이터는 상기 사용자 인터페이스 내에서의 상기 컨트롤들과 관련이 있는 속성들을 정의하고 상기 사용자 인터페이스 내에서의 상기 컨트롤들의 레이아웃을 정의하는컴퓨터 판독 가능 저장 매체.
- 제2항에 있어서,상기 메타데이터는 사용자 지정 컨트롤들(custom controls)을 정의하고 상기 사용자 인터페이스 내에 표준 컨트롤들을 포함하는 능력을 제공하는컴퓨터 판독 가능 저장 매체.
- 제2항에 있어서,상기 컨트롤들을 프로그램적으로 변경하는 것은 상기 코드 비하인드 어셈블리에 의해 정의된 유형에 대한 액세스를 제공하는 것을 포함하는컴퓨터 판독 가능 저장 매체.
- 제6항에 있어서,상기 코드 비하인드 어셈블리에 의해 정의된 상기 유형은 상기 메타데이터에서 지정되는컴퓨터 판독 가능 저장 매체.
- 제6항에 있어서,상기 컨트롤들의 속성들이 판독 및 변경되게 하도록 구성된 개체 모델을 노출하는 명령어를 더 포함하는컴퓨터 판독 가능 저장 매체.
- 제5항에 있어서,상기 메타데이터 내의 상기 바인딩 식은 데이터 바인딩을 위한 양식(mode)을 지정하는 것을 더 포함하는컴퓨터 판독 가능 저장 매체.
- 제9항에 있어서,상기 바인딩 식은 데이터로의 경로를 더 포함하는컴퓨터 판독 가능 저장 매체.
- 제10항에 있어서,상기 데이터 소스는 개체 데이터 소스와 XML 데이터 소스 중 적어도 하나를 포함하는컴퓨터 판독 가능 저장 매체.
- 제10항에 있어서,메타데이터 스키마는 XML 스키마이고 텍스트 박스 유형, 버튼 유형, 링크 유형, 이미지 유형, 체크 박스 유형, 목록 컨트롤 유형, 및 라디오 목록 유형을 제공하는컴퓨터 판독 가능 저장 매체.
- 메타데이터를 이용하여 사용자 인터페이스를 생성하기 위한, 컴퓨터로 구현된 방법에 있어서,상기 방법은 컴퓨터에 의해 실행되는 경우,사용자 인터페이스를 위한 컨트롤들을 정의하는 파일로부터 메타데이터에 액세스하는 단계로서, 상기 컨트롤들 각각은 래퍼 클래스에 의해 래핑되고, 상기 래퍼 클래스는 코드 비하인드 어셈블리에 대해 데이터 바인딩하고 상기 컨트롤의 속성들을 노출하는 기능을 제공하고, 상기 메타데이터는 메타데이터 스키마에 따라 생성되고, 상기 컨트롤들 중 하나 이상에 대한 메타데이터는 상기 메타데이터 내에 이벤트의 이름 및 이벤트를 처리하기 위한 메소드 이름을 지정함으로써 상기 이벤트를 노출시키는, 상기 액세스하는 단계;바인딩 식을 지정함으로써 상기 사용자 인터페이스 내에서의 상기 컨트롤들 중 적어도 하나에 대해 데이터 소스를 바인딩하는 단계 - 상기 바인딩 식은 상기 메타데이터 내에 데이터 소스를 포함하고, 상기 데이터 소스는 개체 데이터 소스 및 XML 데이터 소스로부터 선택될 수 있으며, 상기 바인딩 식은 변경들을 상기 사용자 인터페이스로부터 상기 데이터 소스로 되돌려 전파하는데 사용될 수 있음 -; 및상기 메타데이터에 따라 상기 사용자 인터페이스를 렌더링하는 단계를 포함하는 사용자 인터페이스 생성 방법.
- 제13항에 있어서,상기 컨트롤들을 프로그램적으로 변경하기 위해 상기 메타데이터 스키마를 이용하고 상기 컨트롤들을 위한 이벤트 처리를 지원하는 단계를 더 포함하는사용자 인터페이스 생성 방법.
- 제14항에 있어서,상기 컨트롤들에 대한 베이스 클래스를 제공하는 단계를 더 포함하는사용자 인터페이스 생성 방법.
- 제15항에 있어서,상기 래퍼 클래스는 각각의 사용자 지정 컨트롤을 래핑하는사용자 인터페이스 생성 방법.
- 제14항에 있어서,상기 메타데이터에 따라 상기 사용자 인터페이스를 렌더링하는 단계는 각각의 컨트롤에 대해 상기 메타데이터에 지정된 대로 컨트롤 속성들을 설정하는 단계를 포함하는 사용자 인터페이스 생성 방법.
- 제17항에 있어서,상기 코드 비하인드 어셈블리는 이벤트 처리기 코드를 포함하고, 상기 메타데이터에서의 상기 코드 비하인드 어셈블리를 정의하는 단계, 및 컨트롤을 위해 특정한 이벤트를 처리하는 이벤트 처리기를 정의하는 단계를 더 포함하는 사용자 인터페이스 생성 방법.
- 메타데이터를 이용하여 사용자 인터페이스를 렌더링하기 위한 장치에 있어서,프로세서 및 컴퓨터 판독 가능 매체;상기 컴퓨터 판독 가능 매체 상에 저장되고 상기 프로세서 상에서 실행되는 운영 환경;사용자 인터페이스 내에서의 컨트롤들을 지정하는 메타데이터 파일을 저장하도록 구성된 데이터 저장소- 상기 컨트롤들 각각은 래퍼 클래스에 의해 래핑되고, 상기 래퍼 클래스는 데이터 바인딩하고 상기 컨트롤의 속성들을 노출하는 기능을 제공하며, 상기 파일 내의 상기 메타데이터는 상기 사용자 인터페이스의 하나 이상의 컨트롤에 데이터를 바인딩하는데 사용되는 바인딩 식을 포함하고, 상기 바인딩 식은 데이터 소스를 포함하며, 상기 바인딩 식은 변경들을 상기 사용자 인터페이스로부터 상기 데이터 소스로 되돌려 전파하는데 사용될 수 있고, 상기 컨트롤들 중 하나 이상에 대한 상기 메타데이터는 이벤트의 이름 및 이벤트를 처리하기 위한 메소드 이름을 상기 메타데이터 내에 지정함으로써 상기 이벤트를 노출시킴 -; 및상기 메타데이터를 해석하고 상기 메타데이터에 따라 상기 사용자 인터페이스를 렌더링하도록 구성된 기능을 포함하는 렌더링 엔진을 포함하는 사용자 인터페이스 렌더링 장치.
- 제19항에 있어서,상기 메타데이터는, 상기 사용자 인터페이스 내에서의 상기 컨트롤들을 생성하고, 상기 컨트롤들을 프로그램적으로 변경하며, 상기 컨트롤들을 위한 이벤트 처리를 지원하기 위한 메커니즘들을 포함하는 메타데이터 스키마에 따라 생성되는사용자 인터페이스 렌더링 장치.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US74224005P | 2005-12-05 | 2005-12-05 | |
US60/742,240 | 2005-12-05 | ||
US11/418,829 | 2006-05-05 | ||
US11/418,829 US8095565B2 (en) | 2005-12-05 | 2006-05-05 | Metadata driven user interface |
PCT/US2006/046464 WO2007067578A1 (en) | 2005-12-05 | 2006-12-05 | Metadata driven user interface |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20080071133A KR20080071133A (ko) | 2008-08-01 |
KR101331260B1 true KR101331260B1 (ko) | 2013-11-19 |
Family
ID=38120015
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020087010883A KR101331260B1 (ko) | 2005-12-05 | 2006-12-05 | 메타데이터를 이용하여 사용자 인터페이스를 렌더링하기위한 장치, 사용자 인터페이스를 생성하는 방법, 및 컴퓨터판독 가능 매체 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8095565B2 (ko) |
KR (1) | KR101331260B1 (ko) |
CN (1) | CN101322096B (ko) |
WO (1) | WO2007067578A1 (ko) |
Families Citing this family (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2451164C (en) | 2003-09-11 | 2016-08-30 | Teamplate Inc. | Customizable components |
CA2443454A1 (en) * | 2003-09-11 | 2005-03-11 | Teamplate Inc. | Data binding method in workflow system |
WO2007134265A2 (en) | 2006-05-12 | 2007-11-22 | Captaris, Inc. | Workflow data binding |
US7987443B2 (en) * | 2006-10-30 | 2011-07-26 | Hewlett-Packard Development Company, L.P. | Declarative association of dialog fields |
US8839232B2 (en) * | 2007-02-23 | 2014-09-16 | Sugarcrm Inc. | Customer relationship management portal system and method |
US8316309B2 (en) * | 2007-05-31 | 2012-11-20 | International Business Machines Corporation | User-created metadata for managing interface resources on a user interface |
US20080313291A1 (en) * | 2007-06-12 | 2008-12-18 | Smartmicros Usa, Llc | Method and apparatus for encoding data |
US20080313210A1 (en) * | 2007-06-15 | 2008-12-18 | Microsoft Corporation | Content Publishing Customized to Capabilities of Device |
US20090037829A1 (en) * | 2007-08-01 | 2009-02-05 | Microsoft Corporation | Framework to integrate web services with on-premise software |
US8560938B2 (en) * | 2008-02-12 | 2013-10-15 | Oracle International Corporation | Multi-layer XML customization |
US8281287B2 (en) * | 2007-11-12 | 2012-10-02 | Finocchio Mark J | Compact, portable, and efficient representation of a user interface control tree |
US20090199112A1 (en) * | 2008-02-04 | 2009-08-06 | Deserranno Allen | Simplified opc to wpf xaml binding method |
US8966465B2 (en) * | 2008-02-12 | 2015-02-24 | Oracle International Corporation | Customization creation and update for multi-layer XML customization |
US8875306B2 (en) * | 2008-02-12 | 2014-10-28 | Oracle International Corporation | Customization restrictions for multi-layer XML customization |
US8538998B2 (en) * | 2008-02-12 | 2013-09-17 | Oracle International Corporation | Caching and memory optimizations for multi-layer XML customization |
US8788542B2 (en) * | 2008-02-12 | 2014-07-22 | Oracle International Corporation | Customization syntax for multi-layer XML customization |
US8229976B2 (en) * | 2008-03-27 | 2012-07-24 | Microsoft Corporation | Data binding for XML schemas |
US8782604B2 (en) * | 2008-04-11 | 2014-07-15 | Oracle International Corporation | Sandbox support for metadata in running applications |
US8082494B2 (en) | 2008-04-18 | 2011-12-20 | Microsoft Corporation | Rendering markup language macro data for display in a graphical user interface |
US9164737B2 (en) * | 2008-05-16 | 2015-10-20 | Microsoft Technology Licensing, Llc | Augmenting programming languages with a type system |
US8667031B2 (en) * | 2008-06-13 | 2014-03-04 | Oracle International Corporation | Reuse of shared metadata across applications via URL protocol |
US9298684B2 (en) * | 2008-06-18 | 2016-03-29 | Microsoft Technology Licensing, Llc | Implementing custom user interface forms in a personal information manager |
KR101502096B1 (ko) | 2008-07-22 | 2015-03-12 | 삼성전자 주식회사 | 공기 조화기의 제어 방법 |
US8209355B2 (en) * | 2008-07-28 | 2012-06-26 | Microsoft Corporation | Automatic user interface generation for entity interaction |
US8996658B2 (en) * | 2008-09-03 | 2015-03-31 | Oracle International Corporation | System and method for integration of browser-based thin client applications within desktop rich client architecture |
US8799319B2 (en) | 2008-09-19 | 2014-08-05 | Oracle International Corporation | System and method for meta-data driven, semi-automated generation of web services based on existing applications |
US9122520B2 (en) * | 2008-09-17 | 2015-09-01 | Oracle International Corporation | Generic wait service: pausing a BPEL process |
US8332654B2 (en) * | 2008-12-08 | 2012-12-11 | Oracle International Corporation | Secure framework for invoking server-side APIs using AJAX |
GB2458755A (en) * | 2009-02-24 | 2009-10-07 | Promethean Ltd | Creating a document using a software application by associating content with a state of the software application |
US9727320B2 (en) * | 2009-02-25 | 2017-08-08 | Red Hat, Inc. | Configuration of provisioning servers in virtualized systems |
US9529648B2 (en) * | 2009-06-26 | 2016-12-27 | International Business Machines Corporation | Generic declaration of bindings between events and event handlers regardless of runtime structure |
US8595236B2 (en) * | 2009-11-05 | 2013-11-26 | International Business Machines Corporation | Searching existing user interfaces to enable design, development and provisioning of user interfaces |
US8869108B2 (en) * | 2009-11-18 | 2014-10-21 | Oracle International Corporation | Techniques related to customizations for composite applications |
US20110138335A1 (en) * | 2009-12-08 | 2011-06-09 | Sybase, Inc. | Thin analytics for enterprise mobile users |
US10845962B2 (en) * | 2009-12-14 | 2020-11-24 | Ab Initio Technology Llc | Specifying user interface elements |
CN102118652A (zh) * | 2009-12-31 | 2011-07-06 | 康佳集团股份有限公司 | 网络电视界面中元素位置切换的方法、装置及系统 |
US20110185294A1 (en) * | 2010-01-22 | 2011-07-28 | Microsoft Corporation | Pattern-based user interfaces |
US20110246913A1 (en) * | 2010-03-30 | 2011-10-06 | Microsoft Corporation | Automated User Interface Generator |
US9513882B2 (en) | 2010-04-15 | 2016-12-06 | Microsoft Technology Licensing, Llc | Platform independent presentation composition |
US8756488B2 (en) | 2010-06-18 | 2014-06-17 | Sweetlabs, Inc. | Systems and methods for integration of an application runtime environment into a user computing environment |
CN101976194A (zh) | 2010-10-29 | 2011-02-16 | 中兴通讯股份有限公司 | 一种设置用户界面的方法及装置 |
CN102081361B (zh) * | 2010-11-29 | 2012-08-29 | 广东威创视讯科技股份有限公司 | 一种硬件设备控制方法及其系统 |
US8793706B2 (en) * | 2010-12-16 | 2014-07-29 | Microsoft Corporation | Metadata-based eventing supporting operations on data |
US9141314B2 (en) | 2011-01-20 | 2015-09-22 | Canon Kabushiki Kaisha | Systems and methods for updating a user interface for a printing device |
US8994985B2 (en) | 2011-01-20 | 2015-03-31 | Canon Kabushiki Kaisha | Systems and methods for updating printing device capabilities |
US9013510B2 (en) * | 2011-07-29 | 2015-04-21 | Google Inc. | Systems and methods for rendering user interface elements in accordance with a device type |
US8954942B2 (en) | 2011-09-30 | 2015-02-10 | Oracle International Corporation | Optimizations using a BPEL compiler |
EP2584445A1 (en) * | 2011-10-18 | 2013-04-24 | Research In Motion Limited | Method of animating a rearrangement of ui elements on a display screen of an eletronic device |
CN102571934A (zh) * | 2011-12-22 | 2012-07-11 | 深圳华强电子交易网络有限公司 | 一种web页面数据绑定的方法 |
US9031922B2 (en) | 2012-05-02 | 2015-05-12 | Microsoft Technology Licensing, Llc | Code regeneration determination from selected metadata fingerprints |
US8775925B2 (en) * | 2012-08-28 | 2014-07-08 | Sweetlabs, Inc. | Systems and methods for hosted applications |
CN103019693A (zh) * | 2012-11-21 | 2013-04-03 | 用友软件股份有限公司 | 用户界面的生成系统和生成方法 |
CN103092625B (zh) * | 2013-01-28 | 2016-01-20 | 中国航空结算有限责任公司 | 一种基于.NET Framework平台的处理民航客运客票票证数据的方法和装置 |
US10296562B2 (en) | 2013-02-12 | 2019-05-21 | Oath Inc. | Dynamic generation of mobile web experience |
CN104007907B (zh) * | 2013-02-26 | 2018-08-10 | 北京三星通信技术研究有限公司 | 一种对应用程序进行快捷操作的方法和智能终端 |
US9116766B2 (en) | 2013-07-31 | 2015-08-25 | Sap Se | Extensible applications using a mobile application framework |
US10254931B2 (en) * | 2013-09-20 | 2019-04-09 | Sap Se | Metadata-driven list user interface component builder |
KR102146557B1 (ko) * | 2013-11-06 | 2020-08-21 | 삼성전자주식회사 | 어플리케이션의 데이터를 렌더링하는 방법, 장치 및 기록매체 |
US9772755B2 (en) * | 2013-11-15 | 2017-09-26 | Microsoft Technology Licensing, Llc | Remote control for displaying application data on dissimilar screens |
US9857947B2 (en) * | 2014-03-03 | 2018-01-02 | Microsoft Technology Licensing, Llc | Metadata driven dialogs |
US20150248227A1 (en) * | 2014-03-03 | 2015-09-03 | Microsoft Technology Licensing, Llc | Configurable reusable controls |
US20150347352A1 (en) * | 2014-06-02 | 2015-12-03 | Microsoft Technology Licensing, Llc | Form preview in a development environment |
US9729606B2 (en) | 2014-09-10 | 2017-08-08 | Benefitfocus.Com, Inc. | Systems and methods for a metadata driven user interface framework |
US20160259840A1 (en) * | 2014-10-16 | 2016-09-08 | Yahoo! Inc. | Personalizing user interface (ui) elements |
US9996230B2 (en) | 2014-11-13 | 2018-06-12 | Microsoft Technology Licensing, Llc | Using sections for customization of applications across platforms |
US10152558B2 (en) * | 2014-12-23 | 2018-12-11 | Intel Corporation | Graph operations |
US10579354B2 (en) * | 2015-03-10 | 2020-03-03 | Kordata, Llc | Method and system for rapid deployment and execution of customized functionality across multiple distinct platforms |
US10909186B2 (en) | 2015-09-30 | 2021-02-02 | Oracle International Corporation | Multi-tenant customizable composites |
US11238220B1 (en) | 2015-11-13 | 2022-02-01 | Wells Fargo Bank, N.A. | Dynamic user interface framework |
GB201522914D0 (en) * | 2015-12-24 | 2016-02-10 | Atom Bank Plc | Update method |
CN105824625B (zh) * | 2016-03-14 | 2019-07-23 | 北京中电普华信息技术有限公司 | 一种基于云环境的业务应用构造装置及方法 |
US10921952B2 (en) * | 2016-05-11 | 2021-02-16 | Sap Se | Dynamic button with visual indication of application action result |
KR102588633B1 (ko) * | 2016-12-14 | 2023-10-12 | 현대오토에버 주식회사 | 화면 미러링 장치 및 방법 |
US11138595B2 (en) | 2017-05-30 | 2021-10-05 | Visa International Service Association | System, method, and computer program product for maintaining transaction integrity over public networks |
US11501201B2 (en) * | 2017-07-17 | 2022-11-15 | MetiStream, Inc. | Systems, methods, and apparatuses for training, storage, and interaction with machine learning models |
US11423083B2 (en) | 2017-10-27 | 2022-08-23 | Ab Initio Technology Llc | Transforming a specification into a persistent computer program |
CN108549570B (zh) * | 2018-04-28 | 2021-10-26 | 北京小米移动软件有限公司 | 用户界面的更新方法及装置 |
US10795698B2 (en) | 2018-07-24 | 2020-10-06 | Microsoft Technology Licensing, Llc | User interface based on metadata |
CN109582647B (zh) * | 2018-11-21 | 2022-09-30 | 珠海市新德汇信息技术有限公司 | 一种面向非结构化证据文件的分析方法及系统 |
US10725798B2 (en) | 2018-12-05 | 2020-07-28 | Visa International Service Association | Method, system, and computer program product for dynamic development of an application programming interface |
CN110569025B (zh) * | 2019-08-26 | 2020-09-22 | 珠海格力电器股份有限公司 | 变量处理方法、装置、可读存储介质及电子设备 |
US11403079B2 (en) * | 2020-01-28 | 2022-08-02 | Salesforce, Inc. | Integrated system for designing a user interface |
US11397567B2 (en) | 2020-01-28 | 2022-07-26 | Salesforce, Inc. | Integrated system for designing a user interface |
CN111752563A (zh) * | 2020-05-18 | 2020-10-09 | 深圳市东微智能科技股份有限公司 | 动态修改界面方法、装置、终端及计算机可读存储介质 |
US10963272B1 (en) | 2020-07-09 | 2021-03-30 | Coupang Corp. | Systems and methods for deploying low-application-impact user interfaces |
CN113687881A (zh) * | 2021-08-20 | 2021-11-23 | 广东电网有限责任公司 | 元数据调用方法、装置、电子设备及存储介质 |
KR102579484B1 (ko) * | 2021-09-07 | 2023-09-15 | 네이버 주식회사 | 위지위그 편집 도구를 제공하는 방법 및 시스템 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050091576A1 (en) | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Programming interface for a computer platform |
Family Cites Families (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5257577A (en) | 1991-04-01 | 1993-11-02 | Clark Melvin D | Apparatus for assist in recycling of refuse |
US5606609A (en) | 1994-09-19 | 1997-02-25 | Scientific-Atlanta | Electronic document verification system and method |
US5594660A (en) | 1994-09-30 | 1997-01-14 | Cirrus Logic, Inc. | Programmable audio-video synchronization method and apparatus for multimedia systems |
US5642502A (en) | 1994-12-06 | 1997-06-24 | University Of Central Florida | Method and system for searching for relevant documents from a text database collection, using statistical ranking, relevancy feedback and small pieces of text |
US5933851A (en) | 1995-09-29 | 1999-08-03 | Sony Corporation | Time-stamp and hash-based file modification monitor with multi-user notification and method thereof |
US5974455A (en) * | 1995-12-13 | 1999-10-26 | Digital Equipment Corporation | System for adding new entry to web page table upon receiving web page including link to another web page not having corresponding entry in web page table |
US5745890A (en) * | 1996-08-09 | 1998-04-28 | Digital Equipment Corporation | Sequential searching of a database index using constraints on word-location pairs |
JP4025379B2 (ja) | 1996-09-17 | 2007-12-19 | 株式会社ニューズウオッチ | 検索システム |
US6285999B1 (en) * | 1997-01-10 | 2001-09-04 | The Board Of Trustees Of The Leland Stanford Junior University | Method for node ranking in a linked database |
US5960383A (en) * | 1997-02-25 | 1999-09-28 | Digital Equipment Corporation | Extraction of key sections from texts using automatic indexing techniques |
US5848404A (en) | 1997-03-24 | 1998-12-08 | International Business Machines Corporation | Fast query search in large dimension database |
US6256675B1 (en) * | 1997-05-06 | 2001-07-03 | At&T Corp. | System and method for allocating requests for objects and managing replicas of objects on a network |
US6158044A (en) * | 1997-05-21 | 2000-12-05 | Epropose, Inc. | Proposal based architecture system |
US6012053A (en) * | 1997-06-23 | 2000-01-04 | Lycos, Inc. | Computer system with user-controlled relevance ranking of search results |
JPH1125119A (ja) | 1997-06-30 | 1999-01-29 | Canon Inc | ハイパーテキスト閲覧システム |
US6070191A (en) * | 1997-10-17 | 2000-05-30 | Lucent Technologies Inc. | Data distribution techniques for load-balanced fault-tolerant web access |
US6351467B1 (en) * | 1997-10-27 | 2002-02-26 | Hughes Electronics Corporation | System and method for multicasting multimedia content |
US6128701A (en) * | 1997-10-28 | 2000-10-03 | Cache Flow, Inc. | Adaptive and predictive cache refresh policy |
US6594682B2 (en) * | 1997-10-28 | 2003-07-15 | Microsoft Corporation | Client-side system for scheduling delivery of web content and locally managing the web content |
US6389436B1 (en) * | 1997-12-15 | 2002-05-14 | International Business Machines Corporation | Enhanced hypertext categorization using hyperlinks |
US6145003A (en) * | 1997-12-17 | 2000-11-07 | Microsoft Corporation | Method of web crawling utilizing address mapping |
US6185558B1 (en) * | 1998-03-03 | 2001-02-06 | Amazon.Com, Inc. | Identifying the items most relevant to a current query based on items selected in connection with similar queries |
US6125361A (en) * | 1998-04-10 | 2000-09-26 | International Business Machines Corporation | Feature diffusion across hyperlinks |
US6151595A (en) | 1998-04-17 | 2000-11-21 | Xerox Corporation | Methods for interactive visualization of spreading activation using time tubes and disk trees |
JPH11328191A (ja) | 1998-05-13 | 1999-11-30 | Nec Corp | Wwwロボット検索システム |
US6098064A (en) * | 1998-05-22 | 2000-08-01 | Xerox Corporation | Prefetching and caching documents according to probability ranked need S list |
US6182085B1 (en) * | 1998-05-28 | 2001-01-30 | International Business Machines Corporation | Collaborative team crawling:Large scale information gathering over the internet |
ATE263988T1 (de) * | 1998-06-08 | 2004-04-15 | Kcsl Inc | Methode und verfahren um relevante dokumente in einer datenbank zu finden |
US6638314B1 (en) * | 1998-06-26 | 2003-10-28 | Microsoft Corporation | Method of web crawling utilizing crawl numbers |
US6549897B1 (en) * | 1998-10-09 | 2003-04-15 | Microsoft Corporation | Method and system for calculating phrase-document importance |
US6385602B1 (en) * | 1998-11-03 | 2002-05-07 | E-Centives, Inc. | Presentation of search results using dynamic categorization |
US6360215B1 (en) * | 1998-11-03 | 2002-03-19 | Inktomi Corporation | Method and apparatus for retrieving documents based on information other than document content |
US6922699B2 (en) * | 1999-01-26 | 2005-07-26 | Xerox Corporation | System and method for quantitatively representing data objects in vector space |
US6418433B1 (en) * | 1999-01-28 | 2002-07-09 | International Business Machines Corporation | System and method for focussed web crawling |
US6304864B1 (en) * | 1999-04-20 | 2001-10-16 | Textwise Llc | System for retrieving multimedia information from the internet using multiple evolving intelligent agents |
US6327590B1 (en) | 1999-05-05 | 2001-12-04 | Xerox Corporation | System and method for collaborative ranking of search results employing user and group profiles derived from document collection content analysis |
US6973490B1 (en) * | 1999-06-23 | 2005-12-06 | Savvis Communications Corp. | Method and system for object-level web performance and analysis |
US6547829B1 (en) * | 1999-06-30 | 2003-04-15 | Microsoft Corporation | Method and system for detecting duplicate documents in web crawls |
US6631497B1 (en) * | 1999-07-19 | 2003-10-07 | International Business Machines Corporation | Binding data from data source to cells in a spreadsheet |
US7181438B1 (en) * | 1999-07-21 | 2007-02-20 | Alberti Anemometer, Llc | Database access system |
US6442606B1 (en) * | 1999-08-12 | 2002-08-27 | Inktomi Corporation | Method and apparatus for identifying spoof documents |
US6356933B2 (en) * | 1999-09-07 | 2002-03-12 | Citrix Systems, Inc. | Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language |
US6351755B1 (en) * | 1999-11-02 | 2002-02-26 | Alta Vista Company | System and method for associating an extensible set of data with documents downloaded by a web crawler |
US6418453B1 (en) * | 1999-11-03 | 2002-07-09 | International Business Machines Corporation | Network repository service for efficient web crawling |
US6418452B1 (en) * | 1999-11-03 | 2002-07-09 | International Business Machines Corporation | Network repository service directory for efficient web crawling |
US6539376B1 (en) * | 1999-11-15 | 2003-03-25 | International Business Machines Corporation | System and method for the automatic mining of new relationships |
US7016540B1 (en) * | 1999-11-24 | 2006-03-21 | Nec Corporation | Method and system for segmentation, classification, and summarization of video images |
US6883135B1 (en) * | 2000-01-28 | 2005-04-19 | Microsoft Corporation | Proxy server using a statistical model |
US7240067B2 (en) * | 2000-02-08 | 2007-07-03 | Sybase, Inc. | System and methodology for extraction and aggregation of data from dynamic content |
US20010030667A1 (en) * | 2000-04-10 | 2001-10-18 | Kelts Brett R. | Interactive display interface for information objects |
US6871344B2 (en) * | 2000-04-24 | 2005-03-22 | Microsoft Corporation | Configurations for binding software assemblies to application programs |
US6741986B2 (en) * | 2000-12-08 | 2004-05-25 | Ingenuity Systems, Inc. | Method and system for performing information extraction and quality control for a knowledgebase |
US6772160B2 (en) * | 2000-06-08 | 2004-08-03 | Ingenuity Systems, Inc. | Techniques for facilitating information acquisition and storage |
US7080073B1 (en) * | 2000-08-18 | 2006-07-18 | Firstrain, Inc. | Method and apparatus for focused crawling |
US20030217052A1 (en) * | 2000-08-24 | 2003-11-20 | Celebros Ltd. | Search engine method and apparatus |
US6961900B1 (en) * | 2000-08-28 | 2005-11-01 | Microsoft Corporation | Rendering data according to a present schema from an origin response message |
US6598051B1 (en) * | 2000-09-19 | 2003-07-22 | Altavista Company | Web page connectivity server |
US6560600B1 (en) * | 2000-10-25 | 2003-05-06 | Alta Vista Company | Method and apparatus for ranking Web page search results |
US6622140B1 (en) * | 2000-11-15 | 2003-09-16 | Justsystem Corporation | Method and apparatus for analyzing affect and emotion in text |
US6842761B2 (en) * | 2000-11-21 | 2005-01-11 | America Online, Inc. | Full-text relevancy ranking |
US6826581B2 (en) * | 2000-12-06 | 2004-11-30 | Intel Corporation | Upgrading a device over a network by downloading results of command execution from script file |
US20020078045A1 (en) * | 2000-12-14 | 2002-06-20 | Rabindranath Dutta | System, method, and program for ranking search results using user category weighting |
US7356530B2 (en) * | 2001-01-10 | 2008-04-08 | Looksmart, Ltd. | Systems and methods of retrieving relevant information |
US20020103798A1 (en) * | 2001-02-01 | 2002-08-01 | Abrol Mani S. | Adaptive document ranking method based on user behavior |
US20020107886A1 (en) * | 2001-02-07 | 2002-08-08 | Gentner Donald R. | Method and apparatus for automatic document electronic versioning system |
US7203678B1 (en) * | 2001-03-27 | 2007-04-10 | Bea Systems, Inc. | Reconfigurable query generation system for web browsers |
US7188106B2 (en) * | 2001-05-01 | 2007-03-06 | International Business Machines Corporation | System and method for aggregating ranking results from various sources to improve the results of web searching |
US6738764B2 (en) * | 2001-05-08 | 2004-05-18 | Verity, Inc. | Apparatus and method for adaptively ranking search results |
US20040230572A1 (en) * | 2001-06-22 | 2004-11-18 | Nosa Omoigui | System and method for semantic knowledge retrieval, management, capture, sharing, discovery, delivery and presentation |
US7076483B2 (en) * | 2001-08-27 | 2006-07-11 | Xyleme Sa | Ranking nodes in a graph |
US6766422B2 (en) * | 2001-09-27 | 2004-07-20 | Siemens Information And Communication Networks, Inc. | Method and system for web caching based on predictive usage |
US7062502B1 (en) * | 2001-12-28 | 2006-06-13 | Kesler John N | Automated generation of dynamic data entry user interface for relational database management systems |
US7693830B2 (en) * | 2005-08-10 | 2010-04-06 | Google Inc. | Programmable search engine |
US20030221165A1 (en) * | 2002-05-22 | 2003-11-27 | Microsoft Corporation | System and method for metadata-driven user interface |
AU2003243533A1 (en) * | 2002-06-12 | 2003-12-31 | Jena Jordahl | Data storage, retrieval, manipulation and display tools enabling multiple hierarchical points of view |
US20040056894A1 (en) * | 2002-09-19 | 2004-03-25 | Igor Zaika | System and method for describing and instantiating extensible user interfaces |
US6886010B2 (en) * | 2002-09-30 | 2005-04-26 | The United States Of America As Represented By The Secretary Of The Navy | Method for data and text mining and literature-based discovery |
US7650572B2 (en) * | 2003-02-28 | 2010-01-19 | Bea Systems, Inc. | Graphical user interface navigation method |
US20040181515A1 (en) * | 2003-03-13 | 2004-09-16 | International Business Machines Corporation | Group administration of universal resource identifiers with members identified in search result |
US7028029B2 (en) * | 2003-03-28 | 2006-04-11 | Google Inc. | Adaptive computation of ranking |
US7451130B2 (en) * | 2003-06-16 | 2008-11-11 | Google Inc. | System and method for providing preferred country biasing of search results |
US7293253B1 (en) * | 2003-09-12 | 2007-11-06 | Nortel Networks Limited | Transparent interface migration using a computer-readable mapping between a first interface and a second interface to auto-generate an interface wrapper |
US7346839B2 (en) * | 2003-09-30 | 2008-03-18 | Google Inc. | Information retrieval based on historical data |
US7693827B2 (en) * | 2003-09-30 | 2010-04-06 | Google Inc. | Personalization of placed content ordering in search results |
US20050071328A1 (en) * | 2003-09-30 | 2005-03-31 | Lawrence Stephen R. | Personalization of web search |
US7552109B2 (en) * | 2003-10-15 | 2009-06-23 | International Business Machines Corporation | System, method, and service for collaborative focused crawling of documents on a network |
US20050086192A1 (en) * | 2003-10-16 | 2005-04-21 | Hitach, Ltd. | Method and apparatus for improving the integration between a search engine and one or more file servers |
US20050144162A1 (en) * | 2003-12-29 | 2005-06-30 | Ping Liang | Advanced search, file system, and intelligent assistant agent |
US20060047649A1 (en) * | 2003-12-29 | 2006-03-02 | Ping Liang | Internet and computer information retrieval and mining with intelligent conceptual filtering, visualization and automation |
US7483891B2 (en) * | 2004-01-09 | 2009-01-27 | Yahoo, Inc. | Content presentation and management system associating base content and relevant additional content |
US7499913B2 (en) * | 2004-01-26 | 2009-03-03 | International Business Machines Corporation | Method for handling anchor text |
US7310632B2 (en) * | 2004-02-12 | 2007-12-18 | Microsoft Corporation | Decision-theoretic web-crawling and predicting web-page change |
US7281002B2 (en) * | 2004-03-01 | 2007-10-09 | International Business Machine Corporation | Organizing related search results |
US7257577B2 (en) * | 2004-05-07 | 2007-08-14 | International Business Machines Corporation | System, method and service for ranking search results using a modular scoring system |
US7363296B1 (en) * | 2004-07-01 | 2008-04-22 | Microsoft Corporation | Generating a subindex with relevant attributes to improve querying |
US7472375B2 (en) * | 2005-03-29 | 2008-12-30 | Intel Corporation | Creating managed code from native code |
US7774713B2 (en) * | 2005-06-28 | 2010-08-10 | Microsoft Corporation | Dynamic user experience with semantic rich objects |
US7945531B2 (en) * | 2005-09-16 | 2011-05-17 | Microsoft Corporation | Interfaces for a productivity suite application and a hosted user interface |
-
2006
- 2006-05-05 US US11/418,829 patent/US8095565B2/en not_active Expired - Fee Related
- 2006-12-05 KR KR1020087010883A patent/KR101331260B1/ko active IP Right Grant
- 2006-12-05 WO PCT/US2006/046464 patent/WO2007067578A1/en active Application Filing
- 2006-12-05 CN CN2006800455212A patent/CN101322096B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050091576A1 (en) | 2003-10-24 | 2005-04-28 | Microsoft Corporation | Programming interface for a computer platform |
Also Published As
Publication number | Publication date |
---|---|
CN101322096B (zh) | 2012-10-10 |
CN101322096A (zh) | 2008-12-10 |
WO2007067578A1 (en) | 2007-06-14 |
US8095565B2 (en) | 2012-01-10 |
US20070130205A1 (en) | 2007-06-07 |
KR20080071133A (ko) | 2008-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101331260B1 (ko) | 메타데이터를 이용하여 사용자 인터페이스를 렌더링하기위한 장치, 사용자 인터페이스를 생성하는 방법, 및 컴퓨터판독 가능 매체 | |
Blanchette et al. | C++ GUI programming with Qt 4 | |
Hashimi et al. | Pro Android 3 | |
US6854123B1 (en) | Method, system, and program for mapping standard application program interfaces (APIs) to user interface APIs | |
EP3053028B1 (en) | Rendering interpreter for visualizing data provided from restricted environment container | |
US6957439B1 (en) | Method, system, and program for mapping objects in different language formats | |
US9910833B2 (en) | Automatically rendering web and/or hybrid applications natively in parallel | |
US9536023B2 (en) | Code generation for using an element in a first model to call a portion of a second model | |
JP5697661B2 (ja) | プラットフォームの拡張性フレームワーク | |
KR20050039551A (ko) | 컴퓨터 플랫폼용 프로그래밍 인터페이스 | |
US20080127060A1 (en) | Dynamic mating of a modified user interface with pre-modified user interface code library | |
US6941520B1 (en) | Method, system, and program for using a user interface program to generate a user interface for an application program | |
Michaelis | Essential C# 7.0 | |
KR20060047998A (ko) | 문서에 문맥 정보를 삽입하는 방법 및 시스템 | |
Himschoot | Microsoft Blazor | |
JP2006526192A (ja) | ユーザインターフェースプロパティをデータにより制御するためのシステムおよび方法 | |
Chaganti | Google Web Toolkit GWT Java AJAX Programming | |
JP2007538314A (ja) | 汎用ユーザインターフェースコマンドアーキテクチャ | |
CN114489619A (zh) | 一种界面视图显示方法及终端设备、计算机可读存储介质 | |
Sunderaraman | Practical Ext JS 4 | |
JP5010625B2 (ja) | ユーザインターフェースプロパティをデータにより制御するためのプログラムを格納した記録媒体およびシステム | |
Fergus et al. | The Definitive Guide to the. NET Compact Framework | |
Chernetskyi | Web application for organizing and administrating of language courses | |
Aimonetti | MacRuby: The Definitive Guide: Ruby and Cocoa on OS X | |
Moroney | Foundations of Atlas: Rapid Ajax Development with ASP. NET 2.0 |
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: 20161019 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20171018 Year of fee payment: 5 |
|
FPAY | Annual fee payment |
Payment date: 20181018 Year of fee payment: 6 |
|
FPAY | Annual fee payment |
Payment date: 20191016 Year of fee payment: 7 |