배우 모델에 대해 조금 읽었지만 실제 상황에서 배우를 사용하는 방법, 즉 문제를 모델링하는 방법을 실제로 이해하지 못합니다.
누군가 설명해 주시겠습니까? 간단한 예 또는 예에 대한 링크가 많이 인정 될 것입니다.
답변
메시지와 함께 모델링 작업의 의미에서 액터는 몇 가지 유용한 항목을 제공하는 소프트웨어 모델링 방법입니다 …
-
액터는 단일 스레드에서 작동 할 수 있으므로 많은 잠금 마법없이 스레드 안전 / 비 동시 작업을 수행 할 수 있습니다. 액터는받은 편지함에있는 메시지에 응답합니다. 명령을 처리하려고 할 때 메시지를 보내면 수신 된 순서대로 처리합니다. 일반 대기열과 같습니다. 스레드 안전은 여기서 살인자이며, 내가 작업하는 여러 오픈 소스 프로젝트에서 이것을 사용합니다.
-
예를 들어 스칼라는 일부 언어에서는 액터를 분리하고 통신하는 채널을 원격 채널로 전환하여 단일 프로세스에서 액터 기반 코드를 분산 시스템으로 쉽게 전환 할 수 있습니다. 이것은 구현이 얼마나 쉬운 지에 따라 변경되지만 멋진 기능입니다.
-
CRUD 이벤트가 아닌 작업 기반 이벤트에 집중할 수 있습니다. CRUD는 간단하지만 파일 캐비닛과 상호 작용하는 것과 같습니다. 우리가 생산하는 소프트웨어보다 더 많은 가치를 제공 할 수 있다면 왜 그렇게 하는가? 작업 기반 시스템에서 여러 작업을 단일 “업데이트”명령에 묶는 것은 DB에 저장하는 것보다 더 유용합니다. 이것은 또한 CQRS와 같은 것들에 들어갑니다.
답변
트래비스의 대답 은 확실합니다. 동시성에 대해 이야기하기 시작할 때 리소스 문제를 해결하려고합니다. 스레드와 잠금의 동시성은 잘못하기 쉽습니다. 액터 모델을 사용하면 코드의 동시 부분을 다른 코드에 의존하지 않고 병렬로 수행 할 수있는 자체 포함 너겟으로 프로그래밍 할 수 있습니다. 경쟁 조건 및 교착 상태와 같은 불쾌감을 피하려고합니다.
이 대화에서 배우는 나와 당신과 같습니다. 당신은 단지 내 두뇌에 도달 할 수없고 내가 입력하고있는 것을 골라냅니다. “우리는 왜 존재 하는가?”라는 메시지를 전달했습니다. 나는 앉아서 전화를 걸었고 “나는 생각합니다.”라는 답장을 보냈습니다. 당신은 내가 저의 행성 지구에서 무엇을하고 있는지 알 수 없었습니다. 당신과 나에게 유일한 연락은 우리가주고받는 메시지를 통해서입니다.
편집하다:
어느 언어에 익숙한 지 말하지 않았지만 언어에 배우 구현이 있는지 확인하십시오. 아마도 가장 간단한 것은 파이썬에서 액터 라이브러리 중 일부일 것입니다. 그러나 Erlang이 학습에 더 좋을 것입니다. 언어는 약간 거칠지 만 일단 뉘앙스를 극복하면 좋은 언어입니다.
답변
액터는 시스템에서 작동 할 수있는 외부 엔티티 (사용자, 외부 시스템 등)를 나타내는 사용 사례 다이어그램의 요소입니다. 모든 기본 유스 케이스에는 액터가 포함됩니다. 풍부한 예제를 보려면 Google “유스 케이스”만 있습니다.