맨위로가기

OLE 자동화

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

OLE 자동화는 다른 응용 프로그램에서 응용 프로그램의 개체를 제어할 수 있게 해주는 기술이다. 자동화 인터페이스는 COM 형식의 하위 집합을 사용하며, SAFEARRAY를 사용해야 한다. 자동화는 스크립팅을 용이하게 하기 위해 설계되었으며, Visual Basic for Applications와 같은 언어를 제공하는 경우가 많다. OLE 자동화는 ABAP, C, C++, C#, Visual Basic, Delphi, .NET 등 다양한 언어를 지원한다. 자동화 구성 요소는 일반적으로 개체 라이브러리에서 노출되는 클래스, 인터페이스 및 기타 기능에 대한 메타데이터를 포함하는 형식 라이브러리와 함께 제공된다.

더 읽어볼만한 페이지

  • 객체 지향 프로그래밍 - Is-a
    Is-a 관계는 객체 지향 프로그래밍에서 한 유형이 다른 유형의 하위 유형임을 나타내는 관계로, 상속, 서브타이핑, 리스코프 치환 원칙과 관련되며, C++, Python, Java 등에서 표현된다.
  • 객체 지향 프로그래밍 - 객체 (컴퓨터 과학)
    객체는 객체 지향 프로그래밍에서 데이터와 조작을 묶어 메시지를 수신하고, 프로그램의 개념을 표현하며 가시성과 재사용성을 높이는 실체이다.
  • 마이크로소프트 API - 윈도우 API
    윈도우 API는 마이크로소프트 윈도우 운영 체제에서 응용 프로그램이 시스템 기능에 접근하도록 돕는 인터페이스 집합이며, 다양한 버전으로 발전해 왔고, 현재 Win32가 널리 사용되며, 유연성을 제공하지만 복잡하다는 단점을 보완하기 위해 다양한 래퍼 라이브러리가 개발되었다.
  • 마이크로소프트 API - WinFS
    WinFS는 마이크로소프트가 개발한 파일 시스템으로, 검색 기능 내장 및 메타데이터 관리를 통해 데이터 관리 효율성을 높이는 것을 목표로 했으나 별도 제품으로 출시되지는 못하고 핵심 기능들이 윈도우 비스타 이후 기술에 통합되었다.
OLE 자동화
일반 정보
종류프로세스 간 통신 메커니즘
개발마이크로소프트
상세 정보
설명OLE 자동화(현재는 자동화라고 함)는 한 응용 프로그램이 다른 응용 프로그램을 프로그래밍 방식으로 제어할 수 있도록 하는 기술이다. 자동화는 OLE의 한 부분이다.
응용 프로그램이 다른 응용 프로그램의 개체를 조작할 수 있도록 하는 프로세스 간 통신 메커니즘이다.
역할**자동화 서버 (Automation server):** 개체를 제공하는 응용 프로그램
**자동화 컨트롤러 (Automation controller/client):** 개체를 사용하는 응용 프로그램
지원 언어Visual Basic
VBA
C++
C#
JavaScript
Python
PowerShell
사용 예시스프레드시트에서 워드 프로세서의 맞춤법 검사기를 사용하여 스프레드시트의 텍스트를 맞춤법 검사할 수 있음
마이크로소프트 워드에서 마이크로소프트 엑셀을 사용하여 데이터를 분석하고 차트를 작성할 수 있음
장점응용 프로그램 간의 통합 용이
코드 재사용성 향상
사용자 정의 기능 추가 용이
단점복잡성 증가
성능 저하 가능성
보안 문제 발생 가능성

2. 장점 및 한계

자동화 인터페이스는 모든 COM 형식의 하위 집합만 사용하도록 제한되어 상호 운용성을 보장한다.[4][5] 특히 자동화 인터페이스는 원시 COM 배열 대신 SAFEARRAY를 사용해야 한다.

하지만 자동화 호환 COM 서버는 내장된 OLE 마샬링 구현에 의존할 수 있다.[6] 이를 통해 프로세스 외부 마샬링을 위한 추가적인 프록시/스텁 프로젝트가 필요하지 않다.

3. 사용

