액터모델의 특징 요약
- 동시및 분산 시스템작성을 위해 높은수준의 추상화제공
- 개발자가 명시적 잠금처리및 스레드 관리 안해도됨
- 이로인해 병렬 시스템 작성에 용이
Actor 정의(+메시지설계)
public class SomeMessage { public string message { set; get; } } public class MyActor : ReceiveActor { public MyActor() { Receive<string>(message => { Sender.Tell("RE:" + message); }); Receive<SomeMessage>(message => { Sender.Tell("RE:" + message.message); }); } }
Actor의 는, 메시지를 유연하게 보낼수 있는 가장작은 기본객체이며
우리는 Actor설계시다음을 생각하면 된다. 이것은 마치 특정API 설계시 하는 고민과 똑같다.
- 어떠한 메시지(구조체)를 전달할것인가?
- 특정한 메시지(요청)에 어떻게 반응할것인가?
위 정의 코드는 그러한 설계에대해 구현을 한것이다.
- 어떠한 메시지를 설계하고
- 메시지를 받게 될시 , 접두어 "RE:" 를 붙여 해당 메시지를 그대로 돌려줘라
생성자에서 , 패턴 매칭하여 메시지 처리기가 가능한것은 , ReveiveActor의 추상화덕분이며
IF문이나 스위치문없이 생성자에서 , 처리할 패턴별로 처리기가 등록이 가능한것은 C#의 문법지원때문인데
개발 언어학 적으로 파악하고자 하면 (람다/함수형/델리게이트) 등 참조 가능합니다.
어쨋든, 우리는 아주 짧은 코드로 액터 메시지 처리기 설계가 끝이났습니다.