KR20160082980A - 이메일 웹클라이언트 통지 큐잉 - Google Patents

이메일 웹클라이언트 통지 큐잉 Download PDF

Info

Publication number
KR20160082980A
KR20160082980A KR1020167009835A KR20167009835A KR20160082980A KR 20160082980 A KR20160082980 A KR 20160082980A KR 1020167009835 A KR1020167009835 A KR 1020167009835A KR 20167009835 A KR20167009835 A KR 20167009835A KR 20160082980 A KR20160082980 A KR 20160082980A
Authority
KR
South Korea
Prior art keywords
notification
server
web client
http server
computer
Prior art date
Application number
KR1020167009835A
Other languages
English (en)
Other versions
KR101881232B1 (ko
Inventor
다니엘 크리스티안토
이보 반 두른
시몬 코스터
Original Assignee
아마존 테크놀로지스, 인크.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/029,113 external-priority patent/US9961027B2/en
Application filed by 아마존 테크놀로지스, 인크. filed Critical 아마존 테크놀로지스, 인크.
Publication of KR20160082980A publication Critical patent/KR20160082980A/ko
Application granted granted Critical
Publication of KR101881232B1 publication Critical patent/KR101881232B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/07User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail characterised by the inclusion of specific contents
    • H04L51/08Annexed information, e.g. attachments
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/224Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
    • H04L51/24
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions

Abstract

이메일 서버로부터 수신된 통지는, HTTP 서버에서 수신된 웹클라이언트로부터 차후의 통신이 있으면, 저장되고 웹클라이언트로 제공될 수 있다. 데이터베이스 또는 저장소 내에 저장된 통지는, 웹클라이언트가 서비스를 요청할 때, 백업 또는 대안적인 HTTP 서버에 의해 복구되고, 웹클라이언트로 전송된다. 작성 중인 메세지를 위해 웹클라이언트로부터 수신된 첨부물은 저장 시스템 내의 HTTP 서버에 의해 저장될 수 있어서, 백업 HTTP 서버는 첨부물을 찾을 수 있고, 사용자가 메세지를 전송할 준비가 될 때, 첨부물을 메세징 서버로 제공할 수 있다.

Description

이메일 웹클라이언트 통지 큐잉{EMAIL WEBCLIENT NOTIFICATION QUEUING}
관련된 출원에 대한 상호-참조
본 출원은 2013년 9월 17일에 출원된 미국 특허 출원 번호 제14/029,113호 및 2013년 9월 24일에 부분 계속 출원된 미국 특허 출원 번호 제14/035,355호의 우선권을 주장하고, 상기 개시물은 그 전체가 본 명세서에 참조로서 포함된다.
이메일 서비스 제공자에 의해 제공되는 서비스와 같이, 인터넷을 통해 제공되는 많은 서비스는, 사용자들이 웹 브라우저를 사용하여 메일 서버와 같은 서버와 상호작용할 수 있도록 하는 웹 인터페이스("웹클라이언트")를 제공한다. 메일 서버로의 사용자 연결은 사용자 웹 페이지 요청에 응답하여 데이터를 복구하는 하나 이상의 웹 서버(전형적으로 하이퍼텍스트 트랜스퍼 프로토콜(HTTP) 서버)에 의해 가능하게 된다. 메일 서버와 웹 서버는 전형적으로 데이터 센터 또는 사용자로부터 원격의 다른 시설에 위치된다. 중복성(redundancy)은, 주요 서버가 오류 발생한 경우에, 서비스를 제공하는 중복 서버 및 하나 이상의 통신 링크가 오류 발생한 경우에, 서비스를 제공하기 위해 인터넷에 연결되는 중복 링크를 포함하여, 대개 이러한 시스템에 구축된다.
웹클라이언트는 HTTP 서버 또는 웹클라이언트가 HTTP 서버를 통해 상호작용하는 다른 서버에 지속적인 연결(가령, 전송 제어 프로토콜(TCP) 연결)을 유지하지 않는다. 이러한 이유로, 이러한 서버로부터 전송된 통지(가령, 새로운 이메일 통지)는 웹클라이언트에 의해 수신되지 않을 수 있는데, 왜냐하면, 서버는 통지를 트리거하고 이러한 통지를 저장하지 않는 이벤트나, 이러한 통지를 전송하기 이전에 웹클라이언트와의 연결성을 확인하는 이벤트에서, 통지를 전송하기 때문이다. 일단 전송되면, 서버는 통지를 보유하지 않으므로, 과거에 전송되었던 통지를 웹클라이어트가 나중에 요청할 수 없다. 따라서, 웹클라이언트의 사용자는 이벤트 발생의 사용자를 경고하도록 의도된 통지를 수신하지 않을 수 있다.
사용자가 웹클라이언트를 사용하여 이메일 메세지와 같은 메세지를 작성할 때, 메세지와 관련된 데이터는 웹클라이언트 내부에 국지적으로 저장된다. 이러한 데이터는 수령인 주소와 문자 콘텐츠를 포함할 수 있다. 사용자가 메세지를 전송하거나 메세지의 초안을 저장하도록 선택할 때, 이러한 데이터는 저장 및/또는 프로세싱을 위해 메일 서버로 전송된다. 일부 시스템에서, 이러한 메세지 콘텐츠는 주기적으로 자동 저장된다. 메세지 작성 동안에, 사용자는 데이터 파일(가령, 이미지, 오디오 파일, 비디오 파일 )을 메세지에 첨부할 수도 있으나, 이러한 파일은 메세지 작성 동안에 웹클라이언트에 저장되지 않고, 사용자가 메세지를 전송하거나 수동으로 메세지의 초안을 저장하기 전까지 메일 서버로 전송되지 않는다. 메세지 작성 동안에 웹클라이언트에 서비스를 제공하는 HTTP 서버로의 연결이 오류가 발생하면, 첨부 데이터는 잃어버릴 수 있다.
도면 전반에 걸쳐, 참조 번호는 재-사용되어서 참조된 요소들 사이의 관련성을 나타낼 수 있다. 도면은 본 명세서에 기술된 예시적인 실시예를 나타내기 위해 제공되고, 개시물의 범위를 제한하려는 의도는 아니다.
도 1은 본 발명의 실시예가 실행될 수 있는 예시적인 실시예를 나타내고;
도 2는 본 발명의 실시예가 실행될 수 있는 또 다른 예시적인 실시예를 나타내고;
도 3은 실시예에 따른 HTTP 서버를 위한 예시적인 동작 절차를 도시하고;
도 4는 실시예에 따른 HTTP 서버를 위한 예시적인 동작 절차를 도시하고;
도 5는 실시예에 따른 HTTP 서버를 위한 예시적인 동작 절차를 도시하고;
도 6은 실시예에 따른 HTTP 서버를 위한 예시적인 동작 절차를 도시하고;
도 7은 실시예에 따른 예시적인 신호 흐름을 도시하고;
도 8은 본 명세서에서 기술된 실시예가 실행될 수 있는 적절한 컴퓨팅 환경의 예시를 도시하고;
도 9는 컴퓨팅 서비스 플랫폼을 실행하는 데이터센터를 위한 하나의 컨피규레이션을 나타낸 컴퓨팅 시스템 다이어그램을 도시하고; 및
도 10은 상기-기술된 소프트웨어 구성을 실행할 수 있는 컴퓨터를 위한 예시적인 컴퓨터 아키텍처를 도시한다.
이메일 시스템 및 많은 소셜 메세징 웹사이트와 그 밖의 다른 상호작용의 웹사이트는, 사용자들이 첨부물을 포함하는 메세지를 서로 전송하기 위한 능력을 주는 메세징 능력을 포함하는 사용자 상호작용을 가능하게 한다. 본 개시물의 다양한 실시예에 따른 시스템과 방법은, 메세지 작성 동안에 서버(가령, HTTP 서버)로의 연결이 지속되지 않으면, 첨부물과 같은 메세지 콘텐츠를 자동으로 저장하기 위한 능력을 제공한다. 예를 들어, 사용자는 HTTP 서버를 통해 원격 서버(가령, 메일 서버)와 통신하도록 구성되는 웹클라이언트를 사용하여 이메일이나 메세지를 작성할 수 있다. 메세지 작성 동안에 많은 메세지 콘텐츠가 웹클라이언트에 의해 저장될 수 있는 반면, 메세지는 웹클라이언트에 저장될 수 없을 수 있는 하나 이상의 첨부물을 포함할 수 있다. HTTP 서버가 오류나거나 아니면 접근할 수 없을 때, 아직 메세지가 배달을 위해 서버에 저장되거나 전송되지 않았기 때문에, 첨부 콘텐츠는 잃어버릴 수 있다. 실시예에서, 메세지가 작성되고 첨부 콘텐츠가 저장 시스템으로 복사하는 동안에, 웹클라이언트가 초기에 통신하였던 HTTP 서버는 첨부 콘텐츠를 수신할 수 있다. 일부 실시예에서, 웹클라이언트에 관한 상태 정보가 저장될 수도 있을 것이다. 또한, HTTP 서버는 데이터베이스 내의 첨부물 및/또는 메세지와 관련된 메타데이터를 저장할 수 있다. 초기 HTTP 서버에의 연결이 오류 발생하면, 웹클라이언트는 데이터베이스 내에 저장된 이메일과 관련된 메타데이터를 사용하여, 저장된 메세지 첨부물을 복구하는 백업 HTTP 서버와 통신할 수 있다. 이렇게 하여, HTTP 서버에의 연결이 지속되지 않을 때, 작성 동안의 사용자의 첨부 데이터는 잃어버리지 않으나, 메세지가 작성되는 동안에 이러한 첨부 데이터를 저장하는데 메일이나 메세지의 저장 공간이 소모되지 않는다.
본 개시물의 다양한 실시예에 따른 시스템 및 방법은 또한, 웹클라이언트의 사용자를 위해 의도된 통지를 큐(queue)하기 위한 능력을 제공한다. 웹클라이언트가 이메일 서버나 이와 유사한 서버 또는 HTTP 서버에의 지속적인 연결을 유지할 수 없기 때문에, 웹클라이언트를 위해 의도된 통지는, 서비스나 활동을 위해 웹클라이언트로부터의 요청에 응답하여 제공될 수 없다면, 웹클라이언트에 의해 누락될 수 있다. 실시예에서, 웹클라이언트와 이메일 서버 또는 다른 시스템 사이의 통신을 가능하게 하는 HTTP 서버는 서버 또는 시스템과 지속적인 연결을 유지할 수 있고, 통지가 서버 또는 시스템에 의해 전송되므로 웹클라이언트를 위해 의도된 통지를 저장할 수 있다. 대안적으로, 이러한 통지는 HTTP 서버에 접근가능한 통지 서버에 의해 수신되고 저장될 수 있다. 그리고 나서, HTTP 서버가 웹클라이언트로부터 HTTP 요청을 수신하면, 이들 통지는 HTTP 서버에 의해 웹클라이언트로 전송된다. 통지 서버상에 저장될 때, HTTP 서버가 웹클라이언트로부터 HTTP 요청을 수신하면, HTTP 서버는 통지를 쿼리(query)하거나, 아니면 복구(retrieve)할 수 있다. 이들 실시예는, 웹클라이언트 및/또는 웹클라이언트와 함께 서버나 시스템에 의해 사용되는 연결 타입을 바꾸지 않으면서, 웹클라이언트가 통지를 수신한다는 것을 보장하는 방법을 제공한다.
본 명세서에서 논의되는 많은 예시가 이메일 시스템과 이메일 서버와 관련하여 논의되지만, 기술 분야에서의 당업자는, 개시된 실시예가 하나 이상의 첨부된 파일을 포함할 수 있는 메세지의 타입의 작성이나 통신 동안에 연결성의 결함이 발생할 수 있는 임의의 시스템에 용이하게 적용될 수 있다는 것을 인식할 것이다. 개시된 실시예는 또한, 웹클라이언트로 임의의 타입의 통지를 제공하는 임의의 시스템에도 용이하게 적용될 수 있다. 이러한 모든 적용예는 본 개시물의 범위 내에 있는 실시예로서 고려된다.
도 1은 본 개시물의 실시예가 실행될 수 있는 비-제한적이고 예시적인 시스템(100)을 도시한다. 사용자는 임의의 타입의 컴퓨터, 컴퓨팅 장치, 모바일 장치, 스마트폰 또는 웹클라이언트를 조작할 수 있는 그 밖의 다른 장치일 수 있는 조작 사용자 장치(101)일 수 있다. 웹클라이언트(110)는 가령, 웹 브라우저에서 사용자 장치(101) 상에서 실행될 수 있다. 웹클라이언트(110)는 이메일 서비스 제공자에 의해 호스트되거나, 아니면 제공되는 이메일 시스템에 인터페이스를 제공하는 이메일 웹클라이언트일 수 있다. 사용자 장치(101)는 일반적으로 다른 장치, 그리고 구체적으로 통신 링크(112)를 통해 인터넷(120)을 사용하여, 하나 이상의 이메일 서비스 제공자 장치와 통신할 수 있다. 통신 링크(112)는, 장치들 사이의 통신을 활성화시키는 임의의 프로토콜이나 다른 수단을 사용하여, 유선 통신 링크, 무선 통신 링크, 및 이들의 조합을 포함하는 둘 이상의 장치들 사이의 통신을 가능하게 하는 임의의 타입과 수의 통신 링크일 수 있다. 인터넷(120)은 장치들 사이의 통신을 가능하게 하는 임의의 타입과 수의 네트워크, 및 이들의 임의의 조합을 나타낸다. 이러한 모든 실시예는 본 개시물의 범위 내에 있는 것으로 고려된다.
웹클라이언트(110)는 통신 링크(112)와 마찬가지로, 임의의 타입과 수의 통신 링크일 수 있는 통신 링크(123)를 사용하여 인터넷(120)에 연결하는 HTTP 서버(130)와 통신할 수 있다. HTTP 서버(130)는 또한 임의의 타입과 수의 통신 링크일 수 있는 통신 링크(173)를 통해 메일 서버(170)와 이메일 데이터를 교환할 수 있다.
사용자가 웹클라이언트(110)를 사용하여 이메일을 작성하는 동안, 이메일 데이터는 웹클라이언트(110)에 의해 사용자 장치(101)상에 국지적으로 저장될 수 있다. 그러나, 사용자가 작성 중에 첨부물을 이메일에 첨부할 때, 첨부물은 종종 웹클라이언트(110)에 의해 저장되지 못할 수 있다. 실시예에서, 사용자가 이메일에 첨부물에 대해 파일을 선택할 때, 이 첨부물은 HTTP 서버(130)로 전송될 수 있다. HTTP 서버(130)는 통신 링크(153)를 통해 첨부물의 복사본을 저장소(150)로 전송할 수 있다. 통신 링크(153)는 임의의 타입과 수의 통신 링크일 수 있다. 저장소(150)는 임의의 타입과 수의 데이터 저장 장치 및 클라우드 저장 시스템을 포함하는 시스템을 나타낸다.
HTTP 서버(130)는 통신 링크(163)를 사용하여 데이터베이스(160) 내에 저장된 첨부물과 이메일과 관련된 메타데이터를 전송하거나 생성할 수 있다. 통신 링크(163)는 임의의 타입과 수의 통신 링크일 수 있다. 데이터베이스(160)는 임의의 타입과 수의 데이터베이스 및 클라우드-기반의 데이터베이스 시스템을 포함하는 데이터베이스 시스템은 물론 임의의 수와 타입의 메모리, 캐시, 디스크 드라이브 을 나타낸다. HTTP 서버(130)에 의해 전송 및/또는 생성되는 메타데이터는, 저장된 첨부물을 웹클라이언트(110) 내에서 작성 중인 이메일과 관련시키기 위해 또 다른 장치에 의해 사용될 수 있는 임의의 정보를 포함할 수 있는데, 상기 정보는 첨부물이 저장소(150) 상의 어디에 저장되는지를 나타내는 저장 위치 정보를 포함할 수 있다. 대안적으로, 첨부물이 저장소(150) 상에 저장되었는지의 표시가 메타데이터 내에 포함될 수 있다. 이러한 메타데이터는 첨부물에 대한 특정 위치의 표시라기 보다는 첨부물이 저장되었다는 표시를 포함하는데, 다른 식별 정보는 저장된 첨부물의 저장 위치를 결정하는데 사용될 수 있다. 예를 들어, 웹클라이언트 식별자(가령, 세션 식별자) 및 첨부물 식별자(가령, 웹클라이언트(110)와 관련된 기록으로 저장된 첨부 이름)의 조합이 저장소(150) 내의 첨부물을 식별하는데 사용될 수 있다. 이러한 메타데이터는 웹클라이언트(110)가 이메일을 작성하는 것을 표시하는 정보와 같은, 웹클라이언트(110)에 관한 상태 정보도 포함할 수 있다. HTTP 서버(130)는 상태 정보를 저장할 수 있고, 주기적으로 또는 임의의 정보가 이메일 첨부에 관하여 저장되는지와 무관하게, 웹클라이언트(110)의 상태가 변화함에 웹클라이언트(110)와 관련된 상태 정보를 업데이트할 수 있다. 이러한 모든 실시예는 본 개시물의 범위 내에 있는 것으로 고려된다.
HTTP 서버(140)는 HTTP 서버(130)를 위한 백업 HTTP 서버로서 서비스함에 의해 사용자에게 중복성을 제공할 수 있다. HTTP 서버(140)는 통신 링크(124)를 사용하여 다른 장치에 연결할 수 있고, 통신 링크(154, 164 및 174)를 사용하여 각각 저장소(150), 데이터 베이스(160) 및 메일 서버(170)와 통신할 수 있다. 각각의 통신 링크(124, 154, 164 및 174)는 임의의 타입과 수의 통신 링크일 수 있다. 도 1에서 웹클라이언트(110)와 다른 장치가 통신 링크(124, 154, 164 및 174)이외의 다른 링크를 사용하여 통신한다는 것을 명확히 하기 위하여, 각각의 통신 링크(124, 154, 164 및 174)는 도 1에서 덜 강조하여 도시된 것을 유의한다. 본 도면에서 도시된 통신 링크의 다양한 폭과 강조는 도시된 통신 링크의 임의의 다른 특징, 특성 또는 제한사항의 표시로 이해되어서는 아니된다.
실시예에서, HTTP 서버(130)는 통신 링크(174)를 통해 메일 서버(170)와 지속적인 연결(가령, TCP 연결)을 구축할 수 있다. 이러한 지속적인 연결은 웹클라이언트(110)와 관련된 통신에 전용될 수 있다. 메일 서버(170)에 접근하기 위해 웹클라이언트(110)로부터 개시 요청을 수신하면 지속적인 연결이 개시될 수 있고, 사전결정된 타임아웃 만기까지 또는 지속적인 연결의 명시적인 종료(가령, 사용자 로그 오프 또는 웹클라이언트(110) 셧다운)가 보증될 때까지 유지될 수 있다. 웹클라이언트의 개시 요청에 응답하여, HTTP 서버(130)는 웹클라이언트(110) 대신에 메일 서버(170)로부터 이메일 데이터(가령, 인박스 내의 메일의 리스팅, 새로운 이메일 )를 요청할 수 있고, 메일 서버(170)로부터 수신하면, 이러한 데이터를 웹클라이언트(110)에 제공할 수 있다.
또한, HTTP 서버(130)는 메일 서버(170)로부터 관련된 웹클라이언트(110) 및/또는 이와 함께 사용자에 대한 통지에 신청할 수 있거나, 아니면, 메일 서버(170)에 의해 HTTP 서버(130)에 제공되는 임의의 이러한 통지를 요청할 수 있다. 통지는 새로이 수신된 이메일의 표시, 달력 리마인더, 미팅 초대 과 같이, 사용자에게 전송될 수 있는 이벤트의 임의의 알림이나 표시를 포함한다. 통지가 발행되면, HTTP 서버(130)는 이러한 통지를 국지적으로(가령, 메모리, 하드 디스크) 저장할 수 있고, 통지를 웹클라이언트(110), 웹클라이언트(110)와 관련된 세션, 및/또는 웹클라이언트(110)와 관련된 사용자와 관련시킬 수 있다. 차후의 통지들이 메일 서버(170)로부터 수신되면서, HTTP 서버(130)는 차후의 통지를 저장할 수 있다. HTTP 서버(130)는 하나 이상의 통지의 수신의 답신(acknowledgement)을 메일 서버(170)에 전송할 수 있다.
HTTP 서버(130)는 메일 서버(170)에 의해 제공되는 데이터나 서비스에 대한 차후의 요청을 웹클라이언트(110)로부터 수신할 수 있다. 이러한 요청에 응답하여, HTTP 서버(130)는 요청을 메일 서버(170)에 포워딩할 수 있고, 메일 서버(170)로부터 요청에 대한 응답을 수신할 수 있다. 그리고 나서, HTTP 서버는 웹클라이언트(110)를 위한 임의의 저장된 통지와 메일 서버(170)로부터 수신된 응답을 조합할 수 있고, 조합된 통신을 웹클라이언트(110)로 전송할 수 있다. 대안적으로, HTTP 서버(130)는 킵얼라이브(keepalive) 통신 또는 메일 서버(170)와 상호작용을 요하지 아니하는 웹클라이언트(110)로부터의 다른 통신을 수신할 수 있다. 이러한 실시예에서, HTTP 서버(130)는 웹클라이언트(110)를 위한 임의의 저장된 통지를 웹클라이언트로 전송할 수 있다. 저장된 통지가 전송되면, HTTP 서버(130)는 이러한 통지를 국지적 저장소에서 제거할 수 있다. 대안적으로, 웹클라이언트(110)는 통지의 수신의 답신을 HTTP 서버(130)로 전송할 수 있고, HTTP 서버는 이러한 답신을 수신하면, 국지적 저장소에서 통지를 삭제할 수 있다. 통지는 개별적으로, 이산 통신으로, 또는 각각이 하나 초과의 통지를 포함할 수 있는 하나 이상의 통신으로 전송될 수 있다는 것에 유의한다. 개별적으로나 어떻게든 그룹으로 함께 전송되던지간에, 하나 이상의 통지를 포함하는 통신은 웹클라이언트(110)를 위해 의도된 이메일 데이터를 포함하는 다른 데이터를 포함할 수도 있다. 이러한 모든 실시예는 본 개시물의 범위 내에 있는 것으로 고려된다.
실시예에서, 통지를 국지적으로 저장하기보다는, 또는 이에 덧붙여서, HTTP 서버(130)는 이러한 통지를 데이터베이스 또는 저장소에 저장할 수 있다. 예를 들어, 통지 또는 통지의 표시는 웹클라이언트(110), 웹클라이언트(110)에 의해 사용 중인 통신 세션, 또는 웹클라이언트(110)의 사용자와 관련된 하나 이상의 기록 내의 데이터베이스(160)에 HTTP 서버(130)에 의해 저장될 수 있다. 하나 이상의 통지가 데이터베이스(160)에 저장되지 않는 실시예에서, 이러한 통지는 저장소(150)와 같은 저장소에 저장될 수 있다. 이러한 실시예에서, 저장소(150)상에 통지가 어디에 저장되는지를 표시하는 저장 위치 정보는 데이터베이스(160)의 웹클라이언트(110)와 관련된 기록에 포함될 수 있다. 대안적으로, 하나 이상의 통지가 저장소(150)에 저장되었다는 표시는 이러한 기록에 포함될 수 있고, 다른 식별 정보는 저장된 통지의 저장 위치를 결정하는데 사용될 수 있다. 예를 들어, 통지 식별자는 웹클라이언트(110)와 관련된 데이터베이스(160)상의 기록 내의 각각의 통지를 위해 저장될 수 있고, 웹클라이언트 식별자(가령, 세션 식별자)와 통지 식별자의 조합은 저장소(150) 내의 통지를 찾는데 사용될 수 있다. 이러한 모든 실시예는 본 개시물의 범위 내에 있는 것으로 고려된다. 데이터베이스(160) 또는 저장소(150)에 통지를 저장함에 의해, 웹클라이언트(110)가 어떠한 이유로 HTTP 서버(130)와 더 이상 통신할 수 없는 이벤트에, 이러한 정보는 HTTP 서버(140) 또는 다른 HTTP 서버에 접근될 수 있다.
HTTP 서버가 통지를 데이터베이스(160) 및/또는 저장소(150)에 저장할 때, 본 명세서에 기술된 바와 같이, 메일 서버(170)에 의해 제공되는 데이터나 서비스를 위한 요청에 응답하여, 또는 킵얼라이브 통신이나 웹클라이언트(110)로부터의 다른 통신에 응답하여, HTTP 서버(130)는 이들 통지를 웹클라이언트(110)로 전송한다. 저장된 통지가 전송되면, HTTP 서버(130)는 데이터베이스(160) 및/또는 저장소(150)에서 이러한 통지를 제거할 수 있다. 대안적으로, 웹클라이언트(110)는 통지의 수신의 답신을 HTTP 서버(130)로 전송할 수 있고, 이러한 답신을 수신하면, HTTP 서버는 데이터베이스(160) 및/또는 저장소(150)에서 통지를 삭제할 수 있다.
통지를 요청, 수신 및 신청은 물론 통지를 저장 및 복구와 같은 통지 조작은 HTTP 서버(130)나 본 명세서에서 고려되는 다른 HTTP 서버 내에서 별도의 프로세스에 의해 조작될 수 있다는 것에 유의한다. 예를 들어, 별도의 프로세스가 통지를 조작할 수 있는 동안에, HTTP 서버(130) 상에서 실행되는 제1 프로세스는 웹클라이언트(110)와의 통신을 조작할 수 있다. 두 개의 프로세스는 통지를 조작하고 통지를 웹클라이언트(110)로 제공하기 위하여, 임의의 방식으로 상호작용할 수 있다.
실시예에서, HTTP 서버(130)가 통지를 유지하기보다는, 통지 서버(180)가 통지를 조작할 수 있다. HTTP 서버(130)는 본 명세서에서 제시된 바와 같은 임의의 타입의 통신 링크 일 수 있는 링크(183)를 통해 통지 서버(180)와 통신할 수 있다. HTTP 서버(130)는 웹클라이언트(110)를 서비스하고 웹 클라이언트(110), 장치(101) 또는 이들의 사용자에 대한 식별 정보를 제공할 수 있다는 것을 통지 서버(180)에 통지할 수 있다. 통지 서버(180)는 본 명세서에서 제시된 바와 같은 임의의 타입의 통신 링크일 수 있는 통신 링크(187)를 통해 메일 서버(170)와 지속적인 연결(가령, TCP 연결)을 구축할 수 있다. 이러한 지속적인 연결은 웹클라이언트(110)와 관련된 통신에 전용될 수 있다. 메일 서버(170)에 접근하기 위해 웹클라이언트(110)로부터 개시 요청이 수신되었다는 통지를 HTTP 서버(130)로부터 수신하거나, 이에 응답하여 HTTP 서버(130)에 의해 생성되는 통신에 응답하여 지속적인 연결이 개시될 수 있다. 지속적인 연결은 사전결정된 타임아웃 만기까지 또는 지속적인 연결의 명시적인 종료(가령, HTTP 서버(130)가 예를 들어, 사용자 로그 오프 또는 웹클라이언트(110) 셧다운과 같이, 통지 서버(180)에게 셧다운하라는 명령을 내리기)가 보증될 때까지 유지될 수 있다.
또한, 통지 서버(180)는 메일 서버(170)로부터 관련된 웹클라이언트(110) 및/또는 이와 함께 사용자에 대한 통지에 신청할 수 있거나, 아니면, 메일 서버(170)에 의해 통지 서버(180)에 제공되는 임의의 이러한 통지를 요청할 수 있다. 통지는 새로이 수신된 이메일의 표시, 달력 리마인더, 미팅 초대 과 같이, 사용자에게 전송될 수 있는 이벤트의 임의의 알림이나 표시를 포함한다. 통지가 발행되면, 통지 서버(180)는 이러한 통지를 국지적으로(가령, 메모리, 하드 디스크) 저장할 수 있고, 통지를 웹클라이언트(110), 웹클라이언트(110)와 관련된 세션, 및/또는 웹클라이언트(110)와 관련된 사용자와 관련시킬 수 있다. 차후의 통지들이 메일 서버(170)로부터 수신되면서, 통지 서버(180)는 차후의 통지를 저장할 수 있다. 통지 서버(180)는 하나 이상의 통지의 수신의 답신을 메일 서버(170)에 전송할 수 있다.
HTTP 서버(130)는 메일 서버(170)에 의해 제공되는 데이터나 서비스에 대한 차후의 요청을 웹클라이언트(110)로부터 수신할 수 있다. 이러한 요청에 응답하여, HTTP 서버(130)는 요청을 메일 서버(170)에 포워딩할 수 있고, 메일 서버(170)로부터 요청에 대한 응답을 수신할 수 있다. 또한, HTTP 서버(130)는 통지 서버(180)로부터 웹클라이언트(110)에 대해 임의의 계류 중인(pending) 통지를 요청할 수 있다. 통지 서버(180)는 웹클라이언트(110)에 대해 통지가 계류 중이지 않다는 것을 나타내는 통지 또는 응답으로 응답할 수 있다. HTTP 서버(130)는 통지 서버(180)로부터 수신된 웹클라이언트(110)에 대한 임의의 통지와 메일 서버(170)로부터 수신된 응답을 조합하고, 조합된 통신을 웹클라이언트(110)로 전송한다. 대안적으로, HTTP 서버(130)는 킵얼라이브 통신 또는 메일 서버(170)와 상호작용을 요하지 아니하는 웹클라이언트(110)로부터의 다른 통신을 수신할 수 있다. 이러한 실시예에서, HTTP 서버(130)는 통지 서버(180)로부터 웹클라이언트(110)를 위해 임의의 계류 중인 통지를 요청 및 수신한다. HTTP 서버(130)는 웹클라이언트(110)를 위한 이러한 통지를 웹클라이언트로 전송할 수 있다. 통지가 제공되면, 통지 서버(180)는 국지적 저장소에서 이러한 통지를 제거할 수 있다. 대안적으로, 웹클라이언트(110)는 통지의 수신의 답신을 HTTP 서버(130)로 전송할 수 있고, HTTP 서버(130)는 수신의 이러한 답신 또는 웹클라이언트(110)로부터의 수신의 답신을 수신함에 응답하여 생성된 또 다른 명령을 통지 서버(180)로 제공할 수 있다. 이에 대응하여, 통지 서버(180)는 국지적 저장소에서 통지를 삭제할 수 있다. 통지 서버(180)가 통지를 개별적으로, 이산 통신으로, 또는 각각이 하나 초과의 통지를 포함할 수 있는 하나 이상의 통신으로 전송될 수 있다는 것에 유의한다. 개별적으로나 어떻게든 그룹으로 함께 전송되던지간에, 하나 이상의 통지를 포함하는 통신은 웹클라이언트(110)와 관련된 임의의 데이터를 포함하는 다른 데이터를 포함할 수도 있다. 이러한 모든 실시예는 본 개시물의 범위 내에 있는 것으로 고려된다.
실시예에서, 통지를 국지적으로 저장하기보다는, 또는 이에 덧붙여서, 통지 서버(180)는 이러한 통지를 데이터베이스 또는 저장소에 저장할 수 있다. 예를 들어, 통지 또는 통지의 표시는 웹클라이언트(110), 웹클라이언트(110)에 의해 사용중인 통신 세션, 또는 웹클라이언트(110)의 사용자와 관련된 하나 이상의 기록 내의 데이터베이스(160)에 본 명세서에 기술된 바와 같은 임의의 타입 또는 수의 통신 링크일 수 있는 링크(186)를 통해 통지 서버(180)에 의해 저장될 수 있다. 일부 실시예에서, 통지는 통지 서버(180)가 본 명세서에 기술된 바와 같은 임의의 타입 또는 수의 통신 링크일 수 있는 링크(185)를 통해 통신하는, 저장소(150)와 같은 저장소에 대체하여, 또는 덧붙여서 저장될 수 있다. 이러한 실시예에서, 저장소(150)상에 통지가 어디에 저장되는지를 표시하는 저장 위치 정보는 데이터베이스(160)의 웹클라이언트(110)와 관련된 기록 내에 포함될 수 있다. 대안적으로, 하나 이상의 통지가 저장소(150)에 저장되었다는 표시는 이러한 기록에 포함될 수 있고, 다른 식별 정보는 저장된 통지의 저장 위치를 결정하는데 사용될 수 있다. 예를 들어, 통지 식별자는 웹클라이언트(110)와 관련된 데이터베이스(160)상의 기록 내의 각각의 통지를 위해 저장될 수 있고, 웹클라이언트 식별자(가령, 세션 식별자) 및 통지 식별자의 조합은 저장소(150) 내의 통지를 찾는데 사용될 수 있다. 이러한 모든 실시예는 본 개시물의 범위 내에 있는 것으로 고려된다. 데이터베이스(160) 또는 저장소(150)에 통지를 저장함에 의해, 웹클라이언트(110)가 어떠한 이유로 HTTP 서버(130)와 더 이상 통신할 수 없는 이벤트에, 이러한 정보는 통지 서버(180) 및/또는 다른 서버 또는 장치에 접근될 수 있다.
통지 서버(180)가 통지를 데이터베이스(160) 및/또는 저장소(150)에 저장하면, HTTP 서버(130)는, 메일 서버(170)에 의해 제공되는 데이터 또는 서비스에 대한 웹클라이언트(110)로부터의 요청에 응답하여, 또는 킵얼라이브 통신 또는 본 명세서에 기술된 바와 같은 웹클라이언트(110)로부터의 다른 통신에 응답하여, 통지 서버(180)로부터 이들 통지를 요청한다. 저장된 통지가 전송되면, 통지 서버(180)는 데이터베이스(160) 및/또는 저장소(150)에서 이러한 통지를 제거할 수 있다. 대안적으로, 웹클라이언트(110)는 통지의 수신의 답신을 HTTP 서버(130)로 전송할 수 있고, HTTP 서버(130)는 수신의 이러한 답신 또는 웹 클라이언트(110)로부터의 수신의 답신을 수신함에 응답하여 생성된 또 다른 명령을 통지 서버(180)로 제공할 수 있다. 이에 대응하여, 통지 서버(180)는 이러한 답신을 수신하면, 데이터베이스(160) 및/또는 저장소(150)에서 통지를 삭제할 수 있다.
저장된 통지는 웹클라이언트로 전송되지 않으면, 무한하게 유지될 수 없다는 것에 유의한다. 일부 실시예에서, 각각의 통지는 사전결정된 양의 시간 동안에 저장될 수 있고, 사전결정된 양의 시간이 만료되면 삭제될 수 있다. 대안적으로, 세션이 웹클라이언트(110)와 HTTP 서버(130) 사이에서 유지되는 동안에만 통지는 저장될 수 있다. 세션이 만료되면, HTTP 서버(130)는 세션 및/또는 웹클라이언트(110)와 관련된 임의의 통지를 삭제할 수 있고, 또는 이러한 통지가 삭제된다는 것을 통지 서버(180)에 명령, 아니면 표시할 수 있다.
도 2는 HTTP 서버(130)가 웹클라이언트(110)와 더 이상 통신하지 않는 비-제한적이고 예시적인 시스템(100)을 도시한다. 이는 통신 링크(123)의 오류, HTTP 서버(130)의 오류 또는 그 밖의 다른 이유일 수 있다. 실시예에서, HTTP 서버(130)는 오류 때문에, 하나 이상의 통신 링크(153, 163 및 173)를 통해 성공적으로 통신할 수 없게 될 수 있다. 이러한 실시예에서, HTTP 서버(130) 또는 또 다른 시스템이나 장치는, 하나 이상의 이들 링크를 통한 통신이 가동되지 못하여, 웹클라이언트(110)에 대한 HTTP 트래픽이 HTTP 서버(130) 자체가 가동될 수 있음에도 불구하고, HTTP 서버로 전향되도록 야기하는 지를 결정할 수 있다. HTTP 서버(130)가 더 이상 웹클라이언트(110)에 서비스를 제공하지 못하면, 웹클라이언트(110)로부터의 트래픽은 HTTP 서버(140)로 재지향될 수 있다. 이는 임의의 수단 및 방법을 사용하여 자동을 발생할 수 있고, 웹클라이언트(110) 및/또는 웹클라이언트의 사용자에게 명백할 수 있다.
HTTP 서버(140)는 웹클라이언트(110)가 이전에 HTTP 서버(130)와 통신하였다는 것을 인식할 수 있거나, 아니면 본 명세서에 기술된 것을 포함하는 임의의 수단 또는 방법을 사용하여 HTTP 서버(130) 대신에 클라이언트를 이제 서비스하는 것을 결정할 수 있다. 웹클라이언트(110)와 관련된 데이터를 결정하거나 얻으면, HTTP 서버(140)는 통신 링크(164)를 사용하여, 웹클라이언트(110)와 관련된 메타데이터를 데이터베이스(160)로부터 얻을 수 있다. 메타데이터는 웹클라이언트(110)가 관련된 첨부물을 가지는 이메일을 작성하는 진행 중에 있다는 것을 나타낼 수 있고, 저장소(150)로부터 첨부물을 복구하는데 사용될 수 있는 첨부된 것을 위한 식별 정보를 제공할 수도 있다. 대안적으로, 메타데이터는 첨부물이 웹클라이언트와 관련된다는 것을 표시할 수 있고, 첨부물의 저장 위치는, 메타데이터에 포함될 수 있는 첨부물 식별자와 조합된 웹클라이언트 식별자와 같은 다른 수단을 사용하여 결정될 수 있다. 첨부물이 웹클라이언트(110)를 사용하여 작성되는 이메일과 관련된다는 것을 결정하면, HTTP 서버(140)는 통신 링크(154)를 통해 저장소(150)로부터 첨부물을 얻을 수 있다. 작성 중에 이메일을 저장 또는 전송하기 위한 사용자 명령이 있으면, HTTP 서버(140)는 첨부물을 전송할 수 있고, 일부 실시예에서, 통신 링크(174)를 통해 다른 이메일 데이터를 메일 서버(170)로 전송할 수 있다. 또한, 이는 웹클라이언트(110)가 자동으로 이메일을 저장하도록 구성되는 사용자 상호작용없이 수행될 수도 있다.
HTTP 서버(140)는 또한, 또는 대신에, 통지가 식별 정보를 사용하여 데이터베이스(160) 또는 저장소(150)에서 웹클라이언트(110)를 위해 저장되어서, 본 명세서에 기술된 바와 같이, 데이터베이스(160) 내의 기록을 찾을 수 있다는 것을 결정할 수 있다. 통지가 저장소(150)에 저장되는데, 저장된 통지가 존재한다고 결정되면, HTTP 서버(140)는 통신 링크(164)를 사용하여 이러한 통지를 위한 저장 위치 정보를 데이터베이스(160)로부터 얻을 수 있다. 이러한 통지 저장 위치 정보를 사용하여, HTTP 서버(140)는 임의의 저장된 통지를 저장소(150)로부터 얻을 수 있고, 이들을 웹클라이언트(110)로 전송할 수 있다. 대안적으로, 통지가 데이터베이스(160)에 저장되면, HTTP 서버(140)는 이러한 통지를 데이터베이스(160)로부터 얻을 수 있고, 이들을 웹클라이언트(110)로 전송할 수 있다. 그리고 나서, HTTP 서버(140)는 본 명세서에 기술된 바와 같이, 통지를 저장, 전송 및 삭제로 진행될 수 있다.
통지 서버(180)를 사용하는 실시예에서, HTTP 서버(140)는, 통지 서버(180)를 쿼리하고 웹클라이언트(가령, 세션 식별자)와 관련된 식별 데이터와 같은 데이터를 통지 서버(180)로 제공함에 의해, 웹클라이언트(110)를 위해 통지가 저장된다는 것을 결정할 수 있다. 그리고 나서, 통지 서버(180)는 그 자체 데이터를 살피거나 데이터베이스(160)를 쿼리하여서, 통지가 웹클라이언트(110)를 위해 계류 중인지를 결정할 수 있다. 만일 그렇다면, 통지 서버(180)는 본 명세서에 기술된 바와 같은 정보를 식별하는 웹클라이언트(110)를 사용하여, 이러한 통지를 데이터베이스(160) 및/또는 저장소(150)로부터 얻을 수 있다. 통지가 저장소(150)에 저장되는데, 저장된 통지가 존재한다는 것을 결정하면, 통지 서버(180)는 이러한 통지를 위한 통지 저장 위치 정보를 통신 링크(186)를 사용하여 데이터베이스(160)로부터 얻을 수 있다. 이러한 통지 저장 위치 정보를 사용하여, 통지 서버(180)는 임의의 저장된 통지를 저장소(150)로부터 얻을 수 있고, 상기 저장된 통지를 웹클라이언트(110)로 제공할 수 있는 HTTP 서버(140)로 전송할 수 있다. 대안적으로, 통지가 데이터베이스(160)에 저장되지 않으면, 통지 서버(180)는 이러한 통지를 데이터베이스(160)로부터 얻을 수 있고, 상기 통지를 웹클라이언트(110)로 제공할 수 있는 HTTP 서버(140)로 전송할 수 있다. 그리고 나서, 통지 서버(180)는 본 명세서에 기술된 바와 같이, 통지를 저장, 전송 및 삭제로 진행할 수 있다.
도 1 및 도 2의 장치가 분리되고 개별적으로 기술되지만, 이들 장치는 물리적으로 결합되거나, 하나 이상의 데이터센터나 다른 지리적 위치에 걸쳐 물리적으로 분산된 여러 장치일 수 있다는 것에 유의한다. 예를 들어, 데이터베이스(160) 및 저장소(150)는 단일 장치 또는 데이터베이스(160)와 관련된 기능부일 수 있고, 저장소(150)는 하나 이상의 장치에 의해 수행될 수 있다. 장치들간의 연결은, 인증 및/또는 장치들 사이에서 교환되는 데이터가 덜 인터셉트되거나, 인터셉트되더라도 임의의 의도되지 않은 수신자에게 덜 해독될 수 있도록 보장하기 위한 임의의 다른 수단을 사용하여 고정될 수 있다는 것도 유의한다. 이러한 모든 실시예는 본 개시물의 범위 내에 있는 것으로 고려된다.
통지를 요청, 수신 및 신청은 물론 통지를 저장 및 복구와 같은 통지 조작은 HTTP 서버(140)나 본 명세서에서 고려되는 다른 HTTP 서버 내에서 별도의 프로세스에 의해 조작될 수 있다는 것에 유의한다. 예를 들어, 별도의 프로세스가 통지를 조작할 수 있는 동안에, HTTP 서버(140) 상에서 실행되는 제1 프로세스는 웹클라이언트(110)와의 통신을 조작할 수 있다. 두 개의 프로세스는 통지를 조작하고 통지를 웹클라이언트(110)로 제공하기 위하여, 임의의 방식으로 상호작용할 수 있다.
도 3은 실시예에 따른, HTTP 서버를 위한 예시적인 동작 절차(300)를 도시한다. 동작 절차(300)는 동작(310)으로 시작되어서, HTTP 서버가, 이메일의 작성을 지원하기 위한 HTTP 서버를 통해 서비스를 요청하는 웹클라이언트의 표시를 수신할 수 있는 동작(315)로 이동한다. 이는 이메일 작성 인터페이스를 제공하는 웹페이지에 접근하기 위한 요청을 포함하는 임의의 형태를 취할 수 있다. 동작(320)에서, HTTP 서버는 데이터베이스 내의 현재의 웹클라이언트 상태 정보를 저장할 수 있다. 예를 들어, 웹클라이언트와 관련된 메타데이터는 데이터베이스 내에 저장될 수 있다. 웹클라이언트는 임의의 수단을 사용하여 식별될 수 있고, 이러한 식별 정보는 웹클라이언트를 위한 메타데이터를 포함하는 데이터베이스 내의 기록을 식별하는데 사용될 수 있다. 예를 들어, 세션 식별자는 웹클라이언트 및/또는 웹클라이언트와 HTTP 서버가 연결된 특정 통신 세션을 위해 식별자로서 생성되고 저장될 수 있다. 이러한 세션 식별자는 일부 실시예에서 "쿠키" 또는 사용자 장치상에서 실행되는 웹 브라우저에 의해 저장된 데이터로서 웹클라이언트를 실행하는 사용자 장치상의 저장을 위해 웹클라이언트로 전송될 수 있다.
동작(325)에서, HTTP 서버는 웹클라이언트를 사용하여 현재 작성되는 이메일과 관련된 첨부물을 웹클라이언트로부터 수신할 수 있다. 이러한 첨부물은 동작(330)에서 본 명세서에서 제시된 바와 같은 임의의 타입의 저장 장치와 저장 시스템을 포함하는 저장 수단에 저장될 수 있다. HTTP 서버는 이러한 첨부물을 국지적으로 및 저장 장치나 시스템에 저장할 수 있고, 또는 첨부물을 저장 장치나 시스템으로 전송할 수 있고, 첨부물의 국지적 복사본을 유지하지 않을 수 있다는 것에 유의한다. HTTP 서버는 첨부물을 바꾸거나, 아니면 메일 서버에 의한 첨부물의 나중의 사용을 용이하게 하기 위해 메일 서버에 의해 허용되고 이해되는 형식으로 할 수 있다는 것에 유의한다. 이러한 모든 실시예 및 이들의 변형예는 본 개시물의 범위 내로 고려된다.
동작(335)에서, 저장 장치나 저장 시스템 내의 첨부물의 위치를 표시하는 정보는 데이터베이스 내에 저장될 수 있다. 이러한 위치 정보는 웹클라이언트 및/또는 웹클라이언트와 HTTP 서버가 연결된 통신 세션과 관련된 기록 내에 저장될 수 있다. 대안적으로, 첨부물의 특정 위치의 표시보다는 첨부물이 저장되었다는 표시가 이러한 기록 내에 저장될 수 있다. 이러한 표시는 임의의 형태를 취할 수 있고, 첨부물의 이름 또는 식별자를 포함할 수 있다. 이러한 실시예에서, 다른 식별 정보는 웹클라이언트 식별자와 첨부물 식별자의 조합과 같은 첨부물의 저장 위치를 결정하는데 사용될 수 있다. 또한, 동작(335)에서, 웹클라이언트를 위한 데이터베이스내의 상태 정보는 웹클라이언트에서 현재 작성 중인 이메일과 관련된 첨부물이 있다는 것을 반영하기 위해 업데이트될 수 있다.
웹클라이언트와 HTTP 서버 사이의 통신에 영향을 주는 오류가 발생하지 않으면, 동작 절차(300)는, 웹클라이언트 상태에서 임의의 변화가 발생했는지에 관한 결정이 이루어지는 동작(340)으로 이동한다. 웹클라이언트 상태에서 변화가 있다면, 동작(345)에서, 웹클라이언트의 상태는 그것과 관련된 데이터베이스 기록 및/또는 HTTP 서버와의 그것의 통신 세션에서 업데이트된다. 동작(350)에서, 작성 중에 이메일을 전송 또는 저장하기 위해, 웹클라이언트가 요청을 전송했는지에 관한 결정이 이루어질 수 있다. 그렇다면, 동작(355)에서, HTTP 서버는, 위치 정보 또는 웹클라이언트와 관련된 기록 및/또는 웹클라이언트와 HTTP 서버가 연결된 통신 세션에 저장될 수 있는 첨부물 표시를 사용하는 실시예에서, 저장 장치 또는 저장 시스템으로부터 첨부물을 복구할 수 있다. 동작(360)에서, HTTP 서버는 첨부물은 물론 데이터와 관련된 다른 임의의 이메일을 메일 서버로 전송할 수 있고, 프로세스는 동작(365)에서 종료된다.
일부 실시예에서, HTTP 서버는 가령, HTTP 서버가 첨부물의 국지적 복사본을 유지하지 않는 실시예에서, 저장 장치 또는 시스템으로부터 첨부물을 복구할 수 있다. 다른 실시예에서, HTTP 서버는 첨부물의 국지적으로 저장된 복사본을 메일 서버로 전송할 수 있다. 이러한 모든 실시예와 이들의 변형예는 본 개시물의 범위 내로 고려된다. 일부 실시예에서, HTTP 서버는 첨부물을 메일 서버에 의해 이해되고 허용되는 형식으로 두거나, 아니면 전환한다. 또한, 동작(360)에서, 첨부물을 메일 서버로 전송한 이후에, HTTP 서버는 첨부물을 저장 장치 또는 시스템에서 삭제할 수 있고, 또한, 데이터베이스 내의 웹클라이언트와 관련된 기록에서 첨부물 위치 정보를 삭제할 수 있다. 대안적으로, HTTP 서버는 데이터베이스 내의 웹클라이언트와 관련된 기록에서 첨부물에 대한 첨부물 위치 정보만 삭제하여, 차후의 이메일이나 메세지로의 첨부를 위함과 같이, 추가적인 사용을 위해 저장 장치 또는 저장 시스템 내의 첨부물을 유지할 수 있다.
다른 실시예에서, 첨부물을 메일 서버로 전송하기 보다는, HTTP 서버는 첨부물 위치 정보를 메일 서버로 전송하여서, 가령, HTTP 서버가 국지적 메모리 또는 데이터베이스로부터 첨부물 위치 정보를 복구한 이후에, 메일 서버가 스스로 저장 시스템 또는 장치로부터 첨부물을 복구할 수 있도록 할 수 있다. 이러한 실시예에서, 첨부물이 저장 시스템 또는 장치 내에 저장되기 이전에, 첨부물은 메일 서버에 의해 이해되고 허용되는 형식으로 두거나, 아니면 바뀌어질 수 있다. 또한, 이러한 실시예에서, HTTP 서버는, 메일 서버로부터 첨부물을 사용할 수 있는 하나 이상의 이메일(가령, 이메일이 복수의 수신자를 가지는 경우)의 성공적인 전송의 알림을 수신한 이후에, 저장 장치에서 첨부물을 삭제할 수 있고, 데이터베이스 내의 웹클라이언트에 대한 기록을 삭제하거나 데이터베이스 내의 웹클라이언트와 관련된 기록에서 첨부물에 대한 첨부물 위치 정보를 삭제할 수 있다. 첨부물 및/또는 첨부물 위치 정보가 메일 또는 메세징 서버로 제공된 이후에, 동작(365)에서, 상태 정보는 가령, 웹클라이언트가 더 이상 메세지 작성 상태에 있지 않다는 것을 표시하기 위해, 데이터베이스 내에서 업데이트될 수 있다. 대안적으로, 동작(365)에서, HTTP 서버는 데이터베이스 내의 웹클라이언트를 위한 기록을 삭제할 수 있다. 동작(365) 이후에, 동작 절차(300)는 이들이 종료되는 동작(370)으로 이동한다.
그러나, 일부 실시예에서, 저장 장치 또는 시스템 내에 첨부물을 저장한 이후에, 원래 웹클라이언트에게 제공되는 서비스하는 HTTP 서버가 오류 발생할 수 있고, 또한 HTTP 서버와 웹클라이언트간의 연결이 어떤 이유로 오류가 발생할 수 있다는 것에 유의한다. 이러한 실시예에서, 백업 또는 중복 HTTP 서버는 그리고 나서, 웹클라이언트를 위해 HTTP 서버 기능을 인수할 수 있다. 도 4는 이러한 실시예에 따른 HTTP 서버를 위한 예시적인 동작 절차(400)를 도시한다. 동작 절차(400)는 동작(410)으로 시작하고, 웹클라이언트가 서비스를 요구하는 표시를 백업 HTTP 서버가 수신할 수 있는 동작(415)로 이동한다. 동작(420)에서, HTTP 서버는 가령, 웹클라이언트를 실행하는 웹 브라우저로부터 쿠키를 복구함에 의해 웹클라이언트 식별 데이터를 얻을 수 있다. 이러한 식별 정보는 웹클라이언트를 식별하는 세션 식별자 및/또는 웹클라이언트와 그 이전의 HTTP 서버 사이의 이전에 진행 중인 특정한 통신 세션의 형태를 취할 수 있다.
식별 정보를 사용하여, HTTP 서버는 동작(425)에서, 상태 정보 및 웹클라이언트에 관한 다른 정보를 데이터베이스로부터 복구할 수 있다. 이러한 정보는 웹클라이언트가 이메일 작성 상태에 있었는지, 그리고 하나 이상의 첨부물을 포함된 작성 중인 이메일인지를 표시하는 데이터를 포함할 수 있다. 동작(430)에서, 웹클라이언트 상태에서 임의의 변화가 발생했는지에 관한 결정이 이루어질 수 있다. 웹클라이언트 상태에서 변화가 있었다면, 동작(435)에서, 웹클라이언트의 상태는 이와 관련된 데이터베이스 기록 및/또는 HTTP 서버와의 그것의 통신 세션에서 업데이트 될 수 있다.
동작(440)에서, 웹클라이언트가 작성 중인 이메일을 전송 또는 저장하기 위한 요청을 전송했는지에 관한 결정이 이루어질 수 있다. 만일 그렇다면, 동작(445)에서, 작성 중인 이메일이 이와 관련된 첨부물을 가지는지에 관한 결정이 이루어질 수 있다. 만일 그렇지 않다면, 동작 절차(400)은 가령, 웹클라이언트가 더 이상 메세지 작성 상태가 아니라는 것을 반영하기 위해 상태 정보가 업데이트될 수 있는 동작(460)으로 이동할 수 있다. 전송된 이메일 또는 메세지를 필요로하는 임의의 다른 동작은 가령, 임의의 이메일이나 메세지와 관련된 데이터를 메일 서버로 제공하는 것이 발생할 수도 있다. 관련된 첨부물이 있다면, 동작(450)에서, HTTP 서버는 저장 장치 도는 시스템으로부터 첨부물을 복구할 수 있다. 다른 실시예에서, HTTP 서버가 첨부물을 저장소 내에 저장하나 첨부물의 국지적 복사본을 유지하지 않으면, HTTP 서버는 국지적 저장소를 위한 첨부물의 복사본을 복구하지 않을 수 있다. 동작(455)에서, HTTP 서버는 첨부물은 물론, 임의의 다른 이메일 관련 데이터를 이메일의 구성 및 전달을 위해 메일 서버로 전송할 수 있다.
원래의 HTTP 서버와 함께 유의한 바와 같이, 가령, HTTP 서버가 첨부물의 국지적 복사본을 유지하지 않는 실시예에서, 백업 HTTP 서버는 첨부물을 저장 장치 또는 시스템으로부터 복구할 수 있다. 다른 실시예에서, HTTP 서버는 첨부물의 국지적으로 저장된 복사본을 메일 서버로 전송할 수 있다. 이러한 모든 실시예와 이의 변형예는 본 개시물의 범위 내로 고려된다. 또한, 동작(455)에서, 첨부물을 메일 서버로 전송한 이후에, HTTP 서버는 저장 장치 또는 시스템에서 첨부물을 삭제할 수 있고, 데이터베이스 내의 웹클라이언트와 관련된 기록 내의 첨부물과 관련된 데이터도 삭제할 수 있다. 대안적으로, HTTP 서버는 데이터베이스 내의 웹클라이언트와 관련된 기록에서 첨부물을 위한 첨부물 위치 정보 또는 첨부물 표시 데이터만 삭제할 수 있고, 가령, 첨부물이 차후의 메세지를 위해 메세지 서버로 제공되는 것과 같이, 추가 사용을 위해 저장 장치 또는 저장 시스템에 첨부물을 남길 수 있다.
다른 실시예에서, 첨부물을 메일 서버로 전송하기 보다는, HTTP 서버는 첨부물 위치 정보를 메일 서버로 전송하여서, 가령, HTTP 서버가 국지적 메모리 또는 데이터베이스로부터 첨부물 위치 정보를 복구한 이후에, 메일 서버가 스스로 저장 시스템 또는 장치로부터 첨부물을 복구할 수 있도록 할 수 있다. 이러한 실시예에서, HTTP 서버는, 메일 서버로부터 첨부물을 사용할 수 있는 하나 이상의 이메일(가령, 이메일이 복수의 수신자를 가지는 경우)의 성공적인 전송의 알림을 수신한 이후에, 저장 장치에서 첨부물을 삭제할 수 있고, 데이터베이스 내의 웹클라이언트에 대한 기록을 삭제하거나 데이터베이스 내의 웹클라이언트와 관련된 기록에서 첨부물에 대한 첨부물 위치 정보를 삭제할 수 있다. 첨부물 및/또는 첨부물 위치 정보가 메일 또는 메세징 서버로 제공된 이후에, 동작(460)에서, 상태 정보는 가령, 웹클라이언트가 더 이상 메세지 작성 상태에 있지 않다는 것을 표시하기 위해, 데이터베이스 내에서 업데이트될 수 있다. 대안적으로, 동작(460)에서, HTTP 서버는 데이터베이스 내의 웹클라이언트를 위한 기록을 삭제할 수 있다. 동작(460) 이후에, 동작 절차(400)는 이들이 종료되는 동작(465)로 이동한다.
도 5는 실시예에 따른 HTTP 서버를 위한 예시적인 동작 절차(500)를 도시한다. 동작 절차(500)는 동작(510)으로 시작하고, HTTP 서버는 이메일 시스템에 접근하기 위해 웹클라이언트를 위한 요청을 수신할 수 있는 동작(515)로 이동한다. 이러한 요청은 이메일 시스템에 로그인하기 위한 요청, 이메일 데이터를 위한 요청, 통지를 위한 요청 및 이메일 작성 인터페이스를 제공하는 웹페이지로의 접근을 위한 요청을 포함하는 임의의 형태를 취할 수 있다. 달력 시스템과 통지 및/또는 첨부물을 지원하는 임의의 다른 시스템과 같은 다른 타입의 시스템과 상호작용 하기 위한 요청이 고려된다. 동작(520)에서, HTTP 서버는 웹클라이언트와 관련된 통신을 위한 이메일 서버와의 지속적인 연결을 구축할 수 있다. 대안적으로, 동작(520)에서, HTTP 서버는 통지 서버가 이메일 서버와 지속적인 연결을 구축하는 것을 요청할 수 있고, 또는 아니면, HTTP 서버가 이제 웹클라이언트를 서비스하여 통지 서버가 이에 대응하여 메일 서버와 지속적인 연결을 구축할 수 있다는 것을 통지 서버에 알릴 수 있다. 동작(525)에서, HTTP 서버는 웹클라이언트를 대신하여 이메일 데이터를 요청할 수 있다. 이러한 요청은 동작(515)에서 수신된 요청 또는 이메일 데이터를 위한 웹클라이언트로부터 수신된 다른 요청에 기초할 수 있다. 동작(530)에서, HTTP 서버는 웹클라이언트를 위한 통지를 신청할 수 있다. 대안적으로, 동작(520)에서, HTTP 서버가 웹클라이언트를 서비스한다는 것에 응답하여, 웹클라이언트를 위한 통지를 신청할 수 있다. 어느 장치에서 신청 요청 형태는 이러한 통지를 수신하기 위한 요청의 임의의 형태를 취할 수 있고, 및/또는 자동으로 개시될 수 있고, 및/또는 동작(520 또는 525)에서 HTTP 서버로부터 이메일 서버로 전송된 통신과 같은 다른 활동에 기초하여 구축될 수 있다.
동작(535)에서, HTTP 서버는 웹클라이언트에 대해 의도된 통지를 이메일 서버로부터 수신할 수 있다. 또한, 535에서, 통지의 수신의 답신은 HTTP 서버에서 이메일 서버로 전송될 수 있다. 이러한 통지를 수신함에 응답하여, HTTP 서버는 통지를 수신할 수 있다. 일 실시예에서, 동작(540a)에서, HTTP 서버는 요청을 국지적으로(가령, 국지적 메모리, 국지적 하드 디스크 ) 저장할 수 있다. 대안적인 실시예에서, HTTP 서버는 통지를 데이터베이스 내에 저장할 수 있고, 기록과 연결될 수 있는데, 통지는 웹클라이언트로 저장된다. 이러한 기록은 본 명세서에 제시된 것들을 포함하는 임의의 수단(가령, 세션 식별자 을 사용하여)을 사용하여 식별 및/또는 접근될 수 있다. 또 다른 실시예에서, 통지는 저장 장치 내에 저장될 수 있고, 저장 장치 내의 통지의 위치는 본 명세서에 제시된 것들을 포함하는 임의의 수단(가령, 통지를 포함하는 기록을 식별하기 위한 세션 식별자를 사용하여, 통지와 세션 식별자 의 표시의 조합을 사용하여 위치될 수 있는 통지의 표시를 포함하는 기록을 식별하기 위한 세션 식별자를 사용하여)을 사용하여 데이터베이스 기록 내에 표시될 수 있다. 통지를 저장하고 미래의 복구를 위해 통지를 식별하는 임의의 다른 수단과 방법은 본 개시물의 범위 내로 고려된다.
대안적으로, 통지 서버는 통지의 수신과 저장을 수행할 수 있다. 따라서, 동작(535)에서, 통지 서버는 웹클라이언트를 위해 의도된 통지를 이메일 서버로부터 복구할 수 있다. 또한 535에서, 통지의 수신의 답신은 통지 서버에서 이메일 서버까지 전송될 수 있다. 이러한 통지를 수신함에 응답하여, 통지 서버는 통지를 저장할 수 있다. 일 실시예에서, 동작(540a)에서, 통지 서버는 요청을 국지적으로(가령, 국지적 메모리, 국지적 하드 디스크 ) 저장할 수 있다. 대안적인 실시예에서, 통지 서버는 통지를 데이터베이스 내에 저장할 수 있고, 기록과 연결될 수 있는데, 통지는 웹클라이언트로 저장된다. 이러한 기록은 본 명세서에 제시된 것들을 포함하는 임의의 수단(가령, 세션 식별자 을 사용하여)을 사용하여 식별 및/또는 접근될 수 있다. 또 다른 실시예에서, 통지는 저장 장치 내에 저장될 수 있고, 저장 장치 내의 통지의 위치는 본 명세서에 제시된 것들을 포함하는 임의의 수단(가령, 통지를 포함하는 기록을 식별하기 위한 세션 식별자를 사용하여, 통지와 세션 식별자 의 표시의 조합을 사용하여 위치될 수 있는 통지의 표시를 포함하는 기록을 식별하기 위한 세션 식별자를 사용하여)을 사용하여 데이터베이스 기록 내에 표시될 수 있다. 통지를 저장하고 미래의 복구를 위해 통지를 식별하는 임의의 다른 수단과 방법은 본 개시물의 범위 내로 고려된다.
동작(545)에서, 통지가 저장된 이후에, 통신이 HTTP 서버에 의해 수신되었는지에 대한 결정이 이루어질 수 있다. 그렇지 않다면, 동작은 차후의 통지가 HTTP 서버에 의해 수신되고 저장될 수 있는 동작(535)로 되돌아 갈 수 있다. 통지가 저장된 이후에, 통신이 HTTP 서버에 의해 수신되었다면, 동작(550)에서, 통지는 본 명세서에서 기술된 바와 같이 복구될 수 있고, 웹클라이언트로 전송될 수 있다(가령, HTTP 서버에 의해 직접 복구되거나 HTTP 서버로부터 요청이 있으면 통지 서버에 의해 수신되어서, 통지 서버에 의해 거기로로 제공됨). 웹클라이언트와의 마지막 통신 또한 복구되고 웹클라이언트로 전송된 이후에, 임의의 다른 통지가 저장된다. 웹클라이언트로부터 수신된 통신은 킵얼라이브 또는 이메일 데이터를 위한 요청 또는 이메일 시스템과의 추가적인 상호작용을 포함하는, 임의의 타입일 수 있다. 통신이 데이터를 위한 요청 또는 이메일 시스템과의 상호작용이라면, 이메일 시스템으로부터 응답적으로 제공된 이메일 데이터나 통신은 웹클라이언트로 통지로 제공될 수 있다.
동작(555)에서, 웹클라이언트로 전송된 임의의 통지는 HTTP 서버 또는 국지적 저장소, 저장 장치 및/또는 데이터베이스로부터의 통지 서버에 의해 삭제될 수 있다. 대안적으로, 전송된 통지는 사전결정된 양의 시간동안 유지되거나, 사용자가 통지의 삭제를 요청할 때까지 유지될 수 있다. 임의의 삭제 및 정화 수단 및 방법은 본 개시물의 범위 내로 고려된다. 통지의 전송 이후에, HTTP 서버는 추가적인 통지를 기다리고, 동작(535)로 되돌아갈 수 있다. 웹클라이언트 타임아웃을 가진 세션이나, 아니면 불연속이라면, 동작은 종료될 수 있다.
일부 실시예에서, 첨부물을 저장 장치 또는 시스템 내에 저장한 이후에, 저장된 통지(직접적으로 또는 통지 서버를 사용하여)를 포함하여, 웹클라이언트로 원래 제공되는 서비스 HTTP 서버는 오류날 수 있고, 또는 HTTP 서버와 웹클라이언트 사이의 연결이 오류날 수 있다. 대안적으로, 웹클라이언트를 서비스하는 HTTP 서버는, 웹클라이언트를 실행하는 장치의 재배치와 같은 임의의 다른 이유 때문에, 변할 수 있다. 이러한 실시예에서, 백업 또는 중복 HTTP 서버는 그리고 나서, 웹클라이언트를 위한 HTTP 서버 기능을 인수할 수 있다. 도 6은 이러한 실시예에 따른 HTTP 서버를 위한 예시적인 동작 절차(600)를 도시한다. 동작 절차(600)는 동작(610)으로 시작하고, 웹클라이언트가 서비스를 요한다는 표시를 백업 HTTP 서버가 수신할 수 있는 동작(615)로 이동한다. 동작(620)에서, HTTP 서버는 가령, 웹클라이언트를 실행하는 웹 브라우저로부터 쿠키를 복구함에 의해 웹클라이언트 식별 데이터를 얻을 수 있다. 이러한 식별 정보는 웹클라이언트를 식별하는 세션 식별자 및/또는 웹클라이언트와 그 이전의 HTTP 서버 사이의 이전에 진행 중인 특정 통신 세션의 형태를 취할 수 있다. 수신된 식별 정보를 사용하여, HTTP 서버는 동작(627)에서 웹클라이언트로 이메일 시스템 접근을 제공하는 것을 시작할 수 있다. 이는 이메일 서버에 지속적인 연결을 구축하는 것과 본 명세서에 기술된 바와 같은 곧 있을 임의의 통지를 저장하는 것과 전송하는 것, 아니면, 본 명세서에 기술된 바와 같은 통지를 조작하기 위해 통지 서버에 명령하는 것을 포함할 수 있다. 다른 실시예에서, HTTP 서버는, 본 명세서에 기술된 바와 같이 통지를 위한 체크할 때까지, 웹클라이언트로 이메일 시스템 접근을 제공하지 않을 수 있다.
식별 정보를 사용하여, HTTP 서버는, 동작(625)에서, 계류 중인 통지(, HTTP 서버에 의해 웹클라이언트로 아직 전송되지 않은 통지)가 웹클라이언트를 위해 존재하는지를 결정할 수 있다. 이는, 웹클라이언트와 관련된 기록이 웹클라이언트와 관련된 임의의 통지를 표시하거나 포함하는지를 결정하기 위해, 데이터베이스를 쿼리하는 것을 포함할 수 있다. 대안적으로, HTTP 서버는 계류 중인 통지의 표시에 응답하거나 통지를 전송함에 의해 통지 서버를 쿼리할 수 있다. 동작(630)에서, 계류 중인 통지가 존재하지 않는다고 결정되면, 동작(640)에서, HTTP 서버는 웹클라이언트로의 이메일 시스템 접근을 제공하는 것을 시작하거나 계속할 수 있다. 이는 이메일 서버에 지속적인 연결을 구축하는 것과 본 명세서에서 기술된 바와 같은 곧 있을 임의의 통지를 저장하는 것과 전송하는 것을 포함할 수 있다. 대안적으로, 이는 본 명세서에 기술된 바와 같은 통지를 조작하기 위해 통지 서버에 명령하는 것을 포함할 수 있다. 일부 실시예에서, HTTP 서버는 웹클라이언트를 대신하여 이메일 서버에 연결을 우선 구축하고, 통지를 위한 체크하기 전에, 이메일 데이터 및/또는 서비스를 요청할 수 있다는 것에 유의한다. 이러한 모든 실시예는 본 개시물의 범위 내에 있는 것으로 고려된다.
동작(630)에서, 웹클라이언트로 아직 제공되지 않는 통지가 있다고 결정되면, 동작(635)에서, 이러한 통지는 가령, 본 명세서에 기술된 바와 같은 데이터베이스 또는 저장소로부터 또는 통지를 제공하기 위해 통지 서버를 쿼리하거나, 아니면 명령함으로부터 복구될 수 있다. 통지는 웹클라이언트로 전송될 수 있다. 이들 통지는, 이메일 서버로부터 곧 있거나 전용 통신에서 전송될 수 있는 임의의 데이터로 전송될 수 있다. 이러한 통지를 웹클라이언트로 제공한 이후에, 동작(637)에서, HTTP 서버는 이들의 저장 위치(가령, 국지적, 데이터베이스, 저장소)에서 통지를 삭제할 수 있거나, 통지 서버가 사용 중인 경우, 통지 서버는 통지를 삭제할 수 있다. 대안적으로, 통지의 수신의 답신은 웹클라이언트로부터 복구될 수 있고, 이에 대응하여, HTTP 서버 또는 통지 서버는 통지를 삭제할 수 있다.
동작(640)에서, HTTP 서버는, 이메일 서버에 지속적인 연결을 구축함에 의한 것을 포함하는, 웹클라이언트에 이메일 시스템 접근을 제공하고, 본 명세서에서 기술된 바와 같은 곧 있을 임의의 통지를 저장하고 전송할 수 있다. 일부 실시예에서, HTTP 서버는 웹클라이언트를 대신하여 이메일 서버에 연결을 우선 구축하고, 임의의 통지를 복구하고 전송하기 전에, 이메일 데이터 및/또는 서비스를 요청할 수 있다는 것에 유의한다. 이러한 모든 실시예는 본 개시물의 범위 내에 있는 것으로 고려된다. 동작(640) 이후에, 동작 절차(600)는 이들이 종료되는 동작(645)로 이동한다.
도 7은 본 개시물의 일부 실시예에 따른, 웹클라이언트, HTTP 서버(및, 일부 실시예에서 통지 서버) 및 이메일 서버 사이에서 발생할 수 있는 예시적인 통신을 도시하는 예시적이고 비-제한적인 신호 흐름(700)을 나타낸다. 통지 서버 실시예에서, HTTP 서버(720)는 HTTP 서버와 통지 서버 모두를 나타내고, 이들의 상호작용은 이하 자세히 제시된다는 것에 유의한다. 웹클라이언트(710)는 통신(711)에서, 이메일 시스템 접근 또는 데이터를 HTTP 서버(720)로부터 요청하거나, 아니면, 이메일 시스템에 관한 통신을 전송할 수 있다. 이에 대응하여, HTTP 서버(720)는 이메일 서버(730)와의 연결(가령, 지속적인 연결)을 구축하고, 이메일 데이터를 복구하고, 웹클라이언트(710)를 위한 통지를 신청하고, 및/또는 아니면 웹클라이언트(710)를 대신하여 이메일 서버(730)와 통신하기 위하여, 요청(721)을 전송할 수 있다.
대안적으로, 통신(711)에 응답하여, HTTP 서버(720)는 통지 서버에 알리거나, 아니면 통지 서버에 명령하여, 요청(721)을 전송하여 메일 서버(730)와 연결(가령, 지속적인 연결)을 구축하고, 웹클라이언트(710)를 위한 통지를 신청할 수 있다. 응답(731)은 이메일 서버(730)에서 HTTP 서버(720)로 전송될 수 있고, 이는 요청(721)의 수신의 확인, 이메일 데이터, 연결 데이터 과 같은 임의의 데이터를 포함할 수 있다. HTTP 서버는 이에 대응하여 통신(722)을 웹클라이언트(710)로 전송할 수 있고, 이는 웹클라이언트(710)를 위해 의도된 이메일 서버(730)에 의해 제공된 임의의 데이터를 포함할 수 있다.
통지(732)는 가령, 이메일 서버(730)에 의한 이벤트의 검출이나 생성에 응답하여, HTTP 서버(720)로 전송될 수 있다. 대안적으로, 통지(732)는 통지 서버로 전송될 수 있다. 이러한 이벤트는 이메일의 수신, 달력 리마인더, 미팅 초대 을 포함하여, 사용자에게 통지될 수 있는 임의의 타입의 이벤트일 수 있다. 723에서, HTTP 서버(720) 또는 그것과 함께 관련된 통지 서버는, 국지적으로 통지를 저장하는 것, 웹클라이언트(710)와 관련된 식별 정보로 데이터베이스 기록 내에 통지를 저장하는 것, 또는 저장소 내에 통지를 저장하고 웹클라이언트(710)와 관련된 식별 정보로 데이터베이스 기록 내에 통지 위치 정보를 저장하는 것을 포함하는, 임의의 방식으로 통지를 저장할 수 있다. 통지의 수신의 답신(724)은 HTTP 서버(720)나 통지 서버에 의해 이메일 서버(730)로 전송될 수 있다. 차후의 통지(733)는 HTTP 서버(720)나 통지 서버에 의해 수신될 수 있고, 725에서 저장되고, 726에서 답신될 수 있다. 임의의 다른 차후의 통지는 HTTP 서버(720)나 통지 서버에 의해 유사하게 수신되고, 저장되고, 답신될 수 있다.
HTTP 서버(720)는 추가적인 이메일 데이터나 이메일 서버(730)와의 상호작용에 대한 요청일 수 있는 통신(712)을 웹클라이언트(710)로부터 수신할 수 있다. 이러한 실시예에서, HTTP 서버(720)는 이러한 요청을 이메일 서버(730)로 포워딩하고, 이메일 서버(730)로부터 응답을 수신할 수 있다. 대안적으로, 통신(712)은 단지 정상적인 동작 절차에 따라서, 웹클라이언트(710)에 의해 전송되는 킵얼라이브일 수 있다. 통신(712)의 수신에 응답하여, HTTP 서버(720)는 웹클라이언트(710)를 위한 임의의 계류 중인 통지를 복구할 수 있다. 이는 국지적 복구, 데이터베이스로부터의 복구, 저장 장치로부터의 복구, 본 명세서에 기술된 바와 같은 통지 서버의 쿼리에 의한 복구, 또는 임의의 복구 방법과 수단을 포함할 수 있다. 계류 중인 통지는 통신(728)에서 웹클라이언트(710)으로 전송될 수 있는데, 이는 통신(712)에 응답하여 생성되거나 수신될 수 있는 임의의 다른 데이터나 통신을 포함할 수 있다.
상기에서 언급된 바와 같이, 본 명세서에 제시된 실시예는 이메일 서비스 제공자와 이메일 서버 및 시스템의 사용에 제한되지 않으며, 또한, 사용자가 첨부물을 포함할 수 있는 임의의 타입의 메세지를 작성할 수 있고, 작성 프로세스 동안에 HTTP 서버로의 연결이 중단될 수 있는 임의의 시스템 또는 사용자 소비를 위해 의도된 통지가 생성될 수 있는 임의의 시스템에서 사용될 수 있다는 것에 유의한다. 예를 들어, 많은 소셜 메세징 웹사이트 및 사용자 상호작용을 허용하는 다른 웹사이트는, 사용자들이 첨부물을 포함하는 메세지를 서로 전송하고, 새로운 메세지나 이벤트 발생을 표시하는 통지를 사용자에게 전송할 수 있게 하는 메세징 능력을 제공한다. 달력 서비스와 미팅 조율 서비스는 또한, 미팅과 긴급한 이벤트에 대한 초대의 사용자를 경보하는 통지를 사용자에게 전송할 수 있다. 기술 분야에서의 당업자는 개시된 실시예는 이러한 시스템에 용이하게 적용될 수 있고, 이러한 모든 적용예는 본 개시물의 범위 내에 있는 실시예로 고려된다는 것을 인식할 것이다.
본 발명은 하나 이상의 파일을 웹클라이언트와 관련시키거나 통지를 사용자에게 제공하는 임의의 다른 시스템으로 사용될 수도 있다는 것에 유의한다. 예를 들어, 일부 시스템은 사용자가 파일을 서버 또는 웹클라이언트를 사용하는 다른 장치(들)에 업로드할 수 있게 한다. 이러한 시스템에서, 업로드되는 파일이 비교적 대량이면, 파일의 업로딩을 용이하게 하기 위해 둘 이상의 부분으로 분리시킬 수 있다("복수부분 업로드"로 언급될 수 있음). 실시예에서, 이러한 시스템은 데이터베이스 내의 웹클라이언트를 위한 상태 정보를 저장할 수 있고, 저장 장치 또는 본 명세서에 기술된 바와 같은 시스템 내의 업로드되는 파일의 하나 이상의 부분을 저장할 수 있다. 위치 정보는 웹클라이언트와 관련된 데이터베이스 기록 내에 저장될 수 있거나, 아니면, 본 명세서에 기술된 바와 같이, 메세지 첨부물에 관한 것으로 결정될 수 있다. 이러한 실시예에서, 웹클라이언트가 통신하면서 복수부분 업로드를 수행하는 HTTP 서버는 사용불가능하게 되고, 백업 또는 대체작동(failover) HTTP 서버는 웹클라이언트가 복수부분 업로드의 프로세스에 있었는지를 결정할 수 있고, 그렇다면, 복수부분 업로드의 하나 이사의 부분이 어디에 저장될 수 있는지를 결정할 수 있다. 이러한 방식으로, 이러한 시스템은, 웹클라이언트를 초기에 서비스하는 HTTP 서버에 의해 이미 수신되었던 복수부분 업로드의 부분을 웹클라이언트가 재전송하는 것을 막을 수 있다.
도 8-10은 이들이, 본 명세서에서 개시된 실시예가 실행될 수 있는 예시적인 동작 환경을 도시하고, 가변하는 레벨의 입도(granularity)에서 이들 동작 환경을 도시한다는 점에서 도 1 및 2와 유사하다. 도 8은 일반적으로 복수의 데이터센터를 포함하는 프로그램가능한 실행 서비스 플랫폼을 도시한다. 도 9는 일반적으로 복수의 컴퓨터를 포함하는 데이터센터를 도시한다. 도 10은 일반적으로 컴퓨터를 도시한다.
도 8-10의 이들 동작 환경은 도 1 및 2의 동작 환경의 태양을 신행하는데 사용될 수 있다는 것을 인식할 수 있다. 예를 들어, HTTP 서버(130 및 140), 저장소(150), 데이터베이스(160) 및 메일 서버(170)는 도 8의 데이터센터(802) 또는 도 8의 복수의 데이터센터들(802)에 걸쳐서 실행될 수 있다. 마찬가지로, 도 1 및 2의 인터넷(120)은 도 8의 광역 네트워크일 수 있고, 도 1의 사용자 장치(101)는 도 8의 고객 컴퓨팅 시스템(804)일 수 있다.
도 8의 데이터센터(802) 내에서, HTTP 서버(130 및 140), 저장소(150), 데이서베이스(160) 및 메일 서버(170)는 각각 도 9의 서버 컴퓨터(902 또는 904)(이는 그 자체로 도 10의 컴퓨터(1000)일 수 있음)일 수 있다. 도 1 및 2의 통신 링크(112, 123, 124, 153, 154, 163 164, 173 및 174)는 도 9의 로컬 영역 네트워크(916)의 일부 일 수 있다.
이제 도 8의 세부사항으로 되돌아 가면, 도 8은 본 명세서에서 기술된 실시예가 실행되는 적절한 컴퓨팅 환경의 예시를 도시한다. (컴퓨팅 서비스 플랫폼(808)과 같은) 클라우드 서비스 제공자는 도시된 컴퓨팅 환경을 구성할 수 있어서, 엔티티(entity)의 가상 클라우드를 호스트하고, 아니면 고립될 수 있는 이들 가상 클라우드 사이의 통신 경로를 활성화시킬 수 있다. 특히, 도 8은, 가상 클라우드를 실행하고, 가상 머신 인스턴스와 같은 컴퓨팅 자원으로의 온-디맨드식 접근을 제공하기 위한 컴퓨팅 서비스 플랫폼(808)을 포함하는 도시된 동작 환경(800)을 도시하는 시스템과 네트워크 다이어그램이다. 컴퓨팅 서비스 플랫폼(808)은 영구적이나 필요한대로 애플리케이션을 실행하기 위한 컴퓨팅 자원을 제공할 수 있고, 개인 네트워크로 구성될 수 있다. 이들 컴퓨팅 자원은 데이터 프로세싱 자원, 데이터 저장 자원, 데이터 통신 자원등과 같은 다양한 타입의 자원을 포함할 수 있다. 각각의 타입의 컴퓨팅 자원은 일반-목적일 수 있고, 또는 복수의 특수한 컨피규레이션으로 사용가능할 수 있다. 예를 들어, 데이터 프로세싱 자원은 가상 머신 인스턴스로서 사용가능할 수 있다. 인스턴스는 메일 서버, 웹 서버, HTTP 서버, 저장 서버, 애플리케이션 서버, 미디어 서버, 데이터베이스 서버 등을 포함하는, 적용예를 실행하도록 구성될 수 있다. 데이터 저장 자원은 파일 저장 장치, 블록 저장 장치 등을 포함할 수 있다.
각각의 타입이나 구성의 컴퓨팅 자원은, 많은 프로세서로 구성된 대량 자원, 대량의 메모리 및/또는 대량 저장 용량 및 더 적은 프로세서로 구성된 작은 자원, 더 작은 양의 메모리 및/또는 더 작은 저장 용량과 같이 다양한 크기로 사용가능할 수 있다. 엔티티는 가령, 복수의 작은 프로세싱 자원을 웹 서버, HTTP 서버로 할당하고, 및/또는 하나의 대량 프로세싱 자원을 데이터베이스 서버로 할당하도록 선택할 수 있다.
컴퓨팅 서비스 플랫폼(808)에 의해 제공되는 컴퓨팅 자원은 하나 이상의 데이터센터들(802A-802N)에 의해 활성화될 수 있는데, 이는 단수로서 "데이터센터(802)" 또는 복수로서 "데이터센터들(802)"로 언급될 수 있다. 데이터센터들(802)은 컴퓨터 시스템과 관련 구성들을 수용하고 동작시키는 시설일 수 있고, 중복 및 백업 전력 통신, 냉각 및 보안 시스템을 포함할 수 있다. 데이터센터들(802)은 동일한 시설과 같은 동일한 지리적 영역에 위치될 수 있고, 고속 광섬유 네트워크와 같은 개인 네트워크를 사용하여 상호연결될 수 있고, 제어될 수 있으며, 컴퓨팅 서비스 플랫폼(808)의 서비스 제공자에 의해 관리될 수 있다. 데이터센터들(802)은 지리적으로 분리된 위치에 걸쳐 분산될 수 있고, 인터넷과 같은 공공 네트워크를 사용하여 부분적으로 상호연결될 수 있다. 본 명세서에 개시된 개념과 기술을 실행하는 데이터센터(802)를 위한 하나의 도시된 컨피규레이션은 도 9에 관해 이하 기술된다.
컴퓨팅 서비스 플랫폼(808)의 엔티티는 광-역 네트워크("WAN")(806)에 걸친 데이터센터들(802)에 의해 제공되는 컴퓨팅 자원에 접근할 수 있다. WAN이 도 8에 도시되지만, 로컬-영역 네트워크("LAN"), 인터넷 또는 데이터센터들(802)을 원격 엔티티와 그 밖의 사용자에 연결하는, 기술 분야에서 알려진 그 밖의 다른 네트워킹 토폴로지가 사용될 수 있다. 이러한 네트워크의 조합도 사용될 수 있다는 것도 인식해야 한다.
컴퓨팅 서비스 플랫폼(808)의 고객인 엔티티 또는 다른 엔티티는 데이터센터들(802)에 의해 제공되는 컴퓨팅 자원에 접근하기 위해 고객 컴퓨팅 시스템(804)을 사용할 수 있다. 고객 컴퓨팅 시스템(804)은 서버 컴퓨터, 데스크톱 또는 랩톱 개인용 컴퓨터, 태블릿 컴퓨터, 무선 전화, PDA, 이-리더, 게임 콘솔, 셋-톱 박스 또는 그 밖의 다른 컴퓨팅 장치와 같은 컴퓨팅 서비스 플랫폼(808)에 접근할 수 있는 컴퓨터를 포함할 수 있다.
이하에 더 자세히 기술되는 바와 같이, 고객 컴퓨팅 시스템(804)는 컴퓨팅 서비스 플랫폼(808)에 의해 제공되는 컴퓨팅 자원의 태양을 구성하는데 사용될 수 있다. 이에 관하여, 컴퓨팅 서비스 플랫폼(808)은 웹 인터페이스를 제공할 수 있는데, 웹 인터페이스의 동작은 고객 컴퓨팅 시스템(804)을 실행하는 웹 브라우저 애플리케이션 프로그램의 사용을 통해 구성될 수 있다. 대안적으로, 고객 컴퓨팅 시스템(804)에서 실행되는 스탠드-어론 애플리케이션 프로그램은 컨피규레이션 동작을 수행하기 위한 컴퓨팅 서비스 플랫폼(808)에 의해 노출된 애플리케이션 프로그래밍 인터페이스(API)에 접근할 수 있다. 컴퓨팅 서비스 플랫폼(808) 상의 새로운 가상 머신 인스턴스를 론칭하는 것을 포함하여, 컴퓨팅 서비스 플랫폼(808)의 동작을 구성하기 위한 다른 메카니즘도 사용될 수 있다.
본 명세서에 개시된 실시예에 따르면, 컴퓨팅 서비스 플랫폼(808)에 의해 제공되는 구입된 컴퓨팅 자원의 용량은 수용에 응답하여 스케일 될 수 있다. 이에 관하여, 스케일링은 인스턴스하는 것의 프로세스를 말하여, 이는 본 명세서에서 "론칭" 또는 "생성" 또는 종료로 언급될 수 있고, 수요에 응답하여 컴퓨팅 자원의 인스턴스를 "디-스케일링하는 것"으로 언급될 수 있다.
자동 스케일링이 자원에 대한 요구를 증가시키거나 진정시키는 것에 응답하여, 컴퓨팅 자원을 스케일링하기 위한 하나의 메카니즘일 수 있다. 자동 스케일링은 엔티티에 의해 정의된 상황에 따라, 컴퓨팅 서비스 플랫폼(808)의 엔티티가 이들의 구입된 컴퓨팅 자원을 스케일할 수 있도록 할 수 있다. 예를 들어, 수요의 급등(spike)과 같이 구체적인 상황의 발생에 응답하여, 규칙이 특정한 방식으로 용량을 스케일링 업하기 위해 정의될 수 있다. 마찬가지로, 규칙은 수요의 진정과 같이 다른 상황의 발생에 응답하여, 규칙이 특정한 방식으로 용량을 스케일 다운하기 위해서도 정의될 수 있다. 가상 머신 인스턴스를 론칭하기 위해 본 명세서에 개시된 메카니즘은, 인스턴스가 엔티티에 의해 수동으로 론칭될 때나 인스턴스가 컴퓨팅 서비스 플랫폼(808) 내의 구성을 자동 스케일링함에 의해 론칭될 때, 사용될 수 있다.
컴퓨팅 서비스 플랫폼(808)은 컴퓨팅 자원의 새로운 인스턴스의 전개에서 엔티티를 보조하기 위한 전개 구성(deployment component)으로 구성될 수 있다. 전개 구성은, 얼마나 새로운 인스턴스가 구성되어야 하는지를 기술하는 데이터를 포함할 수 있는 컨피규레이션을 엔티티로부터 수신할 수 있다. 예를 들어, 컨피규레이션은 새로운 인스턴스 내에 설치되어야 하는 하나 이상의 애플리케이션 또는 소프트웨어 구성을 특정할 수 있고, 새로운 인스턴스에서 실행될 스크립트 및/또는 다른 타입의 코드를 제공할 수 있으며, 애플리케이션 캐시(cache)가 어떻게 준비되어야 하는지를 특정하는 캐시 워밍 로직(cache warming logic)과 다른 타입의 정보를 제공할 수 있다. 전개 구성은 엔티티-제공된 컨피규레이션과 캐시 워밍 로직을 사용하여, 컴퓨팅 자원의 새로운 인스턴스를 론칭, 구성 및 대비시킨다.
도 9는 컴퓨팅 서비스 플랫폼(808)을 실행하는 데이터센터(802)를 위한 하나의 컨피규레이션을 도시하는 컴퓨팅 시스템 다이어그램을 도시한다. 도 9의 예시적인 데이터센터(802)는 여러 서버 컴퓨터(902A-902N)을 포함할 수 있는데, 이는 본 명세서에서 단수로 "서버 컴퓨터(902)"로 언급될 수 있고, 가상 클라우드를 호스팅하고 애플리케이션을 실행하기 위한 컴퓨팅 자원을 제공하기 위해, 복수로 "서버 컴퓨터들(902)"로 언급될 수 있다. 서버 컴퓨터들(902)은 상기 기술된 컴퓨팅 자원을 제공하기 위해 적절히 구성된 스탠다드 타워(standard tower) 또는 랙-마운트 서버 컴퓨터들(rack-moune server computers)일 수 있다. 예를 들어, 하나의 실행예에서, 서버 컴퓨터들(902)은 컴퓨팅 자원의 인스턴스(906A-906N)을 제공하기 위해 구성될 수 있다.
본 명세서에서 단수로 "인스턴스(906)" 또는 복수로 "인스턴스들(906)"로 언급될 수 있는 인스턴스들(906A-906N)은 가상 머신 인스턴스들일 수 있다. 기술 분야에서 공지된 바와 같이, 가상 머신 인스턴스는 물리적 머신과 같은 프로그램을 실행하는 머신(, 컴퓨터)의 소프트웨어 실행의 인스턴스이다. 가상 머신 인스턴스들의 예시에서, 각각의 서버 컴퓨터(902)는 인스턴스들을 실행할 수 있는 인스턴스 관리자(908)를 실행하도록 구성될 수 있다. 인스턴스 관리자(908)는 하이퍼바이저(hypervisor) 또는 가령, 단일 서버 컴퓨터(902)상의 복수의 인스턴스들(906)을 실행할 수 있도록 구성된 또 다른 타입의 프로그램일 수 있다. 각각의 인스턴스들(906)은 애플리케이션의 전부나 일부를 실행하도록 구성될 수 있다.
본 명세서에 기술된 실시예가 주로 가상 머신 인스턴스들의 맥락에서 기술되지만, 다른 타입의 인스턴스들이 본 명세서에 개시된 개념과 기술로 사용될 수 있다는 것을 인식해야 한다. 예를 들어, 본 명세서에 개시된 기술은 저장 자원의 인스턴스들, 데이터 통신 자원의 인스턴스들 및 다른 타입의 자원들로 사용될 수 있다. 본 명세서에 기술된 실시예는 가상 머신 인스턴스들을 사용하지 않으면서, 컴퓨터 시스템 상의 애플리케이션의 전부나 일부를 직접 실행할 수도 있다.
도 9에 도시된 데이터센터(802)는, 데이터센터(802), 서버 컴퓨터들(902) 및 인스턴스들(906)의 동작을 관리하기 위한 소프트웨어 구성을 실행하기 위해 예약된 서버 컴퓨터(904)도 포함할 수 있다. 특히, 서버 컴퓨터(904)는 관리 구성(910)을 실행할 수 있다. 상기에서 논의된 바와 같이, 컴퓨팅 서비스 플랫폼(808)의 엔티티는 고객 컴퓨팅 시스템(804)을 사용하여, 관리 구성(910)에 접근하여, 컴퓨팅 서비스 플랫폼(808) 및 엔티티에 의해 구입된(purchased) 인스턴스들(906)의 동작의 다양한 태양을 구성할 수 있다. 예를 들어, 엔티티는 인스턴스들을 구입할 수 있고, 인스턴스들의 컨피규레이션을 가변시킬 수 있다. 또한, 엔티티는 구입된 인스터스들이 수용에 응답하여 어떻게 스케일되는지에 관한 설정을 특정할 수 있다. 또한, 엔티티는 인스턴스들을 론칭하기 위한 요청을 관리 구성(910)에 제공할 수 있다.
상기에서 간단히 기술된 바와 같이, 자동 스케일링 구성(912)은 컴퓨팅 서비스 플랫폼(808)의 엔티티에 의해 정의된 규칙에 기초하여, 인스턴스들(906)을 스케일할 수 있다. 예를 들어, 자동 스케일링 구성(912)은, 새로운 인스턴스들이 언제 인스턴스화(instantiated)되는지를 결정하는데 사용을 위한 스케일 업 규칙과, 인스턴스들이 언제 종료되어야 하는지를 결정하는데 사용을 위한 스케일 다운 규칙을 엔티티가 특정할 수 있다.
자동 스케일링 구성(912)은 단일 서버 컴퓨터(904) 상에서 또는 컴퓨팅 서비스 플랫폼(808) 내의 복수의 서버 컴퓨터들(902)에 걸쳐 병렬로 실행될 수 있다. 또한, 자동 스케일링 구성(912)은 다양한 서버 컴퓨터들(902) 또는 컴퓨팅 서비스 플랫폼(808) 내의 다른 컴퓨팅 장치상에서 실행되는 복수의 서브구성으로 구성될 수 있다. 자동 스케일링 구성(912)은 소프트웨어, 하드웨어 또는 이들 둘의 조합으로 실행될 수 있다. 자동 스케일링 구성(912)은 가령, 내부 관리 네트워크를 통해 컴퓨팅 서비스 플랫폼(808) 내의 사요가능한 컴퓨팅 자원을 모니터할 수 있다.
상기에서 간단히 논의된 바와 같이, 데이터센터(802)는 컴퓨팅 자원의 새로운 인스턴스들(906)의 전개에서 엔티티를 보조하기 위해, 전개 구성(914)으로 구성될 수도 있다. 전개 구성(914)은, 새로운 인스턴스들(906)이 어떻게 구성되어야 하는지를 기술하는 데이터를 포함하는 컨피규레이션을 엔티티로부터 수신할 수 있다. 예를 들어, 컨피규레이션은 새로운 인스턴스들(906) 내에 설치되어야 하는 하나 이상의 애플리케이션을 특정할 수 있고, 새로운 인스턴스(906)를 구성하기 위해 실행되는 스크립트 및/또는 다른 타입의 코드를 제공할 수 있으며, 애플리케이션 캐시가 어떻게 준비되어야 하는지를 특정하는 캐시 워밍 로직과 다른 타입의 정보를 제공할 수 있다.
전개 구성(914)은 엔티티-제공된 컨피규레이션과 캐시 워밍 로직을 사용하여, 새로운 인스턴스들(906)을 구성, 대비 및 론칭할 수 있다. 컨피규레이션, 캐시 워밍 로직 및 다른 정보는 관리 구성(910)을 사용하는 엔티티 또는 이러한 정보를 직접 전개 구성(914)에 제공함에 의해 특정될 수 있다. 또한, 다른 메카니즘은 전개 구성(914)의 동작을 구성하는데 사용될 수도 있다.
도 9에 도시된 예시적인 데이터센터(802)에서, 적절한 LAN(916)은 서버 컴퓨터들(902A-902N)과 서버 컴퓨터(904)를 상호연결하는데 사용될 수 있다. 또한, LAN(916)은 도 8에 도시된 WAN(806)에 연결될 수 있다. 도 8 및 9에 도시된 네트워크 토폴로지는 매우 간략되었고, 더 많은 네트워크가 네트워킹 장치가 본 명세서에 개시된 다양한 컴퓨팅 시스템들을 상호연결하는데 사용될 수 있다는 것을 인식해야 한다. 적절한 부하 밸런싱 장치 또는 소프트웨어 모듈도, 각각의 데이터센터들(802A-802N) 사이, 각각의 데이터센터(802) 내의 각각의 서버 컴퓨터들(902A-902N) 사이 및 컴퓨팅 서비스 플랫폼(808)의 각각의 엔티티에 의해 구입된 인스턴스들(906) 사이의 부하를 밸런싱하기 위해 사용될 수 있다. 이들 네트워크 토폴로지 및 장치는 기술 분야에서의 당업자에게 명백해야 한다.
도 9에 기술된 데이터센터(802)는 단지 설명적이고, 다른 실행예가 사용될 수 있다는 것을 인식해야 한다. 특히, 관리 구성(910), 자동 스케일링 구성(912) 및 전개 구성(914)에 의해 수행되는 본 명세서에서 기술된 기능은 서로에 의해 수행될 수 있거나, 다른 구성에 의해 수행될 수 있거나, 이들 또는 다른 구성의 조합에 의해 수행될 수 있다. 또한, 이러한 기능은, 소프트웨어, 하드웨어 또는 소프트웨어와 하드웨어의 조합으로 실행될 수 있다는 것을 인식해야 한다. 다른 실행예는 기술 분야에서의 당업자에게 명백해야 한다.
도 10은 상기 기술된 소프트웨어 구성을 실행할 수 있는 컴퓨터(1000)를 위한 예시적인 컴퓨터 아키텍처를 도시한다. 도 10에 도시된 컴퓨터 아키텍처는 종래의 서버 컴퓨터, 워크스테이션, 데스크톱 컴퓨터, 랩톱, 태블릿, 네트워크 장비, PDA, 이-리더, 디지털 셀룰러 폰 또는 다른 컴퓨팅 장치를 도시하고, 사용자 장치(101), HTTP 서버(130 및 140), 저장소(150), 데이터베이스(160), 메일 서버(170) 상에서, 데이터센터들(802A-802N) 내에서, 서버 컴퓨터들(902A-902N)상에서, 고객 컴퓨팅 시스템(804) 상에서, 또는 본 명세서에 언급된 다른 컴퓨팅 시스템 상에서 실행되는 것으로 기술되는 본 명세서에 제시된 소프트웨어 구성의 임의의 태양을 실행하기 위해 사용될 수 있다.
컴퓨터(1000)는 복수의 구성 또는 장치가 시스템 버스나 다른 전기적 통신 경로에 의해 연결될 수 있는 인쇄 회로 기판인 베이스보드 또는 "마더보드"를 포함할 수 있다. 하나 이상의 중앙 프로세싱 유닛("CPU")(1004)는 칩셋(1006)과 함께 동작할 수 있다. CPU(1004)는 컴퓨터(1000)의 동작을 위해 필요한 연산적, 그리고 논리적 동작을 수행하는 표준 프로그램가능한 프로세서일 수 있다.
CPU(1004)는, 하나의 이산 물리적 상태에서 다음으로 천이함에 의해, 이들 상태들 사이를 구별하고 가변시키는 스위칭 요소의 조작을 통해, 필요한 동작을 수행할 수 있다. 스위칭 요소는 일반적으로, 플립-플롭과 같은 이진 상태 중 하나를 유지하는 전자 회로, 및 논리 게이트와 같이 하나 이상의 다른 스위칭 요소의 상태의 논리적 조합에 기초하여 출력 상태를 제공하는 전자 회로를 포함할 수 있다. 이들 기본 논리 요소는 레지스터, 가산기-감산기, 연산 논리 유닛, 플로팅-포인트 유닛 등을 포함하는, 좀 더 복잡한 논리 회로를 생성하기 위해 조합될 수 있다.
칩셋(1006)은 CPU(1004)와 베이스보드상의 나머지 구성 및 장치 사이에 인터페이스를 제공할 수 있다. 칩셋(1006)은 컴퓨터(1000) 내의 메인 메모리로 사용되는 랜덤 액세스 메모리("RAM")(1008)에 인터페이스를 제공할 수 있다. 칩셋(1006)은 컴퓨터(1000)를 시작하고, 다양한 구성과 장치들 사이에 정보를 전송하는데 도움을 줄 수 있는 기본 루틴을 저장하기 위해, 리드-온리 메모리("ROM")(1020) 또는 비-휘발성 RAM("NVRAM")과 같은 컴퓨터-판독가능한 저장 매체에 인터페이스를 더 제공할 수 있다. 또한, ROM(1020) 또는 NVRAM은 본 명세서에 기술된 실시예에 따라, 컴퓨터(1000)의 동작을 위해 필요한 다른 소프트웨어 구성도 저장할 수 있다.
컴퓨터(1000)는 네트워크(916)를 통해 원격 컴퓨팅 장치와 컴퓨터 시스템으로의 논리적 연결을 사용하여 네트워크된 환경에서 동작할 수 있다. 칩셋(1006)은 기가비트 이더넷 어댑터와 같은, 네트워크 인터페이스 컨트롤러("NIC")(1022)를 통해 네트워크 연결을 제공하기 위한 기능을 포함할 수 있다. NIC(1022)는 네트워크(916)를 통해 컴퓨터(1000)를 다른 컴퓨팅 장치에 연결할 수 있다. 복수의 NIC(1022)는 컴퓨터(1000)에 존재하여, 컴퓨터를 다른 타입의 네트워크 및 원격 컴퓨터 시스템에 연결할 수 있다는 것을 인식해야 한다.
컴퓨터(1000)는 비-휘발성 저장소를 컴퓨터에 제공하는 대용량 저장 장치(1028)에 연결될 수 있다. 대용량 저장 장치(1028)는, 본 명세서에 좀 더 자세히 기술되었던, 메세지 첨부물, 웹클라이언트 상태 데이터 및 통지를 포함하는, 시스템 프로그램, 애플리케이션 프로그램, 다른 프로그램 모듈 및 데이터를 저장할 수 있다. 대용량 저장 장치(1028)는 칩셋(1006)에 연결된 저장 컨트롤러(1024)를 통해 컴퓨터(1000)에 연결될 수 있다. 대용량 저장 장치(1028)는 하나 이상의 물리적 저장 유닛으로 구성될 수 있다. 저장 컨트롤러(1024)는 시리얼 어태치된("SAS") 스몰 컴퓨터 시스템 인터페이스("SCSI") 인터페이스, 시리얼 어드밴스트 테크놀로지 어태치먼트("SATA") 인터페이스, 파이버 채널("FC") 인터페이스 또는 컴퓨터와 물리적 저장 유닛 사이에 데이터를 물리적으로 연결하고 전송하기 위한 다른 타입의 인터페이스를 통해 물리적 저장 유닛과 인터페이스할 수 있다.
컴퓨터(1000)는 물리적 저장 유닛의 물리적 상태를 변환시킴에 의해 대용량 저장 장치(1028) 상에 데이터를 저장하여, 정보가 저장되고 있음을 반영할 수 있다. 물리적 상태의 특정한 변환은 다양한 요소 및 본 설명의 다양한 실행예에 의존할 수 있다. 이러한 요소의 예시는, 대용량 저장 장치(1028)가 일차 또는 이차 저장소 등으로서 특징되는지, 물리적 저장 유닛을 실행하는데 사용되는 기술을 포함할 수 있으나, 이에 제한되지 않는다.
예를 들어, 컴퓨터(1000)는, 자기 디스크 드라이브 유닛 내의 특정 위치의 자기적 특징, 광학 저장 유닛 내의 특정 위치의 반사 또는 굴절 특징, 또는 고체-상태 저장 유닛 내의 특정 커패시터, 트랜지스터 또는 다른 이산 구성의 전기적 특징을 변경하기 위해, 저장 컨트롤러(1024)를 통해 명령을 발행함에 의해, 대용량 저장 장치(1028)로 정보를 저장할 수 있다. 물리적 매체의 다른 변환은, 본 설명을 용이하게 하기 위해서만 제공된 상기 예시와 함께, 본 개시물의 밤위와 사상에서 벗어남 없이 가능할 수 있다. 컴퓨터(1000)는 물리적 저장 유닛 내의 하나 이상의 특정 위치의 물리적 상태나 특징을 검출함에 의해, 대용량 저장 장치(1028)로부터 정보를 더 판독할 수 있다.
상기 기술된 대용량 저장 장치(1028)에 덧붙여서, 컴퓨터(1000)는 프로그램 모듈, 데이터 구조 또는 다른 데이터와 같은 정보를 저장하고 복구하기 위해, 다른 컴퓨터-판독가능한 저장 매체에 접근할 수 있다. 컴퓨터-판독가능한 저장 매체는 비-일시적 데이터의 저장을 제공하고, 컴퓨터(1000)에 의해 접근될 수 있는 임의의 사용가능한 매체일 수 있다는 것을 인식할 것이다.
제한 없는 예시에 의해, 컴퓨터-판독가능한 저장 매체는, 임의의 방법 또는 기술로 실행되는, 휘발성 및 비-휘발성, 일시적 및 비-일시적, 제거가능 및 비-제거가능한 매체를 포함할 수 있다. 컴퓨터-판독가능한 저장 매체는, RAM, ROM, 삭제가능하고 프로그램가능한 ROM("EPROM"), 전기적으로-삭제가능하고 프로그램가능한 ROM("EEPROM"), 플래시 메모리 또는 다른 고체-상태 메모리 기술, 콤팩트 디스크 ROM("CD-ROM"), 디지털 다목적 디스크("DVD"), 고화질 DVD("HD-DVD"), 블루-레이 또는 다른 광학 저장소, 자기적 카세트, 자기적 테잎, 자기 디스크 저장소 또는 다른 자기적 저장 장치 또는 비-일시적 방식으로 원하는 정보를 저장하는데 사용될 수 있는 임의의 다른 매체를 포함하나, 이에 제한되지 않는다.
대용량 저장 장치(1028)는 컴퓨터(1000)의 동작을 제어하는데 사용되는 운영 시스템을 저장할 수 있다. 일 실시예에 따르면, 운영 시스템은 LINUX 운영 시스템의 버전을 포함한다. 또 다른 실시예에 따르면, 운영 시스템은 MICROSOFT 회사로부터의 WINDOW SERVER 운영 시스템의 버전을 포함한다. 추가 실시예에 따르면, 운영 시스템은 UNIX 운영 시스템의 버전을 포함할 수 있다. 다른 운영 시스템도 사용될 수 있다는 것을 인식해야 한다. 대용량 저장 장치(1028)는, 관리 구성(910) 및/또는 상기 기술된 다른 소프트웨어 구성과 같은, 컴퓨터(1000)에 의해 사용되는 다른 시스템 또는 애플리케이션 프로그램 및 데이터를 저장할 수 있다.
대용량 저장 장치(1028) 또는 다른 컴퓨터-판독가능한 저장 매체는 컴퓨터-실행가능한 명령으로 인코딩될 수 있어서, 상기 명령은, 컴퓨터(1000) 내로 로딩될 때, 일반-목적의 컴퓨팅 시스템을 본 명세서에 기술된 실시예를 실행할 수 있는 특수-목적의 컴퓨터로 변환한다. 이들 컴퓨터-실행가능한 명령은, 상기 기술된 바와 같이, 상태들 사이의 CPU(1004) 천이가 어떤지를 특정함에 의해, 컴퓨터(1000)를 변환한다. 컴퓨터(1000)는 컴퓨터-실행가능한 명령을 저장하는 컴퓨터-판독가능한 저장 매체에 접근할 수 있는데, 명령은 컴퓨터(1000)에 의해 실행될 때, 도 3-6에 도시된 동작 절차를 수행할 수 있다.
컴퓨터(1000)는 또한, 키보드, 마우스, 터치패드, 터치 스크린, 전자 스타일러스 또는 입력 장치의 다른 타입과 같은 복수의 입력 장치로부터 입력을 수신하고 프로세싱하기 위한 입력/출력 컨트롤러(1032)도 포함할 수 있다. 마찬가지로, 입력/출력 컨트롤러(1032)는 컴퓨터 모니터, 플랫-패널 디스플레이, 디지털 프로젝터, 프린터, 플로터 또는 출력 장치의 다른 타입과 같은 디스플레이에 출력을 제공할 수 있다. 컴퓨터(1000)는 도 10에 도시된 모든 구성을 포함하지 않을 수 있거나, 도 10에 명시적으로 도시되지 않은 다른 구성을 포함할 수 있거나, 도 10에 도시된 것과 완전히 상이한 아키텍처를 사용할 수 있다는 것을 인식할 것이다.
도면에 도시된 네트워크 토폴로지는 매우 간략화되었고, 더 많은 네트워크와 네트워킹 장치가 본 명세서에 개시된 다양한 컴퓨팅 시스템들을 상호연결하는데 사용될 수 있다는 것을 인식해야 한다. 이들 네트워크 토폴로지 및 장치는 기술 분야에서의 당업자에게 명백해야 한다.
도면에서의 시스템은 단지 설명적이고, 다른 실행예가 사용될 수 있다는 것도 인식해야 한다. 또한, 본 명세서에 개시된 기능은 소프트웨어, 하드웨어 또는 소프트웨어와 하드웨어의 조합으로 실행될 수 있다는 것을 인식해야 한다. 다른 실행예는 기술 분야에서의 당업자에게 명백해야 한다. 서버, 게이트웨이 또는 다른 컴퓨팅 장치는, 제한 없이 데스크톱 또는 다른 컴퓨터, 데이터베이스 서버, 네트워크 저장 장치 및 다른 네트워크 장치, PDA, 태블릿, 셀폰, 무선 폰, 페이저, 전자 수첩, 인터넷 장비, 텔레비전-기반의 시스템(가령, 셋톱 박스 및/또는 개인용/디지털 비디오 녹화기를 사용하여) 및 적절한 통신 능력을 포함하는 다양한 다른 고객 제품을 포함하여, 기술된 타입의 기능을 수행하고 상호작용 할 수 있는 하드웨어 또는 소프트웨어의 임의의 조합을 포함할 수 있다는 것도 인식해야 한다. 또한, 도시된 모듈에 의해 제공된 기능은 일부 실시예에서, 더 적은 모듈로 결합되거나 추가 모듈에 분포될 수 있다. 마찬가지로, 일부 실시예에서, 도시된 모듈의 일부의 기능이 제공되지 않을 수 있고, 및/또는 다른 추가 기능이 사용가능할 수 있다.
이전 섹션에서 기술된 각각의 동작, 프로세스, 방법 및 알고리즘은, 하나 이상의 컴퓨터나 컴퓨터 프로세서에 의해 실행되는 코드 모듈에 의해 완전히 또는 부분적으로 자동화되어 구현될 수 있다. 코드 모듈은, 하드 드라이브, 고체 상태 메모리, 광학 디스크 및/또는 유사물과 같은 비-일시적 컴퓨터-판독가능한 매체나 컴퓨터 저장 장치의 임의의 타입상에 저장될 수 있다. 프로세스 및 알고리즘은 애플리케이션-특수 회로 내에서 부분적이나 전체적으로 실행될 수 있다. 개시된 프로세스 및 프로세스 단계의 결과는 영구적으로, 아니면, 가령, 휘발성 또는 비-휘발성 저장소와 같은 비-일시적 컴퓨터 저장소의 임의의 타입으로 저장될 수 있다.
상기 기술된 다양한 특징과 프로세스는 서로에 대해 독립적으로 사용될 수 있거나, 다양한 방식으로 조합될 수 있다. 가능한 모든 조합과 하위-조합은 본 개시물의 범위 내에 있는 것으로 의도된다. 또한, 어떤 방법 또는 프로세스 블록은 일부 실시예에서 생략될 수 있다. 본 명세서에 기술된 방법과 프로세스는 임의의 특정 시퀀스로 제한되지 않고, 이에 관한 블록 또는 상태는 적절한 다른 시퀀스로 수행될 수 있다. 예를 들어, 기술된 블록, 동작 및 상태는 명시적으로 개시된 것과 다른 순서로 수행될 수 있고, 또한 복수의 블록 또는 상태는 단일 블록 또는 상태로 조합될 수 있다. 예시적인 블록, 동작 및 상태는 직렬적으로, 병렬적으로, 또는 일부 다른 방식으로 수행될 수 있다. 블록, 동작, 및 상태는 개시된 예시적인 실시예에 추가 또는 제거될 수 있다. 본 명세서에 기술된 예시적인 시스템과 구성은 개시된 것과 상이하게 구성될 수 있다. 예를 들어, 요소는 개시된 예시적인 실시예에 비교하여, 추가 또는 삭제 또는 재배열될 수 있다.
다양한 아이템은 사용되는 동안, 메모리나 저장소에 저장되는 것으로 도시되고, 이들 아이템 또는 아이템의 일부는 메모리 관리와 데이터 무결성을 위해, 메모리와 다른 저장 장치 사이에서 전송될 수 있다는 것도 인식할 것이다. 대안적으로, 다른 실시예에서, 소프트웨어 모듈 및/또는 시스템의 일부 또는 전부는 메모리 내에서 또 다른 장치를 실행하고, 인터-컴퓨터 통신을 통해 도시된 컴퓨팅 시스템과 통신할 수 있다. 더구나, 일부 실시예에서, 시스템 및/또는 모듈의 일부 또는 전부는, 펌웨어 및/또는 하드웨어에서 적어도 부분적으로, 하나 이상의 애플리케이션-특수 집적 회로(ASIC), 표준 집적 회로, 컨트롤러(가령, 적절한 명령을 실행하고, 마이크로컨트롤러 및/또는 내장된 컨트롤러에 의해), 필드-프로그램가능한 게이트 어레이(FPGA), 복잡한 프로그램가능한 논리 장치(CPLD) 을 포함하나 이에 제한되지 않는 다른 방식으로 실행되거나 제공될 수 있다. 모듈, 시스템 및 데이터 구조의 일부 또는 전부는, 하드 디스크, 메모리, 네트워크 또는 적절한 드라이브나 적절한 연결에 의해 판독될 휴대용 매체 아티클과 같은 컴퓨터-판독가능한 매체상에 (가령, 소프트웨어 명령 또는 구조화된 데이터로서) 저장될 수 있다. 시스템, 모듈 및 데이터 구조는 또한, 무선-기반과 유선/케이블-기반의 매체를 포함하는 다양한 컴퓨터-판독가능한 전송 매체상에서 생성된 데이터 신호(가령, 반송파 또는 다른 아날로그 또는 디지털 전파 신호의 일부로서)로서 전송될 수도 있고, 다양한 형태(가령, 단일 또는 멀티플렉스된 아날로그 신호의 일부로서, 또는 복수의 이산 디지털 패킷이나 프레임으로서)를 취할 수 있다. 이러한 컴퓨터 프로그램 제품은 다른 실시예에서 다른 형태를 취할 수도 있다. 따라서, 본 발명은 다른 컴퓨터 시스템 컨피규레이션으로 실시될 수 있다.
본 개시물의 실시예는 다음 조항으로 기술될 수 있다.
1. 방법에 있어서, 상기 방법은,
하이퍼텍스트 트랜스퍼 프로토콜(HTTP) 서버에서, 이메일 시스템과 상호작용하기 위한 요청을 웹클라이언트로부터 수신하는 단계;
HTTP 서버에 의해, 이메일 시스템과 지속적인 연결을 구축하는 단계;
HTTP 서버에서, 웹클라이언트와 관련된 통지를 이메일 시스템으로부터 수신하는 단계;
HTTP 서버에 의해 통지를 저장하는 단계;
HTTP 서버에서, 웹클라이언트로부터 통신을 수신하는 단계;
통신을 수신함에 응답하여, HTTP 서버에 의해 통지를 복구하는 단계; 및
HTTP 서버로부터의 통지를 웹클라이언트로 전송하는 단계를 포함한다.
2. 제 1 항의 방법에 있어서, HTTP 서버는 데이터베이스, 저장 장치 또는 국지적 저장 장치 중 적어도 하나의 통지를 저장한다.
3. 이전 항의 방법에 있어서,
HTTP 서버에서, 웹클라이언트와 관련된 제2 통지를 이메일 시스템으로부터 수신하는 단계;
HTTP 서버에 의해 제2 통지를 저장하는 단계;
제2 HTTP 서버에서, 웹클라이언트로부터 제2 통신을 수신하는 단계;
제2 HTTP 서버에 의해, 제2 통지가 저장된 것을 결정하는 단계;
제2 통지를 복구하는 단계; 및
제2 HTTP 서버로부터의 제2 통지를 웹클라이언트로 전송하는 단계를 더 포함한다.
4. 이전 항의 방법에 있어서, 통지는 HTTP 서버에 의해 이메일 데이터와 함께 전송된다.
5. 시스템에 있어서, 상기 시스템은,
명령을 포함하는 메모리; 및
상기 메모리에 결합되는 프로세서를 포함하되, 명령이 실행될 때, 상기 프로세서는,
웹클라이언트로부터 서버에 접근하는 요청을 수신하는 단계;
서버와 지속적인 연결을 구축하는 단계;
서버로부터 웹클라이언트와 관련된 통지를 수신하는 단계;
통지를 저장하는 단계; 및
웹클라이언트로부터 수신된 차후의 통신에 응답하여 통지를 웹클라이언트로 전송하는 단계를 포함하는 동작들을 발효시킨다.
6. 제 5 항의 시스템에 있어서, 상기 동작들은 웹클라이언트를 위한 식별 정보를 생성하는 단계를 더 포함한다.
7. 제 6 항의 시스템에 있어서, 통지를 저장하는 단계는, 데이터베이스 기록 내에 통지 및 식별 정보를 저장하는 단계를 포함한다.
8. 제 6 항의 시스템에 있어서, 통지를 저장하는 단계는, 저장 장치 내에 통지를 저장하는 단계 및 통지와 식별 정보를 위한 저장 장치 위치 정보를 데이터베이스 기록 내에 저장하는 단계를 포함한다.
9. 제 5 항 내지 제 8 항의 시스템에 있어서, 동작들은, 통지를 웹클라이언트로 전송한 이후에, 통지를 삭제하는 단계를 더 포함한다.
10. 제 5 항 내지 제 9 항의 시스템에 있어서, 서버와 지속적인 연결을 구축하는 단계는, 서버와 지속적인 연결을 구축하기 위해 통지 서버에 명령하는 단계를 포함한다.
11. 컴퓨터-실행되는 방법에 있어서, 상기 방법은,
하이퍼텍스트 트랜스퍼 프로토콜(HTTP) 서버에서, 서버에 접근하기 위한 요청을 웹클라이언트로부터 수신하는 단계;
데이터베이스를 쿼리하는 HTTP 서버에 의해, 웹클라이언트와 관련된 통지가 제2 HTTP 서버에 의해 저장되었는지를 결정하는 단계;
HTTP 서버에 의해 통지를 복구하는 단계; 및
통지를 웹클라이언트로 전송하는 단계를 포함한다.
12. 제 11 항의 컴퓨터-실행되는 방법에 있어서, 웹클라이언트를 위한 식별 정보에 기초하여, 통지를 위한 저장 장치 위치 정보를 결정하는 단계를 더 포함한다.
13. 제 12 항의 컴퓨터-실행되는 방법에 있어서, 상기 서버에 접근하기 위한 요청은 식별 정보를 포함한다.
14. 제 11 항 내지 제 13 항의 컴퓨터-실행되는 방법에 있어서, 통지를 웹클라이언트로 전송한 이후에, 통지를 삭제하는 단계를 더 포함한다.
15. 제 11 항 내지 제 14 항의 컴퓨터-실행되는 방법에 있어서, 통지를 복구하는 단계는, 저장 장치, 데이터베이스 또는 통지 서버 중 적어도 하나로부터 통지를 복구하는 단계를 포함한다.
16. 제 11 항 내지 제 15 항의 컴퓨터-실행되는 방법에 있어서, 웹클라이언트를 위한 서버로의 접근을 제공하는 단계를 더 포함한다.
17. 컴퓨터-실행가능한 명령을 포함하는 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 프로세서에 의해 실행될 때, 상기 명령은 프로세서가,
웹클라이언트로부터 서버에 접근하는 요청을 수신하는 단계;
서버와 지속적인 연결을 구축하는 단계;
서버로부터 웹클라이언트와 관련된 통지를 수신하는 단계;
통지를 저장하는 단계; 및
웹클라이언트로부터 수신된 차후의 통신에 응답하여 통지를 웹클라이언트로 전송하는 단계를 포함하는 동작들을 발효시킨다.
18. 제 17 항의 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 상기 동작들은 웹클라이언트를 위한 식별 정보를 생성하는 단계를 더 포함한다.
19. 제 18 항의 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 통지를 저장하는 단계는, 데이터베이스 기록 내에 통지 및 식별 정보를 저장하는 단계를 포함한다.
20. 제 18 항의 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 통지를 저장하는 단계는, 저장 장치에 통지를 저장하는 단계 및 데이터 베이스 기록 내에 통지 및 식별 정보에 대한 저장 장치 위치 정보를 저장하는 단계를 포함한다.
21. 제 17 항 내지 제 20 항의 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 상기 동작들은 웹클라이언트와 관련된 통지를 수신하기 위한 요청을 서버로 전송하는 단계를 더 포함한다.
22. 제 17 항 내지 제 21 항의 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 통지를 웹클라이언트로 전송하는 단계는 서버로부터 수신된 추가적인 데이터와 함께 통지를 전송하는 단계를 포함한다.
23. 방법에 있어서, 상기 방법은,
제1 HTTP 서버에서, 이메일과 관련된 첨부물을 웹클라이언트로부터 수신하는 단계;
저장 장치상의 제1 HTTP 서버에 의해, 첨부물을 저장하는 단계;
저장 장치상의 제1 HTTP 서버에 의해, 첨부물에 대한 저장 장치 위치 정보를 저장하는 단계;
웹클라이언트로부터 제2 HTTP 서버에서 서비스를 위한 요청을 수신하는 단계;
제2 HTTP 서버에서, 웹클라이언트에 대한 식별 정보를 결정하는 단계;
제2 HTTP 서버에 의해, 식별 장치 위치 정보를 데이터베이스로부터 복구하는 단계;
저장 장치 위치 정보를 사용하여, 저장 장치로부터 제2 HTTP 서버에 의해 첨부물을 복구하는 단계; 및
첨부물을 메일 서버로 전송하는 단계를 포함한다.
24. 제 23 항의 방법에 있어서, 웹클라이언트에 대한 식별 정보를 결정하는 단계는, 웹클라이언트를 실행하는 장치상에 저장된 데이터로부터 세션 식별자를 결정하는 단계를 포함한다.
25. 제 23 항 또는 제 24 항의 방법에 있어서, 제1 HTTP 서버에 의해, 데이터베이스 내의 웹클라이언트의 상태를 업데이트 하는 단계를 더 포함한다.
26. 제 23 항 내지 제 25 항의 방법에 있어서, 제2 HTTP 서버에 의해, 데이터베이스로에서 저장 장치 위치 정보를 제거하는 단계를 더 포함한다.
27. 시스템에 있어서, 시스템은,
명령을 포함하는 메모리; 및
상기 메모리에 결합되는 프로세서를 포함하되, 명령이 실행될 때, 상기 프로세서는,
더 이상 접근할 수 없는 서버와 통신 세션을 구축한 웹클라이언트로부터 서비스를 위한 요청 수신하는 단계;
웹클라이언트에 대한 식별 정보를 결정하는 단계;
첨부물에 대한 저장 장치 위치 정보를 복구하는 단계;
저장 장치 위치 정보를 사용하여 저장 장치로부터 첨부물을 복구하는 단계; 및
첨부물을 메세징 서버로 전송하는 단계를 포함하는 동작들을 발효시킨다.
28. 제 27 항의 시스템에 있어서, 웹클라이언트에 대한 식별 정보는 세션 식별자를 포함한다.
29. 제 27 항 또는 제 28 항의 시스템에 있어서, 저장 장치 위치 정보는 데이터베이스로부터 복구된다.
30. 제 29 항의 시스템에 있어서, 상기 동작들은 데이터베이스 내의 웹클라이언트의 상태를 업데이트하는 단계를 더 포함한다.
31. 제 27 항 내지 제 30 항의 시스템에 있어서, 저장 장치 위치 정보는 더 이상 접근할 수 없는 서버에 의해 저장되었다.
32. 제 27 항 내지 제 31 항의 시스템에 있어서, 상기 동작들은 첨부물과 관련된 메세지를 전송하기 위한 요청을 수신하는 단계를 더 포함한다.
33. 컴퓨터-실행되는 방법에 있어서, 상기 방법은,
하이퍼텍스트 트랜스퍼 프로토콜(HTTP) 서버에서, 웹클라이언트상에서 작성되는 메세지와 관련된 첨부물을 웹클라이언트로부터 수신하는 단계;
제2 HTTP 서버에 의해 접근 가능한 저장소상의 HTTP 서버에 의해, 첨부물을 저장하는 단계; 및
HTTP 서버에 의해, 첨부물에 대한 저장 장치 위치 정보를 저장하는 단계를 포함한다.
34. 제 33 항의 컴퓨터-실행되는 방법에 있어서, 저장 장치 위치를 데이터베이스 내의 웹클라이언트와 관련된 기록과 관련시키는 단계를 더 포함한다.
35. 제 34 항의 컴퓨터-실행되는 방법에 있어서, 데이터베이스 내의 웹클라이언트의 상태를 업데이트하는 단계를 더 포함한다.
36. 제 34 항의 컴퓨터-실행되는 방법에 있어서, 첨부물에 대한 저장 장치 위치 정보를 저장하는 단계는, 웹클라이언트와 관련된 세션 식별자를 포함하는 데이터베이스 내의 기록을 생성하는 단계를 포함한다.
37. 제 34 항의 컴퓨터-실행되는 방법에 있어서, 데이터베이스는 제2 HTTP 서버에 의해 접근가능하다.
38. 제 33 항 내지 제 37 항의 컴퓨터-실행되는 방법에 있어서, 웹클라이언트가 메세지 작성 상태에 있다는 표시를 수신하는 단계를 더 포함한다.
39. 컴퓨터-실행가능한 명령을 포함하는 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 프로세서에 의해 실행될 때, 상기 명령은 프로세서가,
더 이상 접근할 수 없는 서버와 통신 세션을 구축한 웹클라이언트로부터 서비스를 위한 요청을 수신하는 단계;
웹클라이언트에 대한 식별 정보를 결정하는 단계;
첨부물에 대한 저장 장치 위치 정보를 복구하는 단계;
저장 장치 위치 정보를 사용하여 저장 장치로부터 첨부물을 복구하는 단계; 및
첨부물을 메세징 서버로 전송하는 단계를 포함하는 동작들을 발효시킨다.
40. 제 39 항의 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 웹클라이언트에 대한 식별 정보는 세션 식별자를 포함한다.
41. 제 39 항 또는 제 40 항의 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 저장 장치 위치 정보는 데이터베이스로부터 복구된다.
42. 제 41 항의 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 상기 동작들은 데이터베이스 내의 웹클라이언트의 상태를 업데이트하는 단계를 더 포함한다.
43. 제 39 항 내지 제 42 항의 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 저장 장치 위치 정보는 더 이상 접근할 수 없는 서버에 의해 저장되었다.
44. 제 40 항 내지 제 43 항의 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 상기 동작들은 첨부물과 관련된 메세지를 전송하기 위한 요청을 수신하는 단계를 더 포함한다.
본 명세서에서 사용되는 조건적 언어, 가령, 다른 것보다도 "할 수 있다", "할 수 있었다", "할 수 있었다", "할 수 있다" "가령" 등은, 구체적으로 다른 진술이 없거나, 사용된 문맥에서 다르게 이해되지 않으면, 일반적으로 다른 실시예는 포함하지 않는 반면, 특정 실시예는 특정한 특징부, 요소 및/또는 단계를 포함하는 것으로 전달되도록 의도된다. 따라서, 이러한 조건적 언어는 일반적으로, 특징부, 요소 및/또는 단계가 하나 이상의 실시예를 위해 요구되는 임의의 방식이거나 하나 이상의 실시예는, 저자 입력 또는 설득을 사용하거나 사용하지 않으면서, 이들 특징부, 요소 및/또는 단계가 포함되거나 임의의 특정 실시예에서 수행되어야 하는지를 결정하기 위한 논리를 필연적으로 포함한다는 것을 의미하도록 의도되지 않는다. 용어 "포함하는", "포함하는", "가지는"등은 유사어이고, 개방-말단 형식으로 포함적으로 사용되고, 추가적인 요소, 특징부, 행동, 동작등을 배제하지 않는다. 또한, 용어 "또는"은 포함적인 의미로 사용되어서, 가령, 요소의 리스트를 연결하는데 사용되어서, 용어 "또는"은 리스트에서 포함적인 의미로 사용되어서(배제하는 의미가 아님), 가령 요소들의 리스트를 연결하는데 사용될 때, 용어 "또는"은 리스트 내의 하나, 일부 또는 모두의 요소들을 의미한다.
어떠한 예시적인 실시예가 기술되지만, 이들 실시예는 단지 예시로서 제시된 것이고, 본 명세서에 개시된 본 발명의 범위를 제한하려는 의도는 아니다. 따라서, 상기 상세한 설명에서의 어느 것도 임의의 특정한 특징부, 특성, 단계, 모듈 또는 블록이 필요하거나 필수적인 것을 의미하지 않는다. 정말로, 본 명세서에 기술된 새로운 방법과 시스템은 다양한 형태로 구현될 수 있고, 더구나, 본 명세서에서 기술된 방법 및 시스템의 형태에서 다양한 생략, 치환 및 변화가 본 명세서에 개시된 본 발명의 사상에서 벗어남 없이 이루어 질 수 있다. 첨부된 청구항과 이의 등가물은 본 명세서에 기술된 본 발명의 어떤 범위와 사상 내에 있을 이러한 형태나 수정예를 커버하도록 의도된다.

Claims (15)

  1. 시스템에 있어서, 상기 시스템은,
    명령을 포함하는 메모리; 및
    상기 메모리에 결합되는 프로세서를 포함하되, 명령이 실행될 때, 상기 프로세서는,
    웹클라이언트로부터 서버에 접근하는 요청을 수신하는 단계;
    서버와 지속적인 연결을 구축하는 단계;
    서버로부터 웹클라이언트와 관련된 통지를 수신하는 단계;
    통지를 저장하는 단계; 및
    웹클라이언트로부터 수신된 차후의 통신에 응답하여 통지를 웹클라이언트로 전송하는 단계를 포함하는 동작들을 발효시키는 것을 특징으로 하는 시스템.
  2. 제 1 항에 있어서, 상기 동작들은 웹클라이언트를 위한 식별 정보를 생성하는 단계를 더 포함하는 것을 특징으로 하는 시스템.
  3. 제 2 항에 있어서, 통지를 저장하는 단계는, 데이터베이스 기록 내에 통지 및 식별 정보를 저장하는 단계를 포함하는 것을 특징으로 하는 시스템.
  4. 제 2 항에 있어서, 통지를 저장하는 단계는, 저장 장치 내에 통지를 저장하는 단계 및 통지와 식별 정보를 위한 저장 장치 위치 정보를 데이터베이스 기록 내에 저장하는 단계를 포함하는 것을 특징으로 하는 시스템.
  5. 제 1 항 내지 제 4 항 중 어느 한 항에 있어서, 동작들은, 통지를 웹클라이언트로 전송한 이후에, 통지를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 시스템.
  6. 제 1 항 내지 제 5 항 중 어느 한 항에 있어서, 서버와 지속적인 연결을 구축하는 단계는, 서버와 지속적인 연결을 구축하기 위해 통지 서버에 명령하는 단계를 포함하는 것을 특징으로 하는 시스템.
  7. 컴퓨터-실행되는 방법에 있어서, 상기 방법은,
    하이퍼텍스트 트랜스퍼 프로토콜(HTTP) 서버에서, 서버에 접근하기 위한 요청을 웹클라이언트로부터 수신하는 단계;
    데이터베이스를 쿼리하는 HTTP 서버에 의해, 웹클라이언트와 관련된 통지가 제2 HTTP 서버에 의해 저장되었는지를 결정하는 단계;
    HTTP 서버에 의해 통지를 복구하는 단계; 및
    통지를 웹클라이언트로 전송하는 단계를 포함하는 것을 특징으로 하는 컴퓨터-실행되는 방법.
  8. 제 7 항에 있어서, 웹클라이언트를 위한 식별 정보에 기초하여, 통지를 위한 저장 장치 위치 정보를 결정하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터-실행되는 방법.
  9. 제 8 항에 있어서, 상기 서버에 접근하기 위한 요청은 식별 정보를 포함하는 것을 특징으로 하는 컴퓨터-실행되는 방법.
  10. 제 7 항 내지 제 9 항 중 어느 한 항에 있어서, 통지를 웹클라이언트로 전송한 이후에, 통지를 삭제하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터-실행되는 방법.
  11. 제 7 항 내지 제 10 항 중 어느 한 항에 있어서, 통지를 복구하는 단계는, 저장 장치, 데이터베이스 또는 통지 서버 중 적어도 하나로부터 통지를 복구하는 단계를 포함하는 것을 특징으로 하는 컴퓨터-실행되는 방법.
  12. 제 7 항 내지 제 11 항 중 어느 한 항에 있어서, 웹클라이언트를 위한 서버로의 접근을 제공하는 단계를 더 포함하는 것을 특징으로 하는 컴퓨터-실행되는 방법.
  13. 컴퓨터-실행가능한 명령을 포함하는 비-일시적 컴퓨터-판독가능한 저장 매체에 있어서, 프로세서에 의해 실행될 때, 상기 명령은 프로세서가,
    웹클라이언트로부터 서버에 접근하는 요청을 수신하는 단계;
    서버와 지속적인 연결을 구축하는 단계;
    서버로부터 웹클라이언트와 관련된 통지를 수신하는 단계;
    통지를 저장하는 단계; 및
    웹클라이언트로부터 수신된 차후의 통신에 응답하여 통지를 웹클라이언트로 전송하는 단계를 포함하는 동작들을 발효시키는 것을 특징으로 하는 비-일시적 컴퓨터-판독가능한 저장 매체.
  14. 제 13 항에 있어서, 상기 동작들은 웹클라이언트를 위한 식별 정보를 생성하는 단계를 더 포함하는 것을 특징으로 하는 비-일시적 컴퓨터-판독가능한 저장 매체.
  15. 제 14 항에 있어서, 통지를 저장하는 단계는, 데이터베이스 기록 내에 통지 및 식별 정보를 저장하는 단계를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터-판독가능한 저장 매체.
KR1020167009835A 2013-09-17 2014-09-16 이메일 웹클라이언트 통지 큐잉 KR101881232B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US14/029,113 2013-09-17
US14/029,113 US9961027B2 (en) 2013-09-17 2013-09-17 Email webclient automatic failover
US14/035,355 2013-09-24
US14/035,355 US9900366B2 (en) 2013-09-17 2013-09-24 Email webclient notification queuing
PCT/US2014/055963 WO2015042076A1 (en) 2013-09-17 2014-09-16 Email webclient notification queuing

Publications (2)

Publication Number Publication Date
KR20160082980A true KR20160082980A (ko) 2016-07-11
KR101881232B1 KR101881232B1 (ko) 2018-07-23

Family

ID=52669018

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167009835A KR101881232B1 (ko) 2013-09-17 2014-09-16 이메일 웹클라이언트 통지 큐잉

Country Status (9)

Country Link
US (2) US9900366B2 (ko)
EP (1) EP3047386B1 (ko)
JP (1) JP6279744B2 (ko)
KR (1) KR101881232B1 (ko)
CN (1) CN105556502B (ko)
AU (2) AU2014321418A1 (ko)
CA (1) CA2923896C (ko)
SG (1) SG11201601935XA (ko)
WO (1) WO2015042076A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10861116B1 (en) * 2014-03-13 2020-12-08 James Onstad System and methods to facilitate student data privacy compliance and management for schools
US20180255159A1 (en) * 2017-03-06 2018-09-06 Google Llc Notification Permission Management
US11210211B2 (en) 2017-08-21 2021-12-28 Western Digital Technologies, Inc. Key data store garbage collection and multipart object management
US11055266B2 (en) 2017-08-21 2021-07-06 Western Digital Technologies, Inc. Efficient key data store entry traversal and result generation
US10824612B2 (en) 2017-08-21 2020-11-03 Western Digital Technologies, Inc. Key ticketing system with lock-free concurrency and versioning
US11210212B2 (en) 2017-08-21 2021-12-28 Western Digital Technologies, Inc. Conflict resolution and garbage collection in distributed databases
TW202344019A (zh) * 2018-08-23 2023-11-01 美商阿爾克斯股份有限公司 具有主機確定學習及本地化路由與橋接整合的主機路由覆蓋機制的系統

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052730A (en) * 1997-01-10 2000-04-18 The Board Of Trustees Of The Leland Stanford Junior University Method for monitoring and/or modifying web browsing sessions
US6654786B1 (en) * 1998-04-30 2003-11-25 Openwave Systems Inc. Method and apparatus for informing wireless clients about updated information
WO2013109550A1 (en) * 2012-01-20 2013-07-25 Apple Inc. Proxy-based push service

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138158A (en) 1998-04-30 2000-10-24 Phone.Com, Inc. Method and system for pushing and pulling data using wideband and narrowband transport systems
US6412009B1 (en) 1999-03-15 2002-06-25 Wall Data Incorporated Method and system for providing a persistent HTTP tunnel
US6965917B1 (en) * 1999-09-07 2005-11-15 Comverse Ltd. System and method for notification of an event
US6789119B1 (en) 1999-11-24 2004-09-07 Webex Communication, Inc. Emulating a persistent connection using http
US7895271B1 (en) 2000-12-29 2011-02-22 At&T Intellectual Property I, L.P. Method and apparatus for managing and compacting electronic mail messages
US20050198379A1 (en) 2001-06-13 2005-09-08 Citrix Systems, Inc. Automatically reconnecting a client across reliable and persistent communication sessions
US20030154277A1 (en) 2002-02-11 2003-08-14 Rabih Haddad Method and system for real-time generating, managing, and broadcasting multimedia events reports over communications networks
US9503280B2 (en) * 2003-03-17 2016-11-22 Accellion Pte Ltd. Methods and systems for email integrated file delivery
US20050144278A1 (en) 2003-12-12 2005-06-30 Valeri Atamaniouk System and method for multipart response optimization
US20100211626A1 (en) * 2004-01-12 2010-08-19 Foundry Networks, Inc. Method and apparatus for maintaining longer persistent connections
US7577749B1 (en) 2004-12-03 2009-08-18 Ux Ltd. Emulation of persistent HTTP connections between network devices
US8078681B2 (en) 2005-09-29 2011-12-13 Teamon Systems, Inc. System and method for provisioning an email account using mail exchange records
CN100514968C (zh) 2005-10-11 2009-07-15 华为技术有限公司 离线消息的处理方法和即时消息服务器
WO2008002301A1 (en) 2006-06-27 2008-01-03 Teamon Systems, Inc. Electronic mail communications system with client email internet service provider (isp) polling application and related methods
US7805489B2 (en) * 2006-06-27 2010-09-28 Research In Motion Limited Electronic mail communications system with client email internet service provider (ISP) polling application and related methods
US20080065761A1 (en) * 2006-09-11 2008-03-13 Jeffrey Kenneth Wilson Method and system for responding to rejected messages
US20090013245A1 (en) 2007-04-27 2009-01-08 Bea Systems, Inc. Enterprise web application constructor xml editor framework
US8260864B2 (en) 2008-02-13 2012-09-04 Microsoft Corporation Push mechanism for efficiently sending aggregated data items to client
US8453017B2 (en) * 2008-08-27 2013-05-28 Kyocera Document Solutions Inc. Electronic device saving selected error information and an error management system including such a device
US20100088387A1 (en) 2008-10-03 2010-04-08 Apple Inc. Email Notification Proxy
US20100125504A1 (en) * 2008-11-17 2010-05-20 Riaz Ahmed Agha Product or service comparison notification system and method
US20100274922A1 (en) * 2009-03-31 2010-10-28 Reavely Simon System and method for managing long lived connections from a plurality of applications running on a wireless device
US8819233B2 (en) 2011-03-11 2014-08-26 Qualcomm Incorporated System and method using a web proxy-server to access a device having an assigned network address
JP2013074452A (ja) 2011-09-28 2013-04-22 Hitachi Kokusai Electric Inc ビデオサーバシステム
JP2013196023A (ja) * 2012-03-15 2013-09-30 Canon Inc 情報処理装置、印刷システム、及び、エラー通知方法
US9922309B2 (en) 2012-05-25 2018-03-20 Microsoft Technology Licensing, Llc Enhanced electronic communication draft management
US20150339285A1 (en) 2014-04-22 2015-11-26 Aman Safaei Methods and Systems for Batch Generation and Delivery of Customized Documents
US9503402B2 (en) 2014-08-18 2016-11-22 Dropbox, Inc. Managing drafts of electronic documents across client devices

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6052730A (en) * 1997-01-10 2000-04-18 The Board Of Trustees Of The Leland Stanford Junior University Method for monitoring and/or modifying web browsing sessions
US6654786B1 (en) * 1998-04-30 2003-11-25 Openwave Systems Inc. Method and apparatus for informing wireless clients about updated information
WO2013109550A1 (en) * 2012-01-20 2013-07-25 Apple Inc. Proxy-based push service

Also Published As

Publication number Publication date
EP3047386A4 (en) 2017-11-01
US20180241800A1 (en) 2018-08-23
US9900366B2 (en) 2018-02-20
JP2016535908A (ja) 2016-11-17
KR101881232B1 (ko) 2018-07-23
WO2015042076A1 (en) 2015-03-26
EP3047386A1 (en) 2016-07-27
CN105556502B (zh) 2019-05-10
US20150081810A1 (en) 2015-03-19
US10484449B2 (en) 2019-11-19
CA2923896C (en) 2019-06-18
JP6279744B2 (ja) 2018-02-14
SG11201601935XA (en) 2016-04-28
CN105556502A (zh) 2016-05-04
AU2017272153B2 (en) 2018-11-15
AU2014321418A1 (en) 2016-05-05
EP3047386B1 (en) 2019-11-06
AU2017272153A1 (en) 2017-12-21
CA2923896A1 (en) 2015-03-26

Similar Documents

Publication Publication Date Title
KR101881232B1 (ko) 이메일 웹클라이언트 통지 큐잉
US11429499B2 (en) Heartbeat monitoring of virtual machines for initiating failover operations in a data storage management system, including operations by a master monitor node
US20210258366A1 (en) Remote commands framework to control clients
US8244914B1 (en) Systems and methods for restoring email databases
US8275752B2 (en) Data backup method through distributed network, involves generating data segment copies to transmit to peer storage servers based on metadata with segment distribution matrix by calculating redundancy corresponding to data segments
WO2013078689A1 (zh) 一种云消息服务中实现消息传递的方法和装置
US20160119238A1 (en) System and Method for Optimizing Transportation Over Networks
US8751455B2 (en) Item level recovery
US11544232B2 (en) Efficient transaction log and database processing
JP2012008934A (ja) 分散ファイルシステム及び分散ファイルシステムにおける冗長化方法
EP4250119A1 (en) Data placement and recovery in the event of partition failures
US9535806B1 (en) User-defined storage system failure detection and failover management
US9961027B2 (en) Email webclient automatic failover
EP3674910A1 (en) System and method for archiving data in a decentralized data protection system
US20200371849A1 (en) Systems and methods for efficient management of advanced functions in software defined storage systems
US20200210094A1 (en) Method and distributed computer system for processing data
US11874821B2 (en) Block aggregation for shared streams
US11829264B2 (en) Automatic backup and replacement of a storage device upon predicting failure of the storage device

Legal Events

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