자동화는 스크립팅을 쉽게 할 수 있도록 설계되었기 때문에, 컨트롤러는 Visual Basic for Applications와 같은 언어를 제공하여 최종 사용자가 스크립트를 통해 자동화 개체를 제어할 수 있게 하는 경우가 많다. 자동화 개체는 C++와 같은 기존 언어로 작성되는 경우가 많으며,[7] C++ 속성을 사용하여 개발을 단순화할 수 있다.[8] Visual Basic 및 Borland Delphi와 같은 언어는 자동화에 편리한 구문을 제공하여 기본 구현의 복잡성을 숨긴다.

OLE 자동화는 다음을 포함한 다양한 프로그래밍 언어를 지원한다.

지원 언어
ABAP
C
C++ (컴파일러 COM 지원[28], MFC 또는 ATL 등의 라이브러리와 함께)
C#
비주얼 베이직, 비주얼 베이직 포 애플리케이션
델파이[29]
마이크로소프트 닷넷 언어[30]
APL (대부분 윈도우 버전)
자바 (서드파티 도구를 통해서만)
J스크립트[31], VB스크립트
오픈 오브젝트 Rexx[32]
[33]
PHP[34]
파워빌더
파이썬[35][36]
루비 (표준 루비 1.8.x 이상 배포판에 포함된 win32ole 라이브러리를 통해)
Tcl[37]
비주얼 데이터플렉스
WinBatch[38]


3. 1. 형식 라이브러리

응용 프로그램을 자동화하려면 자동화 컨트롤러 개발자는 활성화 객체를 내보내는 대상 응용 프로그램에서 사용하는 개체 모델을 알아야 한다.[9] 이를 위해서는 대상 응용 프로그램 개발자가 개체 모델을 공개적으로 문서화해야 한다. 대상 응용 프로그램의 개체 모델에 대한 지식 없이 자동화 컨트롤러를 개발하는 것은 "어렵거나 불가능"하다.[10]

이러한 복잡성 때문에 자동화 구성 요소는 일반적으로 개체 라이브러리에서 노출되는 클래스, 인터페이스 및 기타 기능에 대한 메타데이터를 포함하는 ''형식 라이브러리''와 함께 제공된다. 인터페이스는 마이크로소프트 인터페이스 정의 언어로 설명된다. 형식 라이브러리는 Microsoft Platform SDK의 일부인 Microsoft OLE/COM 개체 뷰어(oleview.exe) 또는 Visual Basic(버전 6까지) 및 비주얼 스튜디오 .NET의 개체 브라우저와 같은 다양한 도구를 사용하여 볼 수 있다. 형식 라이브러리는 COM과 마이크로소프트 .NET 및 자바와 같은 다른 플랫폼 간의 상호 운용성을 위해 프록시 패턴/스텁 코드를 생성하는 데 사용된다. 예를 들어 .NET Framework SDK에는 초기 바인딩(형식 라이브러리에서 추출한 인터페이스 정보 사용)과 지연 바인딩(IDispatch를 통해 .NET 리플렉션 API에 매핑)을 모두 사용하여 자동화 개체에 액세스하기 위한 프록시 .NET DLL을 생성할 수 있는 도구가 포함되어 있으며, COM Interop라는 내장 .NET-to-COM 브리지를 사용한다.[11] 자바는 내장된 COM 지원이 없지만 JACOB[12] 및 jSegue[13]와 같은 툴셋은 형식 라이브러리에서 프록시 소스 코드(일련의 자바 클래스와 C++ 소스로 구성된 자바 네이티브 인터페이스 DLL)를 생성할 수 있다. 이러한 솔루션은 Windows에서만 작동한다. DCOM 와이어 프로토콜(MSRPC)을 사용하여 JNI 없이 COM 구성 요소와의 상호 운용성을 가능하게 하고 비 Windows 플랫폼에서도 작동하는 또 다른 자바 기반 j-Interop[14] 라이브러리도 있다.

마이크로소프트는 마이크로소프트 오피스의 모든 응용 프로그램 개체 모델을 공개적으로 문서화했으며,[15] 일부 다른 소프트웨어 개발자들도 해당 응용 프로그램의 개체 모델을 문서화했다. 개체 모델은 ODL로 인터페이스가 설명된 형식 라이브러리로 자동화 컨트롤러에 제공된다.

