advanced mts programming of visual basic6 0 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Advanced MTS Programming of Visual Basic6.0 PowerPoint Presentation
Download Presentation
Advanced MTS Programming of Visual Basic6.0

Loading in 2 Seconds...

play fullscreen
1 / 50

Advanced MTS Programming of Visual Basic6.0 - PowerPoint PPT Presentation


  • 150 Views
  • Uploaded on

Advanced MTS Programming of Visual Basic6.0. Microsoft Corporation Data Access Team Keon Bok Lee. Agenda. MTS 기초 Review MTS Component 디버깅 Connection Pooling MS-DTC 성능향상 방안 Q & A. MTS Review 개체모델과 서비스. Visual Basic 으로 MTS 구성요소 만들기. Visual Basic 에서 MTS 구성요소 작성단계 :

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

Advanced MTS Programming of Visual Basic6.0


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
advanced mts programming of visual basic6 0
Advanced MTS Programming of Visual Basic6.0

Microsoft Corporation

Data Access Team

Keon Bok Lee

agenda
Agenda
  • MTS기초 Review
  • MTS Component 디버깅
  • Connection Pooling
  • MS-DTC
  • 성능향상 방안
  • Q & A
visual basic mts
Visual Basic 으로 MTS 구성요소 만들기
  • Visual Basic에서 MTS구성요소 작성단계:
    • ActiveX® DLL 프로잭트 선택
      • Reference에 MTS Type Library추가
      • IObjectControl인터페이스 구현
      • 사용자 Public methods 추가
      • MTSTransaction 속성 설정
objectcontext interface
ObjectContext Interface
  • MTS 구성요소는 ‘GetObjectContext’를 호출
  • ObjectContext
    • SetComplete
    • SetAbort
    • IsInTransaction
    • CreateInstance
    • SafeRef
mts transaction
MTS Transaction 지원
  • MTS transactions databases
  • 자동화 또는 Client제어 transactions

SQL Server DB1

Customer Info

(Cash balance)

MTS 환경

Component

Method which debits cash and adds to equity holding

SQL Server DB1

Stock Info

(Equity Holdings)

mts transaction mode
MTS Transaction Mode
  • 트랜잭션 필요
    • 항상 트랜잭션을 사용
  • 트랜잭션 지원
    • 트랜잭션이 있는 경우 참여,없는 경우 참가하지 않음
  • 새로운 트랜잭션 사용
    • 반드시 새로운 트랜잭션 사용
  • 트랜잭션 없음
    • 일반적인 COM속성 지원
slide8
‘자동’ 트랜잭션

Public Sub BuyStock(Byval dblAmount As Double, Byval strSymbol As String)

On Error Goto ErrHandler

RemoveFromCash dblAmount

BuyStock dblAmount, strSymbol

GetObjectContext.SetComplete

Exit Sub

ErrHandler:

GetObjectContext.SetAbort()

End Sub

mts jit just in time activation
MTS “JIT(Just-in Time Activation)”
  • Client 는 서버 참조상태를 유지
    • Server의 resources를 사용
    • Client 는 빠름
  • Client 는 서버의 참조를 반환
    • Client pays performance penalty
    • Server releases expensive resources
mts just in time activation
MTS “Just-in Time Activation”
  • 개체는 메소드가 호출되기 전에 활성화됨
  • 비활성화가 될때:
    • SetComplete, SetAbort
    • 트랜잭션 실패
    • Client가 참조를 반환할때
mts objectcontrol
MTS ObjectControl 인터페이스

Implements ObjectControl

Public Sub Method1()

'......

End Sub

Private Sub ObjectControl_Activate()

’여기서 개체를 초기화 하는 코드나 연결등의 작업을 수행

Debug.Print "Activate"

End Sub

Private Sub ObjectControl_Deactivate()

’연결을 끓거나 개체의 resource를 반환

Debug.Print "Deactivate"

End Sub

Private Function ObjectControl_CanBePooled() As Boolean

