OLE 자동화
OLE Automation![]() |
Microsoft Windows 응용 프로그램 프로그래밍에서 OLE Automation(나중에 단순 자동화로[1][2] 이름 변경)은 Microsoft가 만든 프로세스 간 통신 메커니즘입니다.스크립팅 언어(원래는 Visual Basic)에서 사용하도록 의도된 COM(컴포넌트 객체 모델)의 서브셋을 기반으로 하지만 현재는 Windows에서 여러 언어로 사용되고 있습니다.IDispatch 인터페이스를 구현하려면 모든 자동화 개체가 필요합니다.자동화 컨트롤러라고 불리는 애플리케이션이 다른 애플리케이션에서 내보내는 공유 자동화 개체에 액세스하여 조작(즉, 속성 설정 또는 호출 방식 켜기)할 수 있는 인프라스트럭처를 제공합니다.응용 프로그램이 [3]서로 제어하는 오래된 메커니즘인 DDE(Dynamic Data Exchange)를 대체합니다.DDE와 마찬가지로 OLE Automation에서 자동화 컨트롤러는 "클라이언트"이고 자동화 개체를 내보내는 애플리케이션은 "서버"입니다.
OLE 환경에서 일부 자동화 개체를 사용할 수 있지만 이름과 달리 자동화 개체는 마이크로소프트 OLE를 반드시 사용할 필요는 없습니다.이러한 혼란은 이전에 COM의 동의어였던 마이크로소프트의 OLE에 대한 초기 정의에서 비롯되었다.
장점과 제한
상호 운용성을 확보하기 위해 자동화 인터페이스는 모든 COM [4][5]유형의 서브셋을 사용하도록 제한됩니다.특히 자동화 인터페이스에서는 raw COM 어레이 대신 SAFEARRAY를 사용해야 합니다.
그러나 자동화 호환 COM 서버는 내장된 OLE 마샬링 [6]구현에 의존할 수 있습니다.이를 통해 프로세스 외 마샬링을 위한 추가 프록시/스터브 프로젝트가 필요하지 않습니다.
사용.
자동화는 스크립팅의 용이성을 염두에 두고 설계되었기 때문에 컨트롤러는 많은 경우 최종 사용자에게 Visual Basic for Applications 등의 언어를 제공하여 스크립트를 통해 자동화 개체를 제어할 수 있습니다.자동화 오브젝트는 C++[7]와 같은 기존 언어로 작성되는 경우가 많습니다.C++ 속성을 사용하여 [8]개발을 단순화할 수 있습니다.Visual Basic이나 Borland Delphi 등의 언어도 자동화에 편리한 구문을 제공하여 기본 구현의 복잡성을 숨깁니다.
유형 라이브러리
애플리케이션을 자동화하려면 자동화 컨트롤러 개발자가 활성화 [9]개체를 내보내는 대상 애플리케이션에 사용되는 개체 모델을 알아야 합니다.따라서 대상 응용 프로그램의 개발자가 개체 모델을 공개적으로 문서화해야 합니다.대상 어플리케이션의 객체 모델을 모르는 상태에서 자동화 컨트롤러를 개발하는 것은 "불가능"합니다.[10]이러한 복잡성으로 인해 자동화 컴포넌트는 일반적으로 객체 라이브러리에 의해 공개되는 클래스, 인터페이스 및 기타 기능에 대한 메타데이터를 포함하는 유형 라이브러리와 함께 제공됩니다.인터페이스는 Microsoft Interface Definition Language 로 설명되어 있습니다.Microsoft OLE/COM Object Viewer(Microsoft OLE/COM 객체 뷰어) 등 다양한 도구를 사용하여 유형 라이브러리를 표시할 수 있습니다.oleview.exe
Visual Basic(버전 6까지) 및 Visual Studio의 객체 브라우저 또는 Microsoft Platform SDK의 일부입니다.NET. 타입 라이브러리는 COM과 Microsoft 등의 다른 플랫폼 간에 상호 운용하기 위한 프록시 패턴/스터브 코드를 생성하기 위해 사용됩니다.NET 및 Java.예를 들어, 입니다.NET Framework SDK에는 프록시를 생성할 수 있는 도구가 포함되어 있습니다.NET DLL: 얼리바인딩(타입 라이브러리에서 추출된 인터페이스에 대한 정보 포함)과 레이트바인딩(에 매핑된IDispatch 경유)을 모두 사용하여 Automation 객체에 액세스합니다.NET Reflection API)가 포함되어 있습니다.COM Interop이라는 이름의 NET-to-COM [11]브리지Java는 COM을 지원하지 않지만 JACOB 및 jSegue와[13] 같은[12] 툴셋은 타입 라이브러리에서 프록시 소스 코드(Java 클래스 세트 및 Java Native Interface DLL용 C++ 소스)를 생성할 수 있습니다.이러한 솔루션은 Windows에서만 작동합니다.또 다른 Java 기반의 j-Interop[14] 라이브러리는 DCOM 와이어 프로토콜(MSRPC)을 사용하여 JNI 없이 COM 컴포넌트와의 상호 운용성을 가능하게 하며 Windows 이외의 플랫폼에서도 동작합니다.
마이크로소프트는 마이크로소프트 [15]Office에 있는 모든 애플리케이션의 객체 모델을 공개 문서화하고 있으며, 일부 다른 소프트웨어 개발자도 해당 애플리케이션의 객체 모델을 문서화하고 있습니다.객체 모델은 ODL에서 설명하는 인터페이스를 사용하여 자동화 컨트롤러에 유형 라이브러리로 제공됩니다.
언어 지원
자동화는 다음과 같은 다양한 언어로 이용할 수 있습니다.
- ABAP
- C
- C++(컴파일러 COM [16]지원 또는 MFC나 ATL 등의 라이브러리 사용)
- C#
- 애플리케이션용 Visual Basic 및 Visual Basic
- 비주얼 폭스 프로
- dBASE(OleAutoClient 클래스 경유)
- 델파이[17]
- Microsoft.NET[11] 언어
- APL(대부분의 Windows 버전)
- Java(서드파티제 툴만 해당)
- JScript[9] 및 VBScript
- 오브젝트 Rexx 열기[18]
- 펄[19]
- PHP[20]
- 파워빌더
- 파이썬[21][22]
- Ruby (표준 Ruby 1.8.x 이후 배포판에 포함된 'win32ole' 라이브러리를 통해)
- TCL[23]
- Visual Data Flex
- 윈배치[24]
「 」를 참조해 주세요.
레퍼런스
- ^ Microsoft Corporation. "Automation (MFC)". MSDN.
- ^ KruJ.; Wingo, Scott; Shepherd, George (1998). "Chapter 25: Automation". Programming Microsoft Visual C++ 6.0 (5th ed.). Redmond, WA: Microsoft Press. ISBN 978-1-57231-857-1.
- ^ Gordon McComb (1997). "Using OLE Automation to Control WordPerfect". Archived from the original on 2017-08-15. Retrieved 2006-07-20. - McComb은 DDE 대신 OLE Automation을 사용하여 WordPerfect를 제어하는 방법을 설명합니다.
- ^ Microsoft MSDN: oleautomation
- ^ Microsoft MSDN: 자동 호환 유형
- ^ Microsoft MSDN: COM(Marshaling Details) 타입 라이브러리 마샬링 커뮤니티 추가
- ^ Chris Oakley. "OLE Automation for C++ programmers".
- ^ MSDN 매거진:C++ 속성: Visual Studio의 새로운 기능으로 COM 프로그래밍을 쉽게 할 수 있습니다.네트워크
- ^ a b Yehuda Shiran and Tomer Shiran. "OLE Automation in JavaScript". WebReference. 제목에 관계없이 이 기사에서는 JavaScript가 아닌 JScript에 대해 설명합니다.
- ^ Bruce Armstrong (2006-01-16). "OLE — Extending the Capabilities of PowerBuilder (Part 2)". PowerBuilder Developers' Journal. 12 (11).
- ^ a b Appleman, Dan (2001). "Chapter 15: COM Interop and Accessing the Win32 API". Moving to VB.NET: Strategies, Concepts, and Code. Apress. ISBN 978-1-893115-97-2.
- ^ "The JACOB Project". 2004-10-17.
- ^ "jSegue". 2005-12-14.
- ^ "j-Interop Java COM interoperability from any platform".
- ^ "How to find and use Office object model documentation". KnowledgeBase. Microsoft Corporation.
- ^ "Compiler COM Support". MSDN. Microsoft.
- ^ "OLE Automation using Delphi". About.com.
- ^ "Open Object Rexx".
- ^ Jan Dubois (Summer 1998). "Win32::OLE". The Perl Journal. 3 (2).
- ^ The PHP Group (2006-07-25). "PHP: COM and .Net (Windows)".
- ^ Mark Hammond. "Python for Windows Extensions".
- ^ Sourceforge. "Comtypes Python package".
- ^ Tcl programmers. "OLE from a Tcl perspective".
- ^ Stan Littlefield. "OLE TUTORIAL WINBATCH OLE PROGRAMMING".
추가 정보
- Microsoft Corporation (December 1993). OLE 2 Programmer's Reference: Creating Programmable Applications with OLE Automation v. 2. Programmer's Reference Library. Microsoft Press. ISBN 978-1-55615-629-8.
- Kraig Brockschmidt (1995). Inside OLE. Microsoft Press.
- Microsoft Corporation (1996). OLE Automation Programmer's Reference. Programmer's Reference Library. Microsoft Press. ISBN 978-1-55615-851-3.
- Microsoft Corporation (1999). Microsoft Office 2000 Visual Basic for Applications Language Reference. Microsoft Press. ISBN 978-1-57231-955-4. - Microsoft Office 오브젝트 모델의 완전한 매뉴얼 인쇄
외부 링크
- OLE Automation 일반 문서에서는 OLE 도입 및 구현 문제에 대해 설명합니다.
- 「VOLE - Neat C++ COM/Automation Driver」: IDispatch를 직접 구동할 필요가 있는 경우에 사용하는, 컴파일러에 의존하지 않는 오픈 소스 C++ C++ COM Automation Library.VOLE는 매우 견고하며 IDispatch의 모든 "로우 레벨" 측면을 완전히 캡슐화하고 있으며 일반 C++ 유형을 수신 및 반환하는 매우 유연합니다.