KR20140041499A - 격리된 애플리케이션을 위한 중개된 아이템 액세스 기법 - Google Patents

격리된 애플리케이션을 위한 중개된 아이템 액세스 기법 Download PDF

Info

Publication number
KR20140041499A
KR20140041499A KR1020137031315A KR20137031315A KR20140041499A KR 20140041499 A KR20140041499 A KR 20140041499A KR 1020137031315 A KR1020137031315 A KR 1020137031315A KR 20137031315 A KR20137031315 A KR 20137031315A KR 20140041499 A KR20140041499 A KR 20140041499A
Authority
KR
South Korea
Prior art keywords
item
application
items
access
computing device
Prior art date
Application number
KR1020137031315A
Other languages
English (en)
Other versions
KR101828642B1 (ko
Inventor
타일러 케이 빔
카비타 라다크리쉬난
벤자민 제이 카라스
카트리나 엠 블란치
라이언 웡
알렌 티 킴
스티븐 제이 볼
제이 트레이시 로리셀라
스캇 비 그라함
마나브 미쉬라
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20140041499A publication Critical patent/KR20140041499A/ko
Application granted granted Critical
Publication of KR101828642B1 publication Critical patent/KR101828642B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Human Resources & Organizations (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Economics (AREA)
  • General Health & Medical Sciences (AREA)
  • Technology Law (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

컴퓨팅 장치의 브로커 모듈이 격리된 애플리케이션으로부터, 아이템 소스의 하나 이상의 아이템을 액세스하기 위한 요청을 수신한다. 요청에 응답하여, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템 소스의 매 아이템에 대해, 아이템 소스의 아이템을 나타내는 저장 아이템 객체가 생성되고 격리된 애플리케이션으로 반환된다. 상기 격리된 애플리케이션이 특정 아이템을 액세스하도록 인가되었는지 여부는 특정 아이템 소스 및/또는 특정 아이템 위치를 기초로 이뤄질 수 있다.

Description

격리된 애플리케이션을 위한 중개된 아이템 액세스 기법{BROKERED ITEM ACCESS FOR ISOLATED APPLICATIONS}
사용자는 여러 다른 다양한 소스로부터 광범위한 애플리케이션에 대한 액세스를 가진다. 예를 들어, 전통적으로 사용자는 "전통적인(brick and mortar)" 상점으로부터 컴퓨터 판독형 저장 매체(가령, 광학 디스크) 상의 애플리케이션을 획득하고, 그 후 상기 애플리케이션을 사용자의 가정의 컴퓨팅 장치에 설치했다. 이들 애플리케이션은 일반적으로 명망 있는 개발자에 의해 제공되었고 따라서 신뢰할 수 있는 것으로 여겨졌다.
그 후 사용자가 네트워크를 액세스하여 애플리케이션을 찾고 설치하는 후속 기술이 개발되었다. 예를 들어, 애플리케이션을 찾고 구매하기 위해 애플리케이션 마켓플레이스가 인터넷을 통해 액세스 가능해질 수 있다. 일부 경우, 상기 애플리케이션 마켓플레이스는 여러 다른 다양한 개발자로부터의 많은 애플리케이션을 포함할 수 있다. 그러나 이용 가능해질 수 있는 애플리케이션의 수만으로도 그리고 이들을 제공할 수 있는 개발자들의 변동 때문에, 애플리케이션의 기능은 가변 신뢰도를 가질 수 있다. 예를 들어, 애플리케이션은 결함 있는 기능을 가질 수 있고, 악의적인 파티(party)에 의해 작성된 것일 수 있는 등이다.
개요
이 개요는 이하의 구체적인 내용에서 더 기재될 개념들의 집합을 단순화된 형태로 소개하기 위해 제공된다. 이 개요는 청구되는 발명의 핵심 특징 또는 필부 특징을 식별하려는 것이 아니며, 청구되는 발명의 범위를 제한하고자 사용된 것도 아니다.
하나 이상의 양태에 따라, 컴퓨팅 장치의 브로커 모듈에서 요청이 수신된다. 상기 수신된 요청은 컴퓨팅 장치 내 격리된 애플리케이션으로부터의, 아이템 소스의 하나 이상의 아이템을 액세스하기 위한 요청이다. 상기 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템(존재할 경우)이 무엇인지에 대한 체크가 이뤄진다. 상기 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템들을 나타내는 하나 이상의 저장 아이템 객체가 생성되고, 상기 생성된 저장 아이템 객체가 격리된 애플리케이션으로 반환된다. 그러나 격리된 애플리케이션이 상기 하나 이상의 아이템 중 어느 것도 액세스하도록 인가되지 않은 경우, 수신된 요청은 거절된다.
하나 이상의 양태에 따라, 애플리케이션은 아이템 소스의 하나 이상의 아이템으로의 액세스를 요청하기 위해 브로커 모듈의 API(application programming interface)를 호출한다. 상기 애플리케이션은, 상기 브로커 모듈을 통해서가 아니라면 상기 아이템 소스를 액세스하지 못하게 제한된 격리된 애플리케이션이다. 적어도 하나의 저장 아이템 객체가 상기 브로커 모듈로부터 수신되고, 각각의 저장 아이템 객체는 상기 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템들을 포함한다.
이하의 구체적인 내용은 첨부된 도면을 참조하여 설명된다. 도면에서, 도면부호의 가장 왼쪽 숫자는 상기 보면 부호가 가장 처음 나타난 도면을 식별한다. 기재 및 도면 내 서로 다른 경우에서의 동일한 도면 부호의 사용은 유사하거나 동일한 아이템을 가리킬 수 있다.
도 1은 본원에 기재된 격리된 애플리케이션을 위한 중개된 아이템 액세스 기법을 구현하는 예시적 시스템을 도시한다.
도 2는 본원에 기재된 격리된 애플리케이션을 위한 중개된 아이템 액세스 기법을 구현하는 또 다른 예시적 시스템을 도시한다.
도 3은 하나 이상의 실시예에 따라, 격리된 애플리케이션을 위한 중개된 아이템 액세스의 데이터 흐름을 더 상세하게 도시한다.
도 4는 하나 이상의 실시예에 따라, 격리된 애플리케이션을 위한 중개된 아이템 액세스를 구현하기 위한 절차를 도시한다.
도 5는 하나 이상의 실시예에 따라 격리된 애플리케이션을 위한 중개된 아이템 액세스를 구현하기 위한 절차를 도시한다.
개관
격리된 애플리케이션(isolated application)을 위한 중개되는 아이템 액세스(brokered item access)가 본원에서 설명된다. 브로커 모듈(broker module)이 격리된 애플리케이션과 하나 이상의 아이템 소스(가령, 파일 시스템, 장치, 또 다른 애플리케이션) 사이에 위치한다. 아이템 소스로부터 아이템을 액세스하기 위해, 브로커 모듈의 애플리케이션 프로그래밍 인터페이스(API)를 호출(invoke)함으로써, 상기 격리된 애플리케이션은 아이템으로의 액세스를 요청한다. 격리된 애플리케이션이 요청된 아이템을 액세스하도록 허가되는 경우, 브로커 모듈은 요청된 아이템을 액세스하고 상기 격리된 애플리케이션에게 상기 요청된 아이템의 표현(representation)인 객체(object)를 반환(return)한다. 격리된 애플리케이션이 요청된 아이템을 액세스하도록 허가되지 않은 경우, 상기 브로커는 상기 요청된 아이템으로의 액세스를 거절하고 상기 격리된 애플리케이션에게 상기 요청된 아이템의 표현인 객체를 반환하지 않는다. 상기 브로커 모듈 및 API는 이하에서 더 상세히 설명된다.
다음의 기재에서, 본원에 기재된 기법을 수행하기 위해 동작 가능한 예시적 시스템이 먼저 기재된다. 그 후 예시적 시스템뿐 아니라 그 밖의 다른 시스템에서도 동작할 수 있는 예시적 절차가 기재된다. 마찬가지로, 예시적 시스템은 예시적 절차의 수행에 국한되지 않는다.
예시적 시스템
도 1은 본원에 개시되는 격리된 애플리케이션을 위한 중개되는 아이템 액세스(brokered item access) 기법을 구현하기 위한 예시적 시스템(100)을 도시한다. 도시된 시스템(100)은 다양한 방식으로 구성될 수 있는 컴퓨팅 장치(102)를 포함한다. 예를 들어, 컴퓨팅 장치(102)는 네트워크(104)를 통해 통신할 수 있는 컴퓨터, 가령, 데스크톱 컴퓨터, 타블렛 또는 노트패드 컴퓨터, 이동국(mobile station), 엔터테인먼트 가전제품, 디스플레이 장치, 텔레비전 또는 그 밖의 다른 디스플레이 장치로 통신 가능하게 연결되는 셋-톱 박스, 셀룰러 또는 그 밖의 다른 무선 전화기, 게임 콘솔 등으로서 구성될 수 있다.
컴퓨팅 장치(102)는 상당한 메모리 및 프로세서 자원을 갖는 완전 자원 장치(가령, 개인용 컴퓨터, 게임 콘솔)에서부터 제한된 메모리 및/또는 프로세싱 자원을 갖는 저자원 장치(가령, 전통적인 셋-톱 박스, 핸드-헬드 게임 콘솔)까지 다양할 수 있다. 추가로, 단일 컴퓨팅 장치(102)가 도시되지만, 컴퓨팅 장치(102)는 복수의 서로 다른 장치, 가령, 사업체(business)에 의해 동작을 수행하기 위해 이용되는 복수의 서버, 원격 제어 및 셋-톱 박스 조합, 이미지 캡처 장치(가령, 카메라) 및 제스처를 캡처하도록 구성되는 게임 콘솔 등을 대표할 수 있다.
컴퓨팅 장치(102)는 또한, 컴퓨팅 장치(102)의 하드웨어가 동작을 수행하도록 하는, 가령, 프로세서, 기능 블록 등을 설정하는 개체(가령, 소프트웨어)를 더 포함할 수 있다. 예를 들어, 컴퓨팅 장치(102)는 컴퓨팅 장치와 더 구체적으로 컴퓨팅 장치(102)의 하드웨어가 동작을 수행하도록 하는 명령(instruction)을 유지하도록 구성될 수 있는 컴퓨터-판독형 매체를 포함할 수 있다. 따라서 명령은 동작을 수행하도록 하드웨어를 구성하는 기능을 하며, 이러한 방식으로, 동작을 수행하도록 하는 하드웨어의 변환을 도출한다. 여러 다른 다양한 구성을 통해, 컴퓨터 판독형 매체에 의해 명령이 컴퓨팅 장치(102)로 제공될 수 있다.
컴퓨터 판독형 매체의 이러한 한 가지 구성은 신호 전달 매체(signal bearing medium)이며, 따라서 가령, 네트워크(104)를 통해, 명령을 (가령, 반송파로서) 컴퓨팅 장치(102)의 하드웨어로 전송하도록 구성된다. 컴퓨터-판독형 매체는 또한 컴퓨터-판독형 저장 매체로서 구성될 수 있고, 따라서 신호 전달 매체가 아니다. 컴퓨터 판독형 저장 매체의 예로는 랜덤-액세스 메모리(RAM), 리드-온리 메모리(ROM), 광학 디스크(가령, DVD 또는 CD), 플래시 메모리, 하드 디스크 메모리, 및 명령 및 그 밖의 다른 데이터를 저장하기 위한 자기, 광학, 및 그 밖의 다른 기법을 이용할 수 있는 그 밖의 다른 메모리 장치를 포함한다.
네트워크(104)는 서로 다른 다양한 구성을 가정할 수 있다. 예를 들어, 네트워크(104)는 인터넷, 광역 네트워크(WAN: wide area network), 로컬 영역 네트워크(LAN: local area network), 개인 영역 네트워크(PAN: personal area network), 무선 네트워크, 공공 전화망, 인트라넷, 이들의 조합 등을 포함할 수 있다. 덧붙여, 단일 네트워크(104)가 도시되지만, 상기 네트워크(104)는 복수의 네트워크를 포함하도록 구성될 수 있다.
컴퓨팅 장치(102)는 아이템 관리 모듈(item management module)(106)을 포함하는 것으로 도시된다. 아이템 관리 모듈(106)은 하나 이상의 아이템 소스(108 및/또는 110)로의 액세스를 관리하기 위한 기능을 나타낸다. 아이템 관리 모듈(106)은 다양한 방식으로, 예를 들어, 자립형 애플리케이션(stand-alone application)으로서, 컴퓨팅 장치(102)의 운영 체제의 일부분으로서, 및 그 밖의 다른 방식으로 구현될 수 있다.
아이템 소스(108)는 여러 다른 유형의 아이템(112)을 조직(organize)하고 저장하기 위한 기법을 이용한다. 아이템은 애플리케이션에 의해 요청될 수 있는 데이터 또는 콘텐츠를 지칭한다. 예를 들어, 아이템은 파일, 폴더 또는 디렉토리, URI(uniform resource identifier), URL(uniform resource locator), 또는 그 밖의 다른 링크, 압축 파일 또는 파일의 집합(가령, 집 파일(zip file) 또는 캐비넷 파일(cabinet file)), 또 다른 애플리케이션에 의해 유지되는 파일(또는 또 다른 애플리케이션에 의해 서로 다른 방식으로 유지되는 콘텐츠) 등일 수 있다. 아이템 소스(108)는 아이템을 조직 및 저장하기 위한 다양한 기법을 사용해 여러 다른 다양한 방식으로 구현될 수 있다. 예를 들어, 아이템 소스(108)는 컴퓨팅 장치(102) 상의 파일 시스템, 컴퓨팅 장치(102) 상의 저장 시스템, 컴퓨팅 장치(102) 상에서 실행되는 또 다른 애플리케이션(가령, 아이템의 조직 및 저장을 스스로 관리하는 애플리케이션), 데이터베이스 등일 수 있다. 마찬가지로, 아이템 소스(110)는 네트워크(104)를 통해 컴퓨팅 장치(102)에 의해 액세스될 수 있는 아이템(114)을 조직 및 저장하기 위한 다양한 기법을 이용해 여러 다른 다양한 방식으로 구현될 수 있다. 예를 들어, 아이템 소스(110)는 서비스 제공자(가령, 컴퓨팅 장치(102)와 동일한 및/또는 상이한 방식으로 구성되는 하나 이상의 컴퓨팅 장치를 이용해 구현된 것), 서비스 제공자의 파일 시스템, 서비스 제공자의 저장 시스템, 서비스 제공자 상에서 실행되는 또 다른 애플리케이션, 미디어 서버 등일 수 있다.
애플리케이션(116)은 컴퓨팅 장치(102) 상에서 실행되는 하나 이상의 프로그램, 스크립트, 또는 또 다른 명령들의 집합이다. 애플리케이션(116)은 여러 다른 구성, 가령, 엔터테인먼트 애플리케이션(가령, 게임 또는 오디오/비디오 플레이어), 유틸리티 애플리케이션(가령, 워드 프로세서 또는 웹 브라우저) 참조 애플리케이션(가령, 사전(dictionary) 또는 백과사전(encyclopedia)) 등을 가정할 수 있다. 상기 애플리케이션(116)은 컴퓨팅 장치(102)의 자원(가령, 네트워크 연결된 컴퓨터, 인터넷, 모듈, 장치, 메모리, 그 밖의 다른 애플리케이션)을 액세스하는 애플리케이션(116)의 능력이 제한되는 방식으로 실행되기 때문에 애플리케이션(116)은 격리된 애플리케이션이라 지칭된다. 컴퓨팅 장치(102)의 운영 체제(및/또는 그 밖의 다른 소프트웨어, 펌웨어, 및/또는 하드웨어)는, 애플리케이션(116)이 애플리케이션(116)에게 할당된 또는 그 밖의 다른 방식으로 이용 가능해진 컴퓨팅 장치(102)의 메모리 및 그 밖의 다른 자원을 액세스할 수 있게 하지만, 애플리케이션(16)이 컴퓨팅 장치(102) 상에서 실행되는 그 밖의 다른 메모리, 자원, 및/또는 애플리케이션을 액세스하지는 못하게 한다. 이는 컴퓨팅 장치 상에서 실행 중인 그 밖의 다른 애플리케이션이 애플리케이션(116)과 간섭을 일으키지 못하게 보호하고, 애플리케이션(116)이 컴퓨팅 장치(102) 상에서 실행 중인 다른 애플리케이션과 간섭을 일으키지 못하게 보호함으로써, 애플리케이션(116)을 컴퓨팅 장치(102) 상의 다른 애플리케이션으로부터 격리시킨다. 격리의 일부로서, 컴퓨팅 장치(102)의 운영 체제(및/또는 그 밖의 다른 소프트웨어, 펌웨어, 및/또는 하드웨어)가 애플리케이션(116)이 이하에서 상세히 설명될 바와 같이 아이템 관리 모듈(106)을 통하지 않고서는 아이템 소스(108) 및/또는 아이템 소스(110)를 액세스하지 못하게 한다.
하나 이상의 실시예에서, 샌드박스(sandbox)에서 애플리케이션(116)을 실행시킴으로써, 애플리케이션(116)이 제한된 방식으로 실행된다. 컴퓨팅 장치(102)에서 단일 애플리케이션(116)이 나타나지만, 컴퓨팅 장치(102)에서 복수의 애플리케이션이 동시에 실행될 수 있다(각각의 애플리케이션은 자신의 고유의 샌드박스에서 실행됨).
아이템 관리 모듈(106)이 브로커 모듈(120) 및 피커 모듈(picker module)(122)을 포함하는 것으로 추가로 도시된다. 브로커 모듈(120)은 아이템 소스(108 및/또는 110)로의 애플리케이션(116)의 액세스를 관리하기 위한 아이템 관리 모듈(106)의 기능을 나타낸다. 예를 들어, 브로커 모듈(120)은 애플리케이션(116)에 의해 요청된 아이템(112 및/또는 114)을 찾고, 찾은 아이템(112 및/또는 114)을 애플리케이션(116)에게 다시 제공하기 위한 중개인으로서 역할할 수 있다. 애플리케이션(116)은 브로커 모듈(120)을 통해 아이템(112 및/또는 114)을 액세스할 수 있지만, 격리된 애플리케이션이기 때문에, 다른 방식으로는 아이템 소스(108 및/또는 110)(및 이들 아이템 소스 내 아이템(112 및/또는 114))를 액세스하지 못하게 제한된다. 덧붙여, 아이템(112 및/또는 114)이 애플리케이션(116)으로 제공될 수 있고, 애플리케이션(116)은 아이템(112 및/또는 114)이 어디서 획득됐는지에 대해 인지할 필요가 없는데, 가령, 애플리케이션(116)은 아이템 소스(108 및/또는 110)에 의해 사용되는 명칭공간(namespace)을 모를 수 있다. 이는 애플리케이션이 다양한 아이템 소스로부터의 아이템을, 각각의 유형의 아이템 소스에 특정적이지 않은 균일한 방식으로 취급할 수 있게 해준다.
덧붙여, 브로커 모듈(120)은 아이템 소스(108 및/또는 110)로의 액세스를 획득하기 위한 대안적 방식을 제공하기 위해 선택사항으로서 피커 모듈(122)을 채용할 수 있다. 피커 모듈(122)은 (가령, 브로커 모듈(120)을 통해 아이템 소스(108 및/또는 110)을 액세스하도록 프로그램되지 않은) 애플리케이션이 아이템 소스(108 및/또는 110)(및 이들 아이템 소스 내 아이템(112 및/또는 114))를 액세스할 수 있게 하는 신뢰되는 방법을 제공한다.
일반적으로, 본원에 기재된 기능들 중 임의의 기능은 소프트웨어, 펌웨어, 하드웨어(가령, 고정된 로직 회로), 수동 프로세싱, 또는 이들의 구현법의 조합을 이용해 구현될 수 있다. 일반적으로 본원에서 사용될 때 용어 "모듈" 및 "기능"은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 조합을 나타낸다. 소프트웨어 구현의 경우, 모듈, 기능 또는 로직은 하드웨어, 가령, 하나 이상의 프로세서 및/또는 기능 블록(functional block)에 의해 특정되는 동작을 수행하는 명령(instruction) 및 하드웨어를 나타낸다.
도 2는 본원에 기재되는 격리된 애플리케이션을 위한 중개되는 아이템 액세스(brokered item access) 기법을 구현하는 예시적 시스템(200)을 도시한다. 도시된 시스템(200)은 아이템 관리 기법을 수행하기 위해 도 1의 컴퓨팅 장치(102)의 아이템 관리 모듈(106)에 의해 부분적으로 구현될 수 있다. 예를 들어, 아이템 관리 모듈(106)은 운영 체제, 운영 체제와 연계되어 실행되는 애플리케이션, 자립형 애플리케이션 등의 일부로서 포함될 수 있다. 어디에 포함되는지에 무관하게, 아이템 관리 모듈(106)은 컴퓨팅 장치에 의해 로컬하게 및/또는 원격으로(가령, 도 1의 네트워크(104)를 통해) 액세스 가능한 아이템을 관리하기 위한 기법을 채용할 수 있다.
도시된 시스템(200)은 애플리케이션(202)(예를 들어, 도 1의 애플리케이션(116)일 수 있음), 아이템 소스(204)(예를 들어, 도 1의 아이템 소스(108 또는 110)일 수 있음), 및 아이템(206)(예를 들어, 도 1의 아이템(112 또는 114)일 수 있음)을 포함한다. 이 예시에서, 애플리케이션(202)은 브로커 모듈(120)에 의해 애플리케이션(202)에게 노출된 하나 이상의 애플리케이션 프로그래밍 인터페이스(API)(210)를 통해 브로커 모듈(120)과 통신하여, 아이템 소스(204)를 액세스할 수 있다. 단일 애플리케이션(202) 및 단일 아이템 소스(204)가 도 2에 도시되지만, 시스템(200)은 임의의 개수의 아이템 소스(204)를 액세스하는 임의의 개수의 애플리케이션(202)을 포함할 수 있음을 알아야 한다.
애플리케이션(202)은 특정 아이템 소스 및/또는 특정 아이템 위치를 액세스하도록 인가될 수 있다(authorize). 이러한 인가는 여러 다른 때에 여러 다른 방식으로 수행될 수 있지만, 일반적으로 애플리케이션(202)이 아이템(206)으로의 액세스를 요청하기 전에 수행된다. 하나 이상의 실시예에서, 이 인가는 애플리케이션(202)이 시스템(200)을 구현하는 컴퓨팅 장치에 다운로드되거나 컴퓨팅 장치에 설치될 때 수행된다. 예를 들어, 다운로드 또는 설치 프로세스의 일부로서, 사용자에게 애플리케이션(202)이 액세스하기를 원하는 특정 아이템 소스 및/또는 특정 아이템 위치가 통지될 수 있고, 사용자는 애플리케이션(202)이 이들 특정 아이템 소스 및/또는 특정 아이템 위치를 액세스하도록 인가되었는지 여부로서 입력(가령, 특정 버튼의 선택 또는 사용자 인터페이스(UI)의 일부분의 선택)을 제공할 수 있다. 대안적으로, 이 인가는 그 밖의 다른 시점에서, 가령, 시스템(200)의 사용자에 의한 애플리케이션(202)의 차후의 설정 중에 애플리케이션(202)이 수정되거나 업데이트될 때에 수행될 수 있다. 수행되는 방식에 무관하게, 시스템(200)은 애플리케이션(202)이 액세스하도록 인가된 아이템 소스 및/또는 아이템 위치에 대한 레코드(record)를 포함하는 인가 저장소(authorization store)(208)를 유지한다. 인가 저장소(208)는 브로커 모듈(120)에 의해 액세스 가능함으로써, 애플리케이션(202)이 액세스하도록 인가된 아이템 소스 및/또는 아이템 위치에 대한 레코드가 브로커 모듈(120)에 의해 획득되고 사용될 수 있다.
애플리케이션(202)은 브로커 모듈(120)에 의해 지원되는 여러 다른 다양한 아이템 소스(204) 중 임의의 것을 액세스하도록 인가될 수 있다. 예를 들어, 애플리케이션(202)이 액세스하도록 인가될 수 있는 아이템 소스는 파일 시스템, 컴퓨팅 장치 상에서 실행 중인 하나 이상의 특정 애플리케이션, 서비스 제공자에 의해 구현되는 하나 이상의 특정 저장 시스템 등일 수 있다.
또한 애플리케이션(202)은 여러 다른 다양한 아이템 위치 중 임의의 것을 액세스하도록 인가될 수도 있다. 여러 다른 유형의 아이템 위치가 여러 다른 아이템 소스에 대해 정의될 수 있다. 예를 들어, 파일 시스템인 아이템 소스에 대해, 아이템 위치가 폴더 또는 라이브러리(library)(가령, 문서 라이브러리, 음악 라이브러리, 비디오 라이브러리, 사진 라이브러리)로서 정의될 수 있다. 라이브러리는 하나 이상의 위치(location)(가령, 하나 이상의 장치 상의 폴더 또는 디렉토리)의 집합을 일컫고, 선택사항으로서, 라이브러리에 포함된 위치는 시스템(200)의 사용자에 의해 수정될 수 있다. 예를 들어, 애플리케이션인 아이템 소스의 경우, 아이템 위치는 그룹화 또는 애플리케이션에 의해 정의되는 바의 그 밖의 다른 아이템 집합일 수 있다.
브로커 모듈(120)은 아이템 액세스 모듈(212)을 포함하며, 상기 아이템 액세스 모듈은 아이템을 액세스하기 위한 애플리케이션(202)으로부터의 요청에 응답하기 위한 브로커 모듈(120)의 기능을 나타낸다. API(210)는 여러 다른 다양한 유형의 아이템 액세스를 위해 애플리케이션(202)에 의해 호출(invoke)될 수 있는 다양한 인터페이스를 지원한다. 예를 들어, API(210)는 아이템 읽기, 아이템 쓰기, 아이템 생성, 아이템 삭제, 아이템 수정, 아이템 복사, 아이템 이동, 아이템 이름 변경, 아이템의 특성 불러오기(retrieve) 등을 하는 인터페이스를 포함한다. 서로 다른 아이템 소스에 대해 동일한 인터페이스가 사용되어, 애플리케이션(202)으로부터의 아이템 소스를 추상화(abstract)한다. 예를 들어, 아이템을 불러오거나 나열하도록 호출되는 API가 브로커 모듈(120)에 의해 지원되는 복수의 아이템 소스, 애플리케이션(202)이 액세스되도록 인가된, 브로커 모듈(120)에 의해 지원된 아이템 소스 등에 적용될 수 있다. 또 다른 예를 들면, 애플리케이션(202)은 아이템을 쓰거나 아이템의 이름을 변경하기 위해 API를 호출할 때 아이템 소스를 특정할 필요는 없다(가령, 아이템 소스는 이하에서 더 상세히 설명될 바와 같이 저장 아이템 객체 내에서 식별되거나 내재될 수 있다).
대안적으로, 요청에 대해 특정 아이템 소스를 식별하는 인터페이스의 파라미터가 포함될 수 있다. 예를 들어, API(210)가 파일 시스템 소스와 서비스 제공자 저장 시스템 소스 모두에 대해 사용되는 아이템 읽기 인터페이스를 포함할 수 있으며, 아이템 읽기 인터페이스의 파라미터는 2개의 소스 중 어느 것에 대해 애플리케이션(202)이 아이템을 읽도록 요청하는 중인지를 나타낸다. 또 다른 대안예에서, 서로 다른 아이템 소스에 대해 서로 다른 인터페이스가 사용될 수 있다. 예를 들어, API(210)는 파일 시스템 소스로부터 아이템을 읽기 위해 사용되는 파일 시스템 아이템 읽기 인터페이스, 및 서비스 제공자 저장 시스템 소스로부터 아이템을 읽기 위해 사용되는 서비스 제공자 아이템 읽기 인터페이스를 포함할 수 있다.
애플리케이션(202)은 아이템 소스의(가령, 아이템 소스에 의해 저장된) 하나 이상의 아이템을 액세스하도록 요청하는 하나 이상의 API(210)를 호출한다. 요청을 수신한 후, 아이템 액세스 모듈(212)은 애플리케이션(202)이 액세스하도록 인가된 아이템 소스의 레코드 및/또는 아이템 위치를 체크하고, 이러한 레코드를 기초로 하여, 애플리케이션(202)이 요청 받은 아이템 또는 아이템들을 액세스하도록 인가됐는지 여부를 결정한다. 애플리케이션(202)이 요청된 하나 이상의 아이템 중 어느 것도 액세스하도록 인가되지 않은 경우(애플리케이션이 하나 이상의 아이템 모두 액세스하도록 인가되지 않은 경우), 아이템 액세스 모듈(212)은 요청된 액세스를 허가하지 않는다. 예를 들어, 애플리케이션(202)이 사진 라이브러리 내 파일을 액세스할 것을 요청하지만 음악 라이브러리 내 파일만 액세스하도록 인가된 경우, 아이템 액세스 모듈(212)은 요청된 액세스를 허가하지 않는다. 선택사항으로서 아이템 액세스 모듈(212)은 요청된 액세스가 거절됐다는 표시(indication)(가령, 하나 이상의 아이템으로의 액세스를 요청하기 위해 애플리케이션(202)에 의해 호출된 API(210)와 연관된 결과 값)를 반환할 수 있다.
그러나 애플리케이션(202)이 요청된 하나 이상의 아이템 중 일부를 액세스하도록 인가된 경우, 아이템 액세스 모듈(212)은 애플리케이션(202)이 액세스하도록 인가된, 하나 이상의 아이템 중 상기 일부로의 액세스를 획득하고 허용한다. 요청된 하나 이상의 아이템이 브로커 모듈(120)에 의해 획득되는 방식은 특정 아이템 소스(108)에 따라 달라질 수 있고, 브로커 모듈(120)은 아이템 소스(108)를 액세스하는 방식의 표시에 따라 구성된다(또는 상기 표시를 획득할 수 있다). 아이템 액세스 모듈(212)은 애플리케이션(202)이 액세스하도록 인가된 각각의 아이템을 나타내는 저장 아이템 객체(storage item object)를 생성한다. 이 저장 아이템 객체는 아이템과 연관된 다양한 정보를 포함하고, 선택사항으로서 데이터 및/또는 아이템의 콘텐츠를 포함한다. 아이템 액세스 모듈(212)은 이 생성된 저장 아이템 객체를 애플리케이션(202)에게 반환한다.
대안으로서, 이전에 수신된, 아이템 또는 아이템들을 액세스하기 위한 인가를 이용하는 대신, 브로커 모듈(120)은 애플리케이션(202)에 의해 요청된 하나 이상의 아이템의 액세스를 획득하기 위해 피커 모듈(picker module)(122)을 채용할 수 있다. 하나 이상의 아이템을 액세스하기 위한 요청을 수신한 후, 브로커 모듈(120)은 사용자 인터페이스를 생성하기 위해 피커 모듈(122)을 구현할 수 있으며, 이로써 피커 UI 모듈(220)이 런칭된다. 피커 UI 모듈(220)은 사용자가 하나 이상의 아이템을 액세스하도록 인가했는지 여부에 대해 사용자에게 질의하는 UI를 제공함으로써, 사용자가 하나 이상의 아이템으로 내비게이트(navigate) 또는 그 밖의 다른 방식으로 아이템을 찾을 수 있는 등이다. 사용자가 애플리케이션(202)이 하나 이상의 아이템을 액세스하도록 인가했는지 여부에 대한 사용자 입력이 수신될 수 있다. 사용자가 애플리케이션(202)이 하나 이상의 아이템을 액세스하도록 인가한 경우, 피커 모듈(122)은 하나 이상의 아이템을 획득하고 획득된 하나 이상의 아이템을 아이템 액세스 모듈(212)에게 반환하여, (112)를 나타내는 저장 아이템 객체를 생성한다. 대안으로서, 피커 모듈(122)이 하나 이상의 아이템을 획득하는 대신, 피커 모듈(122)은 아이템 액세스 모듈(212)로 상기 모듈(212)이 앞서 언급된 것처럼 하나 이상을 획득하기 위한 표시를 반환할 수 있다.
아이템 액세스 모듈(212)은 애플리케이션(202)으로 저장 아이템 객체를 반환한다. 한 저장 아이템 객체는 한 아이템을 나타낸다. 상기 저장 아이템 객체는 아이템의 추상형(abstraction) 또는 표현(representation)이다. 애플리케이션(202)에 의한, 저장 아이템 객체에 의해 나타내어지는 아이템의 액세스가 브로커 모듈(120) 및/또는 저장 아이템 객체 자체를 통해 수행된다. 저장 아이템 객체는 여러 다른 다양한 형태를 취할 수 있다. 하나 이상의 실시예에서, 저장 아이템 객체는 브로커 모듈(120)에 의해 생성되는 객체이고, 애플리케이션(202)에게 노출된다. 브로커 모듈(120)은 저장 아이템 객체의 식별자 또는 그 밖의 다른 표시를 애플리케이션(202)에게 제공함으로써, 이러한 저장 아이템 객체를 애플리케이션(202)에게 반환한다. 저장 아이템 객체에 의해 나타내어지는 아이템에 대한 정보를 획득하기 위해, 저장 아이템 객체의 다양한 방법 또는 동작이 애플리케이션(202)에 의해 호출되거나, 및/또는 저장 아이템 객체에 의해 나타내어지는 아이템에 대해 다양한 동작이 수행될 수 있다. 대안적으로, 저장 아이템 객체는 저장 아이템 객체에 의해 나타내어지는 아이템 및/또는 저장 아이템 객체에 대해 다양한 동작을 수행하기 위해 애플리케이션(202)에 의해 호출될 수 있는 다양한 방법 또는 동작과 관련된 다양한 정보를 포함할 수 있는 데이터 구조(data structure)일 수 있다. 브로커 모듈(120)은 상기 데이터 구조를 애플리케이션(202)에게 제공함으로써 이러한 저장 아이템 객체를 반환(return)한다.
하나 이상의 실시예에서, 저장 아이템 객체는 특성 부분(properties portion), 썸네일 부분(thumbnail portion), 콘텐츠 부분(content portion), 및 동작 부분(operations portion)을 포함한다. 저장 아이템 객체의 특성 부분은 아이템의 다양한 특성 또는 속성을 포함한다. 서로 다른 다양한 특성 또는 속성 중 아이템 소스(204)에 의해 유지되는 아이템에 대한 임의의 특성 또는 속성이 저장 아이템 객체의 특성 부분에 포함될 수 있다. 예를 들어, 상기 저장 아이템 객체의 상기 특성 부분은 아이템의 명칭, 아이템의 크기(가령, 바이트 단위), 아이템의 유형(가령, 사진 유형, 음악 유형 등) 등을 포함할 수 있다.
상기 저장 아이템 객체의 상기 썸네일 부분은 아이템의 시각적 표현을 포함한다. 이 썸네일은 이미지 또는 이미지들의 시퀀스(가령, 비디오)일 수 있다. 예를 들어, 상기 썸네일은 아이템의 일부분(가령, 문서의 1 페이지 또는 사진의 일부분), 아이템의 축소된 버전(가령, 사진의 더 작은 비율 버전), 아이템의 유형을 나타내는 아이콘 등일 수 있다.
상기 저장 아이템 객체의 상기 콘텐츠 부분은 아이템의 콘텐츠 또는 아이템의 콘텐츠를 획득하기 위한 방식에 대한 표시를 포함한다. 예를 들어, 상기 아이템이 사진인 경우, 상기 콘텐츠 부분은 사진의 데이터 자체, 또는 상기 사진의 데이터가 저장된 곳으로의 링크(가령, URL(Uniform Resource Locator) 또는 경로)를 포함할 수 있다. 상기 아이템은 애플리케이션(202)으로 스트리밍되는 데이터(가령, 음악 파일 또는 비디오 파일)일 수 있고, 아이템의 콘텐츠를 획득하는 방식에 대한 표시는 스트리밍될 데이터의 표시(가령, 상기 데이터로의 링크)를 포함할 수 있다. 또한 상기 콘텐츠 부분은 아이템에 대한 일부 동작, 가령, 아이템을 읽고 쓰기 위한 동작을 포함할 수 있다.
상기 저장 아이템 객체의 상기 동작 부분은 아이템에 대해 수행될 수 있는 하나 이상의 방법 또는 동작을 포함한다. 여러 다른 다양한 액세스를 아이템에 제공하면서, 여러 다른 다양한 동작이 아이템에 대해 수행될 수 있다. 특정 동작은 아이템의 유형을 적어도 부분적으로 기초로 하여 달라질 수 있다. 예를 들어, 동작은 아이템의 명칭을 변경하기 위한 동작, 아이템을 삭제하기 위한 동작 등을 포함할 수 있다. 파일 시스템의 폴더인 아이템에 대해, 또한 동작은 폴더 내 파일들을 나열(enumerate)하는 동작, 폴더 내 파일들을 정렬(sort)하는 동작, 폴더 내 파일을 삭제하는 동작, 폴더에 새 파일을 추가하는 동작, 폴더의 명칭 또는 폴더 내 파일의 명칭을 변경하는 동작 등을 포함할 수 있다.
상기 저장 아이템 객체의 형태에 무관하게, 다양한 동작이 상기 저장 아이템 객체에 대해 수행될 수 있고, 상기 저장 아이템 객체는 아이템의 콘텐츠 또는 상기 아이템의 콘텐츠를 획득하기 위한 방식에 대한 표시를 포함한다. 따라서 상기 저장 아이템 객체는 하나 이상의 아이템을 포함하고 있는 것으로도 보여질 수 있다. 예를 들어, 한 폴더에 대한 한 저장 아이템 객체는 상기 폴더 내 파일들을 나타내는 하나 이상의 아이템들을 포함할 수 있다.
저장 아이템 객체가 본원에서 언급되었지만, 여러 다른 유형의 저장 아이템 객체가 지원될 수 있음을 알아야 한다. 여러 다른 유형의 저장 아이템 객체는 예를 들면, 상기 저장 아이템의 상기 유형과 관련된 여러 다른 특성, 동작 등을 포함할 수 있다. 예를 들어, 저장 파일 객체 및 저장 폴더 객체가 사용될 수 있다. 상기 저장 파일 객체는 파일에 특정적인 특성 및 동작(가령, 파일 명칭 변경 동작)을 포함하고, 저장 폴더 객체는 폴더에 특정적인 특성 및 동작(가령, 폴더 내 파일들을 나열하기 위한 나열 동작)을 포함한다. 또 다른 예를 들면, 장치 객체 및 네트워크 노드 객체가 사용될 수 있으며, 이때 상기 장치 객체는 장치에 특정적인 특성 및 동작을 포함하고, 네트워크 노드 객체는 네트워크 노드에 특정적인 특성 및 동작을 포함한다.
저장 아이템 객체들 중, 애플리케이션(202)으로 반환되는 하나 이상이 애플리케이션(202)에 의해 영속(persist)될 수 있다. 예를 들어, 애플리케이션(202)은 최근 사용(MRU: most recently used) 리스트를 사용하여, 애플리케이션(202)에 의해 최근 사용된 아이템들 중 하나 이상을 쉽게 식별할 수 있다. 하나 이상의 실시예에서, 브로커 모듈(120)은 저장 아이템 객체의 영속된 저장을 관리한다. 일반적으로 브로커 모듈(120)은 각각의 격리된 애플리케이셔에 대해 영속된 액세스 리스트(persisted access list)를 유지하지만, 선택사항으로서 복수의 격리된 애플리케이션이 하나의 영속된 액세스 리스트를 공유할 수 있다. 영속된 액세스 리스트는 영속된 저장 아이템 객체들의 리스트이며, 애플리케이션(202)은 상기 영속된 액세스 리스트 내 영속된 저장 아이템 객체들을 불러오고 사용하기 위해 API(210)를 호출할 수 있다. 한 영속된 저장 아이템에 상기 영속된 액세스 리스트에 추가될 때, 브로커 모듈(120)은 영속된 저장 아이템 객체의 토큰 또는 또 다른 식별자를 애플리케이션(202)에게 제공할 수 있고, 그 후 애플리케이션(202)은 이러한 토큰 또는 그 밖의 다른 식별자를 이용해 상기 영속된 액세스 리스트로부터 영속된 저장 아이템 객체를 불러올 수 있다. 또한 브로커 모듈(120)은 애플리케이션(202)에 대해 영속된 저장 아이템 객체의 복수의 리스트, 가령, MRU 리스트와, 별도의 영속된 액세스 리스트를 유지할 수 있다(가령, 이로써, 애플리케이션(202)은 상기 아이템이 얼마나 최근에 사용됐는지에 무관하게, 필요에 따라 저장 아이템 객체를 영속시킬 수 있다). 선택사항으로서, 브로커 모듈(120)은 서로 다른 리스트에 대해 서로 다른 수명 규칙(lifetime rule)을 이행하여, 저장 아이템 객체를 리스트에서 유지하기 위해 서로 다른 지속시간(및/또는 지속시간이 결정되는 서로 다른 방식)을 반영할 수 있다.
영속된 저장 아이템 객체가 여러 다른 다양한 방식으로, 가령, 장치 식별자, 운영 체제(가령, NTFS), 객체 식별자, 명칭/타임스탬프 매치, 이들의 조합 등에 의해 식별될 수 있다. 따라서 아이템이 명칭 변경되거나 이동됐을 경우라도 영속된 저장 아이템 객체는 식별될 수 있다. 덧붙여, 저장 아이템 객체는 애플리케이션(202)의 복수의 실행에 걸쳐 영속될 수 있어서, 애플리케이션(202)이 종료(가령, 셧 다운(shut down) 또는 비활성화)된 후 다시 실행될 때 상기 영속된 저장 아이템 객체를 불러오고 사용하도록 할 수 있다.
대안적으로, 애플리케이션(202)이 브로커 모듈(120) 대신 저장 아이템 객체의 영속된 저장을 관리할 수 있다. 애플리케이션(202)은 여러 다른 위치에서, 가령, 애플리케이션(202)에게 할당된 또는 그 밖의 다른 방식으로 이용 가능해진 메모리 또는 그 밖의 다른 저장 위치에서 저장 아이템 객체를 영속시킬 수 있다. 따라서 애플리케이션(202)이 추후 다시 아이템을 원하는 경우, 애플리케이션(202)은 브로커 모듈(120)로부터의 아이템을 재-요청하는 대신 아이템을 나타내는 영속된 저장 아이템 객체를 이용할 수 있다.
선택사항으로서 브로커 모듈(120)은 애플리케이션(202)에 의해 액세스될 수 있는 아이템을 필터링하기 위한 브로커 모듈(120)의 기능을 나타내는 필터링 모듈(214)을 포함한다. 애플리케이션(202)은 앞서 기재된 바와 같이 특정 아이템 소스 및/또는 특정 아이템 위치를 액세스하도록 인가된다. 필터링 모듈(214)에 의해, 액세스 요청이 추가로 필터링되어, 다른 방식으로 액세스가 인가되는 경우라도 애플리케이션(202)에 의해 특정 아이템 위치가 액세스되지 못하게 막아진다. 아이템 액세스 모듈(212)이 이들 아이템을 나타내는 생성된 저장 아이템을 반환하기 전에 필터링 모듈(214)이 아이템 소스(204)로부터 아이템을 필터링한다. 따라서 애플리케이션(202)이 액세스하도록 인가된 특정 아이템 소스 및/또는 특정 아이템 위치에 무관하게, 필터링된 아이템을 나타내는 저장 아이템이 애플리케이션(202)으로 반환되지 않는다.
필터링 모듈(214)이 예를 들어, 브로커 모듈(120)의 설계자 및/또는 시스템(200)의 관리자의 희망에 따라, 특정 아이템 위치를 필터링하도록 구성될 수 있다. 예를 들어, 필터링 모듈(214)은 시스템 파일을 저장하는 특정 폴더 또는 디렉토리를 필터링하여, 애플리케이션(202)이 이들 특정 폴더 또는 디렉토리를 액세스하지 못하게 막는다. 또 다른 예를 들면, 필터링 모듈(214)이 특정 파일 유형, 가령, 시스템 파일, 감춰진 파일 등을 필터링할 수 있다.
또한 선택사항으로서 브로커 모듈(120)은 특정 순서 및/또는 특정 그룹으로 아이템들을 배열하기 위한 브로커 모듈(120)의 기능을 나타내는 배열 모듈(arrangement module)(216)을 포함한다. 애플리케이션(202)은 브로커 모듈(120)에 의해 반환될 아이템이 특정 순서 및/또는 그룹으로 배열되도록 요청할 수 있다. 배열 모듈(216)은 여러 다른 시점에서, 아이템을 요청된 순서로 배열하는데, 가령, 아이템 액세스 모듈(212)이 요청된 아이템을 나타내는 저장 아이템 객체를 생성하기 전에, 아이템 액세스 모듈(212)에 의해 생성된 요청된 아이템을 나타내는 저장 아이템 객체를 정렬 및/또는 그룹화하기 전에, 액세스된 아이템을 정렬 및/또는 그룹화한다.
배열 모듈(216)에 의해 여러 다른 다양한 순서화(ordering)가 지원될 수 있고, 여러 다른 정렬 기준을 기초로 하는 여러 다른 순서화가 여러 다른 아이템 유형 또는 아이템 위치에 대해 지원될 수 있다. 예를 들어, 아이템은 연관된 날짜(가령, 사진 아이템의 경우 사진이 찍힌 날짜, 아이템 소스(204) 내에 아이템이 저장된 날짜, 음악 아이템의 경우 노래가 녹음된 날짜)를 기초로 하여 순서화(가령, 시간 순으로 증가 또는 감소(chronologically increasing or decreasing)) 될 수 있다. 또 다른 예를 들면, 아이템은 레코딩 아티스트(가령, 음악 아이템 또는 비디오 아이템의 경우)를 기초로, 앨범 명칭(가령, 음악 아이템 또는 비디오 아이템의 경우)을 기초로, 장르(가령, 음악 아이템 또는 비디오 아이템)를 기초로 순서화(가령, 알파벳 순)될 수 있다. 배열 모듈(216)은 특정 순서화의 세트를 지원할 수 있고, 이 중에서 애플리케이션(202)이 선택할 수 있다. 대안으로서, 배열 모듈(216)은 아이템 소스(204)에 의해 지원되는 아이템에 대한 임의의 메타데이터를 기초로 하여 정렬 기준(sort criteria)을 지원할 수 있다. 따라서 아이템과 연관된 임의의 특성, 속성, 또는 그 밖의 다른 메타데이터가 애플리케이션(202)에 의해 순서화를 위해 사용될 정렬 기준으로서 식별될 수 있다.
마찬가지로, 배열 모듈(216)에 의해 다양한 여러 다른 그룹화가 지원될 수 있고, 여러 다른 그룹화 기준을 기초로 하는 여러 다른 그룹화가 여러 다른 아이템 유형 또는 아이템 위치에 대해 지원될 수 있다. 예를 들어, 아이템은 아이템 유형에 의해 그룹화될 수 있다(가령, 서로 그룹화된 음악 아이템들 및 서로 그룹화된 문서 아이템). 또 다른 예를 들면, 아이템은 레코딩 아티스트(가령, 음악 아이템 또는 비디오 아이템의 경우)를 기초로, 앨범 명칭(가령, 음악 아이템 또는 비디오 아이템의 경우)을 기초로, 장르(가령, 음악 아이템 또는 비디오 아이템의 경우)를 기초로 하여 그룹화될 수 있다. 그룹화는 하나 이상의 저장 아이템 객체를 포함하고, 특정 기준에 부합하는 저장 아이템 객체를 제공하도록 나열될 수 있는 컨테이너 저장 아이템 객체(container storage item object)들의 세트일 수 있다. 배열 모듈(216)은 특정 그룹화의 세트를 지원할 수 있고, 이 중에서 애플리케이션(202)이 선택할 수 있다. 대안으로서, 배열 모듈(216)은 아이템 소스(204)에 의해 지원되는 아이템에 대해 임의의 메타데이터를 기초로 하여 그룹화 기준을 지원할 수 있다. 따라서 아이템과 연관된 임의의 특성, 속성, 또는 그 밖의 다른 메타데이터가 애플리케이션(202)에 의해 그룹화를 위해 사용될 그룹화 기준으로서 식별될 수 있다.
특정 그룹화 내에서, 아이템은 앞서 언급된 바와 같이 다양한 정렬 기준을 이용해 정렬될 수 있거나, 또는 정렬될 필요가 없다. 덧붙여, 애플리케이션(202)은 특정 그룹화의 저장 아이템 객체를 검색(search)하도록 요청하여, 검색 모듈(search module)(218)과 관련하여 이하에서 설명될 바와 유사하게 여러 다른 다양한 검색 기준을 제공할 수 있다.
또한 선택사항으로서 브로커 모듈(120)은 특정 아이템에 대해 검색하기 위한 브로커 모듈(120)의 기능을 나타내는 검색 모듈(218)을 포함한다. 애플리케이션(202)은 특정 검색 기준을 만족시키는 아이템이 브로커 모듈(120)에 의해 반환될 것을 요청할 수 있다. 검색 모듈(218)은 검색 기준을 만족시키는(가령, 검색 기준에 매칭하는) 아이템에 대해 아이템 소스(204)를 검색하고, 검색 기준을 만족시키는 이러한 아이템은 애플리케이션(202)에게 반환된다. 일반적으로 검색 모듈(218)은, 아이템 액세스 모듈(212)이 검색 기준을 만족시키는 요청된 아이템을 나타내는 저장 아이템 객체를 생성하기 전에, 검색 기준을 만족시키는 아이템을 식별하기 위해, 아이템 소스(204)에서 아이템을 검색한다. 대안적으로, 검색 모듈(218)은 검색 기준을 만족시키는 저장 아이템 객체를 식별하기 위해 생성된 저장 아이템 객체를 검색할 수 있으며, 검색 기준을 만족시키는 생성된 저장 아이템 객체만 애플리케이션(202)으로 반환된다.
검색 모듈(218)에 의해 여러 다른 다양한 검색 기준이 지원될 수 있다. 예를 들어, 검색 기준은 특정 아이템 유형(가령, 음악 파일)이며 검색 기준은 상기 특정 아이템 유형의 임의의 아이템에 의해 만족되거나, 상기 검색 기준은 명칭이고 검색 기준은 상기 특정 명칭(가령, 파일 명칭)을 갖는 임의의 아이템에 의해 만족된다. 덧붙여, 검색 모듈(218)에 의해, 가령, 데이터 범위(data range), 와일드 카드 값(가령, 임의의 단일 문자를 가리키기 위한 물음표 또는 임의의 제로(0) 또는 그 이상의 문자를 가리키기 위한 별표), AQS(Advanced Query Syntax)(Advanced Query Syntax에 대한 추가 정보는 워싱턴, 레드몬드에 소재하는 Microsoft® Corporation으로부터 이용 가능하다) 등을 이용함으로써, 더 복합적인 검색 기준이 지원될 수 있다. 또한 애플리케이션(202)이 검색 기준을 제공할 수 있지만, 애플리케이션(202)은 여전히 (가령, 앞서 언급된 바와 같이 인가 저장소(208)에 유지되는 레코드를 기초로 하여) 자신이 액세스하도록 인가된 아이템들만 액세스할 수 있음을 알아야 한다.
덧붙여, 애플리케이션(202)이 아이템 또는 아이템들을 액세스하도록 인가된 경우 브로커 모듈(120)은 애플리케이션(202)이 상기 아이템 또는 아이템들을 액세스하도록 허가한 것으로 기재된다. 선택사항으로서 브로커 모듈(120)은 애플리케이션(202)을 인가를 나타내는 임의의 특정 사용자 입력 없이도 하나 이상의 아이템 위치를 액세스하도록 자동으로 인가된 것으로 취급할 수 있다. 이러한 위치의 예시가 모든 격리된 애플리케이션이 데이터를 쓰도록 허가된 다운로드 폴더이다. 선택사항으로서 애플리케이션(202)이 상기 하나 이상의 아이템 위치를 액세스하도록 (앞서 언급된 바와 같이) 인가되지 않는 한, 브로커 모듈(120)은 애플리케이션(202)을 특정 유형의 액세스로 제한할 수 있다. 예를 들어, 애플리케이션(202)은 다운로드 폴더로 파일을 쓰도록 자동으로 인가될 수 있지만, 컴퓨팅 장치의 사용자가 상기 다운로드 폴더로부터 파일을 읽도록 인가된 애플리케이션(202)을 갖는 경우에만 상기 다운로드 폴더로부터 파일을 읽도록 허가된다.
본원에 기재되는 격리된 애플리케이션을 위한 중개되는 아이템 액세스 기법은 다양한 사용성 시나리오를 지원한다. 예를 들어, 사진 편집 애플리케이션이 실행되어 브로커 모듈을 통해 파일을 액세스할 수 있다. 사진 편집 애플리케이션이 컴퓨팅 장치 상에 설치될 때, 사용자는 사진 편집 애플리케이션에게 사진 라이브러리 내 파일(그러나 그 밖의 다른 위치 내 파일은 제외)을 액세스하기 위한 인가를 제공할 수 있다. 동작 중에, 사진 편집 애플리케이션은 브로커 모듈로부터 다양한 파일에게 요청할 수 있지만, 브로커 모듈은 사진 라이브러리의 파일이 아닌 임의의 파일에 대한 요청을 거절한다. 따라서 사진 편집 애플리케이션은 사진 라이브러리가 아닌 다른 임의의 위치에 저장된 임의의 파일을 액세스하지 못하게 막아진다.
도 3은 격리된 애플리케이션을 위한 중개된 아이템 액세스의 데이터 흐름(300)을 본 발명의 하나 이상의 실시예에 따라 추가로 상세히 도시한다. 데이터 흐름(300)은 도 2의 시스템(200)의 요소를 참조하여 설명된다. 애플리케이션(202)은 브로커 모듈(120)의 하나 이상의 API를 호출함으로써, 브로커 모듈(120)로 액세스 요청(302)을 제출(submit)한다. 액세스 요청(302)은 아이템 소스(204)로의 특정 유형의 액세스에 대한 요청이다.
브로커 모듈(120)은 액세스 요청(302)에 의해 요청된 아이템을 획득하기 위해 하나 이상의 액세스 요청(304)을 아이템 소스(204)로 제출한다. 브로커 모듈(120)은 아이템 소스(204)가 구현되는 방식에 따르는 다양한 방식으로, 가령, 아이템 소스(204)의 API를 호출함으로써, 메시지 또는 그 밖의 다른 데이터 구조를 아이템 소스(204)로 전송함으로써, 및 기타 방식으로, 하나 이상의 액세스 요청(304)을 제출할 수 있다.
하나 이상의 아이템에 대한 아이템 정보(306)가 아이템 소스(204)로부터 브로커 모듈(120)로 반환된다. 아이템 정보(306)는 액세스 요청(302)을 기초로 하여 하나 이상의 아이템을 기술한다. 앞서 기재된 바와 같이, 아이템 정보(306)가 반환된 아이템은 예를 들면, 특정 아이템 소스에서의 아이템에 대한 정보를 포함할 수 있고, 필터링된 아이템일 수 있다. 아이템 정보(306)는 아이템 소스(204)로부터 하나 이상의 아이템을 기술하는 정보를 포함한다. 아이템을 나타내는 저장 아이템 객체에 포함될 수 있는 정보가 아이템 정보(306)에 포함될 수 있다.
브로커 모듈(120)은 아이템 정보(306)를 기초로 하여 하나 이상의 저장 아이템 객체(308)를 생성한다. 브로커 모듈(120)은 아이템 정보(306)에서 식별된 적어도 하나의 아이템에 대한 저장 아이템 객체(308)를 생성한다. 선택사항으로서 브로커 모듈(120)은 아이템 정보(306)로부터 식별된 하나 이상의 아이템을 필터링하고 앞서 언급된 바와 같이 필터링된 하나 이상의 아이템에 대해 저장 아이템 객체(308)를 생성하지 않을 수 있다. 또한 선택사항으로서 브로커 모듈(120)은 저장 아이템 객체(308) 또는 상기 저장 아이템 객체(308) 내 정보를, 앞서 언급된 바와 같이, 특정 순서 또는 특정 그룹화로 배열할 수 있다.
예시적 API
브로커 모듈은 하나 이상의 API를 격리된 애플리케이션으로 노출시키며, 상기 하나 이상의 API는 여러 다른 다양한 유형의 아이템 액세스를 위해 격리된 애플리케이션에 의해 호출될 수 있는 다양한 인터페이스를 지원한다. 예를 들어, 브로커 모듈(120)은 앞서 언급된 바와 같이 API(210)를 노출시킨다. 이하에서 표 1-11은 브로커 모듈에 의해 노출될 수 있는 예시적 API를 나타낸다. 이들 API는 예시이며, 상기 API 중 하나 이상이 브로커 모듈에 의해 노출되지 않을 수 있고, 추가 API가 브로커 모듈에 의해 노출될 수 있으며, 및/또는 브로커 모듈에 의해 노출되는 이들 API에 변경이 있을 수 있음을 알아야 한다.
API는 특정 명칭공간으로 그룹화되거나 수집되고, 표 1-11 각각은 특정 명칭공간에 대한 API를 포함한다. 이러한 그룹화가 수행되는 방식은, 예를 들어, 브로커 모듈의 개발자가 원하는 바에 따라 달라질 수 있다. API의 명칭은 특정 명칭공간을 식별하는 프리앰블(preamble)을 가지며, 표 1-11에서 나열되는 API의 명칭은 (표에 나열되어 있지 않더라도) 이러한 공통의 프리앰블을 포함한다. 예를 들어, 알려진 폴더 명칭공간의 경우, 공통 프리앰블은 "Windows.Storage.KnownFolders"일 수 있다. 따라서 "musicLibrary" API에 대한 명칭은 이러한 공통 프리앰블을 포함하고, 따라서 이하의 표 4에서 "musicLibrary"라고 나열되더라도, "Windows.Storage.KnownFolders.musicLibrary"이다.
표 1은 저장 아이템 명칭공간이라고도 지칭될 수 있는 저장 아이템 객체에 대한 API를 나타낸다. 저장 아이템 명칭공간에 대한 공통 프리앰블은 "Windows. Storage. Storageltem"이다. 저장 아이템 명칭공간에 대한 API는 격리된 애플리케이션이 저장 아이템 객체에 의해 나타내어지는 아이템에 대한 정보를 획득하고, 및/또는 저장 아이템 객체에 의해 나타내어지는 아이템에 대해 다양한 동작을 수행할 수 있게 한다.
Figure pct00001
표 2는 저장 폴더 명칭공간이라고도 지칭될 수 있는 저장 폴더(즉 StorageFolder) 저장 아이템 객체에 대한 API를 도시한다. 저장 폴더 명칭공간에 대한 공통 프리앰블은 "Windows.Storage.StorageFolder"이다. 저장 폴더 명칭공간에 대한 API는 격리된 애플리케이션이 저장 폴더 객체에 의해 나타내어지는 폴더에 대한 정보를 획득, 및/또는 상기 저장 폴더 객체에 의해 나타내어지는 폴더에 대해 다양한 동작을 수행할 수 있게 한다. 저장 폴더 객체는 표 1을 참조하여 앞서 설명된 저장 아이템 객체의 모든 API를 상속하거나 포함한다.
Figure pct00002
표 3은 저장 파일 명칭공간이라고도 지칭될 수 있는 저장 파일(즉, StorageFile) 저장 아이템 객체에 대한 API를 나타낸다. 저장 파일 명칭공간에 대한 공통 프리앰블은 "Windows.Storage.StorageFile"이다. 저장 파일 명칭공간에 대한 API는 격리된 애플리케이션이 저장 파일 객체에 의해 나타내어지는 파일에 대한 정보를 획득, 및/또는 저장 파일 객체에 의해 나타내어지는 파일에 다양한 동작을 수행할 수 있게 한다. 저장 파일 객체는 표 1을 참조하여 앞서 설명된 저장 아이템 객체의 모든 API를 상속 또는 포함한다.
Figure pct00003
표 4는 격리된 애플리케이션에 의해 액세스될 수 있는 파일 시스템 아이템 소스의 폴더 또는 라이브러리의 세트를 참조하는 알려진 폴더 명칭공간에 대한 API를 나타낸다. 알려진 폴더 명칭공간에 대한 공통 프리앰블은 "Windows.Storage.KnownFolders"이다. 알려진 폴더 명칭공간에 대한 API는 지정된 폴더 또는 디렉토리의 특정 세트가 격리된 애플리케이션에 의해 액세스될 수 있게 한다.
Figure pct00004
표 5는 격리된 애플리케이션이 특정 파일 또는 폴더를 저장 또는 불러오도록 하는 인터페이스의 세트인 저장 명칭공간에 대한 API를 나타낸다. 저장 명칭공간에 대한 공통 프리앰블은 "Windows.Storage"이다.
Figure pct00005
표 6은 질의 옵션 명칭공간이라고도 지칭될 수 있는 질의 옵션(query option)에 대한 API를 나타낸다. 질의 옵션 명칭공간에 대한 공통 프리앰블은 "Windows.Storage.QueryOptions"이다. 질의 옵션 명칭공간에 대한 API는 격리된 애플리케이션이 격리된 애플리케이션에 의해 제출되는 검색 요청에 대해 다양한 질의 옵션을 특정할 수 있게 한다.
Figure pct00006
표 7은 격리된 애플리케이션이 아이템에 대한 질의를 제출 또는 아이템을 검색할 수 있게 하는 인터페이스의 집합인 질의 명칭공간에 대한 API를 나타낸다. 질의 명칭공간에 대한 공통 프리앰블은 "Windows.Storage"이다.
Figure pct00007
표 8은 (가령, AQS 질의를 특정하지 않고 빠르게) 아이템이 불러와질 수 있게 하는 인터페이스의 세트인, 퀵 액세서 명칭공간(quick accessors namespace)에 대한 API를 나타낸다. 상기 API는 여러 다른 방식으로, 예를 들면 쉘로우 모드(shallow mode)로(가령, 특정 폴더 또는 디렉토리로부터 결과를 반환함), 딥 모드(deep mode)로(가령, 특정 폴더 또는 디렉토리뿐 아니라 하위-폴더 또는 하위-디렉토리로부터도 결과를 반환함) 등으로, 아이템을 불러오는 것을 지원할 수 있다. 퀵 액세서 명칭공간에 대한 공통 프리앰블은 "Windows.Storage.StorageFolder"이다.
Figure pct00008
표 9는 격리된 애플리케이션에 의해 질의가 생성되게 하는 인터페이스의 세트인 질의 생성 명칭공간에 대한 API를 나타낸다. 생성되면, 이들 질의는 브로커 모듈에 의해 유지되고, 그 후 질의를 생성하는 격리된 애플리케이션에 의해 액세스될 수 있다. 질의 생성 명칭공간에 대한 공통 프리앰블은 "Windows.Storage.StorageFolder"이다.
Figure pct00009
표 10은 격리된 애플리케이션이 저장 아이템 객체를 영속(persist)시킬 수 있게 하는 인터페이스의 세트인 저장 아이템 영속성 명칭공간(storage item persistence namespace)에 대한 API를 나타낸다. 앞서 언급된 바와 같이 저장 아이템 객체는 격리된 애플리케이션의 복수의 실행에 걸쳐 영속될 수 있다. 저장 아이템 영속성 명칭공간에 대한 공통 프리앰블은 "StorageApplicationPermissions.futureAccessList"이다.
Figure pct00010
표 11은 격리된 애플리케이션이 최근 사용 아이템의 리스트를 생성 및 유지하도록 하는 인터페이스의 세트인 최근 사용(MRU: most recently used) 리스트에 대한 API를 나타낸다. 상기 MRU는 영속된 저장 아이템 객체의 하나의 예시이며, 이때 영속된 액세스 리스트는 MRU 리스트이다. MRU 리스트 명칭공간에 대한 공통 프리앰블은 "StorageApplicationPermissions.mostRecentlyUsedList"이다.
Figure pct00011
예시적 절차
다음의 내용은 앞서 기재된 시스템 및 장치를 이용해 구현될 수 있는 격리된 애플리케이션을 위한 개입된 아이템 액세스 기법을 기재한다. 각각의 절차의 양태는 하드웨어, 펌웨어, 소프트웨어, 또는 이들의 조합으로 구현될 수 있다. 상기 절차는 하나 이상의 장치에 의해 수행되는 동작을 특정하는 동작의 세트로서 나타나지만, 각각의 동작에 의한 동작을 수행하기 위해 나타낸 순서로 반드시 제한될 필요는 없다. 다음의 내용 중 일부에서, 도 1, 2, 및 3이 참조될 것이다.
도 4는 하나 이상의 실시예에 따라 격리된 애플리케이션을 위한 개입된 아이템 액세스를 구현하기 위한 절차(400)를 도시한다. 절차(400)는 브로커 모듈, 가령, 브로커 모듈(120)에 의해 구현된다. 절차(400)에서, 아이템 소스의 하나 이상의 아이템을 액세스하기 위한 요청이 수신된다(동작(402)). 상기 요청은 컴퓨팅 장치 내 격리된 애플리케이션으로부터 수신되고, 일반적으로 특정 아이템 소스에 대한 특정 유형의 액세스에 대한 요청이다. 상기 요청은, 앞서 설명된 바와 같이, 격리된 애플리케이션이 브로커 모듈에 의해 노출되는 API를 호출함으로써, 수신될 수 있다. 여러 다른 다양한 유형의 요청이 앞서 언급된 바와 같이 수신될 수 있으며, 가령, 아이템을 읽기(read) 위한 요청, 아이템을 쓰기(write) 위한 요청, 아이템을 수정하기 위한 요청, 아이템을 검색하기 위한 요청 등이 있다.
하나 이상의 아이템 중, 격리된 애플리케이션이 액세스하도록 인가된 아이템이 무엇인지에 대해 체크된다(동작(404)). 앞서 언급된 바와 같이, 하나 이상의 아이템 중 어느 것을 격리된 애플리케이션이 액세스하도록 인가되었는지는 특정 아이템 소스 및/또는 특정 아이템 위치를 기초로 할 수 있다. 상기 체크는 여러 다른 시점에서 이뤄질 수 있는데, 가령, 아이템 소스의 루트 노드(root node)(가령, 폴더, 라이브러리, 저장 구조)가 액세스될 때 이뤄질 수 있다.
절차(400)는 격리 애플리케이션이 하나 이상의 아이템 중 어느 것도 액세스하도록 인가되지 않았는지 여부를 기초로 진행된다(동작(406)). 격리된 애플리케이션이 하나 이상의 아이템 중 어느 것도 액세스하도록 인가되지 않은 경우(상기 애플리케이션은 액세스가 요청된 아이템들 중 어느 것도 액세스하도록 인가되지 않은 경우), 요청이 거절된다(동작(408)). 앞서 언급된 바와 같이, 선택적으로, 요청이 거절됐다는 표시가 상기 격리된 애플리케이션으로 반환될 수 있다.
그러나 격리된 애플리케이션이 하나 이상의 아이템 중 적어도 하나의 아이템을 액세스하도록 인가된 경우, 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템들을 나타내는 하나 이상의 저장 아이템 객체가 생성된다(동작(410)). 앞서 언급된 바와 같이, 각각의 저장 아이템 객체는 하나 이상의 저장 아이템과 연관된 다양한 정보를 포함한다. 앞서 언급된 바와 같이, 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템들은 필터링된 아이템 소스로부터의 특정 아이템을 포함하지 않을 수 있다.
하나 이상의 생성된 저장 아이템 객체는 격리된 애플리케이션으로 반환된다(동작(412)). 저장 아이템 객체는 앞서 언급된 바와 같이 격리된 애플리케이션으로 제공된 데이터 구조이거나, 상기 격리된 애플리케이션에 노출된 객체일 수 있다. 선택사항으로서, 저장 아이템 객체는 앞서 언급된 바와 같이 특정 순서 또는 특정 그룹으로 배열될 수 있다.
도 5는 하나 이상의 실시예에 따라 격리된 애플리케이션을 위한 중개된 아이템 액세스를 구현하기 위한 절차(500)를 도시한다. 절차(500)는 격리된 애플리케이션, 가령, 애플리케이션(116) 또는 애플리케이션(202)에 의해 구현된다. 절차(500)에서, 브로커 모듈의 API가 아이템 소스의 하나 이상의 아이템으로의 액세스를 요청하도록 호출된다(동작(502)). 일반적으로 상기 요청은 특정 아이템 소스에 대한 특정 유형의 액세스에 대한 요청이다. 앞서 언급된 바와 같이, 여러 다른 다양한 유형의 요청이 수신될 수 있는데, 가령, 아이템을 읽기 위한 요청, 아이템을 쓰기 위한 위청, 아이템을 수정하기 위한 요청, 아이템을 검색하기 위한 요청 등이 있다.
하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템들을 포함하는 적어도 하나의 저장 아이템 객체가 브로커 모듈로부터 수신된다(동작(504)). 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템이 무엇인지에 대한 체크가 여러 다른 시점에서 이뤄질 수 있는데, 가령, 아이템 소스의 루트 노드(가령, 폴더, 라이브러리, 저장 구조)가 액세스될 때 이뤄질 수 있다. 앞서 언급된 바와 같이, 각각의 저장 아이템 객체는 아이템과 연관된 다양한 정보를 포함한다. 하나 이상의 아이템 중 저장 아이템 객체가 수신되는 아이템들은, 앞서 언급된 바와 같이, 필터링된 아이템 소스로부터의 특정 아이템을 포함하지 않을 수 있다. 앞서 언급된 바와 같이, 상기 저장 아이템 객체는 격리된 애플리케이션으로 반환되는 데이터 구조 또는 격리된 애플리케이션으로 노출되는 객체일 수 있다. 덧붙여, 앞서 언급된 바와 같이, 저장 아이템 객체는 특정 순서로 배열될 수 있다.
결론
다양한 동작, 가령, 다양한 모듈에 의해 수행되는 통신, 수신, 전송, 저장, 생성, 획득 동작이 본원에서 논의된다. 다양한 모듈에 의해 이러한 동작이 수행될 수 있음을 알아야 한다. 동작이 수행되게 하는 특정 모듈은 동작을 수행하는 상기 특정 모듈 자체, 또는 동작을 수행하는(또는 특정 모듈과 결합된 동작을 수행하는) 또 다른 구성요소나 모듈을 호출하거나 그 밖의 다른 방식으로 액세스하는 특정 모듈을 포함한다.
본원 발명이 구조적 특징 및/또는 방법적 동작에 특정적 언어로 기재되었지만, 이하의 특허청구범위에 저장된 발명은 상기에서 기재된 특정 특징 또는 동작에 반드시 국한되는 것은 아님을 이해해야 한다. 오히려, 앞서 기재된 특정 특징 및 동작은 청구항을 구현하는 예시적 형태로서 개시된 것이다.

Claims (10)

  1. 컴퓨팅 장치에서의 방법으로서,
    상기 방법은
    상기 컴퓨팅 장치의 브로커 모듈(broker module)에서, 상기 컴퓨팅 장치 내 격리된 애플리케이션(isolated application)으로부터의, 아이템 소스의 하나 이상의 아이템을 액세스하기 위한 요청을 수신하는 단계와,
    상기 컴퓨팅 장치에서, 상기 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템이 어느 것인지를 체크하는 단계와,
    상기 격리된 애플리케이션이 상기 하나 이상의 아이템 중 어느 아이템도 액세스하도록 인가되지 않은 경우, 상기 요청을 거절하고,
    그 외 경우,
    상기 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템들을 나타내는 하나 이상의 저장 아이템 객체(storage item object)를 생성하는 단계, 및
    상기 하나 이상의 저장 아이템 객체를 상기 격리된 애플리케이션으로 반환(return)하는 단계를 포함하는
    컴퓨팅 장치에서의 방법.
  2. 제1항에 있어서,
    상기 격리된 애플리케이션은 상기 브로커 모듈을 통해서가 아니라면 상기 아이템 소스를 액세스하지 못하게 제한되는
    컴퓨팅 장치에서의 방법.
  3. 제1항에 있어서,
    상기 하나 이상의 저장 아이템 객체를 상기 격리된 애플리케이션으로 반환하는 단계는, 상기 격리된 애플리케이션에게 인터페이스를 노출시키는 단계를 포함하고, 상기 인터페이스는 저장 아이템 객체에 의해 나타내어지는 아이템의 하나 이상의 특성(property)이 불러와질 수 있게 하고, 상기 저장 아이템 객체에 의해 나타내어지는 아이템에 대해 하나 이상의 동작을 지원하는
    컴퓨팅 장치에서의 방법.
  4. 제1항에 있어서,
    상기 격리된 애플리케이션으로부터의 요청에 응답하여, 하나 이상의 저장 아이템 객체 중 특정한 저장 아이템 객체를 영속(persist)시키는 단계를 더 포함하는
    컴퓨팅 장치에서의 방법.
  5. 제1항에 있어서,
    상기 체크하는 단계는 상기 격리된 애플리케이션이 상기 아이템 소스의 특정 위치(location)으로부터 아이템을 액세스하도록 인가되었는지 여부를 체크하는 단계를 포함하는
    컴퓨팅 장치에서의 방법.
  6. 제1항에 있어서,
    상기 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템들을 필터링하여 특정 유형의 아이템을 배제시키는 단계를 더 포함하는
    컴퓨팅 장치에서의 방법.
  7. 제1항에 있어서,
    상기 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템들을 특정 순서로 배열하는 단계 - 상기 특정 순서는 상기 요청에 의해 식별됨 - 를 더 포함하는
    컴퓨팅 장치에서의 방법.
  8. 제1항에 있어서,
    상기 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템들을 특정 그룹화(grouping)로 배열하는 단계 - 상기 특정 그룹화는 상기 요청에 의해 식별됨 - 를 더 포함하는
    컴퓨팅 장치에서의 방법.
  9. 제1항에 있어서,
    상기 요청은 검색 기준(search criteria)을 포함하고, 상기 하나 이상의 아이템은 상기 검색 기준을 만족시키는 하나 이상의 아이템을 포함하는
    컴퓨팅 장치에서의 방법.
  10. 복수의 명령을 포함하는 애플리케이션을 포함하는 컴퓨팅 장치로서,
    상기 명령은 컴퓨팅 장치의 하나 이상의 프로세서에 의해 실행될 때 상기 하나 이상의 프로세서로 하여금,
    아이템 소스의 하나 이상의 아이템으로의 액세스를 요청하기 위해 브로커 모듈의 API(application programming interface)를 호출(invoke)하게 하고 - 상기 애플리케이션은 상기 하나 이상의 프로세서에 의해 실행 중이며, 상기 브로커 모듈을 통해서가 아니라면 상기 아이템 소스를 액세스하지 못하게 제한되는 격리된 애플리케이션을 포함함 - ,
    상기 브로커 모듈로부터, 상기 하나 이상의 아이템 중, 상기 격리된 애플리케이션이 액세스하도록 인가된 아이템들을 포함하는 적어도 하나의 저장 아이템 객체를 수신하게 하는
    컴퓨팅 장치.
KR1020137031315A 2011-05-27 2011-10-09 격리된 애플리케이션을 위한 중개된 아이템 액세스 기법 KR101828642B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/118,158 US20120304283A1 (en) 2011-05-27 2011-05-27 Brokered item access for isolated applications
US13/118,158 2011-05-27
PCT/US2011/055529 WO2012166187A1 (en) 2011-05-27 2011-10-09 Brokered item access for isolated applications

Publications (2)

Publication Number Publication Date
KR20140041499A true KR20140041499A (ko) 2014-04-04
KR101828642B1 KR101828642B1 (ko) 2018-02-12

Family

ID=47220209

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020137031315A KR101828642B1 (ko) 2011-05-27 2011-10-09 격리된 애플리케이션을 위한 중개된 아이템 액세스 기법

Country Status (12)

Country Link
US (1) US20120304283A1 (ko)
EP (1) EP2715649A4 (ko)
JP (1) JP6147733B2 (ko)
KR (1) KR101828642B1 (ko)
CN (1) CN103562926B (ko)
AU (1) AU2011369370B2 (ko)
BR (1) BR112013030312A2 (ko)
CA (1) CA2836881A1 (ko)
MX (1) MX339055B (ko)
RU (1) RU2602987C2 (ko)
TW (1) TWI550513B (ko)
WO (1) WO2012166187A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120331521A1 (en) * 2011-06-27 2012-12-27 Samsung Electronics Co., Ltd. System and method for application centric cloud management
US9186299B1 (en) * 2012-03-23 2015-11-17 Clark Levi Topical pharmaceutical compounds and methods
US9547607B2 (en) 2013-06-27 2017-01-17 Microsoft Technology Licensing, Llc Brokering application access for peripheral devices
US9514477B2 (en) * 2013-07-10 2016-12-06 AVG Netherlands B.V. Systems and methods for providing user-specific content on an electronic device
US9473562B2 (en) * 2013-09-12 2016-10-18 Apple Inc. Mediated data exchange for sandboxed applications
US10243963B1 (en) * 2015-12-18 2019-03-26 Symantec Corporation Systems and methods for generating device-specific security policies for applications
KR102000266B1 (ko) * 2016-01-15 2019-07-15 구글 엘엘씨 애플리케이션 인스턴스들에 걸친 식별자들
GB2555569B (en) * 2016-10-03 2019-06-12 Haddad Elias Enhanced computer objects security
US10509774B2 (en) * 2017-06-09 2019-12-17 Red Hat, Inc. Secure containerized user specific isolated data storage
US11366789B2 (en) 2017-06-29 2022-06-21 Microsoft Technology Licensing, Llc Content access
CN110083465B (zh) * 2019-04-26 2021-08-17 上海连尚网络科技有限公司 一种寄宿应用间的数据传递方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2341057A (en) * 1998-08-28 2000-03-01 Ibm Allocating names to network resources for shared access
TW565768B (en) * 2002-04-12 2003-12-11 Digirose Technology Co Ltd Network peripheral requiring no advance driver installation
US7548930B2 (en) * 2002-10-18 2009-06-16 Neighborhood America Platform for management of internet based public communications and public comment
TW200418285A (en) * 2003-03-06 2004-09-16 Xnet Technology Corp Computer network management software system installing network management software in network interface card
US7694328B2 (en) * 2003-10-21 2010-04-06 Google Inc. Systems and methods for secure client applications
US7493592B2 (en) * 2003-10-24 2009-02-17 Microsoft Corporation Programming interface for a computer platform
US20050216598A1 (en) * 2004-03-23 2005-09-29 Taiwan Semiconductor Manufacturing Co., Ltd. Network access system and associated methods
US7962918B2 (en) * 2004-08-03 2011-06-14 Microsoft Corporation System and method for controlling inter-application association through contextual policy control
US7680758B2 (en) * 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8095940B2 (en) * 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
KR20080005493A (ko) * 2005-04-07 2008-01-14 코닌클리케 필립스 일렉트로닉스 엔.브이. 소프트웨어 보호
US8010671B2 (en) * 2005-04-29 2011-08-30 Microsoft Corporation Method and system for shared resource providers
US8078740B2 (en) * 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
CN1892664A (zh) * 2005-06-30 2007-01-10 国际商业机器公司 控制对资源的访问的方法和系统
US7779034B2 (en) * 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US7840967B1 (en) * 2006-07-06 2010-11-23 Oracle America, Inc. Sharing data among isolated applications
WO2008128079A1 (en) * 2007-04-13 2008-10-23 Captaris, Inc. Application isolation system
US8171483B2 (en) * 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
US20110035601A1 (en) * 2007-12-21 2011-02-10 University Of Virginia Patent Foundation System, method and computer program product for protecting software via continuous anti-tampering and obfuscation transforms
US8060940B2 (en) * 2008-06-27 2011-11-15 Symantec Corporation Systems and methods for controlling access to data through application virtualization layers
KR20100003092A (ko) * 2008-06-30 2010-01-07 주식회사 케이티 중개 서비스를 제공하는 방법 및 장치
EP2194456A1 (en) * 2008-12-05 2010-06-09 NTT DoCoMo, Inc. Method and apparatus for performing a file operation
US9594900B2 (en) * 2008-12-09 2017-03-14 Microsoft Technology Licensing, Llc Isolating applications hosted by plug-in code
US8051152B2 (en) * 2008-12-12 2011-11-01 Sap Ag Isolated application server
US8782670B2 (en) * 2009-04-10 2014-07-15 Open Invention Network, Llc System and method for application isolation
CN101556563B (zh) * 2009-05-25 2010-10-27 成都市华为赛门铁克科技有限公司 多数据源的访问控制方法、装置和存储系统
EP2449466A1 (en) * 2009-06-30 2012-05-09 Citrix Systems, Inc. Methods and systems for selecting a desktop execution location
US20110055352A1 (en) * 2009-09-02 2011-03-03 Korea Advanced Institute Of Science And Technology System and method for brokering content and metadata of content on network
US20110085667A1 (en) * 2009-10-09 2011-04-14 Adgregate Markets, Inc. Various methods and apparatuses for securing an application container
US9055080B2 (en) * 2009-12-14 2015-06-09 Citrix Systems, Inc. Systems and methods for service isolation

Also Published As

Publication number Publication date
CA2836881A1 (en) 2012-12-06
EP2715649A4 (en) 2016-07-27
AU2011369370A1 (en) 2013-12-19
EP2715649A1 (en) 2014-04-09
MX2013013922A (es) 2013-12-16
TW201248497A (en) 2012-12-01
MX339055B (es) 2016-05-06
BR112013030312A2 (pt) 2016-11-29
CN103562926A (zh) 2014-02-05
KR101828642B1 (ko) 2018-02-12
TWI550513B (zh) 2016-09-21
US20120304283A1 (en) 2012-11-29
RU2602987C2 (ru) 2016-11-20
CN103562926B (zh) 2016-11-09
JP2014515528A (ja) 2014-06-30
JP6147733B2 (ja) 2017-06-14
AU2011369370B2 (en) 2017-03-30
WO2012166187A1 (en) 2012-12-06
RU2013152629A (ru) 2015-06-10

Similar Documents

Publication Publication Date Title
KR101828642B1 (ko) 격리된 애플리케이션을 위한 중개된 아이템 액세스 기법
KR101120755B1 (ko) 정적 및 동적 리스트의 사용을 포함하는 가상 폴더 및 항목 공유 시스템 및 방법
JP5005726B2 (ja) 複数の供給源からのメディアファイルの管理
US11132333B2 (en) File access with different file hosts
US9996549B2 (en) Method to construct a file system based on aggregated metadata from disparate sources
US20070233647A1 (en) Sharing Items In An Operating System
US7966603B2 (en) Systems and methods for context-based content management
US10338852B2 (en) Systems and methods for list retrieval in a storage device
EP3005099A1 (en) Context-based actions from a source application
WO2014193442A1 (en) Application content search management
US20130007667A1 (en) People centric, cross service, content discovery system
JP2020537212A (ja) クライアントデバイスによって実施されるコンテンツ管理システムのワークフロー機能
US20090254585A1 (en) Method for Associating Administrative Policies with User-Definable Groups of Files
JP2022549983A (ja) コンテキスト付きのコンテンツ・アイテム共有
US20170060892A1 (en) Search-based shareable collections
JP2021521502A (ja) コンテンツアイテム内のコンテキストで表示されるコメントプレビュー
US8635120B1 (en) File system merchandising
Gunasekera Android Security Architecture
RADOVICI et al. DISTRIBUTED MULTIMEDIA FILE SYSTEM.
CN109952570A (zh) 媒体资产访问控制系统

Legal Events

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