KR20040097937A - 오브젝트 기반의 파이프라인을 채용한 시스템 및 방법 - Google Patents

오브젝트 기반의 파이프라인을 채용한 시스템 및 방법 Download PDF

Info

Publication number
KR20040097937A
KR20040097937A KR1020040033432A KR20040033432A KR20040097937A KR 20040097937 A KR20040097937 A KR 20040097937A KR 1020040033432 A KR1020040033432 A KR 1020040033432A KR 20040033432 A KR20040033432 A KR 20040033432A KR 20040097937 A KR20040097937 A KR 20040097937A
Authority
KR
South Korea
Prior art keywords
pipeline
command
subcomponent
input
sending
Prior art date
Application number
KR1020040033432A
Other languages
English (en)
Inventor
제프리피. 스노버
Original Assignee
마이크로소프트 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 마이크로소프트 코포레이션 filed Critical 마이크로소프트 코포레이션
Publication of KR20040097937A publication Critical patent/KR20040097937A/ko

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/45508Runtime interpretation or emulation, e g. emulator loops, bytecode interpretation
    • G06F9/45512Command shells
    • 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/544Buffers; Shared memory; Pipes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99948Application of database or data structure, e.g. distributed, multimedia, or image

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Image Generation (AREA)
  • Document Processing Apparatus (AREA)

Abstract

본 발명은 오브젝트 기반의 파이프라인을 지원하는 컴퓨팅 환경 및 방법에 관한 것이다. 이 컴퓨팅 환경은 실행 시간 쉘, 파서, 및 기본 커맨드를 포함한다. 실행 시간 쉘은 (예컨대, 커맨드 라인을 통해서) 오브젝트 기반의 파이프라인을 수신한다. 실행 시간 쉘은 오브젝트 기반의 파이프라인을 파서로 보내고, 파서는 오브젝트 기반의 파이프라인을 파이프라인 서브컴포넌트들로 파싱한다. 파이프라인 서브컴포넌트들 각각은, 오퍼레이팅 시스템에 의해 제공되는 기본 커맨드나, 제3의 개발자에 의해 제공되는 제3자 커맨드 등의 커맨드에 연관된다. 파서는 제1 파이프라인 서브컴포넌트에 연관된 메소드를 불러낸다. 메소드는, 소정의 입력(예컨대, XML)으로부터, 희망하는 오브젝트를 획득한다. 오브젝트는 후속 처리를 위해 후속 파이프라인 서브컴포넌트들로 보내어진다. 파이프라인 서브컴포넌트들은 동일 프로세스에서 실행될 수 있다.

Description

