구성 요소 개체 매개 변수 같은 COM + 전달 방법 대기

기술 자료 번역 기술 자료 번역
기술 자료: 246627 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

이 페이지에서

요약

기록될, 개체 함수를 호출할 수 있도록 Microsoft 메시지 대기열 서버 (MSMQ 통해), 전달 및 대기 중인된 구성 요소 구성된 서버에서 재생된 구성 요소를 대기 중입니다. 경우에 따라서는 기록 중인 함수 매개 변수 개체를 포함할 수 있습니다. 대기 중인된 구성 요소는 이 작업을 수행할 수 있지만 인수를 개체 메서드 호출이 서버에서 재생될 때 다시 하려면 특정 규칙을 따라야 합니다.
  • 인수로 전달된 개체를 IPersistStream을 지원해야 합니다. Visual Basic에서 "지속" 표시해야 한다는 및 Class_ReadProperties 및 Class_WriteProperties 함수를 올바르게 구현해야 합니다.
  • 인수로 전달된 개체 클래스는 클라이언트 컴퓨터와 서버 컴퓨터에 올바르게 등록되어 있어야 합니다.
  • 위의 독립적으로 지연 만든 구성 요소 인스턴스는 매개 변수로 두 번째 대기 중인된 구성 요소에 전달할 수 있습니다.

추가 정보

It 작동 방법

어떤 개체를 인수로 전달된 대기 중인된 구성 요소를 호출할 때 진행되는?

다음은: 개체를 사용하여 Customer.CCustomer 라는 고객 정보를 관리할 수 있다고 가정합니다. 이 개체는 Customer.dll 파일에서 구현되고 다음 코드가 있습니다. 같은 지속 표시되어 있지 참고 및 해당 메서드의 해당 구현을 참고:
'CCustomer Class. Marked as 'Persistable'
Option Explicit

Public Name As String
Public Age As Integer
Public Address As String

Private Sub Class_ReadProperties(PropBag As PropertyBag)
    Name = PropBag.ReadProperty("Name")
    Age = PropBag.ReadProperty("Age")
    Address = PropBag.ReadProperty("Address")
    MsgBox "Person read!!"
End Sub

Private Sub Class_WriteProperties(PropBag As PropertyBag)
    PropBag.WriteProperty "Name", Name
    PropBag.WriteProperty "Age", Age
    PropBag.WriteProperty "Address", Address
    MsgBox "Person Written!!"
End Sub

Private Sub Class_Initialize()
    MsgBox "CCustomer Class_Initialize"
End Sub

Private Sub Class_Terminate()
    MsgBox "CCustomer Class_Terminate"
End Sub
				
이 샘플 클래스는 캐시 정보를 제외한 아무 작업도 수행하지 않습니다. 그러나 실제 시나리오에서 사용하면 대개 다른 메서드 (및 메시지 Class_Initialize 상자에!) 합니다.

지금 서버를 사용할 수 있도록 설계된 개체가 있는지 생각해 보십시오. 이 개체는 Orders.COrder, Orders.dll, 라는 별도의 파일에 있는 호출되고 함수에 다음 코드 사용하여:
Public Sub AddOrder(ByVal ItemID As Long, ByVal Amount As Double, ByVal Customer As Customer.CCustomer)
    
    MsgBox "Customer order for item '" & ItemID & "' for " & Customer.Name
    
End Sub
				
순서 고객 정보를 직접 Customer.CCustomer 형식의 개체로 지정됩니다. 실제 세계에서 이 메서드는 일부 데이터베이스 활동 아마도 유치 것입니다. 그러나 이 샘플에서 하면 메시지 상자를 발생시키는 됩니다.

있으며 마지막 않았지만 않는 최소 클라이언트 EXE 응용 프로그램. 이 모든 폼과 명령 단추에 다음 코드를 입력합니다.:
    Dim oOrder As COrder
    
    Dim oCust As CCustomer
    Set oCust = New CCustomer
    oCust.Name = "Eduardo A. Jezierski"
    oCust.Age = 23
    oCust.Address = "One Microsoft Way, Redmond, WA"
    
    Set oOrder = New COrder    
    oOrder.AddOrder 123, 100, oCust
    Set oOrder = Nothing
    
    Set oCust = Nothing
				
