KR20080068647A - 이형, 분산 컴퓨팅 시스템에 서비스 애플리케이션 실행환경을 형성하기 위한 방법 및 시스템, 그리고 상기 서비스애플리케이션 실행 환경에서 실행하는 사용자 친화적데이터 전달 서비스 애플리케이션 - Google Patents

이형, 분산 컴퓨팅 시스템에 서비스 애플리케이션 실행환경을 형성하기 위한 방법 및 시스템, 그리고 상기 서비스애플리케이션 실행 환경에서 실행하는 사용자 친화적데이터 전달 서비스 애플리케이션 Download PDF

Info

Publication number
KR20080068647A
KR20080068647A KR1020087007701A KR20087007701A KR20080068647A KR 20080068647 A KR20080068647 A KR 20080068647A KR 1020087007701 A KR1020087007701 A KR 1020087007701A KR 20087007701 A KR20087007701 A KR 20087007701A KR 20080068647 A KR20080068647 A KR 20080068647A
Authority
KR
South Korea
Prior art keywords
handheld device
electronic handheld
server
service application
electronic
Prior art date
Application number
KR1020087007701A
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 KR20080068647A publication Critical patent/KR20080068647A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • 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
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • 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
    • H04L63/0442Network 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 wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • H04L63/061Network architectures or network communication protocols for network security for supporting key management in a packet data network for key exchange, e.g. in peer-to-peer networks
    • 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
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0681Configuration of triggering conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/7243User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality with interactive means for internal management of messages
    • H04M1/72439User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality with interactive means for internal management of messages for image or video messaging
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M2250/00Details of telephonic subscriber devices
    • H04M2250/64Details of telephonic subscriber devices file transfer between terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Environmental & Geological Engineering (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명의 다양한 실시예들은 전자제품, 셀 폰들을 포함하는 핸드헬드 장치들, 및 서버들 및 PC들을 포함하는 컴퓨터 시스템들 사이에서 데이터 전달을 위한 방법들 및 시스템들뿐 아니라, 이들 데이터 전달 방법들 및 시스템들의 구성요소 방법들 및 시스템들에 관한 것이다. 본 발명의 구성요소 방법들 및 시스템들은 다양한 장치들 사이의 보안 링크들, 서비스 애플리케이션들이 장치들 상에서 연속적으로 또는 간헐적으로 운용되도록 하는 전자 핸드헬드 장치들에 대한 개선들, 전자 핸드헬드 장치들에 동적으로 생성된 서비스 애플리케이션들 디플로이먼트, 및 상기된 구성요소 방법들 및 시스템들을 용이하게 하는 다양한 부가적인 구성요소 방법들 및 시스템들을 포함한다. 본 발명의 일 실시예는 셀 폰들 및 개인 컴퓨터들 사이에서 데이터를 전달하기 위한 강건하고, 효과적이고, 안전하며 사용자 친화적 방법 및 시스템이다.
Figure P1020087007701
서비스 애플리케이션, 전자 핸드헬드 장치, 이종 컴퓨팅 환경, 복수 작업 환경, 공적/사적 암호화 키

Description

이형, 분산 컴퓨팅 시스템에 서비스 애플리케이션 실행 환경을 형성하기 위한 방법 및 시스템, 그리고 상기 서비스 애플리케이션 실행 환경에서 실행하는 사용자 친화적 데이터 전달 서비스 애플리케이션{Method and system for establishing a service application execution environment in a heterogeneous, distributed computing system and a user friendly data transfer service application executing within the service application execution environment}
<관련 출원 교차 참조>
본 출원은 2005년 9월 28일 출원된 가출원 제60/721,262호의 우선권을 주장한다.
본 발명은 전자 시스템들에서 데이터 전달 및 데이터 관리에 관한 것이고, 특히 복수 통신 매체들에 의해 상호접속되고 다양한 능력들 및 용량들을 가진 다양한 다른 유형들의 전자 장치들 사이에서 데이터를 안전하게 전달하기 위한 서비스 애플리케이션을 포함하는 이종(heterogeneous) 환경에서 서비스 애플리케이션들을 실행하기 위한 방법 및 시스템에 관한 것이다.
컴퓨팅 초기 단계에서, 데이터는 펀치 카드들 및 이후 자기 디스크 원판들을 포함하는 물리적 미디어에 인코드된 데이터를 물리적으로 전달함으로써 컴퓨터들 사이에서 전달되었다. 정교하고, 고대역폭 전자 통신 매체, 데이터 전달 프로토콜들 및 TCP/IP를 통한 HTTP 같은 다양한 보다 높은 레벨의 프로토콜들의 출현으로, 메인 프레임들, 고성능 서버들, 및 PC들을 포함하는 다양한 형태의 컴퓨터 시스템들 사이의 데이터 전달은 루틴화하게 되었고 극히 경제적이 되었다. 예를 들어, 1초 동안, 거대한 양의 텍스트, 그래픽, 오디오 및 비디오 데이터는 인터넷을 통하여 웹 서버들 및 PC들 사이에서 세계를 가로질러 전달된다.
지난 10년 동안, 셀 폰들, 이메일 장치들, 개인 정보 단말기("personal digital assistants;PDAs"), 및 다른 상기 장치들을 포함하는 무선 핸드헬드 전자 장치들의 이용성 및 사용에 있어서 눈부신 증가가 있었다. 비록 이들 소형 핸드헬드 장치들의 정교화 및 능력들이 상당히 증가하였지만, 상기 소형 핸드헬드 장치들은 일반적으로 여전히 덜 정교하고, 개인용 컴퓨터들 및 컴퓨터 시스템들보다 계산 능력이 매우 떨어진다. 게다가, 이들 장치들은, 비록 특정 경우들에서 컴퓨터들 및 핸드헬드 전자 장치들이 모두 공통 통신 매체들을 통하여 상호접속될 수 있지만, 컴퓨터 시스템들에 상호접속하기 위하여 사용되는 것들과는 일반적으로 다른 통신 기반구조들을 통하여 상호접속된다.
도 1은 통상적인 컴퓨터, 핸드헬드 장치, 서버 및 통신 환경을 도시한다. 도 1에서, 고성능 서버 시스템(102)은 인터넷(106)을 통하여 원격 개인용 컴퓨터("PC")(104)와 상호접속된다. 인터넷(106)은 고대역폭 광학 라인들, 전화 라인들, 다양한 라우팅 컴퓨터 시스템들, 및 국지적 네트워크들 및 국지적 무선 네트워크들을 포함하는 복잡하고 계층적으로 구성된 프로토콜들의 세트를 사용하는 다른 통신 매체를 포함하는 다양한 물리적 통신 매체를 통하여 데이터 패킷들을 전달한다. 셀 폰들(108 및 109)은 전화 네트워크(110)를 통하여 접속된다. 상기 지적된 바와 같이, 비록 전화 네트워크 및 인터넷이 특정 물리적 통신 매체를 공유할 수 있지만 전화 네트워크는 다른 프로토콜들 및 다른 물리적 통신 매체를 사용한다. 전화 네트워크(110)를 통한 셀 폰들(108 및 109) 사이의 통신은, 파일 전달 프로토콜들, 이메일, 및 인터넷을 통한 인터넷 브라우저 애플리케이션들에 의한 데이터 전달이 극히 강건하고, 사용자 친화적이고, 경제적인 것처럼, 강건하고, 사용자 친화적이고 극히 경제적이다. 그러나, 많은 경우들에서, 셀 폰들(108-109) 및 서버 컴퓨터들(102) 및 PC들(104) 사이의 데이터 전달 및 통신은 어렵고, 사용자와 비친화적이고, 시간 소비적이고, 비교적 비싸다.
도 2는 도 1의 도면을 사용하여 셀 폰으로부터 개인용 컴퓨터로 경제적이고 사용자 친화적 데이터 전달이 바람직한 시나리오를 도시한다. 도 2에 도시된 바와 같이, 셀 폰(109)은 셀 폰들에 일반적으로 포함된 디지털 카메라를 통하여 장면(202)의 디지털 이미지를 기록하기 위하여 사용될 수 있다. 그러나, 대부분의 셀 폰들은 이들 디지털 이미지들을 저장하기 위하여 제한된 능력만을 가지며, 현재 셀 폰들로부터 다른 장치들 및 시스템들로 디지털 이미지들을 전달하기 위하여 사용할 수 있는 물리적 서비스들은 적다. 탈착 가능한 메모리 장치를 통하여 셀 폰(109)으로부터 PC(104)로 물리적으로 이미지를 전달하는 것은 가능하고, 또한 셀 폰을 PC에 전자적으로 상호접속(204) 하기 위한 물리적 케이블을 사용하여 셀 폰(109)으로부터 PC(104)로 디지털 이미지를 전달하는 것은 가능할 수 있다. 물 론, 케이블들을 통한 직접적인 전자 접속은 셀 폰이 개인용 컴퓨터의 위치로 오거나, 그 반대로 오는 것을 요구하고, 이것은 종종 비교적 귀찮고, 사용자와 비친화적이고, 특정 소프트웨어 로딩, 셀 폰 및 개인용 컴퓨터 양쪽과 호환할 수 있는 케이블들 구입 및 다른 작업들과 관련된 느린 절차이다. 탈착 가능한 메모리 저장 장치들은 탈착 가능한 저장 장치들이 차례로 개인용 컴퓨터의 위치로 물리적으로 전달될 수 있을 때까지 셀 폰으로부터 전달되는 디지털 이미지들을 저장하기 위하여 사용될 수 있고, 셀 폰 및 개인용 컴퓨터 양쪽과 호환할 수 있는 충분한 저장 용량을 가진 탈착 가능한 저장 장치들을 구매하는 것은 많은 사용자들에게 문제점을 나타낼 수 있고, 탈착 가능한 저장 장치들은 손실되거나, 손상되거나 다른 유형의 데이터를 포함하는 다른 탈착 가능한 저장 장치들과 혼합될 수 있다. 또한 특정 경우들에서 셀 폰(109)으로부터 전화 네트워크(110)로 디지털 이미지들을 전송하고, 특정 멀티미디어 메시징 프로토콜들을 사용하여 PC 또는 서버로 최종 전달을 위하여 전화 네트워크로부터 인터넷(106)으로 디지털 이미지들을 전송하는 것은 가능하다. 그러나, 상기 프로토콜들에 대한 액세스를 획득하는 것은 셀 폰 상에 애플리케이션의 설치를 요구하고 전달된 애플리케이션들을 설치하고 디지털 이미지들을 직접 원하는 서버 또는 개인용 컴퓨터로 전달하기 위하여 셀 폰에 비교적 귀찮은 데이터 입력을 요구할 수 있다. 게다가, 많은 경우들에서, 상기 전달은 안전하지 않고, 신뢰할 수 없다. 전달 동안 다양한 유형의 에러들의 발생은 예를 들어 디지털 이미지의 손실을 유발할 수 있다.
셀 폰들로부터 개인용 컴퓨터들로, 제 1 셀 폰으로부터 제 2 셀 폰으로 디지 털 이미지들을 전달하는 것과 관계된 어려움들, 및 셀 폰들 및 다른 유형의 전자 핸드헬드 장치들로부터 개인용 컴퓨터들 및 원격 전자 핸드헬드 장치들로 다른 유형의 데이터 전달과 관련된 어려움들은 전자 핸드헬드 장치들의 능력들이 증가하고, 소비자들이 개인용 컴퓨터들 및 서버들 사이에서 데이터를 전달하기 위한 기존 매우 강건하고 사용자 친화적 데이터 전달 시스템들과 보다 친숙하기 때문에 소비자들에게 보다 주목되고 귀찮게 된다. 그러므로, 셀 폰들 및 셀 폰 관련 기술들의 사용자들, 제조자들, 판매자들, 및 개발자들은 셀 폰들 및 컴퓨터 시스템들 사이, 다양한 유형의 전자 핸드헬드 장치들 사이, 개인용 컴퓨터들로부터 전자 핸드헬드 장치들로의 데이터 전달, 및 이종 환경에서 다른 상기 데이터 전달을 위한 보다 강건하고, 사용자 친화적이고, 효과적이며 경제적인 방법 및 시스템에 대한 필요성을 모두 인식하였다.
본 발명의 다양한 실시예들은 셀 폰들을 포함하는 전자 핸드헬드 장치들, 및 서버들 및 PC들을 포함하는 컴퓨터 시스템들 사이의 데이터 전달을 위한 방법들 및 시스템들뿐 아니라, 이들 데이터 전달 방법들 및 시스템들의 구성요소 방법들 시스템들에 관한 것이다. 본 발명의 구성요소 방법들 및 시스템들은 다양한 장치들 사이에서 보안 링크들, 서비스 애플리케이션들이 장치들 상에서 연속적으로 또는 간헐적으로 운용되도록 하는 전자 핸드헬드 장치들에 대한 개선들, 전자 핸드헬드 장치들에 동적으로 생성된 서비스 애플리케이션들의 디플로이먼트(deployment), 및 상기 구성요소 방법들 및 시스템들을 용이하게 하는 다양한 부가적인 구성요소 방법들 및 시스템들을 포함한다. 본 발명의 일 실시예는 셀 폰들 및 개인용 컴퓨터들 사이에서 데이터를 전달하기 위한 강건하고, 효과적이고, 안전하고,사용자 친화적 방법 및 시스템이다.
도 1은 통상적인 컴퓨터, 핸드헬드 장치, 서버 및 통신 환경을 도시한다.
도 2는 셀 폰으로부터 개인용 컴퓨터로 경제적이고 사용자 친화적 데이터 전달이 바람직한 시나리오를 도 1의 도면을 사용하여 도시한다.
도 3은 본 발명의 일 실시예의 높은 레벨 개관을 도시한다.
도 4는 본 발명의 일 실시예에 따라 디지털 이미지의 캡쳐 및 셀 폰으로부터 개인용 컴퓨터로 디지털 이미지 데이터의 안전하고 끊김없는 전달을 도시한다.
도 5는 본 발명의 일 실시예를 나타내는 가상 통신 매체 및 네트워크의 하나의 모습을 함께 포함하는 개념적인 상호통신 애플리케이션들을 도시한다.
도 6은 가상 통신 매체 및 네트워크에 의해 제공된 상호통신을 도시한다.
도 7a 내지 도 7d는 PC 애플리케이션들 및 셀 폰 애플리케이션들 사이의 피어 투 피어(peer-to-peer) 상호작용을 허용하도록 가상 통신 매체 및 네트워크(도 3의 302)의 생성과 관련된 단계들의 개략적인 도면이다.
도 8은 본 발명의 일 실시예를 나타내는 루틴 "디플로이(deploy)"에 대한 제어 흐름도이다.
도 9는 도 8에 도시된 루틴 "deploy"의 단계(804)에 호출된 루틴 "정보수집(collectInformation)"에 대한 제어 흐름도이다.
도 10a 내지 도 10d는 도 8에 도시된 루틴 "deploy"의 타겟 장치 식별 단계(806)의 일 실시예를 기술한다.
도 11은 도 8의 단계(808)로부터 호출된 루틴 "DCA생성(createDCA)"를 도시하는 제어 흐름도이다.
도 12a 내지 도 12b는 도 8의 단계(810)에 호출된 타겟 장치로의 DCA들의 전달을 기술하는 제어 흐름도를 포함한다.
도 13은 도 8의 단계(812)에 호출된 루틴 "DCA설치(installDCA)"에 대한 제어 흐름도를 도시한다.
도 14는 본 발명의 실시예들과 관련하여 용어들 "서비스 애플리케이션", "클라이언트", 및 "기능(function)"의 의미를 도시한다.
도 15는 본 발명의 일 실시예에 따른 타겟 장치들 상의 서비스 애플리케이션 및 클라이언트 디플로이먼트 설치에 관련된 정보를 저장하기 위하여 사용될 수 있는 한 세트의 관계 테이블들을 도시한다.
도 16은 도 11에 기술된 루틴 "createDCA"의 단계(1120)에서 호출된 서비스 애플리케이션을 디플로잉하는 과정에서 타겟 장치에 부가하기 위하여 클라이언트들의 최소 세트를 결정하는 루틴을 도시하는 제어 흐름도이다.
도 17은 서비스 제거 애플리케이션 루틴에 대한 제어 흐름도를 제공한다.
도 18은 링크의 개념을 도시한다.
도 19는 도 18에 도시된 링크의 구현을 도시한다.
도 20은 본 발명의 방법 및 시스템 실시예들에 따른 링크의 설정을 도시한 다.
도 21은 본 발명의 일 실시예에 따른 장치 상에서 운용하는 클라이언트 및 서버 사이의 보안 링크의 설정을 도시한다.
도 22는 본 발명의 방법 및 시스템 실시예들에 따라, 전자 핸드헬드 장치가 고유 상호처리 통신들을 제공하지 않을 때 서버와 통신하는 전자 핸드헬드 장치에서 구현될 수 있는 다수의 가능한 방법들을 도시한다.
도 23은 본 발명의 방법 및 시스템 실시예들에 따라, 지속적 데이터 저장 설비들이 장치에 의해 명백히 제공되지 않을 때, 전자 핸드헬드 장치 상의 지속적 데이터 저장을 구현하기 위한 다양한 방법들을 디스플레이한다.
도 24는 본 발명의 방법 및 시스템 실시예들에 따라 전자 핸드헬드 장치 내에서 처리를 시작 및 재각성(reawakening)에 사용될 수 있는 다수의 메카니즘들을 도시한다.
도 25는 본 발명의 방법 및 시스템 실시예들에 따라, 강건한 복수 작업(multitasking) 환경을 구현하기 위하여 협력하는 처리들에 대한 전자 핸드헬드 장치 상의 처리 동작을 도시하는 제어 흐름도이다.
도 26은 본 발명의 일 실시예를 나타내는 디지털 이미지 전달 서비스 애플리케이션을 도시한다.
도 27은 본 발명의 일 실시예를 나타내는 디지털 이미지 전달 서비스 애플리케이션의 소스 장치 부분의 동작을 도시하는 제어 흐름도이다.
도 28 및 29는 본 발명의 일 실시예를 나타내는 디지털 이미지 전달 서비스 의 서버 부분을 도시한다.
도 30은 본 발명의 일 실시예를 나타내는 디지털 이미지 전달 서비스 애플리케이션의 타겟 장치 부분을 도시하는 제어 흐름도이다.
본 발명은 전자 핸드헬드 장치들 및 개인용 컴퓨터들 사이의 강건하고, 효과적이고, 안전하고 사용자 친화적인 데이터 전달을 위한 방법들 및 시스템들에 관한 것이다. 본 발명은 셀 폰들로부터 개인용 컴퓨터들로, 개인용 컴퓨터들에서 셀 폰들로, 및 셀 폰들 사이에서 디지털 이미지 데이터를 전달하기 위한 방법 및 시스템의 문맥으로 하기에 기술되었지만, 본 발명은 많은 다른 유형의 전자 장치들 사이에서 많은 다른 유형의 데이터를 전달할 뿐 아니라, 데이터 전달 애플리케이션을 지원하기 위한 서비스 애플리케이션 환경 및 가상 통신 매체 및 네트워크를 설정하기 위한 보다 넓고 보다 일반적인 전달 방법에 관한 것이다. 제 1 서브섹션에서, 이하 전자 핸드헬드 장치들 및 개인용 컴퓨터들 사이에서 데이터를 전달하기 위한 한 가지 방법의 개관이 제공된다. 후속 서브섹션들에서, 제 1 서브섹션에 개요가 기술된 데이터 전달 방법 및 시스템을 구현할 수 있게 하는 개별 구성요소 방법들 및 시스템들은 제어 흐름도 및 다른 기술적 개시들을 참조하여 상세히 논의된다. 최종 서브섹션에서, 제 1 서브섹션에 개요가 기술된 예시적인 데이터 전달 방법 및 시스템의 보다 상세한 논의가 제공된다.
본 발명의 일 실시예 나타내는 데이터 전달 방법 및 시스템의 개요
도 3은 본 발명의 일 실시예의 높은 레벨 개관도를 도시한다. 도 3은 도 1 및 2에 사용된 것과 동일한 도식 방법을 사용한다. 도 3에서, 서버 시스템(102), PC(104) 및 셀 폰들(108 및 109)은 링크되고, 가상 통신 매체 및 네트워크(302)를 통하여 서로 통신하는 것으로 도시된다. 가장 높은 레벨에서, 본 발명은 개인용 컴퓨터들, 서버들 및 메인 프레임 컴퓨터들, 셀 폰들, 및 다른 전자 핸드헬드 장치들이 효과적이고, 신뢰성 있고 경제적이며 안전하게 상호통신하도록 하는 가상 통신 매체 및 네트워크(302)를 생성하는 것에 관한 것이다. 제 2 레벨에서, 본 발명의 방법 및 시스템 실시예들은 디지털 이미지들의 전달을 포함하는 데이터 전달을 제공하기 위하여 가상 통신 매체 및 네트워크의 문맥에서 실행하는 서비스 애플리케이션들에 관한 것이다. 도 4는 본 발명의 일 실시예에 따라 디지털 이미지의 캡쳐 및 셀 폰으로부터 개인용 컴퓨터로 디지털 이미지 데이터의 안전하고, 끊김없는 전달을 도시한다. 사용자는 예를 들어 사용자의 셀 폰으로부터 사용자의 개인용 컴퓨터로 사용자 간섭없이 자동적으로, 또는 전화 네트워크를 통하여 제 1 셀 폰을 제 2 셀 폰에 접속하기 위하여 사용되는 것 같이 사용하기에 직관적이고 쉬운 임의의 수의 사용자 인터페이스들을 통하여 디지털 이미지를 전달할 수 있다.
본 발명의 일 실시예에 따라 생성된 가상 통신 매체 및 네트워크(도 3의 302)는 전화 네트워크, 인터넷, 다양한 다른 물리적 통신 매체, 프로토콜들, 및 소프트웨어 및 하드웨어의 다른 복잡한 층들을 이용할 수 있다. 이런 도큐먼트에서 이들 모든 통신 매체 및 소프트웨어 및 하드웨어 층들의 구성 및 동작을 상세히 기술하는 하는 것은 불가능하고, 상기 기술은, 이들 통신 매체, 소프트웨어 층들, 및 하드웨어 층들이 통신, 셀 폰들, 및 컴퓨터 시스템들의 분야에서 당업자에게 일반 적으로 잘 공지되었기 때문에 불필요하다. 기존 기술들, 소프트웨어, 하드웨어 및 통신 매체의 복잡한 다층 결합으로서 가상 통신 매체, 또는 네트워크를 보기보다, 상호통신 애플리케이션들의 집합 또는 하나 또는 그 이상의 분산된 애플리케이션들로서 가상 통신 매체를 보는 것이 개념적으로 보다 쉽다. 도 5는 본 발명의 일 실시예를 나타내는 가상 통신 매체 및 네트워크의 일례를 함께 포함하는 개념적인 상호통신 애플리케이션들을 도시한다. 도 5에 도시된 바와 같이, 가상 통신 매체(302), 및 가상 통신 매체에 의해 지원되는 인터페이스들은 독립된, 상호통신 서버 애플리케이션(502), PC 애플리케이션(504), 및 셀 폰 애플리케이션들(506 및 508)로서 관찰될 수 있다. 선택적으로, 이들 독립된 상호통신 애플리케이션들은 장치 측 및 서버측 서비스 애플리케이션들로 구성된 단일 분산 서비스 애플리케이션으로서 도시될 수 있다.
도 6은 가상 통신 매체 및 네트워크에 의해 제공된 상호통신을 도시한다. 도 6에 도시된 바와 같이, PC 애플리케이션들, 셀 폰 애플리케이션들, 및 서버 애플리케이션들은 가상 통신 매체를 통하여 서로 사이에서 데이터를 전달할 수 있고, 서버 및 서버 애플리케이션(502)은 데이터 전달들이 라우팅되는 중앙 스위치로서 작동한다. 현재 환경들과 달리, 도 1 및 2에 도시되고 이전 섹션에서 기술된 바와 같이, 본 발명에 따라 생성된 가상 통신 매체는 PC 애플리케이션들 및 셀 폰 애플리케이션들이 피어들로서 상호 통신할 수 있게 하고, 양쪽 PC 애플리케이션들 및 셀 폰 애플리케이션들은 사용자 인터페이스들이 원해질 때 사용자 친화적 인터페이스들을 제공한다.
도 7a 내지도 7d는 개괄적인 수준에서 PC 애플리케이션들 및 셀 폰 애플리케이션들 사이의 피어 투피어 같은 상호작용을 허용하도록 가상 통신 매체 및 네트워크(도 3의 302)에 포함되거나 분산된 서비스 애플리케이션 내에 포함된 단계들을 도시한다. 첫째, 도 7a에 도시된 바와 같이, PC 사용자는 PC 애플리케이션을 PC에 다운로드하기 위하여 서버 시스템 상에서 운용하는 서버 애플리케이션(502)과 상호작용한다. 일단 다운로드 되면, 도 7b에 도시된 바와 같이, PC는 높은 수준에서 PC 애플리케이션(504)으로서 보여질 수 있다. 다음, 도 7b에 도시된 바와 같이, PC 사용자는 특정 셀 폰(702) 상에 서비스를 디플로잉하기 위하여 서버 애플리케이션에 지향하도록 PC 애플리케이션과 인터페이스 한다. 그 다음, 도 7c에 도시된 바와 같이, 서버 애플리케이션(502)은 셀 폰 및 셀 폰에 관련되고 셀 폰을 특징으로 하는 다른 파라미터들을 결정하기 위하여 셀 폰(702)과 통신한다. 그 다음, 도 7d에 도시된 바와 같이, 서버 애플리케이션(502)은 처음 셀 폰 애플리케이션을 생성하고 처음 셀 폰 애플리케이션을 셀 폰(704)에 전달한다. 셀 폰 애플리케이션은 PC 및 서버와 후속 통신을 조장하기 위하여 계정 증명서들이 미리 구성되고, 이에 따라 셀 폰 애플리케이션의 후속 구성은 필요하지 않다. 초기 셀 폰 애플리케이션은 서버 애플리케이션으로부터 전송된 독립된 신호에 의해 또는 자동적으로 시작되고, 셀 폰 애플리케이션이 서비스 애플리케이션으로서 운용할 수 있는 복수 작업 셀 폰 환경(706)으로 셀 폰을 변환시킨다. 일단 전화 애플리케이션이 서비스 애플리케이션으로서 운용되면, 셀 폰 애플리케이션은 도 5 및 6에 도시된 바와 같이 피어 투 피어 방식으로 서버 애플리케이션(502) 및 PC 애플리케이션(504)과 통신할 수 있다.
동적으로 생성된 서비스 애플리케이션
이전 섹션에서 논의된 바와 같이, 도 7c 내지 도 7d를 참조하여, 셀 폰들, 서버들, 및 PC들 사이에서 안전하고, 강건하고 사용자 친화적 상호통신을 허용하는 가상 통신 매체 및 네트워크(도 3의 302)를 구성하는데 중요한 단계는 전자 핸드헬드 장치에 관련된 사용자 요구 서비스 환경에서 핸드헬드 전자장치를 위하여 특히 맞추어진 서비스 애플리케이션의 디플로이먼트이다. 동적으로 생성된 서비스애플리케이션들("DCA")의 디플로이먼트는 현재 서브섹션에서 기술된다. 본 발명의 특정 실시예가 서브섹션에서 논의되고, 후속 서브섹션들에서 가상 통신 매체 및 네트워크 및 네트워크를 통하여 상호통신하는 서비스 애플리케이션들이 정교하게 만들어지고 구성되는 다수의 다른 환경 내에서 본 발명에 따라 실행될 수 있는 무수한 다른 실시예들이 있다는 것이 주의되어야 한다. 비록, 다음 논의들에서, 다양한 작업 들 및 서브작업 들을 달성하기 위하여 휘해지는 단계들이 특정 순서들로 제공되지만, 많은 단계들은 실행 전략들 및 실행들에 의해 처리되는 문제 영역의 배경에 따라 다른 순서로 선택적으로 수행될 수 있다. 본 발명의 하나 또는 몇몇 실시예들의 설명은 본 발명의 실행을 위한 목표들 및 사양들을 함께 포함하는 작업 들의 세트를 달성하기 위하여 가능한 기술들 및 전략들의 작은 서브세트만을 처리할 수 있다. 따라서, 본 발명의 특정 실시예들의 다음 설명은 결코 본 발명에 따라 취해질 수 있는 실행들 및 전략들의 범위를 제한하기 위한 것으로 의도되지 않는다.
도 8은 본 발명의 일 실시예를 나타내는 루틴 "deploy"에 대한 제어 흐름도이다. 도 8의 제어 흐름도는 본 발명의 DCA 생성 및 디플로이먼트 방법의 가장 높은 레벨 개관을 제공한다. 단계(802)에서, 설명된 실시예에서 서버 상에서 운용하는 루틴 "deploy"는 통상적으로 셀 폰 같은 다른 사용자 장치에 특정 서비스를 디플로잉하기 위하여 통상적으로 PC인 사용자 장치로부터 요구를 수신한다. 일반적으로, 비록 일반적인 경우들에서, 서비스 애플리케이션들이 제 3 파티들의 요구, 또는 다른 형태의 실시에 응답하여 자동적으로 전자 장치들에 디플로잉될 수 있지만, 특정 사용자는 사용자에 의해 소유되고 제어되는 전자 장치들에 서비스들의 디플로이먼트를 요구한다. 디플로이먼트가 제 3 파티들에 의해 전자 장치들, 또는 요구자에 의해 소유되지 않거나 제어되지 않는 전자 장치들에 요구될 대, 다양한 기술들 및 전략들은 서비스들이 장치 소유자들 및/또는 사용자들의 암시적 또는 명시적 허용 및 인증만으로 디플로잉되는 것을 보장하기 위하여 사용될 수 있다.
단계(804)에서, 루틴 "deploy"는 요구자로부터 정보를 수집하고, 선택적으로 요구에서 식별된 부가적인 사용자들로부터 타겟 전자 장치들에 관한 요구된 서비스를 설정 및 구성하기 위하여 요구된다. 단계(806)에서, 루틴 "deploy"는 서비스 애플리케이션이 디플로잉될 각각의 타겟 장치를 식별하고 특징으로 하는 처리를 담당한다. 단계(808)에서, 루틴 "deploy"는 각각의 타겟 장치에 대한 DCA를 생성한다. 서비스 애플리케이션들은 적어도 타겟 장치 지정 정보를 각각의 서비스 애플리케이션에 통합하고, 보다 일반적으로 특정 타겟 장치에 대한 서비스 애플리케이션에 맞추기 위하여 각각의 타겟 장치를 위하여 동적으로 생성된다. 단계(810)에 서, 루틴 "deploy"는 단계(808)에서 생성된 DCA들을 각각의 타겟 장치들에 전달한다. 최종적으로, 단계(812)에서, 필요할 때 루틴 "deploy"는 각각의 타겟 장치들내에 전달된 DCA들의 할부 납입을 담당한다. 이들 최종 두 개의 단계들은 일반적으로 결합되고 인터리빙되지만, 개념상 간략화를 위하여 도 8에서 독립적으로 도시된다.
도 9는 도 8에 도시된 루틴 "deploy"의 단계(804)에서 발생된 루틴 "collectInformation"에 대한 제어 흐름도이다. 단계(902)에서, 루틴 "collectInformation"는 서비스 애플리케이션의 디플로이먼트를 담당하는 사용자들을 결정한다. 가장 일반적인 경우, 단일 사용자는 하나 또는 그 이상의 사용자 전자 장치들에 서비스의 디플로이먼트를 요구하지만, 보다 일반적인 경우, 상기 요구는 한 세트의 사용자들에 대한 서비스들의 디플로이먼트를 지정할 수 있다. 사용자들은 도 8의 단계(802)에서 수신된 요구에서 완전히 식별될 수 있거나, 부분적으로만 식별될 수 있고, 서비스 애플리케이션이 디플로잉되는 장치들의 모든 사용자들을 완전히 식별하기 위하여 요구자와 추가로 상호작용하거나 부가적인 정보 소스들을 액세스하기 위해 루틴 "collectInformation"를 요구한다. 단계들(904-912)의 루프에서, 루틴 "collectInformation"는 필요한 사용자 및 단계(902)에서 식별된 각각의 사용자에 대한 사용자 장치 정보를 수집한다. 단계(905)에서, 루틴 "collectInformation"는 현재 고려된 사용자를 식별하기 위하여 충분한 정보를 수집한다. 이 단계에서, 예를 들어 루틴 "collectInformation"는 사용자 또는 사용자가 애플리케이션이 디플로이먼트를 요구하는 사용자인 것을 식별하기 위하여 필 요한 정보에 대해 사용자 또는 사용자의 PC상에 운용하는 애플리케이션에게 질문할 수 있다. 질문들은 포함된 요구 및 패스워드들의 수신, 사용자 식별자들, 및 루틴 "collectInformation"가 운용하는 서버에 의해 저장된 이전에 획득된 정보에 매칭될 수 있는 다른 정보일 수 있고, 사용자 공급 데이터의 생명측정 분석을 포함하는 다양한 다른 사용자 식별 기술들, 또는 사용자를 식별하는 다른 방법들이 선택적으로 포함될 수 있다.
다음, 단계(906)에서, 루틴 "collectInformation"는 만약 과세정보가 사용자의 PC 또는 다른 장치의 특징들 및 능력들, 및 다른 정보를 미리 저장하였다면 사용자의 PC, 사용자의 이메일 어드레스, 과세 정보에 대한 PC 네트워크 어드레스를 포함하는 부가적인 사용자 관련 정보를 수집할 수 있다. 만약 사용자가 단계(907)에서 결정된 바와 같이 디플로이먼트를 요구하는 엔티티(entity)가 아니면, 루틴 "collectInformation"는 단계들(908 및 909)에서 사용자의 장치들에 서비스 애플리케이션의 디플로이먼트를 위해 사용자의 허가를 선택적으로 요구할 수 있다. 다음, 단계(910)에서, 루틴 "collectInformation"는 서비스 애플리케이션이 디플로잉되는 현재 고려된 사용자에 대한 타겟 장치들을 결정한다. 이 정보는 도 8의 단계(802)에서 수신된 요구에 포함될 수 있거나, 이전에 저장된 정보에 대한 부가적인 질문들 또는 액세스를 포함할 수 있다. 단계(911)에서, 사용자 및 사용자의 타겟 장치들을 위하여 수집된 정보는 루틴 "deploy"의 후속 단계들에서 DCA들의 생성 및 디플로이먼트를 지시하는 사용자/타겟 리스트에 저장된다.
도 10a 내지 도 10d는 도 8에 도시된 루틴 "deploy"의 타겟 장치 식별 단 계(806)의 일 실시예를 기술한다. 도 10a는 도 8의 단계(806)에서 루틴 "타겟장치들식별(identifyTargetDevices)"에 대한 제어 흐름도이다. 루틴 "identifyTargetDevices"은 도 9의 단계(911)에서 준비된 사용자/타겟 리스트에 포함된 각각의 타겟 장치가 식별되고 특징으로 하는 단계들(1002-1007)의 루프를 포함한다. 단계(1003)에서, 현재 고려된 타겟 장치를 특징으로 하는 사용자 공급 정보는 일반적인 장치 유형들에 관한 저장된 정보, 장치 관련 정보, 및 서버에 의해 이전에 수집되고 편집된 사용자에 의해 소유되고 사용된 장치들에 관한 특정 정보를 액세스함으로써 어드레스 및 가상 장치 유형으로 변환된다. 이런 단계를 촉진할 수 있는 특정 데이터 테이블들은 후속 서브섹션에서 논의된다. 그 다음, 단계(1004)에서, 루틴 "identifyTargetDevices"은 특정 경우들에서 설치 메시지 형태로 URL 같은 레퍼런스(reference)를 타겟 장치에 전송한다. 설치 메시지가 타겟 장치에 의해 수신될 때, 프롬프트는 타겟 장치의 사용자에 의해 허용되거나 수신응답 되거나, 자동적으로 서버에 의해 수신되고 처리된 URL 같은 레퍼런스로 지향된 요구를 생성하는 타겟 장치 상에 디스플레이될 수 있다. 설치 메시지에 대한 장치의 응답은 그 다음 하기에 기술된 바와 같이 장치의 유형을 식별하고 장치를 특징으로 하기 위하여 서버에 의해 사용된다. 단계(1005)에서, 루틴 "identifyTargetDevices"은 설치 메시지가 타겟 장치로 전송되고 타겟 장치에 대한 재시도 카운트를 0으로 설정하는 것을 표시한다. 일반적으로, 루틴 "identifyTargetDevices"은 설치 메시지가 메모리 또는 데이터베이스에 전송되었다는 것을 가리키는 기록을 저장한다. 그 다음, 단계(1006)에서, 루틴 "identifyTargetDevices"은 후속적으로 기술된 바와 같이 응답에 대한 타겟 장치의 실패를 검출하기 위하여 설치 메시지에 대한 타이머를 설정한다.
도 10b 내지 도 10c는 상기된 루틴 "identifyTargetDevices"과 연관된 이벤트들을 처리하기 위하여 서버 상에서 연속하여 실행하는 핸들러에 대한 제어 흐름도를 도시한다. 단계(1010)에서, 핸들러는 다음 이벤트를 기다린다. 다음 이벤트가 발생할 때, 핸들러가 각성하고 단계(1012)에서 이벤트를 가진 타겟 장치에 관련된 저장된 상태 정보 및 특정 타겟 장치를 연관시킨다. 만약 단계(1014)에서 결정된 바와 같이, 이벤트가 도 10a의 단계(1004)에서 전송된 설치 메시지에 응답이면, 단계(1016)에서, 핸들러는 장치의 유형을 결정하고 설치 메시지에 응답하여 타겟 장치에 의해 전송된 요구/응답 메시지로부터 장치를 특성화하기 위하여 루틴을 호출한다. 만약 단계(1018)에서 결정된 바와 같이, 장치 유형이 결정되고 장치가 요구/응답 메시지로부터 완전히 특성화되면, 장치 유형 및 장치 특성은 메모리에 저장되고, 타겟 장치와 연관된 상태 정보는 단계(1020)에서 삭제되고, 타겟 장치의 식별 및 특성화를 완료한다.
그렇지 않으면, 단계(1022)에서, 핸들러는 장치에 대한 프로브(probe) 애플리케이션을 선택하고 프로브 애플리케이션을 타겟 장치에 전송한다. 프로브 애플리케이션은 장치로부터 수신된 응답/요구 메시지 및 타겟 장치에 미리 액세스되고 연관된 임의의 다른 장치 정보를 바탕으로 이루어질 수 있는 장치의 유형에 대한 가장 우수한 추측을 바탕으로 선택된다. 만약, 프로브 애플리케이션을 전송하는 것 외에, 독립된 설치 메시지 또는 신호가 단계(1024)에서 결정된 바와 같이 타겟 장치 상의 프로브 애플리케이션을 시작 또는 호출하기 위하여 핸들러에 의해 전송될 필요가 있으면, 단계(1026)에서, 핸들러는 타겟 장치에 의해 수신되고 처리될 전송된 프로브 애플리케이션에 대한 충분한 시간 기간 다음 타겟 장치에 설치 메시지 또는 신호를 전송한다. 상기 필요한 시간 기간을 기다리기 보다, 핸들러는 단계(1022)에서 프로브 애플리케이션을 간단히 전송할 수 있고, 그 다음 설치 메시지 또는 신호를 전송하기 위하여 핸들러를 후속으로 재각성시키기 위하여 타이머를 설정한다. 다음, 단계(1028)에서, 핸들러는 타겟 장치에 프로브 애플리케이션의 디플로이먼트와 연관된 타이머를 설정하고 단계(1029)에서 프로브 애플리케이션이 단계(1029)에서 타겟 장치에 전송되고 재시도 카운터를 0으로 설정한다는 사실을 기록한다. 만약 핸들러를 각성시키는 이벤트가 단계(1030)에서 결정된 바와 같이 프로브 설치에 대한 응답이면, 단계(1032)에서, 핸들러는 타겟 장치의 유형을 결정하고 실행 프로브 애플리케이션으로부터 수신된 메시지를 바탕으로 타겟 장치를 특성화하기 위하여 루틴을 호출한다. 만약 단계(1034)에서 결정된 바와 같이, 장치의 유형이 완전히 결정되고 장치가 프로브 애플리케이션 메시지를 바탕으로 충분히 특성화되면, 단계(1036)에서, 장치 유형 및 특성화는 메모리에 저장되고, 타겟 장치와 연관된 상태 정보는 삭제된다. 그렇지 않으면, 단계(1038)에서, 프로브 정보로부터 장치를 식별하기 위한 실패는 메모리에 표시된다. 단계(1040)에서 결정된 바와 같이, 만약 타겟 장치의 유형을 식별하기 위하여 타겟 장치에 전송될 수 있는 다른 프로브 애플리케이션이 있다면, 다음 프로브 애플리케이션은 선택되고 단계(1042)에서 타겟 장치로 전송되고, 전송된 프로브 애플리케이션을 설치하고 프로 브 애플리케이션의 전송과 연관된 타이머를 설정하기 위하여 이전에 기술된 단계(1024)의 흐름을 제어한다. 만약 부가적인 프로브 애플리케이션이 타겟 장치로 전송될 수 없으면, 단계(1044)에서, 타겟 장치를 식별하거나 특성화하는 것에 대한 실패는 기록되고, 타겟 장치 정보는 타겟 장치로 지향된 부가적인 서비스 애플리케이션 디플로이먼트 단계들을 방지하기 위하여 사용자/타겟 리스토로부터 제거된다. 다양한 다른 유형의 액션들은 본 발명의 DCA 생성의 다른 실행들 및 디플로이먼트 방법에서 타겟 장치를 식별하고 특성화하는 것에 대한 실패 후 취해질 수 있다.
단계(1046)에서 결정된 바와 같이, 만약 핸들러를 각성시키는 이벤트가 제 1 설치 메시지의 전송과 연관된 타이머의 만료이면, 단계(1048)에서, 핸들러는 타겟 식별이 시도했던 횟수를 결정한다. 만약 장치를 식별하기 위한 시도 횟수가 단계(1052)에서 결정된 바와 같이 최대 임계값을 초과하면, 장치를 식별 및 특성화하는 것에 대한 완전 실패는 단계(1052)에서 표시되고, 타겟 장치는 도 9 단계(911)에서 제공된 사용자/타겟 리스트로부터 제거된다. 그렇지 않으면, 레퍼런스를 포함하는 새로운 메시지가 새로운 설치 메시지의 타겟 장치에 전송되고, 단계(1054)에서, 재시도 카운터는 단계(1056)에서 증가되고, 설치 메시지에 대한 타이머는 단계(1058)에서 리셋된다. 단계(1060)에서 결정된 바와 같이, 만약 핸들러를 각성시키는 이벤트가 프로브 애플리케이션과 연관된 타이머의 만료이면, 단계(1062)에서, 핸들러는 프로브 애플리케이션이 타겟 장치 상에서 시도했던 횟수를 결정한다. 단계(1064)에서 결정된 바와 같이 만약 프로브 애플리케이션이 시도한 횟수가 최대 임계값을 초과하면, 완전한 결함이 표시되고, 타겟 장치 정보는 단계(1066)의 사용 자/타겟 리스트로부터 제거된다. 그렇지 않으면, 최종 전송된 프로브 애플리케이션은 단계(1066)에서 타겟 장치로 재전송되고, 프로브 애플리케이션을 시작하고, 프로브 애플리케이션 관련 타이머를 리셋하고 재시도 카운터를 업데이트하기 위한 부가적인 단계들은 단계들(1068-1071)에서 수행된다. 그렇지 않으면, 핸들러를 각성시키는 임의의 다른 이벤트는 단계(1072)의 디폴트 핸들러 루틴에서 처리된다. 모든 경우들에서, 핸들러를 각성시키는 이벤트의 조절 다음, 제어는 단계(1010)로 리턴하고, 여기서 핸들러는 다음 이벤트를 기다린다.
핸들러 실행은 본 발명의 설명을 용이하게 하기 위하여 도 10b 내지 도 10c에서 다소 간략화된다. 일반적으로, 핸들러들은 동시에 발생할 수 있는 복수 이벤트들을 처리하기 위하여 설계되고 핸들러는 각각의 독립된 이벤트에 대해 명시적으로 호출되기 보다 오히려 활성화될 수 있다. 그러나, 핸들러들의 일반적인 구성 및 실행은 잘 공지되었고, 상기 항목들은 본 발명의 핵심을 불명하게 한다.
도 10d는 도 10b의 단계들(1016 및 1032)에서 처음 설치 메시지 또는 프로브 애플리케이션으로부터 수신된 요구/응답 메시지로부터 타겟 장치의 식별 및 특성화를 일반적으로 기술하는 제어 흐름도이다. 본 발명의 특정 실시예들에서, 독립된 장치 식별 루틴들은 도 10b의 단계들(1016 및 1032) 동안 실행될 수 있고, 다른 실시예들에서, 일반적인 장치 식별 루틴은 단계들(1016 및 1032)로부터 호출될 수 있다. 단계(1080)에서, 루틴 "장치유형결정(determineDeviceType)"은 요구/응답 메시지가 프로브 애플리케이션에 의해 리턴되었는지를 결정한다. 만약 그렇다면, 단계(1082)에서, 루틴 "determineDeviceType"은 명확한 유형이 프로브 애플리케이션 으로부터 수신된 메시지에 포함되었는지를 결정한다. 만약 그렇다면, 단계(1084)에서, 명확한 장치 유형은 장치의 특성화에 관련된 임의의 부가적인 정보와 함께 리턴된다. 프로브 애플리케이션들의 특정 유형들은 장치 유형을 결정하기 위하여 타겟 장치 상의 기능들을 호출할 수 있다. 선택적으로, 프로브 애플리케이션들은 타겟 장치의 다양한 기능들 및 특징들에 액세스할 수 있고 타겟 장치의 작용을 바탕으로 타겟 장치의 유형을 결정한다. 그러나, 만약 메시지가 프로브에 의해 리턴되지 않거나, 명시적 유형의 정보를 포함하지 않으면, 단계(1086)에서, 루틴 "determineDeviceType"은 요구/응답 메시지 헤더 또는 헤더들로부터 유형 관련 정보를 추출한다. 종종, 타겟 장치로부터 전송된 메시지들의 헤더들은 타겟 장치의 유형을 추론하기 위하여 충분한 정보를 포함한다. 단계(1088)에서, 필요할 때, 루틴 "determineDeviceType"은 요구/응답 메시지 몸체로부터 수집될 수 있는 임의의 유형 관련 정보를 추출한다. 그 다음, 단계(1090)에서, 루틴 "determineDeviceType"은 추출된 정보를 바탕으로 타겟 장치를 결정하고 특성화하기 위하여 단계들(1086 및 1088)에서 추출된 정보에 한 세트의 룰들을 적용한다. 만약 추출된 정보에 룰들의 적용이 명백하게 장치 유형을 결정하고, 단계(1092)에서 결정된 바와 같이 장치를 추가로 특성화하면, 장치 유형 및 부가적인 특성은 단계(1094)로 리턴된다. 그렇지 않으면, 장치 유형을 결정하는 것의 실패는 단계(1096)에서 결정된다.
도 11은 도 8의 단계(808)로부터 루틴 "createDCA"를 도시하는 제어 흐름도이다. 루틴 "createDCA"는 단계들(1102 및 1104)에서 시작하는 필수적으로 두 개 의 네스트된 루프들이고, 여기서 DCA는 도 9의 단계(911)에서 제공된 사용자/타겟 리스트에 기술된 각각의 사용자에 대한 각각의 타겟 장치를 위하여 생성된다. 만약 소스 코드가 단계(1106)에서 결정된 바와 같이 편집되거나 DCA를 위하여 어셈블리된 어셈블리 코드이면, 소스 코드는 단계(1108)에서 편집되고 및/또는 어셈블리된 어셈블리 코드이다. 따라서, 서비스 애플리케이션의 동적 생성은 타겟 장치에 적당한 특정 소스 코드 또는 어셈블리 코드가 수집되고 편집되며 및/또는 타겟 장치에 적당한 특정 컴파일러 플래그들 및 어셈블러 플래그들 및 파라미터들로 어셈블리되게 할 수 있도록 온더플라이(on-the-fly) 편집 또는 어셈블리를 포함할 수 있다. 단계(1109)에서 결정된 바와 같이, 만약 기존 실행코드들이 단계(1109)에서 결정된 바와 같이 타겟 장치를 위하여 맞추어진 DCA를 생성하기 위하여 수정될 필요가 있으면, 실행코드들은 단계(1110)에서 이에 따라 수정된다. 수정들은 실행코드들의 이름을 다시 짓는 것을 포함하거나, 실행코드들에 포함된 데이터 섹션들을 변경하고, 실행코드들의 헤더들을 변경하거나, 또는 다른 상기 수정들을 포함할 수 있다. 만약 단계(1112)에서 결정된 바와 같이, 부가적인 실행코드들이 단계(1112)에서 결정된 바와 같이 현재 고려된 타겟 장치에 구체적으로 타겟화된 DCA를 제공하기 위하여 식별되고 수집될 필요가 있다면, 부가적인 실행코드들은 단계(1114)에서 위치가 파악되어 수집된다. 단계(1108, 1110 및 1114)에서 얻어진 실행코드들, 수정된 실행코드들, 및 온더플라이 컴파일 및/또는 어셈블리된 실행 코드는 단계(1116)에서 현재 고려된 타겟 장치를 위하여 맞추어진 실행코드 서비스 애플리케이션을 형성하기 위하여 함께 어셈블리된다. 단계(1116)의 형성물은 단일 실행코 드, 부가적인 라이브러리 루틴들을 가진 단일 실행코드, 한 세트의 실행코드들, 또는 현재 고려된 타겟 장치에 적당한 실행 가능한 서비스 애플리케이션들의 다른 형태들일 수 있다.
다음, 단계(1118)에서, 루틴 "createDCA"는 부가적인 클라이언트들이 타겟 장치 상에 특정 기능들을 제공하기 위하여 작동되고, 타겟 장치에 전송되고 설치될 필요가 있는지, 또는 타겟 장치 상에 호출될 필요가 있는지를 결정한다. 클라이언트들은 하나 또는 그 이상의 서비스 애플리케이션들이라 불릴 수 있는 한 세트의 잘 정의된 기능들을 제공하는 실행코드들 또는 라이브러리들이고, 독립된 엔티티들일 수 있거나 서비스 애플리케이션들에 내장될 수 있다. 만약 부가적인 클라이언트들이 타겟 장치에 전송되거나, 작동될 필요가 있으면, 단계(1120)에서, 타겟 장치에 전송되거나 작동될 필요가 있는 최소 세트의 클라이언트들은 결정된다. 클라이언트들은 DCA에 포함되거나 타겟 장치에 독립적으로 전송되고, 설치될 수 있다.
다음, 단계(1122)에서, 루틴 "createDCA"는 부가적인 데이터가 DCA에 포함될 필요가 있는지를 결정한다. 만약 그렇다면, 단계(1124)에서, 루틴 "createDCA"는 임의의 부가적인 데이터가 실행코드로 변환될 필요가 있는지를 결정한다. 만약 그렇다면, 실행코드로 변환될 필요가 있는 부가적인 데이터 부분은 단계(1126)에서 변환된다. 예를 들어, DCA는 타겟 장치 상의 서비스 애플리케이션에 대한 사용자의 부분을 형성하는 메뉴 또는 스크린 레이아웃을 기술하는 데이터에 액세스할 필요가 있을 수 있다. 데이터는 DCA에 명시적으로 포함될 수 있거나, 실행코드는 실행코드가 타겟 장치 상에서 실행될 때 데이터를 생성하기 위하여 DCA에 포함될 수 있다. 단계(1128)에서, 루틴 "createDCA"는 임의의 부가적인 데이터가 DCA에 첨부될 필요가 있는지를 결정한다. 만약 그렇다면, 부가적인 데이터는 단계(1130)에서 DCA에 첨부된다. 단계(1132)에서, 루틴 "createDCA"는 DCA가 URL들 같은 레퍼런스를 타겟 장치로부터 원격으로 저장된 데이터에 요구할지를 결정한다. 만약 그렇다면, 원격으로 저장된 데이터에 대한 이들 레퍼런스들은 타겟 장치 상의 저장소를 위하여 전송되고, 타겟 장치 상에서 운용하는 실행코드들에 의해 생성되거나, 타겟 장치 상의 서비스 애플리케이션의 실행 동안 서비스 애플리케이션에 의해 원격 데이터 소스들로부터 액세스될 수 있다. 단계(1136)에서, 단계(1116)에서 생성된 어셈블리된 실행코드들은 최종 DCA를 형성하기 위하여 단계들(1126,1130 및 1134)에서 형성된 부가된 레퍼런스들, 데이터, 및 데이터 생성 실행코드들과 함께 패키지 된다. 만약 DCA가 단계(1138)에서 결정된 바와 같이 서명되고 및/또는 암호화될 필요가 있으면, DCA는 단계(1140)에서 디지털적으로 서명되고 및/또는 암호화된다. 공적/사적(public/private) 암호화 키 바탕 기술들을 포함하는 다양한 다른 디지털 사이닝 및 암호화 기술들은 특정 타겟 장치가 생성되고 상기 타겟 장치로 맞추어진 DCA가 인터셉트 되고 다른 장치에 의해 사용될 수 없다는 것을 보장하기 위하여 사용된다.
도 12a 내지 도 12b는 도 8의 단계(810)에서 호출된 타겟 장치들에 DCA들의 전달을 기술하는 제어 흐름도를 포함한다. 도 12a는 루틴 "deliverDCA"에 대한 제어 흐름도를 도시한다. 루틴 "deliverDCA"는 각각의 타겟에 대해 대응하는 타겟 장치에 제공된 DCA를 전달하는 단계(1202)에서 시작하는 루프이다. 비록 다른 실 시예들에서, DCA가 후속 타겟 장치들을 위한 후속 DCA들의 제공 전에 타겟 장치에 즉각적으로 전달되도록, 도 8의 단계들(808 및 810)이 인터리빙될 수 있지만, 기술된 실시예에서, 모든 DCA들이 각각의 타겟 장치들에 DCA의 전달 전에 타겟 장치들을 위하여 제공된다는 것이 표시된다. 단계(1204)에서, 현재 고려된 타겟 장치를 위하여 제공된 DCA는 선택된다. 만약 DCA가 단계(1206)에서 결정된 바와 같이 전자적으로 전달되지만, 단계들(1208-1212)에서, 다운로드 메시지는 단계(1210)에서 서버로부터 DCA를 다운로드하기 위하여 타겟 장치로 지향하도록 타겟 장치에 전송되고, 상기 경우 바람직한 예는 타겟 장치에 대해 적당하거나, 그렇지 않으면 DCA는 단계(1211)의 타겟 장치에 하나 또는 그 이상의 메시지들로 전송되고, 어느 하나의 경우에서, DCA의 다운로드 또는 전송은 단계(1212)의 메모리에 표시된다. 단계(1206)에서 DCA를 전자적으로 전달할지 여부의 결정은 타겟 장치, 사전 수집 사용자 선호도들, 또는 다른 정보의 특성을 바탕으로 이루어질 수 있다. 전자 전달은 전화 네트워크, 인터넷 및 전화 네트워크, 또는 타겟 장치와 서버 사이의 케이블들 또는 다른 직접적인 접속들 또는 서버와 통신하는 PC를 통하여 발생할 수 있다. DCA의 물리적 전달은 CD, DVD, 메모리 스틱, 또는 다른 상기 데이터 저장 매체 같은 데이터 저장 매체상에 DCA를 인코딩함하고, 메일 또는 패키지 전달 서비스들을 통하여 타겟 장치의 사용자에게 데이터 저장 매체를 물리적으로 전달함으로써 발생할 수 있다.
도 12b는 루틴 "deliverDCA"와 연관된 핸들러를 도시한다. 단계(1220)에서, 핸들러는 DCA 전달과 연관된 다음 이벤트를 기다린다. 이벤트가 발생할 때, 핸들 러는 단계(1222)에서 이벤트와 연관된 DCA 정보를 찾는다. 만약 이벤트가 단계(1224)에서 결정된 바와 같이 타이머 만료이면, 핸들러는 단계(1126)에서 이벤트와 연관된 DCA 정보의 재시도 카운터 정보를 액세스한다. 만약 전달이 단계(1228)에서 결정된 바와 같이 최대 횟수 시도되었다면, DCA 정보는 서버로부터 삭제되고, 전달에 대한 실패는 단계(1230)에서 표시된다. 그렇지 않으면, DCA는 단계들(1232=1234)에서 타겟 장치로 재전송되고, 타이머는 단계(1236)에서 리셋되고, 재시도 카운터는 단계(1238)에서 업데이트된다. 만약 설치가 단계(1240)에서 결정된 바와 같이 자동이 아니면, 단계(1242)에서, 핸들러는 적당한 설치 메시지 또는 신호는 타겟 장치에 전송한다. 다른 실시예들에서, 설치 메시지들 및 신호들의 전송은 DCA의 전달을 기다리는 핸들러 보다 핸들러에 의해 설정된 타이머 만료 같은 부가적인 이벤트에 응답하여 발생한다. 만약 이벤트가 단계(1244)에서 결정된 바와 같이 전달 완료 메시지의 수신이면, 이벤트와 연관된 DCA 정보는 서버 메모리로부터 삭제되고, 설치 데이터 테이블들은 단계(1246)에서 타겟 장치에 DCA의 성공적인 디플로이먼트를 반영하기 위하여 업데이트 된다.
만약 이벤트가 단계(1248)에서 결정된 바와 같이 부적당한 설치 메시지의 수신에 응답하면, 부적당한 설치 문제는 단계(1250)에서 진단된다. 특정 경우들에서, 단계(1252)에서 결정된 바와 같이, 설치가 재시도되면, 다른 경우들에서, DCA 디플로이먼트는 실패된 것으로 생각되고, 이벤트와 연관된 DCA 정보는 메모리로부터 삭제되고 실패는 단계(1254)에서 표시된다. 임의의 다른 이벤트들은 단계(1256)에서 디폴트 이벤트 핸들러에 의해 처리된다. 기술된 실시예에서, 핸들러 는 DCA가 성공적으로 디플로잉된 것으로 생각하기 위하여 타겟 장치로부터 전달 완료 메시지를 수신하기 위하여 기다린다. 다른 실시예들에서, "deliverDCA" 루틴은 타겟 장치가 DCA를 수신하고 성공적으로 디플로잉했는지를 메시징 또는 다른 수단을 통하여 명시적으로 질문할 수 있다.
도 13은 도 8의 단계(812)에서 호출된 루틴 "installDCA"에 대한 제어 흐름도를 도시한다. 이 루틴은 디플로잉된 DCA의 설치를 호출하기 위하여 설치 메시지들 또는 신호들을 요구하는 타겟 장치들에 명시적인 설치 메시지 또는 신호를 전송한다. 설치 메시지들 또는 신호들은 도 12a에 도시된 루틴 "DCA전달(deliverDCA)"에 의해 선택적으로 전송되거나, 타겟 장치에 대한 DCA의 전송 및 설치 사이의 합리적인 시간 양을 허용하도록 루틴 "deliverDCA"에 의해 설정된 타이머의 만료 다음 도 12b에 도시된 바와 같이 DCA 핸들러로부터 전송될 수 있다.
다음, DCA에 도 11의 단계(1120)에서 호출된 루틴을 부가하기 위하여 클라이언트들의 최소 세트를 결정하기 위한 방법은 도 14 및 15, 예시적인 SQL-유사 의사코드, 및 도 16 및 17에서 제공된 두 개의 제어 흐름도를 참조하여 기술된다. 도 14는 본 발명의 실시예들과 관련하여 용어들 "서비스 애플리케이션", "클라이언트" 및 "기능"의 의미를 도시한다. 도 14에서, 서버(1402) 및 타겟 장치(1404)는 블록들로서 도시된다. 타겟 장치로부터 액세스된 서비스를 제공하는 서비스 애플리케이션은 서버 및 타겟 장치 사이에 분배되는 것으로 생각되고, 서버측 서비스 애플리케이션 부분(1406)은 서버 상에서 실행하고 장치 측 서비스 애플리케이션 부분(1408)은 타겟 장치에서 실행한다. 장치 측 서비스 애플리케이션은 타겟 장치에 서 실행하는 하나 또는 그 이상의 클라이언트들에 의해 제공된 기능들을 호출할 수 있다. 클라이언트는 내장된 클라이언트(1410) 같은 서비스 애플리케이션 내에 내장될 수 있고, 클라이언트(1412) 같은 타겟 장치에서 운용하는 독립적인 실행코드 엔티티들일 수 있거나, 도 14의 내장된 클라이언트(14140 같은 클라이언트에 의해 제공된 기능들을 호출하는 서비스 애플리케이션으로부터의 다른 서비스 애플리케이션에 내장될 수 있다. 클라이언트들은 개인용 컴퓨터에서 실행하는 프로그램들에 의해 액세스되는 공유된 라이브러리 루틴들과 유사하다.
많은 핸드헬드 전자 장치들은 제한된 메모리들 및 제한된 계산 능력들을 가진다. 이들 장치들에서, 타겟 장치에 현재 디플로잉된 서비스들 및 고유의 타겟 장치 제어 프로그램 및 애플리케이션에 의해 필요한 많은 클라이언트들만을 설치하는 것은 중요하다. 따라서, DCA가 타겟 장치에 디플로잉될 때, 도 11의 단계(1120)에서 본 발명의 방법 및 시스템 실시예들은 타겟 장치에 서비스 애플리케이션의 디플로이먼트를 위하여 필요한 클라이언트들의 최소 세트를 디플로이먼트 및 활성화하기 위하여 시도한다.
타겟 장치들 상의 클라이언트들에 의해 제공된 클라이언트들의 디플로이먼트 및 활동 및 기능들을 모니터하고, 특정 서비스 애플리케이션의 디플로이먼트를 위하여 필요한 부가적인 클라이언트들 및 기능 활동들의 최소 세트를 결정하는 많은 다른 방식들이 있다. 일 실시예에서, 타겟 장치들에 서비스 애플리케이션들 및 클라이언트들의 디플로이먼트와 관련된 정보는 도 11의 단계(1120)에서 서비스 애플리케이션의 디플로이먼트 동안 필요한 클라이언트 디플로이먼트들 및 클라이언트 기능 활성화들의 최소 세트를 결정하기 위하여 사용된 서버 상의 관련 데이터베이스 테이블들의 세트에 유지된다.
도 15는 본 발명의 일 실시예에 따라 타겟 장치 상의 클라이언트 디플로이먼트 설치 및 서비스 애플리케이션에 관련된 정보를 저장하기 위하여 사용될 수 있는 한 세트의 관계 테이블들을 도시한다. 테이블 서비스들(1502)은 각각의 디플로잉된 서비스 애플리케이션을 위한 서비스_ID, 서비스_유형, 및 서비스_위치를 포함하는 타겟 장치들 상에 디플로잉된 서비스들과 관련된 정보를 저장한다. 유사하게, 테이블 클라이언트들(1504) 및 테이블 기능들(1506)은 디플로잉된 클라이언트들에 관한 정보 및 클라이언트들에 의해 제공된 기능들을 저장한다. 테이블 제공된_기능들(1508)은 각각의 클라이언트에 의해 제공된 기능들을 가리키는 클라이언트_ID/기능_ID 쌍들을 저장하고, 테이블 요구된_기능들(1510)는 각각의 다른 서비스 애플리케이션에 의해 필요한 특정 기능들을 가리키는 서비스_ID/기능_ID 쌍들을 저장한다. 테이블 서비스_클라이언트_호환성(1512)은 어느 클라이언트들이 어느 서비스 애플리케이션들과 호환하는지를 가리키는 서비스_ID/클라이언트_ID 쌍들을 저장하고, 테이블 공유가능(1514)은 특정 서비스 애플리케이션들에 관련하여 공유할 수 있는 클라이언트들을 가리키는 서비스_ID/클라이언트_ID 쌍들을 저장한다. 테이블 사용자들(1516)은 사용자_ID, 사용자_이름, 및 부가적인 사용자 정보 필드들을 포함하는 각각의 다른 사용자에 관한 정보를 포함한다. 테이블 장치들(1518)은 시스템에 공지된 사용자들에 의해 제어되거나 소유된 각각의 장치를 기술한다. 테이블 장치_클라이언트_호환성(1520)은 어느 클라이언트들이 어느 장치 유형들과 호환할 수 있는지를 가리키는 장치_유형/클라이언트_ID 쌍들을 저장하고, 테이블 장치_서비스_호환성(1522)은 서비스가 장치 유형과 호환할 수 있는 것을 각각 가리키는 서비스_유형/서비스_ID 쌍들을 저장한다. 테이블 설치된_서비스들(1524)은 서비스 애플리케이션들이 어느 장치들에 설치되었는가를 기술하는 장치_ID/서비스_ID 쌍들을 포함하고, 테이블 설치된_클라이언트들(1526)은 클라이언트들이 시스템에 공지된 다양한 장치들 상에 설치되었는지를 기술하는 장치_ID/클라이언트_ID 쌍들을 저장한다. 최종적으로, 테이블 활성화된_기능들(1528)은 각각의 타겟 장치 상의 각각의 클라이언트에 대해 활성화되는 기능들을 기술하는 3조의 장치_ID/클라이언트_ID/기능_ID를 저장한다.
도 16은 도 11에 기술된 루틴 "createDCA"의 단계(1120)라 불리는 서비스 애플리케이션을 디플로잉하는 과정 중에 타겟 장치에 부가하기 위하여 클라이언트들의 최소 세트를 결정하는 루틴을 도시하는 제어 흐름도이다. 도 16의 다양한 단계들은 SQL-유사 의사코드로 도시된다. SQL-유사 의사코드에서, 변수들(S 및 T)은 다음과 같이 정의된다.
Figure 112008022827261-PCT00001
첫째, 단계(1602)에서, 루틴은 디플로잉될 서비스 애플리케이션에 의해 요구된 기능들을 결정한다. 도 15에 도시된 관계 테이블들을 사용하여 이 단계에 대한 SQL-유사 의사코드는 다음에 제공된다.
Figure 112008022827261-PCT00002
만약 필요한 기능들이 단계(1604)에서 결정된 바와 같이 없다면, 클라이언트들이 부가될 필요가 없다는 표시는 단계(1606)에서 리턴된다. 다음, 단계(1608)에서, 루틴은 필요한 기능들 중 어느 것이 타겟 장치 상에 이미 설치된 호환 가능 클라이언트들에 의해 제공되는지를 결정한다. 이 단계에 대한 SQL-유사 의사코드는 다음과 같이 제공된다.
Figure 112008022827261-PCT00003
단계(1610)에서, 단계(1608)에서 결정된 호환 가능 클라이언트들에 의해 이미 제공된 기능들은 단계(1602)에서 결정된 서비스 애플리케이션에 의해 필요한 기능들로부터 삭제되어, 서비스 애플리케이션에 대하여 타겟 장치 상에 필요한 기능 들의 최종 리스트를 형성한다. 이 단계에 대한 SQL-유사 의사코드는 다음에 제공된다.
Figure 112008022827261-PCT00004
다음, 단계(1612)에서, 루틴은 단계(1608)에서 결정된 이미 이용 가능한 임의의 기능들이 활성화를 요구하는지 여부를 결정한다. 활성화를 요구하는 기능들은 루틴 "createDCA"로 궁극적으로 리턴되는 단계(1614)의 필요한 기능 활성화들의 리스트에 표시된다. 활성화를 요구하는 기능들을 결정하기 위한 SQL-유사 의사코드는 다음에 제공된다.
Figure 112008022827261-PCT00005
만약 기능들이 단계(1616)에서 결정된 바와 같이 타겟 장치 상에 필요하면, 단계(1618)에서, 루틴은 필요한 기능들을 제공하는 한 세트의 후보 클라이언트들을 결정한다. 이 단계에 대한 SQL-유사 의사코드는 다음에 제공된다:
Figure 112008022827261-PCT00006
만약 단일 후보 클라이언트가 단계(1620)에서 결정된 바와 같이 모든 필요한 기능들을 제공할 수 있으면, 단일 후보 클라이언트는 단계(1622)의 모든 요구된 기능들을 제공하고 리턴 리스트에 부가된 모든 후보 클라이언트들로부터 선택된다. 모든 요구된 기능들을 제공하는 후보 클라이언트들의 리스트를 얻기 위한 SQL-유사 의사코드는 다음과 같이 제공된다.
Figure 112008022827261-PCT00007
그렇지 않으면, 단계들(1622-1625)의 루프에서, 둘, 셋, 및 그 이상의 후보 클라이언트들의 수의 가능한 결합은 모든 요구된 기능들을 제공하기 위하여 필요한 최소의 후보 클라이언트들을 결정하기 위하여 고려된다. 일단 적당한 후보 결합이 발견되면, 클라이언트 결합은 단계(1624)에서 리턴된다. 만약 클라이언트들의 결합이 요구된 기능들을 제공하기 위하여 발견되지 않으면, 실패가 단계(1626)에서 리턴된다. 루틴에 의해 루틴 "createDCA"로 리턴된 리스트는 DCA에 기존 클라이언트들의 기능 활성화를 위한 명령들 및 클라이언트들을 포함시키고, 타겟 장치에 관련하여 명시적 기능 활성화 단계들을 수행하고, 및/도는 서비스 애플리케이션에 의해 요구될 때 클라이언트들의 최소 세트가 타겟 장치 상에 설치되고 요구된 기능들이 활성화되는 것을 보장하기 위한 다른 단계들을 수행하기 위하여 루틴 "createDCA"에 의해 사용될 수 있다.
본 발명의 특정 실시예들에서, 사용자는 타겟 장치로부터 서비스 애플리케이션을 제거하기 위한 방법을 호출하거나, 상기 방법은 선택적으로 특정 환경들 하에서 사용자의 PC 또는 서버에 의해 자동으로 호출될 수 있다. 도 17은 제거-서비스-애플리케이션 루틴에 대한 제어 흐름도를 제공한다. 단계(1702)에서, 루틴은 제거될 서비스 애플리케이션에 의해 요구된 기능들을 결정한다. 단계(1704)에서, 루틴은 제거될 서비스 애플리케이션에 의해 필요한 기능들 중 어느 것이 타겟 장치 상에 남아있는 다른 애플리케이션들이 요구되는지를 결정한다. 이런 정보를 사용하여, 단계(1706)에서 루틴은 일단 애플리케이션이 타겟 장치로부터 제거되면 타겟 장치 상에서 더 이상 필요한 기능들을 결정하고, 단계(1708)에서 어떤 기술들이 타겟 장치 상의 기능들을 비활성화하기 위하여 적당한지에 따라 요구되지 않은 기능 들을 비활성화한다. 단계(1710)에서 결정된 바와 같이, 만약 타겟 장치 상의 임의의 클라이언트들이 비활성화된 클라이언트들에 제공된 모든 기능들을 가지며, 그러므로 타겟 장치 상에서 요구되지 않으면, 클라이언트들은 단계(1712)에서 타겟 장치로부터 삭제된다. 최종적으로, 단계(1714)에서, 서비스 애플리케이션은 타겟 장치로부터 제거 또는 삭제되기 위하여 마크(mark)된다. 따라서, 타겟 장치에 현재 디플로잉된 서비스 애플리케이션들에 의해 필요한 타겟 장치 상의 클라이언트들의 최소 세트만을 유지함으로써, 본 발명은 메모리를 최소화하고 계산 리소스들은 타겟 장치 성능이 서비스 애플리케이션들에 의해 최소한으로 영향을 받고, 최소의 서비스 애플리케이션들이 타겟 장치에 디플로잉될 수 있도록 타겟 장치들 상의 서비스 애플리케이션들에 전념된다.
링크 바탕 장치간 통신
이전 서브섹션들에서 논의된 바와 같이, 도 6을 특히 참조하여, 본 발명의 방법 및 시스템 실시예들은 전자 핸드헬드 장치들, 서버들, 및 PC들이 사용자의 입장에서 안전하고 비교적 끊김없이 상호통신할 수 있도록 하는 가상 통신 매체 및 네트워크를 제공한다. 그러나, 이런 상호통신들은 도 1에 도시된 통신 환경 같은 현재 기존 환경 내에서 실행된다. 본 발명의 방법 및 시스템 실시예들에 의해 제공된 가상 통신 매체 및 네트워크는 장치들 사이의 링크들 설정을 바탕으로 한다. 도 18은 링크의 개념을 도시한다. 도 18에서, 제 1 장치(1802)는 링크(1806)를 통하여 제 2 장치(1804)와 통신한다. 링크는 상기 논의된 바와 같이, 서버, 또는 복수 서버 시스템들의 서버들이 장치들 사이에서 메시지들 및 데이터를 라루 팅(routing)하기 위한 스위치로서 작동하기 때문에 서버(1808)를 가로지르는 것으로 도시된다. 도 19는 도 18에 도시된 링크의 실행을 도시한다. 링크는 제 1 장치(1802) 및 서버(1808) 사이의 제 1 양방향 보안 접속(1902) 및 제 2 장치(1804) 및 서버(1808) 사이의 제 2 보안 접속(1904)로 구성된다. 링크는 논리적 엔티티이고, 보안 접속들의 파괴 및 재설정에도 불구하고 논리적으로 영속할 수 있다. 각각의 장치는 장치들이 서버 및 다른 장치들에 그 자체를 식별시키게 하는 글로벌, 유일 ID(1906 및 1907)와 연관된다. 서버는 시스템 내에서 모든 현재 활성 링크들을 기술하는 링크 테이블(1910)뿐 아니라 ID들(1908)에 장치들의 맵핑을 유지한다. 도 19에서, 링크 테이블(1912)의 일 실시예는 비록 임의의 다양한 다른 테이블 실행들이 가능하지만 관계 테이블로서 도시된다. 각각의 활성 링크는 테이블에 로우로 기술되고, 각각의 로우는 다음 필드들을 포함한다: (1) 링크(1914)를 유일하게 식별하는 링크_ID; (2) 링크(1916)를 처음으로 요구하는 장치의 ID; (3) 요구(1918)에 대한 타겟인 장치의 ID; (4) 링크 동작(1920) 동안 정보의 소스로서 사용하는 장치의 ID; (5) 링크(1922)의 동작 동안 정보의 싱크(sink)로서 사용하는 장치의 ID; (6) 링크 상에서 발생할 수 있는 동작들을 나타내는 링크(1924)의 유형의 표시; 및 (7) 하기 기술된 링크(1926)의 상태의 표시. 비록, 이 논의에서, 링크들이 일반적으로 단방향으로 고려되었지만, 양방향일 수 있다. 예를 들어 이미지 전달 애플리케이션들에서, 정보는 링크를 통하여 셀 폰에 의해 PC로 후속적으로 전송되는 이미지들의 레이트, 타이밍, 및 유형을 변경하기 위하여 PC에 의하여 셀 폰으로 리턴될 수 있다.
도 20은 본 발명의 방법 및 시스템에 따른 링크의 설정을 도시한다. 도 20에서, 링크 요구 장치에 대한 작용들은 제 1 컬럼(2002)에 도시되고, 서버에 의해 수행된 링크와 연관된 작용들은 제 2 컬럼(2004)에서 도시되고, 링크 요구의 타겟과 연관된 작용들은 제 3 컬럼(2006)에 도시되고, 링크의 현재 상태는 컬럼(2008)에 도시된다. 제 1 단계에서, 장치를 요구하는 것은 링크 요구를 위한 타겟 장치뿐 아니라 요구된 링크의 유형(2010)을 나타내는 링크 요구를 서버에 전송한다. 링크 요구를 수신한 후, 서버는 새로운 엔트리를 링크 테이블에 입력하고 링크 요구를 타겟 장치(2012)에 보낸다. 이 시점에서, 링크의 상태는 "링크 요구"(2014)이다. 타겟 장치가 링크 요구(2016)를 수신할 대, 타겟 장치는 타겟 장치가 그의 요구(2018)를 거절하는 것을 가리키는 하나의 메시지를 서버에 리턴하거나 타겟 장치가 링크 요구(2020)를 허용하는 것을 가리키는 메시지를 서버에 리턴한다. 타겟 장치가 링크 요구를 거절할 때, 서버는 링크가 거절되었다(2022)는 것을 가리키기 위해 링크 요구에 대한 링크 테이블 엔트리 거절 및 업데이트를 수신하고, 그 다음 요구 장치에 거절을 보낸다. 요구 장치(2024)는 거절을 수신하고, 링크 거절의 수신을 응답하고, 이 시점에서 링크의 상태는 "링크없음"이 된다. 적당한 시점에서, 링크 테이블의 링크에 대한 엔트리는 삭제된다. 다른 한편, 타겟 장치가 링크를 허용할 때, 서버는 상기 허용을 수신하고, 링크에 대한 링크 테이블 엔트리를 업데이트하고, 상기 허용을 요구 장치(2026)에 보낸다. 이때, 링크의 시작은 "링크 허용"이다. 요구 장치는 허용을 수신하고 서버(2028)에 상기 허용을 수신응답하고, 그 후 서버는 "링크 업"(2030)에 대한 링크 상태를 업데이트한다. 따라서, 장치들 사이의 각각의 링크는 장치에 의해 요구되어야 하고, 링크 요구는 링크가 설정되기 전에 링크 장치에 의해 허용되어야 한다. 메시지들 및 데이터는 양방향 처리로 링크를 통해 전송된다. 소스 장치는 어떤 통신 매체들이 소스 장치를 서버에 상호접속시키는지에 의해 서버에 메시지들 및 데이터를 전송하고, 서버는 어떤 통신 매체 및 방법이 서버 및 싱크 장치 사이에서 메시지들 및 데이터를 전달하기 위하여 사용되는지에 의해 싱크 장치에 메시지들 및 데이터를 전송한다. 그러므로 링크는 몇몇 하기, 유사하지 않은 통신 매체 및 방법들 및 메시지 및 서버에 의한 데이터 루팅을 사용하여 실행된 가상 통신 링크이다.
장치들 및 서버 사이의 보안 접속들은 장치에 디플로잉된 클라이언트들에 의해 실행된다. 도 21은 본 발명의 일 실시예에 따라 장치 상에서 운용하는 클라이언트 및 서버 사이의 보안 링크의 설정을 도시한다. 도 21에서, 클라이언트 작용들은 제 1 컬럼(2102)에 도시되고 서비스 작용들은 제 2 컬럼(2104)에 도시된다. 일 실시예에서, 클라이언트는 서버 인증 키로 컴파일되거나, 다른 말로 공적 암호화 키로 컴파일된다. 제 1 단계에서, 클라이언트는 공적/사적 암호화 키 쌍뿐 아니라 랜덤 ID(2106)를 생성한다. 단계(2108)에서, 클라이언트는 클라이언트에 포함된 서버 공적 키를 사용하여 업데이트되는 암호화 키 쌍의 고정 키 및 랜덤 ID를 서버에 전송한다. 단계(2110)에서, 서버는 암호화된 공적 키 및 랜덤 ID를 수신하고 공적 및 랜덤 ID를 복호화한다. 만약 서버가 단계(2112)에서 결정된 바와 같이, 종래에 공적 키/랜덤 ID 쌍을 보면, 서버는 단계(2114)에서 거절 메시지를 전송함으로써 클라이언트에 의해 생성된 랜덤 ID를 거절한다. 클라이언트가 2116에 서 거절 메시지를 수신할 때, 클라이언트는 보안 접속 설정을 재시도하거나 실패된 서버에 대한 보안 접속의 설정을 고려할 수 있다. 공적 키/랜덤 ID 쌍이 단계(2112)에서 결정된 바와 같이 서버에 의해 이전에 관찰되지 않았을 때, 서버는 단계(2118)에서 서버의 사적 서버 키를 가진 메시지를 신호하는 공적 키 및 랜덤 ID 쌍을 클라이언트에 리턴한다. 단계(2120)에서, 클라이언트는 서버로부터 공적 키/랜덤 ID 쌍을 수신하고 서버가 클라이언트로 컴파일된 서버 인증 키를 사용하는 메시지를 디지털적으로 신호하는 것을 검증한다. 그 다음 클라이언트는 단계(2122)에서 미래 통신시 클라이언트를 위한 ID로서 랜덤 ID를 사용할 수 있다. 서버와의 추가 통신시, 클라이언트는 클라이언트의 사적 키를 사용하여 메시지들 및 데이터를 암호화하고, 상기 서버는 클라이언트로부터 서버로 전달된 공적 키를 사용하여 통신 및 데이터를 복호화할 수 있다. 따라서, 장치 및 서버 사이의 보안 접속을 통한 통신은 장치가 도 18 및 19를 참조하여 상기된 가상 링크에 의해 링크되는 다른 장치들을 포함하는 다른 장치들에 의해 인터셉트되거나 사용될 수 없다.
전자 핸드헬드 장치들 상 에서 복수 작업 환경의 설정
상기된 바와 같이, 많은 셀 폰들을 포함하는 많은 전자 핸드헬드 장치들은 서비스 애플리케이션의 실행을 위하여 강건한 복수 작업 환경을 제공하기 위한 하드웨어 및 소프트웨어가 부족하다. 일반적으로, 서비스 애플리케이션들은 연산 시스템이 사용자 명령들, 인입 통신들, 및 다양한 인터럽트들 및 장치 관련 이메일들에 응답하기 위하여 개인용 컴퓨터상에서 연속적으로 실행할 필요가 있을 때처럼, 서비스 제공과 관련된 다양한 이벤트들에 참여하고 응답하기 위하여 전자 장치 상에서 연속적으로 또는 간헐적으로 실행할 필요가 있다. 단일 처리기 시스템에서, 연속적인 실행은 작은 시간 기간들, 또는 시간 부분들 동안 동시 실행 처리를 운용하고, 모든 처리들이 동시에 실행하는 환각을 제공하기 위하여 다른 처리들의 시간 부분들을 인터리빙함으로써 시뮬레이트된다. 다른 말로, 처리 실행은 처리기 상에서 시간 멀티플렉스된다. 본 발명의 방법 및 시스템 실시예들은 서비스 애플리케이션들을 전자 핸드헬드 장치들에 디플로잉하는 처리의 디플로이먼트 전에, 또는 상기 처리의 일부로서 전자 핸드헬드 장치들 상에 강건한 복수 작업 컴퓨팅 환경을 설정한다. 장치들이 강건한 복수 작업 환경을 제공하기에 충분히 정교할 때, 본 발명의 방법 및 시스템 실시예들은 그 기능성 자체에 가치가 있다. 그러나, 강건한 복수 작업 환경이 전자 핸드헬드 장치에 의해 제공되지 않는 보다 일반적인 경우에서, 본 발명의 방법 및 시스템 실시예들은 전자 핸드헬드 장치 내에서 이용할 수 있는 툴들, 전자 핸드헬드 장치와 서버를 상호접속시키는 네트워크, 및 서비스 애플리케이션들이 전자 핸드헬드 장치에 디플로잉되고 실행할 수 있는 계산 환경을 설정하기 위한 서버가 무엇이든 사용한다.
복수 작업 환경들에서 운용하는 애플리케이션들은 상호처리 통신을 위한 메카니즘을 일반적으로 요구한다. 컴퓨터 시스템들에서, 처리간 통신은 일반적으로 공유된 메모리 및/또는 상호처리 메시징 설비들을 사용하여 일반적으로 실행된다. 도 22는 본 발명의 방법 및 시스템 실시예들에 따라 전자 핸드헬드 장치가 고유 상호처리 통신들을 제공하지 않을 때 상호처리 통신이 서버와 통신시 전자 핸드헬드 장치에서 실행될 수 있는 다수의 가능한 방법들을 도시한다. 도 22에서, 전자 핸드헬드 장치는 제 1 블록(2202)으로서 도시되고 서버는 제 2 블록(2204)으로서 도시된다. 상호처리 통신을 달성하기 위한 하나의 방식은 하나의 처리에 의해 다른 것으로 전송된 메시지들 및 데이터를 저장하기 위한 장치 내에 국지적 메모리(2206)를 사용하는 것이다. 예를 들어, 큐들(queues) 또는 메일박스들은 메시지들 및 데이터가 다른 처리들에 후속 전달을 위하여 전달되도록 국지적 메모리내에서 실행될 수 있다. 선택적으로, 특정 장치들에서, 설비들은 메시지들의 일반적인 전송 및 수신을 위하여 제공될 수 있다. 이들 설비들은 다른 처리들이 식별되고 처리될 때, 처리들 사이에서 메시지를 내부적으로 전송하기 위하여 사용될 수 있다. 예를 들어, 특정 시스템들에서, 처리들은 인입 메시지 이벤트들의 메시지들 및 통지서를 수신하기 위하여 레지스터할 수 있다. 선택적으로, 특정 장치들은 처리들 사이에서 데이터 및 메시지를 전달하기 위하여 사용될 수 있는 원격 프로시저 콜들("RPC들")을 제공한다. 상기 설비들이 장치에 의해 제공되지 않을 때, 장치를 서버에 접속하는 통신 매체를 통한 외부 메시징은 장치 상에 운용하는 처리들 사이에서 메시지들을 전송하기 위하여 사용될 수 있다. 예를 들어, 처리는 장치로부터 메시지들을 수신하고 수신된 메시지들을 장치 상의 타겟 처리들에 전송하기 위한 서버 상에서 운용할 수 있다. 비록 비교적 불충분하지만, 이런 후속 기술은 대부분의 셀 폰들 및 다른 통신 장치들에 일반적으로 이용된다.
복수 작업 환경들에서 운용하는 처리는 데이터를 지속적으로 저장할 필요가 있어서, 상기 처리는 다수의 시간 부분들 및 정지 기간들에 걸쳐 작업을 계속 작동 시킬 수 있다. 도 23은 지속적인 데이터 저장 설비들이 본 발명의 방법 및 시스템 실시예들에 따라 장치에 의해 명시적으로 제공되지 않을 때 전자 핸드헬드 장치 상의 지속적인 데이터 저장을 실행하기 위한 다양한 방법들을 디스플레이한다. 첫째, 장치 내의 국지적 메모리(2302)는 메모리 할당 또는 협정에 의해 처리들 사이에서 분할될 수 있다. 선택적으로, 내부 메시징 설비들(2304)은 데이터를 포함하는 것 자체에 메시지들을 전송하기 위한 처리에 의해 사용될 수 있고; 후속 액세스 동안, 상기 처리는 후속 시간 부분들 동안 액세스할 필요가 있을 수 있다. 다른 말로, 하나의 처리는 메시지에 지속적으로 저장될 필요가 있는 데이터를 포함하고 메시지를 그 자체에 전송한다. 내부 메시징 서비스는 메시지를 수신하고 상기 처리에 전달하기 위한 메시지를 큐잉(queuing)한다. 처리는, 예를 들어, 처리의 시간 만기시 다른 처리로의 처리 설비들의 제어를 포기하는 처리로와 같이, 정지 상태로 진입할 수 있다. 추후, 처리가 재각성될 때, 처리는 데이터를 복구하기 위하여 큐잉된 메시지를 액세스할 수 있다. 내부 메시징 설비들이 장치 상에 제공되지 않을 때, 처리는 서버(2204) 내에 데이터를 저장하기 위하여 외부 메시징(2306)을 사용할 수 있다. 데이터는 메시징 큐들(2308-2309) 내에 저장되거나, 메시징 큐들로부터 떨어져 메모리 영역들(2310)에 저장될 수 있다.
단일 처리기 환경에서 복수 작업 시스템들내에서 운용하는 처리들은 처리기를 정지시키거나, 포기할 필요가 있고, 따라서 처리 작업들을 계속하기 위하여 추후에 자동으로 각성된다. 도 24는 본 발명의 방법 및 시스템 실시예들에 따라 전자 핸드헬드 장치 내에서 처리들을 시작 및 각성시키기 위하여 사용될 수 있는 다 수의 메카니즘들을 도시한다. 첫째, 장치는 장치 내의 다수의 처리들에 동시 처리를 제공하기 위하여 처리들을 중단 및 재각성시키기 위한 능력을 포함하는 복수 작업 환경을 제공하는 고유 연산 시스템 또는 제어 프로그램(2402)을 포함할 수 있다. 장치가 고유 연산 시스템 또는 제어 프로그램을 포함하지 않을 때, 장치는 만료 후 처리를 각성시키거나 재각성시키는 이벤트를 생성하는 타이머를 처리가 설정하게 하는 타이머 설비(2404)를 포함할 수 있다. 처리는 현재 실행의 시작시 합리적인 시간 부분 값으로 타이머들을 설정함으로써 복수 작업 환경을 실행하기 위하여 협력할 수 있다. 타이머가 만료할 때, 처리는 통지되고, 다른 처리에 대한 처리기의 제어를 포기한다. 선택적으로, 처리는 처리 동안 합리적인 다음 시간 부분에 해당하는 보다 먼 미래 시간으로 타이머를 설정할 수 있어서, 다른 처리들은 처리가 타이머의 만료에 의해 다시 각성될 때까지 중간에 실행할 수 있다. 따라서, 타이머들은 협력 처리들 중 복수 작업 환경을 실행하기 위한 많은 다른 방식들에 사용될 수 있다. 유사하게, 장치는 다른 유형의 이벤트들 발생 후 처리들이 각성되거나 재각성되도록 하는 이벤트 메카니즘들(2406)을 제공할 수 있다. 따라서, 처리는 서버로부터 특정 메시지 유형의 장치에 의한 수신에 의해 유도된 이벤트에 의해 각성되도록 레지스터할 수 있고, 서버는 합리적인 간격들에서 연속적인 재각성 처리들에 의해 복수 작업을 실행할 수 있다. 이것은 서버내에서 운용하는 감시 또는 모니터 프로그램(2408)에서 실행될 수 있다. 다른 기술은 이벤트 메카니즘 또는 타이머 설비를 사용하여 특정 시간들에서 처리들을 시작하기 위하여 장치(2410)에 고유한 종래 애플리케이션을 변형할 수 있고, 또는 특정 스케쥴링 클라 이언트 또는 애플리케이션은 복수 작업 환경을 실행하기 위하여 처리들을 시작 및 중단하기 위하여 장치 상에 설치될 수 있다. 다른 대안이 이용될 수 없을 때, 처리는 서버의 복수 작업 환경에서 서버(2412)상에서 실행할 수 있고 장치 상의 복수 작업 환경을 시뮬레이트하기 위하여 서버의 장치를 접속시키는 통신 매체를 통하여 장치와 데이터를 교환할 수 있다.
도 25는 본 발명의 방법 및 시스템 실시예들에 따른 강건한 복수 작업 환경을 실행하기 위하여 협력하는 처리에 대한 전자 핸드헬드 장치 상의 처리 작용을 도시하는 제어 흐름도이다. 도 25는 처리 동작의 단일 시간 부분 동안 처리 활동들을 도시한다. 단계(2502)에서, 처리는 도 24를 참조하여 상기된 임의의 방법들에 의해 각성된다. 단계(2504)에서, 처리는 처리가 감소된 리소스 사용 레벨에서 동작을 계속 하여야 하는지 여부를 결정하기 위하여 핸드헬드 장치의 물리적 환경을 모니터하기 위한 임의의 다양한 기술들을 사용한다. 특정 시스템들에서, 처리는 예를 들어 장치의 전력 레벨, 장치의 통신 상태, 및 다른 장치 상태들 및 동작 특성들을 결정하기 위한 장치 공급 기능들을 사용할 수 있다. 선택적으로, 처리는 작업들이 실행되는 레이트를 모니터링하고, 장치 상에서 운용하는 처리에 현재 이용할 수 있는 다양한 특징들을 주의하고, 장치의 다른 특성들을 주의함으로써 전력 상태들 및 통신 상태들을 간접적으로 검출할 수 있다. 단계(2506)에서 결정된 바와 같이, 만약 장치의 현재 특성이 처리 실행을 위하여 수행되지 않으면, 처리는 단계(2508)에서 후속 시간에 처리를 각성시키기 위하여 장치, 서버, 또는 장치 및 서버를 구성할 수 있고 단계(2510)에서 장치 내의 처리기의 제어를 포기하거나, 중 단할 수 있다. 그렇지 않으면, 단계(2512)에서 결정된 바와 같이, 만약 처리가 보다 작은 계산 리소스들을 사용할 필요가 있도록 장치의 상태가 존재하거나, 만약 처리가 부가적인 계산 리소스들을 안전하게 사용할 수 있도록 장치 상태가 존재하면, 처리는 단계(2514)에서 검출된 장치 상태에 따라 현재 시간 부분들의 길이를 변경할 수 있다. 다음, 단계(2516)에서, 처리는 도 23을 참조하여 상기된 임의의 방법들에 의해 실행을 계속하기 위하여 처리에 의해 필요한 지속적인 데이터를 복구한다. 그 다음 처리는 다른 수단에 의해 타이머가 만료하거나 처리가 검출할 때까지, 즉 현재 시간 부분이 종료될 때까지 단계들(2517-2518)의 루프에서 작업들의 실행을 수행할 수 있다. 시간 부분이 종료될 때, 처리는 도 24를 참조하여 상기된 임의의 방법들에 의해 단계(2520)에서 후속 시간에 처리를 재시작하고, 그 다음 단계(2510)에서 중단하기 위하여 장치, 장치 및 서버, 또는 서버를 구성한다. 따라서, 합리적인 시간 양 동안 실행하고, 그 다음 처리기를 중단함으로써, 전자 핸드헬드 장치에서 운용하는 처리들은 처리들이 다른 처리들과 실행을 인터리빙함으로써 긴 시간 기간들 동안 계속 실행할 수 있는 복수 작업 환경을 달성하기 위하여 협력할 수 있다. 게다가, 처리들은 저전력 조건들 같은 디폴트 시간 타임아웃 기간 이전 처리기를 중단하기 위하여 처리들을 요구하는 특정 장치 상태들 또는 특성들, 또는 셀 폰들의 경우 인입 또는 인출 음성 통신들을 검출할 수 있다.
본 발명의 일 실시예 나타내는 디지털 이미지 서비스 애플리케이션
본 발명의 상기된 구성요소 방법들 및 시스템들을 사용하여 디플로잉되고 실행될 수 있는 하나의 예시적인 서비스 애플리케이션은 다음에 기술된다. 예시적인 서비스 애플리케이션은 셀 폰에 의해 캡쳐된 디지털 이미지들이 셀 폰으로부터 셀 폰 사용자의 개인용 컴퓨터, 다른 개인용 컴퓨터들, 또는 제 3 파티 시스템들에 쉽고, 안전하고 끊김없이 전달되게 한다. 도 26은 본 발명의 일 실시예를 나타내는 디지털 이미지 전달 서비스 애플리케이션을 도시한다. 도 26에 도시된 바와 같이, 소스 장치(2602)에서 캡쳐되고 저장된 디지털 이미지들은 본 발명의 방법 및 시스템 실시예들에 의해 제공된 가상 통신 매체 또는 네트워크(2604)를 통하여 서버(2608)에 전달되고, 여기서 디지털 이미지들은 서버 메모리(2610)에 저장되고 및/도는 임의의 다양한 타겟 장치들(2612) 또는 다른 원격 엔티티들(2614)에 전송될 수 있다. 디지털 이미지 전달 서비스 애플리케이션은 소스 장치(2602), 서버(2608), 및 타겟 장치(2612)를 가로질러 분배되도록 고려될 수 있다. 도 27은 디지털 이미지 전달 서비스 애플리케이션의 소스 장치 부분의 동작을 도시하는 제어 흐름도이다. 서비스 애플리케이션은 이전 서브섹션에서 상기된 복수 작업 환경을 사용하여 소스 장치 상에서 연속적으로 또는 간헐적으로 운용된다. 단계(2702)에서, 서비스 애플리케이션은 디지털 이미지들 같은 임의의 새로운 데이터가 전달에 이용되는지를 결정한다. 만약 그렇지 않으면, 애플리케이션은 (2704)로 리턴하거나, 중단될 수 있다. 그렇지 않으면, 단계(2706)에서, 애플리케이션은 새롭게 이용할 수 있는 데이터가 서버에 국지적으로 저장되는지 전달되는지를 결정한다. 만약 데이터가 국지적으로 저장되어야 하면, 애플리케이션은 단계(2708)에서 후속 검색을 위하여 데이터를 저장하고, 중단한다. 그렇지 않으면, 단계(2710)에서, 애플리케이션은 데이터가 하나 또는 그 이상의 타겟 장치들에 구체적으로 어드레스되 어야 하는지 여부를 결정한다. 만약 그렇다면, 단계(2712)에서, 애플리케이션은 예를 들어 메시지 헤더에 타겟 어드레스들을 리스팅함으로써 타겟 어드레스들을 포함한다. 다음, 단계(2714)에서, 애플리케이션은 임의의 부가적인 처리가 필요한지를 결정하고 만약 그렇다면, 단계(2716)에서 데이터를 처리한다. 예를 들어, 디지털 이미지들의 경우, 애플리케이션은 이미지를 얻을 수 있고, 이미지의 해상도를 감소시키고, 이미지를 양자화하고, 이미지에 사용된 컬러들의 수를 감소시키거나, 이미지를 압축할 수 있다. 그 다음, 단계(2718)에서, 애플리케이션은 서버에 전송을 위한 이미지를 큐한다. 단계(2720)에서, 애플리케이션은 임의의 이전에 저장된 데이터가 서버에 전송되어야 하는지를 결정하고, 만약 그렇다면 단계(2722)에서 저장된 데이터를 검색하고 단계(2710)로 검색된 데이터를 전송한다. 최종적으로, 단계(2724)에서, 서비스 애플리케이션은 서버에 데이터를 전송한다.
도 28 및 29는 본 발명의 일 실시예를 나타내는 디지털 이미지 전달 서비스의 서버 부분을 도시한다. 단계(2802)에서, 애플리케이션은 임의의 새로운 데이터가 소스 장치로부터 수신되었는지를 결정한다. 만약 그렇지 않으면, 애플리케이션은 단계(2804)에서 중단할 수 있다. 그렇지 않으면 단계들(2806 및 2808)에서 시작하는 네스트된 루프들에서, 서버측 애플리케이션은 데이터 아이템에 대해 리스트된 각각의 타겟 장치에 관련하여 각각의 수신된 데이터 아이템을 처리한다. 단계(2810)에서, 애플리케이션은 임의의 처리가 데이터 아이템을 위하여 필요한지를 결정하고, 만약 그렇다면 단계(2812)에서 데이터 아이템을 처리한다. 상기된 바와 같이, 이런 처리는 타겟 장치 능력들과 호환하거나 효과적인 전달을 위하여 디지털 이미지를 수확, 압축, 또는 그렇지 않으면 변경 및 조정하는 것을 포함할 수 있다. 만약 타겟 장치가 단계(2814)에서 결정된 바와 같이 현재 이용 가능하면, 데이터 또는 디지털 이미지는 단계(2816)에서 타겟에 전달을 위하여 큐된다. 만약 디지털 이미지가 단계(2818)에서 결정된 바와 같이 시간 기간 동안 서버내에 국지적으로 저장될 필요가 있고, 그 다음 만약 디지털 이미지가 미리 국지적으로 저장되지 않으면, 애플리케이션은 단계(2820)에서 디지털 이미지를 저장한다. 만약 타겟이 단계(2814)에서 결정된 바와 같이 이용 가능하지 않으면, 디지털 이미지는 단계(2822)에서 국지적으로 저장되고, 만약 미리 국지적으로 저장되지 않고 작업은 단계(2824)에서 후속 시간에 타겟에 데이터의 후속 전달을 지시하기 위하여 서버내 국지적 큐로 큐된다. 데이터의 큐잉은 타이머를 설정하는 것을 포함한다.
도 29는 서버측 디지털 이미지 전달 애플리케이션과 연관된 핸들러를 도시한다. 핸들러는 단계(2902)에서 다음 이벤트가 발생하는 것을 기다린다. 만약 다음 이벤트가 단계(2904)에서 결정된 바와 같이, 큐 전달 타이머의 만료이면, 핸들러는 타이머와 연관된 데이터를 식별하고 가능할 때 단계(2906)에서 타겟 장치에 데이터를 전송한다. 만약 아이템이 단계(2908)에서 결정된 바와 같이 더 이상 필요하지 않으면, 핸들러는 디지털 이미지 같은 데이터 아이템을 단계(2910)에서 국지적 저장소로부터 삭제한다. 그렇지 않으면, 만약 실패 전달이 단계(2912)에서 타겟 장치로부터 실패 전달을 가리키는 서버에 전송된 메시지에 의한 것과 같이 검출되었다면, 단계(2914)에서, 핸들러는 타겟에 후속 전달을 위하여 데이터 아이템을 큐할 수 있다. 디폴트 핸들러(2916)는 부가적인 이벤트들의 유형을 조절한다.
도 30은 본 발명의 일 실시예를 나타내는 디지털 이미지 전달 서비스의 타겟 장치 부분을 도시하는 제어 흐름도이다. 단계(3002)에서, 애플리케이션은 디지털 이미지 같은 새로운 데이터가 수신되었는지를 결정한다. 만약 그렇지 않으면, 처리는 단계(3004)에서 리턴하거나 중단할 수 있다. 그렇지 않으면, 애플리케이션은 단계(3006)에서 수신된 데이터 유지 메시지 또는 메시지들로부터 메타데이터를 추출한다. 만약 수신된 데이터의 처리가 단계(3008)에서 결정된 바와 같이 요구되면, 데이터는 단계(3010)에서 처리된다. 그렇지 않으면, 단계들(3012-3015)을 포함하는 루프에서, 애플리케이션은 데이터가 임의의 다양한 저장 기준에 부합할 때, 타겟 장치 내의 타겟 위치들에 데이터를 저장한다. 따라서, 예를 들어, 타겟은 이미지들의 수신 빈도, 하루의 시간, 또는 다른 기준에 따라 소스 장치로부터 수신된 모든 이미지들 보다 특정 이미지들만을 저장하기 위하여 선택할 수 있다.
비록 본 발명의 특정 실시예들의 측면에서 기술되었지만, 본 발명이 이들 실시예들로 제한되는 것은 의도되지 않는다. 본 발명의 사상 내에서 수정들은 당업자에게 명백할 것이다. 예를 들어, 임의의 거대한 수의 다른 형태의 서비스 애플리케이션들은 본 발명의 방법 및 실시예들에 따라 실행될 수 있다. 서비스 애플리케이션들은 데이터를 전달하고, 데이터를 수집하고, 디스플레이 생성 애플리케이션들을 시작하고, 다양한 성질들의 주기적인 작업들, 및 많은 다른 형식의 작업들 및 활동들을 수행하기 위해 사용될 수 있다. 상기 애플리케이션들은 임의의 다양한 다른 프로그래밍 언어들, 제어 구조들, 모듈식 구성들, 데이터 구조들, 변수들, 및 다른 상기 프로그래밍 특성들을 사용하여 실행될 수 있다. 본 발명의 구성요소 방 법 및 시스템 실시예들은 장치들이 서로 상호작용하고 서버와 통신하는 다양한 다른 형태의 통신 매체, 프로토콜들, 및 시스템들을 포함하는 서버 시스템 및 임의의 특정 장치에 맞추어질 수 있다. 가상 통신 매체 또는 네트워크의 실행은 임의의 다수의 다른 형태의 장치들, 서버들, 및 장치/서버 상호접속 환경들에 맞추어질 수 있다. 특정 시스템들에서, 사용자 인터페이스들은 사용자가 서비스 애플리케이션들의 동작을 위한 허용을 제어, 수신응답 및 승인하게 하도록 디플로잉된 서비스 애플리케이션들에 의해 제공될 수 있다. 서비스 애플리케이션들은 장치들 사이, 즉 전화 네트워크를 통한 셀 폰들 사이에서 교환되는 대역밖 메시지들에 의해 부가적으로 제어될 수 있다. 비록 복수 작업 환경들이 서비스 애플리케이션 실행을 위하여 바람직하지만, 서비스 애플리케이션들은 특정 장치 상에서 복수 작업 환경들을 생성하는 것이 가능하지 않을 때 실행될 수 있고, 가장 나쁜 경우 필요할 때 장치에 서비스 애플리케이션을 반복적으로 재전송함으로써 실행될 수 있다.
설명을 위한 상기 설명은 본 발명의 완전한 이해를 제공하기 위하여 특정 명명법이 사용된다. 그러나, 특정 세목들이 본 발명을 실행하기 위하여 요구되지 않는다는 것은 당업자에게 명백할 것이다. 본 발명의 특정 실시예들의 상기 설명들은 도시 및 설명을 위하여 제공된다. 이들 설명들은 개시된 정밀한 형태로 본 발명을 배제하거나 제한하기 위한 것이 아니다. 명백하게 많은 수정들 및 변수들은 상기 기술들의 측면에서 가능하다. 실시예들은 본 발명의 원리 및 실제 애플리케이션들을 가장 잘 설명하기 위하여 도시 및 기술되어, 당업자는 고려된 특정 용도에 적합한 다양한 수정들을 가진 다양한 실시예들 및 본 발명을 가장 잘 사용할 수 있다. 본 발명의 범위는 다음 청구항들 및 그 등가물들로 정의된다.

Claims (12)

  1. 복수 통신 매체 및 네트워크들에 의해 상호접속된 전자 핸드헬드 장치들, 서버 및 개인용 컴퓨터들을 포함하는 이종(heterogeneous) 컴퓨팅 환경에 서비스 애플리케이션 실행 환경을 제공하기 위한 방법으로서,
    각각의 전자 핸드헬드 장치들 상에 동적으로 생성된 장치 측 서비스 애플리케이션을 디플로잉(deploying)하는 단계로서, 상기 장치 측 서비스 애플리케이션은 상기 전자 핸드헬드 장치에 디플로잉하기 위하여 특정하게 맞추어지고 그리고 서버와 통신을 허용하기 위하여 사전 구성되고, 복수 작업(multitasking) 설비들이 전자 핸드헬드 장치 상의 장치 측 서비스 애플리케이션에 이용할 수 없을 때, 상기 전자 핸드헬드 장치 상에 복수 작업 환경을 설정하기 위하여 하나 또는 그 이상의 상기 전자 핸드헬드 장치, 서버 및 네트워크에 의해 제공된 특징들 및 기능들을 사용하는, 상기 장치 측 서비스 애플리케이션 디플로잉 단계; 및
    각각의 전자 핸드헬드 장치 및 서버 사이의 보안 접속들을 설정하는 단계를 포함하는, 서비스 애플리케이션 실행 환경 제공 방법.
  2. 제 1 항에 있어서, 상기 전자 핸드헬드 장치 상에 복수 작업 환경을 설정하기 위하여 하나 또는 그 이상의 상기 전자 핸드헬드 장치, 서버 및 네트워크에 의해 제공된 특징들 및 기능들을 사용하는 단계는,
    상기 전자 핸드헬드 장치와 연관된 처리들을 위한 상호처리 통신을 제공하기 위하여 하나 또는 그 이상의 상기 전자 핸드헬드 장치, 서버 및 네트워크에 의해 제공된 특징들 및 기능들을 사용하는 단계;
    상기 전자 핸드헬드 장치와 연관된 처리들을 위해 지속적인 데이터 저장을 제공하기 위하여 하나 또는 그 이상의 상기 전자 핸드헬드 장치, 서버 및 네트워크에 의해 제공되는 특징들 및 기능들을 사용하는 단계; 및
    상기 전자 핸드헬드 장치와 연관된 처리들을 시작 및 재각성(reawakening)시키기 위하여 하나 또는 그 이상의 상기 전자 핸드헬드 장치, 서버 및 네트워크에 의해 제공된 특징들 및 기능들을 사용하는 단계를 더 포함하는, 서비스 애플리케이션 실행 환경 제공 방법.
  3. 제 2 항에 있어서, 상호처리 통신을 제공하기 위하여 사용된 특징들 및 기능들은,
    상기 전자 핸드헬드 장치 내의 내부 메시징 설비;
    네트워크 메시지들;
    상기 전자 핸드헬드 장치에 대해 국지적인(local) 메모리; 및
    상기 전자 핸드헬드 장치 내의 원격 절차 콜 설비 중 하나 또는 그 이상을 포함하는, 서비스 애플리케이션 실행 환경 제공 방법.
  4. 제 2 항에 있어서, 지속적인 데이터 저장을 제공하기 위하여 사용된 특징들 및 기능들은,
    상기 전자 핸드헬드 장치 내의 내부 메시징 설비;
    네트워크 메시지들;
    상기 전자 핸드헬드 장치에 대해 국지적인 메모리;
    서버 메모리; 및
    서버 메시지 큐들(queues) 중 하나 또는 그 이상을 포함하는, 서비스 애플리케이션 실행 환경 제공 방법.
  5. 제 2 항에 있어서, 처리들을 시작 및 재각성시키기 위해 사용된 특징들 및 기능들은,
    상기 전자 핸드헬드 장치에 고유한 운영 시스템 또는 제어 프로그램;
    상기 전자 핸드헬드 장치 내의 이벤트 핸들링 설비;
    상기 전자 핸드헬드 장치 내에서 운용하는 스케쥴링 및 모니터링 처리;
    상기 전자 핸드헬드 장치 내의 타이머 설비;
    상기 서버 상에서 운용하는 모니터 프로그램; 및
    상기 서버 상의 처리들의 실행에 의한 시뮬레이션 중 하나 또는 그 이상을 포함하는, 서비스 애플리케이션 실행 환경 제공 방법.
  6. 제 1 항에 있어서, 상기 전자 핸드헬드 장치 및 상기 서버 사이의 보안 접속을 설정하는 단계는,
    상기 전자 핸드헬드 장치 상에서 운용하는 클라이언트에 의해 공적/사 적(public/private) 암호화 키 쌍을 생성하는 단계;
    상기 전자 핸드헬드 장치 상에서 운용하는 상기 클라이언트에 의해 식별자를 생성하는 단계;
    상기 생성된 공적 키 및 식별자를 암호화하기 위하여 상기 클라이언트에 포함된 서버 공적 키를 사용하는 단계 그리고 상기 서버에 상기 암호화되어 생성된 공적 키 및 식별자를 전송하는 단계;
    상기 공적 키 및 식별자가 통신을 위하여 허용될지 여부의 표시를 상기 서버로부터 수신하는 단계로서, 상기 표시는 상기 서버에 의해 디지털적으로 서명되고;
    상기 표시가 상기 서버에 의해 전송된 것을 검증하기 위하여 상기 클라이언트에 포함된 상기 서버 공적 키를 사용하는 단계; 및
    상기 표시가 상기 생성된 공적 키 및 식별자의 허용을 가리킬 때, 보안 접속을 통하여 후속 통신 동안 클라이언트 및/또는 장치 식별자로서 상기 식별자를 사용하는 단계 그리고 상기 서버와 교환된 메시지들 및 데이터를 암호화 및 복호화하기 위하여 상기 공적/사적 암호화 키 쌍을 사용하는 단계를 더 포함하는, 서비스 애플리케이션 실행 환경 제공 방법.
  7. 제 1 항의 방법에 의해 생성된 서비스 애플리케이션 실행 환경 내에서 운용하는 디지털 이미지 전달 서비스 애플리케이션으로서,
    상기 디지털 이미지 전달 서비스 애플리케이션은 상기 서버를 통하여 사용자 장치로 셀 폰에 포함된 디지털 카메라에 의해 캡쳐된 디지털 이미지들을 전달하는, 디지털 이미지 전달 서비스 애플리케이션.
  8. 전자 핸드헬드 장치에 장치 측 서비스 애플리케이션을 디플로잉하기 위한 방법으로서,
    사용자로부터 디플로이먼트 요구를 수신하는 단계;
    상기 사용자를 인증하는 단계;
    상기 전자 핸드헬드 장치의 위치를 파악하여 식별하기 위하여 상기 사용자에 의해 공급된 정보를 사용하는 단계;
    상기 전자 핸드헬드 장치를 위하여 특정하게 맞추어진 상기 장치 측 서비스 애플리케이션의 버젼을 생성하는 단계;
    상기 전자 핸드헬드 장치에 상기 특정하게 맞추어진 장치 측 서비스 애플리케이션을 전달하는 단계; 및
    상기 전자 핸드헬드 장치 내에서 실행하기 위하여 상기 특정하게 맞추어진 장치 측 서비스 애플리케이션을 설치하는 단계를 포함하는, 장치 측 서비스 애플리케이션 디플로잉 방법.
  9. 제 8 항에 있어서, 상기 사용자를 인증하는 단계는,
    상기 사용자로부터 식별 정보를 요구하고 이전에 저장된 정보와 응답하여 수신된 식별 정보를 비교하는 단계; 및
    이전에 저장된 정보와 상기 디플로이먼트 요구로부터 추출된 정보를 매칭하 는 단계 중 하나 또는 그 이상을 더 포함하는, 장치 측 서비스 애플리케이션 디플로잉 방법.
  10. 제 8 항에 있어서, 상기 전자 핸드헬드 장치의 위치를 파악하고 식별하기 위하여 사용자에 의해 공급된 정보를 사용하는 단계는,
    상기 전자 핸드헬드 장치에 설치 메시지를 전송하고 상기 전자 핸드헬드 장치의 유형을 식별하기 위하여 상기 전자 핸드헬드 장치에 의해 리턴된 응답으로부터 정보를 추출하는 단계를 더 포함하는, 장치 측 서비스 애플리케이션 디플로잉 방법.
  11. 제 10 항에 있어서, 상기 전자 핸드헬드 장치의 유형이 상기 전자 핸드헬드 장치에 의해 리턴된 상기 응답으로부터 추출된 정보로부터 결정될 수 없을 때, 상기 전자 핸드헬드 장치에 프로브(probe) 애플리케이션을 전송하고 상기 전자 핸드헬드 장치의 유형을 결정하기 위하여 상기 전자 핸드헬드 장치 상에 상기 프로브 애플리케이션을 설치하는 단계를 더 포함하는, 장치 측 서비스 애플리케이션 디플로잉 방법.
  12. 제 8 항에 있어서, 상기 전자 핸드헬드 장치에 특정하게 맞추어진 상기 장치 측 서비스 애플리케이션의 버젼을 생성하는 단계는,
    소스 코드를 컴파일하는 단계;
    어셈블리 코드를 어셈블링하는 단계;
    기존 실행코드들을 수정하는 단계;
    상기 전자 핸드헬드 장치에 이미 설치된 클라이언트에 의해 제공된 기능들을 활성화하는 단계;
    상기 전자 핸드헬드 장치 상에 부가적인 클라이언트들의 최소의 세트를 설치하는 단계;
    상기 전자 핸드헬드 장치에 전달하기 위한 데이터를 선택하는 단계; 및
    상기 전자 핸드헬드 장치에 실행코드들 및 데이터를 안전하게 전달하는 단계 중 하나 또는 그 이상을 더 포함하는, 장치 측 서비스 애플리케이션 디플로잉 방법.
KR1020087007701A 2005-09-28 2006-09-28 이형, 분산 컴퓨팅 시스템에 서비스 애플리케이션 실행환경을 형성하기 위한 방법 및 시스템, 그리고 상기 서비스애플리케이션 실행 환경에서 실행하는 사용자 친화적데이터 전달 서비스 애플리케이션 KR20080068647A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US72126205P 2005-09-28 2005-09-28
US60/721,262 2005-09-28

Publications (1)

Publication Number Publication Date
KR20080068647A true KR20080068647A (ko) 2008-07-23

Family

ID=37900504

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020087007701A KR20080068647A (ko) 2005-09-28 2006-09-28 이형, 분산 컴퓨팅 시스템에 서비스 애플리케이션 실행환경을 형성하기 위한 방법 및 시스템, 그리고 상기 서비스애플리케이션 실행 환경에서 실행하는 사용자 친화적데이터 전달 서비스 애플리케이션

Country Status (5)

Country Link
US (3) US7698392B2 (ko)
EP (1) EP1963986A2 (ko)
KR (1) KR20080068647A (ko)
BR (1) BRPI0616699A2 (ko)
WO (1) WO2007038766A2 (ko)

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7428239B1 (en) * 2004-08-26 2008-09-23 Software Site Applications, Limited Liability Company Apparatus and method for priority queuing with segmented buffers
US9009265B2 (en) 2005-09-28 2015-04-14 Photobucket Corporation System and method for automatic transfer of data from one device to another
US8015253B1 (en) 2005-09-28 2011-09-06 Photobucket Corporation System and method for controlling inter-device media exchanges
US9049243B2 (en) 2005-09-28 2015-06-02 Photobucket Corporation System and method for allowing a user to opt for automatic or selectively sending of media
KR20080068647A (ko) 2005-09-28 2008-07-23 온텔라, 인크. 이형, 분산 컴퓨팅 시스템에 서비스 애플리케이션 실행환경을 형성하기 위한 방법 및 시스템, 그리고 상기 서비스애플리케이션 실행 환경에서 실행하는 사용자 친화적데이터 전달 서비스 애플리케이션
US7319908B2 (en) * 2005-10-28 2008-01-15 Microsoft Corporation Multi-modal device power/mode management
US9424270B1 (en) 2006-09-28 2016-08-23 Photobucket Corporation System and method for managing media files
US8489702B2 (en) * 2007-06-22 2013-07-16 Apple Inc. Determining playability of media files with minimal downloading
US9536009B2 (en) 2007-08-08 2017-01-03 Microsoft Technology Licensing, Llc Embedding a representation of an item in a host
US20090077551A1 (en) * 2007-09-18 2009-03-19 Novell, Inc. Virtual machine image builder for automated installation of fully-virtualized operating system
US7979847B2 (en) * 2007-09-28 2011-07-12 Microsoft Corporation Visual debugger for declarative/data-flow applications
US8276132B1 (en) * 2007-11-12 2012-09-25 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
US8281294B1 (en) * 2007-11-12 2012-10-02 Nvidia Corporation System and method for representing and managing a multi-architecture co-processor application program
US8738905B2 (en) * 2007-12-10 2014-05-27 International Business Machines Corporation Third party secured storage for web services and web applications
US8918461B2 (en) * 2007-12-21 2014-12-23 Koninklijke Philips N.V. Matched communicating devices
US8959248B2 (en) * 2008-02-22 2015-02-17 Microsoft Corporation Personal computing environment with virtual computing device
US8862548B2 (en) * 2008-03-04 2014-10-14 Apple Inc. File system cloning between a target device and a host device
US7912927B2 (en) * 2008-03-26 2011-03-22 Microsoft Corporation Wait for ready state
US8196118B2 (en) * 2008-03-27 2012-06-05 Microsoft Corporation Event set recording
US8086688B1 (en) 2008-05-16 2011-12-27 Quick Vault, Inc. Method and system for mobile data security
US8261293B2 (en) * 2008-07-21 2012-09-04 International Business Machines Corporation Methods, systems and computer program products for application name and client ID pairing in a message connection
CN101635763A (zh) * 2008-07-23 2010-01-27 深圳富泰宏精密工业有限公司 图片分类***及方法
US20100082860A1 (en) * 2008-09-26 2010-04-01 Yahoo! Inc. System and method for updating the status of an asynchronous, idempotent message channel
US9582292B2 (en) * 2008-10-07 2017-02-28 Microsoft Technology Licensing, Llc. Merged tree-view UI objects
US8595491B2 (en) * 2008-11-14 2013-11-26 Microsoft Corporation Combining a mobile device and computer to create a secure personalized environment
JP4727714B2 (ja) * 2008-12-05 2011-07-20 株式会社日立製作所 サーバのフェイルオーバの制御方法及び装置、並びに計算機システム群
US8788625B2 (en) * 2008-12-11 2014-07-22 Sap Ag Displaying application content in synchronously opened window
WO2011027352A1 (en) 2009-09-03 2011-03-10 Mcafee, Inc. Network access control
US8311873B2 (en) * 2009-11-19 2012-11-13 Bank Of America Corporation Application risk framework
JP2011165069A (ja) * 2010-02-12 2011-08-25 Fujitsu Ltd 情報記憶装置
US8370926B1 (en) * 2010-04-27 2013-02-05 Symantec Corporation Systems and methods for authenticating users
US20150205489A1 (en) * 2010-05-18 2015-07-23 Google Inc. Browser interface for installed applications
EP2405624A1 (en) * 2010-07-09 2012-01-11 Thomson Licensing Method for operating a remote procedure call handler in a client and a server and computer system comprising the same.
US8819672B2 (en) * 2010-09-20 2014-08-26 International Business Machines Corporation Multi-image migration system and method
US8898310B2 (en) * 2010-12-15 2014-11-25 Microsoft Corporation Enhanced content consumption
TW201227367A (en) * 2010-12-31 2012-07-01 Altek Corp Image management method of digital photography device
US8775535B2 (en) * 2011-01-18 2014-07-08 Voxilate, Inc. System and method for the transmission and management of short voice messages
JP5225412B2 (ja) * 2011-03-03 2013-07-03 株式会社東芝 通信装置および通信方法
US8947453B2 (en) 2011-04-01 2015-02-03 Sharp Laboratories Of America, Inc. Methods and systems for mobile document acquisition and enhancement
US9094617B2 (en) 2011-04-01 2015-07-28 Sharp Laboratories Of America, Inc. Methods and systems for real-time image-capture feedback
US8924958B1 (en) * 2011-05-24 2014-12-30 BlueStack Systems, Inc. Application player
US20120302266A1 (en) * 2011-05-25 2012-11-29 Ruth Ann Lim Communicate an internet protocol address to a mobile phone
ITMI20111287A1 (it) * 2011-07-11 2013-01-12 Ibm Distribuzioni di sistemi operativi con rilevazione di condizioni di ciclo
JP5942354B2 (ja) * 2011-07-22 2016-06-29 ソニー株式会社 無線通信装置、情報処理装置、通信システムおよび無線通信装置の制御方法
US8739247B2 (en) * 2011-12-06 2014-05-27 At&T Intellectual Property I, L.P. Verification service
US20130191495A1 (en) * 2012-01-23 2013-07-25 Cristian Almstrand Framework and system to distribute applications for heterogeneous platforms
CN102710612B (zh) * 2012-05-11 2016-06-29 张伟 实现多方交互通信应用的方法及装置
FR2994623B1 (fr) * 2012-08-16 2015-11-13 Astrium Sas Dispositif et procede de transfert unidirectionnel de donnees
CN103748943A (zh) * 2012-08-17 2014-04-23 华为技术有限公司 用户设备配对处理方法、网络侧设备和用户设备
US9307026B2 (en) * 2012-09-20 2016-04-05 Amazon Technologies, Inc. Fulfillment of applications to devices
CN103324471B (zh) * 2012-10-22 2018-05-15 中兴通讯股份有限公司 动态修改应用启动图标的方法、消息的发送方法、终端
US20140207902A1 (en) * 2013-01-23 2014-07-24 Dell Products L.P. Systems and methods for out-of-band management of an information handling system
CN104184753B (zh) * 2013-05-20 2018-04-27 腾讯科技(深圳)有限公司 一种文件传输方法及装置
WO2015000085A2 (en) * 2013-07-02 2015-01-08 Unsworth Andrew Baillie A system for activating a recording device to capture the reaction of a recipient, subject, and/or sender during a media or gift exchange
US10250579B2 (en) * 2013-08-13 2019-04-02 Alcatel Lucent Secure file transfers within network-based storage
CA2929173A1 (en) * 2013-10-30 2015-05-07 Huawei Device Co., Ltd. Key configuration method, system, and apparatus
US11288346B1 (en) * 2014-03-03 2022-03-29 Charles Schwab & Co., Inc. System and method for authenticating users using weak authentication techniques, with differences for different features
US9489711B2 (en) * 2014-08-21 2016-11-08 Facebook, Inc. Systems and methods for recipient-side image processing
US9894009B2 (en) * 2014-08-29 2018-02-13 Microsoft Technology Licensing, Llc Client device and host device subscriptions
KR101612833B1 (ko) * 2014-12-15 2016-04-15 현대자동차주식회사 이동 단말, avn 단말, 각각의 제어 방법 및 길 안내 시스템
FI125649B (en) * 2015-03-05 2015-12-31 Piceasoft Oy Method and apparatus for streaming data between devices
US9893910B2 (en) * 2016-02-22 2018-02-13 Brother Kogyo Kabushiki Kaisha Non-transitory computer-readable medium storing instructions
JP6444932B2 (ja) * 2016-04-15 2018-12-26 ファナック株式会社 サーバベースのアプリケーションソフトウエア実行システム
US10432685B2 (en) * 2016-05-31 2019-10-01 Brightcove, Inc. Limiting key request rates for streaming media
EP3510745A1 (en) * 2016-10-05 2019-07-17 ShortSave, Inc. Single point of custody secure data exchange
US11093927B2 (en) * 2017-03-29 2021-08-17 International Business Machines Corporation Sensory data collection in an augmented reality system
US10426424B2 (en) 2017-11-21 2019-10-01 General Electric Company System and method for generating and performing imaging protocol simulations
CN109391528A (zh) * 2018-08-31 2019-02-26 百度在线网络技术(北京)有限公司 语音智能设备的唤醒方法、装置、设备及存储介质
CN114050982B (zh) * 2021-11-22 2024-02-23 深圳市元征科技股份有限公司 软件升级方法、装置、电子设备和存储介质
WO2023092345A1 (zh) * 2021-11-24 2023-06-01 百果园技术(新加坡)有限公司 身份认证方法、装置、终端、存储介质及程序产品

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6628965B1 (en) * 1997-10-22 2003-09-30 Dynamic Mobile Data Systems, Inc. Computer method and system for management and control of wireless devices
US7016811B2 (en) * 2001-08-15 2006-03-21 National Instruments Corporation Network-based system for configuring a programmable hardware element in a measurement system using hardware configuration programs generated based on a user specification
US6438585B2 (en) * 1998-05-29 2002-08-20 Research In Motion Limited System and method for redirecting message attachments between a host system and a mobile data communication device
US7173651B1 (en) * 1998-06-02 2007-02-06 Knowles Andrew T Apparatus and system for prompt digital photo delivery and archival
US6658564B1 (en) * 1998-11-20 2003-12-02 Altera Corporation Reconfigurable programmable logic device computer system
US6442573B1 (en) * 1999-12-10 2002-08-27 Ceiva Logic, Inc. Method and apparatus for distributing picture mail to a frame device community
US7068643B1 (en) 2000-11-03 2006-06-27 Intervoice Limited Partnership Extensible interactive voice response
US20020102966A1 (en) * 2000-11-06 2002-08-01 Lev Tsvi H. Object identification method for portable devices
GB2371935B (en) * 2001-01-31 2003-11-26 Hewlett Packard Co Automatic camera method, apparatus and service
US20040171371A1 (en) * 2001-04-20 2004-09-02 Glenn Paul Automatic camera image transmittal system
US20020174206A1 (en) * 2001-05-21 2002-11-21 Moyer Alan L. Web-based file manipulating system
AU2002355800A1 (en) * 2001-07-31 2003-02-17 Silicom Ltd. Device-related software installation
EP1456778A4 (en) * 2001-10-26 2006-05-24 Zeosoft Technology Group Inc SYSTEM FOR DEVELOPING, MANAGING AND OPERATING DISTRIBUTED CLIENTS AND SERVERS
JP2003143256A (ja) * 2001-10-30 2003-05-16 Nec Corp 端末装置と通信制御方法
US20080301231A1 (en) * 2001-11-28 2008-12-04 Samir Narendra Mehta Method and System for Maintaining and Distributing Wireless Applications
US7724281B2 (en) * 2002-02-04 2010-05-25 Syniverse Icx Corporation Device facilitating efficient transfer of digital content from media capture device
US20030172127A1 (en) * 2002-02-06 2003-09-11 Northrup Charles J. Execution of process by references to directory service
US20040070671A1 (en) * 2002-03-28 2004-04-15 Bengtsson Anders Ola HalloMyHome, an internet service automatically communicating images from home, or other physical location, to a mobile telephone
US7764308B2 (en) * 2002-05-27 2010-07-27 Nikon Corporation Image transmission system, image relay apparatus, and electronic image device
GB0304628D0 (en) * 2003-02-28 2003-04-02 Imec Inter Uni Micro Electr Method for hardware-software multitasking on a reconfigurable computing platform
US20030229667A1 (en) * 2002-06-10 2003-12-11 Nils-Johan Pedersen System, computer product and method for delivering pictures electronically
US6763226B1 (en) * 2002-07-31 2004-07-13 Computer Science Central, Inc. Multifunctional world wide walkie talkie, a tri-frequency cellular-satellite wireless instant messenger computer and network for establishing global wireless volp quality of service (qos) communications, unified messaging, and video conferencing via the internet
US7831734B2 (en) * 2002-11-25 2010-11-09 Sap Ag Method and system for remote configuration of network devices
US7121639B2 (en) * 2002-12-02 2006-10-17 Silverbrook Research Pty Ltd Data rate equalisation to account for relatively different printhead widths
US20040174434A1 (en) * 2002-12-18 2004-09-09 Walker Jay S. Systems and methods for suggesting meta-information to a camera user
US7409674B2 (en) * 2002-12-26 2008-08-05 Research In Motion Limited System and method of creating and communicating with component based wireless applications
JP4125172B2 (ja) * 2003-04-23 2008-07-30 キヤノン株式会社 無線通信システム、無線通信装置、及びその制御方法、並びにコンピュータプログラム
US7290258B2 (en) * 2003-06-25 2007-10-30 Microsoft Corporation Managing multiple devices on which operating systems can be automatically deployed
US20050036034A1 (en) * 2003-08-15 2005-02-17 Rea David D. Apparatus for communicating over a network images captured by a digital camera
US7840892B2 (en) * 2003-08-29 2010-11-23 Nokia Corporation Organization and maintenance of images using metadata
US20050134691A1 (en) * 2003-12-23 2005-06-23 Cox Earl C. Method and system for a communication device having a single button photo send
US8036244B2 (en) * 2004-08-06 2011-10-11 Sharp Kabushiki Kaisha Transmitter, receiver, communication system, communication method, non-transitory computer readable medium
JP2006086654A (ja) * 2004-09-14 2006-03-30 Canon Inc 撮像装置
US8200700B2 (en) 2005-02-01 2012-06-12 Newsilike Media Group, Inc Systems and methods for use of structured and unstructured distributed data
KR20080068647A (ko) 2005-09-28 2008-07-23 온텔라, 인크. 이형, 분산 컴퓨팅 시스템에 서비스 애플리케이션 실행환경을 형성하기 위한 방법 및 시스템, 그리고 상기 서비스애플리케이션 실행 환경에서 실행하는 사용자 친화적데이터 전달 서비스 애플리케이션
US20100182193A1 (en) * 2009-01-21 2010-07-22 National Taiwan University Data processing system and method integrated with positioning technology

Also Published As

Publication number Publication date
EP1963986A2 (en) 2008-09-03
WO2007038766A3 (en) 2009-04-23
US7698392B2 (en) 2010-04-13
WO2007038766A2 (en) 2007-04-05
US20100125651A1 (en) 2010-05-20
BRPI0616699A2 (pt) 2011-06-28
US20100125735A1 (en) 2010-05-20
US20070112944A1 (en) 2007-05-17

Similar Documents

Publication Publication Date Title
KR20080068647A (ko) 이형, 분산 컴퓨팅 시스템에 서비스 애플리케이션 실행환경을 형성하기 위한 방법 및 시스템, 그리고 상기 서비스애플리케이션 실행 환경에서 실행하는 사용자 친화적데이터 전달 서비스 애플리케이션
US9817657B2 (en) Integrated software development and deployment architecture and high availability client-server systems generated using the architecture
US8015253B1 (en) System and method for controlling inter-device media exchanges
JP6707153B2 (ja) クラウドコンピューティングノードのセキュアな設定
US8117297B2 (en) System and method of device-to-server registration
US20090037515A1 (en) System and method for automatic transfer of data from one device to another
US20060248181A1 (en) Formatted and/or tunable QOS data publication, subscription, and/or distribution servers and clients
RU2367009C2 (ru) Представление слитного вида ярлыков на удаленные приложения от множества поставщиков
JP2003016036A (ja) ピア・ツー・ピアネットワーク環境中のピアの信頼性ステータスを検証するシステムおよび方法
KR20040086583A (ko) 두 종단점 사이의 구성 가능한 보증 및 특징을 갖는메시징 전달
KR20040071203A (ko) 프록시를 이용하여 데이터를 다운로딩하기 위한 시스템 및방법
WO2007006126A1 (en) Method and system for hosting and executing a component application
JP2017505473A (ja) クライアントサーバリモートアクセスシステムにおけるクライアントの非管理サービスへの接続の提供方法
JP4410608B2 (ja) Webサービス提供方法
JP6349319B2 (ja) 異なるタイプの通信に最適化された複数のサーバを用いるデバイス監視
Porras et al. Dynamic resource management and cyber foraging
CN110568996A (zh) 基于设备驱动程序的本地存储容量扩充***
KR101305397B1 (ko) P2p 시스템에서 피어 랜덤 선택을 위한 피어 관리 서버및 피어 관리 방법
JP5178734B2 (ja) P2pシステムにおけるピア管理サーバー及びピア管理方法
Kalim et al. Mobile-to-grid middleware: An approach for breaching the divide between mobile and grid environments
JP2002261829A (ja) 階層管理システム及び階層管理方法
Huang et al. Design and implementation of an adaptive Web2. 0 QoS‐based home appliance control service platform
CN117155904A (zh) 一种服务注册方法
WO2007124505A2 (en) Electronic file sharing
JP2009075929A (ja) ウェブサービスシステム、ウェブサービス提供装置およびプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application
WITB Written withdrawal of application