Я трохи прочитав про модель актора, але насправді не розумію, як використовувати акторів у реальній ситуації - як моделювати проблему з ними.
Може хтось, будь ласка, пояснить? Простий приклад або посилання на приклади були б дуже вдячні.
Я трохи прочитав про модель актора, але насправді не розумію, як використовувати акторів у реальній ситуації - як моделювати проблему з ними.
Може хтось, будь ласка, пояснить? Простий приклад або посилання на приклади були б дуже вдячні.
Відповіді:
Актори, в сенсі моделювання дій, з повідомленнями тощо, - це спосіб моделювання програмного забезпечення, що забезпечує пару корисних елементів ...
Актори можуть жити на одній нитці, дозволяючи операціям, які не є безпечними для потоку / не є одночасними, без будь-якої магії блокування. Актор відповість на повідомлення у своїй папці "Вхідні". Коли ви хочете, щоб вона обробляла команду, ви надсилаєте їй повідомлення, і воно піклується про них у порядку їх отримання. Так само, як і звичайна черга. Нитка безпечна тут вбивця, і я використовую це в ряді проектів з відкритим кодом, над якими працюю.
Наприклад, у деяких мовах, наприклад, Scala, легко перетворити код на основі актора в одному процесі в розподілену систему, розділивши дійових осіб і перетворивши канали, з якими вони спілкуються, у віддалені канали. Це змінюється між реалізаціями, наскільки це просто, але це надзвичайна особливість.
Допомагає зосередитись на подіях на основі завдань, а не на подіях CRUD. CRUD простий, але це так само, як взаємодія з картотекою. Якщо ми можемо надати більше цінності, ніж це в програмному забезпеченні, яке ми виробляємо, чому ми це робимо? Прив’язання декількох дій до однієї команди "Оновити" в системі, що базується на завданнях, корисніше, ніж просто збереження в БД. Це також потрапляє в такі речі, як CQRS.
Відповідь Травіса тверда. Коли ви починаєте говорити про одночасність, ви намагаєтеся вирішити проблеми з ресурсами. Паралельність з нитками та замками досить легко зробити неправильно. Модель актора допомагає змусити запрограмувати одночасні частини коду як самодостатні самородки, які можна виконувати паралельно і без залежності від іншого фрагмента коду. Ви намагаєтеся уникати неприємностей, таких як умови перегонів та тупики.
У цій розмові дійові особи схожі на вас і я. Ви просто не можете зайти до мого мозку і вибрати, що я набираю. Ви передали мені повідомлення, яке сказало "Чому ми існуємо?" Я сів і розчавив деякі номери і надіслав відповідь «Я думаю, тому я є». Ви не могли сказати, що я роблю на власному шматочку планети Земля. Єдиний контакт, який ви маєте зі мною, - це повідомлення, які ми передаємо туди-сюди.
Редагувати:
Ви не сказали, якими мовами вам подобається, але подивіться, чи є у вашій мові реалізація актора. Можливо, найпростішим був би хтось із акторських лайків в пітоні. Але, мабуть, краще для навчання був би Ерланг. Мова трохи груба, але як тільки ви перейдете нюанси, це гарна мова.
Дійові особи - це елемент діаграм використання, який представляє будь-яку зовнішню сутність (користувача, зовнішню систему тощо), яка може діяти в системі. Будь-який базовий випадок використання містить учасників - просто google "use case" для багатьох прикладів.