다음 지침에서는 사용자 고유의 COM 또는 Win32 병렬 어셈블리를 작성하는 방법을 설명합니다. 사용자가 원하는 기능이 Microsoft의 병렬 어셈블리중 하나에서 제공된다면, 사용자 고유의 병렬 어셈블리를 만들 필요가 없습니다. 이 경우 Microsoft에서 제공하는 어셈블리를 사용하고 격리된 애플리케이션 및 Side-by-side 어셈블리사용하여 병렬 어셈블리를 사용하는 절차를 따릅니다.
먼저 구성 요소가 side-by-side 어셈블리에 적합한지 고려합니다. 자세한 내용은 공유 구성 요소를 병렬 어셈블리로 제공해야 하나요?
병렬 어셈블리를 만들려면 다음 지침을 따릅니다.
- 어셈블리에 포함할 리소스를 결정합니다. 어셈블리는 애플리케이션과 고객에게 항상 함께 제공되는 하나 이상의 파일로 구성됩니다. 어셈블리는 명명, 바인딩, 버전 관리, 배포 및 기본 구성 데 사용되는 기본 단위로 사용됩니다. 일반적으로 두 리소스가 동일한 어셈블리에 속하는지 여부를 불확실한 경우 별도의 어셈블리로 이동하도록 작성하는 것이 좋습니다. 일반적으로 병렬 어셈블리는 단일 DLL로 구성됩니다.
- 조립체를 위한 어셈블리 매니페스트를 만듭니다. 매니페스트는 어셈블리의 COM 개체 또는 형식 라이브러리를 설명해야 합니다. 어셈블리 매니페스트로 작성해야 하는 항목에 대한 자세한 내용은 어셈블리 매니페스트를 참조하세요.
- 시스템에서 둘 이상의 어셈블리 버전이 실행되면 개체의 사용량을 평가합니다. 다른 버전의 어셈블리에 메모리 매핑된 파일, 명명된 파이프, 등록된 Windows 메시지 및 클래스, 공유 메모리, 세마포, 뮤텍스 및 하드웨어 드라이버와 같은 별도의 데이터 구조가 필요한지 여부를 확인합니다. 어셈블리 버전에서 사용되는 모든 데이터 구조는 이전 버전과 호환되어야 합니다. 버전 간에 사용할 수 있는 데이터 구조와 버전에 대해 비공개여야 하는 데이터 구조를 결정합니다. 공유 데이터 구조에 세마포 및 뮤텍스와 같은 별도의 동기화 개체가 필요한지 여부를 확인합니다.
- DLL이 병렬 어셈블리로 잘 작동하도록 하려면 병렬 어셈블리를 위한 DLL 작성지침을 준수하여 작성하십시오.
- 어셈블리 상태를 포함하는 레지스트리 키를 쉽게 버전화할 수 있는 방법을 제공하기 위해 헤더 파일 및 도우미 함수 집합을 작성합니다. 어셈블리는 일반적으로 레지스트리 키에 해당 상태 설정을 저장합니다. 동시에 실행할 수 있는 여러 어셈블리 버전을 격리하려면 레지스트리 설정을 개별 버전별로 작성해야 합니다. 병렬 공유 시나리오 중에 어셈블리의 상태를 올바르게 저장하고 처리하도록 병렬 어셈블리 및 DLL을 디자인합니다. 'Authoring State Storage'의 지침을 따라 side-by-side 어셈블리에 적용하십시오.
- 프라이빗 어셈블리 사용하는 애플리케이션 개발자는 애플리케이션 디렉터리를 보호해야 합니다. Windows Installer사용하여 애플리케이션을 설치하는 경우 LockPermissions 테이블을 사용하여 애플리케이션 디렉터리를 보호합니다. 일반적으로 시스템에는 프라이빗 어셈블리에 대한 읽기, 쓰기 및 실행 액세스 권한이 부여됩니다. 다른 모든 프로세스는 실행 및 읽기 권한만 부여됩니다.
- 병렬 공유가 있는 시나리오를 사용하여 어셈블리를 테스트하여 유효한 병렬 어셈블리인지 확인합니다. 어셈블리를 성공적으로 설치해도 예상대로 작동하도록 보장할 수 없습니다.
- 어셈블리에 대한 업데이트 번호 매기기 메서드를 채택합니다. 각 어셈블리는 4부로 구성된 버전 번호와 연결됩니다. 왼쪽에서 오른쪽으로 주, 부, 빌드 및 수정 부분은 마침표로 구분됩니다. 이전 버전과 호환되지 않는 버전의 어셈블리 주 또는 부 수를 변경합니다. 이전 버전과 호환되는 어셈블리 변경에 대한 빌드 및 수정 버전 부분만 변경합니다. 예를 들어 개발자는 모든 1.0.0.* 버전 번호가 어셈블리 버전 1.0.0.0에 대한 업데이트 버전을 참조하는 번호 매기기 메서드를 채택할 수 있습니다.