409-00-09
info@realnetspb.ru
support@realnetspb.ru
служба технической поддержки
|
|
|
Авиабилеты в Турцию
14.07.2016
Сильной стороной синхронных RPC является простота: их очень легко понять и реализовать. Но простота имеет свою цену - вызывающие потоки блокируются. Разумеется, это может быть вполне приемлемым для вызовов в рамках одного процесса, но часто выполнение удалённых вызовов происходит в коде, совершенно неизвестном для разработчика клиентской части. Длительность блокировки вызывающего потока может зависеть от изменений в реализации удалённой серверной части. Как следствие синхронные вызовы удалённых процедур могут непредсказуемым образом влиять на отзывчивость приложений. Часто отрицательного воздействия на UI-поток можно избежать, выполняя все удалённые вызовы в рабочих потоках, запускаемых асинхронно из UI-потока. Но если поток-сервер заблокируется, поток-клиент также заблокируется па неопределённое время, при этом сам поток и все его объекты продолжат занимать память. Такая ситуация повышает вероятность утечек памяти. Хотите отдохнуть? Возьмите авиабилеты в турцию.
Описанную проблему помогают решить асинхронные RPC! Вместо перекладывания реализации асинхронной стратегии на клиента можно определить удалённые методы с поддержкой асинхронного выполнения. Поток-клиент инициализирует транзакцию через асинхронный RPC и сразу же получает управление обратно. Объект Binder передаёт эту транзакцию в процесс-сервер и закрывает соединение клиента с сервером.
Для асинхронных методов тип возвращаемого значения обязательно должен быть объявлен как void, а кроме того, асинхронные методы не должны принимать аргументов, объявленных как out или inout. Для получения результатов реализация должна предусматривать использование обратного вызова {callback).
|
|
|
© 2001-2014 ООО Реалнет-СПб Услуги: бесплатное подключение к Интернет, цифровое IPTV, каналы в HD-качестве, ПО по подписке: антивирусы и родительский контроль, служба технической поддержки и компьютерной помощи, настройка Wi-Fi - роутера, подключение Wi-Fi. |