CHOU

[MSRDS] CCR(Concurrency and Coordination Runtime) 알아보기 본문

Tech/Microsoft Products

[MSRDS] CCR(Concurrency and Coordination Runtime) 알아보기

chobabo 2009. 3. 16. 23:23

 
 CCR(Concurrency and Coordination Runtime)은 .NET 2.0 Common Language Runtime을 위한 여러 프로그래밍 언어를 지원하는 managed code library(DLL) 입니다. CCR은 고도의 동시성, 쓰레드, 락, 세마포어를 사용하지 않는 메시지 조작을 통한 강력한 오케스트레이션을 지원하는 메시지 기반 프로그래밍 모델 입니다. 또한 비동기 오퍼레이션 관리와 동시성 처리 및 병렬처리 하드웨어와 부분적 실패등의 처리를 쉽게 할수 있는 서비스 기반 모델 입니다.

 MSRDS 내부의 핵심 처리엔진이기도 한 CCR은 개별의 컴포넌트들이 런타임 환경과 다른 컴포넌트들에 관한 최소한의 가정하에서 독립적으로 개발할 수 있게 합니다. 이러한 개발 방법은 디자인 단계에서부터 프로그램에 관한 개념을 바꾸며 보다 손쉽게 동시성, 실패, 고립화 등의 문제를 일관적으로 처리할 수 있게 합니다.

CCR의 기본 처리 방식은 크게 3가지로 분류할 수 있는데 아래와 같습니다.

1) 특정 기능의 일을 생성함.
2) 생성된 일을 작업 큐에 넣어 놓음.
3) 일을 처리하는 엔진이 큐에 있는 해야 할일을 가져다 처리함.

 이때 자신이 개발하는 목적의 Task를 정의하기 위해 ITask 클래스 형태의 객체를 사용합니다. 또한 정의 해놓은 일을 수행하는 Dispatcher 가 엔진의 역할을 하게되는데  Dispatcher는 여러개의 큐를 만들수 있고  이를 DispatcherQueue라고 합니다. Dispatcher 는 사전적인 의미로 발신인, 송달인의 의미를 가지니까 Task를 보낸다(수행한다) 정도로 생각하면 더욱 쉽게 이해가 될거 같습니다.

 예문을 통해서 DispatcherDispatcherQueue에 대해서 알아보고 정리해 보겠습니다. CCR은 MSRDS에서 핵심적인 기능을 수행하지만 다른프로그램에서도 사용할 수 있기 때문에 http://cafe.naver.com/msrskorea 에서의 예문대로 C# 어플리케이션에서 연습해 보겠습니다.


1. 우선 Visual Studio 2008을 열어서 C# Windows Application 프로젝트를 생성해 보겠습니다.


그림1. 프로젝트 생성 창 화면


2. 다음 레퍼런스 추가를 선택해서 .NET 부분에서 Microsoft.Ccr.Core.dll 을 선택하여 추가해 줍니다. 예전 MSRS 1.5 버전에서는 MSRS bin폴더아래 Ccr.Core.dll 이 있었지만 MSRDS 2008 버전에서는 경로가 변경된 것 같습니다.


그림2. Ccr.Core.dll 화면


3.  Form1.cs 코드를 열어서 코드 상단에 아래의 코드를 추가해 줍니다.

using Microsoft.Ccr.Core;
using Microsoft.Ccr.Core.Arbiters;



그림3. 코드 추가 화면


4. 그리고 다음과 같이 폼 에다가 버튼과 리스트박스를 추가해 줍니다.


그림4. 폼 상자 구성화면


5. 버튼 이벤트 코드에 아래와 같은 코드를 삽입해 줍니다.


그림5. 버튼 이벤트 코드 화면(클릭하면 원본 이미지가 보입니다)

6. 컴파일해서 실행해 보면 아래와 같은 결과가 나오면 예제를 잘 수행하신 겁니다.




위의 코드는 보시면 알겠지만 Dispatcher를 정의한 다음 2개의 DispatcherQueue를 생성하는 예제 소스입니다.


아래 동영상은 제가 코드를 입력해서 실행하는 화면 입니다. 위의 예제가 헷갈리시는 분들은 참고 하시기 바랍니다.

영상1. Dispatcher 생성 예제 실행 화면.


오늘은 CCR에 대한 가장 기본 개념이라 할수 있는 Dispatcher에 대해 알아보았는데 다음 편에는 좀 더 자세하게 알아보겠습니다.


참고자료
1. http://cafe.naver.com/msrskorea (MSRDS 공식 네이버 카페)
마이크로소프트 김영준 수석 님께서 올려주신 예제로 MSRDS에 대해 알아보고 있습니다.

2. Dispatcher 생성 예제 Source Code (Visual Studio 2008)



궁금하신 점이나 틀린 부분 있으면 알려 주세요. 감사합니다.