'Queue'에 해당되는 글 1건

  1. 2007.04.06 메시지 대기열 액세스하기
posted by 써니루루 2007. 4. 6. 11:19

 

.NET을 이용한 분산 응용프로그램의 작성

Duncan Mackenzie
Microsoft Developer Network

2002년 2월 갱신

요약: 이 기사는 MSMQ 메시지 대기열에 데이터를 읽고 쓰기 위해 .NET 프레임워크에서 제공하는 System.Messaging 클래스들의 사용 방법을 묘사하고 있습니다.

Bdadotnet_beta2.msi를 다운로드합니다.

목차

소개
대기열을 이용한 작업
   프로그래밍을 통한 대기열 생성하기
   대기열 삭제하기
메시지의 전송
   간단한 방법
   복합적인 방법
메시지의 수신
   Time-out 값 설정하기
   특정 포맷터 사용하기
결론

소개

비동기적으로 작업을 수행하는 것은 실행 결과를 기다리지 않고 실행하는 것입니다. 이러한 유형의 처리는 많은 시간을 요하는 작업과 실행이 끝날 때까지 기다리지 않고 다른 작업을 계속 해나갈 수 있도록 해줍니다.

사용자들의 요청이 긴 시간의 처리를 필요로 하지만 사용자에게 즉각적인 응답 처리를 제공하길 원하는 웹의 경우와 같이, 비동기 처리는 많은 상황에서 사용하기에 이상적입니다. 사용자의 요청을 비동기적으로 처리함으로써, 시스템은 요청이 실제로 실행하기에 얼마나 긴 시간이 소요되는지에 상관없이 응답할 수 있게 됩니다.

Microsoft® .NET 응용프로그램에 비동기 처리를 추가하기 위한 다양한 방법이 존재합니다. 예를 들어, Microsoft Exchange 2000 또는 Microsoft BizTalk 서버의 워크플로우 기능의 장점을 이용할 수 있을 것입니다. COM Interop을 이용해 COM+ 대기열을 사용하는 구성요소(Queued Component)를 이용할 수 있습니다. 또는 MSMQ 메시지 대기열을 이용해 직접 처리 작업을 수행할 수도 있습니다. 향후 진행될 아키텍처 중심의 주제 기사에서는 깊이 있게 이들 대안들을 비교할 것입니다.

BizTalk 과 COM+ 대기열을 사용하는 구성요소(Queued Component)에서 사용되는 MSMQ는 마이크로소프트 윈도우 NT 4.0 옵션 팩과 마이크로소프트 윈도우 2000 서버 버전의 일부분입니다. 윈도우 NT 4.0 워크스테이션, 윈도우 2000 프로페셔널, 윈도우 XP 프로페셔널 운영체제에서, 이 기사에서 다뤄지게 될 지역 개인 대기열(local private queue)를 액세스하기 위해 MSMQ를 이용할 수 있습니다. MSMQ를 이용해 응용프로그램은 데이터를 대기열에 위치시키도록 할 수 있습니다. 그리고 응용프로그램(다른 응용프로그램이던지 대기열에 데이터를 적재한 응용프로그램이던지 간에)이 데이터를 액세스할 때까지, 데이터는 대기열에 계속해서 유지될 것입니다. 실제로 작업을 동기적으로 처리하는 것에 비해 작업을 나타내는 메시지(예를 들자면, 처리할 주문정보 따위)를 대기열에 위치시킴으로써, 주 시스템은 단지 대기열에 게시할 때 요구되는 시간만큼만 지연시간이 발생합니다. 여러 다른 종류의 시스템은 메시지를 대기열에 게시할 수 있으며, 같은 메시지를 검색하도록 사용될 수 있습니다. 그래서 응용프로그램에 확장성을 제공할 수 있는 것입니다.

이 기사에서는, MSMQ를 이용한 작업을 하기 위해 .NET 프레임워크에 의해 제공되는 System.Messaging 클래스를 어떻게 사용하고, 응용프로그램에 비동기 워크플로우를 어떻게 추가할 수 있는지에 대해 설명할 것입니다.

이미 언급한 바와 같이, MSMQ는 윈도우 NT 4.0, 윈도우 2000, 윈도우 XP 프로페셔널에서 모두 사용 가능합니다. 그러나 이 예제에서는 MSMQ가 설치된 윈도우 2000 서버를 보유하고 있다고 가정할 것입니다. 이 기사에서의 예제들은 이 서버가 .NET 코드가 실행되는 장비와 같다고 가정할 것입니다. 그러나, 실제 시스템에서는 이 코드는 분리된 별도 서버에 위치한 메시지 대기열들에 연결해야 할 지 모릅니다.

대기열을 이용한 작업

메시지 대기열을 사용하기 전에 메시지 대기열을 설정할 수 있어야만 합니다. 이를 위해서, 응용프로그램에서 유일무이하고 일관성 있게 대기열을 묘사하는 방법이 필요합니다. .NET은 특정 대기열을 액세스 하기 위한 세가지 다른 방법을 제공합니다.