KR101642713B1 - 디바이스간 원격 프로시저 호출 방법 - Google Patents

디바이스간 원격 프로시저 호출 방법 Download PDF

Info

Publication number
KR101642713B1
KR101642713B1 KR1020140192370A KR20140192370A KR101642713B1 KR 101642713 B1 KR101642713 B1 KR 101642713B1 KR 1020140192370 A KR1020140192370 A KR 1020140192370A KR 20140192370 A KR20140192370 A KR 20140192370A KR 101642713 B1 KR101642713 B1 KR 101642713B1
Authority
KR
South Korea
Prior art keywords
binder
remote
service
reference information
android
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
KR1020140192370A
Other languages
English (en)
Other versions
KR20160080487A (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 서강대학교산학협력단
Priority to KR1020140192370A priority Critical patent/KR101642713B1/ko
Publication of KR20160080487A publication Critical patent/KR20160080487A/ko
Application granted granted Critical
Publication of KR101642713B1 publication Critical patent/KR101642713B1/ko
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 발명은 디바이스간 원격 프로시저 호출 방법에 관한 것으로서, 보다 바람직하게는 복수 개의 디바이스 중 임의의 제1 디바이스가 다른 제2 디바이스에서 제공하는 서비스에 접근하기 위해 서로 다른 디바이스간에 원격 프로시저(Remote Procedure)를 호출하는 방법에 있어서, 상기 제1 디바이스 내 존재하는 원격 바인더가 상기 제2 디바이스에서 제공하는 서비스 중 접근하고자 하는 서비스를 검색하는 단계; 상기 제2 디바이스 내 존재하는 원격 바인더가 검색된 상기 서비스에 대한 바인더 참조 정보를 생성하는 단계; 상기 제2 디바이스 내 원격 바인더가 생성한 상기 바인더 참조 정보를 추출하여 상기 제1 디바이스 내 원격 바인더로 전달하는 단계; 및 상기 제1 디바이스 내 원격 바인더가 수신한 상기 바인더 참조 정보에 기초하여 상기 제2 디바이스가 제공하는 서비스를 호출하는 단계;를 포함하는 것을 특징으로 한다.
이러한 구성을 통해, 본 발명의 디바이스간 원격 프로시저 호출 방법은 안드로이드 애플리케이션의 수정없이도 다른 디바이스에서 제공하는 시스템 서비스 및 서비스 내 프로시저를 로컬 디바이스 내 존재하는 것처럼 용이하게 호출할 수 있는 효과가 있다.

Description

디바이스간 원격 프로시저 호출 방법{Remote procedure calling method between different devices}
본 발명은 디바이스간 원격 프로시저 호출 방법에 관한 것으로, 특히 안드로이드 애플리케이션을 수정하지 않고도 다른 디바이스의 시스템 서비스 및 서비스 내 프로시저를 호출할 수 있는 디바이스간 원격 프로시저 호출 방법에 관한 것이다.
사물 인터넷이란 인터넷을 기반으로 모든 사물을 연결하여 사람과 사물, 사물과 사물 간의 정보를 상호 소통하는 지능형 기술 및 서비스를 말한다. 2014년 10대 전략 기술 중 하나로 사물인터넷을 꼽은 가트너에 따르면 전 세계적으로 500억 개의 기기가 연결될 것으로 전망되고 있다. 또한 2020년 세계 사물인터넷 시장 규모는 2013년 대한민국의 GDP인 약 1조 2000억 달러보다 더 큰 1조 9000억 달러(약 2,033조원)로 성장할 예정이다. 이러한 성장 추세를 반영하듯, 최근 임베디드 디바이스들이 일상화되고 그 종류 또한 다양해지고 있다. 스마트폰이나 태블릿 이외에도 스마트 시계, 스마트 안경 등의 웨어러블 디바이스가 등장했고, 가전 및 차량 등도 소프트웨어를 탑재한 임베디드 디바이스로 변화하고 있다.
2014년도를 기준으로 임베디드 디바이스를 대표할 수 있는 스마트폰의 플랫폼들 중 가장 보편적인 것은 시장 점유율 84.7%를 보유한 안드로이드이며 향후 다양한 종류의 임베디드 디바이스를 구동하는 플랫폼으로 각광받고 있다.
실제로 안드로이드는 스마트폰, 태블릿뿐만 아니라 스마트 안경의 어플리케이션을 개발할 수 있는 SDK를 공개하면서 웨어러블 디바이스까지 그 영역을 확장하였다.
사물 인터넷의 성장으로 안드로이드가 탑재된 임베디드 디바이스가 증가함에 따라, 다수의 디바이스들이 서로 연결되고 협력하여 동작할 수 있는 환경에 대한 필요성이 증대되고 있다. 이러한 환경에서는 네트워크를 통하여 다른 디바이스에 대한 정보를 얻거나, 원격 제어를 위해 다른 디바이스 내 정의된 프로시저를 호출할 수 있는 기능 등이 제공되어야 한다.
현재의 안드로이드 플랫폼은 커널 레벨의 바인더 드라이버를 통해 단일 디바이스 내의 프로세스 간 프로시저 호출(프로세스 간의 RPC)을 제공하고 있다. 안드로이드 내의 서비스들은 각각 바인더 노드를 가지고 있으며, 해당 서비스를 호출하고자 하는 클라이언트는 바인더 노드를 참조하여 서비스를 호출한다. 시스템 서비스 외에도 응용프로그램에서 정의한 서비스와 같이 바인더를 사용하는 모든 서비스들은 바인더 노드를 가지고 있기 때문에 이 바인더 노드를 참조하여 대부분의 서비스를 접근할 수 있다.
하지만, 단일 디바이스 내에서 프로세스간 프로시저를 호출하는 것이 아닌, 서로 다른 디바이스 간에 프로시저를 원격 호출할 수 있는 방법(디바이스 간의 RPC)은 제공되지 않는 문제점이 발생했다.
KR 10-2013-0041540(코루틴을 이용하여 원격 프로시저 호출 서비스를 제공하는 방법 및 장치, 엔에이치엔(주)), 2013.04.25.
상기와 같은 종래 기술의 문제점을 해결하기 위해, 본 발명은 안드로이드 애플리케이션을 수정하지 않고도 다른 디바이스의 시스템 서비스 및 서비스 내 프로시저를 호출할 수 있는 디바이스간 원격 프로시저 호출 방법을 제공하고자 한다.
위와 같은 과제를 해결하기 위한 본 발명의 한 실시 예에 따른 디바이스간 원격 프로시저 호출 방법은 복수 개의 디바이스 중 임의의 제1 디바이스가 다른 제2 디바이스에서 제공하는 서비스에 접근하기 위해 서로 다른 디바이스간에 원격 프로시저(Remote Procedure)를 호출하는 방법에 있어서, 상기 제1 디바이스 내 존재하는 원격 바인더가 상기 제2 디바이스에서 제공하는 서비스 중 접근하고자 하는 서비스를 검색하는 단계; 상기 제2 디바이스 내 존재하는 원격 바인더가 검색된 상기 서비스에 대한 바인더 참조 정보를 생성하는 단계; 상기 제2 디바이스 내 원격 바인더가 생성한 상기 바인더 참조 정보를 추출하여 상기 제1 디바이스 내 원격 바인더로 전달하는 단계; 및 상기 제1 디바이스 내 원격 바인더가 수신한 상기 바인더 참조 정보에 기초하여 상기 제2 디바이스가 제공하는 서비스를 호출하는 단계;를 포함하는 것을 특징으로 한다.
특히, 상기 제1 디바이스가 접근하고자 하는 서비스를 제공하는 상기 제2 디바이스의 IP 주소, 포트 번호, 상기 서비스의 식별자 ID 정보 중 적어도 하나를 포함하는 바인더 참조 정보를 포함할 수 있다.
특히, 상기 서비스에 대응되는 제2 디바이스 내 바인더 참조 노드의 ID 정보인 서비스의 식별자 ID 정보를 포함할 수 있다.
보다 바람직하게는 상기 제1 디바이스 내 존재하는 원격 바인더가 상기 제2 디바이스 내 존재하는 안드로이드 시스템을 통해 접근하고자 하는 서비스를 검색하는 단계를 포함할 수 있다.
특히, 상기 제2 디바이스의 원격 바인더 내 존재하는 안드로이드 프로시저 매니저가 상기 제2 디바이스 내 안드로이드 시스템과 상기 제2 디바이스의 원격 바인더간에 인터페이스를 제공함으로써, 제1 디바이스 내 존재하는 원격 바인더가 접근하고자 하는 서비스를 검색하는 단계를 포함할 수 있다.
보다 바람직하게는 상기 안드로이드 시스템에 등록된 복수 개의 서비스들 중 해당 서비스를 제공하는 제2 디바이스의 내부에서만 사용되는 객체를 필요로 하는 경우, 해당 서비스를 제공하는 제2 디바이스의 원격 바인더 내 서비스 매니저에 미리 등록함으로써, 제1 디바이스 내 존재하는 원격 바인더가 접근하고자 하는 서비스를 검색하는 단계를 포함할 수 있다.
특히, 상기 제2 디바이스 내 원격 바인더가 상기 제2 디바이스가 제공하는 서비스별로 각각 존재하는 바인더 참조 노드로부터 바인더 참조 정보를 추출하여 상기 제1 디바이스 내 원격 바인더로 전달하는 단계를 포함할 수 있다.
특히, 상기 서비스 식별자 ID 정보를 이용하여 상기 제2 디바이스가 제공하는 서비스를 호출하는 제1 디바이스 내 원격 바인더가 수신한 상기 바인더 참조 정보에 기초하여 상기 제2 디바이스가 제공하는 서비스를 호출하는 단계를 포함할 수 있다.
본 발명의 디바이스간 원격 프로시저 호출 방법은 안드로이드 애플리케이션의 수정없이도 다른 디바이스에서 제공하는 시스템 서비스 및 서비스 내 프로시저를 로컬 디바이스 내 존재하는 것처럼 용이하게 호출할 수 있는 효과가 있다.
또한 본 발명의 디바이스간 원격 프로시저 호출 방법은 intent를 사용해 액티비티와 서비스를 실행하지 않고, intent 대신에 확장된 Parcel과 바인더 노드를 참조하여 intent로는 호출할 수 없는 안드로이드 시스템 서비스 및 서비스 내 프로시저를 용이하게 호출할 수 있는 효과가 있다.
도 1은 본 발명의 디바이스간 원격 프로시저를 호출하는 방법을 나타낸 블록도이다.
도 2는 본 발명의 일 실시 예에 따른 디바이스간 원격 프로시저 호출 방법을 나타낸 순서도이다.
도 3은 안드로이드 시스템을 통한 서비스 검색과정을 나타낸 흐름도이다.
도 4는 원격 바인더 내 서비스 매니절르 통한 서비스 등록 및 검색과정을 나타낸 흐름도이다.
도 5는 안드로이드 바인더 구조를 나타낸 도면이다.
도 6은 서비스 호출 코드를 나타낸 도면이다.
도 7은 시스템 서비스 호출을 나타낸 도면이다.
도 8은 데이터 크기에 따른 전송 시간을 나타낸 그래프이다.
이하, 본 발명을 바람직한 실시 예와 첨부한 도면을 참고로 하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며, 여기에서 설명하는 실시 예에 한정되는 것은 아니다.
본 발명이 적용되는 원격 바인더는 이식성(portability)을 고려하여 응용프로그램으로 설계한다. 리눅스 커널 내부의 바인더 IPC 드라이버를 수정하는 방법은 기존의 안드로이드 디바이스들에 새로운 안드로이드 플랫폼을 설치가 필요하기 때문에 배제하였고, 따라서 디바이스에서 원격 바인더를 설치하여도 기존의 플랫폼 및 어플리케이션의 수정 없이도 원격 호출을 수행할 수 있다. 원격 바인더는 안드로이드 IPC 메커니즘인 바인더를 디바이스 간의 통신에서 사용할 수 있도록 확장하였다.
도 1은 원격 바인더의 세부 구조를 나타낸 블록도이다.
도 1에 도시된 바와 같이, 원격 바인더에서는 한 디바이스의 클라이언트가 다른 디바이스에 존재하는 서비스를 원격으로 호출하는 과정을 확인할 수 있는데, 이를 통해 한 디바이스의 클라이언트가 다른 디바이스에 있는 프로시저를 로컬 디바이스의 프로시저처럼 호출할 수 있다.
이하, 도 2를 참조하여 복수 개의 디바이스 중 임의의 제1 디바이스가 다른 제2 디바이스에서 제공하는 서비스에 접근하기 위해 서로 다른 디바이스간에 원격 프로시저(Remote Procedure)를 호출하는 방법에 대하여 자세히 살펴보도록 한다.
도 2는 본 발명의 일 실시 예에 따른 디바이스간 원격 프로시저 호출 방법을 나타낸 순서도이다.
도 2에 도시된 바와 같이, 본 발명의 디바이스간 원격 프로시저 호출 방법은 먼저, 복수 개의 임의의 디바이스 중 임의의 제1 디바이스 내 존재하는 원격 바인더가 상기 제2 디바이스에서 제공하는 서비스 중 접근하고자 하는 서비스를 검색한다(S210).
이러한 상기 제1 디바이스 내 존재하는 원격 바인더가 상기 제2 디바이스 내 존재하는 안드로이드 시스템을 통해 접근하고자 하는 서비스를 검색할 수 있다. 즉, 안드로이드에서 제공하는 모든 서비스는 안드로이드 시스템에 등록되어 있기 때문에, 상기 안드로이드 시스템으로부터 접근하고자 하는 서비스를 용이하게 검색할 수 있다.
이때, 상기 제2 디바이스의 원격 바인더 내 존재하는 안드로이드 프로시저 매니저가 상기 제2 디바이스 내 안드로이드 시스템과 상기 제2 디바이스의 원격 바인더간에 인터페이스를 제공할 수 있다.
이때 만약, 상기 안드로이드 시스템에 등록된 복수 개의 서비스들 중 해당 서비스를 제공하는 제2 디바이스의 내부에서만 사용되는 객체를 필요로 하는 경우, 해당 서비스를 제공하는 제2 디바이스의 원격 바인더 내 서비스 매니저에 미리 등록할 수 있다.
이후, 상기 제2 디바이스 내 존재하는 원격 바인더가 검색된 상기 서비스에 대한 바인더 참조 정보를 생성한다(S220). 특히, 상기 바인더 참조 정보는 상기 제1 디바이스가 접근하고자 하는 서비스를 제공하는 상기 제2 디바이스의 IP 주소, 포트 번호, 상기 서비스의 식별자 ID 정보 중 적어도 하나를 포함할 수 있다. 이때, 상기 서비스의 식별자 ID 정보는 상기 서비스에 대응되는 제2 디바이스 내 바인더 참조 노드의 ID 정보이다.
이에 따라, 상기 제2 디바이스 내 원격 바인더의 바인더 추출기가 생성한 상기 바인더 참조 정보를 추출하여 상기 제1 디바이스 내 원격 바인더로 전달한다(S230). 이때, 상기 제2 디바이스 내 원격 바인더가 상기 제2 디바이스가 제공하는 서비스별로 각각 존재하는 바인더 참조 노드로부터 바인더 참조 정보를 추출하여 상기 제1 디바이스 내 원격 바인더로 전달할 수 있다.
이후, 상기 제1 디바이스 내 원격 바인더가 수신한 상기 바인더 참조 정보에 기초하여 상기 제2 디바이스가 제공하는 서비스를 호출한다(S240). 즉, 상기 제1 디바이스 내 원격 바인더가 수신한 상기 바인더 참조 정보 중 서비스 식별자 ID 정보를 이용하여 상기 제2 디바이스가 제공하는 서비스를 호출할 수 있다.
이처럼 상술한 복수 개의 서로 다른 디바이스가 제공하는 서비스에 접근하기 위해서는 서비스의 등록 및 검색이 수행되어야 한다. 원격 바인더는 디바이스 내에 존재하는 모든 서비스를 외부 디바이스에서 접근할 수 있도록 안드로이드 시스템 또는 원격 바인더 서비스 매니저를 통한 서비스 검색 방법을 제공한다. 검색이 완료된 서비스들은 외부 디바이스에서 참조할 수 있도록 서비스의 참조 정보를 생성하는데, 상기 서비스의 참조 정보는 서비스가 존재하는 디바이스의 IP와 포트 번호, 그리고 서비스의 식별자 ID에 대한 정보 등의 세 가지로 구성될 수 있다.
이하, 도 3 내지 도 5를 참조하여, 본 발명의 디바이스간 원격 프로시저 호출 방법에 대하여 보다 자세히 살펴보도록 한다.
도 3은 안드로이드 시스템을 통한 서비스 검색과정을 나타낸 흐름도이다.
도 3에 도시된 바와 같이, 복수 개의 서로 다른 디바이스 중 임의의 제1 디바이스의 애플리케이션이 상기 제1 디바이스의 원격 바인더로 서비스 검색을 요청한다. 이에 따라, 상기 제1 디바이스의 원격 바인더가 요청 받은 서비스를 제공하는 임의의 제2 디바이스의 원격 바인더로 서비스 검색 메시지를 전송하면, 상기 제2 디바이스의 원격 바인더가 상기 제2 디바이스의 안드로이드 시스템에 해당 서비스를 검색한다. 이에 따라, 상기 제2 디바이스의 안드로이드 시스템이 해당 서비스를 검색하면, 검색한 서비스를 상기 제2 디바이스의 원격 바인더로 전송한다.
이후, 상기 제2 디바이스의 원격 바인더가 검색된 상기 서비스에 대한 바인더 참조 정보를 생성한 후, 생성한 상기 서비스에 대한 바인더 참조 정보를 상기 제1 디바이스의 원격 바인더로 전송한다. 이에 따라, 상기 제1 디바이스의 원격 바인더가 수신한 상기 서비스에 대한 바인더 참조 정보를 상기 제1 디바이스의 애플리케이션으로 전송한다.
이후, 상기 제1 디바이스의 애플리케이션이 상기 서비스에 대한 바인더 참조 정보의 수신에 따른 응답 메시지를 상기 제1 디바이스의 원격 바인더로 전송하면, 상기 제1 디바이스의 원격 바인더가 상기 제2 디바이스의 원격 바인더로 응답 메시지를 전송하고, 이어서, 상기 제2 디바이스의 원격 바인더가 상기 제2 디바이스의 안드로이드 시스템 서비스로 수신한 응답 메시지를 전송한다.
이에 따라, 상기 제2 디바이스의 안드로이드 시스템 서비스는 해당 서비스를 실행한다.
이때, 안드로이드 시스템을 통한 서비스 검색 안드로이드 내 모든 서비스는 안드로이드 시스템에 등록이 되어 있기 때문에 대부분의 서비스는 따로 등록할 필요없이 안드로이드 시스템으로부터 검색할 수 있다.
원격 바인더가 안드로이드 시스템에 접근하기 위해서, 안드로이드 프로시저 관리자(Android Procedure Manager)가 원격 바인더와 안드로이드 시스템 사이의 인터페이스를 제공하는 역할을 한다. 그러나 이렇게 검색된 서비스는 다른 디바이스로 전달할 수 없는 형태이므로, 서비스의 식별자 ID를 서비스에 대응되는 바인더 참조 노드의 정보를 사용해 생성하여 이를 외부의 다른 디바이스로 전달한다. 또한, 바인더 추출기(Binder Extractor)를 사용하여, 서비스에 대응되는 바인더 참조 노드를 얻는다.
도 4는 원격 바인더 내 서비스 매니저를 통한 서비스 등록 및 검색과정을 나타낸 흐름도이다.
도 4에 도시된 바와 같이, 서비스를 제공하는 제2 디바이스의 애플리케이션이 상기 제2 디바이스의 원격 바인더에 서비스를 미리 등록하면, 상기 제2 디바이스의 원격 바인더가 등록된 서비스를 저장한다. 이후, 서비스에 접근하고자 하는 제1 디바이스의 애플리케이션이 상기 제1 디바이스의 원격 바인더에 서비스 검색을 요청하면, 상기 제1 디바이스의 원격 바인더가 상기 제2 디바이스의 원격 바인더로 서비스 검색 요청 메시지를 전송한다. 이에 따라, 상기 제2 디바이스의 원격 바인더가 해당 서비스를 검색한 후, 검색한 해당 서비스에 대한 바인더 참조 정보를 생성하여, 생성한 상기 서비스에 대한 바인더 참조 정보를 상기 제1 디바이스의 원격 바인더로 전송한다.
이후, 상기 제1 디바이스의 원격 바인더가 수신한 상기 서비스에 대한 바인더 참조 정보를 상기 제1 디바이스의 애플리케이션으로 전송하면, 상기 제1 디바이스의 애플리케이션이 상기 서비스에 대한 바인더 참조 정보를 수신하고, 이에 대한 응답 메시지를 상기 제1 디바이스의 원격 바인더로 전송한다.
이후, 상기 제1 디바이스의 원격 바인더가 상기 제2 디바이스의 원격 바인더로 응답 메시지를 전송하면, 상기 제2 디바이스의 원격 바인더가 상기 서비스에 대한 바인더 참조 정보에 기초하여 해당 서비스를 검색하고, 검색 후 응답 메시지를 상기 제2 디바이스의 애플리케이션으로 전송하면, 상기 제2 디바이스의 애플리케이션이 해당하는 서비스를 실행한다.
상술한 바와 같이, 안드로이드 시스템에 등록된 서비스들 중 디바이스 내부에서만 사용할 수 있는 객체를 필요로 하는 경우에는 안드로이드 시스템을 통한 검색이 불가능하다. 따라서, 사용하고자 하는 서비스들을 원격 바인더 내부의 서비스 매니저에 사전 등록하고 서비스의 식별자 ID 정보를 생성하여 검색하는 방법을 제공한다. 이러한 경우에는 서비스가 필요로 하는 객체를 방법의 객체로 대체할 수 있기 때문에 외부 디바이스에서 해당 서비스를 호출할 수 있다.
또한, 안드로이드 시스템을 통해 검색한 서비스는 실제로 서비스를 참조하는 클라이언트 프록시이며, 다른 디바이스로 전달할 수 없는 객체이다. 따라서 다른 디바이스로 전달할 수 있는 형태로의 변환되어야 하는데, 이때 사용되는 형태가 도 5에 도시된 각 서비스마다 가지고 있는 바인더 참조 노드의 정보이다. 디바이스 내 각 서비스 당 존재하는 바인더 참조 노드 정보를 추출하여 외부 디바이스로 전달해 서비스에 접근할 수 있도록 한다.
또한, 원격 바인더는 바인더 드라이버 내부의 바인더 참조 노드에 접근해 정보를 추출하는 바인더 추출기를 포함한다.
이에 따라, 단일 디바이스 상에서 클라이언트 프로세스가 특정 서비스를 바인더 참조 노드를 통해 호출하듯이, 다른 디바이스의 특정 서비스에 대한 바인더 참조 노드 정보를 통해 디바이스간 원격 프로시저 호출이 가능하도록 한다. 특히, 서비스를 호출하는 클라이언트는 BinderProxy 클래스로 표현되며, 바인더 드라이버 내부의 BpBinder 클래스의 참조를 가지고 있다. BpBinder에는 클라이언트가 서비스를 제공하는 서버에 접근하기 위해 사용되는 정수형 값인 handle이 존재한다. 바로 이 handle 값이 바인더 참조 노드의 ID 값이 되고, 이를 서비스 식별자 ID로 사용한다. 바인더 추출기는 바인더 참조 노드의 ID를 추출하여 원격 바인더에 알려주고, 원격 바인더는 이를 서비스 식별자 ID로 사용해 외부 디바이스의 서비스를 호출할 수 있는 환경을 제공한다.
또한, 안드로이드는 단일 디바이스 내의 프로세스 간 프로시저 호출을 위해 필요한 인터페이스를 AIDL(Android Interface Description Language)로 기술한다. AIDL 도구를 사용하여 프로세스들 간 RPC에 필요한 프록시와 스텁을 생성한다. 프록시와 스텁은 데이터를 바인더(IPC)에서 전달될 수 있는 메시지 형태인 Parcel로 변환하고 이를 전송하는 코드로 구성되어 있다. 원격 바인더에서는 이 AIDL을 확장하여 디바이스 간 RPC를 위해 사용되는 새로운 인터페이스를 제공한다.
이하에서는, 본 발명의 디바이스간 원격 프로시저 호출 방법에 대한 성능을 평가해보도록 한다.
먼저, 종래기술과 비교하여 개선된 원격 바인더에 대하여 살펴보도록 한다.
첫째, 종래기술에는 intent를 네트워크를 통해 전달하여 사용하는 방법이어서 불편함이 있었으나, 본 발명에 따른 원격 바인더는 내부 디바이스에서 intent를 사용하는 것처럼 간단하게 사용이 가능하다.
둘째, 종래기술에서는 intent를 확장해 사용하는 것이기에 여러 가지 데이터 형식을 파라미터로 하는 시스템 서비스나 서비스 내 프로시저를 호출하는 것에 한계가 있었는데, 본 발명의 원격 바인더는 전달하는 데이터 형식이 parcel이기 때문에 제한이 없어 진정한 의미의 안드로이드 원격 호출을 구현했다고 볼 수 있다.
셋째, IPC 내 데이터 전송 형식인 parcel을 사용했기 때문에 객체형식변환(marshall) 또는 객체형식재변환(unmarshall)의 과정없이 전송받은 데이터를 IPC 내에서 바로 사용 가능하므로, 서비스 호출 속도가 빠르다.
이하에서는 상술한 세 가지의 개선점에 중점을 둔 성능 평가를 살펴보도록 한다.
이러한 성능 평가 실험을 위해, 원격 바인더 프로토 타입을 구현하였으며 두 대의 안드로이드 디바이스를 사용한다. 안드로이드 디바이스는 Nexus 4(안드로이드 4.2.1)와 LG Optimus Gpro(안드로이드 4.4.2)를 사용하고, Nexus 4는 안드로이드 레퍼런스 모델로 안드로이드의 일반적인 기능을 제공하며 평가에서는 서비스를 제공하는 서버의 역할을 하도록 구성한다.
종래의 연구들을 살펴보면, intent를 네트워크로 전달하여 다른 디바이스의 서비스를 호출한다. 예를 들어, intent 아이디와 데이터로 구성된 int 어레이를 소켓으로 상대편 디바이스로 전송해 구현한다. 반면, 원격 바인더에서는 자신의 액티비티(activity)를 호출할 때와 다른 디바이스의 액티비티를 호출할 때의 코드를 도 6에 도시된 내용과 동일한 방법으로 자신과 다른 디바이스의 서비스를 호출한다.
또한, 안드로이드에서는 시스템의 정보나 기능을 제공해주는 와이파이 정보 제공 기능, 알람 기능과 같은 복수 개의 시스템 서비스가 존재한다. 이 시스템 서비스들은 다양한 데이터 형식을 필요로 하는 함수들로 구성되어 있으므로 intent를 통해 호출할 수 없다. 따라서 종래 기술에서는 제시한 확장된 intent를 통한 원격 서비스 호출 방법은 시스템 서비스를 호출할 수 없는 한계점이 있었다.
하지만 이와 달리, 본 발명의 원격 바인더는 상술한 서비스 등록 및 검색 방법을 통해 얻은 서비스 리스트를 가지고 대상 디바이스에서 실행시키고 싶은 서비스에 필요한 다양한 형식의 데이터들을 parcel 형식으로 대상 디바이스로 전송한다.
도 7은 시스템 서비스 호출을 나타낸 도면으로서, 특정 IP를 가진 디바이스의 와이파이 정보를 얻고 제어하는 화면을 나타낸다.
도 7에 도시된 바와 같이, 시스템 서비스들은 모두 다른 프로세스에 존재하므로, IPC를 사용해야하기 때문에 상기 대상 디바이스는 수신한 데이터들을 IPC를 통해 시스템 서비스에 전달한다.
도 8은 데이터 크기에 따른 전송 시간을 나타낸 그래프이다.
종래 기술의 데이터 크기에 따른 전송 시간(Distributed Intent(5))은 HTTP 프로토콜을 사용하여 JSON 형태로 변환된 데이터를 전송하므로, HTTP 오버헤드가 발생하고 JSON 형태로의 변환에서 정돈과 비정돈으로 인한 시간이 소요된다. 하지만, 안드로이드의 메인 플랫폼 시장 점유율이 84.7% (미국 시장조사업체 IDC 조사 결과 2014년 2분기 기준)인 것을 고려할 때, 비안드로이드 디바이스와의 연동을 위한 JSON 데이터로의 변환은 비효율적이라고 할 수 있다.
하지만 본 발명에 따른 원격 바인더는 소켓을 사용하여 안드로이드 디바이스 간 빠른 데이터 전송을 위해 parcel 데이터 형식을 사용함으로써 오버헤드를 줄여 상술한 종래기술에 비해 높은 성능을 갖는다. 종래 기술의 경우, 데이터의 크기가 증가할수록 JSON으로 변환된 데이터의 크기도 증가하며 객체형식변환(marshall)과 객체형식재변환(unmarshall)의 시간도 크게 증가하기 때문에 전체 전송시간이 크게 증가하는 것을 볼 수 있다. 하지만 이와 반면에, 본 발명의 원격 바인더는 데이터의 크기에 따라 고르게 시간이 소요되었고, 종래기술보다 100KB 전송 시에는 전송시간이 약 4.5 배 향상되는 것을 알 수 있다.
또한, 이러한 디바이스간 원격 프로시저 호출 방법은 컴퓨터로 실행하기 위한 프로그램이 기록된 컴퓨터 판독가능 기록매체에 저장될 수 있다. 이때, 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록 장치를 포함한다. 컴퓨터가 읽을 수 있는 기록 장치의 예로는 ROM, RAM, CD-ROM, DVD±ROM, DVD-RAM, 자기 테이프, 플로피 디스크, 하드 디스크(hard disk), 광데이터 저장장치 등이 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 장치에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
본 발명의 디바이스간 원격 프로시저 호출 방법은 안드로이드 애플리케이션의 수정없이도 다른 디바이스에서 제공하는 시스템 서비스 및 서비스 내 프로시저를 로컬 디바이스 내 존재하는 것처럼 용이하게 호출할 수 있는 효과가 있다.
또한 본 발명의 디바이스간 원격 프로시저 호출 방법은 intent를 사용해 액티비티와 서비스를 실행하지 않고, intent 대신에 확장된 Parcel과 바인더 노드를 참조하여 intent로는 호출할 수 없는 안드로이드 시스템 서비스 및 서비스 내 프로시저를 용이하게 호출할 수 있는 효과가 있다.
상기에서는 본 발명의 바람직한 실시 예에 대하여 설명하였지만, 본 발명은 이에 한정되는 것이 아니고 본 발명의 기술 사상 범위 내에서 여러 가지로 변형하여 실시하는 것이 가능하고 이 또한 첨부된 특허청구범위에 속하는 것은 당연하다.

Claims (9)

  1. 복수 개의 디바이스 중 임의의 제1 디바이스가 다른 제2 디바이스에서 제공하는 서비스에 접근하기 위해 서로 다른 디바이스간에 원격 프로시저(Remote Procedure)를 호출하는 방법에 있어서,
    상기 제1 디바이스 내 존재하는 원격 바인더가 상기 제2 디바이스에서 제공하는 서비스 중 접근하고자 하는 서비스를 검색하는 단계;
    상기 제2 디바이스 내 존재하는 원격 바인더가 검색된 상기 서비스에 대한 바인더 참조 정보를 생성하는 단계;
    상기 제2 디바이스 내 원격 바인더가 생성한 상기 바인더 참조 정보를 추출하여 상기 제1 디바이스 내 원격 바인더로 전달하는 단계; 및
    상기 제1 디바이스 내 원격 바인더가 수신한 상기 바인더 참조 정보에 기초하여 상기 제2 디바이스가 제공하는 서비스를 호출하는 단계;
    를 포함하고,
    상기 제1 디바이스 내 존재하는 원격 바인더가 접근하고자 하는 서비스를 검색하는 단계는,
    상기 제1 디바이스 내 존재하는 원격 바인더가 상기 제2 디바이스 내 존재하는 안드로이드 시스템을 통해 접근하고자 하는 서비스를 검색하며, 상기 안드로이드 시스템에 등록된 복수 개의 서비스들 중 해당 서비스를 제공하는 제2 디바이스의 내부에서만 사용되는 객체를 필요로 하는 경우, 해당 서비스를 제공하는 제2 디바이스의 원격 바인더 내 서비스 매니저에 미리 등록하는 것을 특징으로 하는 디바이스간 원격 프로시저 호출 방법.
  2. 제1항에 있어서,
    상기 바인더 참조 정보는
    상기 제1 디바이스가 접근하고자 하는 서비스를 제공하는 상기 제2 디바이스의 IP 주소, 포트 번호, 상기 서비스의 식별자 ID 정보 중 적어도 하나를 포함하는 것을 특징으로 하는 디바이스간 원격 프로시저 호출 방법.
  3. 제2항에 있어서,
    상기 서비스의 식별자 ID 정보는
    상기 서비스에 대응되는 제2 디바이스 내 바인더 참조 노드의 ID 정보인 것을 특징으로 하는 디바이스간 원격 프로시저 호출 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 제1 디바이스 내 존재하는 원격 바인더가 접근하고자 하는 서비스를 검색하는 단계는
    상기 제2 디바이스의 원격 바인더 내 존재하는 안드로이드 프로시저 매니저가 상기 제2 디바이스 내 안드로이드 시스템과 상기 제2 디바이스의 원격 바인더간에 인터페이스를 제공하는 것을 특징으로 하는 디바이스간 원격 프로시저 호출 방법.
  6. 삭제
  7. 제1항에 있어서,
    상기 제2 디바이스 내 원격 바인더가 상기 바인더 참조 정보를 추출하여 상기 제1 디바이스 내 원격 바인더로 전달하는 단계는
    상기 제2 디바이스 내 원격 바인더가 상기 제2 디바이스가 제공하는 서비스별로 각각 존재하는 바인더 참조 노드로부터 바인더 참조 정보를 추출하여 상기 제1 디바이스 내 원격 바인더로 전달하는 것을 특징으로 하는 디바이스간 원격 프로시저 호출 방법.
  8. 제3항에 있어서,
    상기 제1 디바이스 내 원격 바인더가 수신한 상기 바인더 참조 정보에 기초하여 상기 제2 디바이스가 제공하는 서비스를 호출하는 단계는
    상기 서비스의 식별자 ID 정보를 이용하여 상기 제2 디바이스가 제공하는 서비스를 호출하는 것을 특징으로 하는 디바이스간 원격 프로시저 호출 방법.
  9. 제1항 내지 제3항, 제5항, 제7항, 및 제8항 중 어느 한 항에 따른 방법을 컴퓨터로 실행하기 위한 프로그램이 기록된 컴퓨터 판독가능 기록매체.
KR1020140192370A 2014-12-29 2014-12-29 디바이스간 원격 프로시저 호출 방법 Expired - Fee Related KR101642713B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020140192370A KR101642713B1 (ko) 2014-12-29 2014-12-29 디바이스간 원격 프로시저 호출 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140192370A KR101642713B1 (ko) 2014-12-29 2014-12-29 디바이스간 원격 프로시저 호출 방법

Publications (2)

Publication Number Publication Date
KR20160080487A KR20160080487A (ko) 2016-07-08
KR101642713B1 true KR101642713B1 (ko) 2016-08-10

Family

ID=56502874

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140192370A Expired - Fee Related KR101642713B1 (ko) 2014-12-29 2014-12-29 디바이스간 원격 프로시저 호출 방법

Country Status (1)

Country Link
KR (1) KR101642713B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101927721B1 (ko) * 2017-07-14 2019-02-27 한국과학기술원 어플리케이션 수행에 있어서 모바일 기기 간에 기능을 분배하는 방법

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115803718A (zh) * 2020-06-30 2023-03-14 华为技术有限公司 跨多个设备访问服务应用程序组件
KR102407941B1 (ko) * 2021-12-06 2022-06-13 주식회사 플랜티넷 Rpc에 기반하여 외부 장치의 함수 또는 프로시저를 호출하는 전자 장치가 사용자 인터페이스를 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치
KR102407940B1 (ko) * 2021-12-06 2022-06-13 주식회사 플랜티넷 Rpc에 기반하여 외부 장치의 함수 또는 프로시저를 호출하는 전자 장치가 rpc 서비스를 사용하기 위한 인터페이스를 생성하는 방법, 그 컴퓨터 프로그램 및 그 전자 장치

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3546394B2 (ja) * 1994-08-16 2004-07-28 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークを介してリモート・プロシージャ・コール及びレスポンスを転送するための方法及びシステム
KR101337077B1 (ko) 2012-11-06 2013-12-06 숭실대학교산학협력단 안드로이드 기반의 인비저블 시스템 서비스 운영 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938263B2 (en) * 1996-04-23 2005-08-30 Sun Microsystems, Inc. System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space
KR101357975B1 (ko) 2011-10-17 2014-02-03 엔에이치엔엔터테인먼트 주식회사 코루틴을 이용하여 원격 프로시저 호출 서비스를 제공하는 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3546394B2 (ja) * 1994-08-16 2004-07-28 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークを介してリモート・プロシージャ・コール及びレスポンスを転送するための方法及びシステム
KR101337077B1 (ko) 2012-11-06 2013-12-06 숭실대학교산학협력단 안드로이드 기반의 인비저블 시스템 서비스 운영 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
KAZUHIRO NAKAO 외 1명. 'Toward Remote Service Invocation in Android'. 2012 9th International Conference on UIC/ATC, 2012.09, pp. 612-617*

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101927721B1 (ko) * 2017-07-14 2019-02-27 한국과학기술원 어플리케이션 수행에 있어서 모바일 기기 간에 기능을 분배하는 방법

Also Published As

Publication number Publication date
KR20160080487A (ko) 2016-07-08

Similar Documents

Publication Publication Date Title
CN113162996B (zh) 服务发现的方法、注册中心和设备
US9043424B2 (en) Method for activating and deactivating client-side services from a remote server
EP3117590B1 (en) Computer system to support failover in an event stream processing system
EP3720094B1 (en) Information processing method, apparatus, device and system
KR20170055530A (ko) 서비스 레이어를 통해 제3자 서비스들에 대한 액세스를 가능하게 하는 시스템들 및 방법들
US10908970B1 (en) Data interface for secure analytic data system integration
KR101642713B1 (ko) 디바이스간 원격 프로시저 호출 방법
CN103547339B (zh) 一种文件上传方法、客户端和服务端
US20180121224A1 (en) Isolating a redirected smart card reader to a remote session
CN111491037A (zh) 通过sftp数据流与对象存储服务器的通信方法
US9986057B2 (en) UI framework support for portal systems
JP2016513329A (ja) ユーザデバイスに文脈的なコンテキストを提供するための方法および装置
US10742776B1 (en) Accelerating isochronous endpoints of redirected USB devices
CN109766347B (zh) 一种数据更新方法、装置、系统、计算机设备及存储介质
KR100597405B1 (ko) 소켓 어플리케이션 프로그램을 이용한 데이터 중계 시스템및 데이터 중계 방법
JP2023534897A (ja) リソース公開方法及びその装置、ゲートウェイ、クラウドプラットフォーム並びにコンピュータ記憶媒体
CN113285920B (zh) 业务访问方法、装置、设备及存储介质
JP6158667B2 (ja) サーバ装置、端末装置、通信方法およびコンピュータプログラム
Petrova-Antonova et al. Unified connectivity of IoT devices through abstraction of application protocols
US20140195586A1 (en) Message transmitting system and method for distributed data interoperability
KR101561524B1 (ko) 원격 사용자 인터페이스 관리 시스템 및 그 방법
JP6539497B2 (ja) 通信中継システム、デバイス収容端末、サーバ側コンピュータ、プログラム、及び通信中継方法
CN103796342B (zh) 属性信息的显示系统和路由器
CN102812690B (zh) 获取数据类型定义的方法和装置
JP5823919B2 (ja) 分散実行システム、方法、装置およびプログラム

Legal Events

Date Code Title Description
A201 Request for examination
PA0109 Patent application

Patent event code: PA01091R01D

Comment text: Patent Application

Patent event date: 20141229

PA0201 Request for examination
E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

Comment text: Notification of reason for refusal

Patent event date: 20151214

Patent event code: PE09021S01D

E90F Notification of reason for final refusal
PE0902 Notice of grounds for rejection

Comment text: Final Notice of Reason for Refusal

Patent event date: 20160523

Patent event code: PE09021S02D

E701 Decision to grant or registration of patent right
PE0701 Decision of registration

Patent event code: PE07011S01D

Comment text: Decision to Grant Registration

Patent event date: 20160530

PG1501 Laying open of application
GRNT Written decision to grant
PR0701 Registration of establishment

Comment text: Registration of Establishment

Patent event date: 20160720

Patent event code: PR07011E01D

PR1002 Payment of registration fee

Payment date: 20160721

End annual number: 3

Start annual number: 1

PG1601 Publication of registration
FPAY Annual fee payment

Payment date: 20190701

Year of fee payment: 4

PR1001 Payment of annual fee

Payment date: 20190701

Start annual number: 4

End annual number: 4

PR1001 Payment of annual fee

Payment date: 20200702

Start annual number: 5

End annual number: 5

PC1903 Unpaid annual fee

Termination category: Default of registration fee

Termination date: 20220430