Резюме

Опубликовано в Технологии > Серверные технологии Продолжение

20.14. Резюме

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

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

Компания Sun Microsystems определила внешнее представление данных, которое фактически признано стандартным. Стандарт компании Sun, известный под названием XDR, включает определения не только основных типов данных (таких как целые числа и символьные строки), но и агрегатов данных (таких как массивы и структуры). Библиотечные процедуры XDR обеспечивают прямое и обратное преобразование из внутреннего представления данных компьютера во внешнее стандартное представление. В клиентских и серверных программах процедуры XDR могут применяться для преобразования данных во внешнюю форму перед их передачей и во внутреннюю — после их приема. Процедуры преобразования могут быть связаны с функциями ввода и вывода, используемыми в программном обеспечении протоколов TCP или UDP. http://www.resnichki-nogti.ru/

Материал для дальнейшего изучения

Кодировка XDR и стандартные процедуры преобразования XDR определены в документе [152]. В документе [146] содержится современная версия, которая является проектом стандарта. С дополнительной информацией можно ознакомиться в оперативной документации, которая входит в поставку операционной системы Linux.

Международная организация по стандартизации в документах [68] и [69] определила альтернативное внешнее представление данных, известное под названием ASN.1 (Abstract Syntax Notation One — Абстрактная синтаксическая запись, точка, один). Хотя в некоторых протоколах TCP/IP используется представление ASN.1, большинство прикладных программистов используют XDR. В статье [113] показано, что стандарты XDR и ASN.1 обладают эквивалентными выразительными возможностями.

Упражнения

  1. Напишите программу С, которая определяет применяемый на локальном компьютере формат представления байтов целого числа.
  2. Разработайте версию функции ntohs и проведите эксперимент по сравнению времени выполнения вашей версии и версии из библиотеки системы или из включаемых файлов. Объясните полученные результаты.
  3. В чем именно упрощается процесс программирования при использовании буфера, предусмотренного в программном обеспечении XDR?
  4. Разработайте внешнее представление данных, которое включает поле типа перед каждым элементом данных. В чем состоит основное преимущество такого решения? В чем его основной недостаток?
  5. Прочитайте оперативное руководство, которое поставляется вместе с системой Linux, чтобы больше узнать о формате потока XDR. Какая информация хранится в заголовке потока?
  6. Покажите, что исходные коды программ было бы проще читать, если бы разработчики программного обеспечения XDR предпочли использовать отдельные процедуры преобразования для кодирования и декодирования вместо регистрации информации о направлении преобразования в заголовке потока. В чем состоит недостаток применения отдельных процедур преобразования?
  7. При каких обстоятельствах программисту может потребоваться передавать непреобразованные (opaque) объекты данных между клиентом и сервером?
  8. Объясните, почему преобразование данных с плавающей точкой является особенно сложным.