Асинхронное удаленное взаимодействие

Этот раздел относится к технологии прежних версий, которая сохраняется для обеспечения обратной совместимости с существующими приложениями и не рекомендуется для разработки новых приложений. Сейчас распределенные приложения следует создавать с помощью  Windows Communication Foundation (WCF).

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

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

  • вызывающая сторона решает, будет ли конкретный удаленный вызов асинхронным;

  • удаленные типы не должны явным образом поддерживать асинхронную работу с помощью своих клиентов;

  • среда выполнения обеспечивает полную безопасность типов;

  • Следует использовать объекты System.Threading для ожидания или синхронизации методов.

Однако в приложении, которое осуществляет вызовы, выходящие за границы домена приложения или контекста, удаленное взаимодействие .NET требует настройки клиентского приложения таким образом, чтобы оно могло принимать удаленные вызовы от сервера (для этого необходимо для клиентского канала указать порт 0). Это требование обусловлено тем, что после осуществления асинхронного вызова у клиента нет иного способа получения результатов вызова, кроме как разрешив обратный вызов клиента сервером.

Клиенту не требуется расширять MarshalByRefObject или самостоятельно настраивать какой-либо удаленный тип, но требуется соблюдать те же правила, которые применяются к удаленным типам, используемым в качестве серверов:

  • метод обратного вызова должен быть методом экземпляра. Статический метод невозможно использовать для удаленного взаимодействия;

  • должен быть зарегистрирован канал для ожидания передачи данных функцией обратного вызова.

См. также

Задачи

Практическое руководство. Асинхронный вызов методов удаленного объекта

Основные понятия

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

Другие ресурсы

Общие сведения о средствах удаленного взаимодействия платформы .NET Framework