Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

akka.persistence 를 설치하여, Actor 영속성에 관련된 기능을 제공 받습니다.  


c# 변경할수 없는 리스트

 메시지 보증에 있어서, 변경할수 없는 ( 전송한 이후 중간에 누가 변경할수 없는) 제약조건은 중요합니다.

이것은 여러스레드가 접근을 하여도 값을 변경할수 없으니 , 스레드안정성을 보장할수 있으며

처음 발생한 메시지가 어떠한 동작에의해 변이 될수 없음을 뜻합니다. 

akka.net 에서는 이러한 보증을 위해 .net 의 ImmutableList를 활용합니다.

link : https://msdn.microsoft.com/ko-kr/library/dn467185(v=vs.111).aspx

c# 7.0 패턴 매칭 사용

Class에대해 조금 고급화된 패턴 매칭을 사용하기위해 ( VS-2015사용중이라면)

C# 7.0 에서 추가된 패턴매칭을 사용하겠습니다.  ( if,switch 를 좀더 유연하게 클래스와 매칭하여 사용) 

아래 사용방식은 if문으로 늘려도 상관없습니다. -switch문을 단순하게 하는것은 Akka의 목표는 아니지만 메시지처리를 단순화하는것은 Akka의 목표에 포함이됩니다.


Code Block
languagec#
themeEmacs
title개선된 패턴매칭예-if문 단계를 줄일수있음
linenumberstrue
switch (message)
{
    case Cmd cmd:        
        break;
    case "snap":       
        break;
    case "print":        
        break;
}


switch (shape)
{
    case Square s when s.Side == 0:
    case Circle c when c.Radius == 0:
        return 0;

    case Square s:
        return s.Side * s.Side;
    case Circle c:
        return c.Radius * c.Radius * Math.PI;
    default:
        throw new ArgumentException(
            message: "shape is not a recognized shape",
            paramName: nameof(shape));
}

...