KR102052777B1 - 로컬 및 원격으로 저장된 전자 메시지의 혼합 프레젠테이션을 위한 시스템 및 방법 - Google Patents
로컬 및 원격으로 저장된 전자 메시지의 혼합 프레젠테이션을 위한 시스템 및 방법 Download PDFInfo
- Publication number
- KR102052777B1 KR102052777B1 KR1020147020077A KR20147020077A KR102052777B1 KR 102052777 B1 KR102052777 B1 KR 102052777B1 KR 1020147020077 A KR1020147020077 A KR 1020147020077A KR 20147020077 A KR20147020077 A KR 20147020077A KR 102052777 B1 KR102052777 B1 KR 102052777B1
- Authority
- KR
- South Korea
- Prior art keywords
- electronic
- electronic messages
- store
- local
- search
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 102
- 230000004044 response Effects 0.000 claims description 15
- 238000005096 rolling process Methods 0.000 claims description 14
- 230000003993 interaction Effects 0.000 claims description 12
- 230000003139 buffering effect Effects 0.000 claims 2
- 239000003795 chemical substances by application Substances 0.000 claims 1
- 230000008569 process Effects 0.000 description 28
- 238000012545 processing Methods 0.000 description 12
- 230000009471 action Effects 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 11
- 238000004590 computer program Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000012552 review Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/40—Business processes related to the transportation industry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/107—Computer-aided management of electronic mailing [e-mailing]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/234—Monitoring or handling of messages for tracking messages
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Economics (AREA)
- Marketing (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Tourism & Hospitality (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Information Transfer Between Computers (AREA)
Abstract
전자 메시징 클라이언트는 원격 스토어에서 이용 가능한 전자 메시지들의 서브셋의 복사본을 사용자 장치의 로컬 스토어에 캐싱한다. 사용자 장치가 온라인 상태에 있을 때, 클라이언트는 사용자가 로컬 스토어 캐싱된 전자 메시지들에 관한 정보는 물론, 원격 스토어에만 저장되어 있는 전자 메시지들에 관한 정보도 동시에 볼 수 있도록 전자 메시지들의 혼합 프레젠테이션을 제공한다. 또한 클라이언트는 전자 메시지들의 컨테이너에 관련된 혼합 상태를 사용자 장치의 사용자에게 프레젠테이션하여, 사용자가 로컬 스토어에 저장된 캐싱된 전자 메시지들의 검색은 물론, 원격 스토어에 저장된 전자 메시지들의 검색도 실행할 수 있게 한다.
Description
많은 최신 이메일 클라이언트들이 이메일 메시지 및 기타 데이터에 대한 빠른 오프라인 액세스를 위해 로컬 캐시를 제공한다. 이런 로컬 캐시는 이메일 서버에도 저장되어 있는 사용자의 메일함의 완전한 복사본을 포함할 수 있다. 지난 10년이 넘는 기간 동안, 메일함 저장 한도가 기하급수적으로 커져서, 지금은 크기가 수 기가바이트가 되었다. 대다수의 사용자들의 경우, 아주 오래된 데이터에 대한 오프라인 액세스를 제공할 필요가 거의 또는 전혀 없다. 또한, 메일함이 너무 커졌기 때문에, 이메일 서버로부터 메일함 데이터를 다운로드하기가 점점 더 힘들어진 것은 물론, 성능에 크게 영향을 미치지 않고 이런 데이터를 가지고 로컬에서 작업하기가 점점 어려워졌다. 또한, (많은 최신 모바일 장치의 경우에서처럼) 이메일 클라이언트가 설치된 장치가 제한된 스토리지 공간을 갖고 있다면, 로컬 캐시는 허용될 수 없는 크기의 이용 가능한 스토리지 공간을 사용할 수도 있다.
일부 모바일 이메일 클라이언트들은 이메일 서버에서 이용 가능한 사용자 이메일들의 서브셋만을 다운로드하여 로컬에 저장시킴으로써 전술한 문제를 다루려 한다. 이러한 서브셋은 롤링 시간 창(rolling time window)으로 정의될 수 있다. 예를 들어, 어떤 특정 시간에 지난 일주일 동안 수신한 이메일들만이 로컬 캐시에 유지될 수 있다. 특정 구현예에서, 시간 창의 크기가 고정될 수 있는 한편, 다른 구현예에서는, 사용자가 시간 창의 크기를 설정할 수 있다.
이런 모바일 이메일 클라이언트들이 가장 최근에 수신한 이메일들만을 다운로드 함으로써 로컬 캐시의 스토리지 필요량을 제한할 수는 있지만, 이들 이메일 클라이언트는 이메일 서버에만 존재하는 오래된 이메일 메시지들의 상태에 대한 지원성(affordance)이나 임의의 정보를 사용자에게 제공하지는 못한다. 일반적으로, (설정 가능한 시간 창을 지원하는 구현예에서) 시간 창을 확대시키거나, 이런 오래된 이메일에 대한 검색을 실행하거나, 또는 점차 더 많은 항목들을 다운로드 함으로써만 이런 오래된 이메일 메시지들에 액세스할 수 있다. 각각의 경우에, 오래된 이메일들의 복사본이 로컬 캐시에 저장되므로, 사용자의 모바일 장치의 추가 저장 공간을 사용하게 된다.
본 명세서에 포함되어 있고 본 명세서의 일부분을 형성하는 첨부 도면은 본 발명의 실시예를 설명하기 위한 것이고, 또한 그 상세한 설명과 함께 본 발명의 원리를 설명하고, 당업자(들)가 본 발명을 구성하고 사용할 수 있게 하기 위해 제공되었다.
도 1은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 프레젠테이션을 제공하기 위한 예시적인 시스템의 블록도이다.
도 2는 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들을 혼합 방식으로 프레젠테이션하는 데 사용될 수 있는 디스플레이 영역을 도시하는 블록도이다.
도 3은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 프레젠테이션을 제공하는 방법의 순서도를 도시한다.
도 4는 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 컨테이너와 관련된 혼합 상태를 프레젠테이션하는 방법의 순서도를 도시한다.
도 5는 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 컨테이너와 관련된 혼합 상태를 프레젠테이션하는 또 다른 방법의 순서도를 도시한다.
도 6은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 검색을 실행하는 방법의 순서도를 도시한다.
도 7은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 검색을 실행하는 또 다른 방법의 순서도를 도시한다.
도 8은 다양한 실시예를 구현하는 데 사용될 수 있는 예시적인 프로세서-기반 시스템의 블록도이다.
본 발명의 특징 및 이점은 그 전체에 걸쳐 동일한 도면 부호가 대응 구성 요소를 식별하는 도면과 함께 이하에 제시된 상세한 설명을 숙지함으로써 더욱 명확해질 것이다. 도면에서, 동일한 도면 부호는 일반적으로 동일한, 기능적으로 유사한 및/또는 구조적으로 유사한 구성 요소를 나타낸다. 구성 요소가 처음 등장하는 도면은 대응 도면 부호의 가장 왼쪽의 숫자(들)로 표시된다.
도 1은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 프레젠테이션을 제공하기 위한 예시적인 시스템의 블록도이다.
도 2는 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들을 혼합 방식으로 프레젠테이션하는 데 사용될 수 있는 디스플레이 영역을 도시하는 블록도이다.
도 3은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 프레젠테이션을 제공하는 방법의 순서도를 도시한다.
도 4는 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 컨테이너와 관련된 혼합 상태를 프레젠테이션하는 방법의 순서도를 도시한다.
도 5는 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 컨테이너와 관련된 혼합 상태를 프레젠테이션하는 또 다른 방법의 순서도를 도시한다.
도 6은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 검색을 실행하는 방법의 순서도를 도시한다.
도 7은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 검색을 실행하는 또 다른 방법의 순서도를 도시한다.
도 8은 다양한 실시예를 구현하는 데 사용될 수 있는 예시적인 프로세서-기반 시스템의 블록도이다.
본 발명의 특징 및 이점은 그 전체에 걸쳐 동일한 도면 부호가 대응 구성 요소를 식별하는 도면과 함께 이하에 제시된 상세한 설명을 숙지함으로써 더욱 명확해질 것이다. 도면에서, 동일한 도면 부호는 일반적으로 동일한, 기능적으로 유사한 및/또는 구조적으로 유사한 구성 요소를 나타낸다. 구성 요소가 처음 등장하는 도면은 대응 도면 부호의 가장 왼쪽의 숫자(들)로 표시된다.
Ⅰ. 서문
다음의 상세한 설명은 본 발명의 예시적인 실시예를 도시하는 첨부 도면을 참조한다. 한편, 본 발명의 범위는 이들 실시예에 국한되지 않으며, 첨부된 특허청구범위에 의해 정의된다. 따라서, 설명된 실시예의 수정된 버전과 같이, 첨부 도면에 도시되지 않은 실시예도 본 발명에 포함될 수 있다.
본 명세서에서 "일 실시예(one embodiment)", "일 실시예(an embodiment)", "예시적인 일 실시예(an example embodiment)" 등의 언급은 기술된 실시예가 특정 특징, 구조, 또는 특성을 포함할 수 있지만, 모든 실시예가 상기 특정 특징, 구조, 또는 특성을 반드시 포함하는 것은 아닐 수 있음을 나타낸다. 나아가, 이러한 구문들이 반드시 동일한 실시예를 지칭하는 것도 아니다. 게다가, 특정 특징, 구조, 또는 특성이 일 실시예와 관련하여 기술될 때, 명시적 기재의 존재 여부와 무관하게, 당업자(들)의 지식 내에서 이러한 특징, 구조, 또는 특성이 또 다른 실시예와 관련하여 사용될 수 있음을 알 것이다.
본원에 기술된 실시예에서는 원격 스토어에서 이용 가능한 전자 메시지들의 서브셋의 복사본을 사용자 장치의 로컬 스토어에 다운로드한다. 이를 통해 사용자 장치의 사용자는 사용자 장치가 오프라인 상태에 있을 때에도 자신의 전자 메시지들의 서브셋에 액세스할 수 있게 된다. 사용자 장치가 온라인 상태에 있을 때, 본원에 기술된 실시예에서는 사용자가 로컬 스토어 캐싱된 전자 메시지들에 관한 정보는 물론, 원격 스토어에만 저장되어 있는 전자 메시지들에 관한 정보도 동시에 볼 수 있도록 전자 메시지들의 혼합 프레젠테이션을 제공한다. 이런 전자 메시지들에 관한 정보는 사용자에게 매끄럽게 프레젠테이션되어, 이런 전자 메시지들에 관한 정보 및 컨텐츠가 다른 스토어들로부터 얻어지더라도, 사용자는 모든 전자 메시지들이 통합된 단일 저장소의 일부라는 인상을 받게 된다. 또한, 사용자 장치가 온라인 상태에 있을 때, 이렇게 원격-저장된 전자 메시지들을 로컬 스토어에 복사할 필요 없이 사용자는 원격-저장된 전자 메시지들에 관한 정보 및/또는 전자 메시지들의 컨텐츠를 볼 수 있다.
본원에 기술된 실시예에서 원격 스토어에서 이용 가능한 사용자의 전자 메시지들의 서브셋만을 다운로드하여 로컬에 저장하기 때문에, 이들 실시예는 전자 메시지를 다운로드하기 위해 필요한 네트워크 대역폭의 크기, 로컬-저장된 전자 메시지와 원격 스토어를 동기화하기 위해 필요한 처리 능력량, 및 로컬 스토어에서 사용되는 저장 공간의 크기를 줄이게 된다.
나아가, 앞서의 배경 기술에서 논의한 대로, 종래의 전자 메시징 클라이언트는 원격 스토어에만 존재하는 전자 메시지들에 관한 정보 또는 그 메시지들에 대한 액세스를 사용자에게 제공하지 않으므로, 본원에 기술된 실시예에서는 사용자의 원격-저장된 전자 메시지들의 서브셋만을 다운로드하여 로컬에 저장하는 종래의 전자 메시징 클라이언트들에 대한 개선을 보여준다. 정확히 말하면, 원격 스토어에만 존재하는 전자 메시지들에 대한 액세스를 얻기 위해, 사용자가 어느 전자 메시지가 로컬에 캐싱되어 있는지를 결정하기 위해 사용되는 시간 창을 확대시키거나, 이런 오래된 이메일에 대한 검색을 실행하거나, 또는 점차 더 많은 항목들을 다운로드 하도록 이런 종래의 전자 메시징 클라이언트가 요구할 수 있다. 각각의 경우에, 원격-저장된 전자 메시지를 로컬 스토어에 복사함으로써만 이들 메시지를 사용자 장치에서 볼 수 있게 되므로, 저장 공간을 사용하게 된다. 그러나, 앞서 언급한 대로, 본원에 기술된 실시예에서는 이렇게 원격-저장된 전자 메시지들을 로컬 스토어에 다운로드할 필요 없이 사용자가 원격-저장된 전자 메시지들에 관한 정보 및/또는 전자 메시지들의 컨텐츠를 볼 수 있게 된다.
본원에 기술된 실시예에서는, 컨테이너에 저장된 전자 메시지들의 일부가 로컬 스토어에 캐싱되어 있고 컨테이너에 저장된 전자 메시지들의 일부가 오직 원격 스토어에서만 이용 가능한 시나리오에서 전자 메시지들의 컨테이너에 관련된 혼합 상태를 사용자 장치의 사용자에게 프레젠테이션할 수 있다. 혼합 상태는, 예를 들어, 특정 상태(예컨대, 컨테이너에 포함됨 또는 불포함됨, 읽음 또는 읽지 않음, 플래깅됨 또는 플래깅되지 않음(unflagged) 등)를 갖는 컨테이너에서의 전자 메시지들의 개수를 설명하는 아이템 카운트(item count)를 포함할 수 있다.
일반적으로 말해서, 혼합 상태가 컨테이너에 대한 아이템 카운트를 포함하는 실시예에서는, 로컬 아이템 카운트 및 델타 크기(delta amount)를 모두 합함으로써 아이템 카운트를 결정할 수 있다. 로컬 아이템 카운트는 컨테이너에 포함되어 있고 특정 상태를 갖고 있는 사용자 장치의 로컬 스토어에 저장된 전자 메시지들의 개수를 나타낸다. 델타 크기는 원격 아이템 카운트와 로컬 아이템 카운트의 마지막으로 알려진 차이를 나타내며, 원격 아이템 카운트는 컨테이너에 포함되어 있고 특정 상태를 갖고 있는 원격 스토어에 저장된 전자 메시지들의 개수를 나타낸다. 이런 방식으로 컨테이너에 대한 아이템 카운트를 결정함으로써, 본원에 기술된 실시예에서는 사용자 장치가 오프라인 상태에 있는 동안 사용자가 단지 로컬 아이템 카운트만을 변경하는 행동을 취할 때에도 전체 컨테이너에 대해 업데이트된 아이템 카운트를 사용자에게 프레젠테이션할 수 있게 된다. 나아가, 이런 방식으로 컨테이너에 대한 아이템 카운트를 결정함으로써, 본원에 기술된 실시예는 동기화 과정 동안 전체 컨테이너에 대해 업데이트된 아이템 카운트를 사용자에게 프레젠테이션할 수 있게 되고, 이렇게 업데이트된 아이템 카운트는 이 동기화 과정으로 인한 로컬 아이템 카운트에 대한 변경을 반영한다.
추가적으로, 본원에 기술된 실시예에서는 사용자 장치의 사용자가 사용자 장치의 로컬 스토어에 저장된 캐싱된 전자 메시지들의 검색은 물론, 사용자 장치가 전자 메시징 서버에 연결되어 있다고 결정되었을 때 전자 메시징 서버에 액세스 가능한 원격 스토어에 저장된 전자 메시지들의 검색도 실행할 수 있다. 로컬 스토어 및 원격 스토어에 대한 검색으로부터 얻은 검색 결과는 동일한 GUI에 프레젠테이션될 수 있다. 사용자가 검색 결과에서 확인되고 로컬 스토어에 캐싱된 전자 메시지의 컨텐츠를 보여달라고 요청할 때, 전자 메시지의 컨텐츠는 로컬 스토어로부터 얻게 된다. 사용자가 검색 결과에서 확인되고 원격 스토어에서만 이용 가능한 전자 메시지의 컨텐츠를 보여달라고 요청할 때, 원격 스토어부터 전자 메시지의 컨텐츠를 얻지만 이는 로컬 스토어에 캐싱되어 있지 않을 것이다.
Ⅱ. 전자 메시지들의 혼합 프레젠테이션을 위한 예시적인 시스템
도 1은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 프레젠테이션을 제공하기 위한 예시적인 시스템(100)의 블록도이다. 본원에서 사용될 때, "전자 메시지"라는 용어는 전자 형태(즉, 신호)로 전송될 수 있는 임의의 유형의 메시지 또는 정보 아이템을 대체적으로 나타내기 위한 것이다. 전자 메시지들의 예로 이메일 메시지, 텍스트 메시지, 마이크로 블로그 포스트, 캘린더 입력, 태스크, 노트, 연락처 등을 포함하며, 그러나 이에 제한되지는 않는다.
도 1에 도시된 바와 같이, 시스템(100)은 네트워크(104)를 통해 통신 가능하게 연결될 수 있는 적어도 하나의 전자 메시징 서버(102)와 적어도 하나의 사용자 장치(106)를 포함한다.
전자 메시징 서버(102)는 다른 전자 메시징 서버들을 포함하는 다른 다양한 엔티티들과 전자 통신을 송수신하도록 구성된 프로세서-기반 전자 장치를 나타내기 위한 것이다. 또한, 전자 메시징 서버(102)는, 사용자들이 전자 메시징 서버(102)에 의해 수신된 전자 메시지들에 액세스하고 전자 메시징 서버(102)를 통해 다른 사용자 장치들로 전자 메시지들을 전송할 수 있도록 하기 위해, (사용자 장치(106)와 같은) 사용자 장치들에 설치된 전자 메시징 클라이언트들과 인터랙션하도록 구성된다. 전자 메시징 서버에 의해 송수신된 전자 메시지들의 복사본이 원격 스토어(132)에 저장될 수 있다. 원격 스토어(132)는 전자 메시지들의 복사본을 저장하기에 적합한 임의의 스토리지 장치 또는 시스템을 대체적으로 나타내기 위한 것이다.
일 실시예에서, 전자 메시징 서버(102)는 복수의 사용자들 각각에 대한 별개의 전자 통신 저장소를 관리하고, 이런 각각의 저장소는 원격 스토어(132)에 저장될 수 있다. 복수의 사용자들 각각은 적절한 전자 메시징 클라이언트를 사용하여 전자 메시징 서버(102)와 인터랙션함으로써 자신의 저장소의 적어도 일부분에 액세스할 수 있다. 전자 통신이 이메일을 포함하는 실시예에서, 이런 저장소는 사용자 이메일 메일함을 포함할 수 있다. 종래에 알려진 바와 같이, 사용자 이메일 메일함은 임의의 수의 서브-메일함을 더 포함할 수 있다.
네트워크(104)는 전자 메시징 서버(102) 및 사용자 장치(106)와 같은 전자 장치들 간의 통신을 용이하게 하기에 적합한 임의의 유형의 네트워크 또는 네트워크 조합을 나타내기 위한 것이다. 네트워크(104)는, 예를 들어 그러나 제한 없이, 광역 통신망, 근거리 통신망, 전용망, 공중 통신망, 패킷망, 회선 교환망, 유선망, 및/또는 무선망을 포함할 수 있다.
사용자 장치(106)는 설치된 하나 이상의 소프트웨어 컴포넌트를 실행할 수 있는 프로세서-기반 전자 장치를 나타내기 위한 것이다. 단지 예를 들면 그러나 제한 없이, 사용자 장치(106)는 개인용 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 스마트 TV, 게임 콘솔, 개인용 미디어 플레이어, PDA, 내장형 기기 등을 포함할 수 있다.
도 1에 도시된 바와 같이, 사용자 장치(106)는 그에 설치된 전자 메시징 클라이언트(110)를 포함한다. 전자 메시징 클라이언트(110)는, 사용자 장치(106)에 의해 실행될 때, 사용자가 전자 메시지들을 작성, 송신, 수신, 검토, 체계화 및 관리할 수 있게 하기 위해 전자 메시징 서버(102)와 인터랙션하는 소프트웨어를 포함한다. 전자 메시지들이 이메일 메시지를 포함하는 실시예에서, 전자 메시징 클라이언트(110)는 워싱턴 주 레드몬드에 있는 마이크로소프트 코포레이션이 출시한 마이크로소프트 아웃룩 버전과 같은 이메일 클라이언트를 포함할 수 있다. 그러나, 본 예시는 제한하기 위한 것은 아니다.
사용자 장치(106)는 설치된 소프트웨어 컴포넌트들이 사용자가 보도록 그래픽 컨텐츠를 렌더링할 수 있는 디스플레이(112)도 포함한다. 예를 들어, 전자 메시징 클라이언트(110)는 그래픽 사용자 인터페이스(GUI)(132)를 디스플레이(112)에 렌더링하도록 구성된다. GUI(132)는 사용자가 전자 메시징 클라이언트(110)의 다양한 기능 및 특징을 불러올 수 있는 수단을 포함한다.
사용자 장치(106)는 로컬 스토어(114)를 더 포함하고, 로컬 스토어(114)는 본원에서 로컬 캐시라고도 할 수 있다. 로컬 스토어(114)는 사용자 장치(106)에 전자 메시지를 저장하기에 적합한 임의의 유형의 스토리지 장치 또는 시스템을 대체적으로 나타내기 위한 것이다. 전자 메시징 클라이언트(110)는 원격 스토어(132)에서 전자 메시징 클라이언트(110)가 이용할 수 있는 전자 메시지들의 복사본을 얻어서 이들 복사본을 로컬 스토어(114)에 저장하기 위해서, 네트워크(104)를 통해 전자 메시징 서버(102)와 주기적으로 인터랙션하도록 구성된다. 예를 들어, 전자 메시지가 이메일을 포함하는 실시예에서, 전자 메시징 클라이언트(100)는 원격 스토어(132)에 저장된 사용자 메일함으로부터 이메일들의 복사본을 얻어서 이렇게 복사된 이메일을 로컬 스토어(114)에 저장하기 위해, 네트워크(104)를 통해 전자 메시징 서버(102)와 주기적으로 인터랙션할 수 있다. 전자 메시지의 복사본이 로컬 스토어(114)에 저장되면, 사용자 장치(106)가 전자 메시징 서버(102)에 연결될 수 없을 때조차 전자 메시징 클라이언트(110)는 사용자 장치(106)의 사용자가 전자 메시지 및 그 관련 정보에 액세스 가능하게 할 수 있다.
일 실시예에서, 원격 스토어(132)에서 전자 메시징 클라이언트(110)가 이용 가능한 전자 메시지들의 서브셋만이 로컬 스토어(114)에서의 저장을 위해 다운로드될 수 있도록 전자 메시징 클라이언트(110) 및/또는 전자 메시징 서버(102)가 구성된다. 예를 들어, 전자 메시징 서버(104)가 이메일 서버를 포함하는 실시예에서, 원격 스토어(132)는 사용자의 이메일 메일함의 완전한 복사본을 저장하고, 전자 메시징 클라이언트(110)는 그 메일함의 이메일 메시지들의 서브셋만의 복사본을 주기적으로 다운로드하여 로컬에 저장하도록 동작할 수 있다.
어떤 전자 메시지들의 서브셋이 다운로드되어 로컬 스토어(114)에 저장될지를 결정하기 위해 다양한 접근 방법을 사용할 수 있다. 일 실시예에서, 롤링 시간 창(본원에서 "동기화 창"이라고도 함)이 이용된다. 이런 접근 방법에 따르면, 롤링 시간 창 내에서 수신된 전자 메시지들만이 다운로드되어 로컬 스토어(114)에 저장된다. 시간 창은 시간 상 앞으로 이동하기 때문에(예컨대, 지난 7일, 지난 3개월 등) "롤링"이라고 한다. 시간 창이 이동하므로, 더 이상 시간 창 내에 있지 않은 전자 메시지들은 "오래되어" 로컬 스토어(114)에서 제거된다. 시간 창을 언제로 이동할지를 결정하기 위해 다양한 시간 분해도(temporal resolution)를 사용할 수 있다. 예를 들어, 일 실시예에서, 시간 분해도는 1일이다.
구현예에 따라서, 사용자가 롤링 시간 창의 길이를 설정하거나 또는 설정할 수 없다. 예를 들어, 일 실시예에서, 사용자는 전자 메시징 클라이언트(110)와 인터랙션하여 각기 다른 길이를 갖는 사전 정의된 복수의 롤링 시간 창 중에서 어느 하나를 선택할 수 있다. 구체적인 구현예로, 사용자는 1-개월, 3-개월, 6-개월 및 12-개월 시간 창 중에서 선택할 수 있다. 특정 구현예에서, 사용자는 시간 창을 사용하지 않기로 선택할 수도 있고, 이 경우에 원격 스토어(132)에 저장된 모든 전자 메시지들의 복사본이 다운로드되어 로컬 스토어(114)에 저장될 것이다. 그러나, 이 동작 모드가 전자 메시지들의 혼합 프레젠테이션을 다루는 본원에 설명된 실시예와 반드시 밀접한 관련이 있는 것은 아니다.
앞서 제시된 바와 같은 롤링 시간 창의 설명은, 다운로드하여 로컬 스토어(114)에서의 저장을 위해 원격 스토어(132)에서 전자 메시지들의 서브셋을 선택할 수 있는 단지 하나의 방법을 나타내는 것임을 알 것이다. 다른 방법들이 사용될 수도 있다. 또한, 사용된 방법은 전자 메시지의 유형에 따라 달라질 수 있다(예컨대, 전자 메시지가 캘린더 데이터를 나타내면, 롤링 시간 창이 사용되지 않을 수 있다).
앞서 논의한 바와 같이, 전자 메시징 클라이언트(110)가 원격 스토어(132)에서 이용 가능한 사용자의 전자 메시지들 중 적어도 일부를 다운로드하여 로컬 스토어(114)에 저장하므로, 사용자 장치(106)가 전자 메시징 서버(102)에 연결되지 못할 때에도, 사용자는 전자 메시징 클라이언트(110)를 통해 로컬 스토어(114)에 저장된 임의의 전자 메시지에 관한 정보를 얻고 그 컨텐츠를 검토할 수 있다. 나아가, 전자 메시징 클라이언트(110)가 원격 스토어(132)에서 이용 가능한 사용자의 전자 메시지들의 서브셋만을 다운로드하여 로컬 스토어(114)에 저장하므로, 전자 메시징 클라이언트(110)는 전자 메시지를 다운로드하기 위해 네트워크(104)에서 필요로 하는 대역폭의 크기, 로컬-저장된 전자 메시지와 원격 스토어(132)를 동기화하기 위해 필요한 사용자 장치(106)의 처리 능력량, 및 원격 스토어(132)에서 이용 가능한 사용자의 전자 메시지 전부가 로컬 스토어(114)에 복사되는 구현예와 비교하여 로컬 스토어(114)에서 사용되는 저장 공간의 크기를 줄일 수 있다.
또한 도 1에 도시된 바와 같이, 전자 메시징 클라이언트(110)는 혼합 프레젠테이션 논리(122), 혼합 상태 논리(124) 및 혼합 검색 논리(126)를 포함한다. 일 실시예에서, 이들 컴포넌트 각각은 전자 메시징 클라이언트(110)에 의해 작동되거나 또는 전자 메시징 클라이언트(110)의 일부를 형성하는 소프트웨어 모듈을 포함한다.
혼합 프레젠테이션 논리(122)는 사용자 장치(106)가 언제 전자 메시징 서버(102)에 연결되는지를 결정한다. 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있다는 결정에 대한 응답으로, 혼합 프레젠테이션 논리(122)는 로컬 스토어(114)에 캐싱된 전자 메시지들에 관한 정보는 물론, 원격 스토어(132)에만 저장되어 있는 전자 메시지들에 관한 정보도 사용자가 동시에 볼 수 있도록 GUI(132)를 통해 전자 메시지들의 혼합 프레젠테이션을 제공하도록 동작한다. 이런 전자 메시지들에 관한 정보는 사용자에게 매끄럽게 프레젠테이션되어, 이런 전자 메시지들에 관한 정보 및 컨텐츠가 다른 스토어들로부터 얻어지더라도, 사용자는 모든 전자 메시지들이 통합된 단일 저장소의 일부라는 인상을 받게 된다. 또한, 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있을 때, 이렇게 원격-저장된 전자 메시지들을 로컬 스토어(114)에 복사할 필요 없이 사용자가 원격 스토어(132)에 저장된 전자 메시지들에 관한 정보 및/또는 전자 메시지들의 컨텐츠를 볼 수 있도록 혼합 프레젠테이션 논리(122)가 동작한다. 혼합 프레젠테이션 논리(122)의 동작 방식에 관한 추가 세부 사항은 아래의 섹션 II.A에서 제공될 것이다.
혼합 상태 논리(124)는, 컨테이너에 저장된 전자 메시지들의 일부가 로컬 스토어(114)에 캐싱되어 있고 컨테이너에 저장된 전자 메시지들의 일부가 오직 원격 스토어(132)에서만 이용 가능한 시나리오에서, 전자 메시지들의 컨테이너에 관련된 혼합 상태를 사용자 장치(106)의 사용자에게 프레젠테이션하도록 동작한다. 혼합 상태는, 예를 들어, 특정 상태(예컨대, 컨테이너에 포함됨 또는 불포함됨, 읽음 또는 읽지 않음, 플래깅됨 또는 플래깅되지 않음 등)를 갖는 컨테이너에서의 전자 메시지들의 개수를 설명하는 아이템 카운트를 포함할 수 있다.
일반적으로 말하면, 혼합 상태가 컨테이너에 대한 아이템 카운트를 포함하는 실시예에서, 혼합 상태 논리(124)는 로컬 아이템 카운트 및 델타 크기(delta amount)를 모두 합함으로써 아이템 카운트를 결정할 수 있다. 로컬 아이템 카운트는 컨테이너에 포함되어 있고 특정 상태를 갖고 있는 로컬 스토어(114)에 저장된 전자 메시지들의 개수를 나타낸다. 델타 크기는 원격 아이템 카운트와 로컬 아이템 카운트의 마지막으로 알려진 차이를 나타내며, 원격 아이템 카운트는 컨테이너에 포함되어 있고 특정 상태를 갖고 있는 원격 스토어(132)에 저장된 전자 메시지들의 개수를 나타낸다. 이런 방식으로 컨테이너에 대한 아이템 카운트를 결정함으로써, 사용자 장치(106)가 오프라인 상태에 있는 동안 사용자가 단지 로컬 아이템 카운트만을 변경하는 행동을 취할 때에도 혼합 상태 논리(124)는 전체 컨테이너에 대해 업데이트된 아이템 카운트를 사용자에게 프레젠테이션할 수 있게 된다. 나아가, 이런 방식으로 컨테이너에 대한 아이템 카운트를 결정함으로써, 혼합 상태 논리(124)는 동기화 과정 동안 전체 컨테이너에 대해 업데이트된 아이템 카운트를 사용자에게 프레젠테이션할 수 있게 되고, 이렇게 업데이트된 아이템 카운트는 이 동기화 과정으로 인한 로컬 아이템 카운트에 대한 변경을 반영한다. 혼합 상태 논리(124)의 동작 방식에 관한 추가 세부 사항은 아래의 섹션 II.B에서 제공될 것이다.
혼합 검색 논리(126)는, 사용자 장치(106)의 사용자가 로컬 스토어(114)에 저장된 캐싱된 전자 메시지들의 검색은 물론, 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있다고 결정되었을 때, 원격 스토어(132)에 저장된 전자 메시지들의 검색도 실행할 수 있게 한다. 로컬 스토어(114) 및 원격 스토어(132)에 대한 검색으로부터 얻은 검색 결과 모두 GUI(132)에 프레젠테이션될 수 있다. 사용자가 검색 결과에서 확인되고 로컬 스토어(114)에 캐싱된 전자 메시지의 컨텐츠를 보여달라고 요청할 때, 혼합 검색 논리(126)는 로컬 스토어(114)로부터 전자 메시지의 컨텐츠를 얻을 것이다. 사용자가 검색 결과에서 확인되고 원격 스토어(132)에서만 이용 가능한 전자 메시지의 컨텐츠를 보여달라고 요청할 때, 혼합 검색 논리(126)는 전자 메시징 서버(102)와의 인터랙션을 통해 원격 스토어(132)로부터 전자 메시지의 컨텐츠를 얻지만 그 컨텐츠를 로컬 스토어(114)에 캐싱하지는 않을 것이다. 혼합 상태 논리(126)의 동작 방식에 관한 추가 세부 사항은 아래의 섹션 II.C에서 제공될 것이다.
A. 예시적인 혼합 프레젠테이션 기법
도 2는 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있다고 결정되었을 때 혼합 프레젠테이션 논리(122)가 GUI(312)를 통해 전자 메시지들의 혼합 프레젠테이션을 제공하는 방식을 설명하기 위한 블록도(200)이다.
도 2에서, 혼합 프레젠테이션 논리(122)가 관리하는 GUI(132)의 디스플레이 영역(202)이 일반적으로 표현된다. 디스플레이 영역(202)은, 예를 들어, 사용자의 전자 메시지들에 관한 정보가 프레젠테이션되는 GUI(132) 내의 창 또는 보기면(viewing pane)을 포함할 수 있다. 이러한 정보는 대체적으로 전자 메시지에 관한 임의의 정보 아이템을 포함할 수 있다. 예를 들어, 전자 메시지가 이메일 메시지를 포함하는 실시예에서, 이러한 정보는 이메일 메시지의 보낸 사람, 이메일 메시지의 제목, 이메일 메시지가 전송된 날짜 및/또는 시간, 이메일 메시지를 수신한 날짜 및/또는 시간, 이메일 메시지에 관련된 상태 정보(예컨대, 읽음, 읽지 않음, 플래깅됨, 플래깅되지 않음) 등을 포함하지만, 그러나 이에 제한되지는 않는다.
디스플레이 영역(202) 내에 디스플레이되는 전자 메시지들에 관한 정보는 구현예에 따라 다양한 방식으로 체계화될 수 있다. 예를 들어, 이런 정보는 표 또는 목록의 형태로 프레젠테이션될 수 있고, 각각의 전자 메시지에 관한 정보는 표의 대응 행으로 또는 목록의 대응 아이템으로써 디스플레이될 수 있다. 다른 구현예에 따르면, 전자 메시지들에 관한 정보가 대응 전자 메시지들을 표현하는 아이콘에 연계되어 프레젠테이션될 수 있다. 또 다른 방식의 프레젠테이션이 사용될 수 있다.
하나 이상의 시스템-정의 및/또는 사용자-정의 기준에 따라 전자 메시지에 관한 정보를 소팅하거나 체계화시킬 수 있다. 예를 들어, 전자 메시지의 수신 날짜 및 시간에 기반하여 전자 메시지에 관한 정보를 소팅할 수 있다. 전자 메시지가 목록으로 프레젠테이션되는 실시예에서는, 이러한 소팅 기준의 사용으로 인해 가장 최근에 수신된 전자 메시지들에 관한 정보가 목록의 처음에 등장하고 가장 오래 전에 수신된 전자 메시지들에 관한 정보가 목록의 끝에 등장하게 된다. 그러나, 이는 단지 예시에 불과하며, 전자 메시지들에 관한 정보를 소팅하거나 체계화하기 위해 아주 다양한 기준을 사용할 수 있다.
전자 메시지가 서브-메일함 및/또는 서브-폴더를 포함할 수 있는 이메일 메일함에 저장된 이메일 메시지를 포함하는 실시예에서, 디스플레이 창(202)에 정보가 디스플레이되는 이메일 메시지는 특정 메일함, 서브-메일함 또는 서브-폴더에 저장된 이메일 메시지를 포함할 수 있다.
또한 도 2에 도시된 바와 같이, 동기화 창에 포함되는 전자 메시지들에 관한 정보를 프레젠테이션하기 위해 디스플레이 영역(202)의 제 1 부분(204)이 사용된다. 앞서 논의한 바와 같이, 원격 스토어(132)로부터 어떤 전자 메시지를 로컬 스토어(114)로 복사할지를 결정하기 위해 이와 같은 동기화 창을 이용할 수 있다. 디스플레이 영역(202)의 제 1 부분(204)에 정보가 디스플레이되는 전자 메시지들이 로컬 스토어(114)에 저장되므로, 일 실시예에서, 혼합 프레젠테이션 논리(122)는 디스플레이 영역(202)의 제 1 부분(204) 내에 디스플레이되는 전자 메시지 정보를 원격 스토어(132)가 아닌 로컬 스토어(114)로부터 얻는다. 이러한 데이터는 도 2에 표시된 대로 "오프라인"에서 이용 가능하다고 할 수 있다.
또한 도 2에 도시된 바와 같이, 동기화 창 밖에 있어서 로컬 스토어(114)에 저장되지 않은 전자 메시지들에 관한 정보를 프레젠테이션하기 위해 디스플레이 영역(202)의 제 2 부분(206)이 사용된다. 디스플레이 영역(202)의 제 2 부분(206)에 정보가 디스플레이되는 전자 메시지들이 로컬 스토어(114)에 저장되지 않으므로, 일 실시예에서, 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있다고 결정되었을 때, 혼합 프레젠테이션 논리(122)는 전자 메시징 서버(102)와의 인터랙션을 통해 디스플레이 영역(202)의 제 2 부분(206) 내에 디스플레이되는 전자 메시지 정보를 얻는다. 이러한 데이터는 도 2에 표시된 대로 "오프라인"에서 이용 가능하지 않다고 할 수 있다.
로컬 스토어(114)에 로컬로 캐싱된 전자 메시지들에 관한 정보와 원격 스토어(132)에 원격으로 저장된 전자 메시지들에 관한 정보를 도 2에 도시된 바와 같이 동일한 디스플레이 영역(202)에 동시에 프레젠테이션함으로써, 혼합 프레젠테이션 논리(122)는, 이런 전자 메시지들에 관한 정보 및 컨텐츠를 다른 스토어들로부터 얻을 때조차, 모든 전자 메시지들이 통합된 단일 저장소의 일부라는 인상을 사용자에게 줄 수 있다. 바꾸어 말하면, 혼합 프레젠테이션 논리(122)는, 전자 메시지들의 일부 및 그 전자 메시지들에 관한 정보를 로컬 스토어(114)로부터 얻더라도, 원격 스토어(132)에 저장된 전자 메시지 전부에 액세스한다는 느낌을 사용자에게 줄 수 있다.
이런 혼합 효과를 얻기 위해서, 혼합 프레젠테이션 논리(122)는 로컬-저장된 및 원격-저장된 전자 메시지들에 관한 정보를 기본적으로 동일한 형태 및/또는 방식으로 프레젠테이션하여, 사용자가 어떤 전자 메시지들이 로컬에 저장되어 있고 어떤 전자 메시지들이 원격으로 저장되어 있는지를 쉽게 결정할 수 없게 된다. 그러나, 다른 실시예에서, 로컬-저장된 전자 메시지들을 원격-저장된 전자 메시지들과 구분하기 위해 사용할 수 있는 시각적인 표시가 제공될 수 있다.
특정 실시예에서, 디스플레이 영역(202)에 정보가 프레젠테이션되는 각각의 전자 메시지의 경우, 사용자가 이 전자 메시지의 컨텐츠를 GUI(132)에 디스플레이시킬 수 있는 수단 역시 프레젠테이션된다. 예를 들어, 이 수단은, 사용자와 인터랙션할 때, 전자 메시지의 컨텐츠를 GUI(132) 내에 디스플레이시키게 하는 각각의 전자 메시지에 관한 정보와 관련하여 프레젠테이션되는 컴포넌트를 포함할 수 있다. 예를 들어, 각각의 메시지에 관한 정보가 목록의 하나의 아이템으로 디스플레이되는 실시예에서, 사용자는 목록에서 대응 아이템을 클릭함으로써 전자 메시지의 컨텐츠를 볼 수 있다. 디스플레이 영역(202)에 정보가 프레젠테이션되는 전자 메시지의 컨텐츠의 선택적 보기를 용이하게 하기 위해 다른 사용자 인터페이스 컴포넌트들을 사용할 수도 있다.
또한 도 2에 도시된 예시적인 실시예에 따르면, 사용자가 보기 위한 전자 메시지를 선택하면, 혼합 프레젠테이션 논리(122)는 전자 메시지의 컨텐츠를 얻어서 이 컨텐츠를 GUI(132) 내에 디스플레이할 것이다. 선택된 전자 메시지의 복사본이 로컬 스토어(114)에 저장되어 있으면, 혼합 프레젠테이션 논리(122)는 로컬 스토어(114)로부터 전자 메시지의 컨텐츠를 얻을 것이다. 그러나, 선택된 전자 메시지의 복사본이 로컬 스토어(114)에 없으면(즉, 선택된 전자 메시지가 동기화 창 밖에 있으면), 혼합 프레젠테이션 논리(122)는 전자 메시징 서버(102)와의 인터랙션을 통해 원격 스토어(132)로부터 전자 메시지의 컨텐츠를 얻을 것이다. 이 후자의 경우에, 혼합 프레젠테이션 논리(122)는 프레젠테이션 과정의 일부로서 원격-저장된 전자 메시지의 복사본을 로컬 스토어(114)에 저장하지 않을 것이다. 다시 말해서, 원격-저장된 전자 메시지의 컨텐츠가 그 디스플레이를 용이하게 하기 위해 사용자 장치(106)의 메모리 내에 임시로 버퍼링될 수 있더라도, 사용자가 원격-저장된 전자 메시지의 컨텐츠를 보기 위해 사용되는 GUI(132)의 부분을 닫으면, 이렇게 버퍼링된 데이터는 버려질 수 있다. 물론, 특정 상황에서(예컨대, 성능적인 이유로), 혼합 프레젠테이션 논리(122)가 원격-저장된 전자 메시지의 복사본을 로컬 스토어(114)에 저장시킬 수도 있다.
일 실시예에서, 사용자 장치(106)가 전자 메시징 서버(102)에 연결된 것으로 결정되었다 하더라도, 혼합 프레젠테이션 논리(122)는 처음에 디스플레이 영역(202) 내의 동기화 창에 포함되는 전자 메시지들에 관한 정보만을 프레젠테이션할 수 있다. 이런 실시예에 따르면, 혼합 프레젠테이션 논리(122)는 전술한 바와 같이 동기화 창 밖에 있는 전자 메시지들에 관한 정보 역시 디스플레이 영역(202) 내에 혼합 방식으로 디스플레이되도록 하기 위해 사용자와 인터랙션할 수 있는 컴포넌트를 GUI(132) 안에 제공할 수 있다. 이렇게 인터랙티브한 컴포넌트는 그 기능의 시각적인 표시를 포함하거나 수반할 수 있다. 예를 들어, 이렇게 인터랙티브한 컴포넌트는 "서버에 추가적인 메시지가 있습니다, 이를 보려면 이곳을 클릭하세요", "추가 메시지를 보려면 이곳을 클릭하세요" 등을 서술하는 텍스트를 포함하거나 수반할 수 있다. 그러나, 이는 단지 예시에 불과하며, 결코 제한하기 위한 것은 아니다.
디스플레이 영역(202)의 묘사는 단지 설명으로써 제공되었음을 알 것이다. 디스플레이 영역(202)은 구현예에 따라 임의의 크기 또는 형태를 가질 수 있다. 또한, GUI(132) 및/또는 디스플레이(112) 내에서 디스플레이 영역(202)의 전체를 한꺼번에 볼 수 없을 수도 있고, 디스플레이 영역(202)의 선택 부분들을 보기 위해 스크롤링 또는 기존에 알려진 기타 유사한 메커니즘을 사용할 수도 있다.
또한, 도 2는 동기화 창에 포함된 전자 메시지들에 관한 정보가 동기화 창 안에 없는 전자 메시지들에 관한 정보와 분리되어 있는 인접 유닛으로써 프레젠테이션되는 것을 시사하는 듯하지만, 이런 정보가 디스플레이 영역(202)에서 섞이는 것도 전적으로 가능하다. 예를 들어, 정보가 목록으로 프레젠테이션되는 실시예에서, 정보가 목록에 프레젠테이션되는 제 1 전자 메시지가 동기화 창 밖에 있고, 정보가 목록에 프레젠테이션되는 제 2 전자 메시지가 동기화 창 안에 있으며, 정보가 목록에 프레젠테이션되는 제 3 전자 메시지가 동기화 창 밖에 있을 수 있다. 바꾸어 말하면, 디스플레이 영역(202)의 부분들(204 및 206)이 섞이거나 혼합될 수 있다. 이는, 예를 들어, 이런 정보가 소팅되는 방식 또는 기타 이유로 인해 발생할 수 있다.
도 3은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 프레젠테이션을 제공하는 방법의 순서도(300)를 도시한다. 순서도(300)의 방법은, 예를 들어, 도 1의 시스템(100)과 관련하여 전술한 혼합 프레젠테이션 논리(122)에 의해 실행될 수 있다. 그러나, 상기 방법은 이런 실시예에 제한되는 것은 아니며, 다른 컴포넌트나 시스템에 의해 전적으로 구현될 수 있다.
도 3에 도시된 바와 같이, 순서도(300)의 방법이 단계(302)에서 시작하며, 여기서 하나 이상의 제 1 전자 메시지에 관련된 정보가 사용자 장치의 디스플레이에 렌더링된 GUI에 디스플레이되며, 하나 이상의 제 1 전자 메시지의 컨텐츠는 사용자 장치의 로컬 스토어에 저장되어 있다. 예를 들어, 이 단계는 동기화 창 내의 전자 메시지들에 관련된 정보를 사용자 장치(106)의 디스플레이(112)에 렌더링된 GUI(132)에 디스플레이하는 것을 포함할 수 있고, 여기서 이런 전자 메시지들은 사용자 장치(106)의 로컬 스토어(114)에 저장되어 있다.
단계(304)에서, 사용자 장치와 전자 메시지 서버의 연결 여부를 결정하게 된다. 예를 들어, 이 단계는 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있는지에 관한 결정을 포함할 수 있다. 이런 연결의 존재 여부를 결정하기 위해, 사용자 장치(106)와 전자 메시징 서버(102) 간의 메시지 교환 요구 또는 사용자 장치(106)가 네트워크(104)에 대해 작동하고 있는 연결을 갖고 있다는 단순 결정을 포함하는, 그러나 이에 제한되지 않는, 다양한 방법을 사용할 수 있다.
단계(306)에서, 적어도 사용자 장치가 전자 메시징 서버에 연결되어 있다는 결정에 대한 응답으로, 하나 이상의 제 2 전자 메시지에 관련된 정보가 하나 이상의 제 1 전자 메시지에 관련된 정보와 동시에 GUI에 디스플레이되며, 이 때 하나 이상의 제 2 전자 메시지의 컨텐츠는 전자 메시징 서버에 액세스할 수 있는 원격 스토어에는 저장되어 있지만 로컬 스토어에는 저장되어 있지 않다. 예를 들어, 이 단계는, 적어도 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있다는 결정에 대한 응답으로, 동기화 창에 저장되지 않는 전자 메시지에 관련된 정보를 사용자 장치(106)의 디스플레이(112)에 렌더링된 GUI(132)에 디스플레이하는 것을 포함하고, 이 때 이런 전자 메시지들은 전자 메시징 서버(102)에 액세스할 수 있는 원격 스토어(132)에는 저장되어 있지만 로컬 스토어(114)에는 저장되어 있지 않다.
일 실시예에서, 순서도(300)의 방법은 하나 이상의 제 2 전자 메시지에 관련된 정보가 하나 이상의 제 1 전자 메시지에 관련된 정보와 동시에 GUI에 디스플레이되도록 하기 위해 사용자가 인터랙션할 수 있는 사용자 인터페이스 컴포넌트를 GUI 내에 제공하는 것을 더 포함할 수 있다. 이런 실시예에 따르면, 적어도 사용자 장치가 전자 메시징 서버에 연결되어 있다는 결정 및 사용자가 사용자 인터페이스 컴포넌트와 인터랙션했다는 결정에 대한 응답으로 단계(306)가 실행될 수 있다. 도 2와 관련하여 앞서 논의한 바와 같이, 이와 같은 사용자 인터페이스 컴포넌트는 그 기능의 시각적인 표시를 포함하거나 수반할 수 있다. 예를 들어, 이렇게 인터랙티브한 컴포넌트는 "서버에 추가적인 메시지가 있습니다, 이를 보려면 이곳을 클릭하세요", "추가 메시지를 보려면 이곳을 클릭하세요" 등을 서술하는 텍스트를 포함하거나 수반할 수 있다.
다른 실시예에서, 순서도(300)의 방법은 하나 이상의 제 1 전자 메시지 중에서 선택된 메시지의 컨텐츠를 GUI에 디스플레이시키기 위해 사용자가 인터랙션할 수 있는 사용자 인터페이스 컴포넌트를 GUI 내에 제공하는 것과, 그 후에, 사용자가 사용자 인터페이스 컴포넌트와 인터랙션했다는 결정에 대한 응답으로, GUI에서의 디스플레이를 위해 하나 이상의 제 1 전자 메시지 중에서 선택된 메시지의 컨텐츠를 로컬 스토어로부터 얻는 것을 더 포함할 수 있다.
또 다른 실시예에서, 순서도(300)의 방법은 하나 이상의 제 2 전자 메시지 중에서 선택된 메시지의 컨텐츠를 GUI에 디스플레이시키기 위해 사용자가 인터랙션할 수 있는 사용자 인터페이스 컴포넌트를 GUI 내에 제공하는 것과, 그 후에, 사용자가 사용자 인터페이스 컴포넌트와 인터랙션했다는 결정에 대한 응답으로, 하나 이상의 제 2 전자 메시지 중에서 선택된 메시지의 컨텐츠의 복사본을 로컬 스토어에 저장하지 않고, 하나 이상의 제 2 전자 메시지 중에서 선택된 메시지의 컨텐츠를 GUI에서의 디스플레이를 위해 원격 스토어로부터 얻는 것을 더 포함할 수 있다.
B. 혼합 상태 정보의 프레젠테이션을 위한 예시적인 기법
도 4는 컨테이너에 저장된 전자 메시지들 중 일부가 로컬 스토어(114)에 캐싱되어 있고 컨테이너에 저장된 전자 메시지들 중 일부가 오직 원격 스토어(132)에서만 이용 가능한 시나리오에서 혼합 상태 논리(124)가 사용자 장치(106)의 사용자에게 전자 메시지들의 컨테이너에 관련된 혼합 상태를 프레젠테이션하는 프로세스의 순서도(400)를 도시한다. 컨테이너는, 예를 들어, 사용자의 전자 메시지들 전부 혹은 그 서브셋을 저장하기 위해 사용되는 폴더를 포함할 수 있다. 순서도(400)의 방법은 전자 메시징 클라이언트(110)가 시작된 후에 사용자에게 처음으로 혼합 상태를 프레젠테이션하는 방식에 중점을 둔다. 순서도(400)의 방법에서, 혼합 상태는 특정 상태를 갖고 있는 컨테이너에서의 전자 메시지들의 개수를 설명하는 아이템 카운트를 포함한다. 이러한 특정 상태는, 예를 들어 그러나 제한 없이, 컨테이너에 포함됨 또는 불포함됨, 읽음 또는 읽지 않음, 플래깅됨 또는 플래깅되지 않음 등을 포함할 수 있다.
단지 설명을 위해서, 순서도(400)의 방법이 도 1에 관해 전술한 바와 같은 시스템(100)의 다양한 컴포넌트들과 관련하여 지금부터 설명될 것이다. 그러나, 당업자(들)라면 상기 방법이 다른 컴포넌트 또는 시스템으로도 구현될 수 있음을 이해할 것이다.
도 4에 도시된 바와 같이, 순서도(400)의 방법은 단계(402)에서 시작하고, 여기서 전자 메시징 클라이언트(110)가 시작한다. 구현예에 따라서, 이 단계는 다양한 방식으로 일어날 수 있다. 예를 들어, 사용자 장치(106)의 사용자가 사용자 장치(106)의 운영 체제 혹은 다른 컴포넌트와의 인터랙션을 통해 전자 메시징 클라이언트(110)를 작동시킬 때 이 단계가 일어날 수 있다.
단계(402) 이후에, 단계(404)로 제어가 진행되고, 이 단계 동안 혼합 상태 논리(124)는 컨테이너와 관련된 하나 이상의 로컬 아이템 카운트를 로딩하며, 여기서 이런 로컬 아이템 카운트는 사용자 장치(106)의 로컬 스토리지(예컨대, 로컬 스토어(114))에 저장되어 있다. 이 방법에 따르면, 로컬 아이템 카운트는 컨테이너에 포함되어 있고 특정 상태를 갖고 있는 로컬 스토어(114)에 저장된 전자 메시지들의 개수 표현을 포함한다. 다른 유형의 상태들에 대한 로컬 아이템 카운트가 유지될 수도 있다. 예를 들어, 특정 컨테이너에서, 로컬 스토어(114)에 저장된 컨테이너의 전자 메시지들의 개수, 읽었거나 읽지 않은 상태로 로컬 스토어(114)에 저장된 컨테이너의 전자 메시지들의 개수, 플래깅되었거나 플래깅되지 않았으며 로컬 저장소(114)에 저장되어 있는 전자 메시지들의 개수 등을 나타내는 로컬 아이템 카운트가 유지될 수 있다.
단계(404) 이후에, 단계(406)로 제어가 진행되고, 이 단계 동안 혼합 상태 논리(126)는 컨테이너에 관련된 하나 이상의 델타 크기를 로딩하며, 여기서 이런 델타 크기는 사용자 장치(106)의 로컬 스토리지(예컨대, 로컬 스토어(114))에 저장되어 있다. 이 방법에 따르면, 델타 크기는 컨테이너에 대한 원격 아이템 카운트와 로컬 아이템 카운트의 마지막으로 알려진 차이를 나타내며, 원격 아이템 카운트는 컨테이너에 포함되어 있고 특정 상태를 갖고 있는, 원격 스토어(132)에 저장된 전자 메시지들의 개수를 표현한다.
단계(406) 이후에, 단계(408)로 제어가 진행되고, 이 단계 동안 혼합 상태 논리(124)는 단계(406) 동안 로딩된 대응 델타 크기와 단계(404) 동안 로딩된 로컬 아이템 카운트 각각을 합함으로써 컨테이너에 대한 아이템 카운트를 계산한다. 예를 들어, 이 단계는 컨테이너에 포함되고 로컬 스토어(114)에 저장된 아이템들의 전체 개수를 명시하는 로컬 아이템 카운트를, 컨테이너에 포함되고 원격 스토어(132)에 저장된 아이템들의 전체 개수와 로컬 아이템 카운트 간의 마지막으로 알려진 차이를 명시하는 델타 크기에 더하는 것을 포함할 수 있다. 다른 예로써, 이 단계는 컨테이너에 포함되고 로컬 스토어(114)에 저장된 읽지 않은 아이템들의 전체 개수를 명시하는 로컬 아이템 카운트를, 컨테이너에 포함되고 원격 스토어(132)에 저장된 읽지 않은 아이템들의 전체 개수와 로컬 아이템 카운트 간의 마지막으로 알려진 차이를 명시하는 델타 크기에 더하는 것을 포함할 수 있다.
단계(408) 동안, 혼합 상태 논리(124)는 사용자 장치(106)의 사용자가 볼 수 있도록 이렇게 계산된 아이템 카운트를 GUI(132)에 프레젠테이션한다. 이 단계는, 이런 아이템 카운트들이 이들이 계산된 컨테이너에 대응함을 나타내는 위치에 또는 이를 나타내는 방식으로 아이템 카운트들을 디스플레이하는 것을 포함할 수 있다(예컨대, 컨테이너의 아이콘 표현 옆, 컨테이너의 전자 메시지들에 관한 정보를 디스플레이하는 탐색 창(navigation pane)의 상태 바(status bar) 등).
단계(408) 이후에, 단계(410)로 제어가 진행되고, 이 단계 동안 혼합 상태 논리(124)는 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있는지 여부를 결정한다. 이런 연결의 존재 여부를 결정하기 위해, 사용자 장치(106)와 전자 메시징 서버(102) 간의 메시지 교환 요구 또는 사용자 장치(106)가 네트워크(104)에 대해 작동하고 있는 연결을 갖고 있다는 단순 결정을 포함하는, 그러나 이에 제한되지 않는, 다양한 방법을 사용할 수 있다.
도 4에 도시된 바와 같이, 결정 단계(410) 동안 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있지 않다고 결정되면, 제어는 단계(408)로 되돌아가고, 이 단계 동안 혼합 상태 논리(126)는 컨테이너에 대한 로컬 아이템 카운트와 단계(406) 동안 얻은 대응 델타 크기의 합계로써 컨테이너에 대한 아이템 카운트를 계속해서 보여준다. 사용자 장치(106)가 오프라인인 동안, 사용자 장치(106)의 사용자에 의한 여러 행동 수행의 결과로 단계(404) 동안 로딩된 로컬 아이템 카운트가 업데이트될 수 있고, 이는 도 5의 순서도(500)와 관련하여 아래에서 논의될 것이다. 따라서, 사용자 장치(106)가 오프라인인 동안, 단계(408) 동안 디스플레이된 컨테이너에 대한 아이템 카운트는 (사용자의 오프라인 활동에 의한 결과로써) 컨테이너에 대한 최신 로컬 아이템 카운트에 단계(406)에서 얻은 대응 델타 크기를 더한 총계가 될 것이다. 특정 실시예에서, 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있지 않고 특정 컨테이너에 대한 델타 크기가 0보다 크다고(로컬 스토어(114)에 캐싱되어 있지 않지만, 원격 스토어(132)에 이용 가능한 전자 메시지들이 존재함을 나타냄) 혼합 상태 논리(124)에서 결정할 때, 혼합 상태 논리(124)는 원격 스토어(132)에서 추가 전자 메시지들이 이용 가능함을 사용자에게 알리는 표시를 프레젠테이션하게 할 수 있음을 알 것이다. 예를 들어, 이런 표시는 "추가 아이템이 있음 - 이를 보려면 서버에 접속하세요"라는 GUI(132)에 렌더링된 텍스트를 포함할 수 있다. 이런 실시예에 따르면, 특정 컨테이너에 대한 델타 크기가 0이면(원격 스토어(132)에 이용 가능한 모든 전자 메시지들이 로컬 스토어(114)에 캐싱되어 있음을 나타냄), 이런 표시는 프레젠테이션되지 않을 수 있다.
반면, 결정 단계(410) 동안 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있다고 결정되면, 제어는 단계(412)로 진행되고, 이 단계 동안 로컬 스토어(114)에 저장된 전자 메시지들과 원격 스토어(132)에 저장된 전자 메시지들의 상태를 동기화시키기 위한 동기화 과정이 시작된다. 사용자 장치(106)가 오프라인인 동안 또는 전자 메시징 클라이언트(110)가 실행되고 있지 않은 동안 로컬 스토어(114) 및/또는 원격 스토어(132)에 저장된 전자 메시지들의 상태가 변경되었기 때문에(따라서 비동기화되었기 때문에) 이런 동기화 과정이 실행된다. 예를 들어, 사용자 장치(106)가 오프라인인 동안 또는 전자 메시징 클라이언트(110)가 실행되고 있지 않은 동안, 사용자가 로컬 스토어(114)에 저장된 하나 이상의 전자 메시지의 상태를 변경했을 수 있다. 다른 예를 들면, 사용자 장치(106)가 오프라인인 동안 또는 전자 메시징 클라이언트(110)가 실행되고 있지 않은 동안, 전자 메시징 클라이언트(110)가 이용 가능하고 원격 스토어(132)에 저장되어 있는 하나 이상의 전자 메시지의 상태를 전자 메시징 서버(102)가 변경했을 수 있다. 동기화 창 밖으로 이동한 전자 메시지들을 로컬 스토어(114)에서 삭제하기 위해 이런 동기화 과정이 사용될 수도 있다.
동기화 과정이 실행되고 있는 동안, 혼합 상태 논리(124)는 컨테이너에 대한 로컬 아이템 카운트와 단계(406)에서 얻은 대응 델타 크기의 합계로써 컨테이너에 대한 아이템 카운트를 계속해서 보여줄 것이다. 동기화 과정이 실행되고 있는 동안, 이 동기화 과정으로 인해(예컨대, 로컬 스토어(114)에 새로운 전자 메시지 추가로 인해) 로컬 아이템 카운트가 변할 수도 있다. 따라서, 동기화가 일어나는 동안 디스플레이되는 컨테이너에 대한 아이템 카운트는 (동기화 과정의 영향을 받은) 컨테이너에 대한 최신 로컬 아이템 카운트에 단계(406)에서 얻은 대응 델타 크기를 더한 총계가 될 것이다.
결정 단계(414)에 도시된 대로, 단계(412) 동안 시작된 동기화 과정이 완료되었다고 결정되면, 제어는 단계(416)로 진행된다. 단계(416)에서, 동기화 과정으로 인해 컨테이너에 대한 원격 및 로컬 아이템 카운트가 변할 수 있으므로, 혼합 상태 논리(124)는 컨테이너에 대한 새로운 원격 아이템 카운트와 새로운 로컬 아이템 카운트를 얻는다. 단계(416) 동안, 혼합 상태 논리(124)는 또한 각각의 새로운 원격 아이템 카운트와 대응하는 각각의 새로운 로컬 아이템 간의 차이를 결정함으로써 카운트 컨테이너에 대한 새로운 델타 크기를 계산한다. 이 단계 동안, 혼합 상태 논리(124)는 또한 새로 계산된 델타 크기를 사용자 장치(106)의 로컬 스토리지에 저장하여, 이전에 계산된 델타 크기를 새로 계산된 델타 크기로 대체한다.
단계(416) 이후에, 제어는 단계(418)로 진행되고, 이 단계 동안 혼합 상태 논리(124)는 단계(416) 동안 획득한 각각의 로컬 아이템 카운트를 그 단계에서 계산된 대응 델타 크기와 모두 합하여 컨테이너에 대한 아이템 카운트를 계산한다. 단계(418) 동안, 혼합 상태 논리(124)는 사용자 장치(106)의 사용자가 볼 수 있도록 이렇게 계산된 아이템 카운트를 GUI(132)에 프레젠테이션한다.
도 5는 컨테이너에 저장된 전자 메시지들 중 일부가 로컬 스토어(114)에 캐싱되어 있고 컨테이너에 저장된 전자 메시지들 중 일부가 오직 원격 스토어(132)에서만 이용 가능한 시나리오에서 혼합 상태 논리(124)가 사용자 장치(106)의 사용자에게 전자 메시지들의 컨테이너에 관련된 혼합 상태를 프레젠테이션하는 추가 프로세스의 순서도(500)를 도시한다. 순서도(500)의 방법은 사용자가 전자 메시징 클라이언트(110)를 통해 전자 메시지의 상태를 변경하는 행동을 취한 후에 혼합 상태가 프레젠테이션되는 방식에 중점을 둔다. 순서도(400)의 경우에서처럼, 혼합 상태는 특정 상태를 갖고 있는 컨테이너에서의 전자 메시지들의 개수를 설명하는 아이템 카운트를 포함한다.
단지 설명을 위해서, 순서도(500)의 방법이 도 1에 관해 전술한 바와 같은 시스템(100)의 다양한 컴포넌트들과 관련하여 지금부터 설명될 것이다. 그러나, 당업자(들)라면 상기 방법이 다른 컴포넌트 또는 시스템으로도 구현될 수 있음을 이해할 것이다.
도 5에 도시된 바와 같이, 순서도(500)의 방법은 단계(502)에서 시작하고, 이 단계 동안 사용자는 특정 상태를 갖고 있는 컨테이너의 전자 메시지들의 전체 개수가 변하도록 전자 메시징 클라이언트(110)를 이용하여 컨테이너에 있는 한 개 이상의 메시지들에 행동을 취한다. 이러한 행동은, 예를 들어, 컨테이너에 전자 메시지 추가, 컨테이너에서 전자 메시지 삭제 또는 제거, 컨테이너에서 읽지 않은 전자 메시지 읽기, 컨테이너의 플래깅되지 않은 전자 메시지 플래깅 등을 포함할 수 있다.
결정 단계(504)에서, 단계(502)의 행동이 일어났다는 결정에 대한 응답으로, 혼합 상태 논리(124)는 이런 행동이 취해진 전자 메시지(들)가 로컬 스토어(114)에 저장되어 있는지 여부를 결정한다. 이런 행동이 취해진 전자 메시지가 로컬 스토어(114)에 저장되어 있는 경우, 혼합 상태 논리(124)는 단계(506)에 도시된 바와 같이 컨테이너에 대한 관련 로컬 아이템 카운트를 증가시키거나 감소시킬 것이다. 따라서, 예를 들어, 사용자가 컨테이너에서 전자 메시지를 삭제하였고 삭제된 전자 메시지가 로컬 스토어(114)에 캐싱되어 있다면, 혼합 상태 논리(124)는 그 컨테이너에 대한 로컬 아이템 카운트를 1만큼 감소시킬 것이다. 다른 예를 들면, 사용자가 컨테이너에서 읽지 않은 전자 메시지를 읽었고, 읽은 전자 메시지가 로컬 스토어(114)에 캐싱되어 있는 경우, 혼합 상태 논리(124)는 그 컨테이너에 대한 읽지 않은 로컬 아이템 카운트를 1만큼 감소시킬 것이다. 나아가, 혼합 상태 논리(124)는 그 컨테이너에 대한 읽은 로컬 아이템 카운트도 1만큼 증가시킬 수도 있다.
반면, 혼합 상태 논리(124)가 단계(502)의 행동이 취해진 전자 메시지(들)가 로컬 스토어(114)에 저장되어 있지 않다고(즉, 이들이 원격 스토어(132)에만 저장되어 있다고) 결정 단계(504)에서 결정하는 경우, 혼합 상태 논리(124)는 단계(508)에 도시된 바와 같이 컨테이너에 대한 관련 델타 크기를 증가시키거나 감소시킬 것이다. 따라서, 예를 들어, 사용자가 컨테이너에서 전자 메시지를 삭제하고 삭제된 전자 메시지가 로컬 스토어(114)에 캐싱되어 있지 않다면, 혼합 상태 논리(124)는 컨테이너에서 원격 저장된 아이템들의 전체 개수와 그 컨테이너에 대한 로컬 아이템 간의 차이를 나타내는 델타 크기를 1만큼 감소시킬 것이다. 다른 예를 들면, 사용자가 읽지 않은 전자 메시지를 읽고, 읽은 전자 메시지가 로컬 스토어(114)에 캐싱되어 있지 않은 경우, 혼합 상태 논리(124)는 컨테이너에서 원격 저장된 읽지 않은 아이템들의 전체 개수와 그 컨테이너에 대한 읽지 않은 로컬 아이템 간의 차이를 나타내는 델타 크기를 1만큼 감소시킬 것이다. 나아가, 혼합 상태 논리(124)는 원격 저장된 읽은 아이템들의 전체 개수와 그 컨테이너에 대한 읽은 로컬 아이템 간의 차이를 나타내는 델타 크기도 1만큼 증가시킬 수 있다.
단계(506 또는 508) 후에, 제어는 단계(510)로 진행되고, 이 단계 동안 혼합 상태 논리(124)는 컨테이너에 대한 로컬 아이템 카운트와 대응 델타 크기와 모두 합하여 컨테이너에 대한 아이템 카운트를 계산한다. 단계(510) 동안, 혼합 상태 논리(124)는 사용자 장치(106)의 사용자가 볼 수 있도록 이렇게 계산된 아이템 카운트를 GUI(132)에 프레젠테이션한다.
단계(510) 이후에, 제어는 단계(512)로 진행되고, 이 단계 동안 로컬 스토어(114)에 저장된 전자 메시지들과 원격 스토어(132)에 저장된 전자 메시지들의 상태를 동기화시키기 위한 동기화 과정이 시작된다. 전자 메시징 클라이언트(110)는 시스템-정의 또는 사용자-정의 스케줄에 따라서 또는 특정 이벤트 등의 발생에 대한 응답으로 이런 동기화 과정을 시작할 수 있다. 이전의 동기화 발생 이후로 로컬 스토어(114) 및/또는 원격 스토어(132)에 저장된 전자 메시지들의 상태가 변경되었을 수 있기 때문에(따라서 비동기화되었을 수 있기 때문에) 이런 동기화 과정이 필요할 수 있다. 예를 들어, 이전 동기화 발생 이후에 사용자가 로컬 스토어(114)에 저장된 하나 이상의 전자 메시지의 상태를 변경하였을 수 있다. 다른 예를 들면, 이전 동기화 발생 이후에, 전자 메시징 클라이언트(110)가 이용 가능하고 원격 스토어(132)에 저장되어 있는 하나 이상의 전자 메시지의 상태를 전자 메시징 서버(102)가 변경했을 수 있다. 동기화 창 밖으로 이동한 전자 메시지를 로컬 스토어(114)에서 삭제하기 위해 이런 동기화 과정이 사용될 수도 있다.
동기화 과정이 실행되고 있는 동안, 혼합 상태 논리(124)는 컨테이너에 대한 로컬 아이템 카운트와 대응 델타 크기의 합계로써 컨테이너에 대한 아이템 카운트를 계속해서 보여줄 것이다. 동기화 과정이 실행되고 있는 동안, 이 동기화 과정으로 인해(예컨대, 로컬 스토어(114)에 새로운 전자 메시지 추가로 인해) 로컬 아이템 카운트가 변할 수도 있다. 따라서, 동기화가 일어나는 동안 디스플레이되는 컨테이너에 대한 아이템 카운트는 (동기화 과정의 영향을 받은) 컨테이너에 대한 최신 로컬 아이템 카운트에 대응 델타 크기를 더한 총계가 될 것이다.
결정 단계(514)에 도시된 대로, 단계(512) 동안 시작된 동기화 과정이 완료되었다고 결정되면, 제어는 단계(516)로 진행된다.
단계(516) 동안, 동기화 과정으로 인해 컨테이너에 대한 원격 및 로컬 아이템 카운트가 변할 수 있으므로 혼합 상태 논리(124)는 컨테이너에 대한 새로운 원격 아이템 카운트와 새로운 로컬 아이템 카운트를 얻는다. 단계(516) 동안, 혼합 상태 논리(124)는 또한 각각의 새로운 원격 아이템 카운트와 대응하는 각각의 새로운 로컬 아이템 간의 차이를 결정함으로써 카운트 컨테이너에 대한 새로운 델타 크기를 계산한다. 이 단계 동안, 혼합 상태 논리(124)는 새로 계산된 델타 크기를 사용자 장치(106)의 로컬 스토리지에 저장하여, 이전에 계산된 델타 크기를 새로 계산된 델타 크기로 대체한다.
단계(516) 이후에, 제어는 단계(518)로 진행되고, 이 단계 동안 혼합 상태 논리(124)는 단계(516) 동안 획득한 각각의 로컬 아이템 카운트를 같은 단계에서 계산된 대응 델타 크기와 모두 합하여 컨테이너에 대한 아이템 카운트를 계산한다. 단계(518) 동안, 혼합 상태 논리(124)는 사용자 장치(106)의 사용자가 볼 수 있도록 이렇게 계산된 아이템 카운트를 GUI(132)에 프레젠테이션한다.
이제부터 혼합 상태 정보를 사용자에게 프레젠테이션하기 위해 순서도(400 및 500)의 상기 방법을 어떻게 이용할 수 있는지에 관한 설명을 돕기 위해 간단한 안내적인 예시가 제공될 것이다. 이 예시를 위해, 전자 메시지가 이메일이며, 관련 컨테이너는 "메일함"이라는 폴더이며, 디스플레이될 아이템 카운트는 메일함 아이템 카운트임을 가정한다.
또한 전자 메시징 클라이언트(110)를 시작하기 전에(따라서 순서도(400)의 방법을 트리거하기 전에), 메일함에 대한 로컬 아이템 카운트는 50이고 메일함 아이템에 대한 델타 크기는 150임(즉, 메일함 아이템에 대한 델타 크기가 계산될 때, 200 개의 원격-저장된 아이템과 50 개의 로컬-저장된 아이템이 메일함에 있었음)을 가정하게 된다.
이제, 순서도(400)의 단계(402)에 따라서 전자 메시징 클라이언트가 시작되고, 혼합 상태 논리(124)가 단계(404)에 따라서 전술한 바와 같이 메일함에 대한 로컬 아이템 카운트를 로딩하고 단계(406)에 따라서 전술한 바와 같이 메일함 아이템에 대한 델타 크기를 로딩함을 가정하자. 그 후에, 단계(408) 동안, 혼합 상태 논리(124)는 메일함에 대한 로컬 아이템 카운트(50)와 메일함 아이템에 대한 델타 크기(150)의 합계로써 메일함에 대한 아이템 카운트를 계산하여, 아이템 카운트 200을 산출할 것이다. 그리고 나서, 혼합 상태 논리(124)는 단계(408)에 따라서 GUI(132)를 통해 사용자에게 이 아이템 카운트를 프레젠테이션할 것이다.
혼합 상태 정보를 사용자에게 프레젠테이션하기 위해 순서도(400 및 500)의 상기 방법을 어떻게 이용할 수 있는지를 추가적으로 설명하기 위해, 사용자 장치(106)가 오프라인 상태에 있는 동안, 사용자가 새로운 이메일 5 개를 메일함에 추가한다고 가정하자. 이러한 행동은 메일함의 상태를 바꾸기 때문에, 순서도(500)의 단계(502)를 트리거할 것이다. 또한, 이러한 행동은 로컬-저장된 이메일을 포함하므로, 그 결과 단계(506)에 따라 메일함에 대한 로컬 아이템 카운트가 5만큼 증가될 것이다(로컬 아이템 카운트가 55가 됨). 다음으로, 단계(510) 동안, 메일함에 대한 로컬 카운트가 205(로컬 아이템 카운트 55 더하기 델타 크기 150)로 도시될 것이다. 따라서, 오프라인인 동안 사용자가 취한 행동이, 단지 로컬 스토어(114)에 저장된 이메일뿐만이 아니라, 전체 메일함의 상태에 영향을 준 것처럼 사용자에게 보일 것이다.
혼합 상태 정보를 사용자에게 프레젠테이션하기 위해 순서도(400 및 500)의 상기 방법을 어떻게 이용할 수 있는지를 추가적으로 설명하기 위해, 사용자 장치(106)가 오프라인 상태에 있는 동안, 전자 메시징 서버(102)가 사용자를 대신해 메일함에서 새로운 이메일 20 개를 수신하고 이를 원격 스토어(132)에 저장하고 또한, 롤링 시간 창 밖에 있어 원격 스토어(132)에만 저장되어 있던 메일함의 오래된 이메일 40 개를 삭제한다고 가정하자. 그 결과로서 메일함에 대한 원격 아이템 카운트가 180이 된다. 또한, 앞서 논의한 바와 같이 사용자 장치(106)가 오프라인 상태에 있는 동안 메일함에 새로운 이메일 5 개를 추가한 후에, 사용자가 사용자 장치(106)의 전원을 끈다고 가정하자. 나중에, 사용자가 사용자 장치(106)를 다시 켜서 전자 메시징 클라이언트(110)를 시작하여, 순서도(400)의 단계(402)를 트리거한다.
이 경우에, 단계(404) 동안, 혼합 상태 논리(124)는 받은 편지함에 대한 로컬 아이템 카운트(로컬 아이템 카운트 = 55)를 로딩하고, 단계(406) 동안, 혼합 상태 논리(124)는 메일함 아이템에 대한 델타 크기(델타 크기 = 150)를 로딩하고, 단계(408) 동안, 혼합 상태 논리(124)는 메일함에 대한 아이템 카운트를 205(55 + 150)로 프레젠테이션한다. 그리고 나서, 결정 단계(410)에서, 사용자 장치(106)가 이제 전자 메시징 서버(102)에 연결되어 있다고 혼합 상태 논리(124)에서 결정하기 때문에 제어는 단계(412)로 진행된다.
단계(412)에서, 동기화가 시작된다. 동기화 결과로서, 메일함의 새로운 이메일 20 개가 로컬 스토어(114)에 다운로드되어, 메일함 로컬 아이템 카운트가 55에서 75로 증가하게 된다. 동기화가 일어나는 동안, 혼합 상태 논리(124)는 받은 편지함 아이템 카운트를 로컬 아이템 카운트(지금 75)와 메일함 아이템에 대한 델타 크기(150)의 합계인 225로써 계속해서 디스플레이한다. 동기화 과정 동안, 메일함에서 로컬로 생성된 5 개의 이메일은 원격 스토어(132)에 업로드되어, 원격 아이템 카운트가 180에서 185로 증가된다.
단계(416) 동안, 혼합 상태 논리(124)는 동기화 후의 로컬 및 원격 아이템 카운트를 얻는다. 이 경우에, 동기화 이후에, 받은 편지함에 대한 로컬 아이템 카운트는 75가 되고, 받은 편지함에 대한 원격 아이템 카운트는 185가 될 것이다. 결과적으로, 단계(416) 동안, 혼합 상태 논리(124)는 받은 편지함 아이템에 대한 델타 크기가 110이라고 계산할 것이다. 다음에, 단계(418) 동안, 혼합 상태 논리(124)는 받은 편지함 아이템 카운트를, 받은 편지함에 대한 로컬 아이템 카운트(75) 더하기 받은 편지함 아이템에 대한 델타 크기(110)의 합계인 185로 디스플레이하게 된다.
C. 혼합 검색 수행에 관한 예시적인 기법
도 6은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 검색을 실행하는 제 1 방법의 순서도(600)를 도시한다. 단지 설명을 위해서, 순서도(600)의 방법이 도 1에 관해 전술한 바와 같은 시스템(100)의 다양한 컴포넌트들과 관련하여 지금부터 설명될 것이다. 그러나, 당업자(들)라면 상기 방법이 다른 컴포넌트 또는 시스템으로도 구현될 수 있음을 이해할 것이다.
도 6에 도시된 바와 같이, 순서도(600)의 방법은 단계(602)에서 시작되며, 이 단계 동안 사용자는 사용자 장치(106)에 질의를 입력하여 검색을 시작한다. 이러한 질의가 입력되고 이러한 검색이 시작되는 방식은 구현예에 따라 달라질 수 있다. 예를 들어, 일 실시예에서, GUI(132)는 사용자가 질의를 타이핑하기 위해 사용할 수 있는 텍스트 입력 상자와 사용자가 검색 시작을 활성화시킬 수 있는 검색 버튼을 제공한다. 그러나, 이것은 단지 하나의 예시일 뿐이고, 다양한 잘 알려진 사용자 입력 메카니즘이 사용되어 질의를 제출할 수 있고 검색을 시작할 수 있다.
단계(604)에서, 혼합 검색 논리(126)는 단계(602) 동안 입력된 질의에 기반하여 로컬 스토어(114)에 저장된 전자 메시지들에 대한 검색을 로컬에서 실행한다. 혼합 검색 논리(126)는 로컬 스토어(114)에 저장된 어떤 메시지가 단계(602) 동안 입력된 질의에 매치하는 것으로 확인되어야 하는지를 결정하기 위해 잘 알려진 다양한 검색 알고리즘을 이용할 수 있다. 로컬 스토어(114)에 저장된 임의의 전자 메시지들이 질의에 매치한다고 혼합 검색 논리(126)에서 결정하면, 혼합 검색 논리(126)는 그 전자 메시지들에 관한 정보를 GUI(132)에서 프레젠테이션하게 된다. 프레젠테이션된 정보는 대체적으로 전자 메시지에 관한 임의의 정보 아이템을 포함할 수 있다. 예를 들어, 전자 메시지들이 이메일 메시지를 포함하는 실시예에서, 이런 정보는 이메일 메시지의 보낸 사람, 이메일 메시지의 제목, 이메일 메시지가 전송된 날짜 및/또는 시간, 이메일 메시지를 수신한 날짜 및/또는 시간, 이메일 메시지에 관련된 상태 정보(예컨대, 읽음, 읽지 않음, 플래깅됨, 플래깅되지 않음) 등을 포함하지만, 그러나 이에 제한되지는 않는다.
특정 실시예에서, 단계(604) 동안 실행된 로컬 검색의 결과로서 정보가 프레젠테이션된 각각의 매치하는 전자 메시지의 경우, 사용자가 이런 전자 메시지의 컨텐츠를 GUI(132)에 디스플레이시킬 수 있는 수단 역시 프레젠테이션된다. 예를 들어, 이 수단은, 사용자와 인터랙션할 때, 전자 메시지의 컨텐츠를 GUI(132) 내에 디스플레이시키게 하는 각각의 전자 메시지에 관한 정보와 관련하여 프레젠테이션되는 컴포넌트를 포함할 수 있다. 이런 실시예에 따르면, 사용자가 보기 위한 전자 메시지를 선택하면, 혼합 검색 논리(126)는 로컬 스토어(114)로부터 전자 메시지의 컨텐츠를 얻어서 이 컨텐츠를 GUI(132) 내에 디스플레이할 것이다.
단계(604) 이후에, 제어는 결정 단계(606)로 진행되며, 이 단계 동안 혼합 검색 논리(126)는 로컬 스토어(114)에 캐싱되어 있지 않지만 원격 스토어(132)에 이용 가능한 전자 메시지들의 존재 여부를 결정한다. 이런 결정을 내리는 방법은 구현예에 따라 달라질 수 있다. 예를 들어, 일 실시예에서, 로컬 스토어(114)에 캐싱되어 있으면서 원격 스토어(132)에 이용 가능한 전자 메시지의 서브셋만을 얻을 수 있는 시간-기반 동기화 창이 사용되고 있는지를 결정함으로써, 혼합 검색 논리(126)는 로컬 스토어(114)에 캐싱되어 있지 않지만 원격 스토어(132)에 이용 가능한 전자 메시지들의 존재 여부를 결정한다. 그러나, 다른 기법들도 사용될 수 있다.
로컬 스토어(114)에 캐싱되어 있지 않으면서 원격 스토어(132)에 이용 가능한 전자 메시지들이 없다고 혼합 검색 논리(126)가 결정 단계(606)에서 결정하면, 순서도(600)의 방법이 종료된다. 그러나, 로컬 스토어(114)에 캐싱되어 있지 않지만 원격 스토어(132)에 이용 가능한 전자 메시지들이 존재한다고 혼합 검색 논리(126)가 결정 단계(606) 동안 결정하면, 제어는 결정 단계(608)로 진행된다.
결정 단계(608) 동안, 혼합 검색 논리(126)는 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있는지 여부를 결정한다. 이런 연결의 존재 여부를 결정하기 위해, 사용자 장치(106)와 전자 메시징 서버(102) 간의 메시지 교환 요구 또는 사용자 장치(106)가 네트워크(104)에 대해 작동하고 있는 연결을 갖고 있다는 단순 결정을 포함하는, 그러나 이에 제한되지 않는, 다양한 방법을 사용할 수 있다.
혼합 검색 논리(126)가 결정 단계(608)에서 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있지 않다고 결정하면, 순서도(600)의 방법이 종료된다. 그러나, 혼합 검색 논리(126)가 결정 단계(608)에서 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있다고 결정하면, 제어는 단계(610)로 진행된다.
단계(610) 동안, 혼합 검색 논리는, 사용자가 활성화할 때, 단계(602)에서 입력된 질의에 기반하여 전자 메시징 서버(102)가 원격 스토어(132)에 저장된 이용 가능한 전자 메시지들에 대한 검색을 실행하게 하고 매치하는 전자 메시지들을 식별하는 목록을 반환하게 하는 사용자 인터페이스 컴포넌트를 GUI(132) 내에 디스플레이시킨다. 이런 사용자 인터페이스 컴포넌트는 그 기능의 시각적인 표시를 포함하거나 수반할 수 있다. 예를 들어, 사용자 인터페이스 컴포넌트는 "서버에서 검색을 계속하세요", "로컬 아이템만이 검색되었으므로, 검색 결과가 불완전합니다 - 서버에서 검색을 계속하세요" 등을 서술하는 텍스트를 포함하거나 수반할 수 있다. 그러나, 이는 단지 예시에 불과하며, 결코 제한하기 위한 것은 아니다.
사용자가 단계(610) 동안 GUI(132)에 프레젠테이션된 사용자 인터페이스 컴포넌트를 활성화하지 않은 경우, 순서도(600)의 방법이 종료된다. 그러나, 단계(612)에서 도시된 대로, 사용자가 GUI(132)에 프레젠테이션된 사용자 인터페이스 컴포넌트를 활성화한 경우, 제어는 단계(614)로 진행된다.
단계(614)에서, 전자 메시징 서버(102)는 단계(602) 동안 입력된 질의에 기반하여 원격 스토어(132)에 저장된 이용 가능한 전자 메시지들에 대한 검색을 실행하여, 매치하는 전자 메시지들을 식별하는 목록을 반환한다. 혼합 검색 논리(126)는 매치하는 전자 메시지들에 관한 정보를 GUI(132)에 프레젠테이션한다. 프레젠테이션된 정보는 대체적으로 전자 메시지에 관한 임의의 정보 아이템을 포함할 수 있다.
특정 실시예에서, 단계(614) 동안 실행된 원격 검색의 결과로서 정보가 프레젠테이션된 각각의 매치하는 전자 메시지의 경우, 사용자가 이런 전자 메시지의 컨텐츠를 GUI(132)에 디스플레이시킬 수 있는 수단 역시 프레젠테이션된다. 예를 들어, 이 수단은, 사용자와 인터랙션할 때, 전자 메시지의 컨텐츠를 GUI(132) 내에 디스플레이시키는 각각의 전자 메시지에 관한 정보와 관련하여 프레젠테이션되는 컴포넌트를 포함할 수 있다.
이런 실시예에 따르면, 사용자가 보기 위한 전자 메시지를 선택하면, 혼합 검색 논리(126)는 전자 메시지의 컨텐츠를 얻어서 이런 컨텐츠를 GUI(132) 내에 디스플레이할 것이다. 선택된 전자 메시지의 복사본이 로컬 스토어(114)에 저장되어 있으면, 혼합 검색 논리(126)는 로컬 스토어(114)로부터 전자 메시지의 컨텐츠를 얻을 것이다. 그러나, 선택된 전자 메시지의 복사본이 로컬 스토어(114)에 없으면(즉, 선택된 전자 메시지가 동기화 창 밖에 있으면), 혼합 검색 논리(126)는 전자 메시징 서버(102)와의 인터랙션을 통해 원격 스토어(132)로부터 전자 메시지의 컨텐츠를 얻을 것이다. 이 후자의 경우에, 혼합 검색 논리(126)는 프레젠테이션 과정의 일부로서 원격-저장된 전자 메시지의 복사본을 로컬 스토어(114)에 저장하지 않을 것이다. 다시 말해서, 원격-저장된 전자 메시지의 컨텐츠가 그 디스플레이를 용이하게 하기 위해 사용자 장치(106)의 메모리 내에 임시로 버퍼링될 수 있더라도, 사용자가 원격-저장된 전자 메시지의 컨텐츠를 보기 위해 사용되는 GUI(132)의 부분을 닫으면, 이렇게 버퍼링된 데이터는 버려질 수 있다.
도 7은 일 실시예에 따른 로컬-저장된 및 원격-저장된 전자 메시지들의 혼합 검색을 실행하는 제 2 방법의 순서도(700)를 도시한다. 순서도(700)의 방법은 순서도(600)의 변형이라고 생각될 수 있으며 혼합 검색의 다양한 대안적인 구현예가 사용될 수 있음을 설명하기 위해 본원에 기술된다. 단지 설명을 위해서, 순서도(700)의 방법이 도 1에 관해 전술한 바와 같은 시스템(100)의 다양한 컴포넌트들과 관련하여 지금부터 설명될 것이다. 그러나, 당업자(들)라면 상기 방법이 다른 컴포넌트 또는 시스템으로도 구현될 수 있음을 이해할 것이다.
도 7에 도시된 바와 같이, 순서도(700)의 방법은 단계(702)에서 시작되며, 이 단계 동안 사용자는 사용자 장치(106)에 질의를 입력하여 검색을 시작한다. 이러한 질의가 입력되고 이러한 검색이 시작되는 방식은 구현예에 따라 달라질 수 있다.
단계(704)에서, 혼합 검색 논리(126)는 단계(702) 동안 입력된 질의에 기반하여 로컬 스토어(114)에 저장된 전자 메시지들에 대한 검색을 로컬에서 실행한다. 단계(704)에서 실행되는 검색은 사전 결정된 개수 이하의 매치하는 메시지만을 출력하도록 그 한도가 정해지고(capped), 사전 결정된 개수는 검색에서 확인될 수 있는 매치하는 메시지들의 전채 개수보다 작을 것이다.
단계(704) 동안, 혼합 검색 논리(126)는 한도가 정해진 로컬 검색 결과로서 식별된 임의의 전자 메시지들에 관한 정보를 GUI(132)에 프레젠테이션한다. 프레젠테이션된 정보는 대체적으로 전자 메시지에 관한 임의의 정보 아이템을 포함할 수 있다. 특정 실시예에서, 단계(704) 동안 실행된 한도가 정해진 로컬 검색의 결과로서 정보가 프레젠테이션된 각각의 매치하는 전자 메시지의 경우, 사용자가 이런 전자 메시지의 컨텐츠를 GUI(132)에 디스플레이시킬 수 있는 수단 역시 프레젠테이션된다. 예를 들어, 이 수단은, 사용자와 인터랙션할 때, 전자 메시지의 컨텐츠를 GUI(132) 내에 디스플레이시키게 하는 각각의 전자 메시지에 관한 정보와 관련하여 프레젠테이션되는 컴포넌트를 포함할 수 있다. 이런 실시예에 따르면, 사용자가 보기 위한 전자 메시지를 선택하면, 혼합 검색 논리(126)는 로컬 스토어(114)로부터 전자 메시지의 컨텐츠를 얻어서 이런 컨텐츠를 GUI(132) 내에 디스플레이할 것이다.
순서도(700)의 방법에 따르면, 단계(704)의 일부로서, 혼합 검색 논리(126)는 더 많은 검색 결과가 있을 수 있다는 표시를 GUI(132)를 통해 사용자에게 제공하고 사용자가 추가 검색을 활성화할 수 있는 컴포넌트도 프레젠테이션한다. 예를 들어, 혼합 검색 논리(126)는 "더 보기"라는 단어를 포함하거나 수반하는 사용자 인터페이스 컴포넌트를 프레젠테이션할 수 있고, 사용자는 추가 검색 결과를 얻기 위해 이 단어를 클릭할 수 있다. 그러나, 이는 단지 일례에 불과하며, 매우 다양한 다른 표시들과 사용자 인터페이스 컴포넌트들을 사용할 수 있다. 사용자가 사용자 인터페이스 컴포넌트를 활성화하지 않은 경우, 순서도(700)의 방법이 종료된다. 그러나, 단계(706)에 도시된 대로, 사용자가 사용자 인터페이스 컴포넌트를 활성화한 경우, 제어는 단계(708)로 진행된다.
결정 단계(708) 동안, 혼합 검색 논리(126)는 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있는지 여부를 결정한다. 이런 연결의 존재 여부를 결정하기 위해, 사용자 장치(106)와 전자 메시징 서버(102) 간의 메시지 교환 요구 또는 사용자 장치(106)가 네트워크(104)에 대해 작동하고 있는 연결을 갖고 있다는 단순 결정을 포함하는, 그러나 이에 제한되지 않는, 다양한 방법을 사용할 수 있다.
혼합 검색 논리(126)가 결정 단계(708) 동안 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있지 않다고 결정하면, 제어는 단계(710)로 진행된다. 단계(710)에서, 혼합 검색 논리(126)는 단계(702)에서 입력된 질의에 기반하여 로컬 스토어(114)에 저장된 전자 메시지들에 대한 한도가 없는(uncapped) 검색을 실행한다. 단계(704)에서 실행되는 검색은 한도가 없으므로, 매치한다고 결정되는 모든 메시지들을 출력하게 된다.
단계(710) 동안, 혼합 검색 논리(126)는 한도가 없는 로컬 검색 결과로서 식별된 임의의 전자 메시지들에 관한 정보를 GUI(132)에 프레젠테이션한다. 프레젠테이션된 정보는 대체적으로 전자 메시지에 관한 임의의 정보 아이템을 포함할 수 있다.
특정 실시예에서, 단계(710) 동안 실행된 한도가 없는 로컬 검색의 결과로서 정보가 프레젠테이션된 각각의 매치하는 전자 메시지의 경우, 사용자가 이런 전자 메시지의 컨텐츠를 GUI(132)에 디스플레이시킬 수 있는 수단 역시 프레젠테이션된다. 예를 들어, 이 수단은, 사용자와 인터랙션할 때, 전자 메시지의 컨텐츠를 GUI(132) 내에 디스플레이시키게 하는 각각의 전자 메시지에 관한 정보와 관련하여 프레젠테이션되는 컴포넌트를 포함할 수 있다. 이런 실시예에 따르면, 사용자가 보기 위한 전자 메시지를 선택하면, 혼합 검색 논리(126)는 로컬 스토어(114)로부터 전자 메시지의 컨텐츠를 얻어서 이런 컨텐츠를 GUI(132) 내에 디스플레이할 것이다.
단계(710) 이후에, 제어는 결정 단계(712)로 진행되며, 이 단계 동안 혼합 검색 논리(126)는 로컬 스토어(114)에 캐싱되어 있지 않지만 원격 스토어(132)에 이용 가능한 전자 메시지들의 존재 여부를 결정한다. 이런 결정을 내리는 방법은 구현예에 따라 달라질 수 있다. 예를 들어, 일 실시예에서, 로컬 스토어(114)에 캐싱되어 있으면서 원격 스토어(132)에 이용 가능한 전자 메시지의 서브셋만을 얻을 수 있는 시간-기반 동기화 창이 사용되고 있다고 결정함으로써, 혼합 검색 논리(126)는 로컬 스토어(114)에 캐싱되어 있지 않지만 원격 스토어(132)에 이용 가능한 전자 메시지들이 존재한다고 결정한다. 그러나, 다른 기법들도 사용될 수 있다.
로컬 스토어(114)에 캐싱되어 있지 않으면서 원격 스토어(132)에 이용 가능한 전자 메시지들이 없다고 혼합 검색 논리(126)가 결정 단계(712) 동안 결정하면, 순서도(700)의 방법이 종료된다. 그러나, 로컬 스토어(114)에 캐싱되어 있지 않지만 원격 스토어(132)에 이용 가능한 전자 메시지들이 존재한다고 혼합 검색 논리(126)가 결정 단계(712) 동안 결정하면, 제어는 결정 단계(714)로 진행되고, 이 단계 동안 혼합 검색 논리(126)는 한도가 없는 로컬 검색 결과가 불완전할 수 있다는 표시나 경고를 GUI(132)를 통해 사용자에게 제공한다.
앞서 언급한 바와 같이, 결정 단계(708) 동안, 혼합 검색 논리(126)는 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있는지 여부를 결정한다. 혼합 검색 논리(126)가 결정 단계(708) 동안 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있다고 결정하면, 제어는 단계(716)로 진행된다.
결정 단계(716)에서, 혼합 검색 논리(126)는 로컬 스토어(114)에 캐싱되어 있지 않지만 원격 스토어(132)에 이용 가능한 전자 메시지들의 존재 여부를 결정한다. 로컬 스토어(114)에 캐싱되어 있지 않으면서 원격 스토어(132)에 이용 가능한 전자 메시지들이 없다고 혼합 검색 논리(126)가 결정 단계(716) 동안 결정하면, 제어는 결정 단계(718)로 진행된다.
결정 단계(718) 동안, 혼합 검색 논리(126)는 사용자 장치(106)에 대해 로컬에 저장된 검색 인덱스가 오래되었는지(out of date) 여부를 결정한다. 검색 인덱스가 오래되지 않았다고 혼합 검색 논리(126)에서 결정하면, 제어는 전술한 단계(710)로 진행된다.
로컬 스토어(114)에 캐싱되어 있지 않지만 원격 스토어(132)에 이용 가능한 전자 메시지들이 존재한다고 혼합 검색 논리(126)가 단계(716) 동안 결정하거나 또는 검색 인덱스가 오래되었다고 혼합 검색 논리(126)가 결정 단계(718) 동안 결정하면, 제어는 단계(720)로 진행된다. 단계(720) 동안, 전자 메시징 서버(102)는 단계(702) 동안 입력된 질의에 기반하여 원격 스토어(132)에 저장된 이용 가능한 전자 메시지들에 대한 한도가 없는 검색을 실행하여, 매치하는 전자 메시지들을 식별하는 목록을 반환한다. 혼합 검색 논리(126)는 매치하는 전자 메시지들에 관한 정보를 GUI(132)에 프레젠테이션한다. 프레젠테이션된 정보는 대체적으로 전자 메시지에 관한 임의의 정보 아이템을 포함할 수 있다.
특정 실시예에서, 단계(720) 동안 실행된 원격 검색의 결과로서 정보가 프레젠테이션된 각각의 매치하는 전자 메시지의 경우, 사용자가 이런 전자 메시지의 컨텐츠를 GUI(132)에 디스플레이시킬 수 있는 수단 역시 프레젠테이션된다. 예를 들어, 이 수단은, 사용자와 인터랙션할 때, 전자 메시지의 컨텐츠를 GUI(132) 내에 디스플레이시키게 하는 각각의 전자 메시지에 관한 정보와 관련하여 프레젠테이션되는 컴포넌트를 포함할 수 있다.
이런 실시예에 따르면, 사용자가 보기 위한 전자 메시지를 선택하면, 혼합 검색 논리(126)는 전자 메시지의 컨텐츠를 얻어서 이런 컨텐츠를 GUI(132) 내에 디스플레이할 것이다. 선택된 전자 메시지의 복사본이 로컬 스토어(114)에 저장되어 있으면, 혼합 검색 논리(126)는 로컬 스토어(114)로부터 전자 메시지의 컨텐츠를 얻을 것이다. 그러나, 선택된 전자 메시지의 복사본이 로컬 스토어(114)에 없으면(즉, 선택된 전자 메시지가 동기화 창 밖에 있으면), 혼합 검색 논리(126)는 전자 메시징 서버(102)와의 인터랙션을 통해 원격 스토어(132)로부터 전자 메시지의 컨텐츠를 얻을 것이다. 이 후자의 경우에, 혼합 검색 논리(126)는 프레젠테이션 과정의 일부로서 원격-저장된 전자 메시지의 복사본을 로컬 스토어(114)에 저장하지 않을 것이다. 다시 말해서, 원격-저장된 전자 메시지의 컨텐츠가 그 디스플레이를 용이하게 하기 위해 사용자 장치(106)의 메모리 내에 임시로 버퍼링될 수 있더라도, 사용자가 원격-저장된 전자 메시지의 컨텐츠를 보기 위해 사용되는 GUI(132)의 부분을 닫으면, 이렇게 버퍼링된 데이터는 버려질 수 있다.
대안적인 실시예에 따르면, 사용자가 사용자 장치(106)에 질의를 입력하여 검색을 시작한다. 혼합 검색 논리(126)가 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있다고 결정하는 경우, 전자 메시징 서버(102)는 질의에 기반하여 원격 스토어(132)에 저장된 이용 가능한 전자 메시지들에 대한 한도가 없는 검색을 실행하여, 사용자로부터의 추가 입력 없이 매치하는 전자 메시지들을 식별하는 목록을 반환한다. 매치하는 전자 메시지들에 관한 정보는 혼합 뷰를 사용하여 GUI(132)에 프레젠테이션될 수 있고, 따라서 로컬에 캐싱된 매치하는 전자 메시지들의 컨텐츠는 로컬 스토어(114)로부터 액세스될 수 있으며 로컬에 캐싱되지 않은 매치하는 전자 메시지들의 컨텐츠는 원격 스토어(132)로부터 액세스될 수 있다.
또 다른 실시예에 따르면, 사용자가 사용자 장치(106)에 질의를 입력하여 검색을 시작한다. 사용자 장치(106)가 전자 메시징 서버(102)에 연결되어 있을 때, 혼합 검색 논리(126)는 로컬 스토어(114)에 저장된 전자 메시지들에 대한 검색을 실행하여, 원격 스토어(132)에서 이용 가능한 전자 메시지들에 대한 한도가 없는 검색이 자동으로 실행되게 한다. 이런 실시예에 따르면, 혼합 검색 논리(126)는 먼저 로컬 검색 결과(원격 검색보다 더 빨리 결과가 나올 수 있음)를 사용자에게 프레젠테이션하고 나서, 원격 검색 결과가 반환될 때 원격 스토어(132)에서 이용 가능한 모든 매치하는 전자 메시지들의 전체 혼합 뷰를 프레젠테이션할 수 있다. 이 모두는 질의 입력 및 검색 시작 이후에 사용자로부터의 추가 입력 없이 일어날 수 있다.
Ⅲ. 예시적인 프로세서-기반 시스템 구현예
도 8은 본원에서 설명된 다양한 실시예를 구현하기 위해 사용될 수 있는 예시적인 프로세서-기반 컴퓨터 시스템(800)을 도시한다. 예를 들어, 전자 메시징 서버(102)와 사용자 장치(106) 어느 한쪽 또는 양쪽 모두는 물론, 그 다양한 서브-컴포넌트들도 구현하기 위해 시스템(800)이 사용될 수 있다. 본원에서 제공된 시스템(800)의 기재는 설명 목적으로 제공된 것이며, 한정을 의도한 것이 아니다. 본 발명의 실시예는 추가 유형의 컴퓨터 시스템으로 구현될 수 있으며, 이는 당업자(들)에게 자명할 것이다.
도 8에서 도시된 바와 같이, 시스템(800)은 프로세싱 유닛(802), 시스템 메모리(804), 및 시스템 메모리(804)를 포함하는 다양한 시스템 컴포넌트를 프로세싱 유닛(802)으로 연결하는 버스(806)를 포함한다. 프로세싱 유닛(802)은 하나 이상의 프로세서 또는 프로세싱 코어를 포함할 수 있다. 버스(806)는 여러 유형의 버스 아키텍처, 가령, 메모리 버스 또는 메모리 제어기, 주변장치 버스, 가속 그래픽 포트, 및 다양한 버스 아키텍처 중 임의의 것을 이용하는 프로세서 또는 로컬 버스 중 하나 이상을 나타낸다. 시스템 메모리(804)는 읽기 전용 메모리(ROM)(808) 및 랜덤 액세스 메모리(RAM)(810)를 포함한다. 기본 입/출력 시스템(812)(BIOS)은 ROM(808)에 저장된다.
시스템(800)은 또한 다음의 드라이브들, 하드 디스크로부터 읽고 하드 디스크에 쓰기 위한 하드 디스크 드라이브(814), 이동식 자기 디스크(818)로부터 읽고 이동식 자기 디스크에 쓰기 위한 자기 디스크 드라이브(816), 및 이동식 광학 디스크(822), 가령, CD ROM, DVD ROM, 블루레이 디스크 또는 그 밖의 다른 광학 매체로부터 읽거나 상기 이동식 광학 디스크에 쓰기 위한 광학 디스크 드라이브(820) 중에서 하나 이상을 갖고 있다. 하드 디스크 드라이브(814), 자기 디스크 드라이브(816), 및 광학 디스크 드라이브(820)는 하드 디스크 드라이브 인터페이스(824), 자기 디스크 드라이브 인터페이스(826) 및 광학 드라이브 인터페이스(828)에 의해 각각 버스(806)로 연결되어 있다. 상기 드라이브 및 이들의 연관된 컴퓨터 판독 가능 매체는 컴퓨터 판독 가능 명령, 데이터 구조, 프로그램 모듈, 및 컴퓨터를 위한 그 밖의 다른 데이터의 비휘발성 저장을 제공한다. 하드 디스크, 이동식 자기 디스크 및 이동식 광학 디스크가 기재되었지만, 그 밖의 다른 유형의 컴퓨터 판독 가능 저장 매체가 데이터를 저장하기 위해 사용될 수 있는데, 가령, 플래시 메모리 카드, 디지털 비디오 디스크, 랜덤 액세스 메모리(RAM), 읽기 전용 메모리(ROM) 등이 있다.
다수의 프로그램 모듈이 하드 디스크, 자기 디스크, 광학 디스크, ROM 또는 RAM 상에 저장될 수 있다. 이들 프로그램은 운영 체제(830), 하나 이상의 애플리케이션 프로그램(832), 기타 프로그램 모듈(834), 및 프로그램 데이터(836)를 포함한다. 다양한 실시예에 따르면, 프로그램 모듈은 전자 메시징 서버(102)와 사용자 장치(106)는 물론, 그 서브-컴포넌트들의 임의의 또는 모든 기능 및 특징을 수행하기 위해 프로세싱 유닛(802)에 의해 실행될 수 있는 컴퓨터 프로그램 논리를 포함할 수 있다. 프로그램 모듈은 또한, 프로세싱 유닛(802)에 의해 실행될 때, 도 2-7과 관련하여 도시되거나 설명된 단계들 또는 동작들을 실행하는 컴퓨터 프로그램 논리를 포함할 수 있다.
사용자는 키보드(838) 및 포인팅 장치(840)와 같은 입력 장치를 통해 명령어 및 정보를 시스템(800)에 입력할 수 있다. 그 밖의 다른 입력 장치(도시되지 않음)가 마이크로폰, 조이스틱, 게임 패드, 위성 접시, 스캐너 등을 포함할 수 있다. 일 실시예에서, 사용자가 터치 스크린 상의 한 개 이상의 포인트에 (예를 들어, 손가락이나 스타일러스에 의한) 터치 적용을 통해 사용자 입력을 제공할 수 있도록 디스플레이(844)와 함께 터치 스크린이 제공된다. 이들 및 그 밖의 다른 입력 장치가 버스(806)에 연결된 직렬 포트 인터페이스(842)를 통해 프로세싱 유닛(802)으로 연결되지만 그 밖의 다른 인터페이스, 가령, 병렬 포트, 게임 포트, 또는 USB(universal serial bus)에 의해 연결될 수 있다.
또한 디스플레이 장치(844)는 비디오 어댑터(846)와 같은 인터페이스를 통해 버스(806)로 연결된다. 모니터에 추가로, 시스템(800)은 스피커 및 프린터와 같은 기타 다른 주변 출력 장치(도시되지 않음)를 포함할 수 있다.
시스템(800)은 네트워크 인터페이스 또는 어댑터(850), 모뎀(852) 또는 네트워크를 통한 통신을 확립하기 위한 그 밖의 다른 수단을 통해 네트워크(848)(예컨대, 근거리 통신망 또는 인터넷과 같은 광역 통신망)로 연결된다. 내부형 또는 외부형일 수 있는 모뎀(852)이 직렬 포트 인터페이스(842)를 통해 버스(806)로 연결된다.
본원에 기재될 때, 일반적으로 용어 "컴퓨터 프로그램 매체" 및 "컴퓨터-판독 가능 매체"는 시스템 메모리(804), 하드 디스크 드라이브(814)와 연관된 하드 디스크, 이동식 자기 디스크(818), 이동식 광학 디스크(822)뿐만 아니라, 플래시 메모리 카드, 디지털 비디오 디스크와 같은 기타 매체를 구현하기 위해 사용되는 ROM(808) 및 RAM(810)과 같은 비-일시적 매체를 지칭하기 위해 사용된다.
앞서 설명된 바와 같이, 컴퓨터 프로그램 및 모듈(애플리케이션 프로그램(832) 및 그 밖의 다른 프로그램 모듈(834) 포함)이 ROM(808), RAM(810), 하드 디스크, 자기 디스크, 또는 광학 디스크에 저장될 수 있다. 이러한 컴퓨터 프로그램은 네트워크 인터페이스(850) 또는 직렬 포트 인터페이스(842)를 통해 수신될 수 있다. 이러한 컴퓨터 프로그램은, 프로세싱 유닛(802)에 의해 실행될 때, 시스템(800)으로 하여금 본원에 기재된 본 발명의 실시예의 특징을 구현하도록 한다. 따라서 이러한 컴퓨터 프로그램은 시스템(800)의 제어기를 나타낸다.
본 실시예들은 또한 임의의 컴퓨터 사용 가능 매체 상에 저장되는 소프트웨어를 포함하는 컴퓨터 프로그램 제품과 관련된다. 이러한 소프트웨어는, 하나 이상의 데이터 프로세싱 장치에서 실행될 때, 데이터 프로세싱 장치(들)이 본원에 기재된 대로 동작하게 한다. 본 실시예들은 현재 알려져 있거나 미래에 알려질 임의의 컴퓨터 사용 가능 또는 컴퓨터 판독 가능 매체를 이용한다. 컴퓨터 판독 가능 매체의 예로는, ROM, RAM, 하드 드라이브, 플로피 디스크, CD ROM, DVD ROM, 집 디스크(zip disk), 테이프, 자기 저장 장치, 광학 저장 장치, MEMS-기반 저장 장치, 나노 기술 기반 저장 장치 등의 저장 장치를 포함하지만 이에 제한되는 것은 아니다.
대안적인 구현예에서, 전자 메시징 서버(102)와 사용자 장치(106)뿐만 아니라 그 서브-컴포넌트들 각각은 하드웨어 논리/전기 회로 또는 펌웨어로 구현될 수 있다. 추가 실시예에 따르면, 이들 컴포넌트들 중 하나 이상은 시스템-온-칩(SoC)으로 구현될 수 있다. SoC는 자신의 기능을 수행하기 위해 프로세서(예컨대, 마이크로 제어기, 마이크로 프로세서, 디지털 신호 프로세서(DSP) 등), 메모리, 하나 이상의 통신 인터페이스, 및/또는 추가 회로 및/또는 내장형 펌웨어 중 하나 이상을 포함하는 집적 회로 칩을 포함할 수 있다.
Ⅳ. 결론
본 발명의 다양한 실시예가 전술되었지만, 이들은 예시를 위해 제공된 것이며 한정이 아님을 이해해야 한다. 당업자(들)이라면, 본 발명의 사상과 범위 내에서 형태와 세부 사항의 다양한 변형이 이뤄질 수 있음을 알 것이다. 따라서 본 발명의 범위와 사상은 전술한 어떠한 예시적 실시예에 의해서도 제한되지 않고, 이하의 특허청구범위 및 이의 균등물에 따라서만 정의되어야 한다.
Claims (20)
- 사용자 장치에 설치된 전자 메시징 클라이언트에 의해 실행되는 방법으로서,
하나 이상의 제1 전자 메시지에 대응하는 정보 및 컨텐츠를 상기 사용자 장치의 디스플레이 상에 렌더링된 그래픽 사용자 인터페이스에 디스플레이하는 단계- 상기 하나 이상의 제1 전자 메시지는 동기화 창(synchronization window)에 의해 지정된 시간 프레임에 대응하는 시간 정보를 가지며, 상기 하나 이상의 제1 전자 메시지의 상기 정보 및 컨텐츠는 상기 사용자 장치의 로컬의 비휘발성 저장 장치에 저장되어 있음 -,
상기 하나 이상의 제1 전자 메시지와 다른 하나 이상의 제2 전자 메시지의 표시를 디스플레이하는 단계- 상기 하나 이상의 제2 전자 메시지는 전자 메시징 서버와 연관된 원격 스토어에 저장되고 상기 사용자 장치의 상기 로컬의 비휘발성 저장 장치에는 저장되지 않으며, 상기 하나 이상의 제2 전자 메시지는 상기 동기화 창에 의해 지정된 상기 시간 프레임을 벗어난 시간 정보를 가짐 -와,
상기 하나 이상의 제2 전자 메시지의 표시에 대한 제1 사용자 인터랙션을 수신하는 단계와,
상기 하나 이상의 제2 전자 메시지의 표시에 대한 상기 제1 사용자 인터랙션을 수신하는 것에 응답하여, 상기 하나 이상의 제2 전자 메시지에 대응하는 정보 및 컨텐츠를 불러오는 단계와,
상기 하나 이상의 제2 전자 메시지에 대응하는 상기 정보 및 컨텐츠를 상기 사용자 장치의 버퍼에 일시적으로 저장하는 단계- 상기 버퍼는 상기 로컬의 비휘발성 저장 장치와는 별개임 -와,
상기 하나 이상의 제2 전자 메시지에 대응하는 상기 정보 및 컨텐츠를, 상기 그래픽 사용자 인터페이스 내의 상기 하나 이상의 제1 전자 메시지에 대응하는 상기 정보 및 컨텐츠와 동시에 상기 그래픽 사용자 인터페이스 내에 디스플레이하는 단계- 상기 하나 이상의 제2 전자 메시지는 상기 전자 메시징 클라이언트가 닫히게 되면 상기 버퍼로부터 제거됨 -를 포함하는
방법. - 제 1 항에 있어서,
상기 하나 이상의 제2 전자 메시지에 대응하는 상기 정보 및 컨텐츠가 상기 하나 이상의 제1 전자 메시지에 대응하는 상기 정보 및 컨텐츠와 동시에 상기 그래픽 사용자 인터페이스에 디스플레이되게 하는 컴포넌트를 상기 그래픽 사용자 인터페이스 내에 제공하는 단계를 더 포함하는
방법. - 제 1 항에 있어서,
상기 하나 이상의 제1 전자 메시지 중에서 선택된 하나의 제1 전자 메시지의 컨텐츠가 상기 그래픽 사용자 인터페이스에 디스플레이되게 하는 컴포넌트를 상기 그래픽 사용자 인터페이스 내에 제공하는 단계와,
상기 컴포넌트와의 제2 사용자 인터랙션을 수신하는 단계와,
상기 컴포넌트와의 제2 사용자 인터랙션을 수신하는 단계에 대한 응답으로, 상기 그래픽 사용자 인터페이스에서의 디스플레이를 위해 상기 로컬의 비휘발성 저장 장치로부터 상기 하나 이상의 제1 전자 메시지 중에서 선택된 상기 하나의 제1 전자 메시지의 컨텐츠를 얻는 단계를 더 포함하는
방법. - 제 1 항에 있어서,
상기 하나 이상의 제2 전자 메시지 중에서 선택된 하나의 제2 전자 메시지의 컨텐츠가 상기 그래픽 사용자 인터페이스에 디스플레이되게 하는 컴포넌트를 상기 그래픽 사용자 인터페이스 내에 제공하는 단계와,
상기 컴포넌트와의 인터랙션이 수행된 것으로 판정하는 단계와,
상기 컴포넌트와의 인터랙션이 수행된 것으로 판정한 것에 응답하여,
상기 그래픽 사용자 인터페이스에서의 디스플레이를 위해 상기 원격 스토어로부터 상기 하나 이상의 제2 전자 메시지 중에서 선택된 상기 하나의 제2 전자 메시지의 컨텐츠를 얻는 단계와,
상기 하나 이상의 제2 전자 메시지 중에서 선택된 상기 하나의 제2 전자 메시지의 컨텐츠의 사본을 상기 로컬의 비휘발성 저장 장치에 저장하지 않고 상기 하나 이상의 제2 전자 메시지 중에서 선택된 상기 하나의 제2 전자 메시지의 컨텐츠를 상기 사용자 장치의 상기 버퍼에 일시적으로 버퍼링하는 단계를 더 포함하는
방법. - 제 1 항에 있어서,
상기 동기화 창의 상기 시간 프레임을 변경하는 컴포넌트를 제공하는 단계를 더 포함하는
방법. - 제 1 항에 있어서,
상기 하나 이상의 제1 전자 메시지 및 상기 하나 이상의 제2 전자 메시지는 이-메일 메시지를 포함하는
방법. - 사용자 장치에 설치된 전자 메시징 클라이언트에 의해 실행되는 방법으로서,
상기 사용자 장치 상에서 하나 이상의 용어(term)를 포함하는 질의를 수신하는 단계와,
상기 질의의 하나 이상의 용어를 사용하여 상기 사용자 장치의 로컬 스토어에 캐싱된 제1 복수의 전자 메시지에 대한 제1 검색을 실행하는 단계- 상기 로컬 스토어는 비휘발성의 저장소를 포함하고, 상기 로컬 스토어에 캐싱된 상기 제1 복수의 전자 메시지는 롤링 시간 기반 동기화 창(rolling time-based synchronization window)에 의해 지정된 시간 프레임 내에 속하는 시간 정보를 가짐 -와,
상기 제1 검색의 실행의 결과로서 식별된 적어도 하나의 전자 메시지에 대한 정보를 상기 사용자 장치의 디스플레이에 렌더링된 그래픽 사용자 인터페이스에 디스플레이하는 단계와,
상기 로컬 스토어가 아닌 원격 스토어에서 이용가능한 제2 복수의 전자 메시지의 표시를 디스플레이하는 단계- 상기 원격 스토어에서 이용가능한 상기 제2 복수의 전자 메시지는 상기 동기화 창에 의해 지정된 상기 시간 프레임을 벗어난 시간 정보를 가짐 -와,
상기 제2 복수의 전자 메시지의 표시에 대한 제1 사용자 인터랙션을 수신하는 단계와,
상기 질의의 하나 이상의 용어를 사용하여, 상기 제2 복수의 전자 메시지에 대한 제2 검색을 수행하는 단계와,
상기 제2 검색의 실행의 결과로서 식별된 적어도 하나의 전자 메시지에 대한 정보를 상기 그래픽 사용자 인터페이스에 디스플레이하는 단계- 상기 제2 검색의 실행의 결과로서 식별된 상기 적어도 하나의 전자 메시지에 대한 정보는 상기 로컬 스토어와는 별개인 상기 사용자 장치의 메모리에 일시적으로 버퍼링되고, 상기 제2 검색의 실행의 결과로서 식별된 상기 적어도 하나의 전자 메시지는 상기 전자 메시징 클라이언트가 닫히게 되면 상기 메모리로부터 제거됨 -를 포함하는
방법. - 제 7 항에 있어서,
상기 제2 검색은 수신된 입력에 응답하여 실행되는
방법. - 제 7 항에 있어서,
상기 로컬 스토어에 캐싱된 제1 전자 메시지에 대한 정보와 상기 로컬 스토어에 캐싱되지 않은 제2 전자 메시지에 대한 정보를 상기 제2 검색의 실행의 결과로서 상기 그래픽 사용자 인터페이스에 동시에 디스플레이하는 단계와,
상기 그래픽 사용자 인터페이스의 제1 컴포넌트와의 사용자 인터랙션에 응답하여, 상기 그래픽 사용자 인터페이스에서의 디스플레이를 위해 상기 로컬 스토어로부터 상기 제1 전자 메시지의 컨텐츠를 얻는 단계와,
상기 그래픽 사용자 인터페이스의 제2 컴포넌트와의 사용자 인터랙션에 응답하여, 상기 그래픽 사용자 인터페이스에서의 디스플레이를 위해 상기 원격 스토어로부터 상기 제2 전자 메시지의 컨텐츠를 액세스하고 상기 제2 전자 메시지의 컨텐츠의 사본을 상기 로컬 스토어에 저장하지 않고 상기 제2 전자 메시지의 컨텐츠를 상기 사용자 장치의 상기 메모리에 일시적으로 버퍼링하는 단계를 더 포함하는
방법. - 제 7 항에 있어서,
상기 제2 복수의 전자 메시지의 표시는 상기 제1 검색의 결과가 불완전할 수 있음을 나타내는
방법. - 제 7 항에 있어서,
상기 제1 복수의 전자 메시지 및 상기 제2 복수의 전자 메시지는 이-메일 메시지를 포함하는
방법. - 제 1 항에 있어서,
상기 동기화 창은 롤링 시간 기반 동기화 창을 포함하는
방법. - 제 7 항에 있어서,
상기 제2 검색을 실행한 결과로서의 상기 적어도 하나의 전자 메시지 전체를 다운로드하는 단계를 더 포함하는
방법. - 컴퓨팅 장치로서,
적어도 하나의 프로세서와,
상기 적어도 하나의 프로세서에 연결되고, 명령어를 저장하는 메모리를 포함하되,
상기 명령어는 상기 적어도 하나의 프로세서에 의해 실행되는 경우,
하나 이상의 용어를 포함하는 질의를 수신하고,
상기 질의의 하나 이상의 용어를 사용하여 로컬 스토어에 캐싱된 제1 복수의 전자 메시지에 대한 제1 검색을 실행하고- 상기 로컬 스토어는 비휘발성의 저장소를 포함하고, 상기 로컬 스토어에 캐싱된 상기 제1 복수의 전자 메시지는 롤링 시간 기반 동기화 창(rolling time-based synchronization window)에 의해 지정된 시간 프레임 내에 속하는 시간 정보를 가짐 -,
상기 제1 검색의 실행의 결과로서 식별된 적어도 하나의 전자 메시지에 대한 정보를 그래픽 사용자 인터페이스에 디스플레이하고,
상기 로컬 스토어가 아닌 원격 스토어에서 이용가능한 제2 복수의 전자 메시지의 표시를 디스플레이하고- 상기 원격 스토어에서 이용가능한 상기 제2 복수의 전자 메시지는 상기 동기화 창에 의해 지정된 상기 시간 프레임을 벗어난 시간 정보를 가짐 -,
상기 제2 복수의 전자 메시지의 표시에 대한 제1 사용자 인터랙션을 수신하고,
상기 질의의 하나 이상의 용어를 사용하여, 상기 제2 복수의 전자 메시지에 대한 제2 검색을 수행하며,
상기 제2 검색의 실행의 결과로서 식별된 적어도 하나의 전자 메시지에 대한 정보를 상기 그래픽 사용자 인터페이스에 디스플레이하되,
상기 제2 검색의 실행의 결과로서 식별된 상기 적어도 하나의 전자 메시지에 대한 정보는 상기 로컬 스토어와는 별개인 메모리에 일시적으로 버퍼링되고, 상기 제2 검색의 실행의 결과로서 식별된 상기 적어도 하나의 전자 메시지는 전자 메시징 클라이언트가 닫히게 되면 상기 별개인 메모리로부터 제거되는
컴퓨팅 장치. - 제 14 항에 있어서,
상기 메모리는 상기 제2 검색의 실행 결과로서 식별된 상기 적어도 하나의 전자 메시지 전체를 다운로드하는 명령어를 더 포함하는
컴퓨팅 장치. - 제 14 항에 있어서,
상기 제2 검색은 수신된 입력에 응답하여 실행되는
컴퓨팅 장치. - 제 14 항에 있어서,
상기 제2 복수의 전자 메시지의 표시는 상기 제1 검색의 결과가 불완전할 수 있음을 나타내는
컴퓨팅 장치. - 제 14 항에 있어서,
상기 제1 복수의 전자 메시지 및 상기 제2 복수의 전자 메시지는 이-메일 메시지를 포함하는
컴퓨팅 장치. - 제 14 항에 있어서,
상기 롤링 시간 기반 동기화 창은 사전설정된 시간이 경과한 후 시간상 앞으로 이동하는
컴퓨팅 장치. - 제 14 항에 있어서,
상기 롤링 시간 기반 동기화 창과 연관된 시간의 길이는 사용자에 의해 구성가능한
컴퓨팅 장치.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/352,999 | 2012-01-18 | ||
US13/352,999 US10255587B2 (en) | 2012-01-18 | 2012-01-18 | System and method for blended presentation of locally and remotely stored electronic messages |
PCT/US2013/021090 WO2013109464A1 (en) | 2012-01-18 | 2013-01-11 | System and method for blended presentation of locally and remotely stored electronic messages |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140124362A KR20140124362A (ko) | 2014-10-24 |
KR102052777B1 true KR102052777B1 (ko) | 2020-01-08 |
Family
ID=48780872
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020147020077A KR102052777B1 (ko) | 2012-01-18 | 2013-01-11 | 로컬 및 원격으로 저장된 전자 메시지의 혼합 프레젠테이션을 위한 시스템 및 방법 |
Country Status (12)
Country | Link |
---|---|
US (1) | US10255587B2 (ko) |
EP (1) | EP2805302A4 (ko) |
JP (1) | JP6279486B2 (ko) |
KR (1) | KR102052777B1 (ko) |
CN (1) | CN104054107A (ko) |
AU (1) | AU2013209993A1 (ko) |
BR (1) | BR112014017636A8 (ko) |
CA (1) | CA2863277A1 (ko) |
MX (1) | MX354899B (ko) |
RU (1) | RU2635887C2 (ko) |
TW (1) | TW201335768A (ko) |
WO (1) | WO2013109464A1 (ko) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI501097B (zh) * | 2012-12-22 | 2015-09-21 | Ind Tech Res Inst | 文字串流訊息分析系統和方法 |
US10740412B2 (en) * | 2014-09-05 | 2020-08-11 | Facebook, Inc. | Pivoting search results on online social networks |
US10979500B1 (en) | 2018-12-31 | 2021-04-13 | Facebook, Inc. | Techniques for directive-based messaging synchronization |
US10855761B1 (en) | 2018-12-31 | 2020-12-01 | Facebook, Inc. | Techniques for in-place directive execution |
US11025576B1 (en) * | 2018-12-31 | 2021-06-01 | Facebook, Inc. | Techniques for backend-specific cursor tracking |
US10992633B1 (en) * | 2018-12-31 | 2021-04-27 | Whatsapp Inc. | Methods and systems for determining an unread message count |
US11055314B1 (en) | 2018-12-31 | 2021-07-06 | Facebook, Inc. | Techniques for a database-driven messaging user interface |
US11329940B2 (en) * | 2019-10-28 | 2022-05-10 | Microsoft Technology Licensing, Llc | Coordinated unread count for email applications |
Family Cites Families (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3505309B2 (ja) | 1996-02-21 | 2004-03-08 | 株式会社東芝 | 電子情報転送方法 |
US6061686A (en) * | 1997-06-26 | 2000-05-09 | Digital Equipment Corporation | Updating a copy of a remote document stored in a local computer system |
US6212265B1 (en) * | 1998-01-27 | 2001-04-03 | Darin Duphorne | Method and apparatus for electronic mail notification |
US6219694B1 (en) * | 1998-05-29 | 2001-04-17 | Research In Motion Limited | System and method for pushing information from a host system to a mobile data communication device having a shared electronic address |
US6438585B2 (en) * | 1998-05-29 | 2002-08-20 | Research In Motion Limited | System and method for redirecting message attachments between a host system and a mobile data communication device |
US6289212B1 (en) | 1998-09-16 | 2001-09-11 | Openwave Systems Inc. | Method and apparatus for providing electronic mail services during network unavailability |
US6983308B1 (en) | 1998-11-19 | 2006-01-03 | Openwave Systems, Inc. | Mail synchronization of remote and local mail systems |
KR20010021089A (ko) | 1999-07-23 | 2001-03-15 | 스테븐 디.피터스 | 네트워크 대역폭을 효율적으로 이용하여 전자 메일서비스를 이동 장치에 제공하기 위한 방법 및 장치 |
US6446118B1 (en) * | 2000-02-29 | 2002-09-03 | Designtech International, Inc. | E-mail notification device |
US6741855B1 (en) * | 2000-03-24 | 2004-05-25 | Sun Microsystems, Inc. | Method and apparatus for remotely managing data via a mobile device |
US6788953B1 (en) * | 2000-06-05 | 2004-09-07 | Uniden America Corporation | Wireless local loop communication system using SLIC module |
US6823373B1 (en) * | 2000-08-11 | 2004-11-23 | Informatica Corporation | System and method for coupling remote data stores and mobile devices via an internet based server |
US7197470B1 (en) * | 2000-10-11 | 2007-03-27 | Buzzmetrics, Ltd. | System and method for collection analysis of electronic discussion methods |
US20030037261A1 (en) * | 2001-03-26 | 2003-02-20 | Ilumin Corporation | Secured content delivery system and method |
US20020184317A1 (en) * | 2001-05-29 | 2002-12-05 | Sun Microsystems, Inc. | System and method for searching, retrieving and displaying data from an email storage location |
EP1405243A2 (en) * | 2001-06-28 | 2004-04-07 | Symbian Limited | E-mail manager program for a wireless information device |
US7161978B2 (en) * | 2001-08-29 | 2007-01-09 | Texas Instruments Incorporated | Transmit and receive window synchronization |
US20030078985A1 (en) * | 2001-10-23 | 2003-04-24 | David Holbrook | Proactive message buffering across intermittent network connections |
US20030078983A1 (en) * | 2001-10-23 | 2003-04-24 | Sullivan Terence Sean | Message prioritization and buffering in a limited network |
WO2003104954A2 (en) * | 2002-06-06 | 2003-12-18 | Green Border Technologies | Methods and systems for implementing a secure application execution environment using derived user accounts for internet content |
US20030236842A1 (en) * | 2002-06-21 | 2003-12-25 | Krishnamurti Natarajan | E-mail address system and method for use between disparate client/server environments |
US7467183B2 (en) | 2003-02-14 | 2008-12-16 | Microsoft Corporation | Method, apparatus, and user interface for managing electronic mail and alert messages |
JP2004279482A (ja) * | 2003-03-12 | 2004-10-07 | Sharp Corp | 表示装置 |
US20060008256A1 (en) * | 2003-10-01 | 2006-01-12 | Khedouri Robert K | Audio visual player apparatus and system and method of content distribution using the same |
FR2860938A1 (fr) * | 2003-10-10 | 2005-04-15 | France Telecom | Dispositif et procede de traitement de messages pour terminal de telecommunication et terminal de telecommunication pourvu d'un tel dispositif |
US8255835B2 (en) * | 2004-02-24 | 2012-08-28 | Research In Motion Limited | Method and system for managing unread electronic messages |
US7698369B2 (en) * | 2004-05-27 | 2010-04-13 | Strongmail Systems, Inc. | Email delivery system using metadata on emails to manage virtual storage |
US7908653B2 (en) * | 2004-06-29 | 2011-03-15 | Intel Corporation | Method of improving computer security through sandboxing |
US20060009243A1 (en) * | 2004-07-07 | 2006-01-12 | At&T Wireless Services, Inc. | Always-on mobile instant messaging of a messaging centric wireless device |
US7212814B2 (en) * | 2004-11-24 | 2007-05-01 | Research In Motion Limited | Methods and apparatus for efficiently managing the storage of e-mail message information for a mobile station |
US8195746B2 (en) * | 2005-03-11 | 2012-06-05 | International Business Machines Corporation | Automatic off-line availability for document content linked in electronic mail messages |
JP2007079888A (ja) | 2005-09-14 | 2007-03-29 | Dainippon Printing Co Ltd | 電子メール管理システム |
CA2564833C (en) * | 2006-01-04 | 2009-01-27 | Steven J. Mccarthy | Electronic mail (email) system providing enhanced message retrieval from email storage server and related methods |
US8015152B2 (en) * | 2006-01-24 | 2011-09-06 | Microsoft Corporation | Web based client/server notification engine |
US8255473B2 (en) * | 2006-04-04 | 2012-08-28 | International Business Machines Corporation | Caching message fragments during real-time messaging conversations |
US20090210631A1 (en) * | 2006-09-22 | 2009-08-20 | Bea Systems, Inc. | Mobile application cache system |
US7761523B2 (en) * | 2007-02-09 | 2010-07-20 | Research In Motion Limited | Schedulable e-mail filters |
US20080261569A1 (en) * | 2007-04-23 | 2008-10-23 | Helio, Llc | Integrated messaging, contacts, and mail interface, systems and methods |
US9438549B2 (en) * | 2007-09-27 | 2016-09-06 | International Business Machines Corporation | Controlling expiration of electronic mail single store attachments |
US9391789B2 (en) | 2007-12-14 | 2016-07-12 | Qualcomm Incorporated | Method and system for multi-level distribution information cache management in a mobile environment |
JP5158590B2 (ja) | 2007-12-21 | 2013-03-06 | Necカシオモバイルコミュニケーションズ株式会社 | ネットワークシステム及びプログラム |
US8185521B2 (en) | 2008-02-29 | 2012-05-22 | Research In Motion Limited | System and method for presentation of local and remote message search results |
US20090254624A1 (en) * | 2008-04-08 | 2009-10-08 | Jeff Baudin | E-mail message management system |
US9508059B2 (en) * | 2008-04-25 | 2016-11-29 | T-Mobile Usa, Inc. | Messaging device having a graphical user interface for initiating communication to recipients |
CN103645953B (zh) | 2008-08-08 | 2017-01-18 | 亚马逊技术有限公司 | 向执行中的程序提供对非本地块数据存储装置的可靠访问 |
US8712384B1 (en) * | 2008-08-26 | 2014-04-29 | Sprint Spectrum L.P. | Method and system for triggering message waiting indicator delivery |
US7877451B2 (en) | 2008-11-26 | 2011-01-25 | International Business Machines Corporation | System, method and program product for distribution of content contained in an electronic mail message |
US8904292B2 (en) * | 2008-12-31 | 2014-12-02 | Motorola Mobility Llc | Method and system for processing electronic mail |
US7921172B2 (en) * | 2009-01-07 | 2011-04-05 | Lenovo (Singapore) Pte. Ltd. | Apparatus, system, and method for wireless presyncing of data |
US8725793B2 (en) | 2009-04-03 | 2014-05-13 | Google Inc. | Architectural pattern for persistent web application design |
US8315607B2 (en) | 2009-04-06 | 2012-11-20 | Htc Corporation | Method and system for filtering incoming messages to a mobile device |
US8918588B2 (en) * | 2009-04-07 | 2014-12-23 | International Business Machines Corporation | Maintaining a cache of blocks from a plurality of data streams |
US20100318745A1 (en) * | 2009-06-16 | 2010-12-16 | Microsoft Corporation | Dynamic Content Caching and Retrieval |
WO2012018556A2 (en) * | 2010-07-26 | 2012-02-09 | Ari Backholm | Mobile application traffic optimization |
US8484314B2 (en) * | 2010-11-01 | 2013-07-09 | Seven Networks, Inc. | Distributed caching in a wireless network of content delivered for a mobile application over a long-held request |
CN103404193B (zh) * | 2010-11-22 | 2018-06-05 | 七网络有限责任公司 | 调校数据传输以优化为通过无线网络的传输建立的连接 |
US9471145B2 (en) | 2011-01-06 | 2016-10-18 | Blackberry Limited | Electronic device and method of displaying information in response to a gesture |
US20130125019A1 (en) * | 2011-11-14 | 2013-05-16 | Research In Motion Limited | System And Method For Displaying Message History When Composing A Message |
-
2012
- 2012-01-18 US US13/352,999 patent/US10255587B2/en active Active
-
2013
- 2013-01-11 EP EP13738171.1A patent/EP2805302A4/en not_active Ceased
- 2013-01-11 RU RU2014129510A patent/RU2635887C2/ru not_active IP Right Cessation
- 2013-01-11 CN CN201380005810.XA patent/CN104054107A/zh active Pending
- 2013-01-11 AU AU2013209993A patent/AU2013209993A1/en not_active Abandoned
- 2013-01-11 WO PCT/US2013/021090 patent/WO2013109464A1/en active Application Filing
- 2013-01-11 MX MX2014008564A patent/MX354899B/es active IP Right Grant
- 2013-01-11 BR BR112014017636A patent/BR112014017636A8/pt not_active IP Right Cessation
- 2013-01-11 KR KR1020147020077A patent/KR102052777B1/ko active IP Right Grant
- 2013-01-11 CA CA2863277A patent/CA2863277A1/en not_active Abandoned
- 2013-01-11 JP JP2014553329A patent/JP6279486B2/ja not_active Expired - Fee Related
- 2013-01-18 TW TW102102023A patent/TW201335768A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
EP2805302A1 (en) | 2014-11-26 |
AU2013209993A1 (en) | 2014-07-31 |
RU2635887C2 (ru) | 2017-11-16 |
JP2015505411A (ja) | 2015-02-19 |
US20130185649A1 (en) | 2013-07-18 |
KR20140124362A (ko) | 2014-10-24 |
WO2013109464A1 (en) | 2013-07-25 |
BR112014017636A2 (ko) | 2017-06-20 |
CA2863277A1 (en) | 2013-07-25 |
BR112014017636A8 (pt) | 2017-12-12 |
EP2805302A4 (en) | 2015-08-19 |
JP6279486B2 (ja) | 2018-02-14 |
MX354899B (es) | 2018-03-23 |
RU2014129510A (ru) | 2016-02-10 |
MX2014008564A (es) | 2014-09-26 |
US10255587B2 (en) | 2019-04-09 |
CN104054107A (zh) | 2014-09-17 |
TW201335768A (zh) | 2013-09-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102052777B1 (ko) | 로컬 및 원격으로 저장된 전자 메시지의 혼합 프레젠테이션을 위한 시스템 및 방법 | |
US20200064976A1 (en) | Aggregated, interactive communication timeline | |
US8375007B2 (en) | Status tool to expose metadata read and write queues | |
US9218350B2 (en) | Searching and placeholders | |
AU2022204382A1 (en) | Systems and techniques for aggregation, display, and sharing of data | |
US10866701B2 (en) | Reorder and selection persistence of displayed objects | |
CN106462631B (zh) | 在最终一致系统中分区数据的一致视图 | |
US20140043355A1 (en) | Method and apparatus for dynamic image manipulation in a mobile terminal | |
CN108090079B (zh) | 一种即时聊天工具的聊天记录处理方法及装置 | |
KR20110034595A (ko) | 동기화된 대화 중심적인 메시지 리스트 및 메시지 읽기 창 | |
US8560496B2 (en) | Database query across processes with change notification | |
US20110264689A1 (en) | Method and apparatus for searching message data in a portable electronic device | |
US9946427B1 (en) | Dynamic home screen | |
CN114706867A (zh) | 数据同步方法、装置、电子设备及存储介质 | |
WO2018145582A1 (zh) | 一种视图切换方法及装置 | |
CN108140039B (zh) | 流式传输来自并行批次的数据库访问的记录 | |
KR102103015B1 (ko) | 인스턴트 메신저 어플리케이션의 동작 방법 및 장치 | |
CN102243643B (zh) | 文件服务器以及在客户机上进行显示的方法 | |
JP2011059919A (ja) | 情報管理装置、情報管理方法、及び、情報管理プログラム | |
KR100864581B1 (ko) | 위젯 컨텐츠 보관 방법 및 시스템 | |
US20100125578A1 (en) | Scalable selection management | |
JP2010097296A (ja) | 電子文書ファイル検索装置、電子文書ファイル検索方法及びコンピュータプログラム | |
TWI496009B (zh) | 有效顯示電子郵件之方法及裝置 | |
WO2020044935A1 (ja) | 検索装置、検索方法及び検索プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
N231 | Notification of change of applicant | ||
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right |