응용 프로그램 수준 추가 기능 아키텍처

Visual Studio의 Office 개발자 도구를 사용하여 만든 추가 기능에는 안정성과 보안에 중점을 두고 추가 기능이 Microsoft Office와 긴밀하게 작동할 수 있게 해 주는 아키텍처 기능이 있습니다. 이 항목에서는 추가 기능의 다음 사항에 대해 설명합니다.

  • 추가 기능 이해

  • 추가 기능의 구성 요소

  • 추가 기능이 Microsoft Office 응용 프로그램과 작동하는 방식

적용 대상: 이 항목의 정보는 Microsoft Office 2010 및 2007 Microsoft Office system의 응용 프로그램 수준 프로젝트에 적용됩니다. 자세한 내용은 Office 응용 프로그램 및 프로젝트 형식에 따라 사용 가능한 기능을 참조하십시오.

추가 기능을 만드는 방법에 대한 일반적인 내용은 Office 솔루션 개발 개요응용 프로그램 수준 추가 기능 프로그래밍 시작을 참조하십시오.

추가 기능 이해

Visual Studio의 Office 개발자 도구를 사용하여 추가 기능을 빌드할 때는 Microsoft Office 응용 프로그램에서 로드하는 관리 코드 어셈블리를 만듭니다. 어셈블리가 로드되면 추가 기능에서 사용자가 메뉴 항목을 클릭할 때와 같이 응용 프로그램에서 발생하는 이벤트에 응답할 수 있습니다. 또한 추가 기능에서는 개체 모델을 호출하여 응용 프로그램을 자동화 및 확장할 수 있으며 .NET Framework의 모든 클래스를 사용할 수도 있습니다.

어셈블리와 응용 프로그램의 COM 구성 요소 사이의 통신은 응용 프로그램의 주 interop 어셈블리를 통해 이루어집니다. 자세한 내용은 Office 주 Interop 어셈블리Office 솔루션 개발 개요를 참조하십시오.

응용 프로그램에 대한 추가 기능이 여러 개 설치되어 있는 경우 각 추가 기능은 다른 응용 프로그램 도메인에 로드됩니다. 따라서 한 추가 기능이 올바르지 않게 동작해도 다른 추가 기능이 잘못 동작하게 되지 않습니다. 또한 응용 프로그램이 닫힐 때 모든 추가 기능 어셈블리가 메모리에서 언로드됩니다. 응용 프로그램 도메인에 대한 자세한 내용은 응용 프로그램 도메인를 참조하십시오.

참고

Visual Studio의 Office 개발자 도구를 사용하여 만든 추가 기능은 최종 사용자가 호스트 Microsoft Office 응용 프로그램을 시작할 경우에만 사용됩니다. 자동화 기능을 사용하는 등 프로그래밍 방식으로 응용 프로그램을 시작하면 추가 기능이 예상대로 작동하지 않을 수 있습니다.

추가 기능의 구성 요소

추가 기능 어셈블리는 주 구성 요소이지만 Microsoft Office 응용 프로그램에서 추가 기능을 검색하여 로드하는 방식에 중요한 역할을 하는 다른 구성 요소도 여러 개 있습니다.

레지스트리 항목

Microsoft Office 응용 프로그램에서는 레지스트리 항목 집합을 찾아 추가 기능을 검색합니다. 추가 기능에서 사용되는 레지스트리 항목의 전체 목록은 응용 프로그램 수준 추가 기능에 대한 레지스트리 항목을 참조하십시오.

솔루션을 빌드하면 추가 기능을 디버깅하고 실행할 수 있도록 Visual Studio에서 배포 컴퓨터에 필요한 모든 레지스트리 항목을 만듭니다. 자세한 내용은 Office 솔루션 빌드 프로세스 개요를 참조하십시오.

ClickOnce를 사용하여 솔루션을 배포하면 게시 프로세스에서 생성된 설치 프로그램이 최종 사용자 컴퓨터에 레지스트리 키를 자동으로 만듭니다. 자세한 내용은 Office 솔루션 게시를 참조하십시오.

배포 매니페스트 및 응용 프로그램 매니페스트

추가 기능에서는 배포 매니페스트 및 응용 프로그램 매니페스트를 사용하여 최신 버전의 추가 기능 어셈블리를 식별하고 로드합니다. 배포 매니페스트는 현재 응용 프로그램 매니페스트를 가리킵니다. 응용 프로그램 매니페스트는 추가 기능 어셈블리를 가리키며 어셈블리에서 실행할 진입점 클래스를 지정합니다. 자세한 내용은 Office 솔루션의 응용 프로그램 및 배포 매니페스트를 참조하십시오.

Visual Studio Tools for Office 런타임

Visual Studio의 Office 개발자 도구를 사용하여 만든 추가 기능을 실행하려면 최종 사용자 컴퓨터에 Microsoft Visual Studio Tools for Office Runtime이 설치되어 있어야 합니다. 런타임에는 관리되지 않는 구성 요소와 일련의 관리되는 어셈블리가 포함되어 있습니다. 관리되지 않는 구성 요소는 추가 기능 어셈블리를 로드합니다. 관리되는 어셈블리는 추가 기능 코드에서 호스트 응용 프로그램을 자동화 및 확장하는 데 사용하는 개체 모델을 제공합니다.