주문 구성 요소 내부에 있는 COM COM + 응용 추가하는 + 를 구성한 단어. 클라이언트 단추를 클릭할 때 다음 상황이 발생합니다.
  1. CCustomer 개체 (CCustomer Class_Initialize 메시지 상자를 발생시키는) 만들고 클라이언트에 의해 채워집니다.
  2. COrder 개체가 만들어집니다.
  3. COM + AddOrder 메서드를 실행할 때 응용 프로그램.
  4. "Eduardo A. Jezierski '123' 항목에 대한 고객 주문" 라는 메시지 상자가 나타납니다.
  5. COrder 인스턴스가 소멸됩니다.
  6. CCustomer Class_Terminate 메시지 상자가 나타나지 CCustomer 인스턴스가 소멸됩니다.

큐에서 가져오기

따라서 대기 중인 구성 요소 가져오는 경우 어떻게 이제 됩니까?

테스트하려면 먼저 COrder 구성을 지연 구성하십시오. 지침은 다음 Microsoft 기술 자료 문서를 참조하십시오.
246825대기 중인 구성 요소 COM + 응용 프로그램 구성 방법
생성된 구성 요소를 대기 중인 다음, 클라이언트 응용 프로그램을 수정하십시오. 이렇게 하려면 다음과 같이 수 있는 COrder 만든 줄 변경:
Set o = GetObject("queue:/new:Orders.COrder")
				
이것은 효과적으로 하면 메서드 호출을 기록하고 이를 COM + 응용 프로그램에서 앉아 COrder 개체에 디스패치 "stand-in" COrder 개체를 얻을 수 있습니다.

나머지 응용 프로그램과 동일하게 유지됩니다. 그러나 테스트할 때 다양한 이벤트가 발생합니다.
  1. 먼저 다음 고객 개체는 만들고 클라이언트에 의해 채워집니다.
  2. GetObject 함수를 사용하여 지정된 모니커를 사용하여 COrder 지연된 기록기를 인스턴스가 만들어집니다.
  3. AddOrder 메서드가 호출됩니다. COrder 같이 작동하는 QC 레코더 해당 Class_WriteProperties 가져옵니다 Customer 개체를 사용하는 모든 다른 매개 변수를 함께 (ItemID 및 금액) 상태로 유지되는 있도록 함수를 호출했습니다.
  4. COrder-레코더가 인스턴스 없음으로 설정됩니다. 수준에서 이 지점에 이를 (방금 이 AddOrder) 호출할 호출을 클라이언트 보안 토큰 및 기타 정보를 함께 압축된 모든 Microsoft 메시지 대기열 서버 (MSMQ) 메시지가 래핑되지 및 대상에 보낸.
  5. 해당 작업이 완료된 것으로, 고객 인스턴스를 소멸시킵니다 클라이언트와 작업을 완료합니다.

    meanwhile...

  6. 메시지를 보낸 후에는 원하는 응용 프로그램에 대기열에 결국 도착한 것을 가정합니다.
  7. 응용 프로그램이 "메시지를 수신하도록" 설정되어 있기 때문에 이를 MSMQ 메시지 도착 검색하고 있는 COrder 속하는 그림 X 사용자에 의해 사용되는 클래스입니다. 액세스 수행 후 검사, 서버에 대해 COrder 인스턴스를 만듭니다.
  8. 이제 텍스트 영역 "재생" 부분을 시작합니다. QC 플레이어가 메서드를 호출하면 메시지에서 저장된 기록기를 시작합니다.
  9. 이 경우, AddOrder 메서드는 것입니다. 그러나 Customer 개체 매개 변수가 포함되어 있으므로 먼저 CCustomer 인스턴스가 만들어지고 "자체를 통해 Class_ReadProperties 로드하려면" 지시됩니다 함수.
  10. 인스턴스가 로드되면 해당 일상적인 있지 않도록 플레이어를 실제로 실제 COrder 개체에서 AddOrder 메서드를 호출합니다. 새 고객 인스턴스 호출 인수로 전달하는 및 호출 작업이 완료되면 이 임시 인스턴스를 소멸시킵니다. 그런 다음 다른 기록된 호출을 유사한 방식으로 호출하고 COrder 개체 및 임시 CCustomer 인스턴스를 해제합니다.
고객 인스턴스 이를 사용하던 현실화에 없이 실행된 COrder 코드를 실제로 클라이언트, 아마 분 또는 시간 전 저장된 고객 개체 로컬 및 다른 인스턴스가 없습니다. 이 방법은 전체 비동기 모델이 유지됩니다.

속성

기술 자료: 246627 - 마지막 검토: 2014년 2월 23일 일요일 - 수정: 2.7
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual Studio 6.0 Enterprise Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
키워드:?
kbnosurvey kbarchive kbmt kbcomplusqc kbhowto KB246627 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com