오브젝트 기반의 파이프라인을 채용한 시스템 및 방법{SYSTEM AND METHOD FOR EMPLOYING OBJECT-BASED PIPELINES}
본 발명은 오브젝트 기반의 파이프라인을 지원하는 환경 및 오브젝트 기반의 파이프라인을 생성 ·처리하기 위한 메커니즘에 관한 것이다.
여러 오퍼레이팅 시스템들은, 오퍼레이팅 시스템의 커맨드 라인(command line)에 입력될 수 있는 사용자 임의 커맨드(custom, ad hoc command)를 생성하기 위해 복수의 애플리케이션(예컨대, 유틸리티)을 "스티치(stitch)"(즉,파이프라인(pipeline))하는 메커니즘을 제공한다. 통상적으로, 이러한 커맨드는 시스템 특성(property) 운용 등을 위해 시스템 관리 툴에서 사용된다. 이러한 커맨드에서의 "파이프라인된(pipelined)" 유틸리티들 각각은 텍스트를 전송함으로써 서로 간의 통신을 행한다. 따라서, 파이프라인에서의 각 유틸리티는 수신된 텍스트를 파싱(parsing)하고, 송신할 텍스트를 포맷팅할 책임을 갖는다. 누구나 알 수 있는 바와 같이, 매우 복잡한 커맨드가 요구되는 경우에, 수 개의 유틸리티들을, 이 복잡한 출력을 생성하는 방식대로 적절히 파이프라인하기 위해서는, 시스템 관리자는 이 유틸리티들을 이해하여야 한다. 각 유틸리티의 상세한 내부 동작 및 수 개의 유틸리티들에 대한 정확한 파이프라인을 이해하는 것은 상당한 시간을 소모하는 일이며, 시스템 관리자에게는 상당한 난제이다. 사실상, 유틸리티들 각각에 대하여 이와 같이 상세한 지식을 가진 사람은 흔치 않다. 따라서, 시스템 관리는 고도로 전문화되어 있다. 따라서, 시스템 관리자가, 파이프라인된 유틸리티들 각각의 상세한 동작을 알지 않아도 사용자 임의 커맨드 라인 기반의 관리 툴을 생성할 수 있게 하는 메커니즘이 필요하다.
본 발명은 오브젝트 기반의 파이프라인을 지원하는 컴퓨팅 환경 및 방법에 관한 것이다. 이 컴퓨팅 환경은 실행 시간 쉘(runtime shell), 파서(parser), 및 기본 커맨드(base command)를 포함한다. 실행 시간 쉘은 (예컨대, 커맨드 라인을 통해서) 오브젝트 기반의 파이프라인을 수신한다. 실행 시간 쉘은 오브젝트 기반의 파이프라인을 파서로 보내고, 파서는 오브젝트 기반의 파이프라인을 파이프라인서브컴포넌트(pipeline sub-component)들로 파싱한다. 파이프라인 서브컴포넌트들은, 오퍼레이팅 시스템에 의해 제공되는 기본 커맨드나, 제3의 개발자에 의해 작성된 제3자 커맨드(third party command), 또는 이들과 유사한 것 중의 하나에 연관되어 있을 수 있다. 파서는 제1 파이프라인 서브컴포넌트에 연관된 메소드를 불러낸다(invoke). 이 메소드는, 소정의 입력(예컨대, XML)으로부터, 희망하는 오브젝트를 획득한다. 이 오브젝트는 후속 처리를 위해 후속 파이프라인 서브컴포넌트들로 보내어진다. 각각의 파이프라인 서브컴포넌트는 동일한 프로세스에서 실행될 수 있다.
도 1은 본 발명의 일 실시예에서 사용될 수 있는 예시적인 컴퓨팅 디바이스를 도시하는 도면.
도 2는 본 발명이 동작할 수 있는 관리 툴 환경의 일 실시예의 개요를 개략적으로 도시하는 블럭도.
도 3은 도 2에 도시된 관리 툴 환경에서 동작하는 제3자 커맨드의 일 실시예를 도시하는 도면.
도 4는 도 1에 도시된 컴퓨팅 디바이스에 도 3에 도시된 제3자 커맨드를 설치하는 것을 예시하는 블럭도.
도 5는 본 발명에 따라 오브젝트 기반의 파이프라인을 실행하기 위한 프로세스를 도시하는 논리적 흐름도.
도 6은 도 5에 사용하기에 적절한 오브젝트를 획득하기 위한 프로세스를 도시하는 논리적 흐름도.
도 7은 예시적인 오브젝트 기반의 파이프라인들과 이들 각각의 출력들 각각을 도시하는 도면.
<도면의 주요 부분에 대한 부호의 설명>
100 : 컴퓨팅 디바이스
102 : 프로세싱 유닛
104 : 시스템 메모리
105 : 오퍼레이팅 시스템
106 : 프로그램 모듈들
107 : 프로그램 데이터
109 : 분리형 저장 장치
110 : 비분리형 저장 장치
112 : 입력 장치(들)
114 : 출력 장치(들)
116 : 통신 접속부(들)
118 : 다른 컴퓨팅 디바이스들
간단히 말하자면, 본 발명은 오브젝트 기반의 파이프라인을 지원하는 환경 및 오브젝트 기반의 파이프라인을 생성 ·처리하기 위한 메커니즘에 관한 것이다. 이하의 상세한 설명을 탐독한 후에 명확히 알 수 있는 바와 같이, 본 발명은, 제3의 개발자가 작성해야 할 코드의 양을 최소화시키고, 시스템 관리자가 시스템 특성들을 운용하는 데 알아야 할 지식의 양을 최소화시킨다. 따라서, 본 발명은 시스템 관리 작업을 현격히 간소화시킨다.
도 1은 본 발명의 일 실시예에 사용될 수 있는 예시적인 컴퓨팅 디바이스를 도시한다. 매우 기본적인 구성으로서, 컴퓨팅 디바이스(100)는 통상적으로, 적어도 하나의 프로세싱 유닛(102)과 시스템 메모리(104)를 포함한다. 컴퓨팅 디바이스의 정밀한 구성 및 종류에 따라서, 시스템 메모리(104)는 휘발성이거나(예컨대, RAM), 비휘발성이거나(예컨대, ROM, 플래시 메모리 등), 혹은 이 두 가지의 특정조합일 수 있다. 시스템 메모리(104)는 통상적으로 오퍼레이팅 시스템(105)과 하나 이상의 프로그램 모듈(106)을 포함하며, 프로그램 데이터(107)를 포함할 수도 있다. 오퍼레이팅 시스템(105)은 오퍼레이팅 시스템 커맨드를 실행하는 커맨드 프로세서(130)를 포함한다. 커맨드 프로세서(130)는 오퍼레이팅 시스템 커맨드를 수신하는 쉘(131)(즉, 커맨드 프로세서 인터페이스)을 포함한다. 쉘은 커맨드 프롬프트를 디스플레이하거나, 그래픽 유저 인터페이스 혹은 사용자 입력을 입력받고 해석하기 위한 임의의 다른 수단을 디스플레이할 수 있다. 쉘(131)은 입력된 커맨드가 유효한지를 확인하고, 확인된 커맨드를 커맨드 프로세서(130)의 다른 부분으로 보내어 실행될 수 있게 한다. 이러한 기본적인 구성은 도 1에 점선(108) 내의 구성 요소들로서 도시되어 있다.
컴퓨팅 디바이스(100)는 추가적인 특징이나 기능을 가질 수 있다. 예를 들면, 컴퓨팅 디바이스(100)는, 예컨대 자기 디스크, 광 디스크, 테이프 등의 추가적인 (분리형 및/또는 비분리형) 데이터 저장 장치를 포함할 수도 있다. 이러한 추가적인 저장 장치는 도 1에 분리형 저장 장치(109) 및 비분리형 저장 장치(110)로서 도시되어 있다. 컴퓨터 저장 매체는, 컴퓨터 판독 가능 명령어(instruction), 데이터 구조, 프로그램 모듈, 기타 데이터 등의 정보의 저장을 위한 임의의 방법이나 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 포함할 수 있다. 시스템 메모리(104), 분리형 저장 장치(109), 및 비분리형 저장 장치(110)는 컴퓨터 저장 매체의 일례일 뿐이다. 컴퓨터 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리나 기타 메모리 기술, CD-ROM, DVD(digital versatile disk)나 기타 광학저장 매체, 자기 카세트, 자기 테이프, 자기 디스크 저장 매체나 기타 자기 저장 장치, 또는 컴퓨팅 디바이스(100)에 의해 액세스될 수 있고 원하는 정보를 저장하는 데 사용될 수 있는 임의의 다른 매체를 포함하지만, 이에 한정되는 것은 아니다. 이러한 임의의 컴퓨터 저장 매체는 컴퓨팅 디바이스(100)의 일부일 수 있다. 또한, 컴퓨팅 디바이스(100)는 키보드, 마우스, 펜, 음성 입력 장치, 접촉(touch)식 입력 장치 등의 입력 장치(들)(112)를 구비할 수 있다. 디스플레이, 스피커, 프린터 등의 출력 장치(들)(114)가 포함될 수도 있다. 이러한 장치들은 본 기술 분야에 공지된 것으로서, 여기서는 지면상 그 이상의 설명은 생략한다.
컴퓨팅 디바이스(100)는 통신 접속부(116)를 더 포함할 수 있다. 통신 접속부에 의해서, 컴퓨팅 디바이스는 다른 컴퓨팅 디바이스들(118)과 예컨대 네트워크를 통해서 통신을 할 수 있다. 통신 접속부(116)는 통신 매체의 일례이다. 통신 매체는 통상적으로, 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈, 반송파나 기타 전송 메커니즘 등의 변조된 데이터 신호에서의 기타 데이터에 의해 구체화될 수 있으며, 임의의 정보 전달 매체를 포함한다. "변조된 데이터 신호"라 함은, 정보가 그 내부에 인코딩되는 방식에 따라 설정 혹은 변경된 하나 이상의 특성을 갖는 신호를 말한다. 예를 들어, 통신 매체는 유선 네트워크나 직접 유선 접속 등의 유선 매체와, 음향, RF, 적외선, 및 그 외 다른 무선 매체 등의 무선 매체를 포함하지만, 이에 한정되지는 않는다. 본 명세서에서 사용되는 컴퓨터 판독 가능 매체라는 용어는 저장 매체와 통신 매체를 모두 포함하는 것이다.
도 2는 본 발명이 동작할 수 있는 관리 툴 환경의 일 실시예에 대한 개요를개략적으로 도시하는 블럭도이다. 관리 툴 환경(200)은 실행 시간 쉘(202), 파서(204), 및 기본 커맨드(206)를 포함한다. 실행 시간 쉘(202), 파서(204), 및 기본 커맨드(206)는 도 1에 도시된 오퍼레이팅 시스템(105)의 일부일 수 있다. 또한, 관리 툴 환경(200)은 플랫폼 커맨드(208), 호스트 커맨드(210), 및 하나 이상의 제3자 커맨드(212)를 포함할 수 있다. 플랫폼 커맨드(208) 및 호스트 커맨드(210)는 각각, 관리 툴 환경이 호스트에 호스팅되어 특정된 컴퓨터의 종류에 고유한 커맨드이다. 도 3에 관하여 후술될 제3자 커맨드(212)는 제3의 개발자에 의해 공급되는 것으로서, 통상적으로는 관리 시스템이나 제3자 애플리케이션 특성에 관한 것이다. 후술되는 바와 같이, 본 발명의 관리 툴 환경(200)에 의하면, 시스템 관리자는 기본 커맨드(206), 호스트 커맨드(210), 플랫폼 커맨드(208) 모두에 대한 상세한 이해없이도 시스템 특성을 관리할 수 있다. 또한, 이러한 관리 툴 환경(200)에 의하면, 시스템 관리자는 거의 코드하지 않고도 제3자 커맨드(212)를 작성할 수 있다. 후술되는 바와 같이, 제3자 커맨드(212)가 비교적 코드를 갖지 않더라도, 제3자 커맨드(212)는 복잡한 관리 기능과 툴들을 제공할 수 있도록 다른 커맨드들과 용이하게 파이프라인될 수 있다.
이제, 관리 툴 환경(200)의 예를 상세히 설명하기 전에, 도 7에 도시된 오브젝트 기반의 파이프라인의 예를 먼저 설명한다. 도 7은 3개의 예시적인 오브젝트 기반의 파이프라인(702, 722, 742)을 도시한다. 오브젝트 기반의 파이프라인(702)은 커맨드 프롬프트(704), 파이프라인 문자(708), 및 파이프라인 서브컴포넌트(706 및 710)를 포함한다. 일반적으로, 각각의 파이프라인 서브컴포넌트는 플랫폼 커맨드, 호스트 커맨드, 제3자 커맨드, 기본 커맨드 등일 수 있다. 후술되는 바와 같이, 이러한 종류의 커맨드들 각각은 동일한 메커니즘을 사용하여 생성되고, 동일한 방식으로 동작한다. 도 7에서, 제1 파이프라인 서브컴포넌트(706)는 제3자 커맨드를 나타낸다. 그러나, 상술한 바와 같이, 제1 파이프라인 서브컴포넌트(706)는 플랫폼 커맨드, 호스트 커맨드, 혹은 기본 커맨드일 수 있다. 커맨드 프롬프트(704)는 도시된 바와 같이 달러 기호 "$"와 같은 임의의 지시자일 수 있다. 파이프라인 문자(708)는 파이프라인 서브컴포넌트들(706 및 710) 각각을 구분하는 것이다. 파이프라인 문자(708)는 여러 형식자 중 하나를 취할 수 있지만, 전형적으로는 라인 "|"으로 표시된다. 오브젝트 기반의 파이프라인(702)은 임의의 개수의 파이프라인 컴포넌트들을 가질 수 있으며, 파이프라인 컴포넌트들 각각은 파이프라인 문자(708)에 의해 구분된다. 통상적으로, 최후의 파이프라인 서브컴포넌트(예컨대, 서브컴포넌트(710))는 디스플레이 상의 텍스트와 같이 정보를 출력하기 위한 것일 수 있다. 파이프라인 서브컴포넌트(706 및 710)는, 파이프라인 서브컴포넌트(710)에서 알 수 있는 바와 같이 파라미터를 취할 수도 있고, 파이프라인 서브컴포넌트(706)에서 알 수 있는 바와 같이 파라미터를 취할 필요가 없을 수도 있다. 파이프라인 서브컴포넌트(706 및 710) 각각은 "get/process", "format/table"과 같이 동사/명사 쌍으로 표현된다. 이러한 동사 혹은 명사는 파이프라인 서브컴포넌트(706 및 710)를 함축적으로 표현하는 것일 수 있다.
도 7에 도시된 오브젝트 기반의 파이프라인(702)이 구문(syntax) 면에서 텍스트 기반의 파이프라인과 유사하게 보일 수도 있지만, 오브젝트 기반의 파이프라인(702)의 파이프라인 및 실행을 위한 근본적인 메커니즘은 현격히 차별화된다. 예를 들어, 텍스트 기반의 파이프라인에서는, 파이프라인 커맨드 각각은 개별적인 유틸리티 즉, 독립형(stand-alone) 실행 가능 프로그램이다. 또한, 각각의 개별 유틸리티는 텍스트 형태로 출력하고, 각각의 유틸리티는 텍스트에 대한 고유한 처리를 실행하기 이전에 그 텍스트를 해석해야만 한다. 이와 달리, 본 발명에 따르면, 파이프라인 서브컴포넌트들(706 및 710)은 서로 간에 오브젝트들(예컨대, 오브젝트 집합)을 주고 받는다. 일 실시예에서는, 오브젝트들에 대한 이전의 파이프라인 서브컴포넌트에서의 처리를 완료하고나서 그 후속 파이프라인 서브컴포넌트가 처리를 개시하도록, 오브젝트들은 각각의 후속 파이프라인 서브컴포넌트(706 및 710)에 배치(batch)된다. 다른 실시예에서는, 오브젝트들에 대한 처리가 병렬로 수행될 수 있도록, 오브젝트들은 다중 파이프라인 서브컴포넌트(multiple pipeline subcomponents)에 보내어질 수 있다. 또 다른 실시예에서는, 하나 이상의 파이프라인 서브컴포넌트가 동일한 프로세스에서 실행될 수도 있다. 파이프라인 서브컴포넌트와, 파이프라인 서브컴포넌트들 간의 오브젝트는 서로 다른 시스템에서 파생된 것일 수 있다.
도 2를 참조하면, 실행 시간 쉘(202)은 오퍼레이팅 시스템 커맨드(예컨대, 오브젝트 기반의 파이프라인)를 수신한다. 오퍼레이팅 시스템 커맨드는 리치 콘솔 호스트(rich console host)(254), GUI(graphic user interface) 호스트(256), 혹은 제3자 호스트(도시되지 않음)를 통해서 입력될 수 있다. 실행 시간 쉘(202)은 오퍼레이팅 시스템 커맨드를 수신하면, 해당 오퍼레이팅 시스템 커맨드가 유효한 것인지를 확인한다. 확인된 커맨드가 오브젝트 기반의 파이프라인인 경우, 실행 시간 쉘(202)은 이 커맨드를 파서(204)로 보낸다. 간단히 말하자면, 파서(204)는 오브젝트 기반의 파이프라인을 파이프라인 서브컴포넌트들로 파싱하는 것이다. 다음으로, 파서(204)는 제1 파이프라인 서브컴포넌트와 연관된 메소드를 불러낸다. 파서(204)는 하나 이상의 오브젝트를 생성하며, 오브젝트는 파서(204)에 의해 식별된 후속 파이프라인 서브컴포넌트들 각각에 의한 처리에 사용된다. 통상적으로, 최종 파이프라인 서브컴포넌트는 콘솔 기반의 호스트용 텍스트 등의 정보를 출력한다.
또한, 관리 툴 환경(200)은, 정밀한 파싱이 가능한 입력(precisely parseable input)(216)을 액세스할 수 있도록 구성된 확장 타입 리플렉터(extended type reflector)(214)를 포함할 수 있다. 실행 시간 쉘(202), 제3자 커맨드(212), 기본 커맨드(206), 리치 콘솔 호스트(254), 및 GUI 호스트(256)는 각각, 확장 타입 리플렉터(214)를 통해 정밀한 파싱이 가능한 입력(216)에 액세스할 수 있다. 이하의 논의에 있어, 정밀한 파싱이 가능한 입력(216)이란, 특성과 값이 구분될 수 있는 입력이라고 정의한다. 정밀한 파싱이 가능한 입력(216)의 예로는, WMI(Windows Management Instrumentation) 입력(232), ADO(ActiveX Data Objects) 입력(234), XML(eXtensible Markup Language) 입력(236), .NET object 등의 오브젝트 입력이 포함된다. 그 외에, 정밀한 파싱이 가능한 입력으로는 제3자 데이터 포맷(240)이 포함될 수 있다.
일반적으로, 확장 타입 리플렉터(214)는 리플렉션(reflection) 기반의 처리를 지원한다. 리플렉션 기반의 처리라 함은, 해당 오브젝트의 상세에 대한 이해를필요로 하지 않고도 실행 가능 코드가 해당 오브젝트의 특성에 액세스할 수 있는 메커니즘을 말한다. 오브젝트 그 자체는, 요청하는 실행 가능 코드에게 오브젝트의 특성이 무엇인지와 그 값은 얼마인지를 알려준다. 이로써, 실행 가능 코드는 오브젝트에 대해 독립될 수 있다. 또한, 본 발명에 따르면, 확장 타입 리플렉터(214)는 ADO 입력(234) 등의 넌(non)-오브젝트 타입 입력에 대한 리플렉션을 제공한다. 예를 들어, 정밀한 파싱이 가능한 입력(216)이 ADO 입력(234)이라고 가정하면, 실행 가능 코드가 ADO 입력에게 그 특성에 대해 질의한 경우에, ADO 입력(234)은 컬럼 특성(column property) 및 로우 특성(row property)의 2가지 특성을 반환한다. 단, 이들 2가지 특성은 ADO 입력(234) 내의 "오브젝트"에 관한 매우 상세한 정보를 제공하지는 않는다. 따라서, 본 발명에 따르면, 확장 타입 리플렉터(214)는 실행 가능 코드가 ADO 입력에 질의한 것을 인식하고, ADO 입력(234)에, 그 특성이 아닌 컬럼 명칭을 질의한다. 그 응답으로, ADO 입력(234)은 컬럼 명칭을 반환환다. 컬럼 명칭은 특성으로서 실행 가능 코드로 반환된다. 따라서, 확장 타입 리플렉터(214)는 임의의 타입의 정밀한 파싱이 가능한 입력(216)으로부터 "오브젝트"를 생성하도록 구성된다.
정밀한 파싱이 가능한 입력(216)으로부터 오브젝트를 생성하기 위해, 관리 툴 환경(200)은 타입 주석 및 확장 카탈로그(218)를 더 포함한다. 타입 주석 및 확장 카탈로그(218)는, 소정의 입력 타입의 오브젝트를 생성하기 위해 희망하는 특성을 획득할 수 있도록 확장 타입 리플렉터(214)가 각종 타입의 입력(216)을 질의하는 방법을 기술한다. 따라서, 확장 타입 리플렉터(214)는 모든 타입의 오브젝트에 대한 리플렉션을 허용하는 간접층(layer of indirection)을 제공한다. 예를 들어, 입력 타입이 XML인 경우에는, XML을 기술하는 기술 파일(description file)이, XML 문서로부터 오브젝트를 생성하는 데 사용된다.
관리 툴 환경(200)은 정책 엔진(250) 및 웹 서비스(252)를 더 포함할 수 있다. 파서(204) 및 실행 시간 쉘(202)은 플랫폼 커맨드(208), 호스트 커맨드(210), 제3자 커맨드(212) 등의 임의의 커맨드를 불러낼 경우에 정책 엔진(250)을 통해 통신할 수 있다. 웹 서비스(252)는 관리 툴 환경(200)이 네트워크를 통해서 동작할 수 있게 한다. 웹 서비스(252)는 파서(204), 실행 시간 쉘(202), 및 확장 타입 리플렉터(214)와 통신한다. 또한, 기본 커맨드(206)는 웹 서비스(252)를 통해 액세스될 수 있다.
도 3은 파이프라인 서브컴포넌트(즉, cmdlet)를 생성하는 일 실시예이다. 완료 시에, cmdlet은 플랫폼 커맨드, 호스트 커맨드, 제3자 커맨드, 혹은 기본 커맨드일 수 있다. 이하의 논의는 제3 개발자에 의해 작성될 수 있는 제3자 커맨드의 생성에 관한 것이다. 제3자 커맨드는 도 2에 도시된 관리 툴 환경에서 동작한다. 제3자 커맨드(300)는 퍼블릭 클래스(public class)인 ProcessCmd 클래스와 같은 커맨드 클래스(302)를 포함한다. 커맨드 클래스(302)는 예상된 입력 파라미터에 대한 문법(grammar)을 정의하기 위한 문법 메커니즘(303), 스태틱 메소드(static method)(318), cmdlet(즉, "get/process")를 스태틱 메소드(318)와 연관시키기 위한 커맨드 속성(command attribute)(312)을 포함한다.
일 실시예에서, 문법 메커니즘은 ProcessReq 클래스 등의 입력 파라미터 클래스(304)를 포함한다. 입력 파라미터 클래스(304)는, 입력 파라미터 클래스(304) 내에 정의된 예상된 파라미터에 따라, (예컨대, 커맨드 라인을 통해) 커맨드에 입력된 파라미터를 처리하도록 관리 툴 환경이 제공하는 RequestObject 클래스(306)로부터 파생된 것이다. 입력 파라미터 클래스(304)는 하나 이상의 멤버 선언(310)을 포함한다. 멤버 선언(310)은 제3자 커맨드의 예상된 입력 파라미터들 중 하나에 대응한다. 또한, 입력 파라미터 클래스(304)는 멤버 선언(310)들 중 하나에 연관된 하나 이상의 지시어(directive)(308)를 포함할 수 있다. 도 3에 도시된 입력 파라미터 클래스(304)에서, 지시어(308)는 오브젝트 기반의 파이프라인 커맨드의 제1 예상 파라미터로서 "Name"을 식별한다. 입력 파라미터의 처리가 완료되면, 입력 파라미터는 파라미터(322)로서 스태틱 메소드(318)에 제공된다. 그러면, 스태틱 메소드(318)는 예상된 파라미터(예컨대, "req.Name")를 이용하여 처리를 수행할 수 있다. 이러한 문법 메커니즘(303)에 대한 추가적인 정보는, 본 출원인에게 양도되었으며 발명의 명칭이 "커맨드의 입력 파라미터에 대한 리플렉션 기반의 처리(Reflection-based Processing of Input Parameters for Commands)"인 미국특허출원 제________호로부터 얻을 수 있다. 상기 출원의 내용은 본 명세서에 참조로서 포함되어 있다.
커맨드 속성(312)은, 제3자 커맨드(300)에 연관되어 있는 오브젝트 기반의 파이프라인에 나타나는 텍스트 파라미터(314 및 316)를 식별한다. 간단히 말해서, 파서(204 ; 도 2)는 오브젝트 기반의 파이프라인 커맨드를 파싱할 때 텍스트 파라미터(314 및 316)를 인식한다. 텍스트 파라미터(314 및 316)를 인식하면,파서(304)는 스태틱 메소스(318)의 위치를 알아내어, 이를 불러낸다. 스태틱 메소드(318)의 처리는 파이프라인 서브컴포넌트들 간에 전달되는 오브젝트 혹은 오브젝트 집합을 생성하는 것을 담당한다. 스태틱 메소드(318)는, 도 3에 도시된 System.Diagnostics.Process(320)와 같이 오퍼레이팅 시스템에 의해 제공되는 시스템 메소드를 호출할 수도 있고, 제3자 코드를 호출할 수도 있고, 그 밖의 다른 것을 호출할 수도 있다.
도 4는 도 1에 도시된 컴퓨팅 디바이스에 도 3에 도시된 제3자 커맨드를 설치하는 것을 예시하는 블럭도이다. 상술한 바와 같이, 제3자 커맨드의 설치는 본질적으로 플랫폼 커맨드, 호스트 커맨드, 및 기본 커맨드의 설치와 유사하다. 제3자 커맨드(300)가 코드화된 후에는, 제3자 커맨드(300)는 컴파일을 실행하는 컴파일러(402)에 입력된다. 컴파일러(402)는 실행 가능 코드(404) 및 기술 파일(406)을 출력한다. 시스템 관리자가 소정의 컴퓨팅 디바이스에 제3자 커맨드(300)를 설치하고자 하는 경우, 실행 가능 코드(404) 및 기술 파일(406)은 상기 소정의 컴퓨팅 디바이스(도시되지 않음)에 다운로드(화살표로 도시되어 있음)된다. 통상적으로, 제3자 커맨드가 개발된 컴퓨팅 디바이스와 상기 소정의 컴퓨팅 디바이스는 이종이다. 실행 가능 코드(404) 및 기술 파일(406)이 다운로드되면, 제3자 커맨드에 관한 정보는 카탈로그(418)에 저장된다. 이 정보는 도 3에 도시된 텍스트 파라미터(314 및 316)에 연관되어 있는 실행 가능 코드(414) 뿐만 아니라 제3자 커맨드를 실행하는 데 중요한 그 외의 다른 데이터를 검색하기 위한 위치를 식별한다. 다음으로, 상기 소정의 컴퓨팅 디바이스 상의 오퍼레이팅 시스템은 텍스트파라미터(314 및 316)를 인식하고, 카탈로그 내(418)에 식별되어 있는 스태틱 메소스(318)를 불러낸다.
도 5는 본 발명에 따른 오브젝트 기반의 파이프라인을 실행하기 위한 프로세스를 예시하는 논리적 흐름도이다. 이 프로세스는, 실행 시간 쉘이 커맨드 라인에 입력된 오브젝트 기반의 파이프라인을 인식하면, 개시된다. 처리는 블럭(502)으로 진행한다.
블럭(502)에서, 오브젝트 기반의 파이프라인은 하나 이상의 파이프라인 서브컴포넌트 및 그에 연관된 입력 파라미터를 식별하기 위해 파싱된다. 발명의 명칭이 "커맨드의 입력 파라미터에 대한 리플렉션 기반의 처리"인 상기 미국특허출원은 오브젝트 기반의 파이프라인을 파싱하는 일 실시예를 개시한다. 오브젝트 기반의 파이프라인이 파싱되면, 처리는 블럭(504)으로 진행한다.
블럭(504)에서, 파서는 제1 파이프라인 서브컴포넌트에 연관되어 있는 메소드를 식별한다. 일 실시예에서, 이러한 식별은 카탈로그 내의 텍스트 파라미터를 탐색(look up)함으로써 수행된다. 다음으로, 카탈로그는 연관되어 있는 메소드의 위치를 제공한다. 처리는 블럭(506)으로 진행한다.
블럭(506)에서, 식별된 메소드(예를 들면, 도 3에 도시된 GetProcess 메소드(318))가 불려온다. 블럭(508)에서, 이 메소드는 그 다음의 파이프라인 서브컴포넌트로 전달될 오브젝트를 획득한다. 몇몇 경우에서, 오브젝트를 획득하는 것은 오브젝트를 직접 획득하는 것을 포함한다. 이는, 정보가 .NET object와 같이 본래 오브젝트 형태인 경우에 발생한다. 다른 경우에는, 도 6에 관하여 후술되는바와 같이, 오브젝트를 획득하는 것은 여러 입력 타입들 중 하나로부터 오브젝트를 형성하는 것을 포함한다. 오브젝트 혹은 오브젝트들이 획득되면, 처리는 결정 블럭(510)으로 진행한다.
결정 블럭(510)에서, 오브젝트 기반의 파이프라인이 또 다른 파이프라인 서브컴포넌트를 포함하는지의 여부가 결정된다. 도 7에 관하여 상술한 바와 같이, 오브젝트 기반의 파이프라인은 수개의 파이프라인 서브컴포넌트를 포함할 수 있다. 또 다른 파이프라인 서브컴포넌트가 존재하는 한, 처리는 블럭(512)으로 진행한다.
블럭(512)에서, 오브젝트의 참조(예컨대, 핸들(handle))는 후속 파이프라인 서브컴포넌트로 전달된다. 또 다른 실시예에서, 오브젝트의 참조는 오브젝트를 병렬 처리하기 위한 다중 파이프라인 서브컴포넌트로 보내어질 수 있다. 오브젝트가 리플렉션을 지원하도록 생성되기 때문에, 각각의 오브젝트는 후속 파이프라인 서브컴포넌트에게 해당 오브젝트가 가진 특성 및 그에 연관된 값이 무엇인지를 알려준다. 처리는 블럭(514)으로 진행한다.
블럭(514)에서, 후속 파이프라인 서브컴포넌트는 오브젝트에 대한 처리를 수행한다. 후속 파이프라인 서브컴포넌트는 오브젝트의 서브세트(subset)를 생성하거나, 오브젝트들을 정렬하거나, 혹은 블럭(508)에서 생성된 오브젝트들에 대한 또 다른 처리를 수행할 수 있다. 예를 들어, 서브컴포넌트는 시스템 관리자가 출력하고자 하는 특성을 선택하는 데 사용될 수 있는 정보를 그래프 형식으로 디스플레이할 수 있다. 서브컴포넌트가 그 처리를 수행하고 나면, 처리는 결정 블럭(510)으로 되돌아 간다. 또 다른 파이프라인 서브컴포넌트가 존재하면, 이 또 다른 파이프라인 서브컴포넌트를 위해 블럭(512 및 514)의 처리가 수행된다. 통상적으로, 최후의 파이프라인 서브컴포넌트는 오브젝트에 관한 정보를 텍스트 등으로 출력한다. 파이프라인 서브컴포넌트들 각각이 그 각각의 처리를 수행하고 난 후에는 처리가 완료되어 종료로 진행한다.
도 6은 도 5에 사용되기에 적절한 오브젝트를 얻기 위한 프로세스를 예시하는 논리적 흐름도이다. 처리는 블럭(601)에서 개시되어, 결정 블럭(602)으로 진행한다. 결정 블럭(602)에서, 메소드에서 요청한 입력이 정밀한 파싱이 가능한 입력인지의 여부가 판정된다. 상술한 바와 같이, 오브젝트 정보는 .NET object 등의 오브젝트로부터, WMI 입력으로부터, ADO 입력으로부터, XML 입력으로부터, 그리고 그 외의 다른 제3자 포맷으로부터 구해질 수 있다. 블럭(602)에서 해당 입력이 정밀한 파싱이 가능한 입력이 아니라고 판정된 경우에는, 해당 입력은 유효하지 않다. 따라서, 이는 오류로서, 해당 오브젝트 기반의 파이프라인은 처리되지 않는다. 처리는 종료로 진행된다.
결정 블럭(602)로 되돌아가서, 해당 입력이 정밀한 파싱이 가능한 입력이라고 판정된 경우에, 처리는 결정 블럭(604)으로 진행한다. 결정 블럭(604)에서, 해당 입력이 .NET object와 같은 오브젝트 타입인지의 여부가 판정된다. 해당 입력이 본래 오브젝트 포맷인 경우, 처리는 블럭(606)으로 진행한다.
블럭(606)에서, 요청된 특성을 갖는 오브젝트가 검색된다. 리플렉션은 이와 같이 요청된 특성을 획득하는 데 사용될 수 있다. 모든 오브젝트가 구해지면, 처리는 반환 블럭으로 진행하여, 도 5로 되돌아간다.
한편, 결정 블럭(604)에서 해당 입력이 오브젝트 타입이 아닌 것으로 판정되면, 처리는 블럭(608)으로 진행한다. 블럭(608)에서, 오브젝트의 특성이 입력의 타입에 기초하여 획득된다. 확장 타입 리플렉터는, 타입 주석 및 확장부와 연동하여, 해당 입력으로부터 소정의 특성을 획득하는 데 사용된다. 타입 주석 및 확장부는 소정의 특성을 획득하기 위한 입력 포맷을 기술한다. 특성이 획득되면, 처리는 블럭(610)으로 진행한다.
블럭(610)에서, 블럭(608)에서 획득된 특성에 대한 값이 획득된다. 본 기술 분야의 당업자는 요청된 특성마다 해당 특성 및 값이 획득되고 나서 그에 후속하는 특성이 획득된다는 것을 알 것이다. 따라서, 처리 블럭들은 소망하는 전체적인 결과를 달성하기 위해서 다양한 순서로 수행될 수 있다. 특성들과 이에 대응하는 값들이 획득되고 나면, 처리는 블럭(612)으로 진행한다.
블럭(612)에서, 획득된 특성 및 값을 갖는 오브젝트가 생성된다. 이 오브젝트는 그 자체가 리플렉션을 지원하는 방식으로 생성된다. 다음으로, 처리는 반환 블럭으로 진행하여, 도 5로 되돌아 간다.
도 7을 다시 참조하여, 3개의 예시적인 오브젝트 기반의 파이프라인(702, 722, 742)를 더 상세히 설명한다. 오브젝트 기반의 파이프라인(702)은 2개의 파이프라인 서브컴포넌트(706 및 710)를 갖는다. 파이프라인 서브컴포넌트(710)는 텍스트를 디스플레이부로 출력한다. 파이프라인 서브컴포넌트(710)는 기본 커맨드 "format/table"을 포함한다. 이 기본 커맨드는 출력의 배치 형태를 특정하는 포맷 파라미터(예컨대, name, pid, ws, hadlecount)를 수신한다. 따라서, 텍스트(712)는, 특성 명을 제1행으로 갖고, 오브젝트 기반의 파이프라인(702)를 통한 처리 중에 획득된 오브젝트들마다의 특성에 대한 값을 각각 갖는 후속하는 행들을 갖는 테이블이다.
제2 예로서, 오브젝트 기반의 파이프라인(722)은 2개의 파이프라인 서브컴포넌트(706 및 710)를 포함한다. 또한, 파이프라인 서브컴포넌트(710)의 앞에 있는 2개의 추가적인 파이프라인 서브컴포넌트(즉, 파이프라인 서브컴포넌트(724 및 726))가 존재한다. 파이프라인 서브컴포넌트(724)는 제1 파이프라인 서브컴포넌트(706)가 반환한 오브젝트들의 서브세트를 생성한다. 파이프라인 서브컴포넌트(726)는 이 서브세트의 순서를 재정렬한다. 또한, 파이프라인 서브컴포넌트(710)는 텍스트(즉, 텍스트(728))를 출력한다.
제3 예로서, 오브젝트 기반의 파이프라인(742)은 파이프라인 서브컴포넌트(724 및 726)를 포함하지만, 파이프라인 서브컴포넌트(710)를 변경한다 (이하, 이를 변경 파이프라인 서브컴포넌트(710')라고 지칭함). 변경 파이프라인 서브컴포넌트(710')는 커맨드 라인의 파라미터들 중 하나에 속성을 부가함으로써, 테이블 내의 해당 파라미터의 출력을 변경한다. 여기서, 작업 세트(working set : ws) 파라미터는 ws.kb이며, ws.kb란, 작업 세트가 킬로바이트 단위로 디스플레이된다는 것을 의미한다. 본 발명의 일 실시예에서, 오브젝트 자체가 오브젝트를 포함하기 때문에, 본 발명은 서브컴포넌트들을 파이프라인할 때 이러한 복잡성을 이용할 수 있다. 예를 들어, 관리자가 출력 혹은 처리하고자 하는 오브젝트들의 하위 특성들을 "내비게이팅(navigating)"할 수 있다. 그에 맞게, 커맨드 라인의 구문은, 오브젝트와 해당 오브젝트의 하위 특성 사이에 "."를 삽입하는 방식 등으로 변경될 수 있다.
명칭을 알파벳 순으로 정렬하고, 각각의 오브젝트가 적어도 12,000K의 작업 세트를 갖는 오브젝트 서브세트를 생성하는 등의 여러 가지 다른 예들이 용이하게 실시될 수 있다. 시스템 관리자가 기본 커맨드(예컨대, where, sort, format)의 상세를 알지 않고도 상기 및 그 외의 다른 변경 사항들을 커맨드 라인에 용이하게 입력할 수 있다. 그러므로, 본 발명은 시스템 관리의 복잡성을 현격히 감소시킨다.
상술한 설명, 예, 및 정보는 본 발명의 구성의 사용 및 제조에 대한 완전한 설명을 제공한다. 본 발명의 사상 및 범주를 일탈하지 않는 범위 내에서 본 발명의 여러 실시예들이 이루어질 수 있으므로, 본 발명은 이하의 특허청구범위에 귀속한다.
본 발명에 의하면, 제3의 개발자가 작성해야 할 코드의 양을 최소화시키고, 시스템 관리자가 시스템 특성들을 운용하는 데 알아야 할 지식의 양을 최소화시키며, 따라서 본 발명은 시스템 관리 작업을 현격히 간소화시킨다.

Claims (25)

  1. 파이프라인(pipeline)을 채용한 컴퓨터 실행 가능 명령어(instruction)들을 갖는 컴퓨터 판독 가능 매체에 있어서,
    상기 명령어들은,
    오브젝트 기반의 파이프라인(object-based pipeline)을 수신하고;
    상기 오브젝트 기반의 파이프라인을 복수의 파이프라인 서브컴포넌트(pipeline sub-component)로 파싱(parsing)하며;
    상기 복수의 파이프라인 서브컴포넌트 중에서 제1 파이프라인 서브컴포넌트에 연관된 메소드(method)를 불러내고(invoking) - 상기 메소드는 상기 제1 파이프라인 서브컴포넌트에 관련된 오브젝트를 적어도 하나 생성함 -;
    상기 적어도 하나의 오브젝트를 후속 파이프라인 서브컴포넌트로 보내어 처리하는 - 상기 후속 파이프라인 서브컴포넌트는 상기 복수의 파이프라인 서브컴포넌트 중 하나임 -
    것을 포함하는 컴퓨터 판독 가능 매체.
  2. 제1항에 있어서,
    상기 오브젝트 기반의 파이프라인을 수신하는 것은, 커맨드 라인(command line)을 통하여 이루어지는 컴퓨터 판독 가능 매체.
  3. 제1항에 있어서,
    상기 제1 파이프라인 서브컴포넌트는 오퍼레이팅 시스템에 의해 제공되는 기본 커맨드(base command)에 대응하는 컴퓨터 판독 가능 매체.
  4. 제1항에 있어서,
    상기 제1 파이프라인 서브컴포넌트는 제3자 커맨드(third party command)에 대응하는 컴퓨터 판독 가능 매체.
  5. 제1항에 있어서,
    상기 적어도 하나의 오브젝트를 상기 후속 파이프라인 서브컴포넌트로 보내는 것은, 상기 적어도 하나의 오브젝트 각각에 대한 핸들(handle)을 상기 후속 파이프라인 서브컴포넌트로 보내는 것을 포함하는 컴퓨터 판독 가능 매체.
  6. 제1항에 있어서,
    상기 적어도 하나의 오브젝트를 보내는 것은, 상기 적어도 하나의 오브젝트를 다중 파이프라인 서브컴포넌트들(multiple pipeline sub-components)로 보내는 것을 포함하는 컴퓨터 판독 가능 매체.
  7. 제1항에 있어서,
    복수의 오브젝트를 생성하는 것은, 해당 오브젝트의 특성 명칭(propertyname)들을 리플렉션(reflection)을 통해서 획득하는 것을 포함하는 컴퓨터 판독 가능 매체.
  8. 제1항에 있어서,
    복수의 오브젝트를 생성하는 것은, 입력 소스(input source)로부터의 정보에 기초하는 컴퓨터 판독 가능 매체.
  9. 제8항에 있어서,
    상기 입력 소스는 XML 기반의 문서(document)를 포함하는 컴퓨터 판독 가능 매체.
  10. 오브젝트 기반의 파이프라인을 지원하는 데이터 구조가 인코딩되어 있는 컴퓨터 판독 가능 매체에 있어서,
    상기 데이터 구조는,
    커맨드에 대한 적어도 하나의 예상되는 파라미터에 대한 처리를 지정하기 위한 입력 파라미터 구조 - 상기 예상되는 파라미터는 상기 커맨드가 불려올 때에 제공됨 -;
    적어도 하나의 오브젝트를 생성하고, 상기 적어도 하나의 오브젝트를 상기 오브젝트 기반의 파이프라인의 후속 커맨드에 제공하기 위한 스태틱 메소드(static method); 및
    상기 스태틱 메소드를 입력에 연관시키기 위한 커맨드 속성(command attribute) - 상기 입력은 상기 커맨드를 불러내기 위해 제공되는 것임 -
    을 포함하는 컴퓨터 판독 가능 매체.
  11. 제10항에 있어서,
    상기 입력은 커맨드 라인을 포함하는 컴퓨터 판독 가능 매체.
  12. 제10항에 있어서,
    상기 스태틱 메소드는 상기 입력 파라미터 구조의 정보를 전달하는 컴퓨터 판독 가능 매체.
  13. 파이프라인 커맨드들(pipelined commands) 간의 통신을 위한, 컴퓨터 구현의 방법에 있어서,
    제1 파이프라인 커맨드에 의해 적어도 하나의 오브젝트를 생성하는 단계;
    상기 적어도 하나의 오브젝트에 대한 참조(reference)를 상기 제1 파이프라인 커맨드로부터 제2 파이프라인 커맨드로 보내는 단계; 및
    상기 적어도 하나의 오브젝트에 대한 처리를 상기 제2 파이프라인 커맨드에 의해 수행하는 단계
    를 포함하는 컴퓨터 구현 방법.
  14. 제13항에 있어서,
    상기 제1 파이프라인 커맨드는 제3의 개발자에 의해 제공되는 제3자 커맨드인 컴퓨터 구현 방법.
  15. 제13항에 있어서,
    상기 제1 파이프라인 커맨드는 오퍼레이팅 시스템에 의해 제공되는 기본 커맨드인 컴퓨터 구현 방법.
  16. 제13항에 있어서,
    상기 제1 파이프라인 커맨드 및 상기 제2 파이프라인 커맨드는 동일한 프로세스에서 실행되는 컴퓨터 구현 방법.
  17. 제13항에 있어서,
    상기 적어도 하나의 오브젝트에 대한 상기 참조를 제3 파이프라인 커맨드로 보내어 병렬 처리되게 하는 단계
    를 더 포함하는 컴퓨터 구현 방법.
  18. 제13항에 있어서,
    상기 제2 파이프라인 커맨드는 상기 적어도 하나의 오브젝트의 서브세트를 제3 파이프라인 커맨드로 보내는 컴퓨터 구현 방법.
  19. 파이프라인 커맨드를 처리하는 시스템에 있어서,
    프로세서; 및
    메모리
    를 포함하고,
    상기 메모리에, 상기 프로세서에 의한 실행을 위해 상기 메모리에 로딩되는 복수의 컴퓨터 실행 가능 명령어용의 공간이 할당되며,
    상기 컴퓨터 실행 가능 명령어는,
    파이프라인 커맨드의 수신에 응답하여, 상기 파이프라인 커맨드를 복수의 파이프라인 서브컴포넌트로 파싱하는 단계;
    제1 파이프라인 서브컴포넌트에 연관된 메소드를 불어내는 단계 - 상기 메소드는 희망하는 적어도 하나의 오브젝트를 생성함 -; 및
    상기 적어도 하나의 오브젝트를 후속 파이프라인 서브컴포넌트로 보내어 처리하는 단계
    를 포함하는 방법을 실행하는 시스템.
  20. 제19항에 있어서,
    상기 제1 파이프라인 서브컴포넌트는 오퍼레이팅 시스템에 의해 제공되는 기본 커맨드에 대응하는 시스템.
  21. 제19항에 있어서,
    상기 제1 파이프라인 서브컴포넌트는 제3자 커맨드에 대응하는 시스템.
  22. 제19항에 있어서,
    상기 파이프라인 커맨드는 커맨드 라인을 통해 수신되는 시스템.
  23. 제19항에 있어서,
    상기 적어도 하나의 오브젝트를 상기 후속 파이프라인 서브컴포넌트로 보내는 것은, 오브젝트 각각의 핸들을 상기 후속 파이프라인 서브컴포넌트로 보내는 것을 포함하는 시스템.
  24. 파이프라인 커맨드들 간의 통신을 위한, 컴퓨터 구현의 시스템에 있어서,
    제1 파이프라인 커맨드에 의해 적어도 하나의 오브젝트를 생성하는 수단;
    상기 적어도 하나의 오브젝트에 대한 참조를 상기 제1 파이프라인 커맨드로부터 제2 파이프라인 커맨드로 보내는 수단; 및
    상기 적어도 하나의 오브젝트에 대한 처리를 상기 제2 파이프라인 커맨드에 의해 수행하는 수단
    을 포함하는 시스템.
  25. 제24항에 있어서,
    상기 제1 파이프라인 커맨드 및 상기 제2 파이프라인 커맨드는 커맨드 라인을 통해서 입력되는 시스템.
KR1020040033432A 2003-05-12 2004-05-12 오브젝트 기반의 파이프라인을 채용한 시스템 및 방법 KR20040097937A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/438,235 2003-05-12
US10/438,235 US7526770B2 (en) 2003-05-12 2003-05-12 System and method for employing object-based pipelines

Publications (1)

Publication Number Publication Date
KR20040097937A true KR20040097937A (ko) 2004-11-18

Family

ID=33449735

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020040033432A KR20040097937A (ko) 2003-05-12 2004-05-12 오브젝트 기반의 파이프라인을 채용한 시스템 및 방법

Country Status (5)

Country Link
US (2) US7526770B2 (ko)
EP (1) EP1548577A3 (ko)
JP (1) JP2004342107A (ko)
KR (1) KR20040097937A (ko)
CN (1) CN1550985A (ko)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050091424A1 (en) * 2003-10-24 2005-04-28 Snover Jeffrey P. Mechanism for analyzing partially unresolved input
US7594170B2 (en) * 2003-10-24 2009-09-22 Microsoft Corporation Mechanism for providing data driven command line output
US20060010369A1 (en) * 2004-07-07 2006-01-12 Stephan Naundorf Enhancements of data types in XML schema
US7503038B2 (en) * 2004-08-27 2009-03-10 Microsoft Corporation System and method for seamlessly comparing objects
US20060089147A1 (en) * 2004-10-21 2006-04-27 Beaty Robert M Mobile network infrastructure for applications, personalized user interfaces, and services
US8566806B2 (en) * 2005-03-04 2013-10-22 Microsoft Corporation Command-line data-type discovery and conversion
US8151282B2 (en) * 2005-04-15 2012-04-03 Yahoo! Inc. System and method for pipelet processing of data sets
JP4852906B2 (ja) * 2005-06-24 2012-01-11 富士ゼロックス株式会社 連携処理システム及び装置
US7716252B2 (en) * 2005-07-29 2010-05-11 Microsoft Corporation Dynamically exposing relationships among entities contained in data stores
US20070240164A1 (en) * 2006-03-15 2007-10-11 Microsoft Corporation Command line pipelining
CN100466555C (zh) * 2007-03-14 2009-03-04 华为技术有限公司 一种发送维护命令的方法及装置
US20080244514A1 (en) * 2007-03-29 2008-10-02 Microsoft Corporation Scriptable object model for network based services
US8417819B2 (en) * 2007-11-05 2013-04-09 Red Hat, Inc. Combining UNIX commands with uniform resource locators
WO2017074436A1 (en) * 2015-10-30 2017-05-04 Hewlett-Packard Development Company, L.P. Object type based image processing
CA3089911A1 (en) * 2018-01-29 2019-08-01 Rubikloud Technologies Inc. Method and system for flexible pipeline generation

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404528A (en) * 1993-01-19 1995-04-04 Canon Information Systems, Inc. Scripting system
FR2742892B1 (fr) * 1995-12-21 1998-02-13 Bull Sa Systeme de protection de logiciel pour ordinateur ecrit en langage interprete
KR100401443B1 (ko) 1998-11-16 2003-10-17 텔레폰아크티에볼라게트 엘엠 에릭슨 이벤트를 기반으로한 시스템의 병행 처리
JP2000250755A (ja) * 1999-02-25 2000-09-14 Sony Electronics Inc 分散適応実行時プラットホーム用のアプリケーションプログラム開発方法及びコンピュータ装置
US7216351B1 (en) * 1999-04-07 2007-05-08 International Business Machines Corporation Systems and methods for synchronizing multi-modal interactions
US6560606B1 (en) * 1999-05-04 2003-05-06 Metratech Method and apparatus for processing data with multiple processing modules and associated counters
JP2001175596A (ja) * 1999-12-14 2001-06-29 Nec Corp コマンド処理装置、コマンド処理方法、およびそのプログラムを記録した記録媒体
US7055095B1 (en) * 2000-04-14 2006-05-30 Picsel Research Limited Systems and methods for digital document processing
US6721808B1 (en) * 2000-09-13 2004-04-13 Cisco Technology, Inc. Real-time creation of distributed object shell commands
US7051069B2 (en) * 2000-09-28 2006-05-23 Bea Systems, Inc. System for managing logical process flow in an online environment
US20020078251A1 (en) * 2000-12-18 2002-06-20 Philips Electronics North America Corp. Self-determining command path architecture
US6950866B1 (en) 2000-12-19 2005-09-27 Novell, Inc. XML-based integrated services parsing
US6785685B2 (en) 2001-08-22 2004-08-31 International Business Machines Corporation Approach for transforming XML document to and from data objects in an object oriented framework for content management applications
US7367014B2 (en) * 2001-10-24 2008-04-29 Bea Systems, Inc. System and method for XML data representation of portlets
US7496687B2 (en) * 2002-05-01 2009-02-24 Bea Systems, Inc. Enterprise application platform
US7127520B2 (en) * 2002-06-28 2006-10-24 Streamserve Method and system for transforming input data streams
US7085853B2 (en) * 2002-09-10 2006-08-01 Sun Microsystems, Inc. System and method for a distributed shell in a java environment
US7167874B2 (en) * 2003-01-22 2007-01-23 International Business Machines Corporation System and method for command line administration of project spaces using XML objects

Also Published As

Publication number Publication date
US7526770B2 (en) 2009-04-28
US20040249780A1 (en) 2004-12-09
EP1548577A2 (en) 2005-06-29
US7530075B2 (en) 2009-05-05
JP2004342107A (ja) 2004-12-02
EP1548577A3 (en) 2006-02-01
US20040243543A1 (en) 2004-12-02
CN1550985A (zh) 2004-12-01

Similar Documents

Publication Publication Date Title
US7620959B2 (en) Reflection-based processing of input parameters for commands
KR101120853B1 (ko) 관리 도구 환경
JP4365142B2 (ja) プロパティをオブジェクトに関連付けするための、コンピュータ可読媒体、システム、および、方法
KR101130500B1 (ko) 데이터 구동 커맨드 라인 출력을 제공하는 메커니즘
JP5085022B2 (ja) 継ぎ目なくオブジェクトを比較するシステムおよび方法
KR101150059B1 (ko) 커맨드 라인 명령에 확장된 기능을 제공하는 메커니즘
US8201138B2 (en) Solution providing navigation-independent access to elements of a software integrated development environment (IDE) using uniform resource locators(URLs)
KR101130455B1 (ko) 인터랙티브 환경 내에서의 구성에 대한 제약을 획득 및적용하기 위한 메커니즘
CN108027721B (zh) 用于使用控件来配置通用程序的技术
KR20090013243A (ko) 워드 프로세서 문서의 원시 xml에서 비원시 xml을 지원하는 시스템 및 방법
KR20040097937A (ko) 오브젝트 기반의 파이프라인을 채용한 시스템 및 방법
KR20070051250A (ko) 부분적으로 미해석된 입력을 분석하기 위한 메커니즘
US8433729B2 (en) Method and system for automatically generating a communication interface
NO329240B1 (no) System og fremgangsmate for forklarende definering og bruk av undergrupper innenfor dokumentkoding
US7506341B2 (en) System and method for controlling user interface properties with data
US20110296373A1 (en) Command line shell command generation based on schema
JP2006526192A (ja) ユーザインターフェースプロパティをデータにより制御するためのシステムおよび方法
US7673289B1 (en) Ignoring output arguments of functions in programming environments
Syme et al. The F# 2.0 language specification
Syme et al. The F# 3.1 Language Specification
KR20060059335A (ko) 데이터에 따라 사용자 인터페이스 속성들을 제어하는시스템 및 방법
JP2008217439A (ja) テーブル操作用インタフェースプログラム

Legal Events

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