Microsoft 트랜잭션 서버
Microsoft Transaction ServerMicrosoft Transaction Server(MTS)는 대규모 분산 애플리케이션을 쉽게 만들 수 있도록 Component Object Model(COM) 소프트웨어 컴포넌트에 서비스를 제공하는 소프트웨어입니다.MTS가 제공하는 주요 서비스는 자동 트랜잭션 관리, 인스턴스 관리(또는 저스트 인 타임 활성화) 및 역할 기반 보안이었습니다.MTS는 애스펙트 지향 프로그래밍을 [1]구현한 최초의 주요 소프트웨어로 간주됩니다.
MTS는 Windows NT 4.0 옵션팩에서 처음 제공되었습니다.Windows 2000 에서는, MTS 가 확장되어 operating system 및 COM 와의 통합이 강화되어 COM+ 로 이름이 변경되었습니다.COM+ 에서는 오브젝트 풀링, 느슨하게 결합된 이벤트, 및 사용자 정의의 심플 트랜잭션(리소스 매니저를 보완하는)이 MTS 기능에 추가되었습니다.
COM+ 는 Windows Server 2003 및 Windows Server 2008 및 Microsoft 와 함께 제공됩니다.NET Framework는 Enterprise Services 네임스페이스에 COM+용 래퍼를 제공합니다.WCF(Windows Communication Foundation)는 웹 서비스를 사용하여 COM+ 응용 프로그램을 호출하는 방법을 제공합니다.그러나 COM+는 COM을 기반으로 하고 있으며 Microsoft의 전략적인 소프트웨어 아키텍처는 현재 웹 서비스와 입니다.COM이 아닌 NET.순수함이 있다.COM+가 제공하는 많은 기능에 대한 NET 기반의 대체 수단으로서 장기적으로는 COM+가 단계적으로 폐지될 가능성이 있습니다.
아키텍처
기본적인 MTS 아키텍처는 다음과 같이 구성됩니다.
- MTS 이그제큐티브(mtxex.dll)
- 각 컴포넌트의 팩토리 래퍼와 컨텍스트래퍼
- MTS 서버 컴포넌트
- MTS 클라이언트
- 다음과 같은 보조 시스템:
- COM 런타임 서비스
- 서비스 컨트롤 매니저(SCM)
- Microsoft Distributed Transaction Coordinator(MS-DTC)
- Microsoft 메시지 큐(MSMQ)
- COM-Transaction Integrator(COM-TI)
- 기타.
MTS Executive의 관리 하에 실행되는 COM 컴포넌트는 MTS 컴포넌트라고 불립니다.COM+ 에서는, COM+ 애플리케이션이라고 불립니다.MTS 컴포넌트는 처리 중인 DLL입니다.MTS 컴포넌트는 이들을 관리하는 MTS Executive에서 배치 및 실행됩니다.다른 COM 컴포넌트와 마찬가지로 IClassFactory 인터페이스를 구현하는 오브젝트는 이러한 컴포넌트의 새로운 인스턴스를 작성하기 위한 팩토리 오브젝트로 기능합니다.
MTS는 실제 MTS 개체와 클라이언트 사이에 Factory Wrapper Object와 Object Wrapper를 삽입합니다.이러한 래퍼의 개재는 대행 수신이라고 불립니다.클라이언트가 MTS 컴포넌트에 콜을 발신할 때마다 래퍼(팩토리 및 오브젝트)는 콜을 대행 수신하여 Just-In-Time Activation(JITA)이라고 하는 독자적인 인스턴스 관리 알고리즘을 콜에 삽입합니다.그런 다음 래퍼는 실제 MTS 컴포넌트로 이 콜을 발신합니다.당시에는 확장 가능한 [1]메타데이터가 부족했기 때문에 가로채기가 어려운 것으로 간주되었습니다.
또한 구성 요소의 배포 속성 정보를 기반으로 트랜잭션 논리 및 보안 검사도 이러한 래퍼 개체에서 수행됩니다.
모든 MTS 호스트 대상 오브젝트에는 IObjectContext 인터페이스를 구현하는 컨텍스트오브젝트도 존재합니다.컨텍스트 개체는 트랜잭션 정보, 보안 정보 및 배포 정보 등 해당 개체에 대한 특정 정보를 유지합니다.MTS 컴포넌트 내의 메서드는 IObjectContext 인터페이스를 통해 컨텍스트오브젝트를 호출합니다.
MTS는 클라이언트로부터의 콜이 컨테이너에 도달할 때까지 실제 중간 계층의 MTS 개체를 작성하지 않습니다.오브젝트는 항상 실행되고 있지 않기 때문에 많은 시스템리소스를 소비하지 않습니다(오브젝트의 래퍼와 스켈레톤이 유지되더라도).
클라이언트로부터 콜이 착신하면, MTS 래퍼 프로세스에 의해서, JITA라고 불리는 인스턴스 관리 알고리즘이 액티브하게 됩니다.실제 MTS 오브젝트는 래퍼로부터의 요구를 처리하기 위해 "저스트 인 타임"으로 작성됩니다.요구가 처리되어 응답이 클라이언트에 반환되면 컴포넌트는 SetComplete()/SetAbort()를 호출하거나 트랜잭션을 종료하거나 클라이언트는 오브젝트를 참조하여 Release()를 호출하여 실제 MTS 오브젝트를 파기합니다.즉, MTS는 스테이트리스 컴포넌트 모델을 사용합니다.
일반적으로 클라이언트가 일반적인 MTS 컴포넌트에서 서비스를 요구하면 서버에서 다음 시퀀스가 발생합니다.
- 데이터베이스 접속을 확립하다
- 공유 속성 관리자 또는 기존 개체 또는 클라이언트에서 구성 요소 상태를 읽습니다.
- 비즈니스 로직을 실행하다
- 컴포넌트의 변경된 상태(있는 경우)를 데이터베이스에 다시 쓴다.
- 데이터베이스 연결 닫기 및 해제
- 거래 결과에 대해 투표하다MTS 컴포넌트는 트랜잭션을 직접 커밋하지 않고 MTS에 성공 또는 실패를 전달합니다.
따라서 대기 시간이 긴 리소스를 비동기 리소스 풀로 구현할 수 있습니다.이 풀에서는 미들웨어 서버가 제공하는 스테이트리스 JIT 액티베이션의 이점을 활용할 수 있습니다.
레퍼런스
- ^ a b Don Box; Chris Sells (4 November 2002). Essential.NET: The common language runtime. Addison-Wesley Professional. p. 206. ISBN 978-0-201-73411-9. Retrieved 4 October 2011.