KR101005901B1 - 버전을 업데이트 및 롤링백 하는 방법 및 시스템 - Google Patents

버전을 업데이트 및 롤링백 하는 방법 및 시스템 Download PDF

Info

Publication number
KR101005901B1
KR101005901B1 KR1020047009170A KR20047009170A KR101005901B1 KR 101005901 B1 KR101005901 B1 KR 101005901B1 KR 1020047009170 A KR1020047009170 A KR 1020047009170A KR 20047009170 A KR20047009170 A KR 20047009170A KR 101005901 B1 KR101005901 B1 KR 101005901B1
Authority
KR
South Korea
Prior art keywords
version
application
client
list
resources
Prior art date
Application number
KR1020047009170A
Other languages
English (en)
Other versions
KR20040096500A (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 KR20040096500A publication Critical patent/KR20040096500A/ko
Application granted granted Critical
Publication of KR101005901B1 publication Critical patent/KR101005901B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0896Bandwidth or capacity management, i.e. automatically increasing or decreasing capacities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • 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
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • 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/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/289Intermediate processing functionally located close to the data consumer application, e.g. in same machine, in same home or in same sub-network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/53Network services using third party service providers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/62Establishing a time schedule for servicing the requests
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/101Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measures for digital rights management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/564Enhancement of application control based on intercepted application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

애플리케이션의 버전을 변경하는 방법 및 시스템을 제공한다. 애플리케이션의 버전은 클라이언트에게 투명하게 갱신되거나 롤링백 될 수 있다. 현 버전의 애플리케이션 내의 리소스 리스트가 생성되어(405), 신 버전의 리소스 리스트와 비교된다(410). 리소스가 현 버전에 포함되어 있지 않지만 신 버전에는 포함되어 있는 경우, 신 버전에 리소스를 포함한다는 표시가 부기된다. 여분의 리소스가 현 버전에 있으나 신 버전에 없는 경우, 리소스를 삭제하여 신 버전에 포함되지 않도록 표시가 부기된다(425). 버전을 변경하는데 필요한 리소스를 요구하기 위해 이러한 표시가 클라이언트에 의해 사용되는 퍼지 리스트에서 생성될 수 있다. 버전을 변경하는데 클라이언트에게 요구되는 상호작용은 전혀 없다.

Description

버전을 업데이트 및 롤링백 하는 방법 및 시스템{METHOD AND SYSTEM FOR UPGRADING AND ROLLING BACK VERSIONS}
본 출원은 2001년 12월 12일자로 출원된 미국특허 60/341,079 및 2002년 12월 11일자로 출원된 미국출원(10/317,852)에 대한 우선권을 주장하여, 미국을 제외한 전 국가를 지정하여, 2002년 12월 12일 미국 국내기업 Valve LLC의 이름으로 PCT 국제출원이 되어 있다.
본 발명은 애플리케이션의 버전을 업데이트 및 롤링백 하는 방법 및 시스템에 관한 것이다.
종래 사용자가 소프트웨어 버전을 변경하고자 할 때, 가게에 가서 새로운 소프트웨어를 구입하여 컴퓨터에 신 버전을 설치하여야 했다.
현재, 일부 소프트웨어는 업그레이드를 포함하여 인터넷을 통해 배포되고 있다. 소프트웨어가 용량이 작고 실행 가능하게 패키징 되어 있다면, 소트웨어 판매자는 인터넷을 통해 소프트웨어를 배포하는 것을 선택할 수 있다. 이런 모델을 사용하여, 사용자는 판매자의 사이트에 들어가 소프웨어 값을 지불하고 소프트웨어를 다운 받을 수 있다.
이런 모델은 소프트웨어가 많은 디스크 공간을 필요로 하거나 사용자가 비교 적 낮은 대역폭의 인터넷에 연결되어 있는 경우 문제가 있다. 예를 들어, 28.8 Kbs의 인터넷 접속 속도를 갖는 컴퓨터를 이용하여 650 MB 용량의 소프트웨어 CD를 다운 받으려면 50 시간이나 걸린다. 512 Kbs 접속 속도를 이용하더라도, 접속이 높게 유지되고 최고 대역폭으로 전송된다고 가정할 때 650 MB의 소프트웨어를 다운 받는데 거의 3시간이 걸린다. 또한, 다른 문제는 소프트웨어의 이전 버전으로 롤링백하는 것이 매우 어렵다는 것이다.
따라서 애플리케이션을 효과적으로 업그레이드(upgrade) 하거나 롤링백(rolling back) 할 수 있는 방법이 필요하다.
본 발명에 따른 방법 및 시스템은 애플리케이션의 버전을 클라이언트 상에서 투명하게(transparently) 변경하는 것에 관한 것이다. 통상적으로, 애플리케이션의 버전은 클라이언트에 대해 업데이트되거나 롤링백 될 수 있다. 현 버전의 애플리케이션 내의 리소스 리스트가 생성되어, 신 버전의 리소스 리스트와 비교된다. 리소스가 현 버전에 포함되어 있지 않지만 신 버전에는 포함되어 있는 경우, 신 버전에 리소스를 포함한다는 표시가 부기된다. 여분의 리소스가 현 버전에 있으나 신 버전에 없는 경우, 리소스를 삭제(purge)하여 신 버전에 포함되지 않도록 표시가 부기된다. 이러한 표시들은 퍼지 리스트(purge list) 내에 생성될 수 있는데, 퍼지 리스트는 버전을 변경하는데 필요한 리소스들을 요청하기 위해서 클라이언트에 의해 이용된다. 버전을 변경하는데 클라이언트에게 요구되는 상호 작용은 전혀 없다.
본 발명의 특징에 의하면, 클라이언트 상에서 현 버전에서 신 버전으로의 변경을 언제 시작할 것인지를 결정한다. 상기 결정이 되면, 현 버전 및 신 버전에 속 하는 리소스가 식별된다. 그 리소스에 의거하여, 클라이언트 상에서 신 버전에 필요한 리소스에 대한 결정이 수행된다. 다음, 신 버전에 필요한 리소스가 클라이언트 상에서 구성된다.
본 발명의 다른 특징에 의하면, 신 버전으로 전환(switching over)되기 이전에 신 버전의 리소스들이 클라이언트에게 제공될 수 있다. 예를 들어, 클라이언트가 하나의 세션(session) 동안에 모든 리소스를 획득하도록 요구하는 대신에, 리소스들은 다수의 세션들을 통하여 클라이언트에게 제공될 수 있다.
본 발명의 다른 특징에 의하면, 클라이언트는 필요한 리소스를 공급 받는다. 소스가 서버 상에 위치할 때, 클라이언트는 그 서버로부터 상기 리소스를 다운 받아 국부적으로 저장하고, 리소스가 국부적으로 저장되어 있음을 나타내도록 데이터 구조를 변경하여, 리소스가 클라이언트에 제공된다.
본 발명의 다른 특징에 의하면, 클라이언트는 클라이언트 상에 국부적으로 저장된 신 버전에 필요한 리소스 서브세트로 신 버전을 실행할 수 있다.
본 발명의 다른 특징에 의하면, 현 버전에는 없는 신 버전에 필요한 리소스를 식별하는 퍼지 리스트(purge list)가 생성된다. 현 버전에서 추가 및 제거(delete)되는 리소스 리스트가 퍼지 리스트에 포함될 수 있다.
본 발명의 다른 특징에 의하면, 퍼지 리스트가 클라이언트에 공급된다. 클라이언트는 리스트를 이용하여 리소스를 요청한다.
본 발명의 다른 특징에 의하면, 버전은 클라이언트의 백그라운드에서 변경될 수 있다.
도 1 내지 도 3은 본 발명이 실시되는 예시적인 환경 내의 구성요소를 나타낸다.
도 4는 애플리케이션의 버전 변경 과정을 나타낸다.
도 5는 버전 업그레이드 시 사용되는 퍼지 리스트를 생성하는 과정을 나타낸다.
도 6은 버전으로부터 롤링백될 때 사용되는 퍼지 리스트를 생성하는 과정을 나타낸다.
도 7은 근거리 및 원거리 통신망으로 배포될 수 있는 파일 시스템을 투명하게 액세스하는 메커니즘의 과정을 도시한다.
본 발명의 실시예에 대한 다음의 상세한 설명에서, 첨부된 도면에 도면부호가 부기되어 있는데, 도면은 여기서의 일부분을 형성하고, 도시를 통해 그리고 본 발명이 실시될 수 있는 특정의 실시예를 통해 나타난다.
"리소스(resource)" 라는 용어는 애플리케이션이 실행을 위해 사용하는 데이터를 말한다. 예를 들어, 리소스는 파일의 특정 부분이 될 수 있다. 파일은 데이터 파일, 다이나믹 링크 라이브러리, 실행 프로그램, 컴포넌트 등이 될 수 있다.
본 실시예는 당업자가 본 발명을 실시하는데 충분하도록 상세히 기재되어 있으며, 본 발명의 기술적 사상을 벗어나지 않는 범위에서 다른 실시예가 가능하고 다른 변경이 가해질 수 있다는 것을 알아야 한다. 따라서 다음의 상세한 설명은 한 정적인 것이 아니며, 본 발명의 범위는 첨부된 청구범위에 의해서 결정된다.
도 4 내지 도 7은 본 발명에 따라 버전닝 및 롤링백 하는 과정을 도시하고 있다. 일반적으로, 애플리케이션의 버전을 변경하는 방법 및 시스템은 사용자에게 보이지 않게 실행될 수 있다. 다른 버전에서 사용되는 리소스는 다른 버전으로의 전환(switch) 전에 클라이언트에 공급될 수 있다. 이것은 클라이언트에 이용될 수 있는 리소스의 효과적인 사용을 포함하여 많은 이점을 제공한다. 예를 들어, 다른 버전에서 사용된 큰 리소스가 피크가 아닌 시간(non-peak time) 동안 다운로드 될 수 있어서 클라이언트의 성능에 영향을 주지 않는다.
도 4를 보면, 시작 블록 다음에 프로세스가 블록(405)으로 진행한다. 여기서, 애플리케이션의 특정 버전에 속하는 리소스가 식별되어 리스트에 기입된다(이하, 이 버전을 "V1" 이라고 한다).
판단 블록(410)으로 진행하여, 애플리케이션의 버전 변경이 있는지 여부를 판단한다. 버전 변경은 현 버전에 대한 약간의 변경이거나 애플리케이션의 실질적인 변경을 포함할 수 있다. 버전 변경은 신 버전으로의 업그레이드이거나 애플리케이션의 이전 버전으로의 롤링백일 수도 있다. 다른 버전이 없다면, 프로세스는 종료되고 다른 동작의 처리를 위해 복귀한다.
애플리케이션의 버전 변경이 있는 경우, 프로세스는 블록(415)으로 진행한다. 여기서, 새로운 버전의 리소스가 식별되어 리스트에 기입된다(이하, 이 버전을 "V2" 라고 한다).
프로세스는 블록(420)으로 진행하여, 버전 변경이 업그레이드인지 롤링백인지를 판단한다. 버전 변경이 업그레이드이면, 프로세스는 블록(425)으로 진행한다. 블록 425에서는, 업그레이드 프로세스가 V1의 모든 리소스들에 대해 수행되어(step through), 버전 업그레이드 시 사용되는 퍼지 리스트가 생성된다(도 5 및 관련 내용 참조).
버전 변경이 롤링백인 경우, 프로세스는 블록(430)으로 진행한다. 블록 430에서는, 롤링백 프로세스가 V2의 모든 리소스들에 대해 수행되어, 다른 버전으로부터의 롤링백 시 사용되는 퍼지 리스트가 생성된다(도 6 및 관련 내용 참조).
도 5는 본 발명의 특징에 따라 버전 업그레이드 시 사용되는 퍼지 리스트를 생성하는 과정을 도시한 것이다. 시작 블록 다음에, 프로세스는 블록(505)으로 진행한다. 여기서, V1과 관련된 파일 리스트로부터 리소스가 선택된다. 본 발명의 실시예에 따라, 리소스는 리스트에 기록되는 순서로 선택된다. 그러나 임의의 순서로 선택될 수도 있다.
판단 블록(510)으로 진행하여, 리소스가 V2에서 발견되는지를 판단한다. 리소스가 V1에 있으나 V2에는 없으면, 프로세스는 블록(520)으로 진행한다. 여기서, 신 버전으로 업그레이드 될 때 리소스가 삭제(purge)되어야 한다는 것을 가리키는 표시를 V1에서 V2로의 퍼지 리스트에 기록한다.
리소스가 V1 및 V2에 모두 존재하면, 프로세스는 판단 블록(515)으로 진행하여, V1의 리소스와 V2의 리소스를 비교한다. 이 비교는 디지털 서명 또는 다른 비교방식을 통해 바이트 대 바이트로 수행된다.
리소스가 다르면, 프로세스는 블록(520)으로 진행한다. 여기서, V1에서 V2로 업그레이드 될 때 리소스가 삭제되어야 한다는 것을 가리키는 표시를 V1에서 V2로 의 퍼지 리스트에 기록한다. 다음, 프로세스는 판단 블록(525)으로 진행한다.
판단 블록(525)에서는, V1에 다른 리소스가 있는지를 판단한다. V1에 다른 리소스가 있으면, 프로세스는 블록(530)으로 진행하여 다음 리소스가 선택된다. 다음, 프로세스는 판단 블록(510)으로 진행하여 상기 프로세스를 반복한다.
V1에 다른 리소스가 없으면 프로세스는 복귀 블록으로 진행하여, 다른 동작을 처리하게 된다.
버전의 일부분인 리소스가 퍼지 리스트와 함께 또는 퍼지 리스트로부터 분리되어 저장될 수 있다. 이 프로세스는 몇몇의 버전을 위해 반복될 수 있고, 또한 이전 버전으로의 롤링백을 위해 다른 순서로 수행될 수 있다.
도 6은 본 발명의 특징에 따라 버전 롤링백 시 사용되는 퍼지 리스트를 생성하는 과정을 도시한 것이다. 도 6은 이 프로세스가 V2에서 V1으로 진행한다는 것을제외하고 도 5와 유사하다. 이전 버전으로의 롤링백은 애플리케이션의 이전 버전과 관련된 리소스를 복원하는 것을 의미한다. 새로운 버전이 문제를 일으키거나 그렇지 않더라도 구 버전보다 좋지 않다고 하면, 소프웨어 개발자는 애플리케이션의 이전 버전이 사용자에게 배포되기를 원할 수 있다. 도 6은 본 발명의 실시예에 따라, 롤링백 리스트를 생성하는 과정을 도시한다.
롤링백 과정은 업그레이드 리스트가 생성되는 방법과 유사하게 두 버전 사이에서 롤링백 리스트를 생성할 수 있다. 예를 들어, 프로세스는 V2의 각 리소스에 대해 수행될 수 있다. 리소스가 V1에 존재하지 않으면, V2에서 V1으로 롤링백 될 때 리소스가 삭제되어야 한다는 표시를 롤링백 리스트에 기입한다. V1 및 V2 모두에 리소스가 존재하면, 프로세스는 V1의 리소스와 V2의 리소스를 비교한다. 리소스가 동일하지 않으면, 프로세스는 V1으로 롤링백될 때 리소스가 삭제되어야 한다는 표시를 롤링백 리스트에 기입한다. 리소스가 V1에 있으나 V2에 없으면, 롤링백 리스트에 어떤 표시도 기입할 필요가 없다.
신 버전이 추가될 때마다, 업그레이드(및/또는 롤링백)에 사용되는 퍼지 리스트가 생성되어 현재 사용 가능하거나 지원되는 모든 버전을 위해 저장된다. 이 리스트는 후술하는 것처럼 어느 버전에서 다른 버전으로의 업그레이드(또는 롤링백)를 가능하게 한다.
클라이언트가 먼저 버전 변경된 컨텐츠를 요청하면, 클라이언트는 그 컨텐츠의 버전을 가지고 있지 않은 것이다. 클라이언트가 컨텐츠를 요청할 때 클라이언트에 최초로 전송되는 것 중의 하나는 그 컨텐츠의 버전과 관련된 리소스 리스트이다. 클라이언트가 그 컨텐츠의 다른 버전을 가지고 있지 않으면, 퍼지 리스트는 전송되거나 전송되지 않을 수 있으며 필요한 것이 아니다.
도 7은 본 발명의 특징에 따라 애플리케이션 버전을 얻기 위해 클라이언트에서의 과정을 나타낸 것이다. 클라이언트는 컨텐츠 서버로부터 가장 최근의 버전 넘버를 요청함으로써 가장 최근 버전의 컨텐츠를 가지고 있는지를 체크할 수 있다. 클라이언트가 가장 최근의 버전을 가지고 있다면, 컨텐츠와 관련된 애플리케이션의 수행을 시작할 수 있다. 클라이언트가 가장 최근의 버전을 가지고 있지 않다면, 퍼지 리스트와 함께 가장 최근의 버전 내의 리소스 리스트를 요청할 수 있다. 클라이언트는 신 버전으로의 전환이 수행될 때까지 현 버전을 계속해서 실행할 수 있다. 이 전환은 신 버전과 관련된 모든 리소스가 클라이언트에 공급되기 전에 일어날 수 있다. 컨텐츠 서버는 퍼지 리스트와 함께 가장 최근의 버전 내의 리소스 리스트를 전송한다(블록 705).
다음 프로세스는 블록(710)으로 진행한다. 여기서, 클라이언트는 업데이트 리스트에서 발견된 각 리소스를 제거할 수 있다. 클라이언트가 리소스에 대한 요청을 수신하면, 클라이언트 컴퓨터에 의해 국부적으로 액세스되는 캐쉬 또는 파일에 리소스가 포함되어 있는지 체크한다. 리소스가 국부적으로 발견되지 않으면, 클라이언트는 가장 최근 버전 내의 리소스 리스트를 이용하여 컨텐츠 서버로부터 리소스를 요청할 수 있다. 따라서 V1에서 V2로 업그레이드될 때 V1에 없는 리소스가 V2에 존재하면, 클라이언트가 리소스 액세스의 요청을 수신할 때 또는 그 전에 리소스가 요청될 것이다.
이전 버전으로 롤링백하기 위해, 클라이언트는 상기 언급한 것과 유사한 단계를 따른다. 특히, 클라이언트는 퍼지 리스트와 함께 원하는 이전 버전과 관련된 리소스 리스트를 요청할 수 있다. 다음, 클라이언트는 퍼지 리스트를 조사하여 식별된 리소스를 제거한다. 클라이언트가 리소스에 대한 요청을 수신하는 경우, 먼저 리소스가 클라이언트 컴퓨터 상에 국부적으로 위치되어 있는지 판단한다. 리소스가 국부적으로 위치되어 있지 않으면, 클라이언트는 컨텐츠 서버로부터 리소스를 요청할 수 있다. 그 요청에서, 클라이언트는 요청된 리소스의 버전을 식별할 수 있다.
리소스를 삭제할 때, 클라이언트는 실제로 리소스를 제거할 수도 있고 그렇지 않을 수도 있다. 예를 들어, 클라이언트는 쉽게 액세스될 수 있는 다른 위치에 리소스를 저장하여 리소스의 버전이 다시 요청되면 클라이언트는 컨텐츠 서버로부터 리소스를 액세스하지 않아도 신속히 리소스를 액세스할 수 있다.
클라이언트는 저장장치에 국부적으로 컨텐츠를 저장 또는 캐쉬하는데 저장용량이 선택 가능하도록 구성할 수 있다. 예를 들어, 저장용량은 하드 드라이브에서 사용 가능한 공간의 백분율이거나 고정된 바이트수가 될 수 있다. 컨텐츠에 대한 요청에 의해 클라이언트가 저장용량을 초과하는 경우, 클라이언트는 LRU(least recently used) 알고리즘이나 다른 컨텐츠 대체 기법을 사용하여, 국부적으로 저장된 컨텐츠들 중 어느 것이 제거될 것인지를 결정하는데, 이는 요청된 컨텐츠에 대한 저장공간을 만들기 위함이다.
클라이언트는 백그라운드에서 버전을 변경할 수 있다. 즉, 대역폭이 다운로드 하는데 사용 가능할 때 새로운 리소스 또는 신 버전의 애플리케이션에서 변경된 리소스를 다운로드 할 수 있다. 클라이언트가 버전을 변경하는데 필요한 리소스 전부 또는 서브세트를 다운로드할 때, 신 버전으로 "전환(switch)"될 수 있다. "전환"은 컨텐츠 제공자와 같은 제 3자에 의해 개시될 수 있다. 클라이언트 컴퓨터의 캐쉬는 분할되어 신 버전과 관련된 리소스가 캐쉬의 분할영역에 위치된다. 분할은 논리적이거나 물리적이다. 즉, 어느 한 분할영역의 리소스는 물리적으로 다른 분할영역의 리소스 다음에 있거나 그 리소스가 산재되어 있는 반면 논리적으로 분리된 영역에 있다. 버전 간의 전환에서, 클라이언트는 단순히 클라이언트가 어느 버전의 애플리케이션을 실행할 것인지를 가리키는 필드를 업데이트 할 수 있다.
소프트웨어 판매자는 하나 이상의 클라이언트가 백그라운드에서 신 버전의 애플리케이션을 다운로드하도록 할 수 있다. 선택된 시간에, 소프트웨어 판매자는 버전 간 전환이 일어나도록 할 수 있다. 이러한 버전 변경 방법은 하나 이상의 클라이언트 업데이트 시 서버에 의해 사용되는 대역폭을 더욱 최적으로 그리고 비용 효과적으로 스케쥴링할 수 있게 한다.
버전의 특정 리소스는 버전 제어에 의해 미취급 상태로 남아 있을 수 있다. 예를 들어, 게임을 위한 키보드 매핑과 같은 컨피규레이션(configuration) 정보를 포함하는 리소스는 신 버전이 배급될 때 덮어쓰기되어서는 안된다. 그러한 리소스는 컨피규레이션 파일로서 업그레이드 리스트에서 지정될 수 있다. 그렇게 지정된 경우, 그러한 리소스가 클라이언트 컴퓨터에 존재하지 않으면, 버전에 포함될 수 있는 디폴트 컨피규레이션 파일로 업데이트 될 수 있다. 그러한 리소스가 클라이언트 컴퓨터에 존재하는 경우, 업그레이드 리스트는 대체되어서는 안된다는 것을 명시할 수 있다. 대안으로, 업그레이드 리스트는 컨피규레이션 파일을 업데이트하는데 실행되어야 하는 특정 프로세스를 명시할 수 있다. 예를 들어, 프로세스는 신 버전과 호환될 수 있도록 컨피규레이션 파일을 변경하는 동안 구 컨피규레이션 파일에 포함된 데이터를 유지할 수 있다.
본 발명의 실시예에서, 클라이언트는 컨피규레이션 파일과 같은 파일을 변경하고 그 파일이 서버로 재전송되도록 한다. 이렇게 하여 게임 또는 키보드 매핑에서의 위치와 같은 상태 정보를 저장하고, 따라서 사용자는 플로피 디스크 등 컴퓨터 판독 매체로부터의 상태 정보를 개별적으로 제공하지 않고도 게임에서의 세팅 또는 위치를 검색할 수 있도록 서버를 액세스할 수 있는 다른 컴퓨터를 사용할 수 있다.
권한없는 액세스를 방지하기 위해 버전닝 및 롤링백과 관련된 퍼지 리스트, 데이터를 암호화할 수 있다. 많은 암호화 기법이 사용될 수 있다. 암호화에 대한 상세한 언급에 대해서는 암호화 및 해독 부분을 참조한다.
다음 프로세스는 블록(715)으로 이동하여 프로세스는 다른 동작 처리를 위해 복귀한다.
동작 환경
도 1 내지 도 3은 본 발명이 실시되는 예시적 환경 내의 구성요소를 도시한다. 본 발명의 실시를 위해 모든 구성요소가 필요한 것은 아니며, 본 발명의 기술적 사상의 범위를 벗어나지 않고 구성요소의 배열 및 종류가 변경될 수 있다.
도 1은 복수의 근거리통신망(LAN)(120)과 라우터(110)에 상호 연결된 원거리통신망(WAN)(130)을 도시한다. 라우터(110)는 통신망에서 메시지 전달을 촉진하는 매개 장치이다. 가능한 연결 메쉬를 통해 많은 컴퓨터를 연결하는 단일 네트워크 상에서, 라우터는 전송된 메시지를 수신하고 그것을 사용 가능한 루트를 통해 정확한 목적지로 포워딩 한다. LAN(다른 구조 및 프로토콜에 따른 것 포함)의 상호연결 세트 상에서, 라우터는 LAN 간의 링크로서 동작하여, 메시지가 한 곳에서 다른 곳으로 전송될 수 있도록 한다. LAN 내의 통신링크는 꼬임쌍(twisted pair), 광섬유 또는 동축 케이블을 포함하고, 네트워크간의 통신링크는 아날로그 전화선, T1, T2, T3, T4를 포함하는 전체 또는 부분적 전용 디지털선, 종합정보통신망(ISDN), 가입자 회선(DSL), 무선링크 또는 다른 통신링크를 사용할 수 있다. 또한, 원격 컴퓨터(140) 등의 컴퓨터, 다른 관련 전자장치가 원격에서 모뎀 및 임시 전화선을 통해 LAN(120) 또는 WAN(130)에 연결될 수 있다. 도 1의 WAN, LAN 및 라우터의 개수는 본 발명의 기술적 범위를 벗어나지 않고 임의로 증가되거나 감소될 수 있다.
이처럼, 인터넷은 방대한 수의 상호연결 네트워크, 컴퓨터 및 라우터로 형성된다. 일반적으로, "인터넷" 이란 용어는 상호 통신을 위해 한 쌍의 프로토콜, 즉 전송제어 프로토콜/인터넷 프로토콜(TCP/IP)을 사용하는 네트워크, 게이트웨이, 라우터 및 컴퓨터의 전세계적 집합체를 의미한다. 인터넷의 중심에는 수 천개의 상업용, 정부, 교육용 및 다른 용도의 컴퓨터 시스템을 포함하는 메인 노드 또는 호스트 컴퓨터가 데이터 및 메시지를 전송하고, 이들 사이에는 고속 데이터 통신선인 백본(backbone)이 있다. 본 발명의 실시예는 본 발명의 기술적 범위를 벗어나지 않고 인터넷 상에서 실시될 수 있다.
상기 통신링크로 정보를 전송하는데 사용되는 매체는 컴퓨터 판독 매체 즉, 통신매체의 한 종류이다. 일반적으로, 컴퓨터 판독 매체는 컴퓨터 저장 매체, 통신 매체 및 그 결합체가 될 수 있다.
통신매체는 컴퓨터 판독 명령어, 데이터 구조, 프로그램 모듈 또는 다른 데이터를 반송파 또는 다른 전송 매커니즘과 같은 변조된 데이터 신호로 구체화하고, 정보 전달 매체를 포함한다.
"변조된 데이터 신호" 란 정보를 신호로 인코딩하는 방식으로 변경되거나 설정된 하나 이상의 특성을 갖는 신호를 의미한다. 예를 들어, 통신매체는 꼬임쌍, 동축 케이블, 광섬유, 웨이브 가이드(wave guide) 등의 유선 매체 및 음향, RF, 적 외선 등의 무선 매체를 포함한다.
최근 인터넷은 전세계적으로 위치하고 있는 컴퓨터를 연결하는 능력에 의해 폭발적으로 성장하고 있다. 인터넷이 성장하면서, 그것은 월드와이드웹(WWW)을 갖는다. 일반적으로, WWW는 전세계적으로 HTTP(hypertext transport protocol) 서버 상에 있는 상호 링크된 하이퍼텍스트 문서의 총체이다. WWW 상의 문서를 페이지 또는 웹 페이지라고 부르며, HTML(Hypertext Markup Language) 또는 다른 마크업 언어로 작성되어, URL(Uniform Resource Locator)에 의해 식별된다. URL은 특정 머신 및 경로이름을 특정하는데, 그 경로이름을 통해 파일이 액세스될 수 있고, 서버로부터 HTTP를 사용하는 종단 사용자에게 전송될 수 있다. HTML 문서에 들어가는 태그라고 불리는 코드는 문서 내의 특정 단어 및 이미지를 URL에 연관시켜서 사용자가 키 입력 또는 마우스 클릭을 통해 다른 파일(이것은 문자 그대로 세계의 중간에 있음)을 액세스할 수 있다. 이 파일은 자바 애플릿, ActiveX 제어, 사용자가 활성화를 위해 실행하는 다른 임베디드 소프트웨어 프로그램을 비롯하여 텍스트(다양한 폰트와 스타일을 갖음), 그래픽 이미지, 동영상 파일, 미디어 클립, 사운드를 포함한다. 웹 페이지를 방문한 사용자는 FTP 사이트로부터 파일을 다운로드 하고 웹 페이지 상의 링크를 사용하여 이메일로 다른 사용자에게 메시지를 전송할 수 있다.
도 2에 도시된 서버는 WWW 사이트를 제공하고, 컨텐츠 서버, 게임 서버, 인증 서버 등이 될 수 있다. 웹 페이지를 제공할 때, 서버는 WWW 사이트를 위한 하이퍼텍스트 문서를 저장하는 저장부분 및 저장된 하이퍼텍스트 문서에 대한 요청을 관리하는 실행 관리 소프트웨어를 가지고 있다. 하이퍼텍스트 문서는 보통 다수의 하이퍼링크 즉, 텍스트의 하이라이트 처리된 부분을 갖는데, 이것은 문서를 인터넷 상의 다른 WWW 사이트에 저장된 다른 하이퍼텍스트 문서에 링크시킨다. 각 하이퍼링크는 인터넷에 연결된 서버 상에서 링크된 문서의 위치를 제공하는 URL과 연관된다. 따라서 하이퍼텍스트 문서가 WWW 서버로부터 검색될 때마다, 그 문서는 WWW로부터 검색된 것으로 본다. WWW 서버는 원격 컴퓨터 상의 실행을 위해 선마이크로시스템의 자바 프로그래밍 언어로 작성된 애플리케이션 프로그램과 같은 애플리케이션 프로그램을 저장하고 전송하는 부분을 포함할 수 있다. 마찬가지로, WWW 서버는 그 위에서 스크립트 및 다른 애플리케이션 프로그램을 실행하는 부분을 포함할 수 있다.
사용자는 유선 또는 무선장치에 있는 WWW 브라우저 애플리케이션 프로그램을 통해 WWW로부터 하이퍼텍스트 문서를 검색할 수 있다. 넷스케이프의 NAVIGATOR, 마이크로소프트의 인터넷 익스플러 등의 WWW 브라우저가 WWW에 그래픽 유저 인터페이스를 제공하는 소프트웨어 애플리케이션 프로그램이다. WWW 브라우저를 통해 사용자로부터 요청이 있으면, WWW 브라우저는 문서 및 HTTP를 위한 URL을 사용하여 WWW 서버로부터 원하는 하이퍼텍스트 문서를 액세스하여 가져 온다. HTTP는 TCP/IP보다 하이레벨 프로토콜로서 WWW의 요구조건에 맞게 설계되어 있다. HTTP는 브라우저의 요청을 웹 서버에 전달하고 웹 서버로부터의 페이지를 요청 브라우저 또는 클라이언트에 전송하는데 사용된다. WWW 브라우저는 클라이언트 컴퓨터 상에서 실행하기 위해 자바 애플릿과 같은 애플리케이션 프로그램을 WWW 서버로부터 가져 온다.
도 2는 무엇보다도 WWW 사이트, 다른 컨텐츠, 서비스를 제공하도록 동작하는 서버를 예시적으로 나타낸 것이다. WWW 사이트를 제공할 때, 서버(200)는 이러한 처리를 수행하기 위해 요청 장치에서 실행되는 WWW 브라우저 애플리케이션 프로그램에 WWW 페이지를 전송한다. 예를 들어, 서버(200)는 어드레스, 전화번호, 과금정보, 신용카드번호 등의 사용자 관련 정보를 받을 수 있는 페이지 및 폼을 전송한다. 또한, 서버(200)는 고객이 WWW 사이트에 참가하도록 하는 WWW 페이지를 요청 장치에 전달할 수 있다. 상기 처리는 인터넷, WAN/LAN(100) 또는 다른 통신망을 통해 발생된다.
서버(200)는 도 2에 도시된 것보다 많은 구성요소를 포함할 수 있다. 그러나, 도시된 구성요소는 본 발명의 실시를 위한 환경을 도시적으로 나타내는데 충분하다. 도 2에 도시된 바와 같이, 서버(200)는 네트워크 인터페이스 장치(210)를 통해 WAN/LAN(100) 또는 다른 통신망에 연결된다. 네트워크 인터페이스 장치(210)는 서버(200)를 WAN/LAN(100)에 연결하는데 필요한 회로를 포함하고, TCP/IP 프로토콜을 포함하는 여러 통신 프로토콜과 함께 사용될 수 있도록 구성된다. 보통 네트워크 인터페이스 장치(210)는 서버(200) 내에 포함된 카드이다.
서버(200)는 또한 처리장치(212), 비디오 디스플레이 어댑터(214), 대용량 메모리를 포함하고, 모두 버스(222)를 통해 연결되어 있다. 대용량 메모리는 일반적으로 RAM(216), ROM(232) 및 하나 이상의 영구적 대용량 저장장치를 포함한다. 영구적 대용량 저장장치로는 하드 디스크 드라이브(228), 테이프 드라이브(미도시), CD-ROM/DVD-ROM 드라이브의 광 드라이브(226), 플로피 디스크 드라이브(미도시) 등이 있다. 대용량 메모리는 서버(200)의 동작을 제어하는 운영 체제(220)를 저장하고 있다. 이러한 운영체제로는 유닉스, 리눅스 또는 마이크로소프트의 윈도우 NT 등과 같은 범용 서버 운영체제가 있다. 또한, 기본적인 입출력 시스템(바이오스)(218)이 서버(200)의 낮은 레벨의 동작을 제어하는데 제공된다.
상기 대용량 메모리는 다른 종류의 컴퓨터 판독 매체 즉 컴퓨터 저장 매체가 될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독 명령어, 데이터 구조, 프로그램 모듈 기타 데이터 등의 정보를 저장하기 위한 방법이나 기술로 실현된 휘발성 및 비휘발성, 제거가능 및 제거불능 매체를 포함한다. 컴퓨터 저장 매체의 예로는 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, DVD 또는 광 저장장치, 마그네틱 카세트, 마그네틱 테이프, 마그네틱 디스크 저장장치 또는 다른 마그네틱 저장장치 등이 있으며, 이런 매체들이 원하는 정보를 저장하는데 사용되고 컴퓨팅 장치에 의해 액세스될 수 있다.
대용량 메모리는 또한 WWW 사이트를 제공하기 위한 프로그램 코드 및 데이터를 저장할 수 있다. 특히, 대용량 메모리는 WWW 서버 애플리케이션 프로그램(230) 및 프로그램(234)을 포함하는 애플리케이션을 저장할 수 있다. WWW 서버 애플리케이션 프로그램(230)은 컴퓨터 실행 명령어를 포함하고, 이 명령어가 서버에 의해 실행될 때 상기 로직 수행을 포함하여 WWW 브라우저 디스플레이를 발생시킨다. 서버(200)는 자바 가상 머신, 이메일을 송수신하는 SMTP 핸들러 애플리케이션, HTTP 요청을 수신 및 관리하는 HTTP 핸들러 애플리케이션, 클라이언트 컴퓨터에서 실행되는 WWW 브라우저로 전송하는 자바 애플릿, 보안 접속을 관리하는 HTTPS 핸들러 애플리케이션을 포함한다. HTTPS 핸들러 애플리케이션은 신용카드정보 등 중요 정 보를 보안 방식으로 송수신하기 위해 외부 보안 애플리케이션과 통신하는데 사용된다.
서버(200)는 또한 도 2에 도시되지 않은 마우스, 키보드, 스캐너, 기타 입력장치 등의 외부장치와 통신하기 위한 입/출력 인터페이스(224)를 포함한다. 마찬가지로, 서버(200)는 광 드라이브(226) 및 하드디스크 드라이브(228)과 같은 대용량 저장부분을 더 포함한다. 하드디스크 드라이브(228)는 서버(200)에서 애플리케이션 프로그램, 데이터베이스, WWW 서버 애플리케이션 프로그램(230)에 의해 사용되는 프로그램 데이터를 저장하는데 사용된다. 예를 들어, 고객 데이터베이스, 제품 데이터베이스, 이미지 데이터베이스 및 관련 데이터베이스가 저장될 수 있다.
도 3은 클라이언트 컴퓨터(300)의 여러 구성요소를 도시하고 있다. 클라이언트 컴퓨터(300)는 도 3에 도시된 것 보다 더 많은 구성요소를 포함할 수 있다. 그러나, 본 발명의 실시예를 설명하는데 종래 구성요소를 도시할 필요는 없다. 도 3에 도시된 바와 같이, 클라이언트 컴퓨터(300)는 LAN 또는 WAN에 연결하거나 LAN 또는 WAN에 원격으로 연결하기 위한 네트워크 인터페이스 장치(302)를 포함한다. 네트워크 인터페이스 장치(302)는 그러한 연결에 필요한 회로를 포함하고, TCP/IP 프로토콜을 포함하는 다양한 통신 프로토콜, 연결되는 LAN 또는 WAN의 특수한 네트워크 환경, 특수한 종류의 결합 매체와 사용될 수 있도록 구성된다. 네트워크 인터페이스 장치(302)는 또한 PPP(point-to-point protocol) 또는 SLIP(serial line internet protocol)을 통해 인터넷에 연결할 수 있다.
클라이언트 컴퓨터(300)는 바이오스(326), 처리장치(306), 비디오 디스플레 이 어댑터(308) 및 메모리를 포함한다. 메모리는 일반적으로 RAM(310), ROM(304) 및 디스크 드라이브와 같은 영구 대용량 저장장치를 포함한다. 메모리는 클라이언트 컴퓨터(300)의 동작을 제어하는 운영체제(312) 및 프로그램(334)을 저장한다. 메모리는 또한 WWW를 액세스하기 위해 넷스케이프의 NAVIGATOR 또는 마이크로소프트의 인터넷 익스플러와 같은 WWW 브라우저를 포함한다. 이러한 구성요소는 컴퓨터 판독 매체에 저장되어 컴퓨터 판독 매체와 연관된 드라이브 메커니즘(플로피 디스크 드라이브(미도시), CD-ROM/DVD-ROM 드라이브 등의 광 드라이브(316), 하드디스크 드라이브(318) 등)을 사용하여 클라이언트 컴퓨터(300)의 메모리에 로딩된다. 입/출력 인터페이스(320)는 마우스, 키보드 또는 다른 입력장치로부터 입력을 수신하는데 제공된다. 메모리, 네트워크 인터페이스 장치(302), 비디오 디스플레이 어댑터(308) 및 입/출력 인터페이스(320)는 모두 버스(322)를 통해 처리장치(306)에 연결되어 있다. 다른 주변장치 또한 유사한 방법으로 처리장치(306)에 연결될 수 있다.
상기 논의로부터 알 수 있는 것처럼, 본 발명의 특징은 서버(200) 및 클라이언트 컴퓨터(300)에서 또는 그들의 결합체 상에서 구현된다. 예를 들어, 프로그래밍 단계가 프로그램(334) 및/또는 프로그램(234)에 포함될 수 있다.
본 명세서에서, 클라이언트 및 서버에 대해 언급되어 있다. 적절하다면, 클라이언트는 도 3의 클라이언트 컴퓨터(300)와 같은 한 개 이상의 전자장치 상에서 실행되는 프로세스 또는 프로세스의 집합이라고 정의될 수 있다. 그러나 클라이언트가 클라이언트 컴퓨터 상에서 실행되는 것에 한정되지 않는다. 그것은 WWW 서버(200)와 같은 서버 상에서 실행되거나 여러 전자장치 사이에서 분포될 수 있다. 여기서, 각각의 장치는 클라이언트 애플리케이션을 함께 구성하는 하나 이상의 프로세스 또는 루틴을 포함할 수 있다. 적절하다면, 클라이언트는 상기 논의에 더하여 또는 대신하여 하나 이상의 클라이언트 프로세스가 실행되는 장치 예를 들어, 클라이언트 컴퓨터(300) 또는 WWW 서버(200)라고 정의될 수 있다.
유사하게, 서버는 WWW 서버(200)와 같은 한 개 이상의 전자장치 상에서 실행되는 프로세스 또는 프로세스의 집합이라고 정의될 수 있다. 클라이언트와 마찬가지로, 서버는 서버 컴퓨터 상에서 실행되는 것에 한정되지는 않는다. 도 3의 클라이언트 컴퓨터(300)와 같이 보통 클라이언트 컴퓨터라고 간주되는 장치 상에서도 실행될 수 있으며, 다양한 전자장치 사이에 분포될 수 있다. 여기서, 각각의 장치는 서버 애플리케이션을 함께 구성하는 하나 이상의 프로세스 또는 루틴을 포함할 수 있다. 적절하다면, 서버는 상기 논의에 더하여 또는 대신하여 하나 이상의 서버프로세스가 실행되는 장치 예를 들어, 서버(200) 또는 클라이언트 컴퓨터(300)라고 정의될 수 있다.
암호화 및 해독
본 명세서에서, 암호화 및 해독에 대해 언급되고 있다. 적절하다면, 암호화 및 해독을 수행하는데 사용되는 알고리즘에 대한 각각의 언급은 애플리케이션, 애플리케이션의 컴포넌트 및 데이터의 원래의 바이트(플레인텍스트(plaintext)라고도 함)를 획득하는 것을 어렵게 만드는 알고리즘 또는 기술을 포함하는 것으로 정의될 수 있다. 본 명세서를 통해 암호화 및 해독을 수행하는데 사용되는 알고리즘에 대 한 각각의 언급에 대해서, 다른 암호화 알고리즘을 사용하여 본 발명의 다른 실시예가 실현될 수 있다는 것을 알아야 한다. 암호화 알고리즘에는 Rjindael이라는 AES(Advanced Encryption Standard), RSA Labs 사(이하, RSA)의 RC6, IBM의 MARS, TwoFish, Serpent, CAST-256, IDEA(International Data Encryption Algorithm), DES(Data Encrytion Standard), Triple DES, DES-EDE2, DES-EDE3, DESX, DES-XEX3, RC2, RC5, Blowfish, Diamon2, TEA, SAFER, 3-WAY, GOST, SHARK, CAST-128, Square, Skipjack, Panama, ARC4, SEAL, WAKE, Sapphire II, BlumBlumShub, RSA, DSA, E1Gamal, Nyberg-Rueppel(NR), BlumGoldwsser, Rabin, Rabin-Williams(RW), LUC, LUCELG, ECDSA, ECDSA, ECIES, ECDHC, ECMQVC 및 기타 다른 암호화 알고리즘이 있다. 이러한 암호화 알고리즘은 적절하다면 암호 블록 체이닝 모드(cipher block chaining mode), 암호 피드백 모드(cipher feedback mode), CBC 암호텍스트 스틸링(ciphertext stealing, CTS), CFB, OFB, 카운터 모드 및 다른 블록 모드를 사용할 수 있다. 본 발명의 실시예에서 사용될 수 있는 다른 암호화 기술의 예로는 소스 코드를 바이너리 코드로 컴파일하거나 데이터를 전송하는데 독점권이 있는 데이터 구조를 사용하는 것이다. 본 발명의 일실시예에서, 오픈 소스 클래스 라이브러리 암호화 기술인 Crypto++v4.x(이 소스 코드가 참조문헌에 들어 있다)가 애플리케이션이나 데이터를 암호화하거나 해독하는데 사용될 수 있다. 본 발명의 사상 또는 범위를 벗어나지 않고 모두 소스가 공개되어 있고 상업적이며 독점적인 다른 암호화 및 해독 라이브러리가 사용될 수 있다.
본 발명의 일실시예에서, 대칭적 암호화 및 해독을 위해 128 bit 키 및 AES Rjindael 암호가 암호 블록 체이닝 모드에서 사용될 수 있다. 랜덤 초기화 벡터(IVs)가 플레인텍스트로 전송된다. 클라이언트 상에 저장된 패스워드를 보호하기 위한 실시예에서, 암호 피드백 모드에서의 256 비트 Rjindael이 랜덤 IV와 함께 사용된다. 본 발명의 다른 실시예에서, 다른 대칭적 암호화 알고리즘(이전 단락에서 나열된 것)이 대칭적 암호화 및 해독을 위해 사용될 수 있다.
본 발명의 실시예에서, 비대칭 암호화를 위해, 1024 비트 키가 RSA와 함께 사용될 수 있다. 이 키는 RSA에 의해 제공되는 "OAEP"(SHA1 포함) 또는 다른 적절한 포맷으로 포맷될 수 있다. 예를 들어, RSA는 티켓 내의 데이터를 해독하여 티켓의 다른 부분을 해독하는데 사용될 수 있는 AES 키를 복원하기 위해, 티켓(상세히 후술함)과 함께 사용될 수 있다. SHA1은 보안 해시(hash) 알고리즘 1을 나타낸다. SHA1은 임의의 길이 스트링으로부터 160 비트 해시값을 생성하는 암호화 해시 알고리즘이다. 본 발명의 다른 실시예에서, 다른 프라이빗 키/퍼블릭 키(private key/public key) 암호화 알고리즘(상기 나열된 것)이 동일하거나 다른 키 사이즈로 사용될 수 있다.
본 발명의 다른 실시예에서, 서버 및/또는 클라이언트는 128 비트 HMAC(해시된 메시지 인증 코드) 및/또는 1024 비트 RSA 디지털 서명을 채용하여, 티켓의 컨텐츠가 변경되지 않음을 인증하거나 클라이언트 및/또는 서버를 인증할 수 있게 한다. 128 비트 HMAC는 SHA1을 사용하여 데이터 요약(digest)을 생성한다. 예를 들어, 티켓의 컨텐츠는 SHA1과 같은 단방향 해싱 함수(one way hashing function)에 들어가 2자리수 블록을 생성한다. 해싱 함수는 무엇이 입력되든지 고정 길이의 비 트로 해시되도록 되어 있다. 예를 들어, 해싱 함수는 4바이트 데이터 상에서 동작하든지 바이블의 모든 텍스트 상에서 동작하든지 간에 160 비트를 반환할 수 있다. RSA의 PKCS #1 v2.0 또는 다른 적절한 포맷에서 기술된 것처럼 RSA 서명은 생성되거나 포맷될 수 있다.
MIT의 Kerberos 공개 프로토콜(이것은 참조문헌에 들어 있다)과 다소 유사한 방법으로 티켓을 보호하기 위해 암호화가 사용될 수 있다. 티켓 보호와 클라이언트/서버를 인증하기 위해 사용되는 본 발명의 실시예를 설명한다.
1024 비트 RSA 및 128 비트 Rjindael 대칭 세션 키를 사용하여 키가 배포된다. 1024 비트 RSA 키는 128 비트 Rjindael 대칭 키를 암호화하기 위해 사용될 수 있다. 128 비트 Rjindael 키는 메시지 본체를 암호화하는데 사용될 수 있다. 다음, 128 비트 Rjindael 키는 메시지 본체를 해독하는데 사용될 수 있다. 티켓은 MIT의 Kerberos 공개 프로토콜에서 기술된 방법과 유사하게 어느 서버에서 다른 서버로 전송되는 다른 암호화된 128 비트 Rjindael 세션 키를 포함할 수 있다.
암호화되거나 해독된 메시지 또는 티켓은 RCP/IP, UDP. SSL. IPSEC 또는 다른 네트워킹 프로토콜을 이용하여 전송될 수 있다. 컨텐츠 서버로 전송되거나 컨텐츠 서버로부터 전송된 컨텐츠는 암호화되거나 해독된다. 어느 난수 발생기에 의해 난수가 발생될 수 있다. 사용될 수 있는 난수 발생기의 예로는 워싱턴 레드몬드 소재 마이크로소프트 사에서 생산되는 CryptoAPI가 있다.
상기 주어진 키 사이즈는 예시적이라는 것을 알아야 한다. 본 발명의 다른 실시예에서, 데이터를 암호화하거나 서버, 클라이언트 또는 사용자를 인증할 때 상 기 키 사이즈를 제외한 키 사이즈 또는 이에 부가한 키 사이즈가 사용될 수 있다.
본 발명의 다양한 실시예는 컴퓨팅 시스템 상에서 실행되는 컴퓨터 실행 단계 또는 프로그램의 시퀀스로서 또는 컴퓨팅 시스템 내의 상호 연결된 머신 로직 회로나 회로 모듈로서 구현될 수 있다. 본 발명을 구현하는 컴퓨팅 시스템의 성능요건에 따른 선택이 구현에 있어서의 관건이다. 본 명세서를 볼 때, 개시된 다양한 실시예의 기능 및 동작이 본 발명의 기술적 사상 및 범위를 벗어나지 않고 소프트웨어, 펌웨어, 특수 목적용 디지털 로직 또는 그 결합을 통해 구현될 수 있다.
상기 상세한 설명, 실시예 및 데이터를 통해 본 발명의 제조 및 결합 사용에 대한 완벽한 설명을 얻을 수 있다. 본 발명의 사상 및 범위를 벗어나지 않는 한도 내에서 본 발명의 많은 실시예가 가능하므로, 본 발명은 이하 첨부된 청구범위에 기재되어 있다.

Claims (22)

  1. 클라이언트 상에서 애플리케이션의 버전을 투명하게(transparently) 변경하는 방법으로서,
    상기 클라이언트가 애플리케이션의 버전을 변경하는 것을 가능케 하는 리소스들의 리스트를 결정하는 단계와, 리소스들의 상기 리스트는 애플리케이션의 신 버전으로의 업그레이드 및 애플리케이션의 현 버전으로부터의 롤링백(rolling back)을 가능케 하며, 그리고 리소스들의 상기 리스트는 하나 이상의 리소스들의 적어도 하나의 구 버전 및 신 버전을 식별하며;
    리소스들의 상기 리스트에 관련된 리소스들의 적어도 서브세트를 상기 클라이언트에게 제공하는 단계와;
    퍼지 리스트(purge list)와 리소스들의 상기 리스트에 관련하여 제공된 리소스들의 상기 서브세트를 적어도 이용하여 애플리케이션의 버전의 적어도 일부를 변경하는 단계와; 그리고
    변경된 버전에 대한 리소스들의 상기 리스트에 관련된 모든 리소스들이 상기 클라이언트 상에서의 실행을 위해 이용가능해지기 전에, 상기 애플리케이션의 변경된 버전의 적어도 일부를 상기 클라이언트 상에서 실행하는 단계
    를 포함하는 애플리케이션의 버전을 투명하게 변경하는 방법.
  2. 제1항에 있어서,
    리소스들의 리스트를 결정하는 상기 단계는,
    현 버전으로부터 삭제(purge)되는 적어도 하나의 리소스를 나타내는 상기 퍼지 리스트를 결정하는 단계를 더 포함하며,
    삭제되는 상기 적어도 하나의 리소스는, 서버에 액세스하는 것에 상관없이 상기 클라이언트에 대해 여전히 액세스가능한 것을 특징으로 하는 애플리케이션의 버전을 투명하게 변경하는 방법.
  3. 제2항에 있어서,
    상기 퍼지 리스트는, 애플리케이션의 신 버전으로 변경되도록 현 버전에 부가되는 적어도 하나의 리소스를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 투명하게 변경하는 방법.
  4. 제2항에 있어서,
    상기 퍼지 리스트를 상기 클라이언트에게 제공하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 투명하게 변경하는 방법.
  5. 제1항에 있어서,
    리소스들의 리스트를 결정하는 상기 단계는,
    상기 애플리케이션의 현 버전에 관련된 적어도 하나의 리소스를 식별하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 투명하게 변경하는 방법.
  6. 제1항에 있어서,
    상기 버전은 클라이언트의 백그라운드에서 변경될 수 있는 것을 특징으로 하는 애플리케이션의 버전을 투명하게 변경하는 방법.
  7. 제1항에 있어서,
    상기 애플리케이션의 버전을 변경하는 단계는,
    공유 리소스의 다수의(multiple) 버전들이 상기 클라이언트 상에 상주하는 것을 또한 가능케 하는 것을 특징으로 하는 애플리케이션의 버전을 투명하게 변경하는 방법.
  8. 제7항에 있어서,
    상기 애플리케이션의 변경된 버전의 적어도 일부를 실행하는 단계는,
    변경된 버전을 실행하는데 필요한 리소스들의 최소 세트를 결정하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 투명하게 변경하는 방법.
  9. 제1항에 있어서,
    리소스들의 상기 리스트, 상기 리소스들의 적어도 서브세트 또는 퍼지 리스트 중 적어도 하나는 암호화되는 것을 특징으로 하는 애플리케이션의 버전을 투명하게 변경하는 방법.
  10. 클라이언트 상에서 애플리케이션의 버전을 변경하기 위한 서버로서,
    정보를 송신 및 수신하기 위한 네트워크 인터페이스 요소와; 그리고
    상기 네트워크 인터페이스 요소와 통신하며 머신 명령어들(machine instructions)을 포함하는 프로세서
    를 포함하여 이루어지며,
    상기 머신 명령어들은 상기 프로세서로 하여금,
    상기 클라이언트로 하여금 애플리케이션의 버전을 변경하는 것을 가능케 하는 리소스들의 리스트를 상기 클라이언트에게 제공하는 단계와, 리소스들의 상기 리스트는 하나 이상의 리소스들의 적어도 하나의 구 버전 및 신 버전을 식별하며;
    애플리케이션의 신 버전으로의 업그레이드 및 애플리케이션의 현 버전으로부터의 롤링백을 가능케 하는, 하나 이상의 리소스들에 대한 퍼지 리스트를 상기 클라이언트에게 제공하는 단계와; 그리고
    상기 퍼지 리스트와 리소스들의 상기 리스트에 기초하여, 상기 클라이언트 상에서 상기 애플리케이션의 버전의 적어도 일부에 대한 수정(modification)을 가능케 하는 단계 -상기 클라이언트는 변경된 버전에 관련하여 상기 리스트에 의해 식별된 모든 리소스들이 클라이언트 상에서의 실행을 위해 이용가능해지기 전에, 상기 애플리케이션의 변경된 버전의 적어도 일부를 실행할 수 있음-
    를 포함하는 동작들을 수행하게 하는 것을 특징으로 하는 애플리케이션의 버전을 변경하기 위한 서버.
  11. 제10항에 있어서,
    상기 퍼지 리스트는 현 버전으로부터 삭제(purge)되는 적어도 하나의 리소스를 더 포함하며,
    삭제되는 상기 적어도 하나의 리소스는, 서버에 액세스하는 것에 상관없이 상기 클라이언트에 대해 여전히 액세스가능한 것을 특징으로 애플리케이션의 버전을 변경하기 위한 서버.
  12. 제10항에 있어서,
    상기 퍼지 리스트는, 애플리케이션의 신 버전으로 업그레이드하는 경우 현 버전에 부가되는 적어도 하나의 리소스를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 변경하기 위한 서버.
  13. 제10항에 있어서,
    상기 퍼지 리스트는, 애플리케이션의 현 버전을 롤링백하는 경우 부가되거나 또는 제거되는 적어도 하나의 리소스를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 변경하기 위한 서버.
  14. 제10항에 있어서,
    리소스들의 리스트를 제공하는 상기 단계는,
    상기 애플리케이션의 현 버전에 관련된 적어도 하나의 리소스를 식별하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 변경하기 위한 서버.
  15. 제10항에 있어서,
    상기 애플리케이션의 버전의 적어도 일부에 대한 수정을 가능케 하는 상기 단계는,
    상기 애플리케이션의 버전의 적어도 일부를 상기 클라이언트의 백그라운드에서 변경하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 변경하기 위한 서버.
  16. 제10항에 있어서,
    상기 애플리케이션의 버전의 적어도 일부에 대한 수정을 가능케 하는 상기 단계는,
    상기 애플리케이션의 변경된 버전의 적어도 일부를 상기 클라이언트가 실행하는데 필요한 리소스들의 최소 세트를 결정하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 변경하기 위한 서버.
  17. 클라이언트 상에서 애플리케이션의 버전을 변경하기 위한 클라이언트로서,
    정보를 송신 및 수신하기 위한 네트워크 인터페이스 요소와; 그리고
    상기 네트워크 인터페이스 요소와 통신하며 머신 명령어들(machine instructions)을 포함하는 프로세서
    를 포함하여 이루어지며,
    상기 머신 명령어들은 상기 프로세서로 하여금,
    상기 클라이언트가 애플리케이션의 버전을 변경하는 것을 가능케 하는 리소스들의 리스트를 수신하는 단계와, 리소스들의 상기 리스트는 하나 이상의 리소스들의 적어도 하나의 구 버전 및 신 버전을 식별하며;
    애플리케이션의 신 버전으로의 업그레이드 및 애플리케이션의 현 버전으로부터의 롤링백을 가능케 하는 퍼지 리스트를 수신하는 단계와;
    상기 퍼지 리스트와 리소스들의 상기 리스트에 기초하여, 상기 애플리케이션의 버전의 적어도 일부를 상기 클라이언트 상에서 수정하는 단계와; 그리고
    변경된 버전에 관련된 모든 리소스들이 클라이언트 상에서의 실행을 위해 이용가능해지기 전에, 상기 애플리케이션의 변경된 버전의 적어도 일부를 실행하는 단계
    를 포함하는 동작들을 수행하게 하는 것을 특징으로 하는 애플리케이션의 버전을 변경하기 위한 클라이언트.
  18. 제17항에 있어서,
    리소스들의 리스트를 수신하는 상기 단계는,
    상기 애플리케이션의 현 버전에 관련된 적어도 하나의 리소스들의 리스트를 수신하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 변경하기 위한 클라이언트.
  19. 제17항에 있어서,
    상기 애플리케이션의 버전의 적어도 일부를 수정하는 상기 단계는,
    상기 애플리케이션의 버전의 적어도 일부를 상기 클라이언트의 백그라운드에서 수정하는 것을 특징으로 하는 애플리케이션의 버전을 변경하기 위한 클라이언트.
  20. 제17항에 있어서,
    상기 애플리케이션의 버전의 적어도 일부를 수정하는 상기 단계는,
    공유 리소스의 다수의(multiple) 버전들이 상기 클라이언트 상에 상주하는 것을 가능케 하는 단계를 더 포함하는 것을 특징으로 하는 애플리케이션의 버전을 변경하기 위한 클라이언트.
  21. 클라이언트 상에서 애플리케이션의 버전을 변경하기 위한 장치로서,
    클라이언트가 애플리케이션의 버전을 변경하는 것을 가능케 하는 리소스들의 리스트를 결정하기 위한 수단, 리소스들의 상기 리스트는 하나 이상의 리소스들의 적어도 하나의 구 버전 및 신 버전을 식별하며;
    애플리케이션의 신 버전으로의 업그레이드 및 애플리케이션의 현 버전으로부터의 롤링백을 클라이언트 상에서 가능케 하는 퍼지 리스트를 결정하기 위한 수단;
    상기 퍼지 리스트 및 리소스들의 상기 리스트를 상기 클라이언트에게 제공하기 위한 수단;
    리소스들의 상기 리스트에 관련된 리소스들의 적어도 서브세트를 상기 클라이언트에게 제공하기 위한 수단;
    상기 퍼지 리스트와 리소스들의 상기 리스트에 관련된 리소스들의 적어도 서브세트를 이용하여, 상기 애플리케이션의 버전의 적어도 일부에 대한 수정(modification)을 가능케 하기 위한 수단 -상기 클라이언트는 변경된 버전에 관련된 모든 리소스들이 클라이언트 상에서의 실행을 위해 이용가능해지기 전에, 상기 애플리케이션의 변경된 버전의 적어도 일부를 실행할 수 있음-
    을 포함하는 애플리케이션의 버전을 변경하기 위한 장치.
  22. 삭제
KR1020047009170A 2001-12-12 2002-12-12 버전을 업데이트 및 롤링백 하는 방법 및 시스템 KR101005901B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US34107901P 2001-12-12 2001-12-12
US60/341,079 2001-12-12
US10/317,852 US6996817B2 (en) 2001-12-12 2002-12-11 Method and system for upgrading and rolling back versions
US10/317,852 2002-12-11
PCT/US2002/040136 WO2003054695A1 (en) 2001-12-12 2002-12-12 Method and system for upgrading and rolling back versions

Publications (2)

Publication Number Publication Date
KR20040096500A KR20040096500A (ko) 2004-11-16
KR101005901B1 true KR101005901B1 (ko) 2011-01-06

Family

ID=26981188

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020047009170A KR101005901B1 (ko) 2001-12-12 2002-12-12 버전을 업데이트 및 롤링백 하는 방법 및 시스템

Country Status (5)

Country Link
US (1) US6996817B2 (ko)
EP (1) EP1461693A4 (ko)
KR (1) KR101005901B1 (ko)
AU (1) AU2002357248A1 (ko)
WO (1) WO2003054695A1 (ko)

Families Citing this family (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324685B1 (en) * 1998-03-18 2001-11-27 Becomm Corporation Applet server that provides applets in various forms
US6966837B1 (en) 2001-05-10 2005-11-22 Best Robert M Linked portable and video game systems
US8108687B2 (en) 2001-12-12 2012-01-31 Valve Corporation Method and system for granting access to system and content
US7392390B2 (en) 2001-12-12 2008-06-24 Valve Corporation Method and system for binding kerberos-style authenticators to single clients
US7536404B2 (en) * 2001-12-13 2009-05-19 Siemens Product Lifecycle Management Software, Inc. Electronic files preparation for storage in a server
US7660876B2 (en) * 2001-12-13 2010-02-09 Siemens Product Lifecycle Management Software Inc. Electronic file management
US6898764B2 (en) * 2002-04-29 2005-05-24 International Business Machines Corporation Method, system and program product for determining differences between an existing graphical user interface (GUI) mapping file and a current GUI
US7307979B2 (en) * 2002-07-31 2007-12-11 Jeremy Benjamin As Receiver For Chiaro Networks Ltd Configuration rollback
US7275244B1 (en) * 2003-03-18 2007-09-25 Microsoft Corporation System and method for incrementally saving web files to a web server using file hash values
US7386617B2 (en) * 2003-05-15 2008-06-10 International Business Machines Corporation Method, system and program product for managing multiple network application versions
US7222339B2 (en) * 2003-06-13 2007-05-22 Intel Corporation Method for distributed update of firmware across a clustered platform infrastructure
US20040261071A1 (en) * 2003-06-23 2004-12-23 Macronix International Co., Ltd. Peer version control system
US7500235B2 (en) * 2003-09-05 2009-03-03 Aol Time Warner Interactive Video Group, Inc. Technique for updating a resident application and associated parameters in a user terminal through a communications network
US20050125559A1 (en) * 2003-12-02 2005-06-09 Mutha Kailash K. Employment of one or more identifiers of one or more communication devices to determine one or more internet protocol addresses
FI117151B (fi) * 2003-12-18 2006-06-30 Capricode Oy Menetelmä, tiedonsiirtojärjestely, palvelin ja päätelaite päätelaitteessa olevan tiedon päivityksen suorittamiseksi
US7222340B2 (en) * 2004-01-27 2007-05-22 Research In Motion Limited Software-delivered dynamic persistent data
DE602004013269T2 (de) * 2004-01-27 2009-05-28 Research In Motion Ltd., Waterloo Verfahren und Gerät zur Aktualisierung nichtflüchtiger Speicherinhalte auf einem schnurlosen Gerät durch Überprüfen und Vergleich eines spezifischen, in besagtem Speicher abgelegten Identifikations-Elements mit einer Software-Identifikation
US8418162B2 (en) * 2004-01-27 2013-04-09 Research In Motion Limited Network delivered dynamic persistent data
ATE415062T1 (de) * 2004-01-27 2008-12-15 Research In Motion Ltd Verfahren und gerät zur aktualisierung nichtflüchtiger speicherinhalte auf einem schnurlosen gerät durch überprüfen und vergleich eines spezifischen, in besagtem speicher abgelegten identifikations-elements mit einer software-identifikation
US7296038B2 (en) * 2004-04-01 2007-11-13 Sap Aktiengesellschaft Context resolution
US20050257205A1 (en) * 2004-05-13 2005-11-17 Microsoft Corporation Method and system for dynamic software updates
EP1769343B1 (en) * 2004-06-01 2014-04-30 Red Bend Ltd. Method and system for in-place updating content stored in a storage device
US20060010175A1 (en) * 2004-06-17 2006-01-12 International Business Machines Corporation Apparatus, system, and method for automated conversion of content having multiple representation versions
US20060041881A1 (en) * 2004-08-19 2006-02-23 Adkasthala Bheema P Universal upgrade architecture
EP1839130A1 (en) * 2004-12-24 2007-10-03 Telecom Italia S.p.A. Method and system for upgrading the software of a telecommunication terminal, in particular of a video telephone, and relatted computer program product
US20060236385A1 (en) * 2005-01-14 2006-10-19 Citrix Systems, Inc. A method and system for authenticating servers in a server farm
US8042165B2 (en) * 2005-01-14 2011-10-18 Citrix Systems, Inc. Method and system for requesting and granting membership in a server farm
US20070016638A1 (en) * 2005-06-30 2007-01-18 Ian Elbury System and method of application provisioning
US20070110225A1 (en) * 2005-11-16 2007-05-17 Sub-Crypto Systems, Llc Method and apparatus for efficient encryption
US7765519B2 (en) * 2005-12-16 2010-07-27 International Business Machines Corporation Efficient builds for installation software
US7823145B1 (en) * 2006-03-31 2010-10-26 Vmware, Inc. Updating software on dormant disks
US8522228B1 (en) 2006-03-31 2013-08-27 Vmware, Inc. Updating software on dormant disks
JP2009535735A (ja) * 2006-05-02 2009-10-01 ブロードオン コミュニケーションズ コーポレーション コンテンツ・マネージメント・システムおよび方法
JP2008033827A (ja) * 2006-07-31 2008-02-14 Hitachi Ltd ストレージ装置及びプログラム更新方法
US9113645B2 (en) 2006-09-26 2015-08-25 Novita Nutrition, Llc Solvent extraction of oil from distillers dried grains and methods of using extraction products
US8227015B2 (en) * 2006-09-26 2012-07-24 Keith Bruinsma Solvent extraction of oil from distillers dried grains and methods of using extraction products
US8146109B2 (en) * 2007-02-15 2012-03-27 Microsoft Corporation Version resiliency for a host application and custom code
US8181188B2 (en) * 2007-02-15 2012-05-15 Microsoft Corporation Version resiliency for a host application and managed code
US8756694B2 (en) * 2007-03-30 2014-06-17 Microsoft Corporation Prevention of exploitation of update rollback
US20080320110A1 (en) * 2007-06-25 2008-12-25 Sharp Laboratories Of America, Inc. Firmware rollback and configuration restoration for electronic devices
US8091079B2 (en) * 2007-08-29 2012-01-03 International Business Machines Corporation Implementing shadow versioning to improve data dependence analysis for instruction scheduling
US10120733B2 (en) * 2007-08-30 2018-11-06 Red Hat, Inc. Remote procedure call supporting multiple versions
US20090064208A1 (en) * 2007-08-30 2009-03-05 Thomas Mitchell Elrod SSL socket builder
US8943488B2 (en) * 2007-12-31 2015-01-27 Activision Publishing, Inc. Video game forward compatibility including software patching
GB0803629D0 (en) * 2008-02-28 2008-04-02 Blue Whale Systems Ltd System and method for downloading a software application
US20090325690A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Roaming Saved Game
US8213921B2 (en) 2008-10-08 2012-07-03 Research In Motion Limited Server for sending new application portions to mobile wireless communications devices and related methods
US8414390B1 (en) * 2009-09-30 2013-04-09 Amazon Technologies, Inc. Systems and methods for the electronic distribution of games
US9770654B1 (en) 2009-09-30 2017-09-26 Amazon Technologies, Inc. Cross device operation of games
US8662997B1 (en) 2009-09-30 2014-03-04 Amazon Technologies, Inc. Systems and methods for in-game provisioning of content
US8108734B2 (en) * 2009-11-02 2012-01-31 International Business Machines Corporation Intelligent rolling upgrade for data storage systems
CN101699399B (zh) * 2009-11-03 2014-04-30 中兴通讯股份有限公司 一种软件更新的系统和方法
EP2599007A1 (en) 2010-07-30 2013-06-05 Hewlett-Packard Development Company, L.P. Information technology service management
CN101937348A (zh) * 2010-08-20 2011-01-05 四川长虹电器股份有限公司 电视软件在线增量升级方法
US9130801B1 (en) * 2010-11-22 2015-09-08 Google Inc. Pushed-based package distribution
CN102480470B (zh) * 2010-11-29 2015-04-29 腾讯科技(深圳)有限公司 一种下载游戏的方法、装置和系统
US8607140B1 (en) * 2010-12-21 2013-12-10 Google Inc. Classifying changes to resources
KR101819508B1 (ko) * 2011-07-25 2018-03-02 삼성전자주식회사 휴대용 단말기에서 어플리케이션의 테마를 변경하기 위한 장치 및 방법
US8789034B1 (en) * 2011-12-31 2014-07-22 Parallels IP Holdings GmbH Method for updating operating system without memory reset
JP2014048750A (ja) * 2012-08-29 2014-03-17 Fujitsu Ltd 情報資源管理プログラム、方法、及び装置
US9910659B2 (en) * 2012-11-07 2018-03-06 Qualcomm Incorporated Methods for providing anti-rollback protection of a firmware version in a device which has no internal non-volatile memory
CN103019785B (zh) * 2012-12-11 2015-11-25 北京奇虎科技有限公司 用于处理程序升级的方法和装置
US9286047B1 (en) 2013-02-13 2016-03-15 Cisco Technology, Inc. Deployment and upgrade of network devices in a network environment
US9239715B1 (en) 2013-09-25 2016-01-19 Amazon Technologies, Inc. Cancel and rollback update stack requests
US9348849B1 (en) * 2013-12-23 2016-05-24 Emc Corporation Backup client zero-management
US10516667B1 (en) 2014-06-03 2019-12-24 Amazon Technologies, Inc. Hidden compartments
US10089476B1 (en) 2014-06-03 2018-10-02 Amazon Technologies, Inc. Compartments
WO2016122492A1 (en) * 2015-01-28 2016-08-04 Hewlett-Packard Development Company, L.P. Machine readable instructions backward compatibility
US10374904B2 (en) 2015-05-15 2019-08-06 Cisco Technology, Inc. Diagnostic network visualization
US9800497B2 (en) 2015-05-27 2017-10-24 Cisco Technology, Inc. Operations, administration and management (OAM) in overlay data center environments
US10536357B2 (en) 2015-06-05 2020-01-14 Cisco Technology, Inc. Late data detection in data center
US10089099B2 (en) 2015-06-05 2018-10-02 Cisco Technology, Inc. Automatic software upgrade
US10142353B2 (en) 2015-06-05 2018-11-27 Cisco Technology, Inc. System for monitoring and managing datacenters
US10033766B2 (en) 2015-06-05 2018-07-24 Cisco Technology, Inc. Policy-driven compliance
US9967158B2 (en) 2015-06-05 2018-05-08 Cisco Technology, Inc. Interactive hierarchical network chord diagram for application dependency mapping
EP3347845B1 (en) * 2015-09-11 2023-08-02 Curtail, Inc. Implementation comparison-based security system
EP3414683B1 (en) 2016-02-10 2021-07-28 Curtail Security, Inc. Comparison of behavioral populations for security and compliance monitoring
US10171357B2 (en) 2016-05-27 2019-01-01 Cisco Technology, Inc. Techniques for managing software defined networking controller in-band communications in a data center network
US10931629B2 (en) 2016-05-27 2021-02-23 Cisco Technology, Inc. Techniques for managing software defined networking controller in-band communications in a data center network
US10289438B2 (en) 2016-06-16 2019-05-14 Cisco Technology, Inc. Techniques for coordination of application components deployed on distributed virtual machines
US10708183B2 (en) 2016-07-21 2020-07-07 Cisco Technology, Inc. System and method of providing segment routing as a service
US11544175B2 (en) * 2016-08-15 2023-01-03 Zerion Software, Inc Systems and methods for continuity of dataflow operations
US10972388B2 (en) 2016-11-22 2021-04-06 Cisco Technology, Inc. Federated microburst detection
US20180157478A1 (en) * 2016-12-02 2018-06-07 Coursera, Inc. Deployment of immutable web application builds
US10708152B2 (en) 2017-03-23 2020-07-07 Cisco Technology, Inc. Predicting application and network performance
US10523512B2 (en) 2017-03-24 2019-12-31 Cisco Technology, Inc. Network agent for generating platform specific network policies
US10764141B2 (en) 2017-03-27 2020-09-01 Cisco Technology, Inc. Network agent for reporting to a network policy system
US10250446B2 (en) 2017-03-27 2019-04-02 Cisco Technology, Inc. Distributed policy store
US10594560B2 (en) 2017-03-27 2020-03-17 Cisco Technology, Inc. Intent driven network policy platform
US10873794B2 (en) 2017-03-28 2020-12-22 Cisco Technology, Inc. Flowlet resolution for application performance monitoring and management
US10680887B2 (en) 2017-07-21 2020-06-09 Cisco Technology, Inc. Remote device status audit and recovery
US10554501B2 (en) 2017-10-23 2020-02-04 Cisco Technology, Inc. Network migration assistant
US10523541B2 (en) 2017-10-25 2019-12-31 Cisco Technology, Inc. Federated network and application data analytics platform
US10594542B2 (en) 2017-10-27 2020-03-17 Cisco Technology, Inc. System and method for network root cause analysis
US11233821B2 (en) 2018-01-04 2022-01-25 Cisco Technology, Inc. Network intrusion counter-intelligence
US11765046B1 (en) 2018-01-11 2023-09-19 Cisco Technology, Inc. Endpoint cluster assignment and query generation
US10917438B2 (en) 2018-01-25 2021-02-09 Cisco Technology, Inc. Secure publishing for policy updates
US10999149B2 (en) 2018-01-25 2021-05-04 Cisco Technology, Inc. Automatic configuration discovery based on traffic flow data
US10826803B2 (en) 2018-01-25 2020-11-03 Cisco Technology, Inc. Mechanism for facilitating efficient policy updates
US10574575B2 (en) 2018-01-25 2020-02-25 Cisco Technology, Inc. Network flow stitching using middle box flow stitching
US10798015B2 (en) 2018-01-25 2020-10-06 Cisco Technology, Inc. Discovery of middleboxes using traffic flow stitching
US10873593B2 (en) 2018-01-25 2020-12-22 Cisco Technology, Inc. Mechanism for identifying differences between network snapshots
US11128700B2 (en) 2018-01-26 2021-09-21 Cisco Technology, Inc. Load balancing configuration based on traffic flow telemetry
US10922072B1 (en) 2019-05-25 2021-02-16 Juniper Networks, Inc Apparatus, system, and method for seamless and reversible in-service software upgrades
US11265159B1 (en) * 2021-01-11 2022-03-01 ISARA Corporation Determining upgradability scores and identifying remedial security measures in a computing environment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171635A (ja) * 1996-10-09 1998-06-26 N T T Data Tsushin Kk 分散環境におけるソフトウエア資源を管理するシステムと方法
US20060029175A1 (en) * 2004-08-05 2006-02-09 Micron Technology, Inc. Digital frequency locked delay line

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619716A (en) 1991-11-05 1997-04-08 Hitachi, Ltd. Information processing system having a configuration management system for managing the software of the information processing system
WO1994025913A2 (en) * 1993-04-30 1994-11-10 Novadigm, Inc. Method and apparatus for enterprise desktop management
EP0674253B1 (en) 1994-03-15 2003-02-19 Kabushiki Kaisha Toshiba Shared file editing system with file content secrecy, version management and asynchronous editing
US5586304A (en) * 1994-09-08 1996-12-17 Compaq Computer Corporation Automatic computer upgrading
US5742829A (en) 1995-03-10 1998-04-21 Microsoft Corporation Automatic software installation on heterogeneous networked client computer systems
US5764992A (en) 1995-06-06 1998-06-09 Apple Computer, Inc. Method and apparatus for automatic software replacement
US5850535A (en) * 1995-10-12 1998-12-15 Computervision Corporation Roll-back during regeneration on a computer-aided design system
US6029175A (en) 1995-10-26 2000-02-22 Teknowledge Corporation Automatic retrieval of changed files by a network software agent
US5915112A (en) 1996-01-02 1999-06-22 International Business Machines Corporation Remote procedure interface with support for multiple versions
US5732275A (en) 1996-01-11 1998-03-24 Apple Computer, Inc. Method and apparatus for managing and automatically updating software programs
GB9623298D0 (en) * 1996-11-08 1997-01-08 Int Computers Ltd Updating mechanism for software
US6330561B1 (en) * 1998-06-26 2001-12-11 At&T Corp. Method and apparatus for improving end to end performance of a data network
US6453353B1 (en) * 1998-07-10 2002-09-17 Entrust, Inc. Role-based navigation of information resources
US6141010A (en) * 1998-07-17 2000-10-31 B. E. Technology, Llc Computer interface method and apparatus with targeted advertising
US6718549B1 (en) * 1999-05-05 2004-04-06 Microsoft Corporation Methods for managing the distribution of client bits to client computers
US6256773B1 (en) * 1999-08-31 2001-07-03 Accenture Llp System, method and article of manufacture for configuration management in a development architecture framework
US6578054B1 (en) * 1999-10-04 2003-06-10 Microsoft Corporation Method and system for supporting off-line mode of operation and synchronization using resource state information
GB2359385B (en) * 2000-02-16 2004-04-07 Data Connection Ltd Method for upgrading running software processes without compromising fault-tolerance
AU2001238541A1 (en) * 2000-02-17 2001-08-27 Interactive Video Technologies, Inc. Incremental bootstrap class loader
US6862616B1 (en) * 2000-03-20 2005-03-01 Netscape Communications Corp. System and method for facilitating distributed server administration of server systems that are scalable and version independent
US6871345B1 (en) * 2000-04-04 2005-03-22 Motive, Inc. Self managing software agents with introspection
JP2001306536A (ja) * 2000-04-26 2001-11-02 Nifty Corp クライアントサーバシステム及びコンピュータ可読媒体
US6678700B1 (en) * 2000-04-27 2004-01-13 General Atomics System of and method for transparent management of data objects in containers across distributed heterogenous resources
US6880086B2 (en) * 2000-05-20 2005-04-12 Ciena Corporation Signatures for facilitating hot upgrades of modular software components
US6332198B1 (en) * 2000-05-20 2001-12-18 Equipe Communications Corporation Network device for supporting multiple redundancy schemes
US6694450B1 (en) * 2000-05-20 2004-02-17 Equipe Communications Corporation Distributed process redundancy
US6711593B1 (en) * 2000-06-26 2004-03-23 Camstar Systems, Inc. System and method for live update of a manufacturing system
GB2348721A (en) * 2000-07-15 2000-10-11 Ideagen Software Limited Automated software or data updating in distributed computing system
US6766428B2 (en) * 2001-04-06 2004-07-20 Sun Microsystems, Inc. Method and apparatus for storing prior versions of modified values to facilitate reliable execution
US6912520B2 (en) * 2001-08-29 2005-06-28 Sun Microsystems, Inc. System and method for providing a persistent object framework for managing persistent objects
US6748470B2 (en) * 2001-11-13 2004-06-08 Microsoft Corporation Method and system for locking multiple resources in a distributed environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10171635A (ja) * 1996-10-09 1998-06-26 N T T Data Tsushin Kk 分散環境におけるソフトウエア資源を管理するシステムと方法
US20060029175A1 (en) * 2004-08-05 2006-02-09 Micron Technology, Inc. Digital frequency locked delay line

Also Published As

Publication number Publication date
US20030221189A1 (en) 2003-11-27
US6996817B2 (en) 2006-02-07
AU2002357248A1 (en) 2003-07-09
WO2003054695A1 (en) 2003-07-03
EP1461693A1 (en) 2004-09-29
KR20040096500A (ko) 2004-11-16
EP1461693A4 (en) 2007-12-19

Similar Documents

Publication Publication Date Title
KR101005901B1 (ko) 버전을 업데이트 및 롤링백 하는 방법 및 시스템
US7373406B2 (en) Method and system for effectively communicating file properties and directory structures in a distributed file system
KR101071960B1 (ko) 리소스들을 프리로딩 하기 위한 방법 및 시스템
US7114180B1 (en) Method and system for authenticating and authorizing requestors interacting with content servers
US8661557B2 (en) Method and system for granting access to system and content
JP4056390B2 (ja) ウェブサイトのための安全なセッション管理および認証
US5919247A (en) Method for the distribution of code and data updates
US6601170B1 (en) Secure internet user state creation method and system with user supplied key and seeding
US6920560B2 (en) Secure network user states
JP3605501B2 (ja) 通信システム、メッセージ処理方法及びコンピュータ・システム
KR100455566B1 (ko) 코드 갱신을 위한 장치 및 방법
US6633978B1 (en) Method and apparatus for restoring computer resources
US9628549B1 (en) Method and system for controlling and accessing content servers
JP2009536377A (ja) リモートユーザに対するコンピューティング環境の提供を加速するためのシステムおよび方法
JPH09251426A (ja) ファイル暗号化システム及びその制御方法ならびに暗号ファイル受信システム及びその制御方法
KR20000037241A (ko) 트랜잭션 보안을 위한 지능형 보안 클라이언트/서버시스템 구현 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B701 Decision to grant
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20131211

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141210

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151208

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20171213

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20181211

Year of fee payment: 9