แบบจำลองนักแสดงนำมาใช้อย่างไร


18

ฉันได้อ่านนิดหน่อยเกี่ยวกับนางแบบนักแสดง แต่ไม่เข้าใจวิธีใช้นักแสดงในสถานการณ์โลกแห่งความจริง - จะทำตัวแบบปัญหากับพวกเขาได้อย่างไร

ใครช่วยอธิบายหน่อยได้ไหม? ตัวอย่างง่ายๆหรือลิงค์ไปยังตัวอย่างจะได้รับการชื่นชมมาก


หรือคุณหมายถึงนางแบบนักแสดง ?
back2dos

ฉันสงสัยว่าคุณหมายถึงตัวแทนไม่ใช่นักแสดง ถ้าเป็นเช่นนั้นให้ตรวจสอบรายการวิกิพีเดียนี้: en.wikipedia.org/wiki/Software_agent
DwB

1
พวกเขาเป็นดาวในกรีนแลนเทิร์นและ Planet of the Apes เพื่อความบันเทิงที่ ในทางกลับกัน geeks ที่ / ให้ความบันเทิงกับพวกเราที่เหลือ
งาน

ฉันหมายถึงโมเดลนักแสดงและได้อัปเดตโพสต์ของฉันเพื่อชี้แจง
Pnutus

คำตอบ:


21

นักแสดงในแง่ของการสร้างแบบจำลองการกระทำกับข้อความ ฯลฯ เป็นวิธีการสร้างแบบจำลองซอฟต์แวร์ที่มีสองรายการที่มีประโยชน์ ...

  1. นักแสดงสามารถอาศัยอยู่บนเธรดเดียวทำให้การดำเนินการแบบไม่ปลอดภัย / ไม่พร้อมกันเกิดขึ้นโดยไม่ต้องใช้เวทมนต์ล็อค นักแสดงจะตอบกลับข้อความในกล่องจดหมาย เมื่อคุณต้องการให้มันประมวลผลคำสั่งคุณจะส่งข้อความและมันจะดูแลพวกมันตามลำดับที่ได้รับ เหมือนคิวปกติ เธรดที่ปลอดภัยคือนักฆ่าที่นี่และฉันใช้สิ่งนี้ในโครงการโอเพนซอร์สจำนวนหนึ่งที่ฉันทำงาน

  2. ในบางภาษา Scala ยกตัวอย่างเช่นมันง่ายที่จะเปลี่ยนรหัสตามตัวละครในกระบวนการเดียวให้เป็นระบบกระจายโดยแยกตัวนักแสดงออกและเปลี่ยนช่องทางที่พวกเขาสื่อสารไปสู่ช่องทางระยะไกล การเปลี่ยนแปลงระหว่างการใช้งานกับความง่าย แต่เป็นคุณสมบัติที่ยอดเยี่ยม

  3. ช่วยเน้นกิจกรรมตามภารกิจแทนเหตุการณ์ CRUD CRUD นั้นง่าย แต่ก็เหมือนกับการโต้ตอบกับตู้เก็บเอกสาร หากเราสามารถให้คุณค่ามากกว่านั้นในซอฟต์แวร์ที่เราผลิตเราจะทำมันทำไม การผูกหลายการกระทำลงในคำสั่ง "อัปเดต" เดียวในระบบที่ทำงานตามภารกิจนั้นมีประโยชน์มากกว่าการบันทึกลงในฐานข้อมูล สิ่งนี้จะกลายเป็นสิ่งต่างๆเช่น CQRS


ขอบคุณสำหรับคำตอบและลิงก์ที่มีประโยชน์ คุณอยากแนะนำให้เริ่มใช้ภาษาอะไรเพื่อให้รู้สึกดีขึ้นสำหรับนักแสดง?
Pnutus

1
ฉันคิดว่ามันขึ้นอยู่กับภาษาที่คุณพอใจ สกาล่าอาจมีเอกสารที่ดีที่สุดเกี่ยวกับนักแสดงเนื่องจากเป็นแนวคิดทางภาษา Erlang ยอดเยี่ยมสำหรับการรับส่งข้อความโดยทั่วไปแม้ว่าภาษาทั้งหมดจะยึดตามแนวคิดนั้น
เทรวิส

