Tôi thấy cũng có một mô hình diễn viên Akka, vì vậy tôi đang tự hỏi sự khác biệt giữa mô hình Diễn viên của Akka và Diễn viên của Scala là gì?
Scala 2.10
, scala.actors
thư viện trở nên không còn ủng hộ các diễn viên Akka.
Tôi thấy cũng có một mô hình diễn viên Akka, vì vậy tôi đang tự hỏi sự khác biệt giữa mô hình Diễn viên của Akka và Diễn viên của Scala là gì?
Scala 2.10
, scala.actors
thư viện trở nên không còn ủng hộ các diễn viên Akka.
Câu trả lời:
Vâng, không có. Chỉ có mô hình Diễn viên, và diễn viên Akka và diễn viên Scala là hai cách triển khai của mô hình đó.
Mô hình All Actor nói rằng các nguyên thủy đồng thời của bạn là các tác nhân, có thể:
nhận một tin nhắn và quyết định việc cần làm tiếp theo tùy thuộc vào nội dung của tin nhắn, bao gồm:
gửi tin nhắn cho bất kỳ diễn viên nào họ biết
tạo ra các diễn viên mới
và cung cấp các đảm bảo nhất định, ví dụ:
bất kỳ tác nhân nào sẽ chỉ xử lý một tin nhắn tại một thời điểm
tin nhắn của diễn viên X gửi cho diễn viên Y sẽ đến theo thứ tự đã được gửi
Không có sự khác biệt giữa các diễn viên Scala và Akka ở cấp độ này.
Để biết sự khác biệt về những gì họ có thể làm, hãy xem Tổng quan về các triển khai Scala Actor khác nhau . Điểm lớn nhất đối với tôi là Akka hỗ trợ người giám sát và ActorRegistry.
Cũng có một câu trả lời lịch sử. Những người tạo ra Scala nghĩ rằng cần phải có một khuôn khổ diễn viên. Jonas Bonér đã thử nó, nhưng không hoàn toàn hài lòng vì vậy anh ấy bắt đầu làm việc với một cái mới - phát triển thành Akka. Tuy nhiên, những người Scala nghĩ rằng nó tốt hơn của họ - vì vậy tại Jfokus 2011, họ đã thông báo rằng Akka sẽ trở thành khuôn khổ diễn viên tiêu chuẩn của Scala. Tuy nhiên, quá trình di chuyển đó sẽ mất một thời gian.
Điều này phụ thuộc một chút vào ý bạn với "mô hình" - bạn có thể tham khảo "mô hình thực thi" hoặc "mô hình lập trình" (và có thể cả các mô hình khác).
Đối với các mô hình thực thi, về cơ bản có hai: dựa trên luồng hoặc dựa trên sự kiện. Thư viện diễn viên tiêu chuẩn Scala chứa cả hai. Dựa trên luồng sử dụng một luồng cho mỗi tác nhân, trong khi dựa trên sự kiện sử dụng một nhóm luồng. Cái trước dễ hiểu hơn, cái sau hiệu quả hơn. Akka được xây dựng theo mô hình dựa trên sự kiện.
Đối với mô hình lập trình, có một sự khác biệt lớn giữa thư viện tiêu chuẩn scala và Akka. Trong thư viện tiêu chuẩn scala, về cơ bản, bạn thực hiện phương thức "chạy" - và nếu bạn muốn đợi một tin nhắn đến, bạn sẽ rơi vào trạng thái chờ đợi (bằng cách gọi "nhận" hoặc "phản ứng"). Vì vậy, mô hình lập trình tuân theo "phép ẩn dụ luồng". Tuy nhiên, trong Akka, ẩn dụ lập trình là bạn thực hiện một vài phương thức vòng đời - nhưng phương thức "chạy" được viết bên trong khuôn khổ. Nó thực sự chỉ ra rằng mô hình lập trình này hoạt động tốt hơn rất nhiều với mô hình thực thi dựa trên sự kiện.
Nếu bạn quan tâm đến các mô hình thực thi và mô hình lập trình khác nhau của các tác nhân tiêu chuẩn scala, tôi đã viết một vài bài đăng về vấn đề này.