"Информация, информация повсюду, но хоть бы один намек". Спасибо нашему читателю Дрю Хэррису за этот афоризм.
Мои дети (сорванцов зовут Кимберли и Эрин) регулярно по вечерам устраивают мероприятие, которое они называют: "Выведем папу из себя (ВПС)".
Известно, что все дети вытворяют вещи, которые сводят с ума их родителей. Так они отыгрываются за все то, что выводит из себя их самих. Мои дети не исключение, разве что я, как образцовый отец, не даю им никаких оснований для ВПС.
Под первым пунктом в списке акций по "выведению папы из себя" стоит многократное повторение одной и той же информации до тех пор, пока она не проникнет в сознание. Тут уж я сам виноват: взял важный принцип теории связи - внесение избыточности в сигнал, чтобы он смог преодолеть помеху - и не к месту заменил его принципом исключения избыточных данных, принятым в проектировании структуры данных.
Повторение важно, если канал характеризуется помехами, и несколько каналов (в моем случае два) дают больше шума, чем круговерть информации в редакции, со всеми этими рекламами, статьями новостей и редакционными колонками, в которых мы делимся с читателями своими соображениями. Но это лирическое отступление.
Предмет моей сегодняшней колонки - различие между обработкой данных по принципу "клиент-сервер" (я утверждаю, что это понятие относится к проектированию программного обеспечения) и распределенной обработкой данных, которая характеризует организацию аппаратных средств.
Похоже, что большинство авторов в профессиональной прессе, даже тех, чьи статьи опубликованы на этих благословенных страницах, не волнует такое различие. А ведь это не просто вопрос семантической точности. Это вопрос сущности каждого нововведения в сфере обработки информации. Если вы неправильно поймете суть, то будете иметь неверные суждения по важным повседневным вопросам.
Принцип "клиент-сервер" относится к конструктивным схемам программного обеспечения, в соответствии с которыми приложения подразделяются на два или больше независимых и взаимосвязанных модуля. Современные конструктивные схемы используют по меньшей мере три архитектурных компонента: модуль представления, который обрабатывает всю логику "пользователь-интерфейс", модуль логики приложения, занимающийся вопросами интеграции и обработки данных, и систему управления базами данных (СУБД), которая ведает всеми подробностями управления данными. Такие конструктивные схемы, состоящие из трех компонентов (их также называют трехзвенными архитектурами), представляют собой основу для создания n-уровневых архитектур, которые будут реализованы, когда разработчики программного обеспечения накопят опыт, а теория конструирования станет более искусной.
Архитектура клиент-сервер позволяет не только не заботиться о том, где выполняется тот или иной ее компонент, но и, в лучших ее реализациях, обеспечивается переносимость каждого.
Вот почему бессмысленны споры о том, какая архитектура лучше - у мэйнфреймов или клиент-сервер: проще создать n-уровневые клиент-серверные приложения, где каждый компонент выполняется на мэйнфрейме, чем разработать такое приложение, каждый компонент которого работал бы на отдельном устройстве.
"Распределенные вычисления", напротив, относятся к архитектурным схемам аппаратных средств, которые облегчают управление вычислительной нагрузкой на нескольких компьютерах, связанных друг с другом. Распределять приложения клиент-сервер, конечно, легче, чем монолиты программного обеспечения, но теоретически возможно (хотя пока неосуществимо) внедрить симметричную многопроцессорную обработку в локальную сеть, равно как реализовать ее на уровне системной шины.
Подумайте о том, для каких целей вы будете использовать архитектуру клиент-сервер и принцип распределенных вычислений. Многие из нас, путая эти две концепции, считают, что системы клиент-сервер обойдутся дешевле, чем мэйнфреймы, поскольку они работают на менее дорогом оборудовании. Из-за того что архитектура клиент-сервер не зависит от используемой аппаратной части, говорить об экономии на аппаратуре в данном случае нельзя. Суть архитектуры клиент-сервер - сократить расходы за счет доведения до максимума повторного применения программного кода.
Архитектура распределенных вычислений призвана сократить расходы на аппаратуру. Этого можно добиться, если распределенный принцип обеспечит лучшую балансировку нагрузки на приложения, чем альтернативные варианты.
Давайте рассмотрим, как различаются архитектуры распределенных вычислений и клиент-сервер на примере систем, ориентированных на Web. Часто приходится слышать, что браузер описывают как "тонкий клиент толщиной с бумажный лист", тогда как он вовсе не является клиентом. Мнимую "тонкость" клиента считают хорошим свойством. Почему? Его можно переносить! А еще вы не хотите, чтобы программное обеспечение инсталлировалось "криво" на вашей настольной системе! А еще он... ну, он просто тонкий! Позволю себе напомнить, что эмуляторы 3x78 тоже можно переносить (и они тоже тонкие). Так что же? Программа не установится "криво", если вы будете работать осторожно. "Тонкость"? Мощности вашего компьютера хватит в любом случае.
Браузеры - это всего лишь усеченные клиенты. Они форматируют экран и воспринимают ввод с клавиатуры, но, за исключением раскрывающихся списков, не могут справиться с другими вопросами логики представления, такими как последовательность экранов и проверка правильности данных.
Вот почему формы на базе Web загружаются так медленно и так раздражают пользователей. Приходится ждать, пока хост-компьютер заметит вас, обработает весь экран со всеми данными и затем пошлет ответ.
Во многих знаниях - многая сила!
Боб Льюис - консультант компании Perot Systems. Ему можно написать по адресу: robert.lewis@ps.net.