Câu trả lời này không thực sự là của tôi. Nó được sản xuất bởi Viktor Klang (của Akka nổi tiếng) với sự giúp đỡ của David Pollak (của Lift danh tiếng), Jason Zaugg (của Scalaz danh tiếng), Philipp Haller (của Scala Actors nổi tiếng).
Tất cả những gì tôi đang làm ở đây là định dạng nó (sẽ dễ dàng hơn nếu bảng hỗ trợ Stack Overflow).
Có một vài chỗ tôi sẽ điền sau khi có thêm thời gian.
Triết lý thiết kế
Diễn viên Scalaz
Độ phức tạp tối thiểu. Tính tổng quát tối đa, tính mô đun và khả năng mở rộng.
Diễn viên nâng
Độ phức tạp tối thiểu, Gom rác bằng JVM thay vì lo lắng về vòng đời rõ ràng, hành vi xử lý lỗi nhất quán với các chương trình Scala & Java khác, bộ nhớ nhẹ / nhỏ, hộp thư, tĩnh tương tự như Scala Actors và Erlang Actor, hiệu suất cao.
Diễn viên Scala
Cung cấp mô hình diễn viên Erlang đầy đủ trong Scala, dấu chân bộ nhớ nhẹ / nhỏ.
Diễn viên Akka
Phân phối đơn giản và minh bạch, hiệu suất cao, nhẹ và có khả năng thích ứng cao.
Phiên bản
Diễn viên Scalaz Nâng cao Diễn viên Scala Diễn viên Akka
Phiên bản ổn định hiện tại. 5 2,1 2,9,0 0,10
Phiên bản Scala tối thiểu. 2,8 2,7,7 2,8
Phiên bản Java tối thiểu. 1,5 1,5 1,6
Hỗ trợ người mẫu diễn viên
Diễn viên Scalaz Nâng cao Diễn viên Scala Diễn viên Akka
Sinh ra các diễn viên mới Có Có Có Có Có
bên trong của diễn viên
Gửi tin nhắn đến Có Có Có Có Có
diễn viên nổi tiếng
Thay đổi hành vi Các tác nhân là Có Có: lồng nhau Có:
cho tin nhắn tiếp theo, phản ứng không thay đổi / nhận được trở thành / không thể thay đổi
Giám sát Không được cung cấp Không có Diễn viên: Có, Có
(link / trapExit) Lò phản ứng: Không
Mức độ cô lập trạng thái
Nếu người dùng xác định các phương thức công khai trên Actors của họ, liệu chúng có thể được gọi từ bên ngoài không?
- Diễn viên Scalaz: n / a. Diễn viên là một đặc điểm kín.
- Diễn viên nâng: Có
- Diễn viên Scala: Vâng
- Akka Actors: Không, trường hợp diễn viên được che chắn đằng sau ActorRef.
Loại diễn viên
- Diễn viên Scalaz:
Actor[A] extends A => ()
- Diễn viên Lift:
LiftActor
,SpecializeLiftActor[T]
- Diễn viên Scala :
Reactor[T]
,Actor extends Reactor[Any]
- Diễn viên Akka:
Actor[Any]
Quản lý vòng đời của tác nhân
Diễn viên Scalaz Nâng cao Diễn viên Scala Diễn viên Akka
Khởi động thủ công Không Không Có Có
Dừng thủ công Không Không Không Có
Khởi động lại khi thất bại n / a Có Có Có thể cấu hình cho mỗi trường hợp tác nhân
Khởi động lại ngữ nghĩa n / a Chạy lại tác nhân Khôi phục tác nhân về trạng thái ổn định bằng cách phân bổ lại và
hành vi vứt bỏ phiên bản cũ
Khởi động lại cấu hình n / an / a X lần, X lần trong thời gian Y
Các móc vòng đời được cung cấp Không có hành động vòng đời preStart, postStop, preRestart, postRestart
Chế độ gửi tin nhắn
Diễn viên Scalaz Nâng cao Diễn viên Scala Diễn viên Akka
Cháy-quên a! diễn viên tin nhắn! Diễn viên msg! msg diễn viênRef! tin nhắn
một thông điệp)
Diễn viên gửi-nhận-trả lời (xem 1) !? Diễn viên msg !? msg diễn viênRef !! tin nhắn
diễn viên !! tin nhắn
Diễn viên gửi-nhận-tương lai (xem 2) !! msg diễn viênRef !!! tin nhắn
Gửi-kết-quả-của-lời-hứa (tin nhắn). future.onComplete (f => to! f.result)
tương lai với (diễn viên)
Soạn thảo diễn viên với diễn viên comap f Không Không Không
chức năng (xem 3)
(1) Mọi hàm f trở thành một tác nhân như vậy:
val a: Msg => Promise[Rep] = f.promise
val reply: Rep = a(msg).get
(2) Mọi hàm f trở thành một tác nhân như vậy:
val a = f.promise
val replyFuture = a(message)
(3) contravariant functor: actor comap f
. Ngoài ra thành phần Kleisli trong Promise
.
Chế độ trả lời tin nhắn
TBD
Diễn viên Scalaz Nâng cao Diễn viên Scala Diễn viên Akka
trả lời-người gửi-trong-tin nhắn
trả lời tin nhắn
Xử lý tin nhắn
Hỗ trợ lồng nhau nhận được?
- Diễn viên Scalaz: -
- Diễn viên nâng: Có (với một chút mã hóa tay).
- Scala Actors: Có, cả phản ứng nhận dựa trên luồng và phản ứng dựa trên sự kiện.
- Akka Actors: Không, việc nhận lồng có thể dẫn đến rò rỉ bộ nhớ và giảm hiệu suất theo thời gian.
Cơ chế thực thi thông báo
TBD
Diễn viên Scalaz Nâng cao Diễn viên Scala Diễn viên Akka
Tên cho Cơ chế Thực thi
Cơ chế Thực thi mới là
có thể cấu hình
Cơ chế thực thi có thể
được chỉ định trên cơ sở mỗi tác nhân
Vòng đời của Cơ chế Thực thi
phải được quản lý rõ ràng
Thực thi luồng cho mỗi tác nhân
cơ chế
Cơ chế thực thi theo hướng sự kiện
Loại hộp thư
Hỗ trợ hộp thư tạm thời
Hỗ trợ hộp thư liên tục
Phân phối / Tác nhân từ xa
Diễn viên Scalaz Nâng cao Diễn viên Scala Diễn viên Akka
Điều khiển từ xa trong suốt không có Không Có Có
diễn viên
Giao thức truyền tải n / an / a Java Akka Remote Protocol
tuần tự hóa (Protobuf trên TCP)
trên TCP
Phân cụm động n / an / an / a Trong chào hàng thương mại
Howtos
TBD
Diễn viên Scalaz Nâng cao Diễn viên Scala Diễn viên Akka
Xác định một diễn viên
Tạo một phiên bản diễn viên
Bắt đầu một phiên bản diễn viên
Dừng một phiên bản diễn viên