KR20160141736A - 데이터 뷰 노출 메커니즘 - Google Patents

데이터 뷰 노출 메커니즘 Download PDF

Info

Publication number
KR20160141736A
KR20160141736A KR1020167027338A KR20167027338A KR20160141736A KR 20160141736 A KR20160141736 A KR 20160141736A KR 1020167027338 A KR1020167027338 A KR 1020167027338A KR 20167027338 A KR20167027338 A KR 20167027338A KR 20160141736 A KR20160141736 A KR 20160141736A
Authority
KR
South Korea
Prior art keywords
data
data set
view component
requested
requested specific
Prior art date
Application number
KR1020167027338A
Other languages
English (en)
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 KR20160141736A publication Critical patent/KR20160141736A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/4443
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/248Presentation of query results
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F17/30554
    • G06F17/30861
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Multimedia (AREA)
  • Digital Computer Display Output (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

사용자 인터페이스 요소 디스플레이 로직 컴포넌트에 데이터를 노출하기 위한 데이터 뷰 컴포넌트의 사용. 데이터 뷰 컴포넌트에 의해 노출된 데이터는 데이터 캐시 내의 데이터 세트로부터의 것이다. 데이터 뷰 컴포넌트는 데이터 세트와의 바인딩으로 인해 그 데이터를 노출하는 것이 가능하다. 데이터 뷰 컴포넌트는 요청된 데이터 세트가 이용가능할 때까지 (널 데이터 세트와 같은) 디폴트 데이터 세트를 노출함, 여러 요청이 있는 경우 최신의 요청된 데이터 세트만을 노출, 하나의 데이터 세트로부터 다른 것으로 바인딩을 신속히 전환, 그리고/또는 사용자 인터페이스 요소 디스플레이 로직 컴포넌트가 소멸하면 바인딩을 안전하게 해제하여 사용자 경험을 개선할 수 있다.

Description

데이터 뷰 노출 메커니즘{DATA VIEW EXPOSURE MECHANISMS}
컴퓨팅 시스템은 다채로운 사용자 경험(user experience)을 사용자에게 제공하기 위해서 흔히 여러 사용자 인터페이스 요소를 디스플레이한다. 하나의 공통적인 제시 패러다임(presentation paradigm)에서, 각각의 사용자 인터페이스 요소는 뷰 모델(view model)에 의해 채워진다(populated). 뷰 모델은 입력 데이터를 사용자 인터페이스 요소를 디스플레이하는 사용자 인터페이스 컨트롤(user interface control)이 소비하기 위한 적절한 형태로 변환하는 디스플레이 로직 컴포넌트(display logic component)이다. 이 패러다임에서, 입력 데이터는 기저 데이터 세트(underlying data set)에 대한 뷰(view)를 제공하는 데이터 뷰 컴포넌트(data view component)에서 나온다. 그 뷰를 제공하기 위해서, 데이터 뷰 컴포넌트는 기저 데이터 세트에 바인딩하기(bind) 위해 참조(reference)를 사용한다.
기저 데이터 세트는 로컬 데이터 캐시(local data cache) 내의 데이터 세트일 수 있다. 로컬 데이터 캐시는 참조 카운트(reference count)를 추적한다. 데이터 세트가 처음 참조되는 경우, 데이터 캐시는 1로 참조 카운트를 시작한다. 데이터 세트에 대해 새로운 참조가 행해질 때마다, 그 데이터 세트에 대해 참조 카운트는 점증한다(increment). 데이터 세트에 대한 오래된 참조가 제거될 때마다, 그 데이터 세트에 대한 참조 카운트는 점감한다(decrement). 만약 참조 카운트가 0으로 점감하면, 데이터 캐시는 데이터 세트를 데이터 캐시로부터 퇴거시키거나 제거하는 옵션(option)을 가진다.
본 문서에서 청구된 대상물(subject matter)은 위에서 기술된 것과 같은 환경 내에서만 동작하거나 임의의 난점을 해결하는 실시예에 한정되지 않는다. 오히려, 이 배경은 본 문서 내에 기술된 몇몇 실시예가 실시될 수 있는 하나의 예시적인 기술 영역을 예시하기 위해 제공될 뿐이다.
본 문서 내에 기술된 적어도 몇몇 실시예는 사용자 인터페이스 요소 디스플레이 로직 컴포넌트(user interface element display logic component)에 데이터를 노출하기(expose) 위한 데이터 뷰 컴포넌트의 사용에 관련된다. 데이터 뷰 컴포넌트에 의해 노출된 데이터는 데이터 캐시 내의 데이터 세트로부터의 것이다. 데이터 뷰 컴포넌트는 데이터 세트와의 바인딩(binding)으로 인해 그 데이터를 노출하는 것이 가능하다.
본 문서 내에 기술된 제1 양상에 따라, 데이터 뷰 컴포넌트는 데이터 세트의 적어도 일부분을 액세스하기 위한 사용자 인터페이스 디스플레이 로직 컴포넌트로부터의 요청을 수신한다. 응답으로, 데이터 뷰 컴포넌트는 데이터 캐시에게서 데이터 세트를 요청한다. 데이터 캐시로부터의 요청된 데이터 세트를 기다리는 동안, 데이터 뷰 컴포넌트는 (널 데이터 세트(null data set)를 포함할 수가 있는) 디폴트 데이터 세트(default data set)의 적어도 일부분을 사용자 인터페이스 요소 디스플레이 로직에 노출한다. 디폴트 데이터 세트는 사용자 인터페이스 디스플레이 로직 컴포넌트에게 흥미로운 데이터를 포함할 법하지는 않지만, 사용자 인터페이스 디스플레이 로직 컴포넌트로 하여금 요청된 데이터의 채워짐(population)을 기다리는 동안 디폴트 데이터가 디스플레이되게 할 수 있도록 할 것이다. 일단 데이터 뷰 컴포넌트가 요청된 데이터 세트에 바인딩하면, 요청된 데이터는 이후 사용자 인터페이스 디스플레이 로직 컴포넌트에 노출된다.
본 문서 내에 기술된 제2 양상에 따라, 데이터 뷰 컴포넌트는 사용자 인터페이스 디스플레이 로직 컴포넌트로부터 상이한 데이터 세트들을 액세스하기 위한 여러 요청을 수신한다. 제1 요청에 응답하여, 데이터 뷰 컴포넌트는 데이터 캐시에게서 제1 데이터 세트를 요청한다. 또한, 제2 요청에 응답하여, 데이터 뷰 컴포넌트는 데이터 캐시에게서 제2 데이터 세트를 요청한다. 제2 요청에 응답하여, 데이터 뷰 컴포넌트는 제1 요청으로부터의 임의의 결과를 무시하고, 대신에 제2 데이터 세트가 바인딩을 위해 데이터 캐시 내에서 이용가능하게 되는 경우 제2 데이터 세트에 바인딩한다.
본 문서 내에 기술된 제3 양상에 따라, 데이터 뷰 컴포넌트는 사용자 인터페이스 요소 디스플레이 로직 컴포넌트로부터의 요청에 응답하여 데이터 세트로의 바인딩을 변경할 수 있다. 사용자 인터페이스 요소 디스플레이 로직 컴포넌트로부터 제1 요청이 수신되는 경우, 데이터 뷰는 제1 데이터 세트로 바인딩된다. 그러나, 사용자 인터페이스 요소 디스플레이 로직 컴포넌트로부터 제2 요청이 수신되는 경우, 데이터 뷰는 제2 데이터 세트로 바인딩을 변경한다.
본 문서 내에 기술된 제4 양상에 따라, 데이터 뷰 컴포넌트는 사용자 인터페이스 요소 디스플레이 로직 컴포넌트의 수명(lifetime)을 추적한다. 특히, 데이터 뷰 컴포넌트가 사용자 인터페이스 요소 디스플레이 로직 컴포넌트로부터 요청을 수신하는 경우, 데이터 뷰 컴포넌트는 또한 사용자 인터페이스 요소 디스플레이 로직 컴포넌트로부터 수명 참조 객체(lifetime reference object)를 수신한다. 데이터 뷰 컴포넌트는 요청에 응답하여 데이터 세트에 바인딩한다. 그러나, 사용자 인터페이스 요소 디스플레이 로직 컴포넌트가 더 이상 존재하지 않는 경우, 데이터 뷰 컴포넌트는 데이터 뷰 컴포넌트가 수명 참조 객체를 소유하는 덕분에 이를 통지 받는다. 따라서, 데이터 뷰 컴포넌트는 데이터 세트로의 바인딩을 적절히 해제할(release) 수 있다.
이 개요는 상세한 설명 내에 추가로 후술되는 개념들 중 선택된 것을 단순화된 형태로 소개하기 위해 제공된다. 이 개요는 청구된 대상물의 중요 특징 또는 필수적 특징을 식별하도록 의도되지 않으며, 청구된 대상물의 범주를 정하는 데에서 보조로서 사용되도록 의도되지도 않는다.
발명의 전술된 이점과 특징 그리고 다른 이점과 특징이 획득될 수 있는 방식을 기술하기 위해서, 위에서 간략히 기술된 발명의 더욱 특정한 설명이 부기된 도면 내에 예시된 그것의 특정 실시예들에 대한 참조에 의해 행해질 것이다. 이 도면들은 단지 발명의 전형적인 실시예들을 묘사하며 따라서 그것의 범주에 대해 한정하고 있는 것으로 간주되어서는 안 된다는 것을 이해하는바, 발명은 첨부된 도면의 사용을 통해 추가적인 특이성 및 세부사항과 함께 기술되고 설명될 것이니,
도 1은 본 문서 내에 기술된 원리가 이용될 수 있는 예시적 컴퓨팅 시스템을 예시하고,
도 2는 본 문서 내에 기술된 원리에 따라 데이터 캐시를 사용하여 사용자 인터페이스 요소를 채우는 데이터 채널을 포함하는 환경을 예시하며,
도 3은 데이터 뷰 컴포넌트가 요청된 데이터를 기다리는 동안 사용자 인터페이스 요소 디스플레이 로직 컴포넌트에 디폴트 데이터를 노출하기 위한 방법의 흐름도를 예시하고,
도 4는 여러 요청이 있는 경우 데이터 뷰 컴포넌트가 최신의 요청된 데이터 세트만을 노출하는 방법의 흐름도를 예시하며,
도 5는 데이터 뷰 컴포넌트가 하나의 다른 세트로부터 다른 것으로 바인딩을 전환하는 방법의 흐름도를 예시하고,
도 6은 일단 사용자 인터페이스 요소 디스플레이 로직 컴포넌트가 소멸(cease to exist)하면 데이터 뷰 컴포넌트가 바인딩을 안전하게 해제하는 방법의 흐름도를 예시하며,
도 7은 도 2의 환경의 특정 예인 환경을 예시하나, 이제 데이터 캐시에 의해 제공되는 세 개의 데이터 채널을 보여주고 여러 이용가능한 데이터 캐시를 보여준다.
본 문서 내에 기술된 적어도 몇몇 실시예는 사용자 인터페이스 요소 디스플레이 로직 컴포넌트에 데이터를 노출하기 위한 데이터 뷰 컴포넌트의 사용에 관련된다. 데이터 뷰 컴포넌트에 의해 노출된 데이터는 데이터 캐시 내의 데이터 세트로부터의 것이다. 데이터 뷰 컴포넌트는 데이터 세트와의 바인딩으로 인해 그 데이터를 노출하는 것이 가능하다.
본 문서 내에 기술된 제1 양상에 따라, 데이터 뷰 컴포넌트는 데이터 세트의 적어도 일부분을 액세스하기 위한 요청을 사용자 인터페이스 디스플레이 로직 컴포넌트로부터 수신한다. 응답으로, 데이터 뷰 컴포넌트는 데이터 캐시에게서 데이터 세트를 요청한다. 데이터 캐시로부터 요청된 데이터 세트를 기다리는 동안, 데이터 뷰 컴포넌트는 (널 데이터 세트일 수가 있는) 디폴트 데이터 세트의 적어도 일부분을 사용자 인터페이스 요소 디스플레이 로직에 노출한다. 디폴트 데이터 세트는 사용자 인터페이스 디스플레이 로직 컴포넌트에게 흥미로운 데이터를 포함할 법하지는 않지만, 사용자 인터페이스 디스플레이 로직 컴포넌트로 하여금 요청된 데이터의 채워짐을 기다리는 동안 디폴트 데이터가 디스플레이되게 할 수 있도록 할 것이다. 일단 데이터 뷰 컴포넌트가 요청된 데이터 세트에 바인딩하면, 요청된 데이터는 이후 사용자 인터페이스 디스플레이 로직 컴포넌트에 노출된다.
본 문서 내에 기술된 제2 양상에 따라, 데이터 뷰 컴포넌트는 사용자 인터페이스 디스플레이 로직 컴포넌트로부터 상이한 데이터 세트들을 액세스하기 위한 여러 요청을 수신한다. 제1 요청에 응답하여, 데이터 뷰 컴포넌트는 데이터 캐시에게서 제1 데이터 세트를 요청한다. 또한, 제2 요청에 응답하여, 데이터 뷰 컴포넌트는 데이터 캐시에게서 제2 데이터 세트를 요청한다. 제2 요청에 응답하여, 데이터 뷰 컴포넌트는 제1 요청으로부터의 임의의 결과를 무시하고, 대신에 제2 데이터 세트가 바인딩을 위해 데이터 캐시 내에서 이용가능하게 되는 경우 그 데이터 세트에 바인딩한다.
본 문서 내에 기술된 제3 양상에 따라, 데이터 뷰 컴포넌트는 사용자 인터페이스 요소 디스플레이 로직 컴포넌트로부터의 요청에 응답하여 데이터 세트로의 바인딩을 변경할 수 있다. 사용자 인터페이스 요소 디스플레이 로직 컴포넌트로부터 제1 요청이 수신되는 경우, 데이터 뷰는 제1 데이터 세트로 바인딩된다. 그러나, 사용자 인터페이스 요소 디스플레이 로직 컴포넌트로부터 제2 요청이 수신되는 경우, 데이터 뷰는 제2 데이터 세트로 바인딩을 변경한다.
본 문서 내에 기술된 제4 양상에 따라, 데이터 뷰 컴포넌트는 사용자 인터페이스 요소 디스플레이 로직 컴포넌트의 수명을 추적한다. 특히, 데이터 뷰 컴포넌트가 사용자 인터페이스 요소 디스플레이 로직 컴포넌트로부터 요청을 수신하는 경우, 데이터 뷰 컴포넌트는 또한 사용자 인터페이스 요소 디스플레이 로직 컴포넌트로부터 수명 참조 객체를 수신한다. 데이터 뷰 컴포넌트는 요청에 응답하여 데이터 세트에 바인딩한다. 그러나, 사용자 인터페이스 요소 디스플레이 로직 컴포넌트가 더 이상 존재하지 않는 경우, 데이터 뷰 컴포넌트는 데이터 뷰 컴포넌트가 수명 참조 객체를 소유하는 덕분에 이를 통지 받는다. 따라서, 데이터 뷰 컴포넌트는 데이터 세트로의 바인딩을 적절히 해제할 수 있다.
그러므로, 데이터 뷰 컴포넌트는 요청된 데이터 세트가 이용가능할 때까지 디폴트 데이터 세트를 노출함으로써, 여러 요청이 있는 경우 최신의 요청된 데이터 세트만을 노출함으로써, 하나의 데이터 세트로부터 다른 것으로 바인딩을 신속히 전환함으로써, 그리고/또는 일단 사용자 인터페이스 요소 디스플레이 로직 컴포넌트가 소멸하면 바인딩을 안전하게 해제함으로써 사용자 경험을 개선할 수 있다.
컴퓨팅 시스템의 어떤 서두 논의가 도 1에 관해서 기술될 것이다. 이후, 추가의 실시예가 후속 도면들에 관해서 기술될 것이다.
컴퓨팅 시스템은 오늘날 점점 더 매우 다양한 형태를 취하고 있다. 컴퓨팅 시스템은, 예컨대, 핸드헬드 디바이스(handheld device), 기기(appliance), 랩톱 컴퓨터(laptop computer), 데스크톱 컴퓨터(desktop computer), 메인프레임(mainframe), 분산 컴퓨팅 시스템(distributed computing system), 또는 심지어 종래에는 컴퓨팅 시스템으로 간주되지 않았던 디바이스일 수 있다. 이 설명에서 그리고 청구항에서, 용어 "컴퓨팅 시스템"은, 적어도 하나의 물리적이고 유형적인(tangible) 프로세서와, 그 프로세서에 의해 실행될 수 있는 컴퓨터 실행가능(computer-executable) 명령어를 가질 수 있는 물리적이고 유형적인 메모리를 포함하는 임의의 디바이스 또는 시스템(또는 이들의 조합)을 포함하는 것으로 넓게 정의된다. 메모리는 임의의 형태를 취할 수 있고 컴퓨팅 시스템의 본질 및 형태에 의존할 수 있다. 컴퓨팅 시스템은 네트워크 환경 상에서 분산될 수 있고 다중 구성 컴퓨팅 시스템들을 포함할 수 있다.
도 1에 예시된 바와 같이, 그것의 가장 기본적인 구성에서, 컴퓨팅 시스템(100)은 보통 적어도 하나의 처리 유닛(102) 및 메모리(104)를 포함한다. 메모리(104)는 물리적인 시스템 메모리일 수 있는데, 이는 휘발성(volatile), 비휘발성(non-volatile), 또는 그 둘의 어떤 조합일 수 있다. 용어 "메모리"는 또한 물리적인 저장 매체와 같은 비휘발성 대용량 스토리지(mass storage)를 나타내기 위해 본 문서에서 사용될 수 있다. 만약 컴퓨팅 시스템이 분산된 경우, 처리, 메모리 및/또는 저장 능력도 분산될 수 있다. 본 문서에서 사용되는 바와 같이, 용어 "실행가능 모듈"(executable module) 또는 "실행가능 컴포넌트"(executable component)는 컴퓨팅 시스템 상에서 실행될 수 있는 소프트웨어 객체(object), 루틴(routine) 또는 방법을 나타낼 수 있다. 본 문서 내에 기술된 상이한 컴포넌트, 모듈, 엔진 및 서비스는 컴퓨팅 시스템 상에서 실행되는 객체 또는 프로세스로서(가령, 별개의 쓰레드(thread)로서) 구현될 수 있다.
뒤따르는 설명에서, 하나 이상의 컴퓨팅 시스템에 의해 수행되는 행위를 참조하여 실시예가 기술된다. 만약 그러한 행위가 소프트웨어로 구현되는 경우, 그 행위를 수행하는 연관된 컴퓨팅 시스템의 하나 이상의 프로세서는 컴퓨터 실행가능 명렁어를 실행한 것에 응답하여 컴퓨팅 시스템의 동작을 지시한다. 예컨대, 그러한 컴퓨터 실행가능 명령어는 컴퓨터 프로그램 제품을 형성하는 하나 이상의 컴퓨터 판독가능(computer-readable) 매체 상에 실체화될(embodied) 수 있다. 그러한 동작의 일례는 데이터의 조작(manipulation)을 수반한다. 컴퓨터 실행가능 명령어(와 조작된 데이터)는 컴퓨팅 시스템(100)의 메모리(104) 내에 저장될 수 있다. 컴퓨팅 시스템(100)은 또한 컴퓨팅 시스템(100)으로 하여금, 예컨대 네트워크(110) 상에서, 다른 메시지 프로세서와 통신할 수 있게 하는 통신 채널(108)을 포함할 수 있다. 컴퓨팅 시스템(100)은 또한 본 문서 내에 기술된 것과 같은 사용자 인터페이스를 디스플레이하기 위한 디스플레이(112)를 포함한다.
본 문서 내에 기술된 실시예는, 아래에서 더욱 상세히 논의되는 바와 같이, 예컨대 하나 이상의 프로세서 및 시스템 메모리와 같은 컴퓨터 하드웨어를 포함하는 특수 목적(special purpose) 또는 일반 목적(general-purpose) 컴퓨터를 포함하거나 활용할 수 있다. 본 문서 내에 기술된 실시예는 또한 컴퓨터 실행가능 명령어 및/또는 데이터 구조를 전달하거나 저장하기 위한 물리적 컴퓨터 판독가능 매체 및 다른 컴퓨터 판독가능 매체를 포함한다. 그러한 컴퓨터 판독가능 매체는 일반 목적 또는 특수 목적 컴퓨터 시스템에 의해 액세스될 수 있는 임의의 이용가능한 매체일 수 있다. 컴퓨터 실행가능 명령어를 저장하는 컴퓨터 판독가능 매체는 물리적 저장 매체이다. 컴퓨터 실행가능 명령어를 전달하는 컴퓨터 판독가능 매체는 송신 매체이다. 그러므로, 한정이 아니고 예로서, 발명의 실시예들은 적어도 두 개의 뚜렷이 상이한 종류의 컴퓨터 판독가능 매체를 포함할 수 있다: 컴퓨터 저장 매체 및 송신 매체.
컴퓨터 저장 매체들은 RAM, ROM, EEPROM, CD-ROM 또는 다른 광학 디스크 저장, 자기 디스크 저장 또는 다른 자기 저장 디바이스들, 또는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 저장하는 데에 사용될 수 있고 일반 목적 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 임의의 다른 유형적 매체들을 포함한다.
"네트워크"는 컴퓨터 시스템 및/또는 모듈 및/또는 다른 전자 디바이스 간의 전자 데이터의 전송을 가능하게 하는 하나 이상의 데이터 링크로서 정의된다. 네트워크 또는 다른 통신 연결(고정배선(hardwired)이든, 무선이든, 또는 고정배선 또는 무선의 조합이든) 상에서 컴퓨터로 정보가 전송되거나 제공되는 경우, 컴퓨터는 적절히 그 연결을 송신 매체로 본다. 송신 매체는 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 원하는 프로그램 코드 수단을 전달하는 데에 사용될 수 있고 일반 목적 또는 특수 목적 컴퓨터에 의해 액세스될 수 있는 네트워크 및/또는 데이터 링크를 포함할 수 있다. 위의 것의 조합은 컴퓨터 판독가능 매체의 범주 내에 또한 포함되어야 한다.
또한, 다양한 컴퓨터 시스템 컴포넌트에 이를 시에, 컴퓨터 실행가능 명령어 또는 데이터 구조의 형태로 된 프로그램 코드 수단은 송신 매체로부터 컴퓨터 저장 매체로 (또는 반대로) 자동으로 전송될 수 있다. 예컨대, 네트워크 또는 데이터 링크 상에서 수신된 컴퓨터 실행가능 명령어 또는 데이터 구조는 네트워크 인터페이스 모듈(가령, "NIC") 내의 RAM 내에 버퍼링되고(buffered), 이후 결국 컴퓨터 시스템에서 컴퓨터 시스템 RAM으로 그리고/또는 덜 휘발성인 컴퓨터 저장 매체로 전송될 수 있다. 그러므로, 컴퓨터 저장 매체는 또한 (또는 심지어 주로) 송신 매체를 활용하는 컴퓨터 시스템 컴포넌트 내에 포함될 수 있음이 이해되어야 한다.
컴퓨터 실행가능 명령어는, 예컨대, 프로세서에서 실행되는 경우 일반 목적 컴퓨터, 특수 목적 컴퓨터 또는 특수 목적 처리 디바이스로 하여금 어떤 기능 또는 기능들의 그룹을 수행하게 하는 명령어 및 데이터를 포함한다. 컴퓨터 실행가능 명령어는, 예컨대, 바이너리(binary)이거나, 어셈블리 언어(assembly language)와 같은 중간 포맷 명령어이거나, 심지어 소스 코드(source code)일 수 있다. 대상물은 구조적 특징 및/또는 방법론적 행위에 특정한 말로 기술되었으나, 부기된 청구항 내에 정의된 대상물은 기술된 특징이나 전술된 행위에 반드시 한정되지는 않음이 이해되어야 한다. 오히려, 기술된 특징 및 행위는 청구항을 구현하는 예시적 형태로서 개시된다.
개인용 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 핸드헬드 디바이스, 다중 프로세서 시스템, 마이크로프로세서 기반 또는 프로그램가능 가전기기, 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 모바일 전화, PDA, 페이저, 라우터, 스위치 및 유사한 것을 포함하여, 많은 유형의 컴퓨터 시스템 구성을 갖는 네트워크 컴퓨팅 환경 내에서 발명이 실시될 수 있음을 당업자는 인식할 것이다. 발명은 또한, 네트워크를 통해 (고정배선 데이터 링크, 무선 데이터 링크에 의해서든, 또는 고정배선 및 무선 데이터 링크의 조합에 의해서든) 링크된 로컬(local) 및 원격(remote) 컴퓨터 시스템들 양자 모두가 작업을 수행하는 분산 시스템 환경 내에서 실시될 수 있다. 분산 시스템 환경에서, 프로그램 모듈은 로컬 및 원격 메모리 저장 디바이스 양자 모두 내에 위치될 수 있다.
도 2는 데이터 주도(data-driven) 사용자 인터페이스 컨트롤(210)을 포함하는 환경(200)을 예시한다. 사용자 인터페이스 컨트롤(210)은 컨트롤 입력 데이터(201)를 사용하여 데이터 주도 방식으로 사용자 인터페이스 요소를 제시한다. 예를 들면, 환경(200)은 도 1의 컴퓨팅 시스템(100) 내에 있을 수 있는데, 그 경우에, 사용자 인터페이스 요소는, 예컨대 디스플레이(112) 상에, 디스플레이되게 된다. 예를 들면, 사용자 인터페이스 컨트롤(210)은 모델 뷰 뷰모델(Model View ViewModel: MVVM) 제시 패러다임에서 용어가 사용되는 바와 같이 "뷰"이거나 모델-뷰-컨트롤러(Model-View-Controller: MVC) 패턴에서 용어가 사용되는 바와 같이 "컨트롤러"로서일 수 있다.
사용자 인터페이스 컨트롤(210)은 사용자 인터페이스 요소 디스플레이 로직 컴포넌트(211)(이하에서 "디스플레이 로직 컴포넌트"로도 칭해짐)로부터 컨트롤 입력 데이터(201)를 수신한다. 디스플레이 로직 컴포넌트(211)는 입력 데이터(202)를 수신하고 입력 데이터(202)를 처리하여 이로써 컨트롤 입력 데이터(201)를 생성한다. 그러므로, 디스플레이 로직 컴포넌트(212)는 사용자 인터페이스 컨트롤(210)에 의한 소비를 위해 적절한 형태로 된 컨트롤 입력 데이터(201)를 생성하는 데에 입력 데이터(202)를 사용한다. 비즈니스 로직 컴포넌트(business logic component)(212)에 의해 수행되는 처리는 입력 데이터의 전부 또는 부분을 그것의 출력으로 변동 없이 전달하는 것만큼 간단할 수 있거나, 꽤 복잡할 수 있거나, 그 사이 어딘가일 수 있다. 디스플레이 로직 컴포넌트(211)는 MVVM 제시 패러다임에서 용어가 사용되는 바와 같이 "뷰모델"(viewmodel) 또는 "뷰 모델"(view model)일 수 있거나, MVC 패턴에서 용어가 사용되는 바와 같이 "뷰"일 수 있다.
비즈니스 로직 컴포넌트(212)는 비즈니스 로직을 수행하고 (입력 데이터(202)를 포함하는) 결과적인 비즈니스 로직 출력 데이터를 디스플레이 로직 컴포넌트(211)에 공급한다. 이 설명의 목적상, 본 문서 내에 기술된 원리와 가장 관련 있는 것은 데이터 뷰 컴포넌트(213)에 의해 제공되는 입력 데이터(202)이다. 비즈니스 로직 컴포넌트(212)는 MVVM 제시 패러다임에서 용어가 사용되는 바와 같이 또는 MVC 패턴에서 용어가 사용되는 바와 같이 "모델"일 수 있다.
데이터 뷰 컴포넌트(213)는 비즈니스 로직 컴포넌트(212) 내에서 동작하며, 대응하는 데이터 세트의 뷰를 제공하는 데에 있어서 대응하는 디스플레이 로직 처리 컴포넌트(211)에 위로 (가령, 입력 데이터(202)의 형태로) 그 뷰를 노출함으로써 역할을 한다. 데이터 뷰 컴포넌트(213)는 데이터 캐시(240) 내의 대응하는 데이터 세트(251)에 대한 참조(203)를 가진다.
데이터 캐시(240)는 데이터 뷰 컴포넌트와 같은 다른 객체에 의해 참조될 수 있는 데이터 세트 모음(data set collection)(250)을 보유한다. 처음에, 데이터 세트 모음(250)은 비어 있을 수 있다. 데이터 로더(data loader)(260)는 요청된 데이터 세트가 현재 데이터 캐시(240) 내에 있지 않은 경우 네트워크(270) 상에서 적절한 데이터 소스(280)에 통신하는 것을 감당한다.
데이터 캐시(240)는 또한 데이터 세트 모음(250) 내의 데이터 세트 각각을 위한 참조 카운트를 유지하고, 데이터 세트의 퇴거(eviction)에 관해 잠재적으로 결정을 내린다. 예를 들면, 네트워크(270) 상에서 (아마도 도 2의 데이터 소스(280)와 같은) 저장 서비스로 데이터 세트의 가장 최근의 사본(copy)을 잠재적으로 제공한 후에, 데이터 세트에 대한 참조가 전혀 없는 경우 데이터 캐시(240)는 캐시로부터 데이터 세트를 제거할 수 있다.
하나의 실시예에서, 사용자 인터페이스 컨트롤(210), 디스플레이 로직 처리 컴포넌트(211) 및 비즈니스 로직 컴포넌트(212)는 동일한 컴퓨팅 시스템(과 아마도 동일한 머신), 예를 들어 도 1의 컴퓨팅 시스템(100) 상에서 작동하고(running) 있을 수 있다. 나아가, 데이터 캐시(240)가 또한 동일한 컴퓨팅 시스템 상에 존재할 수 있다.
본 문서 내에 기술된 다양한 실시예에 따라, 데이터 뷰 컴포넌트는 요청된 데이터 세트가 이용가능할 때까지 (널 데이터 세트와 같은) 디폴트 데이터 세트를 노출함으로써, 여러 요청이 있는 경우 최신의 요청된 데이터 세트만을 노출함으로써, 하나의 데이터 세트로부터 다른 것으로 바인딩을 신속히 전환함으로써, 그리고/또는 일단 사용자 인터페이스 요소 디스플레이 로직 컴포넌트가 소멸하면 바인딩을 안전하게 해제함으로써 사용자 경험을 개선할 수 있다. 나아가, 이것은 데이터 캐싱 시스템(data caching system)을 사용하는 애플리케이션 또는 애플리케이션 확장을 작성하는 애플리케이션 또는 확장 개발자 측에서의 광범위한 코딩을 요구하지 않고서 수행될 수 있다.
예를 들면, 데이터 캐시(240)를 생성하기 위해 애플리케이션 또는 확장 개발자에 의해 이하의 코딩이 사용될 수 있다(명료함을 위해 행 번호가 추가됨):
Figure pct00001
여기서, 행 1에서, "EntityCache"는 데이터 캐시(240)이다.
또한, 이하는 디스플레이 로직 컴포넌트(211)가 인스턴스화될(instantiated) 수 있는 클래스(class)의 일례를 나타내는 뷰 모델 클래스를 위한 코드를 나타낸다(명료함을 위해 행 번호 매기기가 추가됨):
Figure pct00002
Figure pct00003
행 11은 뷰 모델(디스플레이 로직 컴포넌트(211)의 일례)이 데이터뷰(DataView)(데이터 뷰(213)의 일례)를 획득하는 곳이다. 뷰 모델은, 데이터뷰(DataView)에 대한, 그것이 그 외함(enclosing) 뷰 모델과 동일한 수명을 공유할 것이라는 지시자(indicator)인 "컨테이너"(container)를 전달함에 주의하시오. 이 컨테이너에 대한 추가사항이 아래에서 기술될 것이다.
행 12는 뷰 모델이 데이터뷰(DataView)로부터의 값을 바인딩하는 곳이다. 이것은 생성자(constructor) 내에서 행해지고, 따라서 뷰 모델의 수명 동안 단 한 번 수행된다.
"페치"(fetch) 명령(가령, 행 18 내)은 뷰 모델이 입력에 바인딩되거나 재바인딩되는(rebound) 곳이다. 이 "페치" 호출은 (데이터 세트가 아직 데이터 캐시 내에 존재하지 않는다고 가정하여) 데이터 캐시(240) 내에 필요한 데이터 세트를 채우라는 웹 요청(web request)을 데이터 캐시(240)가 발행하는 것을 초래한다. 예를 들면, 도 2에서, 데이터 로더(260)는 네트워크(270) 상에서 데이터 소스(280)에 요청(가령, 아마도 ajax 요청)을 발행할 것이다. 나아가, 참조(203)는 페치 호출에 응답하여 생성될 수 있다. 만약 상이한 데이터 세트가 데이터 뷰에 의해 참조될 것을 페치 호출이 요구하는 경우 참조(203)는 또한 상이한 데이터 세트로 변경될 것이다. 아래에서 더 기술될 바와 같이, 데이터 뷰(가령, 데이터 뷰 컴포넌트(213))는 가장 최근에 발행된 네트워크 (가령, ajax) 요청이 완료되는 경우 통지할 뿐이다. 그 예에서, 이 통지는 행 17에서 데이터뷰(DataView)에 의해 회신되는(returned) "Thenable" 참조를 통하여 행해진다.
도 3은 데이터 뷰 컴포넌트가 요청된 데이터 세트가 이용가능할 때까지 디폴트 데이터 세트를 노출하는 방법(300)의 흐름도를 예시한다. 데이터 뷰 컴포넌트는 데이터 세트의 적어도 일부분을 액세스하기 위한 요청을 수신한다(행위(301)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 데이터 세트의 적어도 일부분에 대해 디스플레이 로직 컴포넌트(211)로부터 요청을 수신한다.
데이터 뷰 컴포넌트는 이후 데이터 캐시에게서 데이터 세트를 요청한다(행위(302)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 데이터 캐시(240)로부터의 데이터 세트(251)에 바인딩할 것을 요청할 수 있다. 만약 데이터 세트(251)가 데이터 캐시(240) 내에 아직 있지 않다면, 데이터 로더(260)는 네트워크(270) 상에서 데이터 소스(280)에 웹 요청을 제출할 수 있다.
요청된 데이터 세트를 데이터 캐시로부터 기다리는 동안, 데이터 뷰 컴포넌트는 사용자 인터페이스 요소 디스플레이 로직 컴포넌트에 디폴트 데이터 세트의 적어도 일부분을 노출한다(행위(303)). 도 2를 참조하면, 관심사인 실제 데이터 세트가 인출되고(retrieved) 있는 동안, 디폴트 데이터 세트는 사용자 인터페이스 컨트롤의 임시적인 채움을 위해 데이터 뷰 컴포넌트(213)에 의해 보유될 수 있다. 일례로서, 디폴트 데이터 세트는 널 데이터 세트(예를 들어 빈 어레이(array)이거나, 단일 객체가 요청되는 경우에는 널 값(null value))일 수 있다.
데이터 뷰 컴포넌트는 이후 요청된 데이터 세트가 바인딩을 위해 이용가능하다는 표시(indication)를 데이터 캐시로부터 수신한다(행위(304)). 응답으로, 데이터 뷰 컴포넌트는 요청된 데이터 세트에 바인딩한다(행위(305)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 요청된 데이터 세트(251)에 대한 참조(203)를 조성한다(formulate). 이것은 요청된 데이터가 디스플레이 로직 컴포넌트(211)에 노출되게 할 것이다.
따라서, 관심사인 실제 데이터가 인출되고 있는 동안에도, 사용자 인터페이스 컨트롤(210)은 임시 데이터로써 신속히 조성되고 채워질 수 있다. 디폴트 데이터 세트의 노출되는 부분은 요청된 데이터 세트의 궁극적으로 노출되는 부분과 동일한 유형의 것일 수 있다. 그러므로, 사용자 인터페이스 컨트롤은 사용자 인터페이스 요소를 쉽게 채울 수 있다.
도 4는 데이터 뷰 컴포넌트가 여러 요청이 있는 경우 최신의 요청된 데이터 세트만을 노출하는 방법(400)의 흐름도를 예시한다. 데이터 뷰 컴포넌트는 데이터 세트의 적어도 일부분을 액세스하기 위한 요청을 수신한다(행위(401)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 데이터 세트(251)의 적어도 일부분에 대해 디스플레이 로직 컴포넌트(211)로부터 요청을 수신한다.
데이터 뷰 컴포넌트는 이후 데이터 캐시에게서 데이터 세트를 요청한다(행위(402)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 데이터 캐시(240)로부터의 데이터 세트(251)에 바인딩할 것을 요청할 수 있다. 만약 데이터 세트(251)가 아직 데이터 캐시(240) 내에 있지 않다면, 데이터 로더(260)는 네트워크(270) 상에서 데이터 소스(280)로 웹 요청을 제출할 수 있다.
데이터 뷰 컴포넌트는 또한 사전의 데이터 뷰 요청에 대한 어떤 응답이든 이행하는 것(honoring)을 삼간다(refrain)(행위(403)). 예를 들면, 도 2를 참조하여, 데이터 뷰 컴포넌트(213)가 디스플레이 로직 컴포넌트(211)로부터 요청을 이전에 수신하여, 데이터 뷰 컴포넌트(213)가 데이터 캐시로부터의 데이터 세트(252)에 대한 요청을 제출하는 것을 초래하였다고 가정하자. 만약 데이터 뷰 컴포넌트(213)가 데이터 세트(251)에 대한 요청을 제출하는 것을 초래하는 응답을 데이터 뷰 컴포넌트(213)가 이후 수신하는 경우 경쟁 조건(race condition)이 수립된다. 데이터 뷰 컴포넌트는 제1 응답에 반응하는 것을 삼가는 것에 의해 이를 처분한다. 따라서, 만약 데이터 세트(252)가 바인딩이 준비되어 있다는 표시로써 데이터 캐시(240)가 회신하는 경우, 데이터 뷰 컴포넌트(213)는 그 응답을 무시하고 그냥 나중에 요청된 데이터 세트(251)가 바인딩이 준비되어 있다는 표시를 기다릴 것이다.
일단 나중에 요청된 데이터 세트가 바인딩이 준비되어 있다는 표시를 데이터 캐시로부터 데이터 뷰 컴포넌트가 수신하면(행위(404)), 데이터 뷰 컴포넌트는 그 요청된 데이터 세트에 바인딩한다(행위(405)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 요청된 데이터 세트(251)에 대한 참조(203)를 조성한다. 이것은 요청된 데이터가 디스플레이 로직 컴포넌트(211)에 노출되게 할 것이다.
방법(400)은 데이터 뷰 컴포넌트가 데이터 세트들을 요청한 순서와는 상이한 순서로 다양한 데이터 세트가 바인딩이 준비되어 있다는 표시로써 데이터 캐시(240)가 응답하는 경우에 특히 유용할 수 있다. 그러한 것은, 만약, 예컨대, 사전의 요청된 데이터 세트가 데이터 소스(280)로부터 인출되어야 하고, 제2의 요청된 데이터 세트가 데이터 캐시(240) 내에 이미 존재하는 경우에 일어날 수 있다. 그러한 것은 또한 만약 두 데이터 세트 모두가 데이터 소스(280)로부터 인출되어야 하나, 나중에 요청된 데이터 소스가 마침 먼저 회신되는 경우에 일어날 수 있다.
도 5는 데이터 뷰 컴포넌트가 하나의 데이터 세트로부터 다른 것으로 바인딩을 전환하는 방법(500)의 흐름도를 예시한다. 데이터 뷰 컴포넌트는 데이터 세트의 적어도 일부분을 액세스하기 위한 요청을 수신한다(행위(501)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 데이터 세트(251)의 적어도 일부분에 대해 디스플레이 로직 컴포넌트(211)로부터 요청을 수신한다.
처음에, 데이터 뷰 컴포넌트(213)는 아직 데이터 세트에 바인딩되어 있지 않고(판단 블록(502)에서 "아니요"), 따라서 데이터 뷰 컴포넌트는 참조를 생성하고 참조를 데이터 세트로 지향시킨다(행위(503)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 데이터 세트(251)에 대한 참조(203)를 조성한다. 이것은 방법(500)의 이 인스턴스(instance)를 완료한다.
그러나, 다음에, 데이터 뷰 컴포넌트는 데이터 세트의 적어도 일부분을 액세스하기 위한 다른 요청을 수신할 수 있다(행위(501)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 데이터 세트(252)의 적어도 일부분에 대해 디스플레이 로직 컴포넌트(211)로부터 요청을 수신한다.
이제, 데이터 뷰 컴포넌트(213)는 데이터 세트에 바인딩되고(판단 블록(502)에서 "예"), 따라서 데이터 뷰 컴포넌트는 새로운 데이터 세트를 나타내도록 참조를 전환한다(행위(504)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 새로운 데이터 세트(522)에 대한 참조(도시되지 않음)를 조성하고, 옛 데이터 세트(521)에 대한 참조(203)를 제거한다. 이것은 방법(500)의 이 제2 인스턴스를 완료한다.
그러므로, 방법(500)은 데이터 뷰 컴포넌트(213)에 의해 보유된 참조에 의해 가리켜지는 데이터 세트를 변경하기를 몇 번이든 반복할 수 있다. 이것은 데이터 뷰 컴포넌트를 재구성할 필요 없이 다 수행된다.
도 6은 일단 사용자 인터페이스 요소 디스플레이 로직 컴포넌트가 소멸하면 데이터 뷰 컴포넌트가 바인딩을 안전하게 해제하는 방법(600)의 흐름도를 예시한다. 데이터 뷰 컴포넌트는 데이터 세트의 적어도 일부분을 액세스하기 위한 요청을 수신한다(행위(601)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 데이터 세트(251)의 적어도 일부분에 대해 디스플레이 로직 컴포넌트(211)로부터 요청을 수신한다.
또한, 데이터 뷰 컴포넌트는 수명 참조 객체를 수신한다(행위(602)). 예를 들면, 수명 참조 객체는 (행위(601)에서) 요청 내의 파라미터로서 전달되었을 수 있다. 그러나, 수명 참조 객체는 아니면 요청의 결과로서 또한 수신될 수 있고 디스플레이 로직 컴포넌트로부터 수신될 수 있다. 하나의 실시예에서, 수명 참조 객체는 디스플레이 로직 컴포넌트가 소멸한 후 즉시 만료된다.
데이터 뷰 컴포넌트는 이후 (행위(601)의) 요청에 응답하여 데이터 세트에 바인딩한다(행위(603)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 데이터 세트(251)를 참조하고, 따라서 위로 디스플레이 로직 컴포넌트(211)에 데이터 세트(251)의 적어도 일부분을 노출한다.
만약 수명 참조 객체에 대응하는 디스플레이 로직 컴포넌트가 소멸한다면, 데이터 뷰 컴포넌트는 데이터 뷰 컴포넌트가 수명 참조 객체를 소유하는 덕분에 디스플레이 로직 컴포넌트가 더 이상 존재하지 않는다는 통지를 수신할 것이다(행위(604)). 예를 들면, 도 2에서, 만약 디스플레이 로직 컴포넌트(211)가 (가령, 사용자 인터페이스 컨트롤(210)에 의해 생성되고 채워진 사용자 인터페이스 요소를 사용자가 닫는 것(closing)으로 인해) 소멸한다면, 데이터 뷰 컴포넌트(213)는 디스플레이 로직 컴포넌트(211)가 소멸하였다는 통지를 받을 것이다. 예를 들면, 수명 참조 객체는 스스로 소멸하거나 만료될 수 있다.
따라서, 데이터 뷰 컴포넌트는 데이터 세트로의 바인딩을 해제할 수 있다(행위(605)). 예를 들면, 도 2에서, 데이터 뷰 컴포넌트(213)는 데이터 세트(251)에 대한 참조(203)를 해제할 수 있다. 도시되지 않았으나, 만약 데이터 세트(251)에 대한 추가 참조가 전혀 없으면, 데이터 세트(251)가 전체로서 해제될 수 있다(가령, 즉시 또는 어떤 시간의 비사용 후 퇴거를 초래함).
도 7은 도 2의 환경(200)의 특정 예인 환경(700)을 예시한다. 그러나, 여기서, 뷰(710)는 도 2의 사용자 인터페이스 컨트롤(210)의 일례로서 예시된다. 나아가, 뷰 모델(711)은 도 2의 디스플레이 로직 컴포넌트(211)의 일례로서 예시된다. 모델(712)은 도 2의 비즈니스 로직 컴포넌트(212)의 일례로서 예시된다. 끝으로, 데이터 뷰(713)는 도 2의 데이터 뷰 컴포넌트(213)의 일례로서 예시된다.
나아가, 도 2에서, 사용자 인터페이스 컨트롤(210), 디스플레이 로직 컴포넌트(211), 비즈니스 로직 컴포넌트(212) 및 데이터 뷰 컴포넌트(213)의 모음을 이루는 단 하나의 데이터 채널이 있다. 그러나, 도 7은 단일 데이터 캐시와 연관된 그러한 데이터 채널이 여럿 있을 수 있음을 보여준다. 예를 들면, 뷰(710), 뷰 모델(711), 모델(712) 및 데이터 뷰(713)는 뷰(710)의 제어 하에 사용자 인터페이스 요소를 채우기 위해서 데이터 캐시(740)를 사용하는 단일 데이터 채널이다. 도 7은 두 개의 추가적 데이터 채널을 예시한다. 제1 추가적 데이터 채널로서, 뷰(720), 뷰 모델(721), 모델(722) 및 데이터 뷰(713)는 뷰(720)의 제어 하에 사용자 인터페이스 요소를 채우기 위해서 데이터 캐시(740)를 사용한다. 제2 추가적 데이터 채널로서, 뷰(730), 뷰 모델(731), 모델(732) 및 데이터 뷰(733)는 뷰(730)의 제어 하에 사용자 인터페이스 요소를 채우기 위해서 데이터 캐시(740)를 사용한다. 각각의 데이터 채널은 도 2의 사용자 인터페이스 컨트롤(210), 디스플레이 로직 컴포넌트(211), 비즈니스 로직 컴포넌트(212) 및 데이터 뷰 컴포넌트(213)를 구성하는 원래의 데이터 채널에 대해 위에서 기술된 것과 동일하게 기능할 수 있다.
도 7은 마찬가지로 데이터 소스(780)를 네트워크(770) 상에서 액세스할 수 있는 제2 데이터 캐시(741)를 또한 예시한다. 데이터 캐시(741)는 마찬가지로 대응하는 데이터 로더를 사용하여 대응하는 데이터 채널(도시되지 않음)에 데이터 세트를 제공할 수 있다. 그러므로, 환경(700)은, 각각 0개 이상의 데이터 채널을 제공하는 임의의 개수의 데이터 캐시를 포함할 수 있다. 하나의 실시예에서, 각각의 애플리케이션 또는 애플리케이션 확장은 그 애플리케이션 또는 애플리케이션 확장에 전용인 하나 이상의 데이터 캐시를 생성할 수 있다.
그러므로, 본 문서 내에 기술된 원리는 요청된 데이터 세트가 이용가능할 때까지 디폴트 데이터 세트를 노출함으로써, 여러 요청이 있는 경우 최신의 요청된 데이터 세트만을 노출함으로써, 하나의 데이터 세트로부터 다른 것으로 바인딩을 신속히 전환함으로써, 그리고/또는 사용자 인터페이스 요소 디스플레이 로직 컴포넌트가 소멸하면 바인딩을 안전하게 해제함으로써 사용자 경험을 개선할 수 있는 데이터 뷰 컴포넌트를 제공한다.
본 발명은 그것의 사상 또는 필수적 특성으로부터 벗어나지 않고서 다른 특정 형태로 실체화될 수 있다. 기술된 실시예는 모든 점에서 단지 예시적인 것이며 제한적이지 않은 것으로서 간주되어야 한다. 따라서, 발명의 범주는 전술한 설명에 의해서가 아니라 부기된 청구항에 의해 나타내어진다. 청구항들의 균등의 의미 및 범위 내에 속하는 모든 변경은 그것들의 범주 내에 망라되어야 한다.

Claims (10)

  1. 컴퓨터 실행가능 명령어를 포함하는 메모리를 포함하는 컴퓨팅 시스템의 하나 이상의 프로세서에 의해 수행되는 컴퓨터 구현된(computer-implemented) 방법으로서,
    상기 컴퓨터 실행가능 명령어는 상기 하나 이상의 프로세서로 하여금 상기 컴퓨터 구현된 방법을 수행하게 하고, 상기 컴퓨터 구현된 방법은 사용자 경험을 개선하는 방식으로 사용자에 대한 요청된 데이터의 디스플레이를 제어하기 위해 사용되며, 상기 컴퓨터 구현된 방법은
    복수의 데이터 세트로 구성된 데이터 캐시(data cache)를 컴퓨팅 시스템 내에 저장하는 단계와,
    사용자 인터페이스(User Interface: UI) 컨트롤, 디스플레이 로직 컴포넌트 및 데이터 뷰 컴포넌트를 컴퓨팅 시스템 내에서 상기 하나 이상의 프로세서가 시작하는 단계와,
    상기 저장된 데이터 캐시의 특정한 데이터 세트에 액세스하기 위한 요청을 상기 데이터 뷰 컴포넌트에서 수신하는 단계와,
    상기 데이터 뷰 컴포넌트가,
    상기 데이터 캐시로부터의 상기 요청된 특정한 데이터 세트에 바인딩하기를 기다리는 동안, 상기 요청된 특정한 데이터 세트가 바인딩할 준비가 되고 이후 바인딩 후에 상기 데이터 캐시로부터 이용가능할 때까지 디폴트 데이터 세트(default data set)로 하여금 상기 UI 컨트롤에서 노출되게 하는 행동과,
    상기 데이터 캐시로부터의 상기 요청된 특정한 데이터 세트에 바인딩하기를 기다리는 동안, 상기 요청된 특정한 데이터 세트 후에 요청되는 제2 데이터 세트로 하여금 상기 요청된 특정한 데이터 세트 전에 상기 UI 컨트롤에서 노출되게 하는 행동과,
    상기 요청된 특정한 데이터 세트로부터 상이한 요청된 데이터 세트로 바인딩을 전환하는 행동과,
    상기 UI 컨트롤 내의 UI 요소를 닫는 것으로 인해 상기 디스플레이 로직 컴포넌트가 더 이상 작동하고 있지 않으면 상기 요청된 특정한 데이터 세트로의 바인딩을 해제하는 행동
    중 적어도 하나를 수행하는 단계를 포함하는,
    컴퓨터 구현된 방법.
  2. 제1항에 있어서,
    상기 데이터 캐시로부터의 상기 요청된 특정한 데이터 세트를 바인딩하기를 기다리는 동안, 상기 뷰 컴포넌트는 상기 요청된 특정한 데이터 세트가 바인딩할 준비가 되고 이후 바인딩 후에 상기 데이터 캐시로부터 이용가능할 때까지 디폴트 데이터 세트로 하여금 상기 UI 컨트롤에서 노출되게 하는 행동을 수행하고, 상기 디폴트 데이터 세트로 하여금 상기 UI 컨트롤에서 노출되게 하는 것은
    상기 데이터 뷰 컴포넌트가 상기 디폴트 데이터 세트로서의 역할을 하는 널 데이터 세트(null data set)를 상기 디스플레이 로직 컴포넌트에 입력하는 것과,
    상기 디스플레이 로직 컴포넌트가 디스플레이를 위해 상기 UI 컨트롤에 상기 널 데이터 세트를 입력하는 것과,
    상기 요청된 특정한 데이터 세트가 바인딩할 준비가 되어 있다는 표시를 상기 데이터 뷰 컴포넌트에서 수신하는 것과,
    상기 데이터 뷰 컴포넌트가 상기 요청된 특정한 데이터 세트를 바인딩하고, 포맷화되고(formatted) 이후에 디스플레이를 위해 상기 UI 디스플레이에 입력되도록 상기 요청된 특정한 데이터를 상기 디스플레이 로직 컴포넌트에 이후에 노출하는 것을 포함하는,
    컴퓨터 구현된 방법.
  3. 제1항에 있어서,
    상기 데이터 캐시로부터의 상기 요청된 특정한 데이터 세트를 바인딩하기를 기다리는 동안, 상기 뷰 컴포넌트는 상기 요청된 특정한 데이터 세트 후에 요청되는 제2 데이터 세트로 하여금 상기 요청된 특정한 데이터 세트 전에 상기 UI 컨트롤에서 노출되게 하는 행동을 수행하고, 상기 제2 데이터 세트로 하여금 노출되게 하는 것은
    상기 요청된 특정한 데이터 세트에 바인딩하기 위한 제1 요청을 상기 데이터 뷰 컴포넌트로부터 상기 데이터 캐시로 발행하는 것과,
    상기 데이터 뷰 컴포넌트가 상기 요청된 특정한 데이터 세트에 아직 바인딩되지 않은 동안, 상기 데이터 뷰 컴포넌트가 상기 제2 데이터 세트에 액세스하기 위한 요청을 수신하는 것과,
    상기 제2 데이터 세트에 바인딩하기 위한 제2 요청을 상기 데이터 뷰 컴포넌트로부터 상기 데이터 캐시로 발행하는 것과,
    상기 제2 데이터 세트에 바인딩하기 위한 상기 제2 요청을 발행한 후, 상기 데이터 뷰 컴포넌트가 상기 요청된 특정한 데이터 세트에 바인딩하기 위한 상기 제1 요청에 대한 응답을 이행하는 것을 삼가고 대신에 상기 제2 데이터 세트에 바인딩하는 것을 포함하는,
    컴퓨터 구현된 방법.
  4. 제3항에 있어서,
    상기 요청된 특정한 데이터 세트는 바인딩하기 위한 상기 제1 요청 시에 상기 데이터 캐시 내에 위치되지 않은,
    컴퓨터 구현된 방법.
  5. 제4항에 있어서,
    상기 제2 데이터 세트는 바인딩하기 위한 상기 제2 요청 시에 상기 데이터 캐시 내에 위치된,
    컴퓨터 구현된 방법.
  6. 제4항에 있어서,
    상기 제2 데이터 세트는 바인딩하기 위한 상기 제2 요청 시에 상기 데이터 캐시 내에 위치되지 않은,
    컴퓨터 구현된 방법.
  7. 제1항에 있어서,
    상기 뷰 컴포넌트는 상기 요청된 특정한 데이터 세트로부터 상이한 요청된 데이터 세트로 바인딩을 전환하는 행동을 수행하고, 바인딩을 전환하는 것은
    상기 데이터 뷰 컴포넌트가 상기 요청된 특정한 데이터 세트를 가리키는 참조(reference)를 생성하는 것과,
    상기 데이터 뷰 컴포넌트가 상기 요청된 특정한 데이터 세트를 바인딩하기 위해 상기 생성된 참조를 사용하는 것과,
    상기 데이터 뷰 컴포넌트가 상기 요청된 특정한 데이터 세트에 바인딩한 후, 제2 데이터 세트를 액세스하기 위한 제2 요청을 상기 데이터 뷰 컴포넌트에서 수신하는 것과,
    상기 생성된 참조가 상기 제2 데이터 세트를 참조하도록 상기 데이터 뷰 컴포넌트가 상기 생성된 참조를 이후에 전환하는 것과,
    상기 제2 데이터 세트에 바인딩하기 위해 상기 데이터 뷰 컴포넌트가 상기 생성된 참조를 이후에 사용하는 것에 의해 수행되는,
    컴퓨터 구현된 방법.
  8. 제1항에 있어서,
    상기 뷰 컴포넌트는 상기 UI 컨트롤 내의 UI 요소를 닫는 것으로 인해 상기 디스플레이 로직 컴포넌트가 더 이상 작동하고 있지 않으면 상기 요청된 특정한 데이터 세트로의 바인딩을 해제하는 행동을 수행하고, 상기 바인딩을 해제하는 것은
    상기 디스플레이 로직 컴포넌트로부터 수명 참조 객체(lifetime reference object)를 상기 데이터 뷰 컴포넌트에서 수신하는 것 - 상기 수명 참조 객체는 상기 특정한 데이터 세트에 대한 상기 요청 내의 파라미터로서 상기 데이터 뷰 컴포넌트에 전달됨 - 과,
    상기 데이터 뷰 컴포넌트가 상기 요청에 응답하여 상기 요청된 특정한 데이터 세트에 바인딩하는 것과,
    상기 데이터 뷰 컴포넌트가 상기 수명 참조 객체를 상기 데이터 뷰 컴포넌트가 소유하는 덕분에 상기 디스플레이 로직 컴포넌트가 더 이상 존재하지 않는다는 통지를 받는 것과,
    상기 데이터 뷰 컴포넌트가 상기 요청된 특정한 데이터 세트로의 상기 바인딩을 이후에 해제하는 것을 포함하는,
    컴퓨터 구현된 방법.
  9. 컴퓨터 실행가능 명령어를 포함하는 하나 이상의 저장 디바이스로 구성된 컴퓨터 프로그램 제품으로서, 상기 컴퓨터 실행가능 명령어는 컴퓨팅 시스템의 하나 이상의 프로세서로 하여금 사용자 경험을 개선하는 방식으로 사용자에 대한 요청된 데이터의 디스플레이를 제어하기 위해 사용되는 컴퓨터 구현된 방법을 수행하게 하고, 상기 컴퓨터 구현된 방법은
    복수의 데이터 세트로 구성된 데이터 캐시를 컴퓨팅 시스템 내에 저장하는 단계와,
    사용자 인터페이스(User Interface: UI) 컨트롤, 디스플레이 로직 컴포넌트 및 데이터 뷰 컴포넌트를 컴퓨팅 시스템 내에서 상기 하나 이상의 프로세서가 시작하는 단계와,
    상기 저장된 데이터 캐시의 특정한 데이터 세트에 액세스하기 위한 요청을 상기 데이터 뷰 컴포넌트에서 수신하는 단계와,
    상기 데이터 뷰 컴포넌트가,
    상기 데이터 캐시로부터의 상기 요청된 특정한 데이터 세트에 바인딩하기를 기다리는 동안, 상기 요청된 특정한 데이터 세트가 바인딩할 준비가 되고 이후 바인딩 후에 상기 데이터 캐시로부터 이용가능할 때까지 디폴트 데이터 세트로 하여금 상기 UI 컨트롤에서 노출되게 하는 행동과,
    상기 데이터 캐시로부터의 상기 요청된 특정한 데이터 세트에 바인딩하기를 기다리는 동안, 상기 요청된 특정한 데이터 세트 후에 요청되는 제2 데이터 세트로 하여금 상기 요청된 특정한 데이터 세트 전에 상기 UI 컨트롤에서 노출되게 하는 행동과,
    상기 요청된 특정한 데이터 세트로부터 상이한 요청된 데이터 세트로 바인딩을 전환하는 행동과,
    상기 UI 컨트롤 내의 UI 요소를 닫는 것으로 인해 상기 디스플레이 로직 컴포넌트가 더 이상 작동하고 있지 않으면 상기 요청된 특정한 데이터 세트로의 바인딩을 해제하는 행동
    중 적어도 하나를 수행하는 단계를 포함하는,
    컴퓨터 프로그램 제품.
  10. 컴퓨터 시스템으로서,
    하나 이상의 프로세서와,
    디스플레이와,
    상기 하나 이상의 프로세서로 하여금 사용자 경험을 개선하는 방식으로 사용자에 대한 요청된 데이터의 디스플레이를 제어하기 위해 사용되는 컴퓨터 구현된 방법을 수행하게 하는 컴퓨터 실행가능 명령어를 포함하는 시스템 메모리를 포함하고, 상기 컴퓨터 구현된 방법은
    복수의 데이터 세트로 구성된 데이터 캐시를 컴퓨팅 시스템 내에 저장하는 단계와,
    사용자 인터페이스(User Interface: UI) 컨트롤, 디스플레이 로직 컴포넌트 및 데이터 뷰 컴포넌트를 컴퓨팅 시스템 내에서 상기 하나 이상의 프로세서가 시작하는 단계와,
    상기 저장된 데이터 캐시의 특정한 데이터 세트에 액세스하기 위한 요청을 상기 데이터 뷰 컴포넌트에서 수신하는 단계와,
    상기 데이터 뷰 컴포넌트가,
    상기 데이터 캐시로부터의 상기 요청된 특정한 데이터 세트에 바인딩하기를 기다리는 동안, 상기 요청된 특정한 데이터 세트가 바인딩할 준비가 되고 이후 바인딩 후에 상기 데이터 캐시로부터 이용가능할 때까지 디폴트 데이터 세트로 하여금 상기 UI 컨트롤에서 노출되게 하는 행동과,
    상기 데이터 캐시로부터의 상기 요청된 특정한 데이터 세트에 바인딩하기를 기다리는 동안, 상기 요청된 특정한 데이터 세트 후에 요청되는 제2 데이터 세트로 하여금 상기 요청된 특정한 데이터 세트 전에 상기 UI 컨트롤에서 노출되게 하는 행동과,
    상기 요청된 특정한 데이터 세트로부터 상이한 요청된 데이터 세트로 바인딩을 전환하는 행동과,
    상기 UI 컨트롤 내의 UI 요소를 닫는 것으로 인해 상기 디스플레이 로직 컴포넌트가 더 이상 작동하고 있지 않으면 상기 요청된 특정한 데이터 세트로의 바인딩을 해제하는 행동
    중 적어도 하나를 수행하는 단계를 포함하는,
    컴퓨터 시스템.
KR1020167027338A 2014-04-02 2015-03-31 데이터 뷰 노출 메커니즘 KR20160141736A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201461974126P 2014-04-02 2014-04-02
US61/974,126 2014-04-02
US14/269,888 2014-05-05
US14/269,888 US20150286691A1 (en) 2014-04-02 2014-05-05 Data view exposure mechanisms
PCT/US2015/023450 WO2015153528A1 (en) 2014-04-02 2015-03-31 Data view exposure mechanisms

Publications (1)

Publication Number Publication Date
KR20160141736A true KR20160141736A (ko) 2016-12-09

Family

ID=54209927

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027338A KR20160141736A (ko) 2014-04-02 2015-03-31 데이터 뷰 노출 메커니즘

Country Status (5)

Country Link
US (1) US20150286691A1 (ko)
EP (1) EP3126968A1 (ko)
KR (1) KR20160141736A (ko)
CN (1) CN106164858A (ko)
WO (1) WO2015153528A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10185706B2 (en) * 2014-10-10 2019-01-22 Aktiebolaget Skf Generating web browser views for applications
US11200241B2 (en) 2017-11-22 2021-12-14 International Business Machines Corporation Search query enhancement with context analysis
CN108052365B (zh) * 2017-12-19 2021-04-27 深圳市四格互联信息技术有限公司 用户界面的组件生成方法及装置
CN109739491A (zh) * 2018-12-25 2019-05-10 北京金山安全软件有限公司 控件数据显示方法、装置、电子设备,及存储介质
JP7254196B2 (ja) * 2019-02-15 2023-04-07 テレフオンアクチーボラゲット エルエム エリクソン(パブル) グループコンテンツ配信の方法および装置
CN112578679B (zh) * 2019-09-30 2024-02-13 北京国双科技有限公司 控制系统及方法、存储介质及电子设备
CN111796577A (zh) * 2020-06-29 2020-10-20 中国第一汽车股份有限公司 一种数据指令处理方法、装置、车辆及存储介质

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060212842A1 (en) * 2005-03-15 2006-09-21 Microsoft Corporation Rich data-bound application
US8434021B2 (en) * 2005-11-30 2013-04-30 Microsoft Corporation Centralized user interface for displaying contextually driven business content and business related functionality
US7895571B2 (en) * 2007-01-25 2011-02-22 International Business Machines Corporation Method and apparatus for resolving client-side logic
US20090199112A1 (en) * 2008-02-04 2009-08-06 Deserranno Allen Simplified opc to wpf xaml binding method
US8099555B2 (en) * 2009-01-23 2012-01-17 Konica Minolta Laboratory U.S.A., Inc. Systems and methods for memory management on print devices
US8766984B2 (en) * 2010-08-20 2014-07-01 Qualcomm Incorporated Graphics rendering methods for satisfying minimum frame rate requirements
US8595640B2 (en) * 2010-12-02 2013-11-26 Microsoft Corporation Render transform based scrolling and panning for smooth effects
US8666997B2 (en) * 2010-12-08 2014-03-04 Microsoft Corporation Placeholders returned for data representation items
US8499122B2 (en) * 2011-11-21 2013-07-30 Microsoft Corporation Asynchronous data binding
US9417757B1 (en) * 2013-09-20 2016-08-16 Emc Corporation Scalable hierarchical user interface display

Also Published As

Publication number Publication date
EP3126968A1 (en) 2017-02-08
CN106164858A (zh) 2016-11-23
US20150286691A1 (en) 2015-10-08
WO2015153528A1 (en) 2015-10-08

Similar Documents

Publication Publication Date Title
KR20160141736A (ko) 데이터 뷰 노출 메커니즘
US9182975B2 (en) Automatic application updates
AU2013293535B2 (en) Providing access to a remote application via a web client
US8458727B2 (en) Asynchronous client to server updates
CN104995927B (zh) 用于构建和使用混合移动应用的系统和方法
CN105242962B (zh) 基于异构众核的轻量级线程快速触发方法
US9934007B2 (en) Method for operating tool in working environment and machine using such method
CN105229603B (zh) 控制对应用编程接口的运行时访问
KR101991537B1 (ko) 자율형 네트워크 스트리밍 기법
US10789111B2 (en) Message oriented middleware with integrated rules engine
CN104572293A (zh) 基于bs结构的医学影像阅片系统的实现方法
CN110832458A (zh) 个性化机器学习模型的隐身模式
EP2739097A2 (en) A mobile telecommunication device in a cellular-digital wireless telecommunication system and a method for operating thereof
JP5751711B2 (ja) コンテキスト・アウェアに分散処理可能な処理装置、方法、及びプログラム
JP7181992B2 (ja) ウェブ・アプリケーション実行のためのクライアント・アプリケーション
CN105074652B (zh) 用于向打印机远程提供应用功能的方法和计算机系统
US20170329622A1 (en) Shared virtual data structure of nested hypervisors
US8370862B1 (en) Communicating between software environments
US20160352858A1 (en) Plug-in cache
CN113050923A (zh) 前端接口数据模拟方法、装置及系统
US9785560B2 (en) Scene-isolated internet application
JP2017045144A (ja) 情報処理装置及びその制御方法
US20220229682A1 (en) System and method for notebook processing to handle job execution in cross-cloud environment
CN114035864A (zh) 接口处理方法、接口处理装置、电子设备和存储介质
US20170315823A1 (en) Distributed application based off of stateful desktop application