CCR에 대해 읽은 후 : http://www.infoq.com/news/2008/12/CCR 나는 F # async 블록과 거의 똑같은 인상을 받았습니까?비동기 F # 대 CCR 프레임 워크
"let!"과 같은 작업을 수행하기 위해 port.Receive와 port.Test를 생성합니다.
이 정보가 맞습니까? 그리고 FCR 비동기로 얻지 못하는 CCR의 이점이 있습니까?
CCR에 대해 읽은 후 : http://www.infoq.com/news/2008/12/CCR 나는 F # async 블록과 거의 똑같은 인상을 받았습니까?비동기 F # 대 CCR 프레임 워크
"let!"과 같은 작업을 수행하기 위해 port.Receive와 port.Test를 생성합니다.
이 정보가 맞습니까? 그리고 FCR 비동기로 얻지 못하는 CCR의 이점이 있습니까?
언급 한 기사의 예제는 실제로 비동기 워크 플로우에서 let!
처럼 보입니다. (인이도 AsyncEnumerator 의해 사용
yield return
키워드 F # 연산 식 유사한 패턴을 인코딩하는 것을 가능하게 IMHO)는 CCR보다 간단하고 F # 비동기 워크 플로에 조금 더 가깝습니다.CCR과 F # 비동기 워크 플로의 주요 차이점은 CCR에도 메시지 전달 동시성을위한 라이브러리가 포함되어 있다고 생각합니다. 예를 들어 this article을 참조하십시오. Port
클래스 (메시지를 포트로 보낼 수 있음) 및 Arbiter.Receive
을 사용합니다. Port
의 메시지를 기다릴 수있는 기본 요소입니다.
, 동일한 메시지 전달 통신 패턴을 구현하기위한 MailboxProcessor
을 사용할 수 있지만,이 F # 비동기 워크 플로우의 내장 일부가 아닌 - MailboxProcessor
가 비동기 워크 플로우를 사용하여 를 구현됩니다.
요약하면 : F # 비동기 워크 플로가 더 간단하고 개념적으로 더 명확하다고 생각합니다. 그러나 CCR 및 비동기 워크 플로 을 함께 사용하면과 MailboxProcessor
이 거의 동일한 프로그래밍 패턴을 구현합니다.
F # MailboxProcessor를 Erlang 프로세스와 비교하면 얼마나 효율적입니까? Erlang보다 많은 오버 헤드가 있더라도 값싼 에이전트/프로세스를 생성 할 때 .NET 플랫폼에서 얻는 것만 큼 좋을 것입니다. 맞습니까? –
주요 차이점은 MailboxProcessor는 단일 프로세스에서 실행되도록 설계되었으므로 여러 프로세스/시스템에서 분산되지 않습니다. 나는 그것을 증명할 어떤 링크도 없지만 몇 가지 통계를 보았으며 그 결과 (이 시나리오에서)는 비슷하다고 생각합니다. F #은 각 MailboxProcessor에 대한 스레드를 생성 할 필요가 없습니다 (워크 플로우 덕택에). –
petricek : ccr의 동반자 라이브러리 : dss는 컴퓨터 간 메시지 게시를 허용하여 점점 더 erlang의 기능과 닮았습니다. – Toad