Да, это хорошая идея делегировать задачи, которые обычно подвержены сбоям, дочерним акторам, которые решают эту конкретную задачу. Этот шаблон упоминается как шаблон актера персонажа в блоге Petabridge, но повторяется ниже на случай, если ссылка в будущем прервется.
Шаблон персонажа-актора используется, когда приложение выполняет какую-то рискованную, но критическую операцию, но ему необходимо защитить критическое состояние, содержащееся в других субъектах, и гарантировать отсутствие негативных побочных эффектов.
Часто бывает дешевле, быстрее и надежнее просто делегировать эти рискованные операции специально созданному, но тривиально одноразовому действующему лицу, единственная задача которого состоит в том, чтобы выполнить операцию успешно или умереть, пытаясь.
Эти смелые одноразовые актеры — характерные актеры.
Актеры персонажей могут быть временными или постоянными актерами, но обычно они предназначены для выполнения только одного определенного типа рискованной операции. Часто актеры-персонажи могут повторно использоваться в приложении, принадлежащем разным типам родителей. Например, у вас может быть служебный персонаж, который обрабатывает внешние сетевые запросы, а затем используется родительскими акторами в вашем приложении для своих собственных целей.
Случаи использования
Шаблон Character Actor широко применим. Используйте его в любое время, когда вам нужно сделать что-то рискованное, например, сетевые вызовы, файловый ввод-вывод, синтаксический анализ искаженного содержимого и т. д. Любая из этих операций является хорошим кандидатом на роль характерного актера.
Персонажные акторы наиболее эффективны, когда они используются для обеспечения защиты и изоляции сбоев для какого-либо другого важного типа актера, обычно содержащего какое-то важное состояние.
Преимущества
Есть три ключевых преимущества использования шаблона Character Actor:
- Защищает от сбоев и рискованных операций участников с состоянием и критически важных участников;
- Упрощает четкое введение семантики повтора/отсрочки/отмены, характерной для каждого типа рискованной операции: поскольку у вас есть характерный актер, специфичный для каждой рискованной задачи, у вас есть четко определенное место для обработки повторных попыток и связанных с ними операций. Они специфичны для задачи, для которой был создан Актер Персонажа, и их не нужно передавать остальным вашим актерам, а это означает, что шаблон…
- Сокращает объем кода, позволяя SupervisionStrategy и жизненному циклу актора выполнять большую часть тяжелой работы, вам не нужен всевозможный код обработки исключений в ваших родительских акторах. Просто позволь ему разбиться, детка.
person
Patrick Allwood
schedule
10.06.2016