추가 기능 및 확장성

추가 기능은 호스트 응용 프로그램을 위한 확장된 기능 또는 서비스를 제공합니다. .NET Framework에서는 개발자가 추가 기능을 개발하여 호스트 응용 프로그램에서 활성화하는 데 사용할 수 있는 프로그래밍 모델을 제공합니다. 이를 위해 모델에서는 호스트와 추가 기능 간에 통신 파이프라인을 생성합니다. 모델은 System.AddIn, System.AddIn.Hosting, System.AddIn.PipelineSystem.AddIn.Contract 네임스페이스의 형식을 사용하여 구현됩니다.

이 개요는 다음과 같은 단원으로 구성됩니다.

  • 추가 기능 모델

  • 추가 기능 및 호스트 구분

  • 관련 항목

  • 참조

참고참고

추가 코드 샘플을 얻고 추가 기능 파이프라인 개발용 도구에 대한 고객 기술을 미리 보려면 CodePlex의 Managed Extensibility and Add-In Framework 사이트를 참조하십시오.

추가 기능 모델

추가 기능 모델은 추가 기능과 호스트 간의 모든 통신을 처리하는 추가 기능 파이프라인(통신 파이프라인)을 구성하는 일련의 세그먼트로 이루어져 있습니다. 파이프라인은 추가 기능과 해당 호스트 간에 데이터를 교환하는 세그먼트의 대칭 통신 모델입니다. 호스트와 추가 기능 간에 이러한 세그먼트를 개발하면 추가 기능의 버전 관리 및 격리를 지원하는 데 필요한 추상화 계층이 제공됩니다.

다음 그림에서는 파이프라인을 보여 줍니다.

추가 기능 파이프라인

추가 기능 파이프라인 모델

이러한 세그먼트의 어셈블리는 서로 다른 응용 프로그램 도메인에 있어도 됩니다. 고유한 새 응용 프로그램 도메인, 기존 응용 프로그램 도메인 또는 호스트의 응용 프로그램 도메인에 추가 기능을 로드할 수 있습니다. 여러 추가 기능을 같은 응용 프로그램 도메인에 로드할 수 있으며, 이 경우 추가 기능에서 리소스와 보안 컨텍스트를 공유할 수 있습니다.

추가 기능 모델은 호스트와 추가 기능 간의 선택적 경계를 지원하고 권장합니다. 이러한 경계를 격리 경계 또는 원격 경계라고 합니다. 이 경계는 응용 프로그램 도메인 또는 프로세스 경계일 수 있습니다.

파이프라인 중간에 있는 계약 세그먼트는 호스트의 응용 프로그램 도메인과 추가 기능의 응용 프로그램 도메인에 모두 로드됩니다. 계약은 호스트와 추가 기능이 서로 형식을 교환하는 데 사용하는 가상 메서드를 정의합니다.

격리 경계를 통과하려면 형식이 계약 또는 serialize할 수 있는 형식이어야 합니다. 계약이 아니거나 serialize할 수 없는 형식은 파이프라인의 어댑터 세그먼트를 통해 계약으로 변환해야 합니다.

파이프라인의 보기 세그먼트는 계약에 정의된 대로 공유하는 메서드의 보기를 호스트와 추가 기능에 제공하는 추상 기본 클래스 또는 인터페이스입니다.

파이프라인 세그먼트 개발에 대한 자세한 내용은 파이프라인 개발을 참조하십시오.

이후 단원에서는 추가 기능 모델의 기능에 대해 설명합니다.

독립 버전 관리

추가 기능 모델을 사용하면 호스트와 추가 기능에서 독립적으로 버전을 관리할 수 있습니다. 따라서 추가 기능 모델을 사용하면 다음과 같은 시나리오가 가능합니다.

  • 이전 버전의 호스트를 위해 빌드된 추가 기능을 현재 호스트에 사용할 수 있도록 하는 어댑터 만들기

  • 이후 버전의 호스트를 위해 빌드된 추가 기능을 현재 호스트에 사용할 수 있도록 하는 어댑터 만들기

  • 다른 호스트를 위해 빌드된 추가 기능을 현재 호스트에 사용할 수 있도록 하는 어댑터 만들기

검색 및 활성화

정보 저장소에서 찾은 추가 기능을 나타내는 컬렉션의 토큰을 사용하여 추가 기능을 활성화할 수 있습니다. 추가 기능은 해당 추가 기능의 호스트 뷰를 정의하는 형식을 검색하여 찾습니다. 추가 기능을 정의하는 형식으로 특정 추가 기능을 찾을 수도 있습니다. 정보 저장소는 두 개의 캐시 파일(파이프라인 저장소 및 추가 기능 저장소)로 이루어져 있습니다.

