KR20090073199A - 웹 기반 애플리케이션의 오프라인 실행 - Google Patents

웹 기반 애플리케이션의 오프라인 실행 Download PDF

Info

Publication number
KR20090073199A
KR20090073199A KR1020097008281A KR20097008281A KR20090073199A KR 20090073199 A KR20090073199 A KR 20090073199A KR 1020097008281 A KR1020097008281 A KR 1020097008281A KR 20097008281 A KR20097008281 A KR 20097008281A KR 20090073199 A KR20090073199 A KR 20090073199A
Authority
KR
South Korea
Prior art keywords
web
application
resources
computer system
component
Prior art date
Application number
KR1020097008281A
Other languages
English (en)
Other versions
KR101433981B1 (ko
Inventor
조나단 씨. 호킨스
샨쿠 에스. 니요기
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20090073199A publication Critical patent/KR20090073199A/ko
Application granted granted Critical
Publication of KR101433981B1 publication Critical patent/KR101433981B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 웹 기반 애플리케이션의 오프라인 실행을 위한 방법, 시스템, 및 컴퓨터 프로그램 제품들을 망라한다. 본 발명의 실시예는 컴퓨터 시스템에서 웹 기반 실행가능 명령어 및 데이터의 로컬 저장을 용이하게 한다. 웹 기반 실행가능 명령어 및 데이터는 컴퓨터 시스템에서 웹 브라우저와 관련된 모듈로부터의 (실행가능 명령어 및 데이터를 전송한 도메인으로 전송되는) 요청을 로컬로 만족하기 위해 사용될 수 있다. 그에 따라, 로컬로 저장된 웹 기반 실행가능 명령어 및 데이터는, 그것들 없이는 웹 사이트가 이용가능하지 않을 때 컴퓨터 시스템에서 웹 서버와의 통신을 시뮬레이팅하는데 사용될 수 있다.
Figure P1020097008281
오프라인 실행, 웹 기반 애플리케이션, 웹 브라우저, 웹 기반 실행가능 명령어, 로컬 저장소

Description

웹 기반 애플리케이션의 오프라인 실행{OFFLINE EXECUTION OF WEB BASED APPLICATIONS}
컴퓨터 시스템 및 관련 기술은 사회의 많은 부분에 영향을 미친다. 확실히, 정보를 처리하는 컴퓨터 시스템의 기능은 우리가 생활하고 일하는 방식을 변화시켜 왔다. 컴퓨터 시스템은 현재 일반적으로 컴퓨터 시스템이 출현하기 전에는 수동으로 수행되던 다수의 일들(예를 들어, 워드 프로세싱, 스케줄링, 계산 등)을 수행한다. 보다 최근에는, 컴퓨터 시스템들이 서로 결합되고 기타 전자 장치에 결합되어 유선 및 무선 컴퓨터 네트워크를 형성하는데, 컴퓨터 시스템 및 기타 전자 장치는 이 네트워크를 통해 전자 데이터를 전달할 수 있다. 따라서, 많은 컴퓨팅 업무의 수행은 다수의 상이한 컴퓨터 시스템 및/또는 다수의 상이한 컴퓨팅 구성요소로 분배된다.
네트워크 기반 통신의 하나의 일반적인 형태는 월드와이드웹(Worldwide Web; WWW) 상에서 전자 메시지를 교환하는 것이다. 월드와이드웹 상의 콘텐츠는 일반적으로 클라이언트/서버 모델로 액세스 된다. 클라이언트 컴퓨터 시스템의 "웹 브라우저"는 서버 컴퓨터 시스템의 "웹 서버"에 의해 제공되는 콘텐츠를 액세스하기 위한 요청(request)을 전송한다(예를 들어, URL(Uniform Resource Locator)을 웹브라우저에 입력함으로써 이루어짐). 만약 웹 브라우저의 사용자가 콘텐츠에 접근하도 록 허가되었다면, 웹 서버는 일반적으로 콘텐츠를 웹 브라우저로 제공한다. 웹 환경에서, 콘텐츠 및 콘텐츠에 대한 요청은 종종 HTTP(Hypertext Transfer Protocol)를 이용하여 전달된다. 웹 기반 콘텐츠는 HTML(HyperText Markup Language) 페이지, 스타일 시트(style sheets), 이미지, 스크립트 등으로 제공될 수 있다.
거의 모든 웹 브라우저는 웹 기반 콘텐츠의 일부를 공통 저장 위치(브라우저 캐시)에 캐싱하여(cache) 그 후의 웹 페이지의 렌더링(rendering)이 보다 효율적으로 제시될 수 있도록 한다. 예를 들어, 웹 브라우저가 웹 서버로부터 웹 페이지를 수신했을 때, 웹 브라우저는 웹 페이지에 포함된 콘텐츠의 일부를 로컬로(locally) 캐싱할 수 있다. 따라서, 웹 브라우저가 그 후에 동일한 웹 페이지로 가도록 명령을 받을 경우, 웹 브라우저는 콘텐츠의 캐싱된 일부를 찾기 위해 공통 저장 위치를 확인할 수 있고, 콘텐츠의 임의의 캐싱된 부분은 네트워크를 통하여 수신된 다른 콘텐츠와 웹 페이지를 만들기 위해 조합될 수 있다. 따라서, 로컬로 캐싱된 콘텐츠를 사용하는 것은 웹 서버로부터의 콘텐츠를 표시하기 위해 네트워크 상으로 전달되는 데이터의 양을 잠재적으로 감소시킨다. 그 결과, 웹 페이지가 보다 빠르게 랜더링 될 수 있어 사용자 경험을 향상시킬 수 있다.
그러나, 일반적으로, 웹 페이지의 일부만이 변경되었더라도, 웹 브라우저 상에 표시하기 위해서는 전체 페이지가 리로딩(reload) 되어야 한다. 예를 들어, 이것은 웹 브라우저가 웹 페이지에 액세스하고, 네트워크 통신을 통하여 웹 페이지의 콘텐츠를 다운로드하며, 웹 페이지로부터의 콘텐츠를 캐싱하는 것일 수 있다. 만약 그 후에 웹 페이지의 콘텐츠가 변경된다면, 웹 페이지의 작은 부분만이 변경되 었더라도 웹 브라우저는 전체 웹 페이지를 다시 다운로드하도록 요구될 수 있다.
따라서, 보다 최근에, 일부 웹 브라우저는 캐싱된 콘텐츠를 더 잘 이용하기 위해 부분적인 페이지 갱신을 구현하여 왔다. 콘텐츠는 웹 페이지의 적용가능한 부분이 변경될 때 다시 다운로드 된다. 그러나, 웹 브라우저는 웹 페이지의 일부가 변경된 것에 대응하여 웹 페이지의 모든 콘텐츠를 반드시 다시 다운로드할 필요는 없다. 예를 들어, 웹 페이지의 하나의 이미지가 변경되었을 때, 웹 브라우저는 이 변경을 감지할 수 있고, 변경되지 않은 다른 캐싱된 콘텐츠를 다시 다운로드할 필요 없이 그 하나의 이미지를 다시 다운로드할 수 있다.
일부 웹 기반 애플리케이션은 또한 웹 브라우저가 데이터베이스(예를 들어, SQL 데이터베이스)로부터의 데이터와 상호작용할 수 있도록 한다. 웹 서버는 웹 브라우저로부터의 요청을 수신하고, 데이터베이스 데이터의 적절한 부분에 액세스하며, 데이터베이스 데이터를 웹 브라우저로 보낸다. 웹 기반 애플리케이션의 구성에 따라, 사용자는 웹 브라우저를 통하여 데이터베이스 데이터의 일부를 변경할 수도 있다. 예를 들어, 사용자는 웹 브라우저를 통해 데이터베이스 기록을 생성하고 수정할 수 있다. 일부 환경에서, 사용자는 웹 브라우저를 통하여 SQL 동작(CREATE TABLE, SELECT, INSERT, UPDATE, DELETE 등)을 실행할 수 있다. 따라서, 웹 브라우저는 본질적으로 네트워크(예를 들어, 인터넷)를 통하여 데이터베이스 데이터를 조작하기 위한 사용자 인터페이스를 제공한다.
그러나, 일반적으로 웹 브라우저가 테이블형 데이터(예를 들어, 데이터베이스로부터의 데이터)를 적절하게 캐싱할 수 있는 메커니즘이 존재하지 않는다. 일 반적으로, 사용자는 어떤 한 순간에 데이터베이스 내의 모든 데이터에 액세스하지는 않는다. 따라서, 임의의 수신된 데이터베이스 데이터를 캐싱하는 것은 불완전한 (그리고 잠재적으로 동작하지 않는) 데이터 세트(data set)를 제공한다. 추가로, 일반적으로 콘텐츠는 공통 위치(브라우저 캐시)에 캐싱되기 때문에, 하나의 웹 사이트(또는 도메인)로부터의 데이터베이스 데이터를 캐싱하는 것은 잠재적으로 웹 브라우저가 액세스하는 임의의 다른 웹 사이트(또는 도메인)로 하여금 그 캐싱된 데이터베이스 데이터를 사용할 수 있도록 한다. 예를 들어, 캐싱된 기업 재정 데이터는 웹 브라우저가 그 이후 (그리고 잠재적으로 사용자에게 알려지지 않은 채) 악의적인 웹 사이트에 연결될 때 위험에 처한다(악의적인 웹 사이트는 이어서 브라우저 캐시를 조사할 수 있음).
추가로, 많은 데이터베이스는 다량의 데이터를 보유하기 때문에, 로컬로 캐싱된 데이터베이스 데이터는 할당된 브라우저 캐시 공간을 빨리 채울 수 있다.
추가적으로, 거의 모든 브라우저는 "오프라인" 모드로 동작할 수 있는 기능이 없다. 즉, 웹 브라우저들은 웹 사이트가 이용 불가능할 때(예를 들어, 활성 네트워크 연결이 감지되지 않거나 대응되는 웹 서버가 다운됨)에는, 브라우저를 모든 웹 사이트들에 대해 오프라인으로 하지 않는 한 일반적으로 의미 있는 콘텐츠를 제시할 수 없다. 예를 들어, 웹 브라우저가, 예를 들어 HTML 페이지 또는 이미지와 같은 리소스를 이용 불가능한 웹 서버로부터 로딩하려고 시도할 때, 웹 브라우저는 (리소스가 로컬로 캐싱 되어 있는 경우에도) 리소스를 렌더링하는 데 실패한다. 따라서, 데이터베이스 데이터(또는 임의의 다른 종류의 콘텐츠)가 캐싱 되어 있는 경우라도, 웹 브라우저는 데이터베이스 데이터(또는 다른 종류의 콘텐츠)를 오프라인 모드에서 제시할 수 없을 것이다.
본 발명은 웹 기반 애플리케이션의 오프라인 실행을 위한 방법, 시스템, 및 컴퓨터 프로그램 제품들을 망라한다. 일부 실시예에서, 컴퓨터 시스템은 웹 기반 애플리케이션의 웹 브라우저 애플리케이션 구성요소에 의해 오프라인에서 사용되는 로컬 콘텐츠를 구성한다. 컴퓨터 시스템은 웹 기반 애플리케이션이 오프라인 실행이 가능하도록 되어있는지 결정한다. 컴퓨터 시스템은 웹 기반 애플리케이션을 위한 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능한지 감지한다.
컴퓨터 시스템은 네트워크 통신을 통하여 웹 기반 서버 구성요소로부터 웹 기반 애플리케이션을 위한 리소스를 수신한다. 컴퓨터 시스템은 컴퓨터 시스템에 수신된 리소스를 로컬로 저장한다. 로컬로 저장된 리소스의 복사본은 네트워크 연결 없이도 웹 브라우저 클라이언트 구성요소에 의해 액세스 될 수 있다. 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능하지 않다는 것을 감지했을 때, 로컬로 저장된 리소스는 그 자체만으로 웹 기반 클라이언트 구성요소로부터의 요청에 대응하여 액세스 될 수 있다. 컴퓨터 시스템은 로컬로 저장된 리소스가 특정 기간 동안 컴퓨터 시스템에 로컬로 저장된 채로 남아있도록 구성하고, 그에 의하여 웹 브라우저 애플리케이션의 디폴트 캐시 회수(reclamation) 설정을 오버라이딩(override)한다.
다른 실시예에서, 컴퓨터 시스템은 웹 기반 애플리케이션을 오프라인으로 실행한다. 웹 기반 애플리케이션을 위한 웹 브라우저 애플리케이션 구성요소는 네트워크를 통하여 해당 웹 기반 애플리케이션을 위한 대응하는 웹 서버 애플리케이션 구성요소로 웹 기반 애플리케이션 리소스에 대한 온라인 요청을 전송한다. 컴퓨터 시스템은 그 요청이 실패했다는 것을 감지한다. 컴퓨터 시스템은 웹 기반 애플리케이션이 오프라인으로 실행될 수 있도록 되어있는지 결정한다. 컴퓨터 시스템은 다른 웹 브라우저 애플리케이션들이 온라인으로 실행되는 구성을 유지한 채로 이 웹 브라우저 애플리케이션을 오프라인으로 실행하도록 웹 브라우저를 구성한다. 컴퓨터 시스템은 웹 브라우저를 오프라인으로 하지 않고, 요청된 웹 기반 애플리케이션 리소스를 컴퓨터 시스템의 로컬 저장소로부터 제공한다.
본 설명은 아래 상세한 설명에서 추가로 설명되는 단순화된 형태의 개념들의 선택을 소개하기 위해 제공된다. 본 설명은 청구 대상의 중요한 특징 또는 본질적인 특징을 나타내도록 의도된 것이 아니며, 청구 대상의 범위를 결정하는데 도움을 주기 위해 사용되도록 의도된 것도 아니다.
본 발명의 추가적인 특징 및 이점은 이하의 설명에서 설명될 것이고, 부분적으로 설명으로부터 자명하거나, 본 발명을 실시함에 따라 습득될 수 있다. 본 발명의 특징 및 이점은 특히 첨부된 특허청구범위에 지적된 기구들 및 조합들에 의하여 실현되고 달성될 수 있다. 본 발명의 이들 특징 및 다른 특징들은 이하의 설명 및 첨부된 특허청구범위로부터 보다 충분히 명백해지거나, 이하에서 설명되는 본 발명의 실시에 의해 습득될 수 있다.
본 발명의 위에 언급된 이점 및 특징, 그리고 기타 이점 및 특징들이 얻어질 수 있는 방법을 설명하기 위해, 위에서 간단히 설명된 본 발명의 보다 구체적인 설명이 첨부된 도면에 도시된 특정 실시예들을 참고하여 이루어질 것이다. 이 도면들은 단지 본 발명의 전형적인 실시예를 도시하는 것이고, 따라서 그 범위를 제한하는 것으로 여겨지지 않아야 한다는 것을 이해하며, 본 발명은 다음과 같은 첨부된 도면을 이용하여 더 명확하고 상세하게 묘사되고 설명될 것이다.
도 1A는 웹 기반 애플리케이션의 웹 브라우저 애플리케이션 구성요소에 의한 오프라인 이용을 위하여 로컬 콘텐츠를 구성하는 것을 용이하게 하는 예시적인 컴퓨터 아키텍처를 도시하는 도면.
도 1B는 웹 기반 애플리케이션의 오프라인 실행을 용이하게 하는 예시적인 컴퓨터 아키텍처를 도시하는 도면.
도 2는 웹 기반 애플리케이션의 웹 브라우저 애플리케이션 구성요소에 의한 오프라인 이용을 위하여 로컬 콘텐츠를 구성하기 위한 예시적인 방법을 도시하는 순서도.
도 3은 웹 기반 애플리케이션의 오프라인 실행을 위한 예시적인 방법을 도시하는 순서도.
본 발명은 웹 기반 애플리케이션의 오프라인 실행을 위한 방법, 시스템, 및 컴퓨터 프로그램 제품들을 망라한다. 일부 실시예에서, 컴퓨터 시스템은 웹 기반 애플리케이션의 웹 브라우저 애플리케이션 구성요소에 의해 오프라인에서 사용되는 로컬 콘텐츠를 구성한다. 컴퓨터 시스템은 웹 기반 애플리케이션이 오프라인 실행이 가능하도록 되어있는지 결정한다. 컴퓨터 시스템은 웹 기반 애플리케이션을 위한 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능한지 감지한다.
컴퓨터 시스템은 네트워크 통신을 통하여 웹 기반 서버 구성요소로부터 웹 기반 애플리케이션을 위한 리소스를 수신한다. 컴퓨터 시스템은 컴퓨터 시스템에 수신된 리소스를 로컬로 저장한다. 로컬로 저장된 리소스의 복사본은 네트워크 연결 없이도 웹 브라우저 클라이언트 구성요소에 의해 액세스 될 수 있다. 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능하지 않다는 것을 감지했을 때, 로컬로 저장된 리소스는 그 자체만으로 웹 기반 클라이언트 구성요소로부터의 요청에 대응하여 액세스 될 수 있다. 컴퓨터 시스템은 로컬로 저장된 리소스가 특정 기간 동안 컴퓨터 시스템에 로컬로 저장된 채로 남아있도록 구성하고, 그에 의하여 웹 브라우저 애플리케이션의 디폴트 캐시 회수 설정을 오버라이딩한다.
다른 실시예에서, 컴퓨터 시스템은 웹 기반 애플리케이션을 오프라인으로 실행한다. 웹 기반 애플리케이션을 위한 웹 브라우저 애플리케이션 구성요소는 네트워크를 통하여 해당 웹 기반 애플리케이션을 위한 대응하는 웹 서버 애플리케이션 구성요소로 웹 기반 애플리케이션 리소스에 대한 온라인 요청을 전송한다. 컴퓨터 시스템은 그 요청이 실패했다는 것을 감지한다. 컴퓨터 시스템은 웹 기반 애플리케이션이 오프라인으로 실행될 수 있도록 되어있는지 결정한다. 컴퓨터 시스템은 다른 웹 브라우저 애플리케이션들이 온라인으로 실행되는 구성을 유지한 채로 이 웹 브라우저 애플리케이션을 오프라인으로 실행하도록 웹 브라우저를 구성한다. 컴퓨터 시스템은 웹 브라우저를 오프라인으로 하지 않고, 요청된 웹 기반 애플리케이션 리소스를 컴퓨터 시스템의 로컬 저장소로부터 제공한다.
본 발명의 실시예는 아래에서 더 자세히 설명되는 것처럼 특수 목적 컴퓨터 또는 범용 컴퓨터(컴퓨터 하드웨어를 포함함)를 포함할 수 있다. 본 발명의 범위 내의 실시예는 또한 컴퓨터 실행가능 명령어 또는 데이터 구조를 저장하기 위한 컴퓨터 판독가능 매체를 포함할 수 있다. 그러한 컴퓨터 판독가능 매체는 범용 컴퓨터 또는 특수 목적 컴퓨터에 의해 액세스 될 수 있는 임의의 이용가능한 매체일 수 있다. 한정이 아닌 예시의 방법으로, 컴퓨터 판독가능 매체는 RAM, ROM, EEPROM, CD-ROM 또는 기타 광 디스크 저장소, 자기 디스크 저장소 또는 기타 자기 디스크 저장 장치와 같은 물리적 (또는 기록가능한 종류의) 컴퓨터 판독가능 저장 매체 또는 원하는 프로그램 코드 수단(program code means)을 컴퓨터 실행가능 명령어 또는 데이터 구조로 저장하는데 사용될 수 있고 범용 또는 특수 목적 컴퓨터에 의해 액세스 될 수 있는 기타 임의의 매체를 포함한다.
본 설명과 이하의 특허청구범위에서, "네트워크"는 컴퓨터 시스템들 및/또는 모듈들 사이에 전자 데이터 전달을 가능하게 하는 하나 이상의 데이터 링크로 정의된다. 정보가 네트워크 또는 다른 통신 연결(유선, 무선 또는 유선이나 무선의 조합)을 통해 컴퓨터로 전달되거나 제공되었을 때, 컴퓨터는 그 연결을 컴퓨터 판독가능 매체로 적절히 취급한다. 따라서, 한정이 아닌 예시의 방법으로, 컴퓨터 판독가능 매체는 또한, 원하는 프로그램 코드 수단을 컴퓨터 실행가능 명령어 또는 데이터 구조로 운반 또는 저장하는데 사용될 수 있고, 범용 컴퓨터 또는 특수 목적 컴퓨터에 의해 액세스 될 수 있는 네트워크 또는 데이터 링크를 포함할 수 있다.
컴퓨터 실행가능 명령어는, 예를 들어 범용 컴퓨터, 특수 목적 컴퓨터, 또는 특수 목적 프로세싱 장치로 하여금 일정한 기능 또는 기능들의 그룹을 수행하도록 하는 명령어 또는 데이터를 포함한다. 컴퓨터 실행가능 명령어는, 예를 들어 바이너리, 어셈블리어와 같은 중간 포맷 명령어(intermediate format instructions), 또는 심지어 소스 코드일 수 있다. 비록 청구 대상은 구조적 특징 및/또는 방법론적인 동작에 특정된 언어로 설명되었지만, 첨부된 특허청구범위에 정의된 청구 대상은 위에 설명된 특징 또는 동작에 반드시 한정되는 것은 아니라고 이해해야 한다. 오히려, 설명된 특징 및 동작은 특허청구범위를 구현하는 예시적인 형태로 개시되었다.
당업자는 본 발명이 개인용 컴퓨터, 데스크톱 컴퓨터, 랩톱 컴퓨터, 메시지 프로세서, 핸드헬드 장치, 멀티프로세서 시스템, 마이크로프로세서 기반 또는 프로그램 가능한 가전제품(consumer electronics), 네트워크 PC, 미니컴퓨터, 메인프레임 컴퓨터, 이동 전화, PDA, 페이져(pager) 등을 포함하는 많은 종류의 컴퓨터 시스템 구성이 있는 네트워크 컴퓨팅 환경에서 실시될 수 있다고 이해할 것이다. 본 발명은 또한 네트워크를 통해 링크되어 있는(유선 데이터 링크, 무선 데이터 링크, 또는 이들의 조합에 의함) 로컬 및 리모트 컴퓨터 시스템이 모두 일을 수행하는 분산된 시스템 환경에서 실행될 수 있다. 분산된 시스템 환경에서, 프로그램 모듈은 로컬 및 리모트 메모리 저장 장치 모두에 위치될 수 있다.
도 1A는 웹 기반 애플리케이션의 웹 브라우저 애플리케이션 구성요소에 의한 오프라인 이용을 위하여 로컬 콘텐츠를 구성하는 것을 용이하게 하는 예시적인 컴퓨터 아키텍처(100)를 도시한다. 컴퓨터 아키텍처(100)는 컴퓨터 시스템(101), 네트워크(131), 및 도메인(172)을 포함한다. 애플리케이션(191C), 웹 브라우저(104), 애플리케이션(191S), 및 웹 서버(173)를 포함하는 다양한 구성요소들이 컴퓨터 아키텍처(100) 내에 도시되어 있다. 다양한 구성요소들 각각은, 예를 들어 LAN(Local Area Network), WAN(Wide Area Network), 또는 심지어 인터넷과 같은 네트워크(131)에 연결될 수 있다. 따라서, 다양한 구성요소들은 네트워크에 연결된 다른 구성요소들로부터 데이터를 수신하고 다른 구성요소들로 데이터를 전송할 수 있다. 따라서, 구성요소들은 메시지 관련 데이터(message related data)를 생성하고 메시지 관련 데이터(예를 들어, IP(Internet Protocol) 데이터그램 및 기타 TCP(Transmission Control Protocol), HTTP(HyperText Transfer Protocol), SMTP(Simple Mail Transfer Protocol) 등과 같은 IP 데이터그램을 이용하는 더 높은 계층의 프로토콜)를 네트워크 상에서 교환할 수 있다. 예를 들어, 구성요소들은 웹 서비스 관련 데이터를 포함하는 SOAP(Simple Object Access Protocol) 엔벨로프(envelope)를 교환할 수 있다. 일부 실시예에서, 애플리케이션(191C) 및 애플리케이션(191S)은, 예를 들어 웹 서비스 애플리케이션과 같은 분산된 애플리케이션의 상이한 부분들이다.
웹 브라우저(104)는 네트워크(131)를 통하여 액세스 가능한, 예를 들어 도메인(171)과 같은 도메인으로부터 웹 기반 콘텐츠를 요청하도록 구성될 수 있다. 웹 기반 콘텐츠는 텍스트 데이터, 이미지 데이터, 오디오/비디오 데이터 등을 포함할 수 있다. 애플리케이션(191C)과 같은 하나 이상의 웹 기반 애플리케이션이 웹 브라우저(104) 내에서 실행되도록 구성될 수 있다. 웹 기반 애플리케이션은 스크립트 및/또는 기타 컴퓨터 실행가능 명령어일 수 있다. 웹 기반 애플리케이션은 네트워크(131)를 통하여 액세스 가능한 도메인으로부터, 예를 들어 데이터베이스 데이터와 같은 다른 종류의 데이터를 요청할 수 있다.
도메인(171)은, 예를 들어 IP 주소로 해석될 수 있는 DNS(Domain Name Service) 네임과 같은 도메인 네임(172)에 의하여 식별될 수 있다. 도메인 네임(172)은 웹 서버(173)로부터 콘텐츠를 요구하도록 브라우저에 지시하기 위해 웹 브라우저로 (잠재적으로 도메인(171) 내의 특정 애플리케이션에 대한 다른 식별 정보와 함께) 입력될 수 있다. 도메인 네임과 다른 식별 정보는 웹 브라우저로 입력되는 URL(Uniform Resource Locator)에 포함될 수 있다. 요청의 종류 및/또는 수신된 URL에 따라, 웹 서버(153)는 콘텐츠(175)로부터의 콘텐츠를 액세스할 수 있고/있거나, 예를 들어 애플리케이션(191S)과 같은 웹 기반 애플리케이션을 개시할 수 있다. 애플리케이션(191S)은, 예를 들어 데이터베이스(174)(예를 들어, SQL 또는 기타 관계있는 데이터베이스)와 같은 도메인(171) 내의 다른 위치로부터 데이터를 요청할 수 있다. 웹 서버(173)는 웹 브라우저 요청에 대한 응답에 콘텐츠(175)로부터의 콘텐츠 및/또는 데이터베이스(174)로부터의 데이터를 포함할 수 있다.
브라우저 캐시(106)는 도메인(171)을 포함하는 도메인들로부터 수신된 웹 기반 콘텐츠에 포함된 구성요소들을 캐싱하도록 구성된다. 캐싱된 구성요소들은 이어서 웹 브라우저(104)로부터 전송된 웹 기반 요청을 만족하도록 이용가능하게 될 수 있다. 예를 들어, 캐싱된 구성요소들은 (캐싱된 구성요소들을 네트워크(131)를 통하여 전달할 필요 없이) 브라우저 캐시(106)로부터 직접적으로 액세스 되고 웹 브라우저(104) 내에 랜더링 되는 콘텐츠(155)의 부분들일 수 있다.
웹 브라우저가 웹 브라우저(104)의 웹 애플리케이션으로부터의 요청을 처리하려고 할 때, 웹 브라우저는 로컬로 캐싱된 구성요소들을 찾기 위해 브라우저 캐시(106)에 액세스할 수 있다. 캐싱된 구성요소들이 식별되었을 때, 웹 브라우저는 그 구성요소들을 액세스하고, 웹 브라우저(104)의 웹 애플리케이션 내에 랜더링 될 응답에 그 구성요소들을 포함할 수 있다.
로컬 저장소 액세스 모듈(107)은 로컬 저장소(108)로의 액세스를 관리한다. 로컬 저장소(108)는 웹 기반 요청에 대한 응답으로 수신된 데이터베이스 데이터를 저장하도록 구성된다. 로컬 저장소(108)에 저장된 데이터베이스 데이터는 (데이터베이스 데이터를 네트워크(131)를 통하여 전달할 필요 없이) 웹 브라우저(104)에 의해 액세스 될 수 있고, 웹 브라우저(104) 내의 웹 기반 애플리케이션 내에 랜더링 될 수 있다. 데이터베이스 데이터는 데이터베이스 데이터를 웹 브라우저(104)로 전송한 도메인의 표시(indication)와 함께 로컬 저장소(108)에 저장될 수 있다.
로컬 저장소 액세스 모듈(107)은, 하나의 도메인이 다른 도메인 데이터베이스 데이터에 액세스하는 것을 방지하도록 로컬 저장소(108)에 저장된 데이터베이스 데이터로의 액세스를 요청하는 웹 서버로부터의 스크립트 코드 모듈로부터의 요청을 필터링할 수 있다(즉, 데이터베이스 데이터는 도메인에 의해 분리됨). 따라서, 데이터베이스 데이터가 로컬 저장소(108)에 저장되어 있음에도 불구하고, 데이터베 이스 데이터가 임의의 도메인에 대한 요청을 만족하기 위해 일반적으로 액세스 가능한 것은 아니다.
오프라인 관리자(122)는 애플리케이션의 오프라인 상태를 관리하도록 구성된다. 오프라인 관리자(122)가 애플리케이션이 오프라인 실행이 가능하도록 되어있다는 표시를 수신할 때, 오프라인 관리자(122)는 브라우저 캐시(106) 및/또는 로컬 저장소를 애플리케이션의 오프라인 동작을 위한 구성요소 및/또는 데이터로 채우려는 시도를 할 수 있다. 즉, 오프라인 관리자(122)는 구성요소 및/또는 데이터를 다운로드하기 위해 온라인 상태인 웹 서버와의 통신을 개시할 수 있는데, 이 구성요소 및/또는 데이터는 그 후에 웹 서버와의 통신이 끊어졌을 때 애플리케이션을 오프라인에서 실행하기 위해 잠재적으로 필요하다.
오프라인 관리자(122)는 웹 브라우저(104)의 디폴트 캐시 회수 정책을 오버라이딩하기 위해 오프라인 실행을 위해 사용되는 구성요소들의 만료시기(expiration)를 연장할 수 있다. 예를 들어, 오프라인 관리자(122)는 오프라인 실행을 위해 사용되는 구성요소들의 만료시기를 30일로 설정할 수 있다. 오프라인 실행을 위해 사용되는 구성요소들의 만료시기를 연장하는 것은 웹 브라우저(104)가 다른 웹 사이트들을 탐색할 때 브라우저가 구성요소들을 청소하는 것을 방지할 수 있다.
구성 인터페이스(102)는 도메인에 대한 저장 쿼터(quotas) 및 오프라인 이용가능 애플리케이션의 사용자 구성을 용이하게 한다. 예를 들어, 사용자는 애플리케이션(191C)을 오프라인 실행이 가능하게 된 애플리케이션으로 선택할 수 있고, 그에 의하여 애플리케이션(191C)이 오프라인 이용가능 애플리케이션들(121)(예를 들어, 컴퓨터 시스템(101)의 사용자가 오프라인 이용가능하다고 식별한 애플리케이션들의 리스트)에 포함되도록 할 수 있다. 사용자는 또한 도메인에 대한 저장소 쿼터의 값을 최초로 설정할 수 있을 뿐 아니라 그 값을 변경할 수도 있다. 예를 들어, 사용자는 (도메인 네임(172)에 의해 표현되는) 도메인(171)에 대한 쿼터(112)의 값을 쿼터 데이터 내에 설정할 수 있다. 일반적으로, 쿼터는 컴퓨터 시스템(101)(예를 들어, 브라우저 캐시(106) 및/또는 로컬 저장소(108) 내)에 아이템을 로컬로 저장하기 위해 도메인에 할당된 저장 공간의 양이다. 구성 인터페이스(102)는 오프라인 이용가능 애플리케이션 및 도메인 쿼터에 대한 사용자 설정을 수신하고 구현하기 위한 사용자 인터페이스 제어를 제시할 수 있다. 비록 분리되어 도시되었지만, 오프라인 관리자(122) 및 로컬 저장소 액세스 모듈(107)은 특정 도메인을 위한 브라우저 캐시(106) 및 로컬 저장소(108)에서 소비되는 저장 공간의 합이 그 특정 도메인의 쿼터를 초과하지 않도록 협동적으로 상호작용할 수 있다.
오프라인 감지기(123)는 웹 브라우저(104) 또는 웹 기반 애플리케이션이 웹 서버와 통신할 수 없는 때를 감지하도록 구성된다. 웹 서버와의 통신은, 예를 들어 인터넷으로의 또는 인터넷 상의 통신 링크의 실패, 웹 서버의 고장 등과 같은 여러 가지 이유로 이용이 불가능할 수 있다. 일부 실시예에서, 오프라인 감지기(123)는 웹 서버와의 연결이 이용가능한지 결정하기 위해 때때로 또는 특정 간격마다 웹 서버로의 연결을 시도한다.
오프라인 감지기(123)는 웹 서버와의 통신의 상태가 변경되었을 때 오프라인 관리자(122) 및/또는 로컬 저장소 액세스 모듈(107)에 알릴 수 있다. 예를 들어, 오프라인 감지기(123)는 이용가능했던 웹 서버가 이용 불가능하게 될 때(예를 들어, 통신 실패, 웹 서버의 고장 등) 및 이용 불가능했던 웹 서버가 이용가능하게 될 때(예를 들어, 통신의 복구, 웹 서버가 재시작 이후 동작을 시작함 등) 통지를 전송할 수 있다. 오프라인 감지기(123)는 또한 사용자에게 웹 서버의 이용가능성의 변화를 알리는 사용자 인터페이스 통지(예를 들어, 구성 인터페이스(102)를 통함)를 전송할 수 있다.
도 2는 웹 기반 애플리케이션의 웹 브라우저 애플리케이션 구성요소에 의한 오프라인 이용을 위하여 로컬 콘텐츠를 구성하기 위한 예시적인 방법을 도시하는 순서도이다. 방법(200)은 도 1A의 컴퓨터 아키텍처(100)의 구성요소 및 데이터에 대하여 설명될 것이다.
방법(200)은 웹 기반 애플리케이션이 오프라인 실행이 가능하도록 되어있는지 결정하는 동작(동작(201))을 포함한다. 예를 들어, 오프라인 관리자(122)는 애플리케이션(191C)이 오프라인 실행이 가능하게 되어있는지 결정하기 위해 오프라인 이용가능 애플리케이션들(offline enabled applications)(121)에 액세스할 수 있다. 방법(200)은 웹 기반 애플리케이션을 위한 웹 기반 서버 구성요소가 네트워크 통신을 통해 이용가능한지 감지하는 동작(동작(202))을 포함한다. 예를 들어, 오프라인 감지기(123)는 웹 서버(173), 애플리케이션(191S), 및 도메인(172) 내의 기타 구성요소들이 네트워크(131)의 통신에 이용가능한지 감지할 수 있다.
이용가능한 통신을 감지한 것에 대응하여, 웹 브라우저(104)는 애플리케이 션(191C)의 오프라인 실행을 용이하게 하기 위해 리소스에 대한 요청을 전송할 수 있다. 예를 들어, 웹 브라우저(104)는 웹 서버(713)로 요청(199)을 전송할 수 있다. 요청(199)은 다양한 서로 다른 리소스들(콘텐츠(175)로부터의 콘텐츠, 데이터베이스(174)로부터의 데이터베이스 데이터, 및 애플리케이션(191S)에 대응되는 실행가능 명령어(예를 들어, 스크립트)의 부분을 포함하지만, 이에 한정되지는 않음)에 대한 요청을 포함할 수 있다.
웹 서버(173)는 요청(199)을 수신할 수 있다. 요청(199) 수신에 대한 응답으로, 웹 서버(173)는 애플리케이션(191C)의 오프라인 실행을 용이하게 하기 위해 리소스(예를 들어, 리소스(193B))의 모음을 모을 수 있다. 즉, 웹 서버(173)는 컴퓨터 시스템(101)으로의 전달을 위해 도메인(172) 내의 웹 사이트의 일부분을 "뜯어낼(tear off)" 수 있다(예를 들어, 기능적 복사본을 만듦). 웹 서버(173)는 리소스의 모음을 컴퓨터 시스템(101)으로 전송할 수 있다. 예를 들어, 요청(199)에 대한 응답으로, 웹 서버(173)는 리소스(193B)(애플리케이션(191C)의 오프라인 실행을 용이하게 하기 위한 리소스의 모음)를 컴퓨터 시스템(101)으로 전송할 수 있다. 리소스(193B)는 리소스(194B)(애플리케이션(191S)의 코드, 콘텐츠(175)로부터의 콘텐츠 등) 및 데이터베이스(174)(또는 그 일부분)를 포함할 수 있다.
일부 실시예에서, 도메인은 또한 리소스의 모음을 전송하기에 앞서 리소스 목록(resource manifest)를 전송할 수 있다. 리소스 목록은 리소스의 모음에 포함될 리소스를 식별할 수 있고, 리소스의 모음을 저장하는데 필요한 저장공간을 표시할 수 있다. 리소스 목록은 또한 애플리케이션에 대응되는 URL이 수신되었을 때 애플리케이션의 오프라인 실행을 용이하게 하기 위해 로컬로 실행될 모듈을 표시할 수 있는데, 이 URL은 그렇지 않으면 웹 서버 또는 서버 측의 분산된 애플리케이션 구성요소에서의 리모트 실행을 야기할 것이다. 리소스 목록은 또한 애플리케이션의 오프라인 실행을 용이하게 하기 위하여 리소스를 동기화하기 위해 실행될 모듈을 나타낼 수 있다. 리소스는, 이전에 이용 불가능했던 웹 서버 및/또는 애플리케이션이 이용가능하게 될 때, 이용가능한 웹 서버 및/또는 애플리케이션과 주기적으로, 또는 이용가능한 웹 서버 및/또는 애플리케이션과 동기화시키는 사용자 요청에 대한 응답으로 동기화될 수 있다. 오프라인 실행을 시작하기 위한 모듈 및 리소스를 동기화하기 위한 모듈은 그 자체가 애플리케이션의 오프라인 실행을 용이하게 하기 위한 리소스의 모음에 포함되는 리소스일 수 있다.
컴퓨터 아키텍처(100)에 도시된 바와 같이, 예를 들어 웹 서버(173)는 목록(192)을 컴퓨터 시스템(101)으로 전송할 수 있다. 목록(192)은 리소스(193B) 내의 리소스를 식별할 수 있고, 리소스(193B)를 위해 필요한 저장공간을 나타낼 수 있으며, 웹 서버(173) 및/또는 애플리케이션(191S)에 대응되는 URL이 웹 브라우저(104)에서 수신되었을 때 애플리케이션(191C)의 오프라인 실행을 위해 실행될 모듈을 나타낼 수 있고, 리소스(193B)를 동기화하기 위해 실행될 모듈을 나타낼 수 있다. 아래는 예시적인 XML 리소스 목록이다(줄 번호는 참고의 목적으로 포함되었다).
1. <?xml version="1.0" encoding="utf-8" ?>
2. <resource name="Expense Report">
3. <resource src="default.css" />
4.
5. <resource src="images/reconcile.jpg" />
6. <resource src="images/personal.jpg" />
7. <resource src="images/dispute.jpg" />
8. <resource src="images/hold.jpg" />
9.
10. <resource src="ExpenseReportService.asmx/js" />
11. <resource src="ExpenseReportLineItemService.asmx/js" />
12.
13. <resource src="DefaultSync.aspx" />
14.
15. <resource src="ExpenseReports.aspx" />
16. <resource src="ExpenseReport.aspx" />
17.
18. <runOfflineUrl src="ExpenseReports.aspx" />
19. <takeOnlineOrSyncUrl src="DefaultSync.aspx" />
20. <database spaceNeeded="60" />
21. </resources>
예시적인 목록에서, 3~16번째 줄은 (2번째 줄에서 식별된) "Expense Report" 애플리케이션의 오프라인 실행을 용이하게 하기 위한 리소스를 식별한다. 20번째 줄은 목록에서 식별된 리소스를 저장하는데 필요한 저장공간이 "60"이라는 것(예를 들어, 메가바이트 단위)을 나타낸다. 18번째 줄은 Expense Report 애플리케이션의 오프라인 실행을 시작하기 위해 "ExpenseReports.aspx" 모듈(예를 들어, 스크립트)이 로컬로(예를 들어, 컴퓨터 시스템(104)에서) 실행되어야 한다는 것을 나타낸다. ExpenseReports.aspx는 15번째 줄에서 리소스로 식별된다. 19번째 줄은 "DefaultSync.aspx" 모듈(예를 들어, 스크립트)이 예시적인 목록에서 식별된 리소스를 동기화하기 위해 로컬로 실행되어야 한다는 것을 나타낸다. "DefaultSync.aspx"는 13번째 줄에서 리소스로 식별된다.
방법(200)은 네트워크 통신을 통하여 웹 기반 서버 구성요소로부터 웹 기반 애플리케이션을 위한 리소스를 수신하는 동작(동작(203))을 포함한다. 예를 들어, 웹 브라우저(104)는 도메인(171)으로부터 리소스(193B)를 수신할 수 있다.
일부 실시예에서, 리소스(193B)를 수신하기에 앞서, 오프라인 관리자(122) 및/또는 로컬 저장소 액세스 모듈(108)은 쿼터(112)에 기초하여 리소스(193B)의 저장이 적절한지 결정한다. 즉, 오프라인 관리자(122) 및/또는 로컬 저장소 액세스 모듈(105)은 도메인(171)을 위해 할당된 저장 공간이 리소스(194B) 및 데이터베이스(174)를 저장하기에 충분한지 검증한다. 만약 할당된 저장 공간이 충분하다면, 웹 브라우저(104)는 리소스(193B)를 받아들일 수 있다.
만약 할당된 저장 공간이 쿼터(112)에 기초하여 충분하지 않다면, 리소스(193B)(또는 그 일부분)는 거절될 수 있다. 선택적으로, 구성 인터페이스(102) 는 도메인(172)에 할당된 저장 공간이 리소스(193B)를 저장하기에 충분하지 않다고 컴퓨터 시스템(102)의 사용자에게 알릴 수 있다. 적절하다면, 사용자는 이어서 리소스(193B)를 저장하기에 충분한 양으로 쿼터(112)를 구성 인터페이스(102)를 통하여 증가시킬 수 있다. 만약 사용자가 리소스(193B)를 저장하기에 충분한 양으로 쿼터(112)를 증가시키지 않기로 선택한다면, 리소스(193B)(또는 그 일부분)는 거절될 수 있다.
방법(200)은 컴퓨터 시스템에서 수신된 리소스를 로컬로 저장하는 동작(로컬로 저장된 리소스의 복사본은 웹 브라우저 클라이언트 구성요소에 의해 액세스 가능하고, 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용 불가능할 때 웹 기반 클라이언트 구성요소로부터의 요청에 대응하여 로컬로 저장된 리소스가 액세스될 수 있어서, 로컬로 저장된 리소스는 네트워크 통신 없이도 웹 기반 클라이언트 구성요소에 이용가능함)(동작(204))을 포함한다. 예를 들어, 웹 브라우저(104)는 리소스(194B)를 브라우저 캐시(106)에 저장할 수 있고 데이터베이스(174)를 (도메인 네임(172)과 함께) 로컬 저장소(108)에 저장할 수 있다. 따라서, 리소스(194B) 및 데이터베이스(174)를 네트워크(131)를 통하여 전달하지 않고도 웹 브라우저(104) 및 애플리케이션(191C)은 리소스(194B) 및 데이터베이스(174)를 이용할 수 있다. 그에 따라, 리소스(194B) 및 데이터베이스(174)는 애플리케이션(191C)의 오프라인 실행을 용이하게 하기 위해 사용될 수 있다. 예를 들어, 도메인(171)이 연결되지 않을 때, 리소스(194C)의 리소스에 대한 애플리케이션(191C)으로부터의 (애플리케이션(191S)으로의) 요청은 브라우저 캐시(106)로부터의 리소스에 액세스함으 로써 만족될 수 있다. 오프라인 실행 동안 (예를 들어, 애플리케이션(191S)에 대한 URL에 대응되는) 요청을 수신하도록 구성된 모듈은 브라우저 캐시(106)의 리소스로의 액세스를 용이하게 할 수 있다.
방법(200)은 로컬로 저장된 리소스를 특정 기간 동안 컴퓨터 시스템에 로컬로 저장된 채 유지되도록 구성하여 웹 브라우저의 디폴트 캐시 회수 설정을 오버라이딩하는 동작(동작(205))을 포함한다. 예를 들어, 오프라인 관리자(123)는 리소스(194B)가 만료되어야할 시점을 연장할 수 있다. 리소스가 만료되어야할 시점을 연장하는 것은 상당히 긴 만료시기(예를 들어, 30일)를 갖는 스티키 비트(sticky bit)로 리소스를 표시하는 것을 포함할 수 있다. 스티키 비트의 사용은 웹 브라우저의 디폴트 캐시 회수 설정을 오버라이딩할 수 있다. 예를 들어, 리소스(194B)의 리소스를 스티키 비트로 표시하는 것은 브라우저 캐시(106)와 관련된 캐시 회수 정책을 오버라이딩할 수 있다.
일부 실시예에서, 애플리케이션의 오프라인 실행을 위한 리소스는 미리 캐싱되어(pre-cached) 있다. 리소스는 웹 기반 서버 구성요소가 이용 불가능하다는 것을 감지하기에 앞서 미리 캐싱되어 있을 수 있다. 예를 들어, 웹 기반 애플리케이션이 오프라인 실행이 가능하게 되었다는 초기 표시가 있을 때(예를 들어, 사용자가 애플리케이션을 최초로 오프라인 이용가능 애플리케이션들(121)에 포함할 때), 오프라인 관리자(122)는 웹 기반 애플리케이션의 오프라인 실행을 용이하게 하기 위해 리소스를 요청할 수 있다. 따라서, 웹 기반 애플리케이션은 그 후에 통신 실패가 발생했을 때, 오프라인 실행을 위해 보다 효율적으로 전환될 수 있다.
다른 실시예에서, 로컬로 저장된 리소스는 웹 기반 서버 구성요소가 이용가능한 대응되는 리소스와 동기화된다. 예를 들어, 애플리케이션(191C)의 오프라인 실행을 위해 리소스(194A)가 브라우저 캐시(106)에 미리 저장되어 있을 수 있다. 그러나, 리소스(194A)가 저장되고 얼마 후, 콘텐츠(174)의 일부가 갱신된다. 그에 따라, 로컬로 저장된 리소스를 웹 서버(173) 및/또는 애플리케이션(191S)이 이용가능한 리소스와 동기화시키기 위해 리소스(194B)가 수신된다. 동기화는 로컬로 저장된 리소스의 이전 버전을 덮어써지게 할 수 있다. 예를 들어, 리소스(194B)의 수신은 리소스(194A)가 덮어써지도록 할 수 있다. 스티키 비트는 동기화 이후에 리셋될 수 있다.
도 1B는 웹 기반 애플리케이션의 오프라인 실행을 용이하게 하는 컴퓨터 아키텍처(100)를 도시한다. 도 1B에 도시된 컴퓨터 아키텍처(100)는 리소스(194B)를 보다 상세하게 보여준다. 리소스(194B)는 모듈(195), 기타 모듈들(196) 및 콘텐츠(197)를 포함한다. 모듈(195)(예를 들어, 스크립트)은 애플리케이션(191C)의 오프라인 실행을 용이하게 하기 위해 수행될 모듈이다. 모듈(195)은 도메인(171)이 이용 불가능할 때 애플리케이션(191S)에 대한 URL이 수신된 경우 실행될 수 있다. 모듈(195)은 이전에 목록(192)에서 식별되었을 수 있다. 기타 모듈들(196)은 모듈(195)이 실행되는 동안 애플리케이션(191C)의 오프라인 실행을 용이하게 하기 위해 호출될 수 있는 기타 모듈들(예를 들어, 기타 스크립트들)을 나타낸다. 콘텐츠(197)는 애플리케이션(191C)의 오프라인 실행을 용이하게 하기 위한 콘텐츠를 나타낸다.
도 3은 웹 기반 애플리케이션의 오프라인 실행을 위한 예시적인 방법(300)의 순서도를 도시한다. 방법(300)은 도 1B의 컴퓨터 아키텍처(100)의 구성요소 및 데이터에 대하여 설명될 것이다.
방법(300)은 웹 기반 애플리케이션을 위한 웹 브라우저 애플리케이션 구성요소가 해당 웹 기반 애플리케이션을 위한 대응하는 웹 서버 애플리케이션 구성요소로 웹 기반 애플리케이션 리소스에 대한 요청을 전송하는 동작(동작(301))을 포함한다. 예를 들어, 애플리케이션(191C)은 웹 브라우저(104)로 요청(141)을 발송할 수 있다. 요청(141)은 애플리케이션(191S)으로부터의 리소스에 대한 요청을 나타내는 도메인(171) 내의 URL을 포함할 수 있다.
방법(300)은 대응되는 웹 서버 애플리케이션 구성요소와의 통신이 네트워크를 통하여 이용가능하지 않다는 것을 감지하는 동작(동작(302))을 포함한다. 예를 들어, 오프라인 감지기(123)는 도메인(171)이 이용 불가능하다는 것을 감지할 수 있다. 오프라인 감지기(123)는 요청(141)에 대한 응답이 수신되지 않을 때 도메인(171)의 이용 불가능하다는 것을 감지할 수 있다. 오프라인 감지기는 도메인(171)이 이용 불가능하다고 결정하기에 앞서 도메인(172)과의 통신을 더 시도할 수 있다. 선택적으로, 오프라인 감지기(123)는 요청(141)의 발생에 앞서 도메인(171)이 이용 불가능하다는 것을 감지했을 수 있다.
방법(300)은 웹 기반 애플리케이션이 오프라인 실행이 가능하도록 되어 있다고 결정하는 동작(동작(303))을 포함한다. 예를 들어, 도메인(171)이 이용 불가능하다고 감지된 것에 대응하여, 오프라인 관리자(122)는 애플리케이션(191C)가 오프 라인 실행이 가능하게 되어있다고 결정하기 위해 오프라인 이용가능 애플리케이션들(121)을 참조할 수 있다.
방법(300)은 다른 웹 브라우저 애플리케이션들이 온라인으로 실행되는 구성을 유지한 채로 그 웹 브라우저 애플리케이션을 오프라인으로 실행하도록 웹 브라우저를 구성하는 동작(동작(304))을 포함한다. 예를 들어, 오프라인 관리자(122)는 모듈(195)을 실행할 수 있고, 애플리케이션(191C)으로부터의 요청은 모듈(195)로 보내지고 모듈(195)로부터의 응답은 애플리케이션(191C)으로 보내지도록 브라우저(104)를 구성할 수 있다. 그러나, 다른 애플리케이션들로부터의 요청 및 다른 애플리케이션들로의 응답은 방향이 바뀌지(redirect) 않는다. 즉, 웹 브라우저(104)는 네트워크(131)를 통하여 다른 도메인들과 계속 통신할 수 있다. 그에 따라, 웹 브라우저(104)는 애플리케이션(191C)을 위한 통신이 모듈(195)로 및 모듈(195)로부터 전달되는 시간 동안 네트워크(131)를 통하여 다른 도메인들로 웹 기반 요청을 전송하고 다른 도메인들로부터 웹 기반 응답을 수신할 수 있다.
방법(300)은 웹 브라우저를 오프라인으로 하지 않고 요청된 웹 기반 애플리케이션 리소스를 컴퓨터 시스템의 로컬 저장소로부터 제공하는 동작(동작(305))을 포함한다. 예를 들어, 모듈(195)은 기타 모듈들(196), 콘텐츠(197), 및 데이터베이스(174)를 이용하여 요청(141)에 대한 응답(142)을 형성할(formulate) 수 있다. 모듈(195)은 응답(142)을 (잠재적으로 웹 브라우저(104)를 통하여) 애플리케이션(191C)으로 전송할 수 있다.
웹 브라우저(104)는 요청(141)에 대한 응답을 위한 리소스가 로컬 저장소로 부터 액세스 되는 시간 동안 계속해서 네트워크(131)를 통하여 다른 도메인들로 웹 기반 요청을 전송하고 다른 도메인들로부터 웹 기반 응답을 수신할 수 있다. 따라서, 기타 모듈들(196), 콘텐츠(197), 및 데이터베이스(174)가 요청(141)에 대한 응답을 형성하기 위해 액세스 되는 동안, 네트워크(131)를 통하여 전송되는 요청 및 응답도 브라우저 캐시(106) 및 로컬 저장소(108)에 다른 데이터를 저장하고 이를 추출(retrieve)할 수 있다.
본 발명의 실시예는 컴퓨터 시스템에서 웹 기반 실행가능 명령어 및 데이터의 로컬 저장을 용이하게 한다. 웹 기반 실행가능 명령어 및 데이터는 컴퓨터 시스템에서 웹 브라우저와 관련된 모듈로부터의 (실행가능 명령어 및 데이터를 전송한 도메인으로 전송되는) 요청을 로컬로 만족하기 위해 사용될 수 있다. 그에 따라, 로컬로 저장된 웹 기반 실행가능 명령어 및 데이터는, 그것들 없이는 웹 사이트가 이용가능하지 않을 때 컴퓨터 시스템에서 웹 서버와의 통신을 시뮬레이팅(simulate)하는데 사용될 수 있다.
본 발명의 실시예는 사용자 및 컴퓨터 시스템 구성 규칙(rules)에 따라 컴퓨터 시스템에서 비휘발성 저장소의 투명한 확장(transparent extension)을 용이하게 할 수 있다. 파일의 복수의 섀도우 사본(shadow copy)을 유지하는 것은, 볼륨(volume)이 고장 날 경우, 보다 효율적으로 복구할 수 있도록 하는 리던던시(redundancy)를 제공한다. 추가로, 시스템 리소스가 파일 동작의 전파가 없다면 많이 사용되지 않을 때, 파일 동작이 백그라운드에서 새도우 사본 간에 전파될 수 있다.
본 발명은 그 사상 또는 본질적인 특성을 벗어나지 않고 다른 특정 형태로 실시될 수 있다. 설명된 실시예는 단지 도시적인 것으로만 보아야 하고 제한적인 것으로 보아서는 안 된다. 따라서, 본 발명의 범위는 앞의 설명이 아니라 첨부된 특허청구범위에 의하여 지시된다. 특허청구범위와 동등한 것의 의의 및 범위 내의 모든 변경은 특허청구범위에 속하는 것으로 보아야 한다.

Claims (20)

  1. 네트워크에 연결된 컴퓨터 시스템 - 상기 컴퓨터 시스템은 웹 브라우저 및 대응되는 웹 기반 애플리케이션들을 위한 복수의 웹 브라우저 애플리케이션 구성요소를 포함하고, 상기 웹 브라우저는 각각 대응되는 상기 웹 기반 애플리케이션들의 웹 서버 애플리케이션 구성요소들로부터의 리소스들에 액세스하기 위해 웹 브라우저 구성요소들을 실행하도록 구성됨 - 에서, 웹 기반 애플리케이션의 웹 브라우저 애플리케이션 구성요소에 의한 오프라인 이용을 위한 로컬 콘텐츠를 구성하기 위한 방법으로서,
    상기 웹 기반 애플리케이션이 오프라인 실행이 가능하게 되어있는지 결정하는 동작;
    상기 웹 기반 애플리케이션을 위한 상기 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능한지 감지하는 동작;
    네트워크 통신을 통하여 상기 웹 기반 서버 구성요소로부터 상기 웹 기반 애플리케이션을 위한 리소스들을 수신하는 동작;
    상기 컴퓨터 시스템에서 상기 수신된 리소스들을 로컬로 저장하는 동작 - 상기 리소스들의 로컬로 저장된 사본은 상기 웹 브라우저 클라이언트 구성요소에 의해 액세스 될 수 있고, 상기 로컬로 저장된 리소스들은, 상기 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능하지 않다고 감지했을 때 상기 로컬로 저장된 리소스들이 상기 웹 기반 클라이언트 구성요소로부터의 요청에 응답하여 액세스 될 수 있도록, 네트워크 통신 없이도 상기 웹 기반 클라이언트 구성요소에 의해 이용가능함 - ; 및
    상기 로컬로 저장된 리소스들을 특정 기간 동안 상기 컴퓨터 시스템에 로컬로 저장된 채로 유지하도록 구성하여 상기 웹 브라우저의 디폴트 캐시 회수(reclamation) 설정을 오버라이딩(override)하는 동작
    을 포함하는 방법.
  2. 제1항에 있어서,
    상기 웹 기반 애플리케이션을 위한 상기 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능한지 감지하는 동작은, 웹 서버가 일정 기간 동안 이용 불가능했던 이후 상기 웹 서버와의 통신을 재설정하는 동작을 포함하는 방법.
  3. 제1항에 있어서,
    상기 웹 기반 애플리케이션을 위한 리소스들을 수신하는 동작은, 상기 웹 서버가 이용 불가능할 때 상기 컴퓨터 시스템에서 로컬로 수행될 모듈 - 상기 모듈은 상기 웹 브라우저 애플리케이션 구성요소로부터 요청들을 수신하고 대응되는 응답들을 생성하도록 구성됨 - 을 수신하는 것을 포함하는 방법.
  4. 제1항에 있어서,
    상기 컴퓨터 시스템에서 상기 수신된 리소스들을 로컬로 저장하는 동작은, 상기 웹 기반 서버 구성요소가 이후 이용 불가능하다고 감지하기에 앞서 상기 수신된 리소스들을 미리 캐싱하는 동작을 포함하는 방법.
  5. 제1항에 있어서,
    상기 컴퓨터 시스템에서 상기 수신된 리소스들을 로컬로 저장하는 동작은, 로컬로 저장된 리소스들을, 상기 웹 기반 서버 구성요소를 포함하는 도메인 내의 상기 웹 기반 서버 구성요소가 이용가능한 리소스들과 동기화하는 동작을 포함하는 방법.
  6. 제1항에 있어서
    로컬 저장을 위해 상기 웹 기반 서버 구성요소가 상기 컴퓨터 시스템으로 전송할 상기 리소스들의 리스트를 포함하고, 상기 웹 기반 서버 구성요소로부터 상기 리소스들을 수신하는 동작에 앞서 상기 리소스들을 저장하기 위해 필요한 저장 공간 요구사항(storage requirement)을 표시하는 목록(manifest)을 수신하는 동작; 및
    상기 웹 기반 서버 구성요소를 포함하는 도메인에 할당된 저장 공간의 양이 상기 목록에 표시된 상기 필요한 저장 공간 요구사항을 충족할 정도로 충분한지 결정하는 동작
    을 더 포함하는 방법.
  7. 제1항에 있어서,
    상기 웹 기반 애플리케이션을 위한 상기 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능하다는 것을 감지한 것에 응답하여 상기 웹 기반 서버 구성요소의 이용가능성에 대한 사용자 통지를 전송하는 동작을 더 포함하는 방법.
  8. 네트워크에 연결된 컴퓨터 시스템 - 상기 컴퓨터 시스템은 웹 브라우저 및 대응되는 웹 기반 애플리케이션들을 위한 복수의 웹 브라우저 애플리케이션 구성요소를 포함하고, 상기 웹 브라우저는 각각 대응되는 상기 웹 기반 애플리케이션들의 웹 서버 애플리케이션 구성요소들로부터의 리소스들에 액세스하기 위해 웹 브라우저 애플리케이션 구성요소들을 실행하도록 구성됨 - 에서, 웹 기반 애플리케이션을 오프라인으로 실행하기 위한 방법으로서,
    웹 기반 애플리케이션을 위한 웹 브라우저 애플리케이션 구성요소가 해당 웹 기반 애플리케이션을 위한 대응하는 웹 서버 애플리케이션 구성요소로 웹 기반 애플리케이션 리소스들에 대한 요청을 전송하는 동작;
    상기 대응되는 웹 서버 애플리케이션 구성요소와의 통신이 상기 네트워크를 통하여 이용가능하지 않다는 것을 감지하는 동작;
    상기 웹 기반 애플리케이션이 오프라인 실행이 가능하게 되어있는지 결정하는 동작;
    다른 웹 브라우저 애플리케이션들이 온라인으로 실행되는 구성을 유지한 채로 상기 웹 브라우저 애플리케이션을 오프라인으로 실행하도록 상기 웹 브라우저를 구성하는 동작; 및
    상기 웹 브라우저를 오프라인으로 하지 않고 상기 요청된 웹 기반 애플리케이션 리소스들을 상기 컴퓨터 시스템의 로컬 저장소로부터 제공하는 동작
    을 포함하는 방법.
  9. 제8항에 있어서,
    상기 웹 기반 애플리케이션을 위한 상기 웹 브라우저 애플리케이션 구성요소가 요청을 전송하는 동작은, 상기 웹 브라우저 애플리케이션 구성요소가 상기 웹 서버 애플리케이션 구성요소에 대한 URL을 상기 웹 브라우저로 전송하는 동작을 포함하는 방법.
  10. 제8항에 있어서,
    상기 웹 기반 애플리케이션이 오프라인 실행이 가능하게 되어있는지 결정하는 동작은, 오프라인 실행이 가능하게 되어있는 애플리케이션들의 리스트를 참조하는 동작을 포함하는 방법.
  11. 제8항에 있어서,
    상기 웹 브라우저 애플리케이션을 오프라인으로 실행하도록 상기 웹 브라우저를 구성하는 동작은, 상기 컴퓨터 시스템의 브라우저 캐시로부터 모듈을 로컬로 로딩하는 동작 - 상기 모듈은 상기 웹 브라우저 애플리케이션 구성요소로부터 요청 들을 수신하고 대응되는 응답을 형성하도록 구성됨 - 을 포함하는 방법.
  12. 제11항에 있어서,
    상기 컴퓨터 시스템의 브라우저 캐시로부터 모듈을 로컬로 로딩하는 동작은, 상기 웹 서버 애플리케이션 구성요소로의 요청이 수신되고 상기 웹 서버 애플리케이션 구성요소와의 통신이 네트워크를 통하여 이용가능하지 않을 때 수행되어야 할 모듈인 것으로 리소스 목록 내에서 식별되어져 있는 모듈을 로딩하는 동작을 포함하는 방법.
  13. 제12항에 있어서,
    상기 웹 브라우저를 오프라인으로 하지 않고 상기 요청된 웹 기반 애플리케이션 리소스들을 상기 컴퓨터 시스템의 로컬 저장소로부터 제공하는 동작은,
    상기 요청을 상기 로딩된 모듈로 보내는 동작;
    상기 로딩된 모듈이 상기 브라우저 캐시로부터 상기 요청된 웹 기반 애플리케이션 리소스를 액세스하는 동작;
    상기 로딩된 모듈이 상기 컴퓨터 시스템의 상기 로컬 저장소로부터 액세스 되는 리소스들만을 이용하여 요청에 대한 완전한 응답(complete response)을 형성하는 동작; 및
    상기 완전한 응답을 상기 웹 브라우저 애플리케이션 구성요소로 전달하는 동작
    을 포함하는 방법.
  14. 제8항에 있어서,
    상기 요청된 웹 기반 애플리케이션 리소스들을 상기 컴퓨터 시스템의 로컬 저장소로부터 제공하는 동작은, 상기 웹 브라우저 애플리케이션 구성요소가 상기 요청을 전송한 후 어떤 네트워크 통신도 발생함이 없이 상기 요청된 웹 기반 애플리케이션 리소스들이 상기 웹 브라우저 애플리케이션 구성요소로 제공되도록, 상기 컴퓨터 시스템의 로컬 저장소로부터의 데이터베이스 데이터와 상기 컴퓨터 시스템의 브라우저 캐시로부터의 콘텐츠를 함께 제공하는 동작을 포함하는 방법.
  15. 컴퓨터 시스템으로서,
    하나 이상의 프로세서;
    시스템 메모리;
    상기 컴퓨터 시스템에 로컬로 배치된 하나 이상의 물리적인 컴퓨터 판독가능 매체(computer-readable media)를 포함하고,
    상기 하나 이상의 물리적인 컴퓨터 판독가능 매체에는 웹 기반 애플리케이션의 웹 브라우저 애플리케이션 구성요소에 의한 오프라인 이용을 위한 로컬 콘텐츠를 구성하기 위한 방법을 구현하도록 구성된 컴퓨터 실행가능 명령어들이 저장되고, 상기 명령어들은,
    상기 웹 기반 애플리케이션이 오프라인 실행이 가능하게 되어있는지 결정하 는 동작;
    상기 웹 기반 애플리케이션을 위한 상기 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능한지 감지하는 동작;
    네트워크 통신을 통하여 상기 웹 기반 서버 구성요소로부터 상기 웹 기반 애플리케이션을 위한 리소스들을 수신하는 동작;
    상기 컴퓨터 시스템에서 상기 수신된 리소스들을 로컬로 저장하는 동작 - 상기 리소스들의 로컬로 저장된 사본은 상기 웹 브라우저 클라이언트 구성요소에 의해 액세스 될 수 있고, 상기 로컬로 저장된 리소스들은, 상기 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능하지 않다고 감지했을 때 상기 로컬로 저장된 리소스들이 상기 웹 기반 클라이언트 구성요소로부터의 요청에 응답하여 액세스 될 수 있도록, 네트워크 통신 없이도 상기 웹 기반 클라이언트 구성요소에 의해 이용가능함 - ; 및
    상기 로컬로 저장된 리소스들을 특정 기간 동안 상기 컴퓨터 시스템에 로컬로 저장된 채로 유지하도록 구성하여 상기 웹 브라우저의 디폴트 캐시 회수 설정을 오버라이딩하는 동작
    을 수행하는 것을 포함하며,
    상기 하나 이상의 물리적인 컴퓨터 판독가능 매체에는 상기 웹 기반 애플리케이션을 오프라인으로 실행하기 위한 방법을 구현하도록 구성된 컴퓨터 실행가능 명령어들이 저장되고, 상기 명령어들은,
    상기 웹 기반 애플리케이션을 위한 상기 웹 브라우저 애플리케이션 구성요소 가 상기 웹 기반 애플리케이션을 위한 상기 웹 서버 애플리케이션 구성요소로 웹 기반 애플리케이션 리소스들에 대한 요청을 전송하는 동작;
    상기 웹 서버 애플리케이션 구성요소와의 통신이 상기 네트워크를 통하여 이용가능하지 않다는 것을 감지하는 동작;
    상기 웹 기반 애플리케이션이 오프라인 실행이 가능하게 되어있는지 결정하는 동작;
    다른 웹 브라우저 애플리케이션들이 온라인으로 실행되는 구성을 유지한 채로 상기 웹 브라우저 애플리케이션을 오프라인으로 실행하도록 상기 웹 브라우저를 구성하는 동작; 및
    상기 웹 브라우저를 오프라인으로 하지 않고 상기 요청된 웹 기반 애플리케이션 리소스들을 상기 컴퓨터 시스템의 저장소에 저장된 상기 로컬로 저장된 리소스들로부터 제공하는 동작
    을 수행하는 것을 포함하는 컴퓨터 시스템.
  16. 제15항에 있어서,
    상기 컴퓨터 시스템에서 상기 수신된 리소스들을 로컬로 저장하는 동작은, 상기 웹 기반 서버 구성요소가 이후 이용 불가능하다고 감지하기에 앞서 상기 수신된 리소스들을 미리 캐싱하는 동작을 포함하는 컴퓨터 시스템.
  17. 제15항에 있어서,
    상기 컴퓨터 시스템에서 상기 수신된 리소스들을 로컬로 저장하는 동작은, 로컬로 저장된 리소스들을, 상기 웹 기반 서버 구성요소를 포함하는 도메인 내의 상기 웹 기반 서버 구성요소가 이용가능한 리소스들과 동기화하는 동작을 포함하는 컴퓨터 시스템.
  18. 제15항에 있어서,
    로컬 저장을 위해 상기 웹 기반 서버 구성요소가 상기 컴퓨터 시스템으로 전송할 상기 리소스들의 리스트를 포함하고, 상기 웹 기반 서버 구성요소로부터 상기 리소스들을 수신하는 동작에 앞서 상기 리소스들을 저장하기 위해 필요한 저장 공간 요구사항을 표시하는 목록을 수신하는 동작; 및
    상기 웹 기반 서버 구성요소를 포함하는 도메인에 할당된 저장 공간의 양이 상기 목록에 표시된 상기 저장 공간 요구사항을 충족할 정도로 충분한지 결정하는 동작
    을 수행하도록 구성된 컴퓨터 실행가능 명령어들을 더 포함하는 컴퓨터 시스템.
  19. 제15항에 있어서,
    상기 웹 기반 애플리케이션을 위한 상기 웹 기반 서버 구성요소가 네트워크 통신을 통하여 이용가능하다는 것을 감지한 것에 응답하여 상기 웹 기반 서버 구성요소의 이용가능성에 대한 사용자 통지를 전송하는 동작을 수행하도록 구성된 컴퓨 터 실행가능 명령어들을 더 포함하는 컴퓨터 시스템.
  20. 제15항에 있어서,
    상기 웹 브라우저를 오프라인으로 하지 않고 상기 요청된 웹 기반 애플리케이션 리소스들을 상기 컴퓨터 시스템의 로컬 저장소로부터 제공하는 동작은,
    상기 요청을 로컬로 로딩된 모듈로 보내는 동작;
    상기 로컬로 로딩된 모듈이 브라우저 캐시로부터 상기 요청된 웹 기반 애플리케이션을 액세스하는 동작;
    상기 로컬로 로딩된 모듈이 상기 컴퓨터 시스템의 상기 로컬 저장소로부터 액세스 되는 리소스들만을 이용하여 요청에 대한 완전한 응답을 형성하는 동작; 및
    상기 완전한 응답을 상기 웹 브라우저 애플리케이션 구성요소로 전달하는 동작
    을 포함하는 컴퓨터 시스템.
KR1020097008281A 2006-10-30 2007-10-05 웹 기반 애플리케이션의 오프라인 실행 KR101433981B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/554,435 2006-10-30
US11/554,435 US7814234B2 (en) 2006-10-30 2006-10-30 Offline execution of web based applications
PCT/US2007/080548 WO2008054951A1 (en) 2006-10-30 2007-10-05 Offline execution of web based applications

Publications (2)

Publication Number Publication Date
KR20090073199A true KR20090073199A (ko) 2009-07-02
KR101433981B1 KR101433981B1 (ko) 2014-08-26

Family

ID=39331673

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097008281A KR101433981B1 (ko) 2006-10-30 2007-10-05 웹 기반 애플리케이션의 오프라인 실행

Country Status (11)

Country Link
US (1) US7814234B2 (ko)
JP (1) JP4698756B2 (ko)
KR (1) KR101433981B1 (ko)
CN (1) CN101529415B (ko)
AU (1) AU2007313956B2 (ko)
BR (1) BRPI0716520A8 (ko)
CA (1) CA2662553C (ko)
MX (1) MX2009003549A (ko)
RU (1) RU2453911C2 (ko)
TW (1) TWI449372B (ko)
WO (1) WO2008054951A1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015010104A1 (en) * 2013-07-19 2015-01-22 Opanga Networks, Inc. Content source discovery
KR20160069445A (ko) * 2014-12-08 2016-06-16 에스케이플래닛 주식회사 웹 어플리케이션 관리를 위한 사용자 장치 및 그 방법
KR20170027331A (ko) * 2017-02-28 2017-03-09 엔에이치엔엔터테인먼트 주식회사 모바일 환경에서의 리소스 다운로드 방법 및 시스템
JP2019517042A (ja) * 2016-04-19 2019-06-20 ドロップボックス, インコーポレイテッド オフラインでのハイブリッドアプリケーションへのアクセスの提供
KR20200060741A (ko) * 2017-10-26 2020-06-01 마스터카드 인터내셔날, 인코포레이티드 오프라인 동작에서 온라인 사용자 인증 프로세스를 에뮬레이션하기 위한 장치 및 방법

Families Citing this family (98)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080014929A1 (en) * 2006-05-05 2008-01-17 Infosys Technologies Ltd. Occasionally connected computing for mobile web services
US20080201414A1 (en) * 2007-02-15 2008-08-21 Amir Husain Syed M Transferring a Virtual Machine from a Remote Server Computer for Local Execution by a Client Computer
US9043391B2 (en) 2007-02-15 2015-05-26 Citrix Systems, Inc. Capturing and restoring session state of a machine without using memory images
US9398067B2 (en) * 2007-02-20 2016-07-19 Avaya Inc. Web-based sharing of documents
US8452853B2 (en) * 2007-03-05 2013-05-28 International Business Machines Corporation Browser with offline web-application architecture
US8255921B2 (en) * 2007-05-30 2012-08-28 Google Inc. Method and apparatus that enables a web-based client-server application to be used offline
US20090024645A1 (en) * 2007-07-16 2009-01-22 Sudhir Krishna S Method and system for generating offline applications
US20090259744A1 (en) * 2008-04-14 2009-10-15 Kolke Daniel J System and Method for Running a Web-Based Application while Offline
US8109444B2 (en) * 2007-09-12 2012-02-07 Devicefidelity, Inc. Selectively switching antennas of transaction cards
US20090089377A1 (en) * 2007-09-27 2009-04-02 International Business Machines Corporation System and method for providing dynamic email content
KR20100080822A (ko) 2007-09-28 2010-07-12 엑세리온 악티에볼라그 네트워크 오퍼레이팅 시스템
US20090132556A1 (en) * 2007-11-16 2009-05-21 Nitin Gupta Offline operations for online applications
US8756530B2 (en) * 2008-05-27 2014-06-17 International Business Machines Corporation Generation and synchronization of offline 3D virtual world content
US8572602B1 (en) * 2008-06-05 2013-10-29 Appcelerator, Inc. System and method for synchronization of a web application to a cloud provider
US8572211B2 (en) * 2008-07-09 2013-10-29 Sony Corporation System and method for effectively transmitting content items to electronic devices
US8065617B2 (en) * 2008-08-28 2011-11-22 Microsoft Corporation Discovering alternative user experiences for websites
US8626919B1 (en) 2008-11-07 2014-01-07 Google Inc. Installer-free applications using native code modules and persistent local storage
US9508108B1 (en) * 2008-11-07 2016-11-29 Google Inc. Hardware-accelerated graphics for user interface elements in web applications
US8294723B2 (en) 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US8675000B2 (en) * 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
JP2010140347A (ja) * 2008-12-12 2010-06-24 Canon Inc Webサーバ装置、クライアント装置、その制御方法およびプログラム
US20100153521A1 (en) * 2008-12-15 2010-06-17 Kar-Wing Edward Lor Method and Device for Providing Offline Web Services
TWI384378B (zh) * 2008-12-29 2013-02-01 Ind Tech Res Inst 網頁應用程式執行方法
US8812451B2 (en) 2009-03-11 2014-08-19 Microsoft Corporation Programming model for synchronizing browser caches across devices and web services
US8413139B2 (en) * 2009-03-11 2013-04-02 Microsoft Corporation Programming model for application and data access and synchronization within virtual environments
US9680964B2 (en) * 2009-03-11 2017-06-13 Microsoft Technology Licensing, Llc Programming model for installing and distributing occasionally connected applications
US8725793B2 (en) * 2009-04-03 2014-05-13 Google Inc. Architectural pattern for persistent web application design
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
CN101997853A (zh) * 2009-08-31 2011-03-30 中兴通讯股份有限公司 数据下载方法及终端
US8621046B2 (en) * 2009-12-26 2013-12-31 Intel Corporation Offline advertising services
US20110202909A1 (en) * 2010-02-12 2011-08-18 Microsoft Corporation Tier splitting for occasionally connected distributed applications
US8756617B1 (en) * 2010-05-18 2014-06-17 Google Inc. Schema validation for secure development of browser extensions
US9372885B2 (en) 2010-06-11 2016-06-21 Doat Media Ltd. System and methods thereof for dynamically updating the contents of a folder on a device
US9141702B2 (en) 2010-06-11 2015-09-22 Doat Media Ltd. Method for dynamically displaying a personalized home screen on a device
US9665647B2 (en) 2010-06-11 2017-05-30 Doat Media Ltd. System and method for indexing mobile applications
US9069443B2 (en) 2010-06-11 2015-06-30 Doat Media Ltd. Method for dynamically displaying a personalized home screen on a user device
GB2494598A (en) 2010-06-11 2013-03-13 Doat Media Ltd A system and methods thereof for enhancing a user's search experience
US10713312B2 (en) 2010-06-11 2020-07-14 Doat Media Ltd. System and method for context-launching of applications
US9639611B2 (en) 2010-06-11 2017-05-02 Doat Media Ltd. System and method for providing suitable web addresses to a user device
US9552422B2 (en) 2010-06-11 2017-01-24 Doat Media Ltd. System and method for detecting a search intent
US8838962B2 (en) * 2010-09-24 2014-09-16 Bryant Christopher Lee Securing locally stored Web-based database data
US20150195340A1 (en) * 2010-09-30 2015-07-09 Google Inc. Determining if an Application is Cached
US8700804B1 (en) * 2011-03-16 2014-04-15 EP Visual Design, Inc. Methods and apparatus for managing mobile content
US9858342B2 (en) * 2011-03-28 2018-01-02 Doat Media Ltd. Method and system for searching for applications respective of a connectivity mode of a user device
JP5760716B2 (ja) 2011-03-30 2015-08-12 富士通株式会社 アプリ提供システム、アプリ提供方法、情報処理装置及び情報処理プログラム
JP5686046B2 (ja) 2011-03-31 2015-03-18 富士通株式会社 アプリ提供システム、アプリ提供方法及びアプリ提供プログラム
DE102011006898A1 (de) * 2011-04-06 2012-10-11 Bayerische Motoren Werke Aktiengesellschaft Verfahren zum Betreiben einer Rechnereinheit, Verfahren zum Betreiben eines Applikationsportals, Rechnereinheit, Vorrichtung zum Betreiben eines Applikationsportals und System
US8898251B2 (en) 2011-05-03 2014-11-25 Microsoft Corporation Client calculation of links to network locations of files to upload
CN102779128A (zh) * 2011-05-10 2012-11-14 北京磊友信息科技有限公司 一种移动终端中的html5应用程序离线运行的方法及设备
US9201709B2 (en) 2011-05-20 2015-12-01 Citrix Systems, Inc. Shell integration for an application executing remotely on a server
US8769073B2 (en) 2011-06-29 2014-07-01 International Business Machines Corporation Intelligent offline caching of non-navigated content based on usage metrics
US20130036197A1 (en) * 2011-08-05 2013-02-07 Xtreme Labs Inc. Method and system for a mobile local server
US10082574B2 (en) 2011-08-25 2018-09-25 Intel Corporation System, method and computer program product for human presence detection based on audio
US8554729B2 (en) * 2011-08-31 2013-10-08 Google Inc. System and method for synchronization of actions in the background of an application
US9329851B2 (en) 2011-09-09 2016-05-03 Microsoft Technology Licensing, Llc Browser-based discovery and application switching
US9003019B1 (en) * 2011-09-30 2015-04-07 Emc Corporation Methods and systems for utilization tracking and notification of cloud resources
WO2013054248A1 (en) * 2011-10-12 2013-04-18 International Business Machines Corporation Generating a predictive data structure
US9195779B2 (en) * 2011-10-18 2015-11-24 Verizon Patent And Licensing Inc. Crowd-sourced problem solving
US9363335B2 (en) * 2011-10-30 2016-06-07 Lg Electronics Inc. Method and apparatus that enables a web-based client-server application to be used offline
US9563626B1 (en) * 2011-12-08 2017-02-07 Amazon Technologies, Inc. Offline management of data center resource information
US9092540B2 (en) 2012-02-14 2015-07-28 International Business Machines Corporation Increased interoperability between web-based applications and hardware functions
US20130219383A1 (en) * 2012-02-16 2013-08-22 Israel Hilerio Using an Application Cache to Update Resources of Installed Applications
US9213673B2 (en) * 2012-02-23 2015-12-15 Via Technologies, Inc. Networked applications with client-caching of executable modules
US9582603B1 (en) * 2012-02-27 2017-02-28 Amazon Technologies, Inc. Managing preloading of data on client systems
CN102629200A (zh) * 2012-03-02 2012-08-08 浪潮集团山东通用软件有限公司 一种Web系统可离线使用的处理方法
CN103324517A (zh) * 2012-03-20 2013-09-25 华为终端有限公司 离线应用的生成及调用方法、终端及系统
JP5736056B2 (ja) * 2012-06-22 2015-06-17 グリー株式会社 情報提供装置、情報提供方法及びプログラム
US20130346274A1 (en) * 2012-06-25 2013-12-26 Liquid Holdings Group, Inc. Electronic financial trading platform with real-time data analysis and reporting
US9710247B2 (en) * 2012-06-26 2017-07-18 Microsoft Technology Licensing, Llc Identification of host-compatible downloadable applications
US9043469B2 (en) 2012-06-29 2015-05-26 International Business Machines Corporation Cache control for web application resources
CN103595744B (zh) * 2012-08-16 2018-08-07 腾讯科技(深圳)有限公司 信息管理的方法及客户端
CA2911764C (en) * 2012-08-29 2019-11-26 Huawei Device Co., Ltd. Web application management method and apparatus
EP2784714B1 (en) * 2013-03-28 2021-04-28 Alcatel Lucent Method of preventing access to sensitive data of a computing device
CN103257874A (zh) * 2013-04-24 2013-08-21 深圳市中兴移动通信有限公司 Web应用的离线运行方法和系统
CN104346514A (zh) * 2013-08-09 2015-02-11 聚游互动(北京)科技发展有限公司 支持在线游戏应用离线运行的方法及系统
US9760897B2 (en) * 2013-09-21 2017-09-12 Oracle International Corporation Method and system for defining an offlinable view/controller graph
RU2016116253A (ru) 2013-09-27 2017-11-01 Кодексис, Инк. Автоматизированный скрининг вариантов фермента
CN109872771A (zh) 2013-09-27 2019-06-11 科德克希思公司 基于定向进化的方法、装置和系统
CN104902061A (zh) * 2014-03-03 2015-09-09 联想(北京)有限公司 一种信息处理方法及电子设备
CN104156233B (zh) * 2014-07-21 2016-05-18 小米科技有限责任公司 轻应用离线更新方法、装置及终端
US9672026B2 (en) 2014-07-21 2017-06-06 Xiaomi Inc. Light app offline updating method, device and terminal
RU2608668C2 (ru) * 2014-07-30 2017-01-23 Общество С Ограниченной Ответственностью "Яндекс" Система и способ управления и организации кэша веб-браузера для обеспечения автономного просмотра
US20160191645A1 (en) * 2014-12-30 2016-06-30 Citrix Systems, Inc. Containerizing Web Applications for Managed Execution
RU2632141C2 (ru) 2015-06-30 2017-10-02 Общество С Ограниченной Ответственностью "Яндекс" Способ и компьютерное устройство для динамической индексации и загрузки кодов модулей
CN106331049A (zh) * 2015-07-03 2017-01-11 阿里巴巴集团控股有限公司 缓存资源、更新缓存资源的方法、客户端、服务器及系统
US10417113B1 (en) 2016-03-10 2019-09-17 Amdocs Development Limited System, method, and computer program for web testing and automation offline storage and analysis
US20180077259A1 (en) * 2016-09-09 2018-03-15 Linkedin Corporation Unified data rendering for multiple upstream services
US10817272B2 (en) * 2016-12-12 2020-10-27 Sap Se Generation and usage of language-converted script
US10044836B2 (en) * 2016-12-19 2018-08-07 Palantir Technologies Inc. Conducting investigations under limited connectivity
CN108287839B (zh) * 2017-01-09 2022-01-28 阿里巴巴集团控股有限公司 一种页面加载方法和设备
CN107087018B (zh) * 2017-03-14 2021-03-23 深圳市金立通信设备有限公司 一种运行Web应用程序的方法及终端
CN109144599B (zh) * 2017-06-27 2021-09-24 上海木鸡网络科技有限公司 函数加载方法及装置、计算机可读存储介质、终端
CN107786665A (zh) * 2017-11-06 2018-03-09 成都宏亚佳新科技有限公司 一种适应各种环境的数据传输的方法及系统
CN109451064B (zh) * 2018-12-26 2021-08-17 深圳左邻永佳科技有限公司 web应用的离线实现方法、装置、计算机设备和存储介质
US11016784B2 (en) 2019-03-08 2021-05-25 Palantir Technologies Inc. Systems and methods for automated deployment and adaptation of configuration files at computing devices
WO2020242495A1 (en) * 2019-05-31 2020-12-03 Hewlett-Packard Development Company, L.P. Remapping elements based on a transition of device states
US11157242B2 (en) * 2019-09-30 2021-10-26 Salesforce.Com, Inc. Systems, methods, and apparatuses for local web components development within a cloud based computing environment
JP7143866B2 (ja) * 2020-03-25 2022-09-29 カシオ計算機株式会社 キャッシュ管理プログラム、サーバ、キャッシュ管理方法、および情報処理装置

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7236173B2 (en) * 1996-10-30 2007-06-26 Autodesk, Inc. Method and apparatus for providing access to maps on a thin client
US10636084B2 (en) * 1996-10-31 2020-04-28 Citicorp Credit Services, Inc. (Usa) Methods and systems for implementing on-line financial institution services via a single platform
US6594682B2 (en) * 1997-10-28 2003-07-15 Microsoft Corporation Client-side system for scheduling delivery of web content and locally managing the web content
US6044398A (en) * 1997-11-21 2000-03-28 International Business Machines Corporation Virtual dynamic browsing system and method for automated web server and testing
US5951636A (en) * 1997-12-04 1999-09-14 International Business Machines Corp. Accessing a post office system from a client computer using applets
US6272593B1 (en) * 1998-04-10 2001-08-07 Microsoft Corporation Dynamic network cache directories
US6757705B1 (en) 1998-08-14 2004-06-29 Microsoft Corporation Method and system for client-side caching
US6507867B1 (en) * 1998-12-22 2003-01-14 International Business Machines Corporation Constructing, downloading, and accessing page bundles on a portable client having intermittent network connectivity
GB2371902B (en) * 1999-09-10 2004-11-17 Avantgo Inc System, method, and computer program product for interactive interfacing with mobile devices
US7305475B2 (en) * 1999-10-12 2007-12-04 Webmd Health System and method for enabling a client application to operate offline from a server
JP3605343B2 (ja) * 2000-03-31 2004-12-22 デジタルア−ツ株式会社 インターネット閲覧制御方法、その方法を実施するプログラムを記録した媒体およびインターネット閲覧制御装置
US6854016B1 (en) * 2000-06-19 2005-02-08 International Business Machines Corporation System and method for a web based trust model governing delivery of services and programs
US6990513B2 (en) * 2000-06-22 2006-01-24 Microsoft Corporation Distributed computing services platform
US20030182414A1 (en) * 2003-05-13 2003-09-25 O'neill Patrick J. System and method for updating and distributing information
US7409685B2 (en) * 2002-04-12 2008-08-05 Hewlett-Packard Development Company, L.P. Initialization and update of software and/or firmware in electronic devices
CA2328066A1 (en) * 2000-12-15 2002-06-15 Philippe Lasnier Internet shopping system and method
US7143419B2 (en) * 2001-06-06 2006-11-28 Sap Ag Device for running offline applications and synchronizing with a central computer system
US20030056206A1 (en) * 2001-09-17 2003-03-20 Engo Frank Joseph Cross-barrier programming language
US7275105B2 (en) * 2002-01-16 2007-09-25 Laszlo Systems, Inc. Enabling online and offline operation
AU2003239326A1 (en) * 2002-05-01 2003-11-17 Bea Systems, Inc. Enterprise application platform
US6941310B2 (en) * 2002-07-17 2005-09-06 Oracle International Corp. System and method for caching data for a mobile application
US6950823B2 (en) * 2002-12-23 2005-09-27 International Business Machines Corporation Transparent edge-of-network data cache
US7873353B2 (en) 2003-09-30 2011-01-18 Ianywhere Solutions, Inc. Method and system for accessing applications and data, and for tracking of key indicators on mobile handheld devices
US7441011B2 (en) 2003-10-23 2008-10-21 Microsoft Corporation Truth on client persistent caching
US7272782B2 (en) * 2003-12-19 2007-09-18 Backweb Technologies, Inc. System and method for providing offline web application, page, and form access in a networked environment
US20050197819A1 (en) 2004-03-02 2005-09-08 Hopkins James B. System and method for running web applications locally
US7779387B2 (en) 2004-04-15 2010-08-17 Microsoft Corporation Offline source code control
US7685258B2 (en) * 2004-05-21 2010-03-23 Bea Systems, Inc. Disconnectible applications
US9083765B2 (en) * 2004-07-02 2015-07-14 Oracle International Corporation Systems and methods of offline processing
US8832595B2 (en) * 2004-08-06 2014-09-09 Nokia Corporation Mobile communications terminal and method
US7475089B1 (en) * 2004-09-02 2009-01-06 Sprint Spectrum L.P. Enhanced portal server system and method
US7788352B2 (en) * 2005-07-14 2010-08-31 Yahoo! Inc. System and method for servicing a user device
US8601475B2 (en) * 2005-08-02 2013-12-03 Aol Inc. Download and upload of email messages using control commands in a client/server web application

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015010104A1 (en) * 2013-07-19 2015-01-22 Opanga Networks, Inc. Content source discovery
US9906595B2 (en) 2013-07-19 2018-02-27 Opanga Networks, Inc. Content source discovery
KR20160069445A (ko) * 2014-12-08 2016-06-16 에스케이플래닛 주식회사 웹 어플리케이션 관리를 위한 사용자 장치 및 그 방법
JP2019517042A (ja) * 2016-04-19 2019-06-20 ドロップボックス, インコーポレイテッド オフラインでのハイブリッドアプリケーションへのアクセスの提供
US10740087B2 (en) 2016-04-19 2020-08-11 Dropbox, Inc. Providing access to a hybrid application offline
US11200044B2 (en) 2016-04-19 2021-12-14 Dropbox, Inc. Providing access to a hybrid application offline
US11740891B2 (en) 2016-04-19 2023-08-29 Dropbox, Inc. Providing access to a hybrid application offline
KR20170027331A (ko) * 2017-02-28 2017-03-09 엔에이치엔엔터테인먼트 주식회사 모바일 환경에서의 리소스 다운로드 방법 및 시스템
KR20200060741A (ko) * 2017-10-26 2020-06-01 마스터카드 인터내셔날, 인코포레이티드 오프라인 동작에서 온라인 사용자 인증 프로세스를 에뮬레이션하기 위한 장치 및 방법

Also Published As

Publication number Publication date
JP2010508581A (ja) 2010-03-18
CN101529415A (zh) 2009-09-09
TWI449372B (zh) 2014-08-11
US7814234B2 (en) 2010-10-12
TW200826551A (en) 2008-06-16
BRPI0716520A2 (pt) 2013-09-24
CA2662553C (en) 2016-11-08
CN101529415B (zh) 2012-08-08
CA2662553A1 (en) 2008-05-08
JP4698756B2 (ja) 2011-06-08
AU2007313956A1 (en) 2008-05-08
US20080104195A1 (en) 2008-05-01
BRPI0716520A8 (pt) 2017-01-17
RU2453911C2 (ru) 2012-06-20
AU2007313956B2 (en) 2012-01-19
MX2009003549A (es) 2009-05-12
AU2007313956A8 (en) 2009-04-23
RU2009116454A (ru) 2010-11-10
WO2008054951A1 (en) 2008-05-08
KR101433981B1 (ko) 2014-08-26

Similar Documents

Publication Publication Date Title
KR101433981B1 (ko) 웹 기반 애플리케이션의 오프라인 실행
US10015226B2 (en) Methods for making AJAX web applications bookmarkable and crawlable and devices thereof
CA2457511C (en) Method, apparatus, and user interface for managing electronic mail and alert messages
US8065617B2 (en) Discovering alternative user experiences for websites
US20080086477A1 (en) Locally storing web-based database data
US20190222667A1 (en) Speculative prefetch of resources across page loads
US20190303870A1 (en) Service for receiving obsolete web page copies
US20130110912A1 (en) System and method for providing anonymous internet browsing
US7937441B2 (en) Data-control device and method of controlling same
CN117411847B (zh) 一种邮件外链图片转存方法、系统和介质
JP2008250586A (ja) 添付url送受信方法、システム及びプログラム
JP2016091449A (ja) ローカルストレージ同期方法、ローカルストレージ同期装置およびローカルストレージ同期プログラム
CN117112940A (zh) 一种离线数据显示方法、装置、电子设备及可读存储介质
CN117714541A (zh) 基于请求链路拦截的iOS应用网络数据缓存方法、系统
JP4950389B2 (ja) ネットワークベースのアプリケーション、それを処理するためのアーキテクチャ及びシステム、ならびにそれを実行するための方法
JPWO2009001895A1 (ja) ブラウザの制御方法、プログラム、コンピュータ使用可能な記録媒体、クライアント装置、およびネットワークシステム

Legal Events

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

Payment date: 20170719

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180718

Year of fee payment: 5