ObjectControl_CanBePooled=True

End Function

activation deactivation setcomplete setabort
Activation 과DeactivationSetComplete/SetAbort 호출

Class_Initialize()

ObjectControl_Activate()

BuyStock(“MSFT”, 10)

ObjectControl_Deactivate()

ObjectControl_Activate()

SellStock(“INTC”, 10)

ObjectControl_Deactivate()

Class_Terminate()

Set obj = New clsAccount

obj.BuyStock(“MSFT”,10)

obj.SellStock(“INTC”, 10)

Set obj = Nothing

deactivation
Deactivation 방지
  • DisableCommit/EnableCommit 사용
  • SetAbort, SetComplete을 사용하지 않는다

Private m_strSymbol As String

Private m_dblCash As Double

Public Property Let Symbol(ByVal strNewValue As String)

m_strSymbol = strNewValue

GetObjectContext.DisableCommit

End Property

Public Property Let Cash(ByVal dblCash As Double)

m_dblCash = dblCash

GetObjectContext.DisableCommit

End Property

set obj new clsquote obj getquote msft obj getquote intc set obj nothing
Set obj = New clsQuote

obj.GetQuote(“MSFT”)

obj.GetQuote(“INTC”)

Set obj = Nothing

Activation And DeactivationNo SetComplete/SetAbort Case

Class_Initialize()

ObjectControl_Activate()

GetQuote(“MSFT”)

GetQuote(“INTC”)

ObjectControl_Deactivate()

Class_Terminate()

mts declarative security

Package2 Identity = User

MTS “Declarative” Security
  • Each “package” runs under different “identities”
  • “Roles” restrict client access

MTS Environment

Updates database

“Role” 1

Admins

Package1 Identity = Administrator

SQL Server

Component 1

Component 2

“Role” 2

Users

Admins

Component 1

Component 2

Read-only restricted access

mts programmatic security

Original Creator/Caller =A

Direct Creator/Caller=B

MTS “Programmatic” Security
  • Exposes “Identity” of Caller/Creator

Base Process A

Context Object

Security object

GetDirectCallerName

GetDirectCreatorName

GetOriginalCallerName

GetOriginalCreatorName

Server Process B

Server Process C

slide17

Dim objSecurity As SecurityProperty

Set objSecurity = GetObjectContext.SecurityProperty

If (GetObjectContext.IsSecurityEnabled) Then

If (Instr(1, objSecurity.GetDirectCallerName, “Brian”)) Then

Call AdminRoutine

End If

End If

MTS “프로그램적 ” 보안기술
visual basic 6 0 mts
Visual Basic 6.0으로 MTS 구성요소 디버깅하기
  • Visual Basic 6.0에서 MTS 구성요소를 디버깅하긴 위한 조건
    • Windows NT® 4.0 SP4
    • MTSTransaction 속성 설정
visual basic debugging
Visual Basic Debugging 데모
  • 간단한 Recordset Query
  • SetAbort와 자동 Rollback
slide21
디버깅 방법/절차
  • initialize 또는 terminate의 코드는 피하라!
  • 구성요소는 ‘라이브러리’형식으로 선택
    • Security는 지원되지 않음
  • 단일 Thread 실행
slide22
VC++ 디버거를 이용한 방법
  • VB컴파일시에 심볼파일을 선택
  • 소스파일을 열고 중단점을 선택
  • Launching Application에 - mtx.exe를 선택
  • 명령줄에 패캐지의 ID를 입력 :
  • /p:{00000000-0000- 0000-0000- 000000000000} or /p:<Package name>
slide23
VC 디버거를 사용하는 이유
  • Thread 정보를 볼 수 있다.
  • 관련된 프로세스를 디버깅가능
    • server package
    • InetInfo process
mts object pooling recycling
MTS Object Pooling 과 Recycling
  • Thread Pool Manager
  • ODBC Resource Dispenser 사용
  • Object Instance Broker

MTS Environment

Existing

Requests

Object In Use