ฉันจะดู Scala และ Erlang พบนี้คู่มือของการเริ่มต้นสำหรับ Erlang, จะเริ่มมี ขอบคุณ!
Pnutus

+1: น่าสนใจมาก คุณรู้หรือไม่ว่ามีไลบรารี่ C ++ ที่ใช้รีโมตแอคเตอร์? ฉันยินดีที่จะใช้ Scala แต่โครงการของฉันอยู่ใน C ++
จอร์โจ

1
พิจารณาการใช้โมเดล C ++ Actor Model: actor-framework.org
Chen OT

4

คำตอบของเทรวิสนั้นมั่นคง เมื่อคุณเริ่มพูดคุยเกี่ยวกับการทำงานพร้อมกันคุณกำลังพยายามแก้ไขปัญหาทรัพยากร การเห็นพ้องด้วยเธรดและล็อกค่อนข้างง่ายที่จะทำผิด โมเดลนักแสดงช่วยบังคับให้คุณตั้งโปรแกรมส่วนรหัสของคุณพร้อมกันในฐานะนักเก็ตที่มีอยู่ในตัวเองซึ่งสามารถทำงานในแบบคู่ขนานและไม่ขึ้นอยู่กับโค้ดอีกชิ้น คุณกำลังพยายามหลีกเลี่ยงความไม่เหมาะสมเช่นสภาพการแข่งขันและการหยุดชะงัก

นักแสดงเป็นเหมือนคุณและฉันในบทสนทนานี้ คุณไม่สามารถเข้าถึงสมองของฉันและเลือกสิ่งที่ฉันพิมพ์ คุณผ่านฉันข้อความว่า "ทำไมเราถึงมีอยู่?" ฉันนั่งและกระทืบตัวเลขและส่งคำตอบว่า "ฉันคิดว่าฉันเป็นอย่างนั้น" คุณไม่สามารถบอกได้ว่าฉันทำอะไรกับชิ้นส่วนของดาวเคราะห์โลกการติดต่อเพียงอย่างเดียวที่คุณมีกับฉันคือผ่านข้อความที่เราผ่านไปมา

แก้ไข:

คุณไม่ได้พูดภาษาที่คุณคุ้นเคย แต่ดูว่ามีนักแสดงในภาษาของคุณหรือไม่ บางทีที่ง่ายที่สุดน่าจะเป็น libs นักแสดงบางคนในหลาม แต่อาจจะดีกว่าสำหรับการเรียนรู้ก็คือ Erlang ภาษาค่อนข้างหยาบ แต่เมื่อคุณได้รับความแตกต่างมันเป็นภาษาที่ดี


ฉันไม่แน่ใจว่าการแก้ไขของริ้นถูกส่งตรงมาที่ฉัน แต่อาวุธที่ฉันเลือกมักจะเป็น Haskell Erlang เป็นภาษาที่ดีอย่างแน่นอน Haskell อาศัย CSP เพื่อการทำงานพร้อมกันแบบดั้งเดิม แต่ก็มีนักแสดงบางคน
M15K

-2

นักแสดงเป็นองค์ประกอบของไดอะแกรมกรณีการใช้งานที่แสดงถึงเอนทิตีภายนอกใด ๆ (ผู้ใช้ระบบภายนอก ฯลฯ ) ที่สามารถดำเนินการกับระบบ กรณีการใช้งานขั้นพื้นฐานใด ๆ จะมีนักแสดง - เพียงแค่ Google "ใช้กรณี" เพื่อเป็นตัวอย่างมากมาย


6
นั่นไม่ใช่ตัวเลขไม้ที่เรียกว่าเหรอ?
Pillmuncher

1
ฉันไม่ชัดเจนและคุณเข้าใจผิด ฉันกำลังพูดถึงโมเดลนักแสดง
Pnutus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.