정보 저장소를 업데이트하고 다시 빌드하는 방법에 대한 자세한 내용은 추가 기능 검색을 참조하십시오. 추가 기능을 활성화하는 방법에 대한 자세한 내용은 추가 기능 활성화방법: 다양한 격리 및 보안 수준으로 추가 기능 활성화를 참조하십시오.

격리 수준 및 외부 프로세스

추가 기능 모델은 호스트의 추가 기능과 해당 호스트 사이 또는 여러 추가 기능 사이에서 여러 수준의 격리를 지원합니다. 최소 격리부터 시작하여 해당 수준은 다음과 같습니다.

  • 추가 기능이 호스트와 같은 응용 프로그램 도메인에서 실행됩니다. 다른 응용 프로그램 도메인을 사용할 때 얻을 수 있는 격리 및 언로드 기능을 잃게 되므로 이 격리 수준은 사용하지 않는 것이 좋습니다.

  • 여러 추가 기능이 같은 응용 프로그램 도메인에 로드되며 호스트에서 사용하는 응용 프로그램 도메인과 달라도 됩니다.

  • 각 추가 기능이 고유한 응용 프로그램 도메인에 단독으로 로드됩니다. 가장 일반적인 격리 수준입니다.

  • 여러 추가 기능이 외부 프로세스의 같은 응용 프로그램 도메인에 로드됩니다.

  • 각 추가 기능이 외부 프로세스의 고유한 응용 프로그램 도메인에 단독으로 로드됩니다. 가장 강력한 격리 시나리오입니다.

외부 프로세스 사용에 대한 자세한 내용은 방법: 다양한 격리 및 보안 수준으로 추가 기능 활성화를 참조하십시오.

수명 관리

추가 기능 모델은 응용 프로그램 도메인과 프로세스 경계에 걸쳐 있으므로 가비지 수집만으로는 개체를 해제하고 확보하는 데 충분하지 않습니다. 추가 기능 모델은 토큰 및 참조 횟수를 사용하는 수명 관리 메커니즘을 제공하며, 일반적으로 추가 프로그래밍이 필요하지 않습니다. 자세한 내용은 수명 관리를 참조하십시오.

맨 위로 이동

추가 기능 및 호스트 구분

추가 기능과 호스트 간의 차이점은 호스트가 추가 기능을 활성화한다는 것뿐입니다. 워드 프로세싱 응용 프로그램과 맞춤법 검사기처럼 호스트가 둘 중에서 더 클 수도 있고, 미디어 플레이어가 포함된 인스턴트 메시징 클라이언트처럼 호스트가 둘 중에서 더 작을 수도 있습니다. 추가 기능 모델은 클라이언트와 서버 시나리오에서 모두 추가 기능을 지원합니다. 서버 추가 기능의 예로는 바이러스 검사, 스팸 필터 및 IP 보호를 제공하는 추가 기능이 있습니다. 클라이언트 추가 기능의 예로는 워드 프로세서용 참조 추가 기능, 그래픽 프로그램 및 게임용 특수 기능, 로컬 전자 메일 클라이언트용 바이러스 검사 등이 있습니다.

맨 위로 이동

관련 항목

제목

설명

파이프라인 개발

호스트 응용 프로그램에서 추가 기능으로 연결되는 세그먼트의 통신 파이프라인에 대해 설명합니다. 연습 항목의 코드 예제를 통해 Visual Studio에서 파이프라인을 생성하는 방법과 세그먼트를 파이프라인에 배포하는 방법에 대해 설명합니다.

추가 기능 검색

추가 기능을 호스트 응용 프로그램에서 검색할 수 있게 하는 방법에 대해 설명합니다.

추가 기능 활성화

추가 기능을 활성화 및 비활성화하는 방법에 대해 설명합니다.

추가 기능 성능

도메인 중립적 어셈블리 로드 및 네이티브 이미지를 사용하여 추가 기능 성능을 향상시키는 방법에 대해 설명합니다.

방법: 다양한 격리 및 보안 수준으로 추가 기능 활성화

다양한 응용 프로그램 도메인, 프로세스 및 보안 수준 시나리오에서 추가 기능을 활성화하는 방법에 대해 설명합니다.

방법: 정규화 데이터 사용

추가 기능 및 파이프라인 세그먼트에 사용되는 사용자 지정 데이터를 적용 및 액세스하는 방법에 대해 설명합니다.

추가 기능 개발자 경험

추가 기능 파이프라인의 필수 세그먼트를 사용하기 위한 추가 기능을 개발하는 방법에 대해 설명합니다.

응용 프로그램 도메인과 어셈블리

보안, 안정성, 버전 관리 및 어셈블리를 위해 격리 경계를 제공하는 응용 프로그램 도메인 간의 관계에 대해 설명합니다.

맨 위로 이동

참조

System.AddIn

System.AddIn.Contract

System.AddIn.Hosting

System.AddIn.Pipeline

맨 위로 이동