3. 2. 지원 언어

OLE 자동화는 다음을 포함한 다양한 프로그래밍 언어를 지원한다.

참조

[1] 웹사이트 Automation (MFC) http://msdn2.microso[...] 2021-08-03
[2] 서적 Programming Microsoft Visual C++ 6.0 https://archive.org/[...] Microsoft Press
[3] 웹사이트 Using OLE Automation to Control WordPerfect https://web.archive.[...] 2006-07-20
[4] 뉴스 oleautomation attribute http://msdn.microsof[...] Microsoft MSDN
[5] 뉴스 Automation-Compatible Types http://msdn.microsof[...] Microsoft MSDN
[6] 뉴스 Marshaling Details (COM) Type Library Marshaling community additions http://msdn.microsof[...] Microsoft MSDN
[7] 웹사이트 OLE Automation for C++ programmers http://www.cgoakley.[...]
[8] 뉴스 C++ Attributes: Make COM Programming a Breeze with New Feature in Visual Studio .NET http://msdn.microsof[...] MSDN Magazine
[9] 웹사이트 OLE Automation in JavaScript http://webreference.[...]
[10] 간행물 OLE — Extending the Capabilities of PowerBuilder (Part 2) https://web.archive.[...] 2006-01-16
[11] 서적 Moving to VB.NET: Strategies, Concepts, and Code https://archive.org/[...] Apress
[12] 웹사이트 The JACOB Project http://danadler.com/[...] 2004-10-17
[13] 웹사이트 jSegue http://jsegue.source[...] 2005-12-14
[14] 웹사이트 j-Interop Java COM interoperability from any platform https://web.archive.[...]
[15] 웹사이트 How to find and use Office object model documentation http://support.micro[...] Microsoft Corporation
[16] 웹사이트 Compiler COM Support http://msdn.microsof[...] Microsoft 2021-08-03
[17] 웹사이트 OLE Automation using Delphi https://web.archive.[...] 2006-07-26
[18] 웹사이트 Open Object Rexx http://www.oorexx.or[...]
[19] 간행물 Win32::OLE http://www.foo.be/do[...] Summer 1998
[20] 웹사이트 PHP: COM and .Net (Windows) http://www.php.net/m[...] 2006-07-25
[21] 웹사이트 Python for Windows Extensions http://sourceforge.n[...]
[22] 웹사이트 Comtypes Python package http://sourceforge.n[...]
[23] 웹사이트 OLE from a Tcl perspective http://wiki.tcl.tk/o[...]
[24] 웹사이트 OLE TUTORIAL WINBATCH OLE PROGRAMMING http://techsupt.winb[...]
[25] 웹인용 Automation (MFC) http://msdn2.microso[...]
[26] 서적 Programming Microsoft Visual C++ 6.0 https://archive.org/[...] ':en:Microsoft Press'
[27] 웹인용 Using OLE Automation to Control WordPerfect http://gmccomb.com/v[...] 2019-02-27
[28] 웹인용 Compiler COM Support http://msdn.microsof[...] Microsoft
[29] 웹인용 OLE Automation using Delphi http://delphi.about.[...] 2019-02-27
[30] 서적 Moving to VB.NET: Strategies, Concepts, and Code https://archive.org/[...] Apress
[31] 웹인용 OLE Automation in JavaScript http://webreference.[...] 2019-02-27
[32] 웹인용 Open Object Rexx http://www.oorexx.or[...]
[33] 간행물 Win32::OLE http://www.foo.be/do[...] Summer 1998
[34] 웹인용 PHP: COM and .Net (Windows) http://www.php.net/m[...] 2006-07-25
[35] 웹인용 Python for Windows Extensions http://sourceforge.n[...]
[36] 웹인용 Comtypes Python package http://sourceforge.n[...]
[37] 웹인용 OLE from a Tcl perspective http://wiki.tcl.tk/o[...]
[38] 웹인용 OLE TUTORIAL WINBATCH OLE PROGRAMMING http://techsupt.winb[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com