Object Available

Object In Use

New

Request

Object Available

advanced mts topics
Advanced MTS Topics
  • MS-DTC(Distributed Transaction Coordinator)
    • MTS의 트랜잭션을 다루는 서비스.
    • MTS DB 연결은 자동적으로 DTC 목록에 추가
    • 지역 또는 원격 인스턴스 사용가능
    • 트랜잭션 작업을 사용하기 위해서는 반드시 DTC가 실행
advanced mts topics1
Advanced MTS Topics
  • MTS 프로세스 제어
    • 각MTS 패키지는 프로세스를 나타낸다
    • 모든 구성요소는 패키지안에 설치되며 같은 프로세스로 실핸된다.
    • 프로세스는 첫번째 클라이언트의 요청에 의하여 실행
    • 서버 패키지는 반드시 하나의 유효한 id를 가진다. 만일 ID가 유효하지 않다면 패키지는 실행되지 않는다.
      • 암호가 변경되거나 로그온한 사용자가 없는 경우
advanced mts topics2
Advanced MTS Topics
  • Failfasting
    • 오류가 발생한 경우 MTS구성요소는 종료되며 Log를 남긴다.
      • Access Violations
      • Unhandled exceptions
      • Inconsistent internal states
    • 대부분의 경우 구성요소의 내부적인 문제가 원인이 된다.
    • MTS 프로세스들을 안정적이고 올바르게 작동하도록 유지
advanced mts topics3
Advanced MTS Topics
  • MTS이벤트로그
    • MTS 로그는 오류를 감지한 소스를 지정
    • 스택 트래이스의 System 오류(AV, page faults)의 결과기록.
    • 일반 MTS 이벤트:
      • “An object call caused an exception”
      • “Failed on creation from ObjectContext”
      • Line d:\...\resdisp\mtxdm\cholder.cpp indicates an unstable ODBC driver
advanced mts topics4
Advanced MTS Topics
  • MTS 이벤트로그의 예제
advanced mts topics5
Advanced MTS Topics
  • 보안
    • DCOM Security
      • DComCnfg
      • Impersonation
      • NTLM
    • MTS security
      • 역할에 따른 클라이언트의 사용권한 부여
      • 서버패키지 ID를 이용한 인증
advanced mts topics6
Advanced MTS Topics
  • 보안(계속)
    • Database 보안
      • MTS 어플리케이션 모델에서는 보안은 반드시 DB가 아닌 미들티어에서 다루어져야 한다.
      • 모든 연결은 고유한 보안 속성에서 이루어진다.
      • DB인 경우에는 , 같은 User/Password 가 모든 연결에 사용되어져야 한다.
advanced topics
Advanced Topics
  • IIS integration:
    • ASP는 MTS context에서 실행.
      • ASP페이지에서 발생한 문제(corruption 또는 AV) 는 MTS에 의해서 관리
    • IIS는 기본적으로 MTS 개체와 IStream callback을 통하여 마샬링.
    • MTS 개체생성시 Server.CreateObject 는 context 를 이용하여 IIS의 보안과 트랜잭션에 관한 정보를 관리한다.
      • CreateObject
advanced topics1
Advanced Topics
  • ObjectContext.CreateInstance 는 MTS 개체를 위한 context를 생성. CreateObject (CoCreateInstance)
  • 일반 구성요소에서는 차이가 없다.
    • COM+
  • JIT의 구현
    • No state
    • No VB events 또는 connection points
advanced topics2
Advanced Topics
  • Application 디자인
    • Network round trip을 최소화 (no properties, 적은 method 호출)
    • 클라이언트 커서를 이용하여 DB와의 network traffic을 최소화
    • State (Client, DB, SPM), no objects in SPM
    • connection에 Callback과 VB이벤트를 포함하여 사용
      • 보안문제
      • 성능문제
ole transactions
OLE Transactions
  • Interface’s used to communicate between application, transaction manager and resource manager
  • A group of COM interfaces

Application

RM API

