KR20080013862A - 전자 소프트웨어 다운로드를 위한 분할 다운로드 - Google Patents

전자 소프트웨어 다운로드를 위한 분할 다운로드 Download PDF

Info

Publication number
KR20080013862A
KR20080013862A KR1020077023540A KR20077023540A KR20080013862A KR 20080013862 A KR20080013862 A KR 20080013862A KR 1020077023540 A KR1020077023540 A KR 1020077023540A KR 20077023540 A KR20077023540 A KR 20077023540A KR 20080013862 A KR20080013862 A KR 20080013862A
Authority
KR
South Korea
Prior art keywords
software
isv
download
digital content
information
Prior art date
Application number
KR1020077023540A
Other languages
English (en)
Inventor
요크 알. 허턴
크리스토퍼 에스. 블랙레이
아제이 시카
다니엘 지. 네알트
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20080013862A publication Critical patent/KR20080013862A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0623Securing storage systems in relation to content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

컴포넌트 기반 프레임워크에서 다운로드 분산 엔진을 통한 전자 소프트웨어 다운로드의 분할 다운로드를 위한 시스템 및 방법이 개시된다. 다운로드 분산 엔진은 독립 소프트웨어 벤더(ISV)가 관련된 소프트웨어 및/또는 디지털 컨텐츠의 각 부분을 사용자에게 다운로드하는 한편, 제2 ISV가 소프트웨어 및/또는 디지털 컨텐츠의 다른 부분을 제공할 수 있게 한다.
분할 다운로드, 다운로드 분산 엔진, ISV, 전자 소프트웨어 다운로드

Description

