Làm thế nào là mô hình diễn viên được sử dụng?


18

Tôi đã đọc một chút về mô hình diễn viên, nhưng không thực sự hiểu cách sử dụng diễn viên trong tình huống thực tế - làm thế nào để mô hình hóa một vấn đề với họ.

Ai đó có thể vui lòng giải thích? Một ví dụ đơn giản hoặc liên kết đến các ví dụ sẽ được đánh giá cao.


Hay bạn có nghĩa là người mẫu diễn viên ?
back2dos

Tôi nghi ngờ bạn có nghĩa là Đại lý, không phải Diễn viên. Nếu vậy, hãy xem mục wikipedia này: en.wikipedia.org/wiki/Software_agent
DwB

1
Họ đóng vai chính trong Green Lantern và Planet of the Apes để giải trí cho các chuyên viên máy tính tại /. Đổi lại, các chuyên viên máy tính tại /. giải trí phần còn lại của chúng tôi.
Công việc

Tôi có nghĩa là mô hình diễn viên, và đã cập nhật bài viết của tôi để làm rõ.
Pnutus

Câu trả lời:


21

Các diễn viên, theo nghĩa của các hành động mô hình hóa, với các thông điệp, vv là một cách mô hình hóa phần mềm cung cấp một vài mục hữu ích ...

  1. Các diễn viên có thể sống trên một luồng duy nhất, cho phép các hoạt động không an toàn / không đồng thời xảy ra mà không có một loạt các phép thuật khóa. Một diễn viên sẽ trả lời tin nhắn trong hộp thư đến của nó. Khi bạn muốn nó xử lý một lệnh bạn gửi nó một tin nhắn và nó sẽ chăm sóc chúng theo thứ tự chúng được nhận. Giống như một hàng đợi bình thường. Chủ đề an toàn là kẻ giết người ở đây và tôi sử dụng điều này trong một số dự án nguồn mở mà tôi làm việc.

  2. Trong một số ngôn ngữ, Scala chẳng hạn, thật dễ dàng để biến mã dựa trên diễn viên trong một quy trình thành một hệ thống phân tán bằng cách tách các diễn viên và chuyển các kênh họ giao tiếp thành các kênh từ xa. Điều này thay đổi giữa các lần triển khai về mức độ dễ dàng của nó, nhưng đó là một tính năng tuyệt vời.

  3. Giúp tập trung vào các sự kiện Dựa trên nhiệm vụ thay vì các sự kiện CRUD. CRUD đơn giản nhưng nó giống như tương tác với tủ hồ sơ. Nếu chúng tôi có thể cung cấp nhiều giá trị hơn phần mềm chúng tôi sản xuất, tại sao chúng tôi lại làm điều đó? Việc nhập nhiều hành động vào một lệnh "Cập nhật" trong một hệ thống dựa trên nhiệm vụ sẽ hữu ích hơn là chỉ lưu vào DB. Điều này cũng nhận được vào những thứ như CQRS.


Cảm ơn bạn đã trả lời hữu ích và liên kết của bạn. Ngôn ngữ nào bạn muốn giới thiệu bắt đầu nhìn vào để có cảm giác tốt hơn cho các diễn viên?
Pnutus

1
Tôi nghĩ nó phụ thuộc vào ngôn ngữ mà bạn cảm thấy thoải mái. Scala có thể có một số tài liệu tốt nhất xung quanh các diễn viên, vì chúng là một khái niệm ngôn ngữ. Erlang là tuyệt vời cho nhắn tin nói chung, toàn bộ ngôn ngữ dựa trên khái niệm đó.
Travis

Tôi sẽ xem Scala và Erlang. Tìm thấy hướng dẫn cho người mới bắt đầu này cho Erlang, sẽ bắt đầu từ đó. Cảm ơn!
Pnutus

+1: Rất thú vị. Bạn có biết có thư viện C ++ nào thực hiện các tác nhân từ xa không? Tôi sẽ rất vui khi sử dụng Scala nhưng dự án của tôi là trong C ++.
Giorgio

1
Hãy xem xét việc triển khai Mô hình diễn viên C ++ này: diễn viên- framework.org
Chen OT

4

Câu trả lời của Travis là vững chắc. Khi bạn bắt đầu nói về sự tương tranh, bạn đang cố gắng giải quyết các vấn đề tài nguyên. Đồng thời với các chủ đề và khóa là khá dễ dàng để làm sai. Mô hình diễn viên giúp buộc bạn lập trình các phần mã đồng thời của mình dưới dạng các chuỗi cố định có thể được thực hiện song song và không phụ thuộc vào một đoạn mã khác. Bạn đang cố gắng tránh sự khó chịu như điều kiện chủng tộc và bế tắc.

Các diễn viên giống như bạn và tôi trong cuộc trò chuyện này. Bạn không thể chạm vào não tôi và chọn ra những gì tôi đang gõ. Bạn chuyển cho tôi một tin nhắn "Tại sao chúng ta tồn tại?" Tôi ngồi và giòn vài con số và gửi một câu trả lời "Tôi nghĩ, vì vậy tôi là." Bạn không thể nói tôi đang làm gì trên hành tinh Trái đất của riêng tôi, mối liên hệ duy nhất bạn có với tôi là thông qua những tin nhắn chúng tôi qua lại.

BIÊN TẬP:

Bạn không nói ngôn ngữ nào bạn thấy thoải mái, nhưng hãy xem liệu có diễn viên nào thực hiện bằng ngôn ngữ của bạn không. Có lẽ đơn giản nhất sẽ là một số diễn viên libs trong python. Nhưng có lẽ tốt hơn cho việc học sẽ là Erlang. Ngôn ngữ hơi thô nhưng một khi bạn vượt qua được các sắc thái, đó là một ngôn ngữ tốt.


Tôi không chắc chắn nếu chỉnh sửa của gnat hướng vào tôi, nhưng vũ khí lựa chọn của tôi thường có xu hướng là Haskell. Erlang chắc chắn là một ngôn ngữ tốt. Theo truyền thống, Haskell đã dựa vào CSP để đồng thời nhưng có một số triển khai diễn viên ngoài kia.
M15K

-2

Các tác nhân là một yếu tố của sơ đồ ca sử dụng đại diện cho bất kỳ thực thể bên ngoài nào (người dùng, hệ thống bên ngoài, v.v.) có thể hoạt động trên một hệ thống. Bất kỳ trường hợp sử dụng cơ bản nào cũng sẽ chứa các tác nhân - chỉ cần google "ca sử dụng" cho vô số ví dụ.


6
Không phải những người được gọi là con số dính ?
thuốc

1
Tôi đã không rõ ràng và bạn hiểu lầm. Tôi đã nói về mô hình diễn viên.
Pnutus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.