OLE Tx

E.g. ODBC

Resource

Manager

Transaction

Manager

OLE Tx

E.g. MS DTC

E.g. MS SQL Server

ole transactions1
OLE Transactions
  • Six Objects
    • MS DTC proxy core object, Transaction object, Transaction Options, Export object, Enlistment object, Voter object, Resource Manager object
  • Thirteen Interfaces
x open distributed transaction processing standard
X/Open Distributed Transaction Processing Standard
  • X/Open DTP TX - App to Transaction Mgr
  • X/Open DTP XA - RM to Transaction Mgr

Application

X/Open DTP TX

RM API

E.g. ODBC

Resource

Manager

Transaction

Manager

X/Open DTP XA

E.g. MS DTC

E.g. MS SQL Server

xa interoperability
XA Interoperability
  • XA Mapper

Application

E.g. Encina, TopEnd, Tuxedo

X/O

DTP TX

XA TM

RM API

X/O DTP XA

E.g. ODBC

XA Mapper

Resource

Manager

MS DTC

OLE Tx

E.g. MS DTC

E.g. MS SQL Server

distributed transactions with ms dtc

RM API

RM API

E.g. ODBC

E.g. ODBC

MS DTC

Resource

Manager

RM ‘Pipe’

DTC Proxy

E.g. TDS

OLE Tx

Resource

Manager

MS DTC

E.g. MS SQL Server

Distributed Transactions with MS DTC

Application

RM Proxy

OLE Tx

Machine

Process

DTC Proxy

OLE Tx

RM Proxy

OLE Tx

E.g. MS SQL Server

DTC Proxy

OLE Tx

distributed transactions with mts

App cpts

MTS

Executive

RM API

E.g. ODBC

Resource

Dispenser

Dispenser

Manager

RM Proxy

DTC Proxy

Resource

Manager

MS DTC

E.g. MS SQL Server

Distributed Transactions with MTS

MTX.exe

ObjectContext

Machine

Process

OLE Tx

DTC Proxy

OLE Tx

visual basic
서버구성요소로 사용하기 위한 중요한 Visual Basic기능
  • 무인실행(Unattended Execution)
  • 메모리에 보유(Retained in Memory)
  • 아파트먼트(Apartment-thread)
  • 이진호환(Binary Compatibility)
slide45

DLL2

DLL1

DLL3

Class C2

Implements

Abstract.I2

Class C1

Implements

Abstract.I1

Class C3

Implements

Abstract.I3

인터페이스의 중앙화
  • 인터페이스GUIDs
  • 인터페이스정의 와 구현
  • ‘순환참조’문제를 방지

Server Components

Central Abstract

TLB

Interface I1

Interface I2

Interface I3

IDL

Script

performance improvements
Performance Improvements
  • 개체의 locking문제
  • 메모리에 보유
    • “Retained in Memorry”
threadpoolmax
ThreadPoolMax
  • NT SP4
  • ThreadPoolMax (REG_DWORD)
  • HKEY_LOCAL_MACHINE/Software/Microsoft/Transaction Server/Package/{your package GUID}
  • 0 to 0x7FFFFFFF
check list
Check List
  • 하나의 Package안에는 동일한 Thread Model을 사용.
  • 이진호환모드(binary Compatibility)
  • Transaction Option의 설정의 정확성
  • Project ADO Library참조시 MDAC version
  • '무인실행'과 '메모리에 보유’
  • MTS component를 개발시에는 Instancing option을 Global Multi-Use를 제외
references and web sites
References And Web Sites
  • Homer A., Sussman D., Professional MTS MSMQ with VB and ASP, Wrox Press
  • Building and Debugging Components in Visual Basic 6.0, Visual Basic Readme, VB6.0
  • HOWTO: Debug a Native Code Visual Basic Component In VC++, Q166275, Microsoft Technical Support Articles
  • http://www.microsoft.com/com
  • http://msdn.microsoft.com/developer
  • http://www.advisor.co.kr