자세한 내용은 Visual Studio Tools for Office 런타임 개요를 참조하십시오.

추가 기능이 Microsoft Office 응용 프로그램과 작동하는 방식

사용자가 Microsoft Office 응용 프로그램을 시작하면 해당 응용 프로그램에서는 배포 매니페스트 및 응용 프로그램 매니페스트를 사용하여 최신 버전의 추가 기능 어셈블리를 찾아 로드합니다. 다음 그림에서는 이러한 추가 기능의 기본 아키텍처를 보여 줍니다.

추가 기능 아키텍처

2007 Office 추가 기능 아키텍처

참고

.NET Framework 4를 대상으로 하는 Office 솔루션에서 솔루션은 PIA를 직접 호출하지 않고 솔루션 어셈블리에 포함된 PIA 형식 정보를 사용하여 호스트 응용 프로그램의 개체 모델을 호출합니다. 자세한 내용은 Office 솔루션 디자인 및 만들기를 참조하십시오.

로드 프로세스

사용자가 응용 프로그램을 시작할 때 다음 단계가 수행됩니다.

  1. 응용 프로그램이 레지스트리에서 Visual Studio의 Office 개발자 도구를 사용하여 만든 추가 기능을 식별하는 항목을 찾습니다.

  2. 응용 프로그램에서 이러한 레지스트리 항목을 찾은 경우 VSTOLoader.dll을 로드하는 VSTOEE.dll을 로드합니다. 이들 DLL은 Visual Studio 2010 Tools for Office Runtime의 로더 구성 요소인 관리되지 않는 DLL입니다. 자세한 내용은 Visual Studio Tools for Office 런타임 개요를 참조하십시오.

  3. VSTOLoader.dll은 .NET Framework를 로드하고 Microsoft Visual Studio Tools for Office Runtime의 관리되는 부분을 시작합니다.

  4. Microsoft Visual Studio Tools for Office Runtime에서 매니페스트 업데이트를 확인하고 최신 응용 프로그램 및 배포 매니페스트를 다운로드합니다.

  5. Microsoft Visual Studio Tools for Office Runtime에서 일련의 보안 검사를 수행합니다. 자세한 내용은 Office 솔루션 보안을 참조하십시오.

  6. 추가 기능이 실행할 수 있는 것으로 신뢰된 경우 Microsoft Visual Studio Tools for Office Runtime에서 배포 매니페스트 및 응용 프로그램 매니페스트를 사용하여 어셈블리 업데이트를 확인합니다. 새 버전의 어셈블리를 사용할 수 있으면 런타임에서는 새 버전의 어셈블리를 클라이언트 컴퓨터의 ClickOnce 캐시로 다운로드합니다. 자세한 내용은 Office 솔루션 배포를 참조하십시오.

  7. Microsoft Visual Studio Tools for Office Runtime에서 추가 기능 어셈블리를 로드할 새 응용 프로그램 도메인을 만듭니다.

  8. Microsoft Visual Studio Tools for Office Runtime에서 응용 프로그램 도메인에 추가 기능 어셈블리를 로드합니다.

  9. 추가 기능을 재정의한 경우 Microsoft Visual Studio Tools for Office Runtime에서 해당 추가 기능의 RequestComAddInAutomationService 메서드를 호출합니다.

    이 메서드를 선택적으로 재정의하여 추가 기능의 개체를 다른 Microsoft Office 솔루션에 노출할 수 있습니다. 자세한 내용은 다른 Office 솔루션에서 응용 프로그램 수준 추가 기능의 코드 호출을 참조하십시오.

  10. 추가 기능을 재정의한 경우 Microsoft Visual Studio Tools for Office Runtime에서 해당 추가 기능의 RequestService 메서드를 호출합니다.

    필요할 경우 확장성 인터페이스를 구현하는 개체를 반환하는 방식으로 이 메서드를 재정의하여 Microsoft Office 기능을 확장할 수 있습니다. 자세한 내용은 확장성 인터페이스를 사용하여 UI 기능 사용자 지정을 참조하십시오.

    참고

    Microsoft Visual Studio Tools for Office Runtime에서는 호스트 응용 프로그램에서 지원하는 각 확장성 인터페이스에 대해 RequestService 메서드를 별도로 호출합니다. RequestService 메서드에 대한 첫 번째 호출은 대개 ThisAddIn_Startup 메서드 호출 전에 수행되지만 추가 기능에서 RequestService 메서드가 호출되는 시기나 호출되는 빈도를 가정하지 않아야 합니다.

  11. Microsoft Visual Studio Tools for Office Runtime에서 추가 기능의 ThisAddIn_Startup 메서드를 호출합니다. 이 메서드는 Startup 이벤트의 기본 이벤트 처리기입니다. 자세한 내용은 Office 프로젝트의 이벤트를 참조하십시오.

참고 항목

개념

문서 수준 사용자 지정 아키텍처

Visual Studio Tools for Office 런타임 개요

기타 리소스

Visual Studio의 Office 솔루션 아키텍처

응용 프로그램 수준 추가 기능 프로그래밍

Office 솔루션 개발

Office 솔루션 보안

Office 솔루션 배포