Важным вопросом  является организация передачи информации используемой МАС между агентами. Известно два подхода к решению этой задачи:

  • механизм «доски объявления», когда результаты деятельности всех агентов сохраняются в единой базе данных, откуда всегда могут быть получены любым агентом;
  • механизм передачи сообщений, когда информация о результатах деятельности одного агента передаётся напрямую другому агенту.

Передача сообщений представляется экономным методом в плане ресурсов и наиболее ярко отображает взаимодействие агентов между собой. Запросы (сообщения) агентов соответствуют формату ACL сообщений согласно спецификации «FIPA ACL Message Structure Specification» и содержать следующие параметры:

  • performative -тип сообщения. Используется в базе знаний как один из параметров, идентифицирующих сообщение;
  • sender-отправитель сообщения. Обязательный параметр сообщения;
  • receiver-получатель сообщения. Обязательный параметр  cообщения;
  • reply-to –адрес агента, которому отправлять ответ;
  • content-содержание сообщения.;
  • protocol_id –идентификатор протокола;

В общем случае все сообщения включают в себя данные параметры. Содержание сообщения (параметр content)  зависит от его типа  и назначения агента. Реализация координируемого взаимодействия заключается в том, что каждый агент, получив сообщение (запрос) от агента-координатора должен отослать ответ именно ему, так как, исходя из структуры МАС, агенты между собой не общаются, а взаимодействуют через агента-координатора. Получение сообщения агентом является событием, на которое ему нужно отреагировать.

События часто используются в таких средах с ориентацией на передачу сообщений, как Windows. В подобной среде программа просто ожидает до тех пор, пока не получит сообщение, а затем выполняет соответствующие действия. Такая архитектура прекрасно подходит для обработки событий в стиле языка С#, позволяя создавать обработчики событий для различных сообщений и просто вызывать обработчик при получении определенного сообщения. Язык С# позволяет программисту создавать события любого типа. Однако в целях компонентной совместимости со средой .NET Framework необходимо следовать рекомендациям, подготовленным Microsoft специально для этих целей. Центральное место в этих рекомендациях занимает требование того, чтобы обработчики событий имели два параметра. Первый должен быть ссылкой на объект, который будет генерировать событие. Второй должен иметь тип EventArgs и содержать остальную информацию, необходимую обработчику. Таким образом, .NET-совместимые обработчики событий должны иметь следующую общую форму записи:

void handler(object source, EventArgs arg)  {//…}

Обычно параметр source передается вызывающим кодом. Параметр типа

EventArgs содержит дополнительную информацию. Класс EventArgs не содержит полей, которые используются при передаче дополнительных данных обработчику, он используется в качестве базового класса, из которого можно выводить класс, содержащий необходимые поля.