비사모:VB 2차세미나 Microsoft Transaction Server 이건복 Agenda Welcome !!!! MTS Overview ADO Demo !!! 2-Tier 응용프로그램 구성 2 Tier 클라이언트/서버 서버가 데이터 보관 클라이언트에 코드관리 각 클라이언트마다 서버Database접속 App 소규모에 적당 확장성 부족 비효율적 자원활용 App App App 3-Tier 응용프로그램 구성 UI 3 Tier 클라이언트/서버 클라이언트는 UI 미들Tier에서 코드관리 미들Tier에서 DB 접속 대규모에 적합 확장성 우수함 효율적 자원활용 UI UI UI UI UI UI UI UI 3-Tier 응용프로그램 3-Tier 응용프로그램 구성(예:WEB) 전통적 서버객체 작성시 문제점 .. WorkDesktop group 1 user 2 users DepartEnterDivision Internet ment prise 100s 1000s 10,000s 100,000s Shared Data Connections Security Context Multithreading Load Balancing Msg Q’ing Multithread Multinode High Avail Multisite MTS 를 사용하면 …… WorkDesktop group 1 user 2 users DepartEnterDivision Internet ment prise 100s 1000s 10,000s 100,000s Transaction Server ActiveX Components MTS의 구조 Client Process Local Client IFoo Proxy Class Factory Wrapper S t u IFoo Context b Wrapper Class Factory CompIFoo onent Context Server Process Server Process Exec COM or DCOM - COM code - Transaction Server code - Client Application code - Server Application code MTS의 구조 MTS Executive - mtxex.dll provides run time services MTS Explorer - mtsexp.exe 1 Server Process per package Cannot have same component in 2 packages Resource Managers Uses mtsadmin.dll for Automation Objects Server Processes - mtx.exe Thread Management Context Management Resource Pooling SQL Server 6.5 Resource Dispensers ODBC Connection Pooler (odbc.dll) Shared Property Manager (mtxspm.dll) MTS의 주요 역할 분산 응용프로그램 개발을 위한 Infra제공 Transaction 관리 (TP-Monitor) 객체요구 처리 (Object Broker) 자원의 최적화(Resource pooling) 보안관리(Security) 관리 용이(Administrator) Transaction 관리 (TP-Monitor) 프로세스 관리 트랜잭션 관리 서버 프로세스 시작, 서버에 작업 분산 공급, 서버의 실행에 대한 모니터링, 로드 밸런싱 각 트랜잭션이 시스템적으로 ACID 보장. 자원에 대한 일치성, 실행 실패, 연결 단절, 부하 벨런싱, 동기화에 대한 고려 불 필요. 3 계층 구조 지원 데이터베이스와 GUI와는 상호 독립적인 에플리케이션 프로세스로 운영 되도록 한다. Transaction 특성 ACID : Atomicity(원자성), Consistency(일치성), Isolation(고립성), Durability(내구성) 원자성 : 트랙잭션 하의 모든 작업이 완료되어야 Commit된다것을 보장. 모든 작업이 완료되지 않으면 해당 트랜잭션은 Rollback된다는 의미. 일치성 : 트랜잭션 종료 후 시스템이 정확한 상태 유지, 종료가 아니면 실행 이전 상태로 Roll-Back. 고립성 : 동시에 수행되는 다른 트랜잭션에 영향을 받지 않는다. 내구성 : 트랜잭션에 대한 실행이 종료되어 커밋이 이루어진 후에는 그 효과는 지속됨. Transaction Server의 주요 Option Requires a Transaction 해당 MTS 컴포넌트는 반드시 트랜잭션하에서 실행. Requires a new transaction 독립된 새로운 트랙잭션 생성 Support Transaction Client의 트랙잭션 컨텍스트 하에서 실행될 수 있다. Client 트랜잭션의 컨텍스트를 상속 받아 수행. Client 트랜잭션이 없다면 트랜잭션에 참여하지 않음. Does not support Transaction 트랜잭션 컨택스트하에서 수행되지 않음. Transaction 프로그래밍 지침 서버는 상태를 유지할 필요가 없다는 것을 나타내기 위해 가능한 자주 SetComplete을 호출 MTS의 Active상태는 Server에 의해 관리 서버는 가능한 한 늦게 데이타베이스 컨넥션과 같은 서버 리소스를 구하고 빨리 반환 서버는 role보안 모델을 사용 서버는 적절한 때마다 트랜잭션을 사용 가능한 한 Call-by-value로 매개변수 사용 COM개체 자체를 넘겨주거나 리턴하는 것을 피하라. 데이타베이스 커서를 생성하여 사용하는 것을 피하라. 서버는 아파트먼트 스레딩 모델을 사용하라. (VB는 STA만 지원) MTS 컴포넌트는 Stateless하는 것이 바람직하다. Transaction 관리 (TP-Monitor) 객체요구 처리 (Object Broker) 객체에 대한 관리 클라이언트의 객체 요청에 대한 처리 Thread creation Storage allocation 객체 lifetime관리 (Just In Time 활동) Registry points to MTX.EXE, not object’s own DLL InProcServer32 replaced by LocalServer32 LocalServer32 points to: MTX.EXE -p:{GUID} stable - deallocated - reconstructed 객체 활동속성 조정가능 In the caller’s process On this server On a different server 자원의 최적화(Resource pooling) 동일 프로세스에서만 가능 Thread 1 Thread 2 ... Node - Components 1 Say When They’re Done l Thread N Process # Y Thread 1 Thread 2 ... l Thread N Process # X Recycle Resources - Processes - Threads Node - Memory 2 - Database Connections - Network Sessions - Component Instances 보안관리(Security) DCOM 보안상에서 동작 선언적(Declarative) Roles (Avoid NT Impersonation) Roughly maps to NT User Accounts Simple with no programming Use Explorer to define roles and privileges 프로그램적(Programmatic) Access security at runtime using IObjectContext and/or ISecurityProperty interfaces IsCallerInRole() IsSecurityEnabled() 보안관리(Security) If (lngAmount > 500 Or lngAmount < -500) Then If Not GetObjectContext.IsCallerInRole("Managers") Then Err.Raise Number:=APP_ERROR, Description:= "Need 'Managers' role for amounts over $500" End If End If 패키지(Package) 관련된 객체의 집합 프로세스(process)단위 신뢰의 범위 Deployment 단위 Package-1 Package-2 Microsoft Transaction Server 패키지(Package) 객체(Component) 작성 개발툴 선정 Visual Basic®, Visual C++®, Visual J++™ MicroFocus COBOL, and Others… Single-User용 객체 작성 개발자는 업무개발에 더 많은 시간을 투여할 수 있음 DLL로 컴파일 MTS에 DLL등록(객체) 객체(Component) 등록 X/OPEN DTP(분산 트랜잭션 처리) 트랜잭션 처리를 위한 소프트웨어 아키텍쳐 응용프로그램(Application Program -AP) 자원관리자(Resource Manager-RM) 오라클,사이베이스,인포믹스,DB/2 트랜잭션관리자(Transaction Manager-TM) Tuxedo(BEA),Encina(IBM),TopEnd(NCR),OpenUTM(SNI) Application Program (AP) tx_begin tx_commit tx_rollback TX Interface xa_start xa_prepare Transaction xa_rollback Manager XA Interface (TM) RMSql Interface Resource Managers (RM) OLE Tx(OLE Transactions) 마이크로소프트사의 트랜잭션관리를 위한 프로토콜 Com X/OPEN의 TM과 MTS는 다른 Tx를 가진다 SQL서버나 MSMQ등은 XA Transaction Managers ( Tuxedo)의 RM이 될 수 있다. Client Application Application OLE Tx SetAbort SetComplete Tuxedo XA Resource Manager API Microsoft DTC OLE Tx MS SQL Server Transaction Manager OLE Tx Resource Manager SQL Server Database MTS의 확장- RM MTS1.0 지원 RM SQL(OLE TX) MTS2.0 지원 RM XA지원(DTC-to-XA mapper인테페이스) 오라클,인포믹스,사이베이스,DB/2.. COMTI MSMQ Microsoft Exchange Windows NT Directory MTS의 확장- TM IBM CICS, IMB 지원 Unix TP-Monitor Tuxedo(BEA),Encina(IBM), TopEnd(NCR),OpenUTM(SNI) MTS 데 모