Реализация распределенной системы

Одним из способов реализации программного обеспечения в распределенной системе является использование необработанной поддержки сети. Этот подход включает сокеты, именованные каналы или HTTP POST, GET и т. д. Все эти модели заставляют разработчика так или иначе использовать низкоуровневые примитивы программирования, которые заставляют разработчика работать с представлением сетевых данных (NDR), упаковкой данных, управлением сетевым трафиком и условиями сбоев, защитой целостности данных и шифрованием и т. д.

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

Например, рассмотрим бремя, связанное с различными подходами к защите целостности и конфиденциальности обмена сообщениями в распределенной системе. При рассмотрении сетевой безопасности для обмена пакетами некоторые средства защиты слабее, а некоторые — сильнее. Нет истинной сетевой безопасности, только различные механизмы безопасности на основе пакетов; безопасность идентификации вызывающего абонента (которая, как правило, также является слабой, так как содержимое пакета часто может быть изменено при передаче), безопасность, защищающая целостность пакета без защиты его конфиденциальности (различные подписи и хэши), и безопасность, защищающую конфиденциальность обмена сообщениями (различные механизмы шифрования).

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

При использовании RPC оба этих бремени легко решаются. Разработчику просто нужно сообщить RPC, какой пакет безопасности использовать и какую защиту безопасности следует применять к обмену сообщениями (с точки зрения проверки подлинности, шифрования, взаимной проверки подлинности, отслеживания вызывающих и удостоверений и т. д.). RPC эффективно заботится обо всех деталях за кулисами, но предоставляет разработчику полный контроль над тем, как именно будут защищены данные.