영어로 읽기

다음을 통해 공유


BizTalk 어셈블리

Microsoft BizTalk Server 및 .NET Framework의 가장 중요한 특징은 맵, 스키마, 오케스트레이션, 파이프라인 같은 모든 BizTalk Server 아티팩트가 .NET 어셈블리에 컴파일된다는 점입니다. 이 디자인의 가장 중요한 두 가지 의미는 이러한 어셈블리에 강력한 이름이 있어야 한다는 점과 이로 인해 이러한 어셈블리도 .NET 버전 지정 규칙을 따라야 한다는 점입니다. 즉, BizTalk 프로젝트가 다른 .NET 프로젝트 또는 어셈블리(BizTalk 프로젝트 포함)의 특정 버전에 대해 빌드되면 최신 버전에 대해 다시 빌드될 때까지 해당 버전을 계속 사용합니다.

.NET 버전 관리 및 어셈블리

BizTalk 프로젝트의 버전 번호를 변경하지 않거나, 형식이 로드된 BizTalk 호스트 인스턴스를 중지하고 다시 시작하지 않고 어셈블리를 다시 배포하면 .NET 버전 관리와 관련된 개발 과정에서 일반적인 문제가 발생합니다.

프로세스가 다시 실행되면 변경 사항이 적용되지 않습니다. 이것은 .NET 어셈블리가 메모리로 로드되는 방식 때문입니다. 호스트에 이미 어셈블리의 메모리 내 복사본이 있기 때문에 새 복사본이 전역 어셈블리 캐시에 배치될 때 어셈블리를 다시 로드하지 않습니다. 예를 들면 오케스트레이션이 있는 어셈블리의 1.0.0.0 버전이 배포되어 실행 중이며 오케스트레이션을 변경했지만 버전 번호가 변경되지 않은 경우 변경 사항이 적용되지 않습니다. 호스트 인스턴스를 중지하면 어셈블리의 메모리 내 복사본이 삭제되고 호스트 인스턴스를 다시 시작하면 어셈블리의 새 복사본이 다시 로드되고 변경 사항을 가져옵니다. 새 버전, 즉 버전 2.0.0.0을 배포하고 로드한 경우에는 변경 사항이 적용되었을 것입니다.

BizTalk Server에 어셈블리를 배포하는 프로세스는 두 부분으로 구성됩니다. 첫 번째 단계는 강력한 이름의 어셈블리를 어셈블리가 사용되는 각 서버의 GAC(전역 어셈블리 캐시)에 배포하는 일반적인 .NET 어셈블리 배포입니다. 두 번째 단계는 어셈블리 및 해당 유형에 대한 메타데이터를 BizTalk Server 관리 데이터베이스에 배포하는 것입니다. BizTalk Server 어셈블리는 주로 관리 데이터베이스에 있는 강력한 이름을 사용하여 BizTalk Server에 의해 로드됩니다.

GAC에 BizTalk Server 어셈블리 배포

개발자가 만든 BizTalk Server 아티팩트는 기본 제공된 BizTalk Server 유형에서 파생되는 클래스로 컴파일됩니다. 예를 들면 오케스트레이션은 Microsoft.BizTalkXLANGs.BTXEngine.BTXService 클래스에서 파생되는 클래스가 됩니다. 이러한 기본 클래스가 전역 어셈블리 캐시에 대한 어셈블리에 배포되고 이러한 어셈블리가 GAC의 다른 어셈블리에 종속되므로 개발자의 어셈블리도 GAC에 배포해야 하기 때문입니다.

BizTalk Server 아티팩트를 전역 어셈블리 캐시에 배포하여 강력한 이름을 지정하는 다른 중요한 이유는 강력한 이름의 어셈블리가 강력한 이름이 지정되지 않은 다른 어셈블리를 호출할 수 없기 때문입니다. 즉, 개발자가 이러한 BizTalk Server 어셈블리를 사용하여 만든 모든 어셈블리에도 강력한 이름을 지정해야 합니다. 게다가 GAC에 배포되고 특정 경로를 사용하지 않고 다른 어셈블리를 로드하는 어셈블리는 GAC에서 이러한 어셈블리를 로드해야 합니다.

파이프라인 구성 요소는 Visual Studio의 개발자 도구 상자에 추가되어 파이프라인 디자이너로 끌어다 놓을 수 있도록 합니다. BizTalk Server 파이프라인이 .NET 어셈블리로 컴파일되면 파이프라인의 여러 단계에 있는 모든 구성 요소에 대한 정보가 어셈블리로 컴파일됩니다. 이 파이프라인이 BizTalk Server 배포되면 해당 파일 이름을 포함한 구성 요소에 대한 정보가 BizTalk Management 데이터베이스에 삽입되고 파이프라인 어셈블리가 GAC에 배포됩니다. BizTalk 파이프라인 구성 요소가 의존하는 추가 어셈블리도 런타임에 찾을 수 있도록 GAC에 배포해야 합니다. 어셈블리가 GAC에 배포되는지 여부에 관계없이 런타임에 BizTalk 파이프라인에서 액세스할 수 있도록 파이프라인 구성 요소 어셈블리를 BizTalk Server\Pipeline Components 디렉터리에 복사해야 합니다. 파이프라인이 실행되면 이러한 구성 요소가 로드되고 구현한 인터페이스는 적절한 시기에 호출됩니다. 파이프라인 구성 요소 어셈블리도 GAC에 배포되는 경우 런타임에 GAC에서 어셈블리가 로드됩니다. 이렇게 하면 파이프라인 구성 요소 어셈블리가 BizTalk Server\Pipeline Components 디렉터리와 GAC 모두에서 동일한지 확인하기 위해 주의하지 않으면 혼동이 발생할 수 있습니다.

참고 항목

런타임 아키텍처