Заявление об ограничении ответственности: автор - новичок в OTP, обладающий некоторыми базовыми знаниями синтаксиса, процессов и сообщений Erlang.
Я пытаюсь понять понятие поведения в Erlang, но в моей голове возникает множество вопросов, которые мешают мне понять весь принцип такого поведения, как gen_server.
Хорошо, официальная документация для gen_server показывает красивую диаграмму сервера и трех клиентов, связанных стрелками запроса и ответа: http://www.erlang.org/doc/design_principles/gen_server_concepts.html
Но каждый раз, когда я пытаюсь понять эту концепцию дальше, я застреваю.
Есть много концепций, которые я не могу объединить в одну большую концепцию в своей голове:
- реализация поведения;
- контейнер поведения;
- интерфейс поведения;
- модуль обратного вызова;
- функции обратного вызова;
- Функции API.
Я использую следующие ресурсы:
- Книга действий Erlang / OTP;
- Введение в представление поведения OTP, http://www.slideshare.net/gamlidek/ceug-introduction-to-otp-behaviors-part-i-genserver;
- "ErlyBank" по адресу http://spawnlink.com/articles/an-introduction-to-gen_server-erlybank/index.html.
Я все еще нахожусь в состоянии «мы вызываем одну функцию в одном модуле, эта функция вызывает другую функцию, эта функция создает процесс ... застрял»
Есть ли способ описать понятие gen_server на диаграмме? Как можно визуально показать поток взаимодействия между клиентами и сервером? (чтобы помочь не очень умному новичку понять концепцию визуально)
Например, как здесь: http://support.novell.com/techcenter/articles/img/dnd2003080506.gif
UPD: Я попытался нарисовать свою схему, но до сих пор не понимаю назначение какого-либо соединителя на схеме: http://postimage.org/image/qe215ric/full/
UPD2: Это похоже на то, что я хотел бы видеть: http://cryptoanarchy.org/wiki/Worker_patterns (Модель). Однако он не показывает взаимодействие между модулями, функциями и процессами.