О распределенных объектах

Распределенная архитектура объектов какао включает объекты в различных потоках или задачах, возможно на различных машинах, чтобы прозрачно отправить сообщения друг другу. В то время как существует много путей к потокам и задачам связаться друг с другом, распределенные объекты скрывает механизм позади стандартного механизма обмена сообщениями Objective C. Синтаксис локальных и удаленных сообщений идентичен.

Удаленные сообщения могут быть отправлены синхронно или асинхронно. При отправке синхронного сообщения отправитель ожидает ответа, блокируя его выполнение, точно так же, как локальное сообщение. При отправке асинхронного сообщения отправитель продолжает выполняться, не ожидая ответа; любой ответ от удаленного объекта проигнорирован.

Распределенные объекты могут использоваться для деления сложной задачи на отдельные пути выполнения кода, которые работают независимо, но могут все еще сотрудничать, как будто они работали вместе. Например, приложение может быть разделено на графический фронтэнд и вычислительный бэкэнд. Фронтэнд может принять весь ввод данных пользователем и сказать бэкэнду выполнять различные действия. Бэкэнд может обработать “тяжелый подъем” и сообщить фронтэнду, когда это может обновить пользовательский интерфейс с результатами. Поскольку фронтэнды и бэкэнды работают независимо, фронтэнд может продолжать взаимодействовать с пользователем, в то время как бэкэнд занят.

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

Какао позволяет распределенным объектам связаться по портам Маха, портам сообщения и сокетам. Первые два ограничиваются коммуникацией на единственной машине, но сокеты могут связаться по большим сетям, включая Интернет.

Прежде чем объект может получить сообщения от других процессов, он должен выделить коммуникационный порт и сделать его доступным для других. Какао обеспечивает доступ к серверам имен для каждого поддерживаемого типа коммуникационного порта. Объект может зарегистрировать свой порт в надлежащем сервере имен, чтобы позволить другим процессам находить его. В случае сокетов можно также опубликовать сокет объекта как Добрый день сетевую службу (см., что Какао Программирует Тему Добрый день Обзор). Другие процессы, хотящие связаться с этим объектом, могут тогда искать коммуникационный порт объекта, запрашивая его по имени, и присоединить распределенные соединения объектов с ним.

Для получения дополнительной информации о том, как язык Objective C и время выполнения включает распределенные объекты, посмотрите раздел «Remote Messaging» Системы Во время выполнения в Языке программирования Objective C.