KR102296097B1 - 서비스의 클라이언트-측 통합 프레임워크 - Google Patents

서비스의 클라이언트-측 통합 프레임워크 Download PDF

Info

Publication number
KR102296097B1
KR102296097B1 KR1020167030179A KR20167030179A KR102296097B1 KR 102296097 B1 KR102296097 B1 KR 102296097B1 KR 1020167030179 A KR1020167030179 A KR 1020167030179A KR 20167030179 A KR20167030179 A KR 20167030179A KR 102296097 B1 KR102296097 B1 KR 102296097B1
Authority
KR
South Korea
Prior art keywords
provider
service
user
computing device
services
Prior art date
Application number
KR1020167030179A
Other languages
English (en)
Other versions
KR20160145633A (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 KR20160145633A publication Critical patent/KR20160145633A/ko
Application granted granted Critical
Publication of KR102296097B1 publication Critical patent/KR102296097B1/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/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/31User authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/105Multiple levels of security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/306User profiles
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Medical Informatics (AREA)
  • Data Mining & Analysis (AREA)
  • Information Transfer Between Computers (AREA)
  • Stored Programmes (AREA)
  • Computer And Data Communications (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • User Interface Of Digital Computer (AREA)
  • Telephonic Communication Services (AREA)

Abstract

앱 및 서비스의 클라이언트-측 통합을 제공하는 시스템 및 방법이 제공된다. 컴퓨팅 장치에서의 통합 프레임워크 실행은 다양한 앱, 애플리케이션, 서비스, 센서 등의 통합을 제공한다. 서비스 요청을 수신하면, 통합 프레임워크가 통합 프레임워크에 등록된 복수의 제공자 각각의 복수의 서비스의 레지스트리에 액세스한다. 통합 프레임워크에 등록된 서비스 각각은 신뢰 레벨 계층 구조의 신뢰 레벨에 연관되어 있다. 통합 프레임워크는, 요청된 서비스의 제공자가 발견될 때까지 또는 요청된 서비스의 제공자를 찾지 못하고 계층 구조의 모든 레벨을 검색할 때까지, 신뢰 레벨의 가장 신뢰도가 높은 레벨에서 신뢰도가 낮은 신뢰 레벨로 시작하여, 신뢰 레벨 계층 구조에 따라 요청된 서비스의 제공자를 레지스트리에서 반복적으로 검색한다.

Description

서비스의 클라이언트-측 통합 프레임워크{CLIENT-SIDE INTEGRATION FRAMEWORK OF SERVICES}
모바일 컴퓨팅 장치의 이용의 한 양태로 장치가 하나 이상의 서비스를 실행하는 다양한 앱(app)들을 포함하고 있고 또한 사용자가 이 앱들을 설치할 것이라는 점이 있다. 일반적으로 말해서, "앱"은 작업 또는 관련 작업들의 소집합을 실행하게 하는 작은, 특화된 소프트웨어 프로그램이다. 꽤 자주, 모바일 장치의 앱 컬랙션은 다수의 판매자로부터의 프로그램들을 나타낸다. 나아가, 각각의 앱은 일반적으로 다른 앱 또는 애플리케이션과 독립적으로 동작하도록 설계되어 있어, 그 자신의 사용자 데이터 세트(장치 사용자와 관련된 데이터, 개인 정보를 포함함)를 유지할 것이다.
개인/사용자가 모바일 컴퓨팅 장치에 더해서 다른 컴퓨팅 장치들을 소유 및/또는 사용하는 것이 아주 흔하다. 예를 들어, 사용자는 하루 중에 자신의 스마트폰은 물론, 태블릿 컴퓨터, 랩탑 컴퓨터, 게임 콘솔, 및 데스크탑 컴퓨터와 같은 하나 이상의 다른 컴퓨터 장치를 사용할 수 있다. 이들 장치들(그 각각이 컴퓨팅 장치임) 각각은 다른 장치들과 다른 성능을 갖고 있고, 다른 모든 장치에서 설치되지 않는 적어도 몇몇 앱 및/또는 애플리케이션을 가질 것이며, 다만 장치들 일부 또는 전부 간에 앱의 중복이 있을 수 있다. 또한, 이들 컴퓨팅 장치 각각은 사용자에 관한 개인 정보(비밀 번호, 선호도, 인구 통계 정보, 계정 정보, 위치 등)를 저장 및/또는 유지하고 있다.
앱 컬렉션이 사용자를 위해서 일련의 흠결이 없는 피쳐/서비스의 세트를 제공할 수 있지만, 각각의 앱이 제공하는 서비스 및 콘텐츠의 통합 지점이 사용자가 되는 경우가 종종 있다. 그러나, 사용자는 자신의 컴퓨팅 장치(또는 컴퓨팅 장치들)가 자신들을 이해하고, 이 이해에 기반하여 자신의 특정한 요구 사항 및 정황에 부합하는 개인화된 어시스턴스(personalized assistance)를 제공하게 되는 것에 점점 더 많은 관심을 갖게 되었다.
다음의 요약은 이하에서 상세한 설명에 추가로 기술되는 일련의 개념들을 간략화된 형태로 소개하기 위해 제공된다. 본 요약은 특허 청구된 대상의 주요 특징들 또는 필수적인 특징들을 확인하기 위한 것이 아니며, 특허 청구된 대상의 범위를 제한하는 데 사용되기 위한 것도 아니다.
개시된 대상의 양태들에 따르면, 앱 및 서비스의 클라이언트-측 통합을 제공하는 시스템 및 방법이 제공된다. 컴퓨팅 장치에서의 통합 프레임워크 실행은 다양한 앱, 애플리케이션, 서비스, 센서 등의 통합을 제공한다. 서비스 요청을 수신하면, 통합 프레임워크가 통합 프레임워크에 등록된 복수의 제공자들 각각의 복수의 서비스의 레지스트리(registry)에 액세스한다. 통합 프레임워크에 등록된 서비스 각각은 신뢰 레벨 계층 구조의 신뢰 레벨에 연관되어 있다. 통합 프레임워크는, 요청된 서비스의 제공자가 발견될 때까지 또는 요청된 서비스의 제공자를 찾지 못하고 계층 구조의 모든 레벨을 검색할 때까지, 신뢰 레벨의 가장 신뢰도가 높은 레벨에서 시작하여 신뢰도가 낮은 신뢰 레벨로, 신뢰 레벨 계층 구조에 따라 요청된 서비스의 제공자를 레지스트리에서 반복적으로 검색한다.
개시된 대상의 전술한 양태들과 수반되는 다수의 이점들은, 이하의 도면들과 함께 고려될 때에 이하의 설명을 참조해서 보다 잘 이해되는 바와 같이 더욱 쉽게 이해될 것이다.
도 1은 개시된 대상의 양태들을 구현하기에 적합한 예시적인 네트워크 환경을 도시한다.
도 2는 앱 및 서비스의 클라이언트-측 통합의 제공 시에 컴퓨팅 장치에서 실행되는 다양한 컴포넌트 및 프로세스를 도시한다.
도 3은 모바일 컴퓨팅 장치에서의 앱 및 서비스의 신뢰 레벨 및 실행 순서를 도시한다.
도 4는 개인화의 증가(상응하여 증가하는 개인 정보에 대한 액세스량)의 함수로서 개인 정보 보안의 관계를 나타내는 그래프를 도시한다.
도 5는 개시된 대상의 양태들에 따른 앱 및 서비스의 실행의 예시적인 루틴(routine)의 순서도를 도시한다.
도 6은 개시된 대상의 양태들에 따른 클라이언트-측 통합 프레임워크와의 상호 작용의 예시적인 루틴의 순서도를 도시한다.
도 7은 앱 및 서비스를 클라이언트-측 통합 프레임워크의 계층 구조와 통합하는 예시적인 루틴의 순서도를 도시한다.
도 8은 서비스가 더 많이 신뢰되는 레벨에서 이용 가능하더라도 바깥쪽 레벨(outer level)의 서비스를 사용할지 여부를 평가하는 예시적인 루틴의 순서도이다.
도 9는 개시된 대상의 양태들을 구현하기에 적합한 예시적인 모바일 컴퓨팅 장치의 블록도를 도시한다.
분명히, 본 명세서에서의 "예시적인"이란 용어는 실례 또는 무언가의 예로서 기능하는 것으로 해석되어야 하고, 그것의 이상적인 및/또는 주요한 실례로서 해석되어서는 안 된다. "개인 정보"라는 용어는 관련 사용자의 정보, 데이터, 메타데이터, 선호도, 행동은 물론, 사용자와 상호 작용하는 규칙에도 해당된다. 일반적으로 말해서, 개인 정보는 사용자의 몇몇 양태를 표현하는, 관련 사용자에 관한 정보이다. 개인 정보는 (예를 들어 그러나 비제한적으로) 성별, 나이, 교육, 인구 통계 데이터, 거주, 시민권 등과 같은 데이터를 포함할 수 있다. 개인 정보는 또한 선호도 및 관심사, 전문 지식, 능력 등을 포함할 수도 있다. 나아가, 개인 정보는 개인 어시스턴스(personal assistance) 제공 시에 관련 사용자와 상호 작용하기 위한 규칙(이하에서 설명되는 바와 같이 관련 사용자가 설정한 규칙은 물론이고 분석을 통해 습득 및/또는 추론된 규칙도 포함함)을 포함할 수 있다.
앞서 언급한 바와 같이, "앱"이라는 용어는 컴퓨팅 장치에서 작업 또는 작은 규모의 관련 작업들을 실행하게 하는 일반적으로 작고, 특화된 소프트웨어 프로그램을 말한다. 앱들은 컴퓨팅 장치에 사전-설치되어 있거나 또는 컴퓨팅 장치의 사용자의 지시에 따라 설치될 수 있다. "애플리케이션"이라는 용어는 컴퓨팅 장치에서 하나 이상의 작업을 실행하는 소프트웨어 프로그램을 말한다. 일반적으로, 애플리케이션은 앱보다 더 광범위하고 강건하며, 앱과 애플리케이션 모두는 소프트웨어 프로그램이다. 앱과 애플리케이션이 모두 소프트웨어 프로그램이고 이 둘은 개시된 대상의 양태들을 구현하기에 적합한 컴퓨팅 장치에 설치되므로, 용어를 간결하게 하기 위해(또한 반대라고 명시적으로 밝히지 않는 한), "앱"이라는 용어에 관한 이후의 참조는 앱 및 애플리케이션 모두를 포함하는 것으로 해석되어야 한다.
이하에서 논의되는 바와 같이, 통합 프레임워크는 앱과 센서들을 통합하고, 이 앱과 센서들 모두는 컴퓨팅 장치에 국부적으로 배치되는 것은 물론 (자매(sibling) 장치들과 같은) 다른 장치에서도 이용 가능하다. 물론, 앱과 센서, 장치 등은 데이터, 데이터 스트림, 기능, 액티비티 등을 개별적으로 제공할 수 있다. 본 개시를 위해, 통합 프레임워크에 등록된 다양한 앱, 센서, 장치 등의 데이터, 데이터 스트림, 기능, 피쳐, 액티비티 등은 제공자들(앱, 센서, 장치 등)에 의해 제공되는 서비스들(데이터, 스트림, 기능 등)이라고 할 것이다.
개인화된 어시스턴스의 제공 시에 하나의 해결책은 전세계에서 모은 많은 양의 데이터를 수집, 저장, 대조(collate), 분석 및 조작하는 다수의 컴퓨터 및/또는 프로세서들을 이용함으로써 다수의 구독자에게 개인화된 어시스턴스를 제공할 수 있는 온라인 서비스를 배포하는 것이다. 이런 모놀리식(monolithic) 모델에서, 사용자의 다양한 컴퓨터 상의 모든 앱이 사용자가 원하는 서비스를 제공하기 위해 이런 모놀리식 온라인 서비스에 의존한다. 일반적으로, 구독자들(개인화된 어시스턴스를 수신하기 원하는 사람들)은 앱을 통해 개인 정보의 다양한 항목들을 온라인 서비스로 전송하고, 그들에 대한 가능한 한 많은 개인 정보를 배우도록 온라인 서비스가 구독자의 생활의 많은 측면들을 모니터링하도록 허용할 수 있다. (특히 구독자들의 컴퓨터와 관련해서) 구독자가 취할 수 있는 거의 모든 액티비티가 캡쳐되고 분석되어 추가 개인 정보를 식별할 수 있고, 이런 액티비티는 온라인 행동, 구매, 선호도, 가입(affiliation), 은행 정보 등을 포함하며, 다만 이에 한정되지는 않는다. 다음으로 온라인 서비스는, 모아서 유지한 그 구독자들의 축적된 개인 정보에 기초하여, 그 연산 능력을 이용하여 개인화된 어시스턴스를 제공하게 된다.
거대한 모놀리식 온라인 서비스를 실행하는 것은, 전술한 바와 같이, 비싸다. 이렇게 큰 온라인 서비스를 계속 운영하기 위해서는, 온라인 서비스는 수익 흐름을 가져야만 한다. 반면, 구독자들/개별 사용자들은 자신의 개인화된 어시스턴스를 공짜로 원한다. 개인화 서비스(personalization service)에 대해 구독자들에게 직접 요금을 부과하기보다는, 모놀리식 온라인 서비스는 그 구독자들의 개인 정보를 수익화하여(monetizing) 그 수익 흐름을 만든다. 이른바 이런 수익화는 "광고 수입" 또는 "판매자로부터의 수입"이다. 온라인 서비스는 (온라인 서비스가 수신하고 습득한 구독자들의 개인 정보에 의해 결정되는 바와 같이) 그 구독자들 중에서 다양한 성향(trait), 관심사, 인구 통계, 및 속성(attribute)을 갖는 개인들을 식별함으로써 구독자들의 개인 정보를 수익화한다. 물론, 그 구독자들을 겨냥하는 광고 판매가 (전술한 바와 같은) 모놀리식 온라인 서비스가 그 구독자들의 개인 정보를 수익화할 수 있는 유일한 방법이 된다. 대안적으로, 온라인 서비스는 단순히 연락처 목록 및/또는 정보를 판매할 수 있다. 물론, 구독자들에 관한 연락처 목록 및/또는 정보 판매는 개인의 프라이버시에 관한 우려를 낳는다.
구독자들은 종종 "무료의" 개인화된 어시스턴스를 받는 것에 기뻐하여, 자신에게 빈번하게 프레젠테이션되는 광고를 참기도 한다. 게다가, 얼마나 많은 개인 정보를 온라인 서비스가 소유하여 제삼자(예를 들어, 광고주, 판매자, 단체 등)에게 수익화/노출시키는 지를 구독자가 대체로 알지 못하고 있고 이를 매우 불편해할 것이다. 물론, 온라인 서비스는 그 구독자들에게 해가 되지 않을 것이라고 이야기함으로써 그 구독자들을 달랠 것이지만, 온라인 서비스가 (광고에 의하든, 연락처 목록을 판매하든) 그 구독자들의 개인 정보를 제삼자에게 제공함으로써 수익을 창출한다는 점에서 온라인 서비스는 상충하고 있다. 게다가, 제삼자에게 제공되는 개인 정보가 더욱 구체적일수록, 온라인 서비스에 대한 수익 보상은 더욱 커진다. 유감스럽게도, 노출되는 개인 정보가 더욱 구체적일수록, 위험은 더욱 커지고 개인 정보가 노출된 사람 또는 사람들에 대한 악용 가능성이 더 많아진다.
물론, 개인 정보를 (사용자의 개인 정보를 자제하거나 자제하지 못하는) 알려진 제삼자에게 노출할 위험을 고려하지 않고도, 때때로 운이 없는 경우에, 다수의 사용자/구독자들에 대한 실질적인 개인 정보를 단순히 저장함으로써 온라인 서비스가 신분 도용을 초대, 유인하는 대상을 생성하게 된다. 따라서, 개인화된 어시스턴스의 레벨이 사람에 대해 알려진 개인 정보량과 직접적으로 상관되어 있는 한편, (개인 정보의 노출 또는 오용의 위험에 의한 것과 같은) 그 사람의 개인 보안은 온라인 서비스가 소유한 그 개인의 개인 정보량의 함수도 된다. 도 4에 도시된 바와 같이, 이상(ideal)은 높은 개인 보안(즉, 개인 정보 보안) 및 높은 개인화이지만, 실제로는 개인화 레벨이 증가할수록 모놀리식 온라인 서비스로는 (개인의 개인 정보에 관한) 개인 보안 레벨이 감소한다.
모놀리식 온라인 서비스와는 대조되며 또한 개시된 대상의 양태들에 따르면, 개인이 소유한 컴퓨팅 장치(또는 컴퓨팅 장치들)에서 동작하는 개인 데몬(personal daemon)이 "로컬 개인 데몬"이라는 명칭으로 2014년 2월 24일에 출원된 미국 특허 출원 제 14/187567에 기술되어 있다. 관련 출원에 기술되어 있는 바와 같이 정의에 의하면, "데몬"은 컴퓨팅 장치에서 실행되는, 컴퓨터 사용자의 직접적인 제어 하에서 실행되는 것이 아닌 컴퓨팅 장치의 배경에서 실행되는 실행 프로세스 또는 쓰레드이다. 그러나, 컴퓨팅 장치의 배경에서 데몬이 실행되는 동안, 컴퓨터 사용자가 데몬과 상호 작용할 수 있고, 그 상호 작용을 통해서, 데몬의 액티비티를 지시할 수 있다. 또한, "개인 데몬"은 개인화된 어시스턴스의 제공 시에 컴퓨터 사용자의 개인 정보에 대해 액세스를 하고, 개인 정보를 획득, 추론, 유지 및 동작하는(act) 데몬이다. 개인 데몬은 관련 사용자의 액티비티의 다양한 양태들을 모니터링하여, (언제 어디서든 이용 가능할 때) 사용자에 관한 추가 개인 정보를 식별, 추론 및/또는 습득하는 것은 물론 사용자를 대신해 동작 규칙을 추론 및 습득하며, 즉, 사용자에게 개인화된 어시스턴스를 제공한다. 추가적으로, 개인 데몬은 사용자에 관해 이전에 도출된 추론의 확인, 사용자 선호도 및 그 밖의 개인 정보의 요청 등을 포함하는 사용자와의 다이얼로그 및 그 밖의 다른 상호 작용을 통해 사용자에 관한 개인 정보, 특히 사용자를 대신해 추론된 정보 및/또는 동작 규칙에 관한 개인 정보를 습득 및/또는 확인할 수 있다. '로컬하게' 즉 사용자의 컴퓨팅 장치에서 실행되는 개인 데몬을 "로컬 개인 데몬"이라 한다. 로컬 개인 데몬이 사용자의 컴퓨팅 장치에서 실행되지만, 네트워크를 통해서 서비스 및 정보에 액세스하기 때문에, 로컬 개인 데몬은 "클라우드의 에지에서의" 동작이라고 한다. 본 개시를 위해, "개인 데몬"과 "로컬 개인 데몬"은 동의어로 간주되어야 한다.
"개인 어시스턴스"라는 구절은 관련 사용자에게 개인 어시스턴스를 제공하는 개인 데몬의 컨텍스트에서, 기반 사용자를 대신하여 하나 이상의 액션을 실행하는 것으로 해석되어야 한다. 일반적으로, 배타적으로는 아니지만, 개인 어시스턴스는 사용자의 현재 컨텍스트의 양태들에 관련된 하나 이상의 이벤트에 의해 트리거링된다. 예를 들어 그러나 비제한적으로, 개인 어시스턴스의 하나 이상의 액션은 사용자가 특정 액션을 취하도록 사용자에게 추천을 제공하는 것, 사용자를 대신해 데이터 및/또는 서비스를 얻는 것, 사용자의 액티비티의 분석으로 개인 정보의 추론을 사용자에게 확인하는 것, 사용자를 대신해 액션을 취하는 개인 데몬에 관한 허가를 사용자에게 확인하는 것, 하나 이상의 이벤트에 관한 통지를 사용자에게 제공하는 것, 현재 사용자 액티비티에 대한 대안을 제공하는 것, 장소(venue)를 추천하는 것, 컴퓨팅 장치에서 사용자를 대신해 액션을 실행하는 것, 대안 및/또는 관련 액티비티나 항목을 추천하는 것 등을 포함할 수 있다. 구독자들의 개인 정보를 수집하여 수익화하는 모놀리식 온라인 서비스 옵션과는 달리, 개인 데몬은 사용자가 마련한 규칙 및 지시를 제외하고는 또한 그 규칙 및 지시에 따라서, 관련 사용자의 개인 정보를 다른, 제삼자 엔티티와 공유하지 않는다.
개시된 대상의 양태들에 따르면, 사용자의 컴퓨팅 장치에서 실행되는 개인 데몬이 사용자의 컴퓨팅 장치 상에서 또는 컴퓨팅 장치를 통해 이용 가능한 다양한 서비스들의 통합 포인트가 된다. 컴퓨팅 장치는 컴퓨팅 장치에 관련된 개인에게 개인화된 어시스턴스를 제공할 때 개인 데몬이 의존하는 클라이언트-측 통합 프레임워크를 포함한다. 당업자가 이해하는 바와 같이, 본 컨텍스트에서 "프레임워크"는 특정한 기능 세트를 제공하는 (컴퓨팅 장치에서 실행될 수 있는) 실행 가능한 프로세스 및 서비스들의 컬렉션이다. 본 개시의 경우에, 그 기능은 로컬 서비스는 물론, 로컬 컴퓨팅 장치에는 없는 서비스들을 포함하는 서비스들의 통합이다. 통합 프레임워크가 클라우드의 원격 장치들에서가 아니라 사용자의(즉, 클라이언트의) 컴퓨팅 장치에서 구현되기 때문에 이는 "클라이언트-측" 통합 프레임워크이며, 그러나 통합 프레임워크는 원격 소스들과 협력하고 로컬 소스들로부터 서비스를 얻을 수 있다. 이런 클라이언트-측 통합 프레임워크 중 하나가 "로컬 개인 데몬" 특허 출원에서 논의된 On{Event} 프레임워크이다. 개시된 대상의 양태들에 따라서 그리고 더욱 상세하게 논의되는 바와 같이, 통합 프레임워크는 서비스들을 얻기 위한 "제 1 로컬" 패턴을 구현한다.
이제 도 1을 참조하면, 도 1은 개시된 대상의 양태들을 구현하기에 적합한 예시적인 네트워크 환경(100)을 도시하는 블록도이다. 도시된 바와 같이, 네트워크 환경(100)은 하나 이상의 사용자 컴퓨팅 장치들(102-106)을 포함한다. 사용자(101)와 관련된 사용자 컴퓨팅 장치(102)와 같이, 사용자 컴퓨팅 장치의 적어도 일부는 개인 데몬 및 대응 통합 프레임워크를 호스팅하도록 적절하게 구성되어 있다. 당업자가 쉽게 이해할 수 있는 바와 같이, 적절한 사용자 컴퓨팅 장치는, 예를 들어 그러나 비제한적으로, 태블릿 컴퓨팅 장치, 컴퓨팅 장치(102)와 같은 스마트폰 장치, 이른바 "패블릿" 컴퓨팅 장치(즉, 일반적인 태블릿 컴퓨팅 장치와 스마트폰 장치의 기능을 포함하는 컴퓨팅 장치), 랩탑 컴퓨터, 데스크탑 컴퓨터, 착용형 컴퓨팅 장치, PDA, 게임 콘솔 등을 포함한다.
네트워크 환경(100)은 또한 사용자 컴퓨팅 장치들(102-106)이 네트워크에 분산되어 있는 네트워크 액세스 가능한 장치 및/또는 서비스들과 통신하고 그에 액세스할 수 있는 네트워크(110)를 포함한다. 예를 들어, 도 1에 도시된 바와 같이, 네트워크 서비스 제공자들(112-116)이 네트워크(110)에 통신 가능하게 접속되어 있다. 네트워크 서비스 제공자들은 사용자(101)와 같은 사용자들을 포함하여 다른 사람들에게 하나 이상의 서비스를 제공하는 (컴퓨팅 장치에 의해 지원되는) 온라인 서비스들이다. 이런 네트워크 서비스 제공자들(112-116)은, 예를 들어 그러나 비제한적으로, 소셜 네트워크 서비스 제공자(116)와 같은 소셜 네트워크 서비스 제공자, 검색 엔진(114)과 같은 검색 엔진, 트래픽 정보 제공자(112)와 같은 트래픽 정보 제공자, 뉴스 서비스(도시되지 않음), 날씨 서비스(도시되지 않음), 온라인 게임 서비스(도시되지 않음), 은행 서비스(도시되지 않음) 등을 포함한다. 사실, 원하는 어떤 유형의 서비스든 온라인 서비스에서 (무료 아니면 유료로) 얻을 수 있는 것처럼 보인다.
개시된 대상의 양태들에 따르면, 또한 이하에서 보다 상세하게 논의되는 바와 같이, 통합 프레임워크를 갖는 (사용자 컴퓨팅 장치(102)와 같은) 사용자 컴퓨팅 장치는 로컬 프로세싱이 일어나는 동안 컴퓨팅 장치가 네트워크(110)를 통해 다른 컴퓨팅 장치들 및 네트워크 서비스 제공자들로부터 서비스를 얻을 수 있음을 의미하는 "클라우드 에지(edge of the cloud)" 장치로써 구현된다.
많은 사용자가 복수의 컴퓨팅 장치를 갖고 있고 이용할 수 있음을 당업자라면 쉽게 이해해야 한다. 사실, 사용자가, 예를 들어, 스마트폰뿐만 아니라 태블릿 컴퓨팅 장치, 랩탑 컴퓨터, 및/또는 데스크탑 컴퓨터를 갖고 있는 것은 흔한 일이다. 따라서, 개시된 대상의 양태들에 따르면, 컴퓨팅 장치(102)와 같은 컴퓨팅 장치에서 동작하는 개인 데몬은, 관련 컴퓨터 사용자(101)에 관한 개인 정보를 유사하게 구성된 "자매 컴퓨팅 장치들"과, 즉, 그 각각이 통합 프레임워크로 구성된 동일한 사용자와 관련된 컴퓨팅 장치들과 공유하도록 구성된다. 예를 들어, 사용자 컴퓨팅 장치들(102-104)은 컴퓨터 사용자(101)의 자매 컴퓨팅 장치일 수 있다. 이하에서 보다 상세하게 논의되는 바와 같이, 자매 컴퓨팅 장치에서 통합 프레임워크에 등록된 서비스들은 그 서비스들이 다른 소스들에서 이용 가능한 서비스보다 일반적으로 더 선호되는 신뢰 레벨을 누린다.
적절한 사용자 컴퓨팅 장치의 구성과 관련해서, 도 2는 앱 및 서비스들의 클라이언트-측 통합 제공 시에 사용자 컴퓨팅 장치(102)와 같이 적절하게 구성된 사용자 컴퓨팅 장치에서 호스팅하는 다양한 컴포넌트 및 프로세스의 다이어그램(200)을 도시하고 있다. 사용자 컴퓨팅 장치(102)는 컴퓨팅 장치에서 실행되는(또는 실행 가능한) 앱들(202-210)과 같은 하나 이상의 앱 또는 서비스를 포함한다. 관련 사용자(101)를 대신해 실행되는 개인 데몬(206)이 컴퓨팅 장치(102)의 앱들 중에 포함된다.
또한 통합 프레임워크(220)는 적절하게 구성된 사용자 컴퓨팅 장치(102)에서 실행된다. 통합 프레임워크(220)는 확장 가능한 이벤트/액션 프레임워크이며, 즉, 프레임워크가 (예시적인 센서들(222-232)과 같은) 하나 이상의 센서 또는 서비스에 관련된 이벤트의 발생을 탐지하고, 그에 대응하여, 사용자 컴퓨팅 장치에서 탐지된 이벤트와 관련된 하나 이상의 액션을 실행하게 된다. 센서들(222-232)은 지리 센서, 가속도계, 타이머, 네트워크 이벤트 센서, 전력 센서, 프로세서 부하 센서, 광 및 오디오 센서 등과 같이, 사용자 컴퓨팅 장치 상의 하드웨어 센서들에 해당된다. 물론, 앱 및 서비스들(202-210)이 체크인, 좋아하는 것, 텍스트 메시지 등과 같은 특정 기준에 기초하여 이벤트를 생성한다는 점에서 소프트웨어 센서로서 등록될 수도 있다. 소프트웨어 센서를 포함하는 센서들이 프레임워크에 추가/등록될 수 있고, 액션이 서비스로서 추가 및/또는 제거될 수 있고, (통합 프레임워크(220)를 포함하는) 다른 앱 및 애플리케이션들이 센서들의 감지된 이벤트를 구독할 수 있다는 점에서 통합 프레임워크(220)는 확장 가능하다. 따라서, 도시되지는 않았지만, 통합 프레임워크(220)는 하나 이상의 앱 또는 애플리케이션이 센서들의 서비스를 구독할 수 있게 하는 구독 인터페이스는 물론, 서비스(앱, 애플리케이션, 센서, 장치 등) 제공자가 제공된 서비스를 통합 프레임워크에 "발행(publish)"할 수 있게 하는 발행자 인터페이스뿐만 아니라 서비스를 불러오는 방법도 포함할 수 있다. 통합 프레임워크(220)는 또한 다양한 센서/서비스들(222-232)이 프레임워크에 통지를 전송하게 하는 입력 인터페이스(도시되지 않음)를 포함한다. 앞서 언급한 서비스 제공자에 더해서, 통합 프레임워크(220)는 스크립트, 연산 그래프, 및/또는 기존의 제공자들의 결합(orchestration)을 포함하는 덜 전통적인 다른 제공자를 사용할 수 있다.
통합 프레임워크(220)의 확장성과 관련하여, 앱(또는 애플리케이션) 및 서비스들이 통합 프레임워크에 등록되어 다른 센서, 서비스 및/또는 앱들로부터 이벤트를 구독할 수 있다. 구독된 이벤트의 통지를 수신하면, 구독하고 있는 앱 및 서비스는 구독되는 소스로부터의 정보를 이용하여 추가 데이터 및/또는 기능을 생성할 수 있다. 물론, 이와 같이 구독하고 있는 앱 및 서비스는 다른 앱들이 그들의 서비스를 여전히 구독할 수 있도록 통합 프레임워크(220)를 통해 자신들이 생성하는 데이터, 서비스 및/또는 기능을 발행할 수 있다. 요약하면, 앱(또는 애플리케이션 또는 서비스)은 다른 앱 및 서비스들의 서비스/데이터/기능의 소비자로서 통합 프레임워크(220)에 등록될 수 있고, 또한 다른 서비스 및 앱들이 이용할 수 있는 서비스 또는 데이터 또는 기능의 발행자/생산자로서 등록될 수도 있다.
개시된 대상의 다양한 실시예에서 그리고 설계 구현 특징으로서, 앱(또는 서비스)이 다른 앱(또는 센서 또는 서비스)의 소비자로서 구독할 때, 통합 프레임워크(220)는 통합 프레임워크(220)의 추가 관여 없이 구독하는 앱의 정보 및/또는 기능(ability)을 제공하여 구독된 서비스를 수신할 수 있다. 물론, 대안적인 실시예에서, 통합 프레임워크(220)는 생산 서비스와 소비 서비스 간의 "연결(linking)" 양태를 제공할 수 있다.
구독/소비 서비스는 특정 서비스(또는 데이터 또는 기능)을 제공하는 생산 서비스들 중 모든 서비스 또는 특정 서비스를 구독할 수 있다. 예를 들어, 구독 서비스 또는 앱이 로컬 컴퓨팅 장치의 배터리의 현재 전력 레벨을 탐지/보고하는 센서뿐만 아니라, 센서의 데이터를 소비하고 로컬 컴퓨팅 장치가 주어진 현재 전력 레벨에서 현재 처리 레벨로 얼마나 오랫동안 동작을 계속할 수 있는지에 관한 추가 세부 사항을 생성하는 발행 서비스까지도 구독할 수 있다. 통합 프레임워크(220) 하에, 앱은 원하는 데이터/서비스/기능의 유형에 따라 특정 생산 서비스/앱 또는, 대안적으로, 생산 서비스/앱 세트를 구독할 수 있다.
개시된 내용의 양태들에 따르면, 컴퓨팅 장치(102)에서 이용 가능한 (하드웨어 및 소프트웨어 센서들과 서비스들을 모두 포함하는) 센서 및 서비스들(222-232)이 통합 프레임워크(220)에 등록되어 있다. 앱, 장치 또는 센서의 등록은 등록된 엔티티에서 제공하는 서비스(또는 서비스들)의 성질을 통합 프레임워크에 알리는 것과, 프레임워크에 의해 트리거링 및 수신될 수 있는 이벤트의 성질을 프레임워크에 알리는 것을 포함한다. 앞서 언급한 바와 같이, 통합 프레임워크(220)에의 등록은 서비스를 제공하기 위해 호출될 수 있도록 서비스의 제공자와 통신하는 방법을 프레임워크에 알려준다. 레지스트리의 정보를 통해, 다른 앱, 애플리케이션 또는 서비스들은 전체 시스템에 제공되는 데이터 및/또는 서비스(들)를 볼 수 있고, 등록된 서비스/센서에서 제공하는 이벤트(또는 이벤트들)를 구독할 수 있거나, 아니면 등록된 앱/애플리케이션/센서를 실행하여 그 서비스(들) 및 데이터로부터 이득을 얻을 수 있다. 관련 사용자를 위한 다양한 앱 및 서비스들의 통합 포인트로서 동작하는 개인 데몬(206)은 사용자에게 개인 어시스턴스를 제공할 때 통합 프레임워크(220)의 앱 및 서비스들을 구독한다.
개시된 대상의 다양한 실시예에 따르면, 통합 프레임워크(220)에서의 서비스 등록은 컴퓨팅 장치에서 서비스의 설치 프로세스의 일부로서 실행된다. 일 실시예에 따르면, 서비스와 관련된 매니페스트(manifest)에 따라 통합 프레임워크(220)의 등록이 일어날 수 있다. 또는, 서비스는 초기화/처리 프로세스의 일부로서 통합 프레임워크에 자신의 등록 정보를 전달하도록 구성될 수도 있다. 아니면, 서비스의 설치 시에, 통합 프레임워크(220)는 등록 정보의 전체 목록을 참고하도록 구성될 수 있다. 또 다른 실시예에서, 관련 사용자가 서비스의 등록 정보를 통합 프레임워크(220)에 수동으로 추가할 수 있다.
개시된 대상에 따르면, 각각의 제공자의 서비스에 관한 정보를 저장하는 것에 더해서, 통합 프레임워크에 등록된 각각의 서비스는 신뢰 레벨 계층 구조의 신뢰 레벨에 연관되어 있다. 신뢰 레벨은 일반적으로 서비스에 대해 관련 사용자가 갖고 있는 신뢰를 나타낸다. 도 3을 참조하면, 로컬 서비스(즉, 통합 프레임워크(220)와 함께 컴퓨팅 장치에 위치하는 서비스들)는 일반적으로 도 3에서 "나(me)" 레벨(302)으로 특징지어진 가장 높은 신뢰 레벨과 연관된다. 이미 언급한 바와 같이, 로컬 장치에 없는 서비스들도 통합 프레임워크(220)에 등록될 수 있다. 사실, 자매 컴퓨팅 장치의 서비스들이 마찬가지로 높은 신뢰 레벨, 도 3에서 "나의 것(mine)" 레벨(304)이라고 하는 두 번째로 신뢰도가 높은 레벨을 차지한다. 관련 사용자가 신뢰한다고 여기는 서비스들에는, 예를 들어, 사용자가 멤버이거나 관련 사용자가 액세스하도록 인가된 네트워크 상의 장치들의 서비스들에는 도 3에서 "우리의 것(ours)" 레벨(306)이라고 하는 좀 낮은 신뢰 레벨, 세 번째로 신뢰도가 높은 레벨이 부여될 수 있다. 컴퓨팅 장치(102) 상의 통합 프레임워크(202)에서 이용 가능하지만 반드시 높은 신뢰 레벨에 관련된 것은 아닌 그런 서비스들은 일반적으로 도 3에서 "기타(others)" 레벨(308)이라고 하는 가장 낮은 신뢰 레벨에 포함된다.
개시된 대상의 양태들에 따르면, 통합 프레임워크(220)에서 서비스 요청을 수신할 때, 통합 프레임워크는 일반적으로 가장 신뢰도가 높은 서비스들로, 즉, "나" 신뢰 레벨에 있는 서비스들로 그 요청을 충족시키려고 한다. 가장 신뢰도가 높은 레벨에서 맞는 서비스를 찾는 것을 실패하면, 통합 프레임워크(220)는 화살표(312)로 나타내는 바와 같이, 요청을 만족시키기 위해 계속해서 바깥쪽 레벨들을 고려해볼 것이다. 물론, 로컬 장치에서 서비스가 이용 가능함에도 불구하고 로컬 컴퓨팅 장치에 있지 않은 서비스들을 서비스 제공자들로부터 얻는 것이 유리할 때가 있을 수 있다. 예를 들어(예를 들어 그러나 비제한적으로), 배터리 전력이 낮고 특정 서비스가 전력의 상당량을 소비한다고 알려진 경우, 로컬 컴퓨팅 장치가 아닌 컴퓨팅 장치에서 그 서비스를 얻는 것이 유리할 수 있다. 유사하게, 로컬 컴퓨팅 장치의 제공자/센서들로부터의 서비스("나" 신뢰 레벨(302)에 있는 것들)를 얻을지 또는 바깥쪽의 신뢰 레벨의, 특히 "나의 것" 신뢰 레벨(304)에 있는 서비스를 얻을지를 결정하는 데에 처리 효용 및 용량, 메모리 제약, 데이터 효용, 네트워크 대역폭, 네트워크 접속률, 시간 등이 고려될 수 있다.
또한 애드 혹(ad hoc) 신뢰 레벨(310)이 도 3에 도시되어 있다. 개시된 대상의 양태들에 따르면, 사용자는 상호 통신 및 다른 쪽으로의 데이터 제공 등을 하기 위해 다른 장치와의 애드 혹 네트워크(예를 들어, 두 모바일 장치들 간의 일시적인 네트워크)를 일시적으로 구축할 수 있다. 따라서, 통합 프레임워크(220)는 접속된 기간 동안 애드 혹 네트워크 상의 장치들의 앱/서비스/센서들에게 "애드 혹" 신뢰 레벨(310)을 일시적으로 연관시킬 수 있다. 물론, 도 3의 애드 혹 레벨(310)이 "나의 것" 레벨(304)과 "우리의 것" 레벨(306) 사이에 있는 것으로 도시되어 있지만, 이는 단지 예시 목적이며 개시된 대상에 대한 제한으로 여겨져서는 안 된다. "애드 혹" 레벨(310)에 부여된 신뢰 레벨이 신뢰 레벨 계층 구조의 다른 장소에 위치하도록 구성될 수 있고, 또는 관련 사용자에 의해 수동으로 결정될 수도 있다.
개시된 대상의 다양한 실시예에 따르면, 도 3에 관한 상기의 단락에서 서비스들이 로컬 컴퓨팅 장치에서 이용 가능하지 않을 때(또는 실제로 실행될 수 없을 때) 통합 프레임워크(220)가 외부 컴퓨팅 장치에서 서비스들을 찾는 방법을 설명하고 있지만, 통합 프레임워크 안의 메시지들이 다른 컴퓨팅 장치들로 전송되지는 않는다. 일반적으로 말해서, 통합 프레임워크(220)가 감지된 이벤트나 신호에 따라 원격 장치로부터 서비스를 얻는 것을 고려할 때, 원격 장치들과의 통신 전용인 하나 이상의 서비스가 호출되어 서비스에 대한 요청을 원격 장치에 제출한다.
도 3과 관련해 전술한 패턴에 관해서, "나" 레벨에서 시작해서 신뢰 레벨에 따라 바깥쪽으로 확장하여 서비스를 찾는 것이 사용자 자신의 모바일 컴퓨팅 장치에서 유리하게 구현될 수 있지만, 다른 정책이 타당할 때가 있다. 예를 들어, 부모들은 아이들의 모바일 컴퓨팅 장치에서 이용 가능한 다양한 피쳐들을 알고 그에 대해 제어하기를 원할 수 있다. 이런 환경에서 아이의 부모가 설정한 정책에 따라서, 서비스를 찾는 순서가 달라질 수 있고, 예를 들어, 부모들이 가장 신뢰된다고 여겨지는 다양한 서비스들(로컬 컴퓨팅 장치의 서비스들)을 식별할 수 있고, 부모들은 통합 프레임워크(220)가 요청된 서비스를 찾을 수 있는 신뢰 레벨을 제한할 수도 있다. 물론, 사업체도 자신의 고용인들에게 제공하는 모바일 장치들에 대한 정책을 구현하기를 원할 수 있다.
이제 도 5를 참조하면, 도 5는 개시된 대상의 양태들에 따른 서비스들을 얻는 예시적인 루틴(500)의 순서도를 도시하며, 예를 들어, 이는 사용자의 모바일 컴퓨팅 장치(102) 상의 통합 프레임워크(220)에 의해 구현될 수 있다. 블록(502)에서 시작하며, 통합 프레임워크(220)에 등록된 서비스 제공자로부터의 서비스에 대한 요청이 수신된다. 블록(504)에서, 요청을 충족하는 제공자/서비스에 대한 검색이 로컬 서비스들에서부터, 즉, 가장 신뢰도가 높은 신뢰 레벨("나" 신뢰 레벨(302))의 서비스들에서부터 시작된다. 블록(506)에서, 요청을 충족시키는 등록된 서비스에 대한 현재 레벨(처음에는 가장 신뢰도가 높은 레벨에서 시작함)이 검색된다. 결정 블록(508)에서, 현재 신뢰 레벨에서 서비스가 발견되었는지에 관한 결정이 내려진다. 발견되지 않은 경우, 루틴(500)은 이하에서 설명하는 바와 같이 결정 블록(512)으로 진행한다. 그러나 요청된 서비스가 발견되는 경우, 즉, 요청된 서비스가 현재 레벨에서 제공자에 의해 완수될 수 있는 경우, 루틴(500)은 서비스에 대해 발견된 제공자에게 지시가 내려지는 블록(510)으로 진행된다. 따라서, 루틴(500)이 종료된다.
결정 블록(512)에서, 서비스를 검색할 다른, 더 낮은 신뢰 레벨이 존재하는지 여부에 관한 결정이 내려진다. 존재하지 않는 경우, 즉, 요청된 서비스가 이용 가능하지 않은 경우, 블록(514)에서 루틴이 요청된 서비스가 발견되지 않았다는 표시를 반환한다. 대신에, 검색할 다른 레벨이 있는 경우, 루틴(500)은 (도 3에서 전술한 바와 같이) 다음 신뢰 레벨이 선택되는 블록(516)으로 진행되고 전술한 바와 같이 프로세스는 블록(506)으로 되돌아간다.
이제 도 6을 참조하면, 도 6은 개시된 대상의 양태들에 따른 클라이언트-측 통합, 통합 프레임워크와의 상호 작용의 예시적인 루틴(600)의 순서도를 도시하며, 예를 들어, 이는 개인 데몬에 의해 실행될 수 있다. 블록(602)에서 시작하며, 통합 프레임워크에 등록된 앱 또는 서비스에 관한 서비스 정보 요청이 제출된다. 블록(604)에서, 서비스에 관한 정보가 수신된다. 블록(606)에서, 요청된 서비스 정보가 현재 이용 가능한 것으로(대안은 서비스가 이용 가능하지 않는 것임) 식별되는지 여부에 대한 결정이 내려진다. 예(yes)인 경우에, 루틴은 식별된 서비스에 대한 요청이 제출되는 블록(608)으로 진행된다. 그 후에, 루틴(600)이 종료된다.
도 7은 클라이언트-측 통합 프레임워크(220)의 계층 구조에 서비스를 통합하는 예시적인 루틴(700)의 순서도를 도시한다. 블록(702)에서 시작하며, 통합 프레임워크(220)는 서비스(또는 전술한 바와 같이 입력 인터페이스를 통해 앱 또는 센서)에 관한 정보를 수신한다. 블록(704)에서, 통합 프레임워크(220)는 서비스에 관련될 신뢰 레벨 계층 구조의 신뢰 레벨을 결정한다. 앞서 언급한 바와 같이, 신뢰 레벨은 서비스가 로컬 장치, 자매 장치, 장치들의 신뢰되는 네트워크, 애드 혹 네트워크 상에서 또는 그 밖의 다른 곳에서 이용 가능한지 여부에 해당할 수 있다. 블록(706)에서, 통합 프레임워크(220)의 레지스트리가 관련 신뢰 레벨을 포함하는 정보로 업데이트된다. 그 후에, 루틴(700)이 종료된다.
루틴(500)의 블록(510)과 관련하여 도 5에서 전술한 평가에 관해서, 도 8은 서비스가 더 많이 신뢰되는 레벨에서(예를 들어, 로컬 컴퓨팅 장치 상에서) 이용 가능하더라도 바깥쪽 레벨의 서비스를 사용할 것인지 여부를 평가하는 예시적인 루틴(800)을 도시하는 순서도이다. 블록(802)에서 시작하여, (가장 신뢰도가 높은 레벨에 해당할 수 있는, 예를 들어, 로컬 컴퓨팅 장치 상의) 현재 레벨에서 이용 가능한 서비스가 신뢰 계층 구조의 다른 레벨에서도 이용 가능한지 여부에 대해 결정이 내려진다. 이용 불가능한 경우, 블록(804)에서, 현재 레벨의 서비스가 사용되고 루틴(800)이 종료된다. 그러나, 서비스가 바깥쪽 신뢰 레벨에서 이용 가능한 경우, 루틴은 블록(806)으로 진행한다.
블록(806)에서, 바깥쪽 레벨의 서비스의 사용에 관한 다양한 기준이 평가된다. 앞서 언급한 바와 같이, 이런 기준은 (예를 들어 그러나 비제한적으로) 현재 컴퓨팅 장치의 배터리 전력이 낮은지 여부, 특정 서비스가 상당량의 전력을 소비하는 것으로 알려져 있는지 여부, 다른 컴퓨팅 장치 및 로컬 컴퓨팅 장치의 처리 능력 및 용량, 메모리 제약, 로컬 컴퓨팅 장치 대 다른 컴퓨팅 장치에서 데이터 이용 가능성, 현재 장치의 네트워크 대역폭 용량, 로컬 컴퓨팅 장치의 네트워크 접속률, 시간, 데이터 보안 문제 등을 포함할 수 있다. 평가(또는 평가들)에 기반하여, 결정 블록(808)에서 바깥쪽 레벨의 서비스의 사용 여부에 관한 결정이 내려진다. 사용되지 않는 경우, 루틴(800)은 현재 레벨의 서비스가 사용될 것이라는 표시가 반환되는 블록(804)으로 되돌아오고, 그 후에 루틴(800)이 종료된다. 그렇지 않으면, 블록(810)에서, 현재 레벨의 (신뢰 계층 구조의) 바깥쪽 레벨에서의 서비스를 사용할 것이라는 표시가 반환된다. 그 후에, 루틴(800)이 종료된다.
전술한 다양한 루틴 및 프로세스와 관련해서, 이들 루틴들이 다양한 작업을 완수하기 위해 별개의 단계들과 관련해서 표현되지만, 이들 단계들은 사실상 논리적인 것으로 간주되어야 하며, 특정 구현의 임의의 실제 단계들 및/또는 별개의 단계들에 대응하거나 대응하지 않을 수 있다. 이들 단계들이 다수의 루틴들에서 제시되는 순서는 단계들이 수행될 수 있는 유일한 순서로 간주되지 말아야 한다. 게다가, 이들 루틴들은 개시된 대상의 다수의 새로운 피쳐들을 포함하는 반면에, 다른 단계들(열거되지 않음)이 루틴들의 실행 시에 수행될 수도 있다. 또한, 당업자는 이들 루틴들의 논리적 단계들이 함께 조합되거나 혹은 다수의 단계들로 이루어질 수 있음을 이해해야 할 것이다. 루틴들(500-800)의 단계들은 병렬로 또는 직렬로 수행될 수 있다. 종종, 배타적으로는 아니지만, 다수의 루틴들의 기능은 도 8과 관련해서 설명되는 바와 같이 컴퓨팅 장치 상에서 실행되는 소프트웨어(예를 들어, 애플리케이션, 시스템 서비스, 라이브러리 등)로 구현된다. 다양한 실시예들에서, 다양한 루틴들의 전부 또는 일부는 컴퓨터 시스템 상에서 시스템 온 칩, 특수 설계된 프로세서 및/또는 논리 회로 등을 포함하는, 그러나 이에 한정되지는 않는, 하드웨어 모듈들로 구현될 수도 있다.
이런 루틴/프로세스는 일반적으로 루틴, 함수, 루핑(looping) 구조, if-then 및 if-then-else 구문과 같은 선택기, 대입(assignment), 산술 연산 등을 포함하는 실행 가능한 코드로 구현된다. 루틴 각각의 정확한 구현은 프로그래밍 언어, 컴파일러, 대상 프로세서, 운영 환경 및 링크를 포함하는 다양한 구현 설정 및 결정에 기반한다. 이들 루틴에서 식별된 논리 단계가 얼마든지 많은 방식으로 구현될 수 있어, 전술한 논리적인 설명으로 충분히 유사한 결과를 얻을 수 있다는 점을 당업자라면 쉽게 이해할 것이다.
개시된 대상의 많은 새로운 양태들이 애플리케이션들(컴퓨터 프로그램들로도 불림), 앱들(일반적으로 단일 또는 협소 목적의 소형 애플리케이션들), 및/또는 방법들로 구현되는 루틴들로 표현되지만, 이들 양태들은, 컴퓨터 판독 가능 저장 매체로도 불리는 컴퓨터 판독 가능 매체에 의해 저장된 컴퓨터 실행 가능 명령어로서 구현될 수도 있다. 당업자가 인지하는 바와 같이, 컴퓨터 판독 가능 매체는 추후의 검색 및 실행을 위한 컴퓨터 실행 가능 명령어를 호스팅할 수 있다. 컴퓨터 판독 가능 저장 장치들에 저장된 컴퓨터 실행 가능 명령어들이 실행될 때, 이들은 다양한 루틴들과 관련해서 전술한 그 단계들, 방법들, 및 루틴들을 포함해서, 다양한 단계들, 방법들 및/또는 기능을 수행한다. 컴퓨터 판독 가능 매체의 예들로는 블루레이 디스크, DVD, CD, 광 디스크 카트리지 등과 같은 광 저장 매체, 하드 디스크 드라이브, 플로피 디스크, 자기 테이프 등을 포함하는 자기 저장 매체, RAM, ROM, 메모리 카드, 썸 드라이브 등과 같은 메모리 저장 장치와 클라우드 스토리지(즉, 온라인 저장 서비스) 등을 포함하지만 이로 제한되지 않는다. 그러나, 본 명세서의 목적을 위해, 컴퓨터 판독 가능 매체는 반송파 및 전파 신호를 명시적으로 제외한다.
도 9는 개시된 대상의 양태들을 구현하기에 적합한 예시적인 모바일 컴퓨팅 장치의 블록도를 도시한다. 예시적인 모바일 컴퓨팅 장치(900)는 시스템 버스(910)를 이용해서 상호 접속된 프로세서(902)(또는 프로세싱 유닛) 및 메모리(904)를 포함한다. 쉽게 이해할 수 있듯이, 메모리(904)는 (항상은 아니지만) 일반적으로 휘발성 메모리(906) 및 비휘발성 메모리(908) 모두를 포함한다. 휘발성 메모리(906)는 메모리에 전력이 공급되는 한 정보를 보유 또는 저장한다. 반대로, 비휘발성 메모리(908)는 전력 공급이 이용 불가능한 때에도 정보를 저장(또는 지속)할 수 있다. 일반적으로 말하면, RAM 및 CPU 캐시 메모리는 휘발성 메모리(906)의 예들인 반면에 ROM, 고체 상태 메모리 장치, 메모리 저장 장치, 및/또는 메모리 카드는 비휘발성 메모리(908)의 예들이다.
프로세서(902)는 다양한 기능들을 수행함에 있어서, 특히 관련 사용자에게 개인 어시스턴스를 제공하는 개인 데몬(206)을 실행하는 것과 관련하여, 메모리(904)로부터 검색된 명령어를 실행한다. 프로세서(902)는 단일 프로세서, 다중 프로세서, 단일 코어 유닛들, 및 다중 코어 유닛들과 같은 상업적으로 이용 가능한 다양한 프로세서들 중 임의의 것으로 구성될 수 있다. 게다가, 개시된 대상의 새로운 양태들이 PDA, 착용형 컴퓨팅 장치, 스마트폰 장치, 태블릿 컴퓨팅 장치, 패블릿 컴퓨팅 장치, 랩탑 컴퓨터, 데스크탑 컴퓨터 등을 포함하지만 이로 제한되지 않는 다른 컴퓨터 시스템 구성으로 실시될 수 있다는 것을 당업자라면 이해할 것이다.
시스템 버스(910)는 상호 통신을 위해 모바일 장치의 다양한 컴포넌트들에 대한 인터페이스에 제공한다. 시스템 버스(910)는 다양한 컴포넌트들(내부 컴포넌트 및 외부 컴포넌트 모두를 포함함)을 상호 접속할 수 있는 다수 형태의 버스 구조들 중 임의의 하나일 수 있다. 컴퓨팅 장치(900)는 다른 네트워크 액세스 가능한 컴퓨터, 온라인 서비스, 및/또는 네트워크 엔티티는 물론 컴퓨터 네트워크(110) 상의 다른 장치들과 컴퓨팅 장치(900)를 상호 접속하는 네트워크 통신 컴포넌트(912)를 더 포함한다. 네트워크 통신 컴포넌트(912)는 유선 접속, 무선 접속 또는 양쪽 모두를 통해 네트워크(110) 상에서 다양한 컴퓨터 및 장치들과 통신하도록 구성될 수 있다.
컴퓨팅 장치(900)는 또한 실행 가능한 앱/애플리케이션들(916)을 포함한다. 당업자가 이해하는 바와 같이, 애플리케이션은 컴퓨팅 장치(900)와 같은 컴퓨팅 장치에서 하나 이상의 작업을 (프로세서에서의 실행을 통해) 실행하는 실행 가능한 명령어 컬렉션에 해당한다. 애플리케이션은 일반적으로, 배타적으로는 아니지만, 컴퓨팅 장치의 사용자의 지시대로 실행된다. 애플리케이션은 (애플리케이션의 구성에 의해 설계된 대로의) 다양한 작업을 실행할 때 컴퓨팅 장치에서 이용 가능한 피쳐들을 결합한다. "앱"이란 용어는 가끔 애플리케이션의 약칭으로 사용되지만, 대안적으로 앱은 하나 이상의 작업을 실행시키는 실행 가능한 명령어 컬렉션에도 마찬가지로 해당한다. 그러나, 애플리케이션에 반해서, 앱은 통상, 배타적으로는 아니지만, 제한된 작업 세트를 가리키며, 종종 좁은 주제/피쳐에 중점을 두고 있다. 앱의 범위가 애플리케이션의 범위보다 일반적으로 더 많이 제한되므로, 앱은 일반적으로 시스템 리소스에 대해 더 작은 풋프린트를 필요로 하고 제한된 리소스의 컴퓨팅 장치에 의해 실행되는 데 보통 더 적합하다. 앱/애플리케이션(918)은 일반적으로 메모리(904)에 저장되지만, 단지 설명을 위해 메모리(904)에서 따로 호출되었다.
예시적인 컴퓨팅 장치(900)는 센서들(918)을 더 포함한다. 일반적으로, 센서들은 컴퓨팅 장치(900)에 관한 특정 이벤트를 감지하는 다양한 하드웨어 장치에 해당한다. 센서들(918)은, 예를 들어 그러나 비제한적으로, 가속도계, 햅틱(haptic) 센서, 정전 용량 센서, 오디오 센서, 광 센서, 타이머, 온도 센서, 전력 센서(AC 및 DC 센서, 전압 센서 등), 무선 신호 센서, 지리적 위치(geo-location) 센서, 자기 센서, 고도계, 기압 센서 등을 포함할 수 있다. 센서들은 인터넷 라우팅 데이터, HTTP 요청/응답 검사, MAC 주소, 셀룰러/무선 삼각 측량 등과 같은 통신 정보에 기초할 수 있다. 당업자가 이해하는 바와 같이, 적절하게 구성된 컴퓨팅 장치(900)는 다양한 조합의 하드웨어 센서(918)를 포함할 수 있다. 게다가, 이 하드웨어 센서들은 물론 (이하에서 논의되는 바와 같은) 소프트웨어 센서들도 통합 프레임워크(220)를 통해 사용자 컨텍스트를 모니터링하는 데 사용된다. 앞서 언급한 바와 같이, 통합 프레임워크(220)는 확장 가능한 이벤트/액션 프레임워크이며, 즉, 프레임워크가 (센서들(918)을 포함하는) 하나 이상의 센서에 관해 발생하는 이벤트를 탐지하고, 그에 응답하여, 컴퓨팅 장치(900)에서 탐지된 이벤트와 관련된 액션을 실행한다. 소프트웨어 센서들을 포함하는 센서들이 추가될 수 있고, 구독자가 감지된 이벤트를 구독할 수 있다는 점에서 확장 가능하다. 통합 프레임워크(220)는 통합 레지스트리를 포함하는 자신의 정보를 통합 데이터 스토어(914)에 저장한다.
통합 프레임워크(220)와 관련해서, 당업자라면 프레임워크를 구현할 다양한 대안들이 있다는 것을 이해할 것이며, 일 실시예에서 프레임워크(220)는 Node.js 개발자들의 Node.js 기술에서 구축된 배경 서비스로써 구현된다. Node.js 기술은 확장 가능하고 강건하여, 센서들(918)과 같은 하드웨어 센서들은 물론 소프트웨어 센서들과도 접속할 수 있다. 앱/애플리케이션들(916)을 포함하는 앱 및 애플리케이션은 자바 스크립트 코드에 의해 Node.js 프로세스와 접속할 수 있다. 물론, 통합 프레임워크(220)는 Node.js가 아닌 그 밖의 다른 기술을 사용하여 구현될 수도 있지만, Node.js가 컴퓨팅 장치(900)와 같은 호스트 컴퓨팅 장치에 상대적으로 작은 풋프린트를 누리고, 많은 다양한 운영 체제 플랫폼에 배치되는 구성을 갖고 있고, 자바 스크립트 프로그래밍 언어가 광범위한 지원을 누리므로, 유리하게 사용될 수 있다.
예시적인 컴퓨팅 장치(900)의 다양한 컴포넌트와 관련하여, 이런 컴포넌트들이 컴퓨팅 장치의 메모리에 저장된 실행 가능한 소프트웨어 모듈들, 하드웨어 모듈들(SoC(시스템 온 칩)를 포함함), 또는 이 둘의 조합으로서 구현될 수 있다는 것을 당업자는 이해할 것이다. 게다가, 다양한 컴포넌트들 각각은 하나 이상의 컴퓨터 시스템들과 함께 독립적이면서 협력적인 프로세스 또는 장치로서 구현될 수 있다. 물론, 예시적인 컴퓨팅 장치(900)와 관련해서 전술한 다수의 컴포넌트들이 기술된 다양한 기능들을 수행하기 위한 논리 컴포넌트들로서 간주되어야 한다는 것 또한 이해해야 한다. 당업자가 쉽게 이해하는 바와 같이, 논리 컴포넌트들 및/또는 서브시스템들은 실제 개별 컴포넌트들에 대해 일대일 방식으로 직접적으로 대응하거나 대응하지 않을 수 있다. 실제 실시예에서, 각 컴퓨터 시스템의 다수의 컴포넌트들은 다수의 실제 컴포넌트들 전체에 걸쳐 함께 조합되거나 분해될 수 있으며, 및/또는 컴퓨터 네트워크 상의 협력적 프로세스들로서 구현될 수 있다.
개시된 대상의 다양한 새로운 양태들이 설명되었지만, 이들 양태들은 예시이며 제한적인 것으로 해석되지 말아야 함을 이해해야 한다. 다양한 양태들에 대한 변형 및 변경은 개시된 대상의 범위에서 벗어나지 않고서 이루어질 수 있다.

Claims (19)

  1. 적어도 하나의 프로세서와 메모리를 포함하는 사용자의 컴퓨팅 장치에서 실행되는 통합 프레임워크에 의해 구현되는 컴퓨터로 구현되는 방법으로서,
    상기 통합 프레임워크에서 상기 사용자로부터 서비스에 대한 요청을 수신하는 단계 - 상기 서비스는 상기 통합 프레임워크 이외의 다른 서비스이고, (i) 상기 사용자의 컴퓨팅 장치 또는 (ii) 상기 사용자의 컴퓨팅 장치 외부에 있는 장치 중 적어도 하나에 존재함 - 와,
    상기 통합 프레임워크를 사용하여 복수의 서비스의 레지스트리에 액세스하는 단계 - 상기 복수의 서비스의 레지스트리는 (i) 상기 사용자의 컴퓨팅 장치 또는 (ii) 상기 사용자의 컴퓨팅 장치 외부에 있는 장치 중 적어도 하나에 존재하고, 상기 복수의 서비스 각각은 신뢰 레벨 계층 구조의 신뢰 레벨에 연관되어 있음 - 와,
    상기 신뢰 레벨 계층 구조에 따라 상기 요청된 서비스의 제공자를 상기 레지스트리에서 반복적으로 검색하는 단계 - 상기 레지스트리에서의 검색은, 상기 요청된 서비스의 제공자가 발견될 때까지 또는 상기 요청된 서비스의 제공자를 찾지 못하고 상기 계층 구조의 모든 레벨이 검색될 때까지, 신뢰도가 낮은 신뢰 레벨의 제공자가 검색되기 전에 신뢰도가 높은 신뢰 레벨과 연관된 제공자가 검색되도록, 상기 신뢰 레벨의 가장 신뢰도가 높은 레벨에서 시작함 - 와,
    상기 요청된 서비스의 제공자를 발견하면, 상기 요청된 서비스의 발견된 제공자에게 상기 발견된 제공자로 하여금 상기 사용자에게 상기 서비스를 제공하게 하는 지시를 하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  2. 제 1 항에 있어서,
    상기 복수의 서비스의 제공자 중 가장 신뢰도가 높은 신뢰 레벨과 연관된 제공자는 상기 사용자의 컴퓨팅 장치에서 이용 가능한 제공자인
    컴퓨터로 구현되는 방법.
  3. 제 2 항에 있어서,
    상기 복수의 서비스의 제공자 중 두 번째로 신뢰도가 높은 신뢰 레벨과 연관된 제공자는 자매(sibling) 컴퓨팅 장치에서 이용 가능한 제공자인
    컴퓨터로 구현되는 방법.
  4. 제 3 항에 있어서,
    상기 복수의 서비스의 제공자 중 세 번째로 신뢰도가 높은 신뢰 레벨과 연관된 제공자는 상기 사용자의 액세스가 허가된 네트워크의 장치에서 이용 가능한 제공자인
    컴퓨터로 구현되는 방법.
  5. 제 3 항에 있어서,
    상기 요청된 서비스는 상기 사용자의 컴퓨팅 장치에서 이용 가능한 제 1 제공자 및 상기 자매 컴퓨팅 장치에서 이용 가능한 제 2 제공자로부터 이용 가능하며,
    상기 방법은
    상기 서비스를 상기 제 1 제공자로부터 얻을지 혹은 상기 제 2 제공자로부터 얻을지를 하나 이상의 기준에 따라 평가하는 단계와,
    상기 하나 이상의 기준에 따라 상기 제 2 제공자로부터 상기 서비스를 얻기로 결정되면, 상기 제 2 제공자를 상기 요청된 서비스의 상기 발견된 제공자로서 결정하는 단계를 더 포함하는
    컴퓨터로 구현되는 방법.
  6. 제 5 항에 있어서,
    상기 하나 이상의 기준은 상기 사용자의 컴퓨팅 장치에서 이용 가능한 전력의 측정 결과를 포함하는
    컴퓨터로 구현되는 방법.
  7. 제 5 항에 있어서,
    상기 하나 이상의 기준은 상기 사용자의 컴퓨팅 장치 및 상기 자매 컴퓨팅 장치에 이용 가능한 리소스의 측정 결과를 포함하는
    컴퓨터로 구현되는 방법.
  8. 제 5 항에 있어서,
    상기 하나 이상의 기준은 상기 사용자의 컴퓨팅 장치에 이용 가능한 네트워크 접속의 측정 결과를 포함하는
    컴퓨터로 구현되는 방법.
  9. 적어도 하나의 프로세서와 메모리를 포함하는 사용자의 컴퓨팅 시스템에서 실행되는 통합 프레임워크에 의해 구현되는 컴퓨터로 구현되는 방법으로서,
    상기 통합 프레임워크에서 상기 사용자로부터 서비스에 대한 요청을 수신하는 단계 - 상기 서비스는 상기 통합 프레임워크 이외의 다른 서비스이고, (i) 상기 사용자의 컴퓨팅 장치 또는 (ii) 상기 사용자의 컴퓨팅 장치 외부에 있는 장치 중 적어도 하나에 존재함 - 와,
    상기 통합 프레임워크를 사용하여 복수의 서비스의 레지스트리에 액세스하는 단계 - 상기 복수의 서비스의 레지스트리는 (i) 상기 사용자의 컴퓨팅 장치 또는 (ii) 상기 사용자의 컴퓨팅 장치 외부에 있는 장치 중 적어도 하나에 존재하고, 상기 복수의 서비스 각각은 신뢰 레벨 계층 구조의 신뢰 레벨에 연관되어 있음 - 와,
    상기 신뢰 레벨 계층 구조에 따라 상기 요청된 서비스의 제공자를 상기 레지스트리에서 반복적으로 검색하는 단계 - 상기 레지스트리에서의 검색은, 상기 요청된 서비스의 제공자가 발견될 때까지 또는 상기 요청된 서비스의 제공자를 찾지 못하고 상기 계층 구조의 모든 레벨이 검색될 때까지, 신뢰도가 낮은 신뢰 레벨의 제공자가 검색되기 전에 신뢰도가 높은 신뢰 레벨과 연관된 제공자가 검색되도록, 상기 신뢰 레벨의 가장 신뢰도가 높은 레벨에서 시작하고, 상기 요청된 서비스는 상기 사용자의 컴퓨팅 장치에서 이용 가능한 제 1 제공자 및 자매 컴퓨팅 장치에서 이용 가능한 제 2 제공자로부터 이용 가능함 - 와,
    상기 서비스를 상기 제 1 제공자로부터 얻을지 혹은 상기 제 2 제공자로부터 얻을지를 하나 이상의 기준에 따라 평가하는 단계와,
    상기 하나 이상의 기준에 따라 상기 제 2 제공자로부터 상기 서비스를 얻기로 결정되면, 상기 제 2 제공자를 상기 요청된 서비스의 상기 발견된 제공자로서 결정하는 단계와,
    상기 요청된 서비스의 제공자를 발견하면, 상기 요청된 서비스의 발견된 제공자에게 상기 발견된 제공자로 하여금 상기 사용자에게 상기 서비스를 제공하게 하는 지시를 하는 단계를 포함하는
    컴퓨터로 구현되는 방법.
  10. 제 9 항에 있어서,
    상기 복수의 서비스의 제공자 중 가장 신뢰도가 높은 신뢰 레벨과 연관된 제공자는 상기 사용자의 컴퓨팅 장치에서만 이용 가능한 제공자인
    컴퓨터로 구현되는 방법.
  11. 제 9 항에 있어서,
    상기 복수의 서비스의 제공자 중 두 번째로 신뢰도가 높은 신뢰 레벨과 연관된 제공자는 상기 자매 컴퓨팅 장치에서만 이용 가능한 제공자인
    컴퓨터로 구현되는 방법.
  12. 제 9 항에 있어서,
    상기 복수의 서비스의 제공자 중 세 번째로 신뢰도가 높은 신뢰 레벨과 연관된 제공자는 상기 사용자의 액세스가 허가된 네트워크의 장치에서 이용 가능한 제공자인
    컴퓨터로 구현되는 방법.
  13. 제 9 항에 있어서,
    상기 하나 이상의 기준은 상기 사용자의 컴퓨팅 장치에서 이용 가능한 전력의 측정 결과를 포함하는
    컴퓨터로 구현되는 방법.
  14. 제 9 항에 있어서,
    상기 하나 이상의 기준은 상기 사용자의 컴퓨팅 장치 및 상기 자매 컴퓨팅 장치에 이용 가능한 리소스의 측정 결과를 포함하는
    컴퓨터로 구현되는 방법.
  15. 제 9 항에 있어서,
    상기 하나 이상의 기준은 상기 사용자의 컴퓨팅 장치에 이용 가능한 네트워크 접속의 측정 결과를 포함하는
    컴퓨터로 구현되는 방법.
  16. 프로세서와 메모리를 포함하는 컴퓨터 시스템으로서,
    상기 프로세서는 추가 컴포넌트의 일부분으로서 또는 추가 컴포넌트와 함께 상기 메모리에 저장되고 상기 메모리로부터 반복적으로 취출되는 명령어를 실행하고,
    상기 추가 컴포넌트는,
    상기 컴퓨터 시스템에 배치된 복수의 하드웨어 센서 - 각각의 센서가 서비스 제공자임 - 와,
    상기 컴퓨터 시스템에 설치된 복수의 앱 - 각각의 앱이 서비스 제공자임 - 와,
    상기 컴퓨터 시스템에서 서비스 제공자의 레지스트리를 유지하는 통합 프레임워크를 포함하며,
    상기 서비스 제공자는 상기 복수의 하드웨어 센서 및 상기 복수의 앱을 포함하고, 상기 컴퓨터 시스템의 외부에 있는 장치로부터의 복수의 서비스 제공자를 더 포함하며, 상기 레지스트리의 상기 서비스 제공자 각각은 신뢰 레벨 계층 구조의 신뢰 레벨에 연관되어 있으며,
    상기 프로세서는, 상기 통합 프레임워크로 하여금, 서비스에 대한 요청에 응답하여,
    상기 요청된 서비스의 제공자가 발견될 때까지 또는 상기 요청된 서비스의 제공자를 찾지 못하고 상기 계층 구조의 모든 레벨이 검색될 때까지, 신뢰도가 낮은 신뢰 레벨의 서비스 제공자가 검색되기 전에 신뢰도가 높은 신뢰 레벨과 연관된 서비스 제공자가 검색되도록, 상기 신뢰 레벨의 가장 신뢰도가 높은 레벨부터 시작하여, 상기 신뢰 레벨 계층 구조에 따라 상기 요청된 서비스의 제공자를 상기 레지스트리에서 반복적으로 검색하게 하고,
    상기 요청된 서비스의 제공자를 발견하면, 상기 요청에 대한 응답으로 상기 요청된 서비스에게 상기 서비스를 사용자에게 제공하라는 지시를 내리게 하는 명령어를 실행하는
    컴퓨터 시스템.
  17. 제 16 항에 있어서,
    상기 신뢰 레벨 계층 구조의 가장 신뢰도가 높은 신뢰 레벨과 연관된 서비스의 제공자는 상기 컴퓨터 시스템에서 이용 가능한 서비스 제공자이고,
    상기 신뢰 레벨 계층 구조의 두 번째로 신뢰도가 높은 신뢰 레벨과 연관된 서비스의 제공자는 자매 컴퓨터 시스템에서 이용 가능한 서비스 제공자인
    컴퓨터 시스템.
  18. 제 17 항에 있어서,
    상기 컴퓨터 시스템은 상기 사용자와 연관되고,
    상기 신뢰 레벨 계층 구조의 세 번째로 신뢰도가 높은 신뢰 레벨과 연관된 서비스의 제공자는 상기 사용자의 액세스가 허가된 네트워크의 장치에서 이용 가능한 서비스 제공자인
    컴퓨터 시스템.
  19. 제 18 항에 있어서,
    상기 통합 프레임워크는 상기 요청된 서비스가 상기 컴퓨터 시스템에서 이용 가능한 서비스의 제 1 제공자 및 상기 자매 컴퓨터 시스템에서 이용 가능한 서비스의 제 2 제공자로부터 이용 가능한지 결정하도록 구성되며, 또한
    상기 서비스를 상기 제 1 서비스 제공자로부터 얻을지 혹은 상기 제 2 서비스 제공자로부터 얻을지를 하나 이상의 기준에 따라 평가하고,
    상기 하나 이상의 기준에 따라 상기 제 2 서비스 제공자로부터 상기 서비스를 얻는 것으로 결정되면, 상기 제 2 제공자를 상기 요청된 서비스의 상기 발견된 제공자로서 결정하도록 구성되는
    컴퓨터 시스템.
KR1020167030179A 2014-04-30 2015-04-24 서비스의 클라이언트-측 통합 프레임워크 KR102296097B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/265,656 US9560055B2 (en) 2014-04-30 2014-04-30 Client-side integration framework of services
US14/265,656 2014-04-30
PCT/US2015/027406 WO2015167940A1 (en) 2014-04-30 2015-04-24 Client-side integration framework of services

Publications (2)

Publication Number Publication Date
KR20160145633A KR20160145633A (ko) 2016-12-20
KR102296097B1 true KR102296097B1 (ko) 2021-09-01

Family

ID=53059489

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167030179A KR102296097B1 (ko) 2014-04-30 2015-04-24 서비스의 클라이언트-측 통합 프레임워크

Country Status (11)

Country Link
US (2) US9560055B2 (ko)
EP (1) EP3138259B1 (ko)
JP (1) JP6603238B2 (ko)
KR (1) KR102296097B1 (ko)
CN (2) CN106464675B (ko)
AU (2) AU2015253520B2 (ko)
BR (1) BR112016023700A2 (ko)
CA (1) CA2944031C (ko)
MX (1) MX361226B (ko)
RU (1) RU2693637C2 (ko)
WO (1) WO2015167940A1 (ko)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150348126A1 (en) * 2014-05-30 2015-12-03 Transilio, Inc. Personalized user engagement system using operating system notification script
US10673852B2 (en) * 2014-12-23 2020-06-02 Mcafee, Llc Self-organizing trusted networks
US10341384B2 (en) * 2015-07-12 2019-07-02 Avago Technologies International Sales Pte. Limited Network function virtualization security and trust system
CN105827691B (zh) * 2016-03-08 2019-08-13 中国联合网络通信集团有限公司 物联网设备控制方法及装置
US10063666B2 (en) * 2016-06-14 2018-08-28 Futurewei Technologies, Inc. Modular telecommunication edge cloud system
US9998895B1 (en) 2017-06-28 2018-06-12 Motorola Solutions, Inc. Apparatus and method for real-time public safety evidentiary data collection
US9936360B1 (en) 2017-06-28 2018-04-03 Motorola Solutions, Inc. Apparatus and method for real-time public safety evidentiary data collection
US10306341B2 (en) 2017-06-28 2019-05-28 Motorola Solutions, Inc. Method and apparatus for determining sensor data reliability at an incident scene for real-time and post-incident processing
US10871950B2 (en) 2019-05-16 2020-12-22 Microsoft Technology Licensing, Llc Persistent annotation of syntax graphs for code optimization
US11536476B2 (en) 2020-05-12 2022-12-27 Johnson Controls Tyco IP Holdings LLP Building system with flexible facility operation
US11164269B1 (en) 2020-06-25 2021-11-02 Johnson Controls Tyco IP Holdings LLP Systems and methods for dynamic travel planning
WO2022075878A1 (ru) * 2020-10-08 2022-04-14 Общество С Ограниченной Ответственностью "Альбато" Способ реализации приложения встраиваемых приложений
CN112965765B (zh) * 2021-02-02 2024-01-16 深圳市优必选科技股份有限公司 服务调用方法、装置、电子设备及存储介质
CN114979280B (zh) * 2022-05-27 2024-04-19 中国银行股份有限公司 注册中心访问方法及装置
US11880722B2 (en) * 2022-06-22 2024-01-23 Contentful GmbH App actions in a content management system
US20230418969A1 (en) * 2022-06-22 2023-12-28 International Business Machines Corporation Data privacy workload distribution in a multi-tenant hybrid cloud computing environment

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100017853A1 (en) 2008-07-17 2010-01-21 International Business Machines Corporation System and method for selecting a web service from a service registry based on audit and compliance qualities

Family Cites Families (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021403A (en) 1996-07-19 2000-02-01 Microsoft Corporation Intelligent user assistance facility
US6141754A (en) * 1997-11-28 2000-10-31 International Business Machines Corporation Integrated method and system for controlling information access and distribution
US6230313B1 (en) 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
WO2001045005A1 (en) 1999-12-14 2001-06-21 Yodlee.Com, Inc. Method and apparatus for providing intelligent recommendations to users regarding online activities based on knowledge of data from a user's multiple web-services
US7716492B1 (en) 2000-05-09 2010-05-11 Oracle America, Inc. Method and apparatus to obtain service capability credentials
WO2004102417A1 (en) 2003-05-16 2004-11-25 Docomo Communications Laboratories Europe Gmbh Personalized service selection
US20050097087A1 (en) 2003-11-03 2005-05-05 Punaganti Venkata Murali K. System and method for providing a unified framework for service discovery
KR100576935B1 (ko) 2003-12-22 2006-05-10 한국전자통신연구원 온톨로지 기반의 애드혹 서비스 검색 시스템 및 방법
US7664081B2 (en) 2004-12-22 2010-02-16 Nokia Corporation Wireless gateway for enabling wireless devices to discover and interact with various short-range services/devices
US20060235795A1 (en) * 2005-04-19 2006-10-19 Microsoft Corporation Secure network commercial transactions
US8677377B2 (en) 2005-09-08 2014-03-18 Apple Inc. Method and apparatus for building an intelligent automated assistant
US20070083378A1 (en) 2005-10-11 2007-04-12 Microsoft Corporation Secure application programming interface
US7721322B2 (en) * 2005-11-22 2010-05-18 Oracle International Corporation Enterprise service-to-service trust framework
US8131718B2 (en) 2005-12-13 2012-03-06 Muse Green Investments LLC Intelligent data retrieval system
US7613426B2 (en) 2005-12-20 2009-11-03 Microsoft Corporation Proximity service discovery in wireless networks
EP1835417A1 (en) 2006-03-13 2007-09-19 Alcatel Lucent Web service with associated lexical tree
US20070264991A1 (en) 2006-05-15 2007-11-15 Microsoft Corporation Services near me: discovering and connecting to available wireless services utilizing proximity discovery
WO2008014800A1 (en) * 2006-07-31 2008-02-07 Telecom Italia S.P.A. A system for implementing security on telecommunications terminals
US9318108B2 (en) 2010-01-18 2016-04-19 Apple Inc. Intelligent automated assistant
JP2010515338A (ja) 2006-12-28 2010-05-06 テレフオンアクチーボラゲット エル エム エリクソン(パブル) サービス発見のための方法と装置
US8560400B1 (en) 2006-12-28 2013-10-15 Sprint Communications Company L.P. Context-based service delivery
CN101072116B (zh) * 2007-04-28 2011-07-20 华为技术有限公司 业务选择方法、装置、系统及客户端应用服务器
US20080313639A1 (en) 2007-06-13 2008-12-18 Krishna Kumar Policy based scheduling of software applications
AU2008286676A1 (en) 2007-08-16 2009-02-19 Indaran Proprietary Limited Method and apparatus for presenting content
US20090063686A1 (en) 2007-08-30 2009-03-05 Schmidt Brian K Automated service discovery and dynamic connection management
EP2043009A1 (en) 2007-09-28 2009-04-01 Alcatel Lucent Method for building semantic referential gathering semantic service descriptions
US8493888B2 (en) 2007-11-08 2013-07-23 Nokia Corporation Connectivity architecture for service discovery
US7987163B2 (en) 2008-02-12 2011-07-26 Bae Systems Information And Electronic Systems Integration Inc. Apparatus and method for dynamic web service discovery
CN100591015C (zh) * 2008-03-11 2010-02-17 南京邮电大学 基于信任模型的动态访问控制方法
US20100009703A1 (en) 2008-07-14 2010-01-14 Wuiper, Inc. System and method for real world interface to online social networks
US8649776B2 (en) 2009-01-13 2014-02-11 At&T Intellectual Property I, L.P. Systems and methods to provide personal information assistance
US20100281427A1 (en) 2009-04-30 2010-11-04 Riddhiman Ghosh Selecting one of plural user profile personae based on context
US8612435B2 (en) 2009-07-16 2013-12-17 Yahoo! Inc. Activity based users' interests modeling for determining content relevance
US10276170B2 (en) 2010-01-18 2019-04-30 Apple Inc. Intelligent automated assistant
JP5564968B2 (ja) * 2010-02-05 2014-08-06 富士ゼロックス株式会社 情報処理装置及び情報処理プログラム
KR101647567B1 (ko) * 2010-03-05 2016-08-10 인터디지탈 패튼 홀딩스, 인크 장치에 대한 보안을 제공하는 방법 및 장치
US8340651B1 (en) 2010-03-26 2012-12-25 Sprint Communications Company L.P. Reconciling contact information between users
CN101984590A (zh) * 2010-03-29 2011-03-09 北京邮电大学 一种基于信任证书的网格业务资源分配和调度方法
US8316038B2 (en) 2010-06-02 2012-11-20 Hewlett-Packard Development Company, L.P. Collecting and analyzing user activities on mobile computing devices
US8386929B2 (en) 2010-06-22 2013-02-26 Microsoft Corporation Personal assistant for task utilization
WO2012000553A1 (en) 2010-07-01 2012-01-05 Telefonaktiebolaget Lm Ericsson (Publ) Method and arrangement for service sharing
US20120016861A1 (en) * 2010-07-16 2012-01-19 Research In Motion Limited Registration of applications and unified media search
CN101902474B (zh) * 2010-07-21 2012-11-14 清华大学 基于标签替换的自治域间IPv6真实源地址验证方法
US9122744B2 (en) 2010-10-11 2015-09-01 Next It Corporation System and method for providing distributed intelligent assistance
US8478306B2 (en) 2010-11-10 2013-07-02 Google Inc. Self-aware profile switching on a mobile computing device
US10631246B2 (en) 2011-02-14 2020-04-21 Microsoft Technology Licensing, Llc Task switching on mobile devices
AU2011369809B2 (en) * 2011-05-27 2016-03-24 Provenance Asset Group Llc Method and apparatus for sharing connectivity settings via social networks
WO2012166213A1 (en) * 2011-06-03 2012-12-06 Telecommunication Systems, Inc. Crowd-sourced resource selection in a social network
US20120316956A1 (en) 2011-06-07 2012-12-13 Microsoft Corporation Client-Server Joint Personalization for Private Mobile Advertising
US8417233B2 (en) 2011-06-13 2013-04-09 Mercury Mobile, Llc Automated notation techniques implemented via mobile devices and/or computer networks
US20120323794A1 (en) 2011-06-15 2012-12-20 Microsoft Corporation Monetization strategies in privacy-conscious personalization
US9026814B2 (en) 2011-06-17 2015-05-05 Microsoft Technology Licensing, Llc Power and load management based on contextual information
US8838072B2 (en) 2011-08-11 2014-09-16 Samsung Electronics Co., Ltd. Apparatus and method for mobile personal assistant
US20130080184A1 (en) 2011-09-23 2013-03-28 Alliance Health Networks, Inc. Managing healthcare information for members of a social network
US9100453B2 (en) * 2011-10-08 2015-08-04 Broadcom Corporation Social device security in a social network
US20130159377A1 (en) 2011-12-15 2013-06-20 AsystMe, LLC Proactive automated personal assistant
US8718726B2 (en) 2012-03-16 2014-05-06 Apple Inc. Methods and apparatus for reducing call drop rate
US20140033204A1 (en) 2012-07-26 2014-01-30 Qnx Software Systems Limited Background Services Launcher For Dynamic Service Provisioning
US20140040171A1 (en) 2012-07-31 2014-02-06 Triapodi Ltd Content-based demographic estimation of users of mobile devices and usage thereof
US9495537B2 (en) 2012-08-15 2016-11-15 Qualcomm Incorporated Adaptive observation of behavioral features on a mobile device
US9576574B2 (en) 2012-09-10 2017-02-21 Apple Inc. Context-sensitive handling of interruptions by intelligent digital assistant
US20140108307A1 (en) 2012-10-12 2014-04-17 Wipro Limited Methods and systems for providing personalized and context-aware suggestions
CA2890073A1 (en) * 2012-11-01 2014-05-08 Wyngspan, Inc. Systems and methods of establishing and measuring trust relationships in a community of online users
US9354790B2 (en) 2013-01-14 2016-05-31 International Business Machines Corporation Dynamically selecting and ordering facets and facet values in a user interface based on user preference
US20140236935A1 (en) * 2013-02-20 2014-08-21 Thursday Market, Inc. Service Provider Matching
US11061973B2 (en) 2013-06-14 2021-07-13 Microsoft Technology Licensing, Llc Incorporating user usage of consumable content into recommendations

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100017853A1 (en) 2008-07-17 2010-01-21 International Business Machines Corporation System and method for selecting a web service from a service registry based on audit and compliance qualities

Also Published As

Publication number Publication date
RU2016142285A3 (ko) 2018-11-06
US9560055B2 (en) 2017-01-31
CN106464675A (zh) 2017-02-22
US20170099298A1 (en) 2017-04-06
CN106464675B (zh) 2019-11-12
CN110753046A (zh) 2020-02-04
AU2019201885B2 (en) 2020-07-02
BR112016023700A2 (pt) 2017-08-15
US20150319176A1 (en) 2015-11-05
EP3138259A1 (en) 2017-03-08
CN110753046B (zh) 2021-11-30
AU2015253520A1 (en) 2016-10-06
KR20160145633A (ko) 2016-12-20
AU2015253520B2 (en) 2018-12-20
RU2693637C2 (ru) 2019-07-03
EP3138259B1 (en) 2018-01-31
US9781128B2 (en) 2017-10-03
RU2016142285A (ru) 2018-04-27
CA2944031A1 (en) 2015-11-05
MX2016014093A (es) 2017-02-09
WO2015167940A1 (en) 2015-11-05
JP2017520035A (ja) 2017-07-20
CA2944031C (en) 2023-08-01
AU2019201885A1 (en) 2019-04-11
MX361226B (es) 2018-11-29
JP6603238B2 (ja) 2019-11-06

Similar Documents

Publication Publication Date Title
KR102296097B1 (ko) 서비스의 클라이언트-측 통합 프레임워크
KR102267270B1 (ko) 인센티브 기반 앱 실행 기법
KR102271786B1 (ko) 개인 데몬의 훈련 가속화
US9842228B2 (en) Local personal daemon
US10075508B2 (en) Application-centric socialization
US20150373144A1 (en) Personal Daemon Interaction through Escalating Disclosure

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant