KR101943936B1 - 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법 - Google Patents

웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법 Download PDF

Info

Publication number
KR101943936B1
KR101943936B1 KR1020170011874A KR20170011874A KR101943936B1 KR 101943936 B1 KR101943936 B1 KR 101943936B1 KR 1020170011874 A KR1020170011874 A KR 1020170011874A KR 20170011874 A KR20170011874 A KR 20170011874A KR 101943936 B1 KR101943936 B1 KR 101943936B1
Authority
KR
South Korea
Prior art keywords
core
module
windows
integrated external
interface
Prior art date
Application number
KR1020170011874A
Other languages
English (en)
Other versions
KR20180087901A (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 KR1020170011874A priority Critical patent/KR101943936B1/ko
Publication of KR20180087901A publication Critical patent/KR20180087901A/ko
Application granted granted Critical
Publication of KR101943936B1 publication Critical patent/KR101943936B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45529Embedded in an application, e.g. JavaScript in a Web browser
    • 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/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/28
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법이 개시된다. 본 발명의 일 실시 예에 따른 통합 외부 연동 시스템은, 범용 브라우저와 주변 기기 사이에 개재되는 통합 외부 연동 시스템으로서, 상기 범용 브라우저에서 실행되는 자바스크립트로 구현된 웹 애플리케이션과 통신하여 웹 소켓의 연결 및 해제, 시스템 라이브러리의 로드와 언로드를 수행하는 프록시 서버; 및 상기 주변 기기와 통신하며, 상기 시스템 라이브러리의 로드에 상응하여 상기 주변 기기에 관한 모듈 라이브러리의 로드 및 언로드, 상기 웹 애플리케이션에서 전달된 제어 명령 및 그 결과를 전달, 상기 주변 기기에 관한 모듈 라이브러리에서 발생되는 이벤트를 전달하는 인터페이스 매니저를 포함하되, 상기 웹 애플리케이션은 상기 주변 기기의 네이티브 애플리케이션을 제어할 수 있다.

Description

웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법{Integrated external interconnection system and method for web standard application development}
본 발명은 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법에 관한 것이다.
Netscape Plug-in API(이하 NPAPI)는 브라우저 내에서 외부 프로그램을 사용할 수 있도록 연결해주는 플러그인 기술로, 1995년 넷스케이프 브라우저에서 어도비가 PDF 파일 형식을 다운로드하고 전용 뷰어를 통해 랜더링 할 수 있도록 개발된 확장 기술이다.
ActiveX는 마이크로소프트에서 1996년 응용프로그램과 웹을 연동시키기 위해 개발한 인터넷 익스플로러 전용 플러그인(Plug-in) 기술이다.
NPAPI 및 ActiveX의 장점은 네이티브 애플리케이션을 별도의 소스 변환 없이 브라우저 내에서 실행할 수 있는 호환성 및 네이티브 성능을 가지고, 샌드박스 보안 모델의 회피가 가능하다는 것이다.
하지만, 멜웨어, 스파이웨어, 애드웨어 설치 등으로 인해 보안과 안정성에 취약하며, 각 운영체제와 프로세서에 맞게 개발되어야 하는 파편화의 단점이 있다. 또한, 벤더 별로 제공되는 솔루션과 드라이버 숫자 증가에 따른 관리가 가중되며, 코드 복잡성이 증가하는 단점도 있다.
범용 브라우저들의 기존 플러그인 기술 지원 중단 계획에 따라 브라우저를 통한 ActiveX, NPAPI, 디바이스 및 기타 서비스 관련 라이브러리(이하 윈도우즈 모듈(Windows modules)이라 칭하기도 함) 등의 이용이 불가능하게 되었다. 이러한 환경적인 변화로 인하여 기존 디바이스 제어 또는 서비스를 중단하거나 신규 대체 개발을 해야 함에 있어 물리적인 비용과 시간 소모의 양을 예측할 수 없을 정도로 심각한 혼란이 예상되고 있다.
NaCl(Native Client) + PPAPI(Pepper Plugin API), Native Messaging, Custom URI Scheme 등의 대체 플러그인 기술과 HTML5 표준 기술이 있다. 하지만 기존 기술과의 호환성, 법제도 및 정책 문제, 솔루션 업체의 준비 미흡 등으로 대체에 어려움이 많다.
한국공개특허 제10-2009-0106064호 (공개일 2009.10.08) - 액티브엑스 처리 방법 및 시스템
본 발명은 기존의 비표준 기술인 ActiveX나 NPAPI 등을 이용하지 않고 업무에 필요한 각종 디바이스나 서비스를 실시간 런타임 기반으로 연동하여 웹 표준 애플리케이션(WSA, Web Standard Application)을 새로운 환경에서도 거부감 없이 신속하게 개발할 수 있게 하는 HTML5기반의 통합 외부 연동 시스템 및 방법을 제공하기 위한 것이다.
본 발명은 기본 하드웨어/소프트웨어 자산 변경 없이 HTML5로 전환이 가능하고, 모듈 라이브러리를 통합 관리하며, 모듈 라이브러리 수정 시 변경을 최소화한 통합 외부 연동 시스템 및 방법을 제공하기 위한 것이다.
본 발명은 기존 또는 신규로 추가되는 각종 디바이스 또는 서비스 관련 윈도우즈 모듈 사용에 있어서 멀티 모듈 환경으로 하나의 웹 애플리케이션에서 동시에 여러가지 업무 지원 및 개발이 가능하도록 지원하는 통합 외부 연동 시스템 및 방법을 제공하기 위한 것이다.
본 발명의 다른 목적들은 이하에 서술되는 바람직한 실시예를 통하여 보다 명확해질 것이다.
본 발명의 일 측면에 따르면, 범용 브라우저와 주변 기기 사이에 개재되는 통합 외부 연동 시스템으로서, 상기 범용 브라우저에서 실행되는 자바스크립트로 구현된 웹 애플리케이션과 통신하여 웹 소켓의 연결 및 해제, 시스템 라이브러리의 로드와 언로드를 수행하는 프록시 서버; 및 상기 주변 기기와 통신하며, 상기 시스템 라이브러리의 로드에 상응하여 상기 주변 기기에 관한 모듈 라이브러리의 로드 및 언로드, 상기 웹 애플리케이션에서 전달된 제어 명령 및 그 결과를 전달, 상기 주변 기기에 관한 모듈 라이브러리에서 발생되는 이벤트를 전달하는 인터페이스 매니저를 포함하되, 상기 웹 애플리케이션은 상기 주변 기기의 네이티브 애플리케이션을 제어하는 것을 특징으로 하는 통합 외부 연동 시스템이 제공된다.
상기 프록시 서버와 상기 인터페이스 매니저는 비동기 방식으로 동작할 수 있다.
한편 본 발명의 다른 측면에 따르면, 범용 브라우저와 주변 기기 사이에 개재되는 통합 외부 연동 시스템으로서, 상기 범용 브라우저에서 실행되며 상기 주변 기기의 네이티브 애플리케이션을 제어하는 웹 애플리케이션과 연결되는 프록시 서버 기능을 수행하는 노드 모듈; 상기 노드 모듈이 동적으로 로드하는 통합 외부 연동 모듈을 포함하되, 상기 통합 외부 연동 모듈은 인터페이스 매니저로서 윈도우즈 모듈에 대해 어셈블리 라이브러리 형태로 로드하여 동작하는 것을 특징으로 하는 통합 외부 연동 시스템이 제공된다.
상기 웹 애플리케이션은 웹 소켓 기반 자바스크립트 API를 이용하여 구현되며, 상기 노드 모듈은 상기 웹 애플리케이션과 보안 소켓 계층(SSL)을 통해 웹 소켓 통신을 수행하여 상기 웹 애플리케이션에 대해 웹 소켓 서버로 동작할 수 있다.
상기 통합 외부 연동 모듈은, 하나의 인스턴스인 브릿지 코어와; 상기 브릿지 코어의 하위에 놓여지는 하나 이상의 인스턴스 집합인 인터페이스 코어와; 상기 인터페이스 코어의 하위에 놓여지는 하나의 인스턴스인 모듈 코어를 포함하며, 상기 모듈 코어의 하위에 놓여지는 하나 이상의 인스턴스 집합인 서비스 코어, 하나 이상의 인스턴스 집합인 디바이스 코어, 하나 이상의 인스턴스 집합인 버추얼 코어 중 적어도 하나를 더 포함할 수 있다.
상기 브릿지 코어, 상기 언터페이스 코어, 상기 모듈 코어, 상기 서비스 코어, 상기 디바이스 코어, 상기 버추얼 코어가 계층별 딕셔너리 데이터 구조를 가질 수 있다.
상기 브릿지 코어는 상기 노드 모듈에 의해 상기 통합 외부 연동 모듈이 로드될 때 동적으로 인스턴스가 생성되며, 상기 인스턴스 생성 시에 사용 가능한 윈도우즈 모듈의 목록을 특정 위치에 로드하고, 상기 목록에 해당하지 않는 윈도우즈 모듈에 대한 접근 요청을 허가하지 않을 수 있다.
상기 브릿지 코어와 상기 노드 모듈은 일련의 규약으로 정해진 명령어 집합으로만 서로 응답하도록 설계될 수 있다.
상기 브릿지 코어는 상기 노드 모듈로부터 비동기 태스크 콜의 명령을 전달받고, 상기 명령에 부합되는 윈도우즈 모듈을 동적으로 로드한 상기 인터페이스 코어에게 비동기 태스크 콜로 전달하며, 상기 명령에 대한 결과는 상기 인터페이스 코어로부터 대기 리턴(Awaited Return)으로 돌려받아 상기 노드 모듈에게 비동기 리턴(Asynchronous Return)으로 전달하고, 상기 노드 모듈로 이벤트를 전달하기 위한 리스너를 상기 인터페이스 코어에게 전달할 수 있다.
상기 인터페이스 코어는 상기 모듈 코어의 인스턴스와 비동기적인 명령 수행 전달, 결과 수신 및 이벤트 전달을 위한 환경을 설정하고, 상기 브릿지 코어와 상기 모듈 코어 사이의 물리적인 연결을 담당할 수 있다.
상기 모듈 코어는 상기 인터페이스 코어로부터 전달받은 윈도우즈 모듈에 대한 정보를 분석하고, 상기 분석 결과를 이용하여 생성한 상기 서비스 코어, 상기 디바이스 코어, 상기 버추얼 코어 중 하나 이상의 개별적인 하위 인스턴스 딕셔너리 정보를 상기 인터페이스 코어에 보고하며, 상기 인터페이스 코어로부터 전달받은 리스너를 상기 서비스 코어, 상기 디바이스 코어, 상기 버추얼 코어 중 하나로 전달할 수 있다.
상기 서비스 코어는 하드웨어에 비의존적인 윈도우즈 모듈을 동적으로 로드하여 분석하고, 분석 결과를 상기 서비스 코어가 할당한 데이터 구조에 저장하고 상기 모듈 코어로 보고하며, 상기 모듈 코어로부터 전달받은 리스너를 관리하여 상기 하드웨어에 비의존적인 윈도우즈 모듈에서 발생되는 이벤트를 상기 노드 모듈로 전달할 수 있다.
상기 디바이스 코어는 하드웨어를 제어하는 윈도우즈 모듈을 동적으로 로드하여 분석하고, 분석 결과를 상기 서비스 코어가 할당한 데이터 구조에 저장하고 상기 모듈 코어로 보고하며, 상기 모듈 코어로부터 전달받은 리스너를 관리하여 상기 하드웨어를 제어하는 윈도우즈 모듈에서 발생되는 이벤트를 상기 노드 모듈로 전달할 수 있다.
상기 버추얼 코어는 디바이스 및 서비스를 제어하는 윈도우즈 모듈에 대한 목록을 기반으로 하나 이상의 클래스 인스턴스로 생성되며, 상기 목록에 포함되는 모든 윈도우즈 모듈을 동적으로 로드하여 클래스 인스턴스 딕셔너리로 생성하며 하나의 가상 윈도우즈 모듈을 상기 모듈 코어로 보고하고, 상기 모듈 코어로부터 전달받은 리스너를 관리하여 상기 목록에 포함되는 각 모듈에서 발생되는 이벤트를 상기 노드 모듈로 전달할 수 있다.
상기 통합 외부 연동 모듈이 제어할 수 있는 윈도우즈 모듈들의 이름 정보를 포함하는 화이트리스트를 체크하고, 변경된 윈도우즈 모듈에 대해서는 원격 서버로부터 해당 파일을 다운로드하여 반영함으로써 통합 업데이트하는 제어 모듈을 더 포함할 수 있다.
전술한 것 외의 다른 측면, 특징, 이점이 이하의 도면, 특허청구범위 및 발명의 상세한 설명으로부터 명확해질 것이다.
본 발명의 실시예에 따르면, 기존의 비표준 기술인 ActiveX나 NPAPI 등을 이용하지 않고 업무에 필요한 각종 디바이스나 서비스를 실시간 런타임 기반으로 연동하여 웹 표준 애플리케이션을 새로운 환경에서도 거부감 없이 신속하게 개발할 수 있게 하는 효과가 있다.
또한, 기본 하드웨어/소프트웨어 자산 변경 없이 HTML5로 전환이 가능하고, 모듈 라이브러리를 통합 관리하며, 모듈 라이브러리 수정 시 변경을 최소화한 효과가 있다.
또한, 기존 또는 신규로 추가되는 각종 디바이스 또는 서비스 관련 윈도우즈 모듈 사용에 있어서 멀티 모듈 환경으로 하나의 웹 애플리케이션에서 동시에 여러가지 업무 지원 및 개발이 가능하도록 지원하는 효과가 있다.
또한, 기존 사용 중인 주변 기기, 서비스 및 관련 라이브러리의 변경 없이 웹 애플리케이션을 구현할 수 있고, 리소스 재활용으로 전환 리스크를 최소화할 수 있다.
하나의 단말(PC)와 연동되는 다양한 주변 기기 및 서비스를 통합 관리할 수 있고, 동일한 기능의 주변 기기에 대해 여러 벤더에서 제공하는 다양한 버전의 모듈이 존재할 때(예. 통상적으로 한 은행에서 통장프린트/핀패드 5~6종 보유)에도 정형화된 인터페이스를 통해 제어할 수 있다.
그리고 주변 기기 및 서비스에 사용되는 모듈 라이브러리의 추가, 수정, 삭제가 용이하며 중앙 관리 서버를 통해 각 모듈 업데이트 제어/관리가 가능하다. 웹 개발자들은 기존 자바스크립트의 수정만으로 상기 서비스 혹은 시스템 활용이 가능하다
도 1은 본 발명의 일 실시예에 따른 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템의 구성을 나타낸 도면,
도 2는 본 발명의 일 실시예에 따른 통합 외부 연동 시스템의 아키텍처를 나타낸 도면,
도 3은 도 2에 도시된 통합 외부 연동 시스템의 아키텍처를 간략화한 도면,
도 4는 통합 외부 연동 시스템에서의 제어 흐름(통합 외부 연동 방법)을 나타낸 도면,
도 5는 윈도우즈 모듈의 통합 업데이트 과정을 설명하기 위한 도면,
도 6은 ActiveX 방식, X-Internet 과 W-Gear(본 실시예에 따른 통합 외부 연동 시스템)를 비교한 도면.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 그러나 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
또한, 각 도면을 참조하여 설명하는 실시예의 구성 요소가 해당 실시예에만 제한적으로 적용되는 것은 아니며, 본 발명의 기술적 사상이 유지되는 범위 내에서 다른 실시예에 포함되도록 구현될 수 있으며, 또한 별도의 설명이 생략될지라도 복수의 실시예가 통합된 하나의 실시예로 다시 구현될 수도 있음은 당연하다.
또한, 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일하거나 관련된 참조부호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
도 1은 본 발명의 일 실시예에 따른 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템의 구성을 나타낸 도면이다.
본 발명의 일 실시예에 따른 통합 외부 연동 시스템(200)은 범용 브라우저들의 기존 플러그인 기술 지원 중단과 같이 변화하는 환경에서도 기업 업무에 따라 필수적인 각종 디바이스나 서비스를 연동하는 웹 표준 애플리케이션을 기존 방식과 동일하게 개발, 유지, 보수 등이 가능하도록 지원할 수 있다.
본 실시예에서 통합 외부 연동 시스템(200)은 HTML5, CLR(Common Language Runtime) 기반의 통합 외부 연동 솔루션일 수 있다. 통합 외부 연동 시스템(200)은 기 개발된 레거시(legacy) 또는 레이티스트(latest) 기반의 윈도우즈 모듈과의 완벽한 통합 인터페이스를 제공하기 위하여 닷넷 프레임워크(.Net Framework) 4.5 기반의 C# 언어로 개발되어, CLR(Common Language Runtime), 리플렉션(reflection), InteropServices 등의 주요 기능들을 활용할 수 있다.
통합 외부 연동 시스템(200)은 브라우저(100)와 주변 기기(310) 사이에 개재되어 브라우저(100)에서 동작하는 웹 애플리케이션과 주변 기기(310)에서 동작하는 네이티브 애플리케이션이 상호 독립적으로 동작하면서 양방향 통신을 하게 한다. 본 실시예에서 주변 기기(310)에는 프린터, CTI, Push, USIM, 신용카드 단말기와 같은 디바이스들이 포함된다.
또한, 통합 외부 연동 시스템(200)은 모든 구간에서 비동기 방식으로 동작하여 성능 저하를 방지하며, 샌드박스 보안 모델을 준수하도록 구현될 수 있다. 그리고 개발자에게 다양한 네이티브 기능을 웹 애플리케이션에서 활용할 수 있도록 정형화된 자바스크립트 인터페이스를 제공한다.
통합 외부 연동 시스템(200)은 프록시 서버(202)와 인터페이스 매니저(204)를 포함한다.
프록시 서버(202)는 다양한 브라우저(100)에서 동작하는 자바스크립트와 통신하며, 웹 소켓의 연결 및 해제, 시스템 라이브러리의 로드 및 언로드를 수행한다.
브라우저(100)에는 자바스크립트 API인 자바스크립트 라이브러리가 제공되며, 애플리케이션 개발자가 자바스크립트 라이브러리를 이용하여 주변 기기(310)에서 구동되는 네이티브 애플리케이션을 제어하는 웹 표준 애플리케이션을 개발할 수 있게 한다.
인터페이스 매니저(204)는 주변 기기(310)와 통신하며, 주변 기기(310)에 관한 모듈 라이브러리의 로드 및 언로드, 디바이스 제어 명령 및 그 결과의 전달을 수행한다.
본 실시예에서 프록시 서버(202)와 인터페이스 매니저(204)가 구분되어 비동기 방식으로 동작할 수 있어, 네이티브 애플리케이션이 브라우저(100)의 웹 애플리케이션과는 별도의 프로세스에서 독립적으로 수행될 수 있다.
이하 상세한 구성에 대해서 관련 도면을 참조하여 설명하기로 한다.
도 2는 본 발명의 일 실시예에 따른 통합 외부 연동 시스템의 아키텍처를 나타낸 도면이고, 도 3은 도 2에 도시된 통합 외부 연동 시스템의 아키텍처를 간략화한 도면이다.
도 2 및 도 3에 도시된 아키텍처는 웹 표준 애플리케이션이 통합 외부 연동 시스템의 내부 기능을 통해 윈도우즈 시스템에 설치되어 있는 디바이스 또는 서비스에 대한 윈도우즈 모듈 제어 개발을 도시한 전체 구성 개략도이다.
본 실시예에 따른 통합 외부 연동 시스템(200)은 전체적인 기능 동작을 관리하는 제어 모듈(미도시)과, 화이트리스트에 포함되어 있는 각기 다른 형태의 윈도우즈 모듈에 대한 사용이 가능하도록 하기 위해 웹 표준 애플리케이션과 연결되는 프록시 서버 기능을 수행하는 노드 모듈(210)(node.exe)과, 노드 모듈(210)이 동적으로 로드하는 통합 외부 연동 모듈(220)(W-Gear.dll)을 포함한다. 통합 외부 연동 모듈(220)은 인터페이스 매니저로서 윈도우즈 모듈에 대해 어셈블리 라이브러리 형태로 로드하여 동작하게 된다.
통합 외부 연동 시스템(200)은 노드 모듈(210)과 통합 외부 연동 모듈(220)을 포함한다. 통합 외부 연동 시스템(200)은 웹 표준 애플리케이션 범용 브라우저(100)와 통합 외부 연동 모듈(220)이 물리적으로 독립된 형태의 프로세스로 연결되는 구조를 가진다(도 6의 (c) 참조).
웹 표준 애플리케이션 범용 브라우저(100)에는 웹 소켓(websocket) 클라이언트로 동작하는 웹 소켓 기반 브라우저측 자바스크립트(wgear.js)(110)가 설치되어 동작된다. 브라우저측 자바스크립트(110)는 통합 외부 연동 시스템(200)에서 제공하는 자바스크립트 API를 이용해 개발될 수 있으며, 주변 기기의 윈도우즈 시스템(300)에서 동작하는 네이티브 애플리케이션을 제어할 수 있다.
웹 소켓 기반 자바스크립트(110)와 노드 모듈(210) 사이에는 보안 소켓 계층(SSL, Secure Sockets Layer)를 통해 데이터 전송이 수행될 수 있다. SSL을 이용함으로써 웹 소켓 기반 자바스크립트(110)와 노드 모듈(210) 사이에 전달되는 정보의 안전한 전달이 보장될 수 있다.
노드 모듈(210)과 통합 외부 연동 모듈(220)의 데이터 교환은 ExpandoObject로 이루어지며, 보안을 강화하기 위하여 웹 소켓 통신 시에 SSL이 적용된다.
노드 모듈(210)은 웹 서버와 같은 확장성 있는 네트워크 애플리케이션(예. 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼으로, 노드측 자바스크립트(Node.js)를 포함할 수 있다. 작성 언어로 자바스크립트를 활용하며 자바스크립트 엔진(예. V8) 위에서 동작하는 이벤트 처리 입출력 프레임워크이다.
노드 모듈(210)은 범용 브라우저(100)가 아닌 프록시 서버 측에서 실행되며, 브라우저와 웹 소켓 통신을 수행하며, 브라우저측 자바스크립트(110)에 대응하여 웹 소켓 서버로 동작하게 된다.
통합 외부 연동 모듈(220)은 브라우저측 자바스크립트(110)가 SSL이 적용된 웹 소켓 프로토콜을 통해 프록시 서버 역할을 수행하는 노드 모듈(210)에 의해 동적 로드될 수 있다.
통합 외부 연동 모듈(220)은 하나의 인스턴스(single instance)인 브릿지 코어(221) 하위에 하나 이상의 인스턴스 집합인 인터페이스 코어(222), 개별적인 인터페이스 코어(222) 하위에 하나의 인스턴스인 모듈 코어(223), 모듈 코어(223) 하위에 하나 이상의 인스턴스 집합인 서비스 코어(224), 하나 이상의 인스턴스 집합인 디바이스 코어(225), 하나 이상의 인스턴스 집합인 버추얼 코어(226)를 포함한다.
통합 외부 연동 모듈(220)은 동시에 여러 종류 및 복수의 윈도우즈 모듈에 대해 병목 현상 없이 런타임에 동적으로, 개별적 또는 통합적으로 연결, 해제 등이 가능하다. 또한, 큐 또는 스택 등의 자료 구조를 사용하지 않고 해시 값으로 관리가 가능한 계층별 딕셔너리 데이터 구조로 다중 인스턴스(multiple instances)를 제어함으로써 언더플로우나 오버플로우에 의한 문제점이 발생하지 않는다. 모든 인스턴스에 대해 고유 키 값으로 관리하여 계층별 딕셔너리 다중 인스턴스 환경에서도 명령 전달 및 결과 수신에 대한 혼선이 발생하지 않게 된다. 또한, 딕셔너리 데이터 구조를 적용함으로써 특정 계층별 딕셔너리 인스턴스에 대해 보다 신속하게 접근할 수 있다.
브릿지 코어(221)는 노드 모듈(210)에 의해 통합 외부 연동 모듈(220)이 로드될 때 동적으로 인스턴스가 생성된다. 인스턴스 생성 시에 사용 가능한 윈도우즈 모듈의 목록을 특정 위치에 로드하고, 목록에 해당하지 않는 윈도우즈 모듈에 대한 접근 요청은 허가하지 않음으로써 강한 보안성을 보유한다. 노드 모듈(210)과 브릿지 코어(221)는 보안성 및 개발자 편의성 강화를 위해 일련의 규약으로 정해진 명령어 집합("Connect", "Initialize", "getUUID", "Create", "Destroy", "Command")으로만 서로 응답하도록 설계될 수 있다.
브릿지 코어(221)가 로드한 윈도우즈 모듈 목록은 노드 모듈(210)을 통해 애플리케이션 개발자에게 전달됨으로써, 목록 상의 윈도우즈 모듈에 대한 접근 및 관리 권한이 발생할 수 있다. 브릿지 코어(221)는 노드 모듈(210)로부터 비동기 태스크 콜(Asynchoronous Task Call, 이하 ATC라고도 함)의 명령을 전달받고 해당 명령에 부합되는 윈도우즈 모듈을 동적으로 로드한 인터페이스 코어(222)에게 ATC로 전달한다.
전달한 명령에 대한 결과는 목표 인터페이스 코어(222)로부터 대기 리턴(Awaited Return)으로 돌려받음으로써 결과가 도착할 때까지 프로세싱 지연이 발생하지 않고 실시간으로 다른 ATC의 수행이 가능하다.
대기 리턴으로 전달받은 결과는 노드 모듈(210)에게 비동기 리턴(Asynchoronous Return)으로 전달된다. 따라서, 노드 모듈(210) 또한 여러 개의 웹 표준 애플리케이션의 명령 요청을 프로세싱 지연 없이 실시간으로 수행할 수 있게 된다.
브릿지 코어(221)에 의해 하나 이상의 인스턴스로 생성될 수 있는 개별적인 인터페이스 코어(222)는 하위에 생성한 하나의 모듈 코어(223) 인스턴스와 비동기적인 명령 수행 전달, 결과 수신 및 이벤트 전달을 위한 환경을 설정하고, 브릿지 코어(221)와 모듈 코어(223) 사이의 물리적인 연결을 담당한다.
본 실시예에서 계층별 딕셔너리 다중 인스턴스 구조로 생성된 개별적인 인터페이스 코어(222)에 의해 생성되는 모듈 코어(223)의 역할은 하위 계층들(224, 225, 226)에 대한 인스턴스 딕셔너리 생성, 소멸, 제어, 명령 수행 및 결과 수신, 상위 계층(222)과의 통신이다.
모듈 코어(223)는 인터페이스 코어(222)로부터 전달받은 윈도우즈 모듈에 대한 정보(디바이스, 서비스, 윈도우즈 모듈 종류)를 분석하고 결과를 이용하여 생성한 서비스 코어(224), 디바이스 코어(225), 버추얼 코어(226) 중 하나 이상의 개별적인 하위 인스턴스 딕셔너리 정보를 인터페이스 코어(222)에 보고한다. 윈도우즈 모듈에 대한 종류 분석은 "kernel32.dll::LoadLibrary", "oleaut32.dll::LoadTypeLib", "Assembly::AppDomain.Load", "Assembly.LoadFrom" 윈도우즈 API를 이용하여 수행하고 내부 데이터 구조체의 지정된 영역에 할당한다. 윈도우즈 모듈의 디바이스와 서비스, 버추얼 분류는 화이트리스트(WhiteList)에 보안 협의를 통해 별도의 과정을 통해 지정할 수 있다.
서비스 코어(224)는 모듈 코어(223)에 의해 하나 이상의 클래스 인스턴스로 생성되며, 하드웨어에 비의존적인 윈도우즈 모듈(예. 모듈 라이브러리)을 동적으로 로드하여 분석한다. 서비스 코어(224)는 타겟 서비스(Target service)와 관련된 모듈을 로드하고, 타겟 서비스와의 인터페이스를 관리한다. 타겟 서비스는 ActiveX 등의 모듈이 제공하는 내부 기능을 의미한다.
개별적인 서비스 코어(224) 클래스 인스턴스는 하나의 윈도우즈 모듈에 대해 독립적으로 대응된다. 윈도우즈 모듈 종류와 일치하는 "kernel32.dll::LoadLibrary", "oleaut32.dll::LoadTypeLib", "Assembly::AppDomain.Load", "Assembly.LoadFrom" 윈도우즈 API를 이용하여 동적으로 로드하고, 해당 윈도우즈 모듈이 포함하고 있는 내부 메소드와 프로퍼티, 이벤트 정보를 분석한다. 분석된 결과는 서비스 코어(224)가 할당한 데이터 구조에 저장되고 모듈 코어(223)로 보고된다. 서비스 코어(224)는 로드한 윈도우즈 모듈의 메소드 실행(invoke), 이벤트 실행, 프로퍼티에 대한 get/set 요청을 수행하고 결과를 모듈 코어(223)에 보고한다.
서비스 코어(224)는 레지스트리에 저장되어 있는 각각의 모듈 라이브러리가 가지고 있는 고유 식별 정보인 GUID, CLSID를 검색하고 제어할 수 있다. 연계되는 모듈 라이브러리 타입으로는 관리 라이브러리(managed library), 비관리 라이브러리(unmanaged library), 어셈블리 라이브러리(assembly library), 관리 객체(manage object), 비관리 객체(unmanaged object) 등이 있다.
디바이스 코어(225)는 모듈 코어(223)에 의해 하나 이상의 클래스 인스턴스로 생성되며, 하드웨어를 제어하는 윈도우즈 모듈(예. 디바이스 드라이버)을 동적으로 로드하여 분석한다.
또한, 윈도우즈 시스템(300)에 설치되어 있는 모든 디바이스 정보를 수집하여 윈도우즈 모듈이 존재하지 않는 표준 디바이스들(예. USB 메모리)에 대한 제어도 가능할 수 있도록 VID, PID 정보를 별도 저장할 수 있다. 디바이스 제어를 위해 디바이스 코어(225)는 윈도우즈 SDK로부터 디바이스 정보(DEV-ID)를 제공받을 수 있다. 윈도우즈 SDK는 디바이스 드라이브와의 연계를 위해 MS에서 제공하는 API이다.
개별적인 디바이스 코어(225) 클래스 인스턴스는 하나의 윈도우즈 모듈에 대해 독립적으로 대응된다. 윈도우즈 모듈 종류와 일치하는 "kernel32.dll::LoadLibrary", "oleaut32.dll::LoadTypeLib", "Assembly::AppDomain.Load", "Assembly.LoadFrom" 윈도우즈 API를 이용하여 동적으로 로드하고, 윈도우즈 모듈이 포함하고 있는 내부 메소드와 프로퍼티, 이벤트 정보를 분석한다. 제공된 분석된 결과는 디바이스 코어(225)가 할당한 데이터 구조에 저장되고 모듈 코어(223)로 보고된다. 디바이스 코어(225)는 로드한 윈도우즈 모듈의 메소드 실행, 이벤트 실행, 프로퍼티에 대한 get/set 요청을 수행하고 결과를 모듈 코어(223)에 보고한다.
버추얼 코어(226)는 모듈 코어(223)에 의해 디바이스 및 서비스를 제어하는 윈도우즈 모듈 목록을 기반으로 하나 이상의 클래스 인스턴스로 생성된다. 목록에 포함되어 있는 모든 윈도우즈 모듈을 동적으로 로드하여 클래스 인스턴스 딕셔너리로 생성하여 하나의 가상 윈도우즈 모듈을 모듈 코어(223)에 보고한다.
따라서, 애플리케이션 개발자에게 여러 종류(디바이스, 서비스)와 복수의 윈도우즈 모듈을 하나의 윈도우즈 모듈로 전달하여 개발의 편의성을 제공할 수 있다. 또한, 웹 표준 애플리케이션 사용자의 권한에 따른 버추얼 코어(226) 목록 분류로 보안성 향상 및 리소스 최적화, 새로운 비즈니스 로직의 생성도 가능할 수 있도록 지원할 수 있다. 버추얼 코어(226)는 디바이스 코어(225)와 서비스 코어(224)의 기능을 모두 포함할 수 있다.
또한, 본 실시예에 따른 통합 외부 연동 시스템(200)은 윈도우즈 시스템(300)의 모듈 라이브러리에서 발생되는 이벤트를 웹 애플리케이션에 전달하여 처리할 수 있도록 제공되는 기능인 이벤트 처리 기능을 수행할 수 있다.
웹 애플리케이션은 이벤트 수신을 위한 리스너(event listener)를 등록 관리한다. 노드 모듈(210)은 웹 애플리케이션에 이벤트를 전달하기 위한 리스너를 브릿지 코어(221)에 전달한다. 브릿지 코어(221)는 인터페이스 코어(222)를 통해 모듈 코어(223)에 리스너를 전달한다.
모듈 코어(223)는 서비스 코어(224), 디바이스 코어(225), 버추얼 코어(226) 중 하나 이상에 리스너를 전달한다. 서비스 코어(224), 디바이스 코어(225), 버추얼 코어(226)는 전달받은 리스너를 관리한다.
모듈 라이브러리에서 이벤트가 발생되는 경우, 서비스 코어(224), 디바이스 코어(225), 버추얼 코어(226)는 발생된 이벤트를 전달받아 노드 모듈(210)로 전달한다.
노드 모듈(210)은 서비스 코어(224), 디바이스 코어(225), 버추얼 코어(226)로부터 전달받은 이벤트를 웹 애플리케이션에 전달하여 처리되게 할 수 있다.
본 실시예에 따른 통합 외부 연동 시스템(200)에서 제어 모듈(W-Gear.exe)과 통합 외부 연동 모듈(220)(W-Gear.dll)은 C# 기반으로 구현되고, 노드 모듈(210)은 자바스크립트 기반으로 구현될 수 있다. 따라서, 웹 표준 애플리케이션과의 인터페이스를 위해 노드 모듈(210)과 노드측 자바스크립트(node.js)가 자바스크립트를 통해 표준 웹 소켓을 연결할 수 있다. 그리고노드 모듈(210)과 통합 외부 연동 모듈(220)의 인터페이스는 노드측 자바스크립트의 에지(Edge) 기반으로 노드 모듈(210)을 통해 비동기 태스크 호출로 연결될 수 있다.
기존에 개발된 윈도우즈 모듈은 운영체제 종류, 32 & 64비트 플랫폼, 개발 언어, 개발 방식 등의 차이로 인하여 상당히 많은 종류가 존재한다. 또한, 개발 언어적인 종류로만 구별해도, Unmanaged library(Visual C++, WIN32, MFC), Managed library(COM, ATL, Visual Basic, C++/CLI), TypeLibrary, ActiveX, Assembly library 등으로 분류될 수 있다. 이러한 다양한 윈도우즈 모듈에 대한 일관성 있는 제어를 위해 통합 외부 연동 모듈(220)은 로드되는 시점에서 화이트리스트에 등록되어 있는 각각의 윈도우즈 모듈을 모두 로드하여 각 윈도우즈 모듈별 종류를 분석하여 자동으로 어셈블리 라이브러리 형태의 새로운 윈도우즈 모듈을 생성할 수 있다.
도 4를 참조하여, 통합 외부 연동 시스템에서의 제어 흐름(통합 외부 연동 방법)에 대해 설명하기로 한다.
우선 통합 외부 연동 시스템(200)에서는 제어 모듈(W-Gear.exe)이 실행되고 있으며(단계 S10), 브라우저(100)에서의 웹 소켓 연결을 대기한다.
브라우저(100)에는 애플리케이션 개발자에 의해 개발된 자바스크립트 형태의 웹 표준 애플리케이션이 설치되어 있을 수 있다.
웹 표준 애플리케이션에서는 신규의 통합 외부 연동 객체(예. WGear object)를 생성한다(단계 S20).
이후 연결 함수 호출을 통해 노드 모듈(210)과의 웹 소켓 연결을 수립한다(단계 S30). 웹 표준 애플리케이션이 웹 소켓 클라이어트로 동작하고 노드 모듈(210)이 웹 소켓 서버로 동작하게 된다.
웹 소켓 연결이 수립되면, 웹 표준 애플리케이션에서는 제어하고자 하는 윈도우즈 모듈에 대한 식별정보(예. "모듈명")를 이용하여 윈도우즈 모듈을 생성하는 생성 함수를 호출한다(단계 S40). 생성 함수 호출에 의해 노드 모듈(210)은 윈도우즈 모듈에 상응하는 통합 외부 연동 모듈(220)을 동적으로 로드한다.
이후 웹 표준 애플리케이션에서는 모듈 라이브러리를 로드하는 열기 함수를 호출한다(단계 S50). 이에 의해 통합 외부 연동 모듈(220)은 모듈 라이브러리를 로드한다(단계 S52).
이후 웹 표준 애플리케이션에서는 각종 명령어 및 파라미터를 포함하는 실행 함수를 호출한다(단계 S60). 이에 의해 통합 외부 연동 모듈(220)은 로드된 모듈 라이브러리를 통해 해당 명령어를 처리하고(단계 S62), 그 결과를 수신한 후(단계 S64) 웹 표준 애플리케이션으로 전달한다(단계 S66).
이벤트 처리 기능은 다음과 같다. 웹 표준 애플리케이션은 이벤트 수신을 위한 리스너를 등록 관리한다. 그리고 통합 외부 연동 시스템(200)은 웹 애플리케이션이 이벤트를 전달하기 위한 리스너를 추가하여 관리한다(단계 S70).
노드 모듈(210)은 웹 애플리케이션에 이벤트를 전달하기 위한 리스너를 브릿지 코어(221)에 전달한다. 브릿지 코어(221)는 인터페이스 코어(222)를 통해 모듈 코어(223)에 전달한다. 모듈 코어(223)는 디바이스 코어(225), 서비스 코어(224), 버추얼 코어(226) 중 하나에 전달한다. 디바이스 코어(225), 서비스 코어(224), 버추얼 코어(226)는 전달 받은 리스너를 관리한다.
디바이스 코어(225), 서비스 코어(224), 버추얼 코어(226)는 라이브러리에서 발생되는 이벤트를 전달 받아 노드 모듈(210)로 전달한다(단계 S72).
노드 모듈(210)은 디바이스 코어(225), 서비스 코어(224), 버추얼 코어(226)로부터 전달 받은 이벤트를 웹 애플리케이션에 전달하여 처리되게 한다(단계 S74).
실행이 완료되면, 웹 표준 애플리케이션에서는 모듈 라이브러리를 언로드하는 닫기 함수를 호출한다(단계 S80). 이에 의해 통합 외부 연동 모듈(220)은 모듈 라이브러리를 언로드한다(단계 S82).
모듈 라이브러리의 언로드가 완료되면, 웹 표준 애플리케이션에서는 생성된 윈도우즈 모듈을 삭제하는 삭제 함수를 호출한다(단계 S90). 이에 의해 통합 외부 연동 모듈(220)은 통합 외부 연동 모듈(220)을 언로드한다.
이후 연결 해제 함수를 호출하면(단계 S95), 브라우저(100)와 노드 모듈(210) 사이의 웹 소켓 연결이 해제된다.
각 단계에 대응되는 자바스크립트 소스의 예시는 다음과 같다.
S20: var wgear = new WGear();
S30: wgear.connect();
S40: wgear.create("모듈명");
S50: wgear.open("모듈명");
S60: wgear.promise("모듈명","명령어",[파라미터…]);
S80: wgear.close("모듈명");
S90: wgear.destroy();
S95: wgear.disconnect();
본 실시예에 따른 통합 외부 연동 모듈(220)은 열기(open) 명령이 실행되면 해당 윈도우즈 모듈에 대해 새로 생성한 어셈블리 라이브러리를 앱 도메인(AppDomain) 또는 타입(Type) 기반의 독립적인 인스턴스로 로드하여 내부 메소드들(methods)에 대한 정보(리턴 타입, 클래스 이름, 메소드 이름, 파라미터 정보) 집합, 이벤트들(events)에 대한 정보(리턴 타입, 이벤트 이름, 파라미터 정보) 집합, 프로퍼티들(properties)에 대한 정보 집합을 애플리케이션 개발자에 전달하여 개발자가 연 모듈을 기존 네이티브 방식처럼 사용할 수 있도록 지원한다. 이는 통합 외부 연동 모듈(220)에 command 명령과 같이 전달된 윈도우즈 모듈의 메소드, 이벤트의 실행과 프로퍼티에 대한 get/set 기능에 대한 실행 결과를 노드측 자바스크립트(node.js) -> 웹 소켓(WebSocket) -> 웹 브라우저 또는 웹 표준 애플리케이션에 전달함으로써 고객 및 사용자, 개발자는 새로운 웹 환경에서도 통합 외부 연동 시스템(200)의 설치만으로도 기존 디바이스 및 서비스에 대한 윈도우즈 모듈 사용이 가능해져 물리적인 비용이나 불필요한 시간 낭비없이 생산성과 보안성, 효율성, 재사용성 등을 최대한 보장받을 수 있다.
본 실시예에 따르면, 목표 윈도우즈 모듈이 수정 변경 되더라도 통합 외부 연동 모듈(220)의 코드 수정이나 변경없이 화이트리스트의 변경만으로 지속 사용될 수 있도록 개발하여 추가적인 유지 보수 비용이 발생하지 않는 경제성 또한 포함하고 있다. 이를 위한 윈도우즈 모듈의 통합 업데이트 과정에 대해 도 5를 참조하여 설명하기로 한다.
도 5는 윈도우즈 모듈의 통합 업데이트 과정을 설명하기 위한 도면이다.
통합 외부 연동 시스템은 윈도우즈 모듈(모듈 라이브러리)의 추가/수정/삭제 등의 변경 사항을 일관된 방식으로 적용한다.
통합 외부 연동 시스템의 실행 및 일정 시간(예. 12시간)마다 주기적으로 변경 사항을 원격 서버(remote server)로부터 확인한다(단계 S400).
화이트리스트를 체크하여 변경된 모듈을 판별한다(단계 S410). 화이트리스트는 통합 외부 연동 시스템이 제어할 수 있는 윈도우즈 모듈들의 이름 정보를 포함한다. 변경된 모듈에 대해서는 원격 서버로부터 해당 파일을 다운로드한다(단계 S420).
변경 사항을 알림을 통해 공지한다. 그리고 인스톨러를 통해 변경 사항을 반영한다(단계 S430).
이후 노드 모듈(Node.exe)이 실행되면(단계 S440), 통합 외부 연동 모듈(W-Gear.dll)이 로드되고(단계 S450), 화이트리스트에서 통합 업데이트된 라이브러리(윈도우즈 모듈)를 로드한다(단계 S460). 이후 브라우저가 실행될 수 있다(단계 S470).
본 실시예에 따른 통합 외부 연동 시스템에 의하면, 호환성과 관련하여 윈도우즈 시스템에서 디바이스 및 서비스에 대한 접근성 확보를 위해 레거시 및 레이티스트 객체 모듈을 제어하고, ActiveX, Managed DLL, Unmanaged DLL, Assembly DLL, Java 등 다양한 형식의 모듈을 지원할 수 있다.
독립성과 관련하여, 웹 표준 애플리케이션은 ActiveX, DLL의 언어 유형, 운영체제 버전(OS version) 등에 의한 의존성(dependency) 없이 프록시 서버(Proxy Server)와 미리 정의된 형식으로만 통신하게 한다. 이를 위해 웹 애플리케이션, 프록시 서버, 인터페이스 매니저는 상호 독립적인 구조를 유지하고 있다.
도 6을 참조하면, ActiveX 방식, X-Internet 과 W-Gear(본 실시예에 따른 통합 외부 연동 시스템)를 비교한 도면이 도시되어 있다.
기존의 ActiveX 방식, X-Internet 방식의 경우에는 한 프로세스 안(메모리 공유)에서 웹 애플리케이션과 네이티브 애플리케이션이 같이 수행되어 보안 취약성이 있지만, 본 실시예에 따른 W-Gear 방식의 경우에는 웹 애플리케이션과 네이티브 애플리케이션이 별도의 프로세스에서 독립적으로 수행되는 구조를 가지는 점에서 차이가 있다.
일관성과 관련하여, 버전 등의 외부 환경에 상관없이 원소스 멀티 타겟 플랫폼을 유지할 수 있으며, 외부 모듈 라이브러리의 종류와 상관없이 정형화된 자바스크립트 인터페이스를 제공할 수 있다.
안정성과 관련하여, 디바이스, 서비스를 직접 제어하는 디바이스 코어와 서비스 코어는 다중 독립 인스턴스로 생성되며, 개별 인스턴스는 IPC를 통한 방법으로 비동기 메시지 방식, 모듈 코어를 통한 간접 호출(indirect call)이 가능하고, 샌드박스 보안 모델을 준수하며, 보안 통신이 가능하다.
본 실시예에 따른 통합 외부 연동 시스템은 기존 32bit, 신규 64bit 운영체제에서 개발된 윈도우즈 모듈도 동시에 지원하며, C, C++, WIN32, MFC, ATL, WTL, COM, ActiveX, TypeLibrary(Visual Basic, C++/CLI), Assembly library 방식으로 개발된 윈도우즈 모듈에 대한 통합 관리, 제어가 가능하다.
웹 표준 애플리케이션과의 모든 기능 구현 및 동작 구간에 비동기 방식을 적용하여 웹 표준 애플리케이션과의 인터페이스에 성능 저하를 방지하며, 웹 표준 애플리케이션과 윈도우즈 모듈이 상호 독립적으로 양방향 통신이 가능하도록, 더불어 샌드박스 보안 모델 준수 및 개발자에게는 다양한 네이티브 기능을 활용할 수 있도록 정형화된 자바스크립트로 구성된 인터페이스를 제공한다.
내부적으로 각 디바이스 또는 서비스 윈도우즈 모듈에 대하여 독립적인 인스턴스로의 실행 및 관리 방식으로 제어함으로써, 하나 이상의 디바이스 또는 서비스 관련 윈도우즈 모듈에서 행업(hang up)이 발생하더라도 통합 외부 연동 시스템 자신 및 다른 윈도우즈 모듈에 대한 정상적인 동작을 보장한다.
각 디바이스 및 서비스 윈도우즈 모듈에 대한 화이트리스트를 보유하고 있으며, 화이트리스트에 등록되어 있지 않은 윈도우즈 모듈에 대한 기능은 제공하지 않음으로 보안 취약성이 발생하지 않는다. 화이트리스트는 미리 규약된 서버로부터 주기적으로 동기화되고 윈도우즈 모듈에 대한 추가, 변경 적용, 삭제 등은 관리자 차원에서 쉽게 제어가 가능하다.
화이트리스트에 사용 권한 또는 범위 등에 대한 추가 목록을 포함하여 내부 구성 요소인 버추얼 코어에 적용하여, 고객 또는 사용자 권한 별로 윈도우즈 모듈의 접근 권한을 관리자 차원에서 제어할 수 있으며, 해당 권한의 사용자 또는 개발자는 개별적인 윈도우즈 모듈에 대하여 제공되는 하나의 버추얼 모듈로 개발 및 이용에 편의성 및 생산성 향상을 제공한다.
상술한 본 실시예에 따른 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 방법은 컴퓨터로 읽을 수 있는 기록 매체에 컴퓨터가 읽을 수 있는 코드로서 구현되는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체로는 컴퓨터 시스템에 의하여 해독될 수 있는 데이터가 저장된 모든 종류의 기록 매체를 포함한다. 예를 들어, ROM(Read Only Memory), RAM(Random Access Memory), 자기 테이프, 자기 디스크, 플래쉬 메모리, 광 데이터 저장장치 등이 있을 수 있다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 통신망으로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 읽을 수 있는 코드로서 저장되고 실행될 수 있다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 범용 브라우저 110: 브라우저측 자바스크립트
200: 통합 외부 연동 시스템 202: 프록시 서버
204: 인터페이스 매니저 210: 노드 모듈
220: 통합 외부 연동 모듈 221: 브릿지 코어
222: 인터페이스 코어 223: 모듈 코어
224: 서비스 코어 225: 디바이스 코어
226: 버추얼 코어 300: 윈도우즈 시스템

Claims (15)

  1. 삭제
  2. 삭제
  3. 범용 브라우저와 주변 기기 사이에 개재되는 통합 외부 연동 시스템으로서,
    상기 범용 브라우저에서 실행되며 상기 주변 기기의 네이티브 애플리케이션을 제어하는 웹 애플리케이션과 연결되는 프록시 서버 기능을 수행하는 노드 모듈;
    상기 노드 모듈이 동적으로 로드하는 통합 외부 연동 모듈을 포함하되,
    상기 통합 외부 연동 모듈은 인터페이스 매니저로서 윈도우즈 모듈에 대해 어셈블리 라이브러리 형태로 로드하여 동작하며,
    상기 통합 외부 연동 모듈은,
    하나의 인스턴스인 브릿지 코어와;
    상기 브릿지 코어의 하위에 놓여지는 하나 이상의 인스턴스 집합인 인터페이스 코어와;
    상기 인터페이스 코어의 하위에 놓여지는 하나의 인스턴스인 모듈 코어를 포함하며,
    상기 모듈 코어의 하위에 놓여지는 하나 이상의 인스턴스 집합인 서비스 코어, 하나 이상의 인스턴스 집합인 디바이스 코어, 하나 이상의 인스턴스 집합인 버추얼 코어 중 적어도 하나를 더 포함하는 것을 특징으로 하는 통합 외부 연동 시스템.
  4. 제3항에 있어서,
    상기 웹 애플리케이션은 웹 소켓 기반 자바스크립트 API를 이용하여 구현되며,
    상기 노드 모듈은 상기 웹 애플리케이션과 보안 소켓 계층(SSL)을 통해 웹 소켓 통신을 수행하여 상기 웹 애플리케이션에 대해 웹 소켓 서버로 동작하는 것을 특징으로 하는 통합 외부 연동 시스템.
  5. 삭제
  6. 제3항에 있어서,
    상기 브릿지 코어, 상기 인터페이스 코어, 상기 모듈 코어, 상기 서비스 코어, 상기 디바이스 코어, 상기 버추얼 코어가 계층별 딕셔너리 데이터 구조를 가지는 것을 특징으로 하는 통합 외부 연동 시스템.
  7. 제3항에 있어서,
    상기 브릿지 코어는 상기 노드 모듈에 의해 상기 통합 외부 연동 모듈이 로드될 때 동적으로 인스턴스가 생성되며, 상기 인스턴스 생성 시에 사용 가능한 윈도우즈 모듈의 목록을 특정 위치에 로드하고, 상기 목록에 해당하지 않는 윈도우즈 모듈에 대한 접근 요청을 허가하지 않는 것을 특징으로 하는 통합 외부 연동 시스템.
  8. 제7항에 있어서,
    상기 브릿지 코어와 상기 노드 모듈은 일련의 규약으로 정해진 명령어 집합으로만 서로 응답하도록 설계된 것을 특징으로 하는 통합 외부 연동 시스템.
  9. 제3항에 있어서,
    상기 브릿지 코어는 상기 노드 모듈로부터 비동기 태스크 콜의 명령을 전달받고, 상기 명령에 부합되는 윈도우즈 모듈을 동적으로 로드한 상기 인터페이스 코어에게 비동기 태스크 콜로 전달하며, 상기 명령에 대한 결과는 상기 인터페이스 코어로부터 대기 리턴(Awaited Return)으로 돌려받아 상기 노드 모듈에게 비동기 리턴(Asynchronous Return)으로 전달하는 것과 상기 노드 모듈로 이벤트를 전달하기 위한 리스너를 상기 인터페이스 코어에게 전달하는 것을 특징으로 하는 통합 외부 연동 시스템.
  10. 제3항에 있어서,
    상기 인터페이스 코어는 상기 모듈 코어의 인스턴스와 비동기적인 명령 수행 전달, 결과 수신 및 이벤트 전달을 위한 환경을 설정하고, 상기 브릿지 코어와 상기 모듈 코어 사이의 물리적인 연결을 담당하는 것을 특징으로 하는 통합 외부 연동 시스템.
  11. 제10항에 있어서,
    상기 모듈 코어는 상기 인터페이스 코어로부터 전달받은 윈도우즈 모듈에 대한 정보를 분석하고, 상기 분석 결과를 이용하여 생성한 상기 서비스 코어, 상기 디바이스 코어, 상기 버추얼 코어 중 하나 이상의 개별적인 하위 인스턴스 딕셔너리 정보를 상기 인터페이스 코어에 보고하는 것과 상기 인터페이스 코어로부터 전달받은 리스너를 상기 서비스 코어, 상기 디바이스 코어, 상기 버추얼 코어 중 하나로 전달하는 것을 특징으로 하는 통합 외부 연동 시스템.
  12. 제11항에 있어서,
    상기 서비스 코어는 하드웨어에 비의존적인 윈도우즈 모듈을 동적으로 로드하여 분석하고, 분석 결과를 상기 서비스 코어가 할당한 데이터 구조에 저장하고 상기 모듈 코어로 보고하는 것과 상기 모듈 코어로부터 전달받은 리스너를 관리하여 상기 하드웨어에 비의존적인 윈도우즈 모듈에서 발생되는 이벤트를 상기 노드 모듈로 전달하는 것을 특징으로 하는 통합 외부 연동 시스템.
  13. 제11항에 있어서,
    상기 디바이스 코어는 하드웨어를 제어하는 윈도우즈 모듈을 동적으로 로드하여 분석하고, 분석 결과를 상기 서비스 코어가 할당한 데이터 구조에 저장하고 상기 모듈 코어로 보고하는 것과 상기 모듈 코어로부터 전달받은 리스너를 관리하여 상기 하드웨어를 제어하는 윈도우즈 모듈에서 발생되는 이벤트를 상기 노드 모듈로 전달하는 것을 특징으로 하는 통합 외부 연동 시스템.
  14. 제11항에 있어서,
    상기 버추얼 코어는 디바이스 및 서비스를 제어하는 윈도우즈 모듈에 대한 목록을 기반으로 하나 이상의 클래스 인스턴스로 생성되며, 상기 목록에 포함되는 모든 윈도우즈 모듈을 동적으로 로드하여 클래스 인스턴스 딕셔너리로 생성하며 하나의 가상 윈도우즈 모듈을 상기 모듈 코어로 보고하는 것 것과 상기 모듈 코어로부터 전달받은 리스너를 관리하여 상기 목록에 포함되는 각 모듈에서 발생되는 이벤트를 상기 노드 모듈로 전달하는 것을 특징으로 하는 통합 외부 연동 시스템.
  15. 제3항에 있어서,
    상기 통합 외부 연동 모듈이 제어할 수 있는 윈도우즈 모듈들의 이름 정보를 포함하는 화이트리스트를 체크하고, 변경된 윈도우즈 모듈에 대해서는 원격 서버로부터 해당 파일을 다운로드하여 반영함으로써 통합 업데이트하는 제어 모듈을 더 포함하는 통합 외부 연동 시스템.
KR1020170011874A 2017-01-25 2017-01-25 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법 KR101943936B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170011874A KR101943936B1 (ko) 2017-01-25 2017-01-25 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170011874A KR101943936B1 (ko) 2017-01-25 2017-01-25 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20180087901A KR20180087901A (ko) 2018-08-03
KR101943936B1 true KR101943936B1 (ko) 2019-02-01

Family

ID=63250412

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170011874A KR101943936B1 (ko) 2017-01-25 2017-01-25 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR101943936B1 (ko)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109889571B (zh) * 2019-01-09 2021-12-17 深圳市雁联计算系统有限公司 一种开发平台系统及开发方法
KR102118666B1 (ko) * 2019-05-29 2020-06-05 (주)토마토시스템 웹브라우저를 위한 라이브러리 구동 및 업데이트 방법, 장치 및 프로그램

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140245124A1 (en) * 2013-02-26 2014-08-28 Visicom Media Inc. System and method thereof for browser agnostic extension models

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090106064A (ko) 2008-04-04 2009-10-08 주식회사 엘지텔레콤 액티브엑스 처리 방법 및 시스템
KR101756913B1 (ko) * 2015-04-30 2017-07-11 주식회사 이니라인 웹브라우저와 응용 프로그램 간의 연동 시스템 및 그 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140245124A1 (en) * 2013-02-26 2014-08-28 Visicom Media Inc. System and method thereof for browser agnostic extension models

Also Published As

Publication number Publication date
KR20180087901A (ko) 2018-08-03

Similar Documents

Publication Publication Date Title
US11138030B2 (en) Executing code referenced from a microservice registry
US7412501B2 (en) Event consumers for an event management system
US8645672B2 (en) Configuring a computer system for a software package installation
JP4286798B2 (ja) ハードドライブにドライバファイルをインストールする方法、コンピュータ及びコンピュータ読取可能な記憶媒体
US9954819B2 (en) System and method for compliance based automation
US20150160936A1 (en) Self-moving operating system installation in cloud-based network
US20080140759A1 (en) Dynamic service-oriented architecture system configuration and proxy object generation server architecture and methods
US20080140760A1 (en) Service-oriented architecture system and methods supporting dynamic service provider versioning
US20110055396A1 (en) Methods and systems for abstracting cloud management to allow communication between independently controlled clouds
US20110289499A1 (en) Techniques to automatically update software applications
US10891569B1 (en) Dynamic task discovery for workflow tasks
US8069443B2 (en) Techniques for providing services and establishing processing environments
CN109240837B (zh) 一种通用云存储服务api的构建方法
US10303529B2 (en) Protocol for communication of data structures
US20130290425A1 (en) Method for a connector providing transactional interoperability to multiple messaging providers to multiple application servers using the same implementation
CN111708550A (zh) 应用部署方法、装置、计算机设备及存储介质
EP1607861A2 (en) Method and apparatus for deploying software applications using a zone architecture
WO2023093197A1 (zh) 一种应用管理方法及相关系统
KR101943936B1 (ko) 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법
CN116028163A (zh) 一种容器组的动态链接库调度方法、装置及存储介质
US20070261045A1 (en) Method and system of configuring a directory service for installing software applications
US10129213B2 (en) System and method for compliance based automation
US11601342B1 (en) Method and system to automate device management user interface hosting of devices, assets, and appliances
CN111447076A (zh) 网络功能虚拟化nvf系统的容器部署方法及网元
US8353013B2 (en) Authorized application services via an XML message protocol

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right