전자 소프트웨어 다운로드를 위한 분할 다운로드{SPLIT DOWNLOAD FOR ELECTRONIC SOFTWARE DOWNLOADS}
컴퓨터 기술(예를 들어, 마이크로프로세서 속도, 기억 용량, 데이터 전송 대역폭, 소프트웨어 기능 등)의 증가하는 진보는 일반적으로 다양한 산업에서의 컴퓨터 어플리케이션의 향상에 기여했다. 흔히 서버들의 배열로 구성된, 강력한 서버 시스템들은 예를 들어, 월드 와이드 웹과 같은 외부 소스로부터 발생하는 서비스 요청에 일반적으로 제공된다.
소프트웨어 시스템이 더 복잡해짐에 따라, 복수의 객체(object)와 파일을 다운로드하고 이들로부터 이러한 시스템을 설치하는 것이 일반화되었다. 예를 들어, 소프트웨어 시스템은 수백의 파일 및 객체를 포함할 수 있으며, 여기서 소프트웨어 또는 어플리케이션 시스템을 설치하는 것은 하나 이상의 구축 기계(build machine)에 맡겨지고, 다운로드는 중간 저장 장치에 맡겨진다. 이러한 구축 기계 및 다운로드 프로세스는 예를 들어, 컴파일하고, 어셈블하고, 링크하고 및/또는 파일이나 객체를 해석할 수 있다. 일반적으로, 객체 지향(object-oriented) 컴퓨팅은 객체 모델에 기반하며, 여기서 "객체"라고 불리는 코드의 조각들은 데이터(예를 들어, 속성(attribute))를 포함하며 거기서 수행되는 동작(예를 들어, 연산(operation))들을 가질 수 있다. 객체는 자신의 인터페이스로 규정될 수 있으며, 인터페이스는 그 인터페이스의 객체에서 수행될 수 있는 연산과 각 연산의 매개 변수(parameter)를 포함하여, 객체의 특성과 행동을 규정한다. 객체의 특정한 인스턴스는 객체 참조(object reference)라 불리는 고유 식별자에 의해 분산 객체 시스템 내에서 식별된다.
완성된 소프트웨어 제품 안의 많은 필수 파일들은 여러 단계에서 구축될 수 있으며, 따라서 복수의 소스 및/또는 생성된/구축된 파일들을 필요로한다. 구축 프로세스(build process)의 한 부분에 의해 생성된 파일들은 구축 프로세스의 하나 이상의 다른 부분들로의 입력으로서 요구될 수 있으며, 구축 기계들은 원시 파일의 완전한 사본을 가질 수 있다. 예를 들어, 만약 구축 기계 A가 파일 A1을 생성하고, 구축 기계 B가 파일 B2를 생성하면, 구축 기계 A는 파일 A2를 생성하기 위해 파일 B1이 필요할 수 있고, 구축 기계 B는 파일 B2를 생성하기 위해 파일 A1이 필요할 수 있다.
분산 객체 시스템에서, 클라이언트는 또한 서버에 객체를 이미징(imaging)하는 프록시를 만들 수 있다. 일반적으로, 프록시는 객체의 이미지이며 여기서 객체는 다른 논리적 및/또는 물리적 엔티티(예를 들어, 기계, 프로세스, 네트워크 등)에 상주한다. 분산 시스템에서, 프록시는 효율을 높이기 위해 로컬 처리를 촉진할 수 있다. 이미징된 객체는 하나 이상의 인터페이스 및 베이스 클래스 데이터 유형의 제1 집합을 구현할 수 있다. 더 나아가, 그러한 객체는 프록시가 하나 이상의 속성들의 제1 집합 및/또는 객체를 이미지하기 위한 방법을 로드하도록 요구할 수 있다. 이미지된 객체를 위한 프록시가 생성되었을 때, 객체에 의해 구현된 인터페 이스 및 베이스 데이터 유형들은 일반적으로 자동으로 클라이언트로 로드된다.
구축과 관련된 구축 기계들로의 소프트웨어 시스템의 설치를 완성하기 위해 필요한 파일 분산은 네트워크 대역폭 집중적(network bandwidth intensive)이며, 대규모의 정보 전송을 필요로 하고, 그 정보 중 일부는 업로드 중에 손상되거나 심지어는 사용할 수 없게 될 수 있다. 예를 들어, 한 구축 기계가 자신의 몫인 구축을 완성하기 위해 단지 10개의 파일을 필요로 하는 한편, 다른 구축 기계는 자신의 몫인 구축을 완성하기 위해 200개의 파일을 필요로 할 수 있으며, 그럼에도 하나의 파일이나 객체만 누락되어도, 예를 들어, 판독, 검증(validation), 또는 실행중에 적절하게 로드하는 데 실패함으로써, 필수 어플리케이션의 정상적인 동작을 방해할 수 있다.
동시에, 어플리케이션 프로그램의 적절한 동작을 위해 복수의 ISV(independent software vendor)로부터의 다운로드가 요구될 수 있다. 이것은 다운로드 소프트웨어의 효율적인 개발 및 배치에 비능률을 초래할 수 있다. 예를 들어, 증명(certification) 및 시장 배달(market delivery) 프로세스는 불리한 영향을 받을 수 있다. 더 나아가, 비즈니스 정책 관점에서, 소프트웨어 벤더는 다른 소프트웨어 벤더가 액세스를 얻지 않도록 하면서 자신의 소프트웨어를 최종 사용자에게 직접 공급하기를 원할 수 있다. 또한, 그러한 소프트웨어의 전자 배포(electronic distribution)에 라이센스 제한이 존재할 수 있다. 이에 더해, 소프트웨어 개발자들은 자신의 작업물을 "잠재적으로 적대적인", 예를 들어, 허가된 장치에 라이센스가 발급되었다는 보장이 없는 사기의 가능성이 존재하는 플랫폼에 배포하지 않는다.
그러므로, 앞서 말한 전통적인 시스템 및 장치들과 관련된 예시적인 결함들을 극복할 필요가 있다.
아래에서는 본 발명의 몇몇 양상들에 대한 기본적인 이해를 제공하기 위해 본 발명의 간략화된 개요를 제시한다. 이 개요는 본 발명에 대한 폭넓은 개관이 아니다. 본 발명의 핵심/결정적인 요소들을 밝히거나 본 발명의 범위를 서술하려는 의도가 아니다. 단 하나의 목적은, 이후에 제시될 더 상세한 설명에 대한 도입으로써 본 발명에 대한 몇몇 개념을 제시하는 것이다.
본 발명은 각 ISV(independent software vendor)가 자신의 소프트웨어 및/또는 디지털 컨텐츠의 각 부분을 사용자에게 다운로드할 수 있도록 하는 다운로드 분산 엔진(distribution engine)을 사용함으로써, 컴포넌트 기반 프레임워크에서의 전자 소프트웨어 다운로드(ESD)의 분할 다운로드를 제공한다. 이와 같이, 다운로드 분산 엔진은, 각 ISV로부터 사용자에게 다운로드되어야 할 소프트웨어 부분들, 소프트웨어의 정상적인 실행을 위해 사용자가 아직 다운로드를 해야하는 추가적인 또는 부가적인 컴포넌트, 라이센스 요구, 빌링 절차 등과 같은 정보를 제공하기 위해 제1 ISV와 제2 ISV간의 데이터 교환을 제공할 수 있다. 여기의 설명은 우선적으로 제1 ISV와 제2 ISV가 상호작용하는 상황에서 예시되지만, 본 발명은 그렇게 제한적이지 않으며 셋 이상의 ISV들의 부분으로 구현될 수 있다. 이에 더해, 본 발명의 몇몇 양상에서 제1 ISV는 제2 ISV와 같은 엔티티일 수 있다.
관련된 양상에서, 다운로드 분산 엔진은, 제1 ISV로부터 사용자로의 소프트웨어 및/또는 디지털 컨텐츠의 다운로드를 관찰하고, 남아있는 소프트웨어 요소들을 제2 ISV로부터 사용자에게로 설치하기 위한 프로세스를 제공하기 위해 모니터링 컴포넌트를 더 포함할 수 있다. 예를 들어, 제1 ISV로부터의 다운로드가 개시될 때, 다운로드 정보(예를 들어, ID, 빌링, 라이센스 요구, 버저닝(versioning), 검증, 보안, 접근 권한, 디지털 저작권 관리 등)를 제공하기 위해 후선에서 토큰이 제2 ISV에게로 전달될 수 있으며, 여기서 제2 ISV는 다운로드되어야 할 소프트웨어의 적절한 버전을 제공하도록 촉구될 수 있다(예를 들어, 특정 지리, 언어 등을 위해). 따라서, 고객/최종 사용자는 소프트웨어를 다운로드할 때 끊김이 없는 경험을 즐길 수 있다. 제1 ISV 및 제2 ISV로부터의 이러한 다운로드는 동시적으로 일어나거나 미리 결정된 시간에 발생할 수 있고, 또는 이후의 시간으로 연기되어 고객/사용자에게 미리 알림(reminder notice)을 보낼 수도 있다. 더 나아가, 다운로드 분할의 일부로 인터럽트 능력이 사용가능하게 될 수 있으며, 여기서 사용자의 요청에 따라 다운로드들의 상태가 기록 및/또는 추적될 수 있다.
본 발명의 다른 양상에 따르면, 본 발명의 다운로드 분산 엔진은, 제1 또는 제2 ISV로부터 다운로드되어야 하는 소프트웨어의 누락된 부분을 검출하는 검출 컴포넌트, 그리고, 보충을 위하여, 누락된 부분을 어디서 다운로드 하는지 및/또는 다운로드된 소프트웨어의 누락된 부분과 관련된 문제들을 해결하기 위한 추가적인 정보를 어디서 얻을 수 있는지를 사용자들에게 알려주는 알림 컴포넌트를 포함할 수 있다. 일반적으로 이러한 것은 최종 사용자에게 다운로드된 소프트웨어에 대한 적절한 검증 및/또는 실행을 보장할 수 있다.
따라서, 기능들의 그룹을 포함하는 패키지와 같이, 제품이 복수의 작은 부분들로 만들어질 수 있는 컴포넌트 구동 아키텍처에서, 본 발명의 다운로드 분산 엔진은 라이센스 및 보안 문제와 관련된 문제들을 완화하면서 다운로드 프로세스를 원활하게 할 수 있다. 이와 같이, 각 ISV는 소프트웨어 분포에 대한 필수적인 제어를 유지할 수 있다. 뿐만 아니라, 각 다운로드를 위한 리콜, 패치 등이 적절한 ISV에 의해 즉시 제공될 수 있다. 이에 더해, 라이센스 번들의 배포가 이루어질 수 있어서, 디지털 저작권 관리 토큰들이 사용자들에게 전달될 수 있다.
다른 양상에서, 분할 다운로드를 이용하여 소프트웨어를 구매하고 배포시키는 시스템이 제공된다. 시스템은 복수의 ISV, 레코드 머천트(merchant of record) 및 다운로드 관리자를 포함한다. 각 ISV는 다운로드 가능 소프트웨어의 한 부분을 제공하도록 구성되며, 각 부분은 개별 ISV에 의해 제공된다. 레코드 머천트는 다운로드 가능 소프트웨어에 대한 고객으로부터의 주문을 다루도록 구성된다. 레코드 머천트는 또한 주문과 관련된 트랜잭션을 생성하고 ISV들에게 그 트랜잭션을 제공하기 위해 구성된다. 다운로드 관리자는 고객의 장치에 있는 클라이언트 컴포넌트이다. 다운로드 관리자는 ISV로부터 소프트웨어의 부분을 다운로드하고, 다운로드된 부분들로 완성된 소프트웨어를 만들도록 구성된다.
앞선 기술 및 관련된 결과를 달성하기 위해, 본 발명은, 아래 상세히 설명된 특징들을 포함한다. 이하의 설명과 상세하게 설명된 첨부 도면들은 본 발명의 예시적인 양상들을 확인시킨다. 하지만, 이 양상들은 본 발명의 원리가 쓰일 수 있는 여러 방법 중 일부만을 나타낸다. 다른 양상들, 본 발명의 이점 및 신규한 특징들은 아래의 본 발명에 대한 상세한 설명을 도면과 함께 숙고함으로써 명백해질 것이다.
도 1은 본 발명의 양상에 따른 다운로드 분산 엔진에 대한 개략적 블록도를 도시한다.
도 2는 본 발명의 양상에 따른 다운로드 분산 엔진을 갖는 컴포넌트 기반 환경에 대한 개략적 블록도를 도시한다.
도 3은 본 발명의 예시적인 양상에 따른 예시적인 다운로드 분산 엔진을 도시한다.
도 4는 본 발명의 특정 양상에 따라 다운로드된 소프트웨어/디지털 컨텐츠의 누락된 부분에 대한 정보를 제공해 줄 수 있는 분산 분석기(distribution resolver)에 대한 상세한 블록도를 도시한다.
도 5는 본 발명의 다른 양상에 따른 다운로드 분산 엔진의 일부로서 모니터링 시스템에 대한 일반적인 블록도를 도시한다.
도 6a 및 도 6b는 본 발명의 특정 양상에 따라, 고객 및/또는 최종 사용자 기계와 관련하여 제1 ISV 및 제2 ISV의 배치를 도시한다.
도 7은 본 발명의 양상에 따라 제1 ISV와 제2 ISV 사이의 쿼리 단계에 대한 예시적인 순서를 도시한다.
도 8은 본 발명의 특정 양상에 따라 분할 다운로드할 수 있는 ISV를 위한 예 시적인 아키텍처를 도시한다.
도 9는 최종 사용자에게로의 소프트웨어/디지털 컨텐츠 다운로드를 제1 ISV와 제2 ISV 사이에 분할하는 예시적인 방법론을 도시한다.
도 10은 본 발명의 다양한 양상들이 구현될 수 있는 적합한 컴퓨팅 환경에 대한 간결하고 일반적인 설명을 도시한다.
도 11은 본 발명의 한 양상에 따른 다운로드 분산 엔진을 사용할 수 있는 클라이언트-서버 시스템을 도시한다.
도 12는 분할 다운로드를 사용하여 소프트웨어를 구매 및 배포하기 위한 예시적인 시스템을 보여준다.
도 13은 분할 다운로드에 의해 제공될 소프트웨어에 대한 주문을 처리하기 위한 예시적인 프로세스를 보여준다.
본 발명은 이제 도면을 참조하여 설명되며, 여기서 같은 참조 번호는 전체에 걸쳐 같은 요소들을 나타내기 위해 사용된다. 아래의 설명에는, 설명의 목적을 위해, 본 발명에 대한 완전한 이해를 제공하기 위하여 다수의 구체적인 세부 사항들이 제시된다. 하지만, 본 발명이 이러한 구체적인 세부사항 없이도 실행될 수 있다는 것이 명백할 것이다. 다른 경우에서는, 본 발명에 대한 설명을 용이하게 하기 위하여 잘 알려진 구조와 장치들이 블록도 형태로 나타난다.
이 명세서에 사용될 때, "컴포넌트" 및 "시스템"이라는 용어는 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어인 컴퓨터 관 련 엔티티를 나타내기 위해 의도된다. 예를 들어, 컴포넌트는 프로세서에서 실행되고 있는 프로세스, 프로세서, 객체, 실행파일, 실행 스레드(thread), 프로그램, 및/또는 컴퓨터가 될 수 있지만, 이에 제한되는 것은 아니다. 예를 들어, 서버에 실행되고 있는 어플리케이션과 서버 모두 컴포넌트가 될 수 있다. 하나 이상의 컴포넌트는 프로세스 및/또는 실행 스레드에 상주할 수 있으며, 컴포넌트는 하나의 컴퓨터에 배치되거나 및/또는 둘 이상의 컴퓨터 사이에 분산될 수 있다.
우선적으로 도 1을 참조하면, 본 발명의 양상에 따른 다운로드 분산 엔진의 개략적 블록도가 도시되어있다. 이러한 다운로드 분산 엔진(100)은 N개의 독립적인 소프트웨어/디지털 컨텐츠 벤더(ISV)(102, 104, 106)(여기서 N은 정수)가 자신의 소프트웨어 및/또는 디지털 컨텐츠의 각 부분을 M개의 최종 사용자(101, 103, 및 105)(M은 정수)에게 다운로드할 수 있도록 한다. 이러한 최종 사용자들은 팜파일럿(palm pilot), 개인 휴대 정보 단말기, 미디어 플레이어, 텔레비전 세트, 컴퓨터 등과 같은 장치를 포함할 수 있다.
추가적으로, 최종 사용자(101, 103, 105)는 시스템 영역 네트워크 또는 다른 유형의 네트워크일 수 있는 네트워크 시스템(107)의 일부일 수 있으며, 개인용 컴퓨터, 서버 또는 다른 유형의 컴퓨터일 수 있는 여러 호스트(도시되지 않음)를 포함할 수 있다. 이러한 호스트는 I/O 요구(예를 들어, I/O 판독 또는 기입)를 개시하는 것뿐 아니라, 일반적으로 하나 이상의 어플리케이션 레벨(또는 사용자 레벨) 프로그램을 실행하는 것이 가능할 수 있다. 이에 더해, 네트워크 시스템(107)은 하나 이상의 I/O 유닛을 더 포함할 수 있으며, 여기서 이러한 I/O 유닛은 자신에 연결된 하나 이상의 I/O 컨트롤러를 포함할 수 있고, 각 I/O 유닛은 기억 장치(예를 들어, 하드 디스크 드라이브, 테이프 드라이브) 또는 다른 I/O 유닛 같은 여러 유형의 I/O 유닛 중 하나일 수 있다. 호스트 및 I/O 유닛과 거기에 부착된 I/O 컨트롤러 및 장치들은 클러스터와 같은 그룹으로 조직될 수 있으며, 여기서 각 클러스터는 하나 이상의 호스트와 일반적으로 하나 이상의 I/O 유닛(각 I/O 유닛은 하나 이상의 I/O 컨트롤러를 포함)을 포함한다. 호스트와 I/O 유닛은 하나 이상의 클러스터들의 노드의 집합을 연결하는(예를 들어, 호스트 및 I/O 유닛의 집합을 연결하는) 통신 링크(와이어, 커넥터, 케이블 등과 같은), 스위치 및 라우터의 모음을 통해 상호 연결될 수 있다.
이에 더해, 네트워크 시스템(107)은, 예를 들어, 이더넷 LAN, 토큰 링 LAN, 또는 기타 LAN, 또는 광역 통신망(WAN)일 수 있다. 또한, 네트워크 시스템(107)은 고정 배선(hardwired) 및/또는 광학적 및/또는 무선 접속 경로를 포함할 수 있다. 아래 상세히 설명되겠지만, 다운로드 분산 엔진(100)은, 각 ISV로부터 사용자에게로 다운로드될 소프트웨어 부분들, 소프트웨어를 적절하게 실행하기 위해 사용자가 아직 필요로하는 추가적인 컴포넌트, 라이센스 요구, 빌링 등과 같은 정보를 공급하기 위해 ISV(102, 104, 106) 간의 데이터 교환을 제공할 수 있다.
아래 더욱 상세히 논의되겠지만, 소프트웨어 번들의 다운로드는 소프트웨어 제공자에게 더 많은 효율과 각 제품에 대한 통제를 제공할 수 있도록 분할될 수 있다. 단일 ISV는 더 이상 각 제품과 관련된 모든 소프트웨어를 묶어서 만든 소프트웨어 번들을 고객에게 배포할 필요가 없다. 소프트웨어 번들은 이제 분할될 수 있 고, 서로 다른 엔티티(예를 들어, 각 소프트웨어의 실제 제작자)에 의해 최종 사용자에게 전자적으로 분배될 수 있다. 소프트웨어 번들을 분할함으로써, 제1 소프트웨어 제품 ISV와 관련된 소프트웨어 번들의 제2 부분들은 직접적으로 제2 부분들의 제조업자에 의해 최종 사용자에게 독립적으로 제공될 수 있다. 이러한 방식은 제2 소프트웨어의 제조업자에게 제품에 대한 더 많은 통제권을 준다(예를 들어, 배포, 배포의 방식, 설치, 유지 보수, 버저닝, 라이센싱, 보안 등).
소프트웨어의 이러한 배포를 위한 다양한 시나리오들이 더욱 상세하게 논의될 것이며, 이러한 시나리오는 예를 들어: (1) 제1 ISV로부터 소프트웨어가 다운로드 중이거나 다운로드 된 후, 제2 ISV는 제1 ISV의 소프트웨어와 관련된 자신의 각 소프트웨어를 최종 사용자에게 다운로드할 것을 촉구받으며, 이러한 촉구는 최종 사용자 또는 심지어 제1 ISV로부터 직접 발생할 수 있다; (2) 제2 ISV는 또한 제1 ISV를 자신의 소프트웨어의 다운로드를 위한 프록시로 사용할 수 있거나, 또는 대안적으로 제1 ISV와 그것의 각 소프트웨어를 위한 프록시의 역할을 할 수 있다; (3) 제2 ISV는 또한 디지털 저작권 관리를 사용하여 최종 사용자에게 각 소프트웨어를 위한 다수의 라이센스를 다운로드할 수 있다; (4) 처음의 다운로드 후에, 제2 ISV는 제1 ISV의 소프트웨어 및 최종 사용자의 다른 소프트웨어/하드웨어와의 동시성 및 호환성을 유지할 뿐 아니라, 자신의 소프트웨어에 관련된 버전 관리를 완화할 수 있다; (5) 소프트웨어의 배포는 무선뿐 아니라 고정 배선을 통해 수행될 수 있으며, 이러한 전자 배포를 실행하기 위해 가능한 통신 프로토콜뿐 아니라 어떠한 적절한 전송 매체라도 사용할 수 있다; (6) 전체가 전자 배포되는 것이 가장 통상 적일 것으로 생각되지만, 필요하다면 소프트웨어의 특정 부분들은 전자적으로 배포되고 다른 부분들은 물리적으로 배포되도록 배포가 양분될 수 있을 것으로 예상된다; (7) 소프트웨어 번들 각 부분들의 전자 배포를 실행하고 이를 용이하게 하기 위해 검증, 보안, 및 디지털 저작권 관리 스킴(scheme)이 사용될 수 있다. 앞서 말한 시나리오들 및 다른 시나리오들이 이 문서에 논의될 것이고 및/또는 이 문서의 교시를 통해 쉽게 이해될 것이며, 그러한 모든 실시예들은 여기에 첨부된 청구의 범위 내에 포함되도록 의도된다.
우선적으로 도 2를 참조하면, 다운로드한 소프트웨어 및/또는 디지털 컨텐츠의 누락된 부분을 검출하는 검출기 컴포넌트(203), 및 사용자에게 누락된 객체를 얻을 수 있는 곳 및/또는 누락된 부분과 관련된 문제의 해결에 대한 추가적인 정보를 얻을 수 있는 곳을 알려주는 알림 컴포넌트(205)를 사용함으로써, ISV(240)로부터 다운로드한 패킷(예를 들어, 기능들의 그룹)으로부터 어플리케이션을 설치하는 것을 용이하게 할 수 있는 다운로드 분산 엔진(201)이 도시되어 있다. 이와 같이, 제1 ISV로부터 소프트웨어를 다운로드하는 중에, 다운로드 분산 엔진(201)은 소프트웨어 번들의 누락된 부분을 검출할 수 있으며, 사용자가 제2 ISV로부터 누락된 부분을 다운로드할 수 있도록 하고, 및/또는 제2 ISV로부터 누락된 부분의 적절한 다운로드 및 실행과 관련된 문제들의 해결에 관련된 정보를 제공할 수 있다.
도시된 것과 같이, 시스템(200)은 어플리케이션 시스템(220)을 구축하는 것과 관련된 다운로드된 패킷 및/또는 파일의 배포 및 수집을 관리할 수 있다. 더 나아가, 이러한 컴포넌트 구동 아키텍처 환경에서, 통상적으로 컴포넌트는 계약상 지정된 인터페이스를 통해 액세스될 수 있는 기능성의 특정 부분이라 불릴 수 있다. 이러한 컴포넌트들은 특정 기능을 기술 및/또는 실행하는, 자체 포함된(self-contained) 명확히 식별가능한 아티팩트(artifact)일 수 있다. 예를 들어, 컴포넌트 기반 시스템(200)의 기본 능력들은 네트워크 간의 상호 운용성, 다른 하드웨어 또는 소프트웨어 플랫폼상의 이식성, 및 데이터 자원의 자기 관리(self-managing) 능력을 포함할 수 있다.
시스템 (200)은, 총괄하여 구축 기계(210)라 불리는 복수의 구축 기계(202, 204, 206, 208)(1 내지 L, L은 정수)를 포함할 수 있다. 본 기술 분야에 숙련된 자라면, 구축 기계(210)는 물리적 기계(예를 들어, 하나 이상의 컴퓨터), 및/또는 가상 컴퓨터(예를 들어, 하나 이상의 컴퓨터에 실행되고 있는 하나 이상의 프로세스)일 수 있다는 것이 이해되어야 한다. 구축 기계(210)는 어플리케이션 시스템(220)에서 사용되는 하나 이상의 구축 파일을 제공할 수 있다.
구축 기계(210)는 하나 이상의 소스 파일을 컴파일하고, 어셈블하고, 해석하고, 및/또는 링크하여 하나 이상의 구축 파일을 만들 수 있다. 구축 기계(210)의 한 세그먼트(segment)가 하나 이상의 구축 파일을 구축하는 동안, 구축 기계(210)의 다른 세그먼트는 게시되는 구축 파일 이름들의 목록을 작성할 수 있다. 예를 들어, 게시되는 파일은 ISV(240)로부터 다운로드되고 그러한 다운로드로부터 구축된 소프트웨어 시스템 또는 어플리케이션(220)과 관련된, 하나 이상의 메이크 파일(make file)에 게시된 파일로서 목록이 작성된 것일 수 있다. 구축 기계(210)는 구축 파일 이름의 목록을 구축 관리자(214)에게 전송할 수 있다. 구축 기계의 한 세그먼트는 또한 후-구축 기계(216)로 지정될 수 있으며, 여기서 구축 관리자(214)는 구축 기계의 각 세그먼트를 위해, 구축 기계(210)가 구축 파일의 모음 또는 집합(218)을 생성하는 후-구축 기계(216)로 전송해야 하는, 구축 파일 이름의 서브세트를 포함하는 목록을 결정할 수 있다. 구축 관리자(214)는 또한 구축 기계(210)의 각 세그먼트를 위해, 구축 기계(210)가 후-구축 기계(216)로부터 다시 받아야 하는 파일들의 이름의 서브세트를 포함하는 목록을 결정할 수 있다. 후-구축 기계(216)로 전송해야 할, 및 그로부터 수신해야 할 파일 이름의 목록이 구축 기계(210)에 배포되고 나면, 파일들은 후-구축 기계(216)로, 또 구축 기계로부터 전송될 수 있다. 파일 전송은 예를 들어, 구축 기계(210)의 세그먼트, 구축 관리자(214), 후-구축 기계(216), 또는 다른 프로세스에 의해 개시될 수 있다. 시스템(200)은 사용자의 기계에서 어플리케이션 시스템(220)의 구축을 완료하기 위해, 위에 설명된 프로세스의 하나 이상의 단계를 거칠 수 있다. 하나 이상의 단계에서, 시스템(200)은 후-구축 기계(216)로부터 파일을 취득하는 것을 개시하기 전에, 구축 기계(210)가 후-구축 기계(216)로의 복사 및 구축을 완료하기를 기다릴 수 있다. 구축 관리자(214), 및 후-구축 기계(216)가 독립적으로 도시되었지만, 구축 관리자(214) 및/또는 후-구축 기계(216)에 의해 실행되는 프로세스는 동일한 물리적 및/또는 가상적 기계 또는 기계들에 실행될 수 있음이 이해되어야 한다. 다운로드된 소프트웨어의 누락된 부분을 마주했을 때 어플리케이션 시스템(220)을 적절하게 실행하기 위해, 다운로드 분산 엔진(201)은 기계에 패킷을 업로드하는 중에 누락된 부분을 검출하는 검출 컴포넌트(203)를 사용하며, 그 결과 사용자는 적합한 ISV로부터 누락된 부분을 다운로드하거나, 알림 컴포넌트(205)를 통해 문제를 어떻게 해결해야 하는지에 대한 정보를 얻을 수 있다.
도 3은 분산 분석기(303)가 알림 컴포넌트(305)의 일부로서 작용하는, 본 발명의 예시적인 양상에 따른 예시적인 다운로드 분산 엔진(301)을 보여준다. 다운로드 분산 엔진(301)은 패킷 객체(310)가 ISV로부터의 소프트웨어 다운로드의 일부로서 다운로드될 수 있는 분산 객체 시스템에서 동작한다.
ISV로부터 사용자의 기계로 어플리케이션의 각 부분을 다운로드할 때, 이의 적절한 수행을 확실하게 하기 위해, 분산 분석기(303)는 어플리케이션의 누락된 부분의 적절한 다운로드를 위해 접촉해야 하는 특정 ISV에 대한 연락 정보(contact information)를 제공함으로써 어플리케이션의 누락된 부분의 제공을 용이하게 할 수 있다. 분산 분석기(303)는 제1 ISV로부터의 다운로드에서 어느 컴포넌트가 빠져있는지, 및 제2 ISV로부터 어느 컴포넌트를 받아야 하는지를 결정할 수 있다. 어플리케이션의 다운로드를 완성하기 위해서, 이러한 항목들을 검색하고 영속적으로 저장할 수 있으며, 여기서 분산 분석기(303)는 위에 설명된 프로세스의 한번 이상의 반복을 거칠 수 있다.
이제 도 4를 보면, 다운로드 소프트웨어의 누락된 부분, 및 그 누락된 부분을 얻을 수 있는 ISV 대한 정보를 제공할 수 있는 분산 분석기(403)에 대한 상세한 블록도가 도시되어 있다. 분산 분석기(403)는 다운로드 분산 엔진(401)에 의해 제공된 다운로드 배포 능력을 용이하게 하기 위해 하나 이상의 서브시스템(예를 들어, 메타데이터 판독기(410), 속성 식별 서브시스템(420), 속성 파퓰레이팅 서브시 스템(430))을 포함할 수 있다. 메타데이터 판독기(410)는 주소 분해되어야 하는 하나 이상의 누락된 객체 및/또는 데이터 유형과 관련된 하나 이상의 메타데이터 조각을 입력으로서 가질 수 있다. 이러한 메타데이터는 예를 들어, 메타데이터와 관련된 데이터 유형의 속성들의 목록(여기서 목록은 속성 이름, 유형, 크기 등을 포함함), 매개 변수 유형, 매개 변수 크기, 주소 등을 포함하는 정보와, 상호 작용이 요구되는 엔티티가 이용가능한 데이터 유형(예를 들어, 부모 클래스(parent class))에 대한 정의를 갖지 않는 경우에, 그 데이터 유형과 상호작용하기 위해 사용할 수 있는 하나 이상의 클래스를 식별하는 정보를 포함할 수 있다.
이에 더해, 소프트웨어 및 객체 또는 참조의 누락된 부분과 관련된 데이터 구조는 본 발명과 관련하여 사용될 수 있는 배열(array), 목록, 힙(heap), 스택, 테이블, 데이터베이스 레코드, 데이터베이스 테이블, 데이터베이스 및 데이터 큐브를 포함할 수 있다. 따라서, 누락된 참조 및/또는 객체의 하나 이상의 클래스를 식별하는 정보는 데이터 유형과 상호작용하고 데이터를 얻을 수 있는 곳을 결정하도록 사용할 수 있다. 메타데이터 판독기(410)는 속성 식별 서브시스템(420) 및 속성 파퓰레이팅 서브시스템(430)에 동작상 링크되어, 그러한 서브시스템들이 불일치하거나 누락된 객체 및/또는 데이터 유형을 식별하여 적절한 ISV 소스 참조와 비교하는 것을 용이하게 한다.
이에 더해, 분산 분석기(403)가 속성 식별 서브시스템(420)을 통해 참조 객체의 누락된 부분을 결정하고나면, 값(value)을 검색하고/하거나 적절한 ISV로부터 누락된 객체를 다운로드하기 위해 속성 파퓰레이팅 서브시스템(430)이 이용될 수 있다. 따라서, 컴포넌트 기반 환경에서, 본 발명은 사용자 기계에서의 어플리케이션의 적절한 다운로드 및 실행을 위해 복수의 ISV로부터의 분산 다운로드(distributed download)를 용이하게 할 수 있다.
이제 도 5를 참조하면, 본 발명의 특정 양상에 따른 모니터링 시스템(510)에 대한 일반적인 블록도가 다운로드 분산 엔진의 일부로서 도시되어있다. 모니터링 시스템은 다운로드 어플리케이션 및/또는 객체의 누락된 부분을 능동적으로 관찰할 수 있으며 적절한 ISV로부터 누락된 부분을 다운로드할 수 있도록 실시간 하이퍼링크를 제공할 수 있다. 이와 같이, 모니터링 컴포넌트(510)는 다운로드한 소프트웨어 및/또는 디지털 컨텐츠의 누락된 부분을 제공할 수 있는 적절한 ISV의 웹 링크에 대응하는 각 목표 사이트를 제공할 수 있다.
그에 따라, 다운로드한 소프트웨어 및/또는 객체의 누락된 부분이 모니터링 컴포넌트(510)에 관찰되면, 누락된 객체에 대한 정보는 링크 제어 컴포넌트(520)에 의해 모아지거나 수집될 수 있고 링크 제어 컴포넌트에 전달될 수 있다. 링크 제어 컴포넌트(520)는 모니터링 컴포넌트(510)로부터 전달된 정보를 검토할 수 있고 그것을 하나 이상의 저장된 링크 쿼리(530)와 비교할 수 있다. 링크 쿼리(530)는 복수의 링크(예를 들어, 하이퍼링크)를 위해서 복수의 다른 쿼리를 포함할 수 있다. 예를 들어, 주어진 어떤 링크에 대해, 적어도 하나의 쿼리가 사용자에 의해 설정되거나 프로그래밍될 수 있다. 쿼리는 만족되어야 하는 조건(condition)의 집합 또는 조건이 만족되었을 때에 링크에서 실행되어야하는 동작들을 포함할 수 있다. 각 쿼리는 적어도 하나의 하이퍼링크 및 관련된 목표 사이트에 대응할 수 있 다.
더 나아가, 모니터링 컴포넌트(510)가 다운로드 소프트웨어 또는 디지털 컨텐츠의 누락된 부분이 검출되었다고 결정하면, 모니터링 컴포넌트는 또한 목표 링크 컴포넌트(540)(예를 들어, 브라우저)를 통해 이를 사용자에게 통보할 수 있다. 누락된 참조 및/또는 객체를 검출할 때의 알림 동작의 예들로는 하이퍼링크의 색 변경하기, 누락된 어플리케이션과 관련된 문제의 해결을 위해 컨텐츠가 액세스되어야 한다는 것을 나타내도록 하이퍼링크 타이틀 수정하기, 및/또는 하이퍼링크에 기호를 더하거나 그로부터 기호 제거하기가 포함될 수 있다. 이뿐만 아니라, 하이퍼링크 강조(highlight), 하이퍼링크 주위에 선 그리기, 및/또는 하이퍼링크에 어떤 애니메이션 형태 더하기(예를 들어, 깜박이는 텍스트, 페이드-인/아웃 텍스트 등) 같은 다른 유형의 알림 동작들도 가능하다. 사용자는 또한 누락된 참조 및/또는 컴포넌트가 발견되었다는 것을 사용자에게 경고하기 위한 이메일 또는 음성 알림을 수신할 수 있다. 더 나아가, 사용자는 다운로드 프로그램 또는 디지털 컨텐츠 및/또는 객체의 누락된 부분을 성공적으로 로드하기 위해 적절한 ISV의 목표 웹사이트가 연결되어야 하는지 신속하게 확인하기 위해, 간단히 하이퍼링크 모니터 목록을 참조하여 하이퍼링크를 잠깐 볼 수 있다.
또, 각 ISV로부터 소프트웨어 또는 디지털 컨텐츠의 각 부분을 로딩하기 위해 적절한 링크에 액세스하는 것 및/또는 필요한 링크의 위치를 찾는 것과 관련하여, 본 발명은 다양한 인공지능 스킴을 사용할 수 있다. 예를 들어, 객체가 리로드(reload)되어야 하는지를 명시적 또는 암시적으로 학습하기 위한 프로세스, 또는 누락된 참조 또는 객체를 제공하는 ISV의 웹사이트에 대한 검색은, 자동 분류 시스템 및 프로세스를 통해 용이하게 될 수 있다. 분류는, 사용자가 자동으로 실행되기를 바라는 동작을 예측 또는 추론하기 위해 확률 및/또는 통계-기반 분석(예를 들어, 분석 유틸리티와 비용을 고려함)을 사용할 수 있다. 예를 들어, 서포트 벡터 머신(support vector machine,SVM) 분류기가 사용될 수 있다. 베이지안(Bayesian) 네트워크, 결정 트리, 및 상이한 독립성 패턴들을 제공하는 확률적 분류 모델을 포함하는 다른 분류 방식들이 사용될 수 있다. 여기에 사용된 분류는 또한 우선순위의 모델을 개발하기 위해 이용되는 통계적 회귀를 포함한다.
본 명세서를 통해 쉽게 이해되겠지만, 분류기가 물음에 대해 어떤 응답을 보낼지를 미리 결정된 기준에 따라 자동으로 결정하도록, 본 발명은 암시적으로(예를 들어, 사용자 행동 관찰, 외부 정보 수신을 통해) 트레이닝되었을 뿐 아니라 명시적으로(예를 들어, 일반적 트레이닝 데이터를 통해) 트레이닝된 분류기를 사용할 수 있다. 예를 들어, 잘 이해된 SVM에 대해, SVM은 분류기 구성자 및 특징 선택 모듈 내의 학습 또는 트레이닝 페이즈를 통해 구성된다. 분류기는 입력 속성 벡터 x=(x1, x2, x3, x4, xn)를, 그 입력이 한 클래스에 속할 신뢰도(confidence)에 대응시키는 함수 즉, f(x)=confidence(class)이다. 도 5에 도시한 것과 같이, 소프트웨어 및/또는 디지털 컨텐츠의 누락된 부분을 다운로드하기 위해, 언제, 어디서, 어떻게 적절한 ISV를 찾을 수 있는가를 추측 및/또는 결정하기 위해 인공 지능(AI) 컴포넌트(550)가 사용될 수 있다. AI 컴포넌트(550)는 본 발명의 다양한 양상을 용이하게 하는 것과 관련하여 위에 설명된 다수의 적절한 AI-기반 스킴 중 어떤 것 이라도 사용할 수 있다.
도 6a 및 도 6b는 고객, 및/또는 최종 사용자 기계와 관련하여 제1 ISV 및 제2 ISV의 배치를 도시한다. 도 6a의 배치에 도시된 것과 같이, ISV1(610) 및 ISV2(620)는 같은 단계의 고객 제어를 공유할 수 있다. 예를 들어, ISV1(610)은 고객/최종 사용자(650)에게 ISV2(620)로부터 구조화 조회 언어(SQL)를 요구하는 어플리케이션(630)을 제공할 수 있다. 이러한 ISV2(620)는 다운로드된 어플리케이션의 적절한 실행을 위해 요구되는 SQL 컴포넌트(640)를 고객(650)에게 곧바로 제공할 수 있다. 마찬가지로, 도 6b에 따른 배치는 ISV에 의한 클라이언트 및 분산 소프트웨어 제어의 다른 단계를 제공한다.
도 7은 소프트웨어 1 내지 m(m은 정수)을 제공하는 ISV1(702)와, ISV2(704) 사이의 쿼리 단계 순서를 도시한다. 통신 자체는 보안 채널을 통해 수행될 수 있다. ISV2(704)는 IP 레이어 구현, 서비스 측 TCP 레이어 구현, 서비스 측 TLS, HTTP 스택 구현, 웹 서비스 제공자 인터페이스 및 웹 서비스를 더 포함하는 서비스 측 보안 네트워크 스택(710)을 포함할 수 있다. ISV2(704)는 ISV2(704)와 ISV1(702) 사이의 네트워크 트래픽 보안을 위한 IKE(Internet Key Exchange) 서브시스템(708)을 더 포함할 수 있다. ISV2(704)는 또한 IKE 서브시스템(708)의 구성을 위해 정책 모듈(711)을 포함할 수 있다. 또한 정책 모듈(711)은, TCP/IP 드라이 버(754)를 통해 통신하는 보안 네트워크 스택(710)에 보안 구성 정보를 제공함으로써 ISV2(704)와 ISV1(702) 사이의 보안 네트워크 트래픽을 가능하게 한다.
ISV2(704)는 엔티티에 디지털 인증서를 발행하기 위한 메시지의 집합을 등록하고 수신할 수 있다. 예를 들어, 블록(714)에서, 구매하는 컴포넌트는 다양한 소프트웨어 제공에 대한 구매 쿼리를 위해 ISV2(704)에 문의할 수 있다. 다음, 블록(716)에서 다양한 소프트웨어와 서비스의 조건을 식별하는 쿼리 응답이 ISV2(704)에 다시 전달된다. 이어서, 블록(718)에서, 빌링 쿼리가 ISV2(704)에 전달된다. 그 다음, 블록(720)에서, 디지털 인증서 발행을 위한 다양한 빌링 요구사항에 관한 응답이 준비되어 ISV1에 다시 전달될 수 있다.
다음, ISV1은, ISV2(704)와 ISV1(702) 사이의 구매 요청/응답 쌍(722(a) 및 722(b))의 교환을 통해 구매를 위한 희망하는 계획을 선택할 수 있다. 마찬가지로, 소프트웨어의 업데이트를 요청하고 패치 등을 제공하기 위해, ISV2(704)와 최종 사용자 기계들 간에 쿼리와 응답의 집합(도시되지 않음)들이 교환될 수 있다. 구매 및 업데이트 동작들은 또한 최종 사용자 또는 ISV1(702)가 ISV2(704)에 자신을 인증하기 위한 메커니즘을 포함할 수 있다.
도 8은 본 발명의 양상에 따라 다운로드를 제공할 수 있는 ISV1(800) 시스템의 블록도를 도시한다. 시스템은 허가, 보안, 검증을 추적하고 시스템에 대한 클 라이언트 또는 다른 ISV2의 연결을 검증하기 위해 ISV 라이브러리(814)와 상호작용할 수 있는 ISV 관리자(810)를 포함할 수 있다. 또한, 예를 들어, 복수의 기계들 간에서 프로세싱의 균형을 잡음으로써 어느 하나의 기계에 대한 부담을 완화하도록, ISV1(800)과의 데이터 교환을 요청하는 어떤 기계에서의 데이터 전달을 개시, 일시 중지, 다시 시작 및/또는 정지할지를 결정하기 위해, 로드 임계값이 ISV 관리자(810)에 의해 제공될 수 있다. 통상적으로, 메시지 전송 세션(예를 들어, 연결)이 개시되었을 때, ISV 관리자(810)는 세션을 위한 연결 인스턴스를 생성할 수 있다. 연결 인스턴스는, 예를 들어, 클라이언트, 소프트웨어 다운로드, 관련된 다른 ISV, 메시지, 및/또는 연결 ID(예를 들어, 킵-얼라이브(keep-alive) 메시지)를 나타내는 정보로 채워질 수 있다. 이러한 정보는 ISV1과 클라이언트 또는 다른 ISV2 사이의 메시지 전송을 시작하기 위해 사용될 수 있다. 이에 더해, 연결 ID는 다른 기계들 내의 메시지 전송을 추적하기 위해 사용될 수 있다.
연결 인스턴스는 전송 경과를 반영하고 전송 히스토리를 제공하기 위해 추가적으로 동적으로 업데이트될 수 있다. 예를 들어, 성공적으로 전송된 또는 실패한 어떤 부분(전체 메시지 또는 소프트웨어 다운로드를 포함)을 나타내는 표시는 연결 인스턴스와 관련지어질 수 있다. 전송 히스토리는 전송 개시와 완료, 일시 정지 및 다시 시작, 통신 동작 오류 수준, 재제출(re-submission), 서비스 기계의 변경 등과 관련된 정보를 포함할 수 있다.
예를 들어, ISV1(800)이 클라이언트 또는 최종 사용자를 위한 연결을 구축하 기 위해 호출되었을 때, ISV 관리자(810)는 이러한 연결을 위한 연결 인스턴스를 생성하기 위해 기계 ID(예를 들어, GUID(globally unique identifier))를 추적할 수 있다. 연결 인스턴스는 ISV 라이브러리(814)의 일부인 시스템 매개 변수를 통해, 소프트웨어가 다운로드되어야 하는 어떤 기계의 ID라도 포함할 수 있다. 이러한 정보는 요구되는 기계의 위치를 찾고 요구되는 기계 및 어댑터에 대한 액세스가 제공되었거나 적절하게 등록되었음을 검증하기 위해 사용될 수 있다. 호출은 클라이언트 및/또는 다른 ISV로부터의 메시지를 나타내는 정보를 포함하며, 이러한 정보는 추가적으로 연결 인스턴스에 포함될 수 있다. 이 정보는 클라이언트 및 다운로드된 소프트웨어의 위치를 찾고 검증하는데 사용될 수 있다. 이에 더해, 연결 ID와 요구되는 다운로드 매개 변수들이, 연결 인스턴스에 대한 키로서 포함되어 사용될 수 있으며, 또한 전송 세션을 관리하기 위해 ISV 관리자(810)에 의해서도 사용될 수 있다. ISV측 또는 클라이언트측의 하나 보다 많은 기계가 복수의 분산된 기계들의 부분으로서 연결을 요청할 수 있음이 이해되어야 한다. 예를 들어, ISV와 최종 사용자 간의 다운로드 세션 중에 다른 ISV가 현존하는 다운로드 세션에 합류할 수 있으며, 이러한 다운로드 세션을 관찰하고/하거나 이에 관여하기 위해, 캐시된 다운로드 히스토리를 검색할 수 있다.
도 9는 본 발명의 양상에 따른 분할 다운로드의 방법론(900)을 도시한다. 여기에 예시적인 방법론이 다양한 사건 및/또는 동작을 대표하는 일련의 블록으로 도시되었지만, 본 발명은 도시된 이러한 블록의 순서에 제한된 것은 아니다. 예를 들어, 몇몇 동작 또는 사건들은, 본 발명에 따라, 여기에 도시된 순서와는 별개로, 다른 순서로 발생하고/하거나 다른 동작 또는 사건들과 동시에 발생할 수 있다. 이에 더해, 본 발명에 따른 방법론을 구현하기 위해 모든 도시된 블록, 사건 또는 동작들이 요구되지 않을 수 있다. 더 나아가, 본 발명에 따른 예시적인 방법 및 다른 방법들은 도시되거나 설명되지 않은 다른 시스템 및 장치와 관련해서 뿐 아니라, 여기에 도시되고 설명된 방법과 관련하여 구현될 수 있다.
우선적으로 블록(910)에서, 소프트웨어 또는 디지털 컨텐츠의 제1 부분이 제1 ISV로부터 최종 사용자에게로 다운로드되고 있다. 다음, 블록(920)에서 제2 ISV가 이러한 다운로드에 대한 알림, 및 다운로드된 소프트웨어의 제1 부분을 보충하기 위한 요청을 수신한다. 이어서, 블록(930)에서, 제2 ISV는 ISV의 제2 부분을 최종 사용자에게 다운로드한다. 이렇게 함으로써, 최종 사용자는 제1 및 제2 ISV에 의해 분할 형식으로 다운로드된 어플리케이션(940)을 적절하게 실행할 수 있다.
이제 도 10을 참조하면, 본 발명의 다양한 양상들이 구현될 수 있는 적합한 컴퓨팅 환경에 대한 간결하고 일반적인 설명이 도시된다. 본 발명이 위에서 컴퓨터 및/또는 컴퓨터들에서 실행되는 컴퓨터 프로그램의 컴퓨터 실행가능 명령의 일반적인 범위에서 설명되었지만, 본 분야의 숙련된 자들은 본 발명이 또한 다른 프로그램 모듈과 결합하여 구현될 수 있음을 이해할 것이다. 일반적으로, 프로그램 모듈은 특정한 작업을 수행 및/또는 특정한 추상적 데이터 유형을 구현하는 루틴, 프로그램, 컴포넌트, 데이터 구조 등을 포함한다. 더 나아가, 본 분야의 숙련된 자들은 본 발명의 방법들이 단일 프로세서 또는 멀티 프로세서 컴퓨터 시스템을 포함하는 다른 컴퓨터 시스템 구성, 개인용 컴퓨터, 핸드헬드 컴퓨팅 장치, 마이크로 프로세서-기반 또는 프로그램 가능 가전제품뿐 아니라, 소형 컴퓨터, 메인프레임 컴퓨터 등을 포함할 수 있다는 것을 이해할 것이다. 앞서 설명된 것과 같이, 설명된 본 발명의 양상들은 통신 네트워크를 통해 링크된 원격 프로세싱 장치에 의해 작업이 수행되는 분산 컴퓨팅 환경에서 실행될 수 있다. 하지만, 본 발명의 모든 양상이 아니라, 몇몇 양상들이 자립형(stand-alone) 컴퓨터에서 실행될 수 있다. 분산 컴퓨팅 환경에서, 프로그램 모듈은 근거리 및 원격 메모리 저장 장치 모두에 위치할 수 있다. 예시적인 환경은 처리 장치(1021)를 포함하는 컴퓨터(1020), 시스템 메모리(1022), 및 시스템 메모리를 포함한 다양한 시스템 컴포넌트를 처리 장치(1021)에 연결하는 시스템 버스(1023)를 포함한다. 처리 장치(1021)는 상업적으로 구입할 수 있는 다양한 프로세서 중 어떤 것도 될 수 있다. 듀얼 마이크로프로세서 및 다른 멀티 프로세서 아키텍처 또한 처리 장치(1021)로 사용될 수 있다.
시스템 버스는 상업적으로 얻을 수 있는 다양한 버스 아키텍처 중 어떤 것이라도 사용하는 USB, 1394, 주변 장치 버스, 및 로컬 버스를 포함하는 여러 유형의 버스 구조일 수 있다. 시스템 메모리는 판독 전용 기억장치(ROM)(1024)와 랜덤 액세스 메모리(RAM)(1025)를 포함할 수 있다. 스타트 업 중에서와 같이, 컴퓨터(1020) 내 요소들 간의 정보 전송을 돕는 기본 루틴을 포함하는 기본 I/O 체계(BIOS)가 ROM(1024)에 내장되어 있다.
컴퓨터(1020)는 하드 디스크 드라이브(1027), 예를 들어, 이동식 디스크(1029)를 판독하거나 그에 기입하기 위한 자기 디스크 드라이브(1028), 및 예를 들어, CD-ROM 디스크(1031) 또는 다른 광학 매체를 판독하거나 그에 기입하기 위한 광 디스크 드라이브(1030)를 포함한다. 하드 디스크 드라이브(1027), 자기 디스크 드라이브(1028), 광 디스크 드라이브(1030)는 하드 디스크 드라이브 인터페이스(1032), 자기 디스크 드라이브 인터페이스(1033), 및 광 디스크 드라이브 인터페이스(1034) 각각에 의해 시스템 버스(1023)에 연결된다. 드라이브 및 그와 관련된 컴퓨터 판독가능 매체는 컴퓨터(1020)를 위하여 데이터의 비휘발성 저장소, 데이터 구조, 컴퓨터 실행가능 명령 등을 제공한다. 컴퓨터 판독가능 매체에 대한 위의 설명이 하드 디스크, 이동식 자기 디스크 및 CD를 나타내지만, 본 분야의 숙련된 자들은 자기 카세트, 플래시 메모리 카드, 디지털 비디오 디스크, 베르누이 카트리지 등과 같은 컴퓨터 판독가능한 다른 유형의 매체 역시 예시적인 운영 환경에서 사용될 수 있으며, 더 나아가 그런 매체 모두 본 발명의 방법을 수행하기 위한 컴퓨터 실행가능 명령을 포함할 수 있음을 이해해야 한다.
운영체제(1035), 하나 이상의 어플리케이션 프로그램(1036), 다른 프로그램 모듈(1037), 및 프로그램 데이터(1038)를 포함하는 다수의 프로그램 모듈은 드라이브들 및 RAM(1025)에 내장될 수 있다. 도시된 컴퓨터의 운영체제(1035)는 실질적으로 상업적으로 구입가능한 어떤 운영체제도 될 수 있다.
사용자는 키보드(1040) 및 마우스(1042)와 같은 포인팅 장치를 통해 컴퓨터(1020)에 명령과 정보를 입력할 수 있다. 다른 입력 장치(도시되지 않음)는 마이크로폰, 조이스틱, 게임 패드, 위성, 스캐너 등을 포함할 수 있다. 이들 및 다른 입력 장치들은 종종 시스템 버스에 연결된 직렬 포트 인터페이스(1046)를 통해 처리 장치(1021)에 연결되지만, 병렬 포트, 게임 포트 또는 범용 직렬 버스(USB)와 같은 다른 인터페이스를 통해 연결될 수도 있다. 모니터(1047) 또는 다른 유형의 디스플레이 장치 또한 비디오 어댑터(1048)와 같은 인터페이스를 통해 시스템 버스(1023)에 연결된다. 모니터에 더해, 컴퓨터는 통상적으로 스피커 및 프린터 같은 다른 주변 출력 장치(도시되지 않음)를 포함한다.
컴퓨터(1020)는 원격 컴퓨터(1049)와 같은 하나 이상의 원격 컴퓨터에 대한 논리적 접속을 통해 네트워크 환경에서 동작할 수 있다. 원격 컴퓨터(1049)는 워크스테이션, 서버 컴퓨터, 라우터, 피어 장치 또는 다른 공통 네트워크 노드일 수 있으며, 도 10에 메모리 저장 장치(1050)만 도시되어 있지만, 통상적으로 컴퓨터(1020)와 관련된 것으로 설명된 여러 또는 모든 요소들을 포함한다. 도 10에 도시된 논리적 접속은 근거리 통신망(LAN)(1051)과 광역 통신망(WAN)(1052)을 포함할 수 있다. 이러한 네트워킹 환경은 사무실, 전사적 네트워크, 인트라넷 및 인터넷에서 흔하다.
LAN 네트워킹 환경에서 사용될 때, 컴퓨터(1020)는 네트워크 인터페이스 또는 어댑터(1053)를 통해 근거리 네트워크(1051)에 접속할 수 있다. WAN 네트워킹 환경에서 사용될 때, 컴퓨터(1020)는 일반적으로 모뎀(1054)을 포함할 수 있고, 및/또는 LAN상의 통신 서버에 연결되고, 및/또는 인터넷과 같은 광역 통신망 네트워크에 통신을 구축하기 위한 다른 수단을 가지고 있다. 내장 또는 외장일 수 있는 모뎀(1054)은 직렬 포트 인터페이스(1046)를 통해 시스템 버스(1023)에 연결될 수 있다. 네트워크로 연결된 환경에서, 컴퓨터(1020)와 관련된 것으로 도시된 프로그램 모듈, 또는 그의 부분들은, 원격 저장 장치에 저장될 수 있다. 도시된 네트워 크 연결은 예시적인 것이며 컴퓨터 간에 통신 링크를 구축하기 위한 다른 방법들이 사용될 수 있음이 이해되어야 한다.
컴퓨터 프로그래밍 분야에 숙련된 자들의 관행에 따라, 달리 표시되어 있지 않은 한, 본 발명은 컴퓨터(1020)와 같은 컴퓨터에 의해 수행되는 동작의 기호적 표현과 액트를 참조하여 설명되었다. 이러한 액트와 동작들은 때때로 컴퓨터-실행되는(computer-executed) 것으로 불린다. 액트들과 기호적으로 표현된 동작들은 처리 장치(1021)에 의한 데이터 비트를 나타내는 전기 신호의 조작 처리를 포함하며, 이것은 결과적인 전기 신호 표현의 변환 또는 축소를 발생시키고, 메모리 시스템(시스템 메모리(1022), 하드 드라이브(1027), 플로피 디스크(1028), 및 CD-ROM(1031)을 포함)의 메모리 위치에서 데이터 비트의 유지를 일으킴으로써 다른 신호의 처리뿐 아니라 컴퓨터 시스템의 작업을 재구성 또는 다르게 변경시킨다. 이러한 데이터 비트가 유지되는 메모리 위치는 데이터 비트에 대응하는 특정한 전기적, 자기적, 또는 광학적 속성을 가진 물리적 위치이다.
이제 도 11을 참조하면, 분산 다운로드를 사용할 수 있는 클라이언트-서버 시스템(1100)이 본 발명의 한 양상에 따라 도시되어있다. 클라이언트(1120)는 하드웨어 및/또는 소프트웨어(예를 들어, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 시스템(1100)은 또한 하나 이상의 서버(1140)를 포함한다. 서버(1140) 또한 하드웨어 및/또는 소프트웨어(예를 들어, 스레드, 프로세스, 컴퓨팅 장치)일 수 있다. 예를 들어, 이러한 서버(1140)는 본 발명을 사용하여 변경을 수행하기 위해 스레드를 저장할 수 있다. 클라이언트(1120)와 서버(1140)는 본 발명에 따라 전송 되는 데이터 패킷의 형태로 둘 이상의 컴퓨터 프로세스 사이에 통신할 수 있다. 도시된 것과 같이, 시스템(1100)은 클라이언트(1120)와 서버(1140) 사이의 통신을 용이하게 할 수 있는 통신 프레임워크(1180)를 포함한다. 클라이언트(1120)는 클라이언트(1120)로부터 근거리에 있는, 정보를 저장할 수 있는 하나 이상의 클라이언트 데이터 저장소(1110)에 동작상 연결되어 있다. 또한, 클라이언트(1120)는 서버 프로세스를 실행하는 서버 컴퓨터(1140)에 위치한 데이터베이스(1160)를 액세스하고 업데이트할 수 있다. 본 발명의 한 양상에서, 통신 프레임워크(1180)는 클라이언트 프로세스가 웹 브라우저이고 서버 프로세스가 웹 서버인 인터넷일 수 있다. 이와 같이, 전형적인 클라이언트(1120)는 중앙 처리 장치(CPU), 시스템 메모리, 개인용 컴퓨터를 인터넷에 연결하기 위한 모뎀 또는 네트워크 카드, 및 디스플레이뿐만 아니라 키보드, 마우스 등과 같은 다른 컴포넌트가 있는 전통적인 개인용 컴퓨터 같은 다목적 컴퓨터일 수 있다. 마찬가지로, 전형적인 서버(1140)는 대학 또는 기업의 메인 프레임 컴퓨터, 또는 전용 워크스테이션 등일 수 있다.
도 12는 분산 다운로드를 이용하여 소프트웨어를 구매하고 분배하기 위한 예시적인 시스템(1200)을 보여준다. 시스템(1200)은 고객 장치(1208)와 같은 고객에게 소프트웨어를 제공하도록 구성된 다수의 ISV(1202)를 포함한다. 각 ISV는 소프트웨어의 부분을 제공하도록 구성되었다. 서로 다른 ISV로부터 제공된 부분들은 다운로드되고, 다음 완전한 소프트웨어를 만들기 위해 사용된다. 예를 들어, 고객 장치(1208)는 소프트웨어 부분들의 다운로드를 관리하기 위해 다운로드 관리자(DLM)(1210)를 포함할 수 있다.
도 12에 도시된 것과 같이, 시스템(1200)은 레코드 머천트(MOR)(1204), 전송 관리자(TM)(1212), 인가받은 머천트(authorized merchant, AUM)(1206) 또한 포함한다. MOR(1204)은 ISV(1202)에서 제공되는 소프트웨어의 판매를 관리하고 지원하는 데 책임이 있는 머천트이다. MOR(1204)은 트랜잭션 지원, 복귀, ISV(1202) 지불하기 등을 다루도록 구성될 수 있다. 예를 들어, MOR(1204)은 고객 장치(1208)로부터 소프트웨어를 구매하려는 요청을 수신하고 구매를 위한 트랜잭션을 생성하도록 구성된다. MOR(1204)은 또한 ISV(1202)로부터 레코드 업데이트를 수신하기 위해 구성되었다. 업데이트는 주기적인 트랜잭션 쿼리, 빌링 정보 등을 포함할 수 있다. TM(1212)은 파일 전송 요청 및 허가를 제어하고, MOR(1204)과 ISV(1202) 간에 데이터 전송 및 빌링 정보를 매개하기 위해 구성되었다. AUM(1206)은 MOR(1204)을 대신하여 동작하고 있는 대리자이다. AUM(1206)은 MOR(1204)의 모든 역할을 맡을 수 있지만, ISV(1202)의 대리자로서의 역할은 맡을 수 없다. AUM은 선택적인 컴포넌트이며 MOR(1204)이 고객 장치(1208)와 직접 상호작용할 수 있다.
예시적인 소프트웨어 구매 시나리오에서, 고객 장치(1208)는 특정한 소프트웨어 부분에 대한 주문을 포함하는 메시지(1251)를 AUM(1206)에 보낸다. 주문은 소프트웨어를 위한 식별자, 수량, 신용 카드 정보, 개인 정보 등을 포함할 수 있다. AUM(1206)은 주문을 수신하고, 주문과 관련된 요청을 포함하는 메시지(1252)를 MOR(1204)에 보낸다. 요청은 고객을 위한 식별자, 요청을 위한 식별자, 지리적 위치, 주문 등을 포함할 수 있다. MOR(1204)은 요청을 수신하고 요청과 관련된 트랜잭션을 생성한다. MOR(1204)은 메시지(1253)와 함께 트랜잭션을 TM(1212)에 보 낸다. 메시지(1253)는 원래 요청의 정보뿐 아니라, MOR(1204)을 위한 식별자, 트랜잭션 식별자, 일련 번호, 고객과 관련된 데이터, 상태 정보 등과 같은 다른 정보를 포함할 수 있다. MOR(1204)은 AUM(1206)으로의 트랜잭션과 관련된 정보를 포함하는 메시지(1257)를 AUM(1206)으로 보낸다.
TM(1212)은 MOR(1204)로부터 트랜잭션을 수신하고 트랜잭션과 함께 메시지(1254)를 적절한 ISV(1202)로 보낸다. 일반적으로, TM(1212)은 구매되는 소프트웨어의 부분을 제공하는 특정한 ISV로 트랜잭션을 보낸다. 이에 대한 응답으로, 특정한 ISV는 다운로딩 허가 및 관련된 정보를 포함하는 메시지(1255)를 TM(1212)에 보내는데, 이 메시지는 ISV 식별자, 키, 허가 데이터 등을 포함할 수 있다. TM(1212)은 메시지(1255)를 수신하고, 다운로딩 허가 및 관련된 정보를 메시지(1256)로 DLM(1210)에 보낸다. MOR(1204)은 구매 기록, 다운로딩 위치, 소프트웨어를 위한 라이센스 등과 같은 주문에 대한 정보를 포함하는 메시지(1258)를 고객 장치(1208)에 보낸다. 메시지(1258)는 이메일, 에스-메일(s-mail) 등과 같은 어떤 유형의 통신으로도 보낼 수 있다. DLM(1210)은 소프트웨어의 부분을 제공하는 ISV로부터 구매 소프트웨어를 다운로드하기 위해 ISV(1202)와 통신을 구축한다. DLM(1210)은 고객이 소프트웨어를 다운로드하도록 허가받았다는 것을 확증하기 위해 메시지(1256)로부터 수신한 다운로딩 허가를 ISV에 제공한다.
다운로딩이 완료된 후, DLM(1210)은 확인(confirmation)을 포함하는 메시지(1260)를 TM(1212)에 보낸다. TM(1212)은 다운로드를 확인하고 트랜잭션을 완료하기 위해 메시지(1261)를 ISV(1202)와 MOR(1204)에 보낸다.
도 13은 분할 다운로드를 통해 제공될 소프트웨어에 대한 주문을 처리하기 위한 예시적인 프로세스(1300)를 보여준다. 프로세스(1300)는 분할 다운로드 소프트웨어 구매 시스템이 소프트웨어에 대한 주문을 처리하도록 레코드 머천트에 의해 구현될 수 있다. 블록(1302)에서, 고객으로부터 구매 주문이 수신된다. 주문은 직접 고객 장치로부터 수신되거나 또는 인가받은 머천트로부터 수신될 수 있다. 블록(1304)에서, 소프트웨어 주문과 관련된 트랜잭션이 생성된다. 블록(1306)에서, 트랜잭션은 소프트웨어 부분을 제공하는 독립 소프트웨어 벤더로 보내진다. 블록(1308)에서, 소프트웨어를 위한 구매 및 다운로딩 정보가 결정된다. 블록(1310)에서, 구매 및 다운로딩 정보가 고객에게 제공된다. 예를 들어, 정보는 이메일을 통해 고객에게 제공될 수 있다. 통상적으로, 다운로딩 허가는 레코드 머천트를 통하지 않고 별개의 소스로부터 고객에게 제공된다. 블록(1312)에서, ISV로부터 소프트웨어가 다운로드된 후 고객으로부터 확인이 수신된다. 블록(1314)에서, ISV와의 트랜잭션이 완료된다.
본 발명이 특정 도시된 양상과 관련하여 도시되고 설명되었지만, 본 명세서와 첨부된 도면을 읽고 이해함으로써 본 분야에 숙련된 자들에게 동등한 개조 및 변경이 떠오를 것이라는 것이 이해되어야 한다. 특별히 위에 설명된 컴포넌트(어셈블리, 장치, 회선, 시스템 등)에 의해 수행되는 다양한 기능들에 대하여, 이러한 컴포넌트를 설명하기 위해 사용된 용어("수단(mean)"에 대한 참조를 포함하여)들은, 달리 표시되어 있지 않는 한, 본 명세서에 설명된 본 발명의 예시적인 양상들의 기능을 수행하는 개시된 구조와 구조적으로 동등하지 않더라도, 설명된 컴포넌 트의 명시된 기능을 수행하는 (예를 들어, 기능적으로 동등한) 컴포넌트에 대응되도록 의도된다. 이 점에 있어서, 본 발명은 시스템뿐 아니라, 본 발명의 다양한 방법들의 동작 및/또는 사건을 수행하기 위한 컴퓨터 실행가능 명령을 갖는 컴퓨터 판독가능 매체를 포함한다는 것 또한 이해되어야 한다. 더 나아가, "포함하다(includes)", "포함하는(including)", "가지고 있는(has)", "가지고 있는(having)"이라는 용어, 및 이의 변형들이 상세한 설명 또는 청구에 사용된 범위에서, 이러한 용어들은 "포함하다(comprising)"라는 용어와 비슷한 방법으로 포괄적인 것으로 의도된 것이다.

Claims (20)

  1. 디지털 컨텐츠의 분할 다운로드를 용이하게 하는 시스템으로서,
    다운로드된 디지털 컨텐츠의 누락된 부분에 대한 정보를 독립 소프트웨어 벤더(ISV)에 제공하는 다운로드 분산 엔진, 및
    상기 다운로드된 디지털 컨텐츠를 완성하기 위해 상기 독립 소프트웨어 벤더에 의해 제공된 추가적인 디지털 컨텐츠
    를 포함하는 시스템.
  2. 제1항에 있어서,
    상기 다운로드 분산 엔진은 상기 누락된 부분을 검출하는 검출기 컴포넌트를 포함하는 시스템.
  3. 제1항에 있어서,
    상기 다운로드 분산 엔진은, 상기 누락된 부분을 어디서 다운로드할지 또는 상기 누락된 부분과 관련된 문제들의 해결에 관한 추가적인 정보를 어디서 얻는지를 사용자에게 알리는 알림 컴포넌트를 더 포함하는 시스템.
  4. 제1항에 있어서,
    상기 다운로드 분산 엔진은 상기 누락된 부분을 설치하기 위한 프로세스를 제공하는 모니터링 컴포넌트를 더 포함하는 시스템.
  5. 제4항에 있어서,
    상기 모니터링 컴포넌트는 상기 ISV로부터 상기 누락된 부분을 다운로드하기 위한 실시간 하이퍼링크를 제공하는 시스템.
  6. 제1항에 있어서,
    상기 다운로드 분산 엔진은 다운로드를 위한 상기 누락된 부분의 입수 가능성을 결정하는 분산 분석기(distribution resolver)를 더 포함하는 시스템.
  7. 제6항에 있어서,
    상기 분산 분석기는 상기 누락된 부분에 대한 정보를 얻기 위해 메타데이터 판독기 컴포넌트를 더 포함하는 시스템.
  8. 디지털 컨텐츠를 분할 다운로드하기 위한 방법으로서,
    상기 디지털 컨텐츠의 제1 부분을 제1 ISV에 의해 다운로드하는 단계, 및
    상기 다운로드하는 단계에 관한 정보를 제2 ISV에 제공하는 단계
    를 포함하는 방법.
  9. 제8항에 있어서,
    최종 사용자에 의해, 상기 디지털 컨텐츠의 제1 부분을 다운로드하는 단계를 개시하는 단계를 더 포함하는 방법.
  10. 디지털 컨텐츠의 분할 다운로드를 용이하게 하는 시스템으로서,
    다운로드된 디지털 컨텐츠의 누락된 부분에 관한 정보를 ISV에 제공하는 수단, 및
    상기 디지털 컨텐츠를 보충하기 위한 수단
    을 포함하는 시스템.
  11. 다운로드 가능 소프트웨어를 제공하기 위한 컴퓨팅 장치로서,
    상기 다운로드 가능 소프트웨어의 부분을 제공하도록 각각 구성된 복수의 독립 소프트웨어 벤더(ISV)와 상호작용하고,
    클라이언트 장치로부터 상기 다운로드 가능 소프트웨어를 구매하려는 주문을 수신하고, 상기 주문과 관련된 트랜잭션을 생성하고,
    상기 ISV에 상기 트랜잭션을 제공하고, 상기 ISV로부터 상기 소프트웨어의 부분을 다운로드하기 위한 정보를 상기 클라이언트 장치에 제공하도록 구성된 컴퓨팅 장치.
  12. 제11항에 있어서,
    상기 다운로드 가능 소프트웨어의 각 부분은 개별 ISV에 의해 제공되고, 상 기 클라이언트 장치에 의해 완전한 소프트웨어를 설치하기 위해 상기 부분들 모두가 필요한 컴퓨팅 장치.
  13. 제11항에 있어서,
    상기 클라이언트 장치는 인가받은 머천트를 통해 상기 컴퓨팅 장치와 상호작용하도록 구성된 컴퓨팅 장치.
  14. 소프트웨어를 구매하고 배포하기 위한 시스템으로서,
    각각 다운로드 가능 소프트웨어의 부분을 제공하도록 구성된 복수의 독립 소프트웨어 벤더(ISV), -상기 다운로드 가능 소프트웨어의 각 부분은 개별 ISV로부터 제공됨-,
    상기 다운로드 가능 소프트웨어에 대한 고객으로부터의 주문을 다루도록 구성되고, 상기 주문과 관련된 트랜잭션을 생성하고 상기 ISV들에 상기 주문을 제공하도록 구성된 레코드 머천트, 및
    상기 고객과 관련되며, 상기 ISV들로부터 상기 소프트웨어의 부분들을 다운로드하고, 상기 다운로드된 부분들로부터 완전한 소프트웨어를 설치하도록 구성된 다운로드 관리자
    를 포함하는 시스템.
  15. 제14항에 있어서,
    상기 레코드 머천트에 의해 생성된 상기 트랜잭션을 상기 ISV들에 제공하도록 구성되고, 상기 ISV들로부터 다운로드 허가를 수신하고, 상기 ISV들로부터 상기 소프트웨어의 부분들을 다운로딩하는 데 사용하도록 상기 고객에게 상기 다운로드 허가를 제공하도록 구성된 전송 관리자를 더 포함하는 시스템.
  16. 제14항에 있어서,
    상기 다운로드 관리자에 의해 상기 완전한 소프트웨어를 설치하기 위하여 상기 부분들 모두가 필요한 시스템.
  17. 제14항에 있어서,
    상기 고객으로부터의 상기 주문을 처리하기 위해 상기 레코드 머천트의 대리자로서 동작하도록 구성된 인가받은 머천트를 더 포함하는 시스템.
  18. 장치 실행가능 명령어들이 인코딩되어 있는 하나 이상의 장치 판독가능 매체로서,
    상기 명령어들은
    다운로드 가능 소프트웨어를 구매하려는 고객으로부터의 주문을 수신하고,
    상기 주문과 관련된 트랜잭션을 생성하고,
    상기 주문의 상기 소프트웨어의 각 부분을 각각 제공하는 복수의 ISV를 식별하고, -완전한 소프트웨어를 설치하기 위해 상기 부분들 모두가 필요함-,
    상기 ISV에 상기 트랜잭션을 제공하고,
    상기 트랜잭션과 관련된 구매 및 다운로딩 정보를 결정하고,
    상기 구매 및 다운로딩 정보를 상기 고객에게 보내기 위한 것인
    하나 이상의 장치 판독가능 매체.
  19. 제18항에 있어서,
    상기 주문은 인가받은 머천트를 통해 상기 고객으로부터 수신되는 하나 이상의 장치 판독가능 매체.
  20. 제18항에 있어서,
    상기 트랜잭션은 전송 관리자를 통해 상기 ISV에 제공되는 하나 이상의 장치 판독가능 매체.
KR1020077023540A 2005-05-31 2006-04-21 전자 소프트웨어 다운로드를 위한 분할 다운로드 KR20080013862A (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US68636805P 2005-05-31 2005-05-31
US60/686,368 2005-05-31
US11/246,512 2005-10-07
US11/246,512 US20060271926A1 (en) 2005-05-31 2005-10-07 Split download for electronic software downloads

Publications (1)

Publication Number Publication Date
KR20080013862A true KR20080013862A (ko) 2008-02-13

Family

ID=37464929

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077023540A KR20080013862A (ko) 2005-05-31 2006-04-21 전자 소프트웨어 다운로드를 위한 분할 다운로드

Country Status (15)

Country Link
US (1) US20060271926A1 (ko)
EP (1) EP1889156A4 (ko)
JP (1) JP5007301B2 (ko)
KR (1) KR20080013862A (ko)
AU (1) AU2006252906B2 (ko)
BR (1) BRPI0610096A2 (ko)
CA (1) CA2603192A1 (ko)
EG (1) EG25573A (ko)
IL (1) IL186067A0 (ko)
NO (1) NO20074871L (ko)
NZ (1) NZ561944A (ko)
RU (1) RU2424552C2 (ko)
SG (1) SG162729A1 (ko)
TW (1) TW200703030A (ko)
WO (1) WO2006130265A2 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8156485B2 (en) * 2004-12-03 2012-04-10 Google Inc. Method and apparatus for creating a pluggable, prioritized configuration engine to be used for configuring a software during installation, update and new profile creation
US7818734B2 (en) 2005-01-21 2010-10-19 Callwave, Inc. Methods and systems for transferring data over a network
WO2008088856A1 (en) 2007-01-17 2008-07-24 Intertrust Technologies Corporation Methods, systems, and apparatus for fragmented file sharing
US8145651B2 (en) * 2007-08-17 2012-03-27 Salesforce.Com, Inc. On-demand database service system and method for determining whether a developed application will operate properly with at least one other application
US8296402B2 (en) * 2009-04-07 2012-10-23 National Instruments Corporation Determining and downloading portions of a software application in a computer system
US9424399B2 (en) 2009-05-12 2016-08-23 Microsoft Technology Licensing, Llc Availability of permission models in roaming environments
US10656931B2 (en) * 2009-05-26 2020-05-19 Comcast Cable Communications, Llc Network event triggered software updates
US10846396B1 (en) * 2011-05-25 2020-11-24 Hewlett-Packard Development Company, L.P. Downloading data in a dedicated virtual machine
US8893116B2 (en) * 2012-01-15 2014-11-18 Microsoft Corporation Installation engine and package format for parallelizable, reliable installations
CN111475170B (zh) 2012-12-12 2024-02-02 华为技术有限公司 多屏应用启用和分发服务
CN103327108B (zh) * 2013-06-26 2016-12-28 浙江大学城市学院 一种基于云的跨平台的软件管理平台及其构建方法
CN105094900A (zh) * 2015-07-13 2015-11-25 小米科技有限责任公司 一种下载控制程序的方法及装置
US10671384B1 (en) * 2017-12-07 2020-06-02 Amazon Technologies, Inc. Proactive seeding of build Artifacts
US11409511B2 (en) 2018-12-31 2022-08-09 Beijing Didi Infinity Technology And Development Co., Ltd. Method and system for downloading information
WO2020142072A1 (en) * 2018-12-31 2020-07-09 Didi Research America, Llc Method and system for downloading information
CN116074305A (zh) * 2021-10-30 2023-05-05 华为技术有限公司 应用下载安装方法、应用老化方法及电子设备

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
US6842896B1 (en) * 1999-09-03 2005-01-11 Rainbow Technologies, Inc. System and method for selecting a server in a multiple server license management system
JP3764311B2 (ja) * 1999-10-29 2006-04-05 シャープ株式会社 ネットワーク接続された情報処理装置の周辺機器およびデバイスドライバのバージョン管理方法
US6606744B1 (en) * 1999-11-22 2003-08-12 Accenture, Llp Providing collaborative installation management in a network-based supply chain environment
JP2002182764A (ja) * 2000-12-08 2002-06-26 Nec Corp Aspポータルサーバおよび該サーバを用いたソフトウェア提供方法、aspソフトウェア提供システム
JP2003022328A (ja) * 2001-07-06 2003-01-24 Computer Wave Inc ソフトウェア提供システムおよび仲介サーバ
US20030233455A1 (en) * 2002-06-14 2003-12-18 Mike Leber Distributed file sharing system
US7555559B2 (en) * 2003-02-28 2009-06-30 Onion Networks, KK Parallel data transfer over multiple channels with data order prioritization
JP4402411B2 (ja) * 2003-09-22 2010-01-20 大日本印刷株式会社 デジタルコンテンツの提供方法および提供装置
US7434102B2 (en) * 2004-12-29 2008-10-07 Intel Corporation High density compute center resilient booting

Also Published As

Publication number Publication date
WO2006130265A3 (en) 2007-11-22
US20060271926A1 (en) 2006-11-30
WO2006130265A2 (en) 2006-12-07
CA2603192A1 (en) 2006-12-07
NO20074871L (no) 2008-02-06
SG162729A1 (en) 2010-07-29
IL186067A0 (en) 2008-01-20
AU2006252906A1 (en) 2006-12-07
AU2006252906B2 (en) 2011-07-28
EP1889156A2 (en) 2008-02-20
RU2424552C2 (ru) 2011-07-20
RU2007144714A (ru) 2009-06-10
NZ561944A (en) 2010-04-30
JP2008542909A (ja) 2008-11-27
EP1889156A4 (en) 2009-02-11
EG25573A (en) 2012-03-06
JP5007301B2 (ja) 2012-08-22
TW200703030A (en) 2007-01-16
BRPI0610096A2 (pt) 2008-12-09

Similar Documents

Publication Publication Date Title
JP5007301B2 (ja) 電子ソフトウェアダウンロード用の分割ダウンロード
US8230426B2 (en) Multicore distributed processing system using selection of available workunits based on the comparison of concurrency attributes with the parallel processing characteristics
US20060075407A1 (en) Distributed system interface
US8122106B2 (en) Integrating design, deployment, and management phases for systems
US9098364B2 (en) Migration services for systems
JP4800968B2 (ja) デルタパッチを利用してファイルをアップデートするための方法
US8275827B2 (en) Software-based network attached storage services hosted on massively distributed parallel computing networks
EP1636711B1 (en) System and method for distribution of software licenses in a networked computing environment
US8321352B1 (en) Fingerprinting for software license inventory management
US20040111505A1 (en) Method, system, and article of manufacture for network management
US20040025157A1 (en) Installation of a data processing solution
JP2007523395A (ja) ソフトウェア配信サービスのためのシステムおよび方法
EP2380079B1 (en) Parallel tasking application framework
US8370800B2 (en) Determining application distribution based on application state tracking information
US7409578B2 (en) Graceful load fail over
US20090319635A1 (en) Centrally managed inventory and entitlement data
US7636693B2 (en) Software license optimization
JP2024501401A (ja) 非集中型のブロードキャスト暗号化および鍵生成ファシリティ
Cappos et al. Stork: Package Management for Distributed VM Environments.
US20080065770A1 (en) Methods, apparatus and computer systems that enable hardware module use rights owned by one server to be claimed for use by another server in a common share group
CN100555221C (zh) 用于电子软件下载的拆分下载系统
US10169007B1 (en) Service provider network integrated compilation service and runtime system
MX2007013603A (en) Split download for electronic software downloads
KR100770599B1 (ko) 컴퓨터 식별자를 이용한 응용 소프트웨어 설치 대가이익배분시스템 및 이익배분방법
Davies et al. Managing WebSphere Message Broker Resources in a Production Environment

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
SUBM Surrender of laid-open application requested