Внешнее представление данных (XDR

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

20.1. Введение

В предыдущих главах описаны алгоритмы, средства и методы реализации клиентских и серверных программ. С этой главы начинается описание понятий и методов, позволяющих программистам использовать средства взаимодействия типа клиент/сервер, а также механизмов, предоставляющих программную поддержку для этих концепций. В частности, в настоящей главе рассматривается способ внешнего представления и оформления данных, фактически признанный в качестве стандарта, а также набор библиотечных процедур, используемых для преобразования данных. Заказывайте оформление витрин магазинов на http://www.andg.ru/ у Айрата Надрова.

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

20.2. Различные способы представления данных

В каждой компьютерной архитектуре принято собственное определение способа представления элементов данных. Даже если на двух компьютерах с разной архитектурой поддерживаются одинаковые типы данных, для них могут использоваться разные представления. Например, считается, что в компьютерной архитектуре применяется формат слова, оканчивающийся младшим байтом, если в ней наименее значимый байт целого числа имеет меньший адрес в памяти, или формат слова, оканчивающийся старшим байтом, если в ней меньший адрес имеет наиболее значимый байт. Некоторые архитектуры не принадлежат ни к тому, ни к другому типу, поскольку в них байты целого числа не занимают смежные байты в памяти. На рис. 20.1 показано представление 32-битовых целых чисел в формате слова, оканчивающегося старшим байтом и младшим байтом. На рис. 20.1а представлен формат слова, оканчивающегося старшим байтом, в котором наиболее значимый байт имеет меньший адрес в памяти, а на рис. 20.16 — формат слова, оканчивающегося младшим байтом, в котором меньший адрес в памяти имеет наименее значимый байт. Цифрами указано десятичное значение каждого 8-битового байта.

Программисты, разрабатывающие программы для отдельно взятого компьютера, могут не учитывать разницу в представлениях. Поскольку каждый конкретный компьютер обычно допускает только ОДНО представление. Если программист объявляет переменную как целое число (например, с использованием объявления int языка С), транслятор использует внутреннее представление данных компьютера при распределении памяти для этого целого числа или при формиро¬вании кода выборки из памяти, записи в память или сравнения значений.

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