СОЧЕТАНИЕ ДОСТУПА В INTERNET И РАСПРЕДЕЛЕННЫХ ПРИЛОЖЕНИЙ ПОЛОЖИЛО НАЧАЛО СЕТЕВЫМ КОМПЬЮТЕРАМ. ТАК ЧТО ЖЕ, ВРЕМЯ ПК ПОДОШЛО К КОНЦУ?
Стив ШтайнкеЧТО СТОИТ ЗА ПОНЯТИЕМ "ТОНКИЙ КЛИЕНТ"
Как измерить толщину клиента?
Как правило, организация обзаводится сетевыми компьютерами (NC) по двум причинам. Одна из них продиктована общими соображениями, а именно предпочтительностью архитектуры клиент-сервер, клиенты которой имеют минимальное программное обеспечение (thin clients, тонкие клиенты). Чтобы оценить правомочность такого подхода, нужно разобраться с тем, что такое классический терминал и истинные клиент-серверные приложения. Другая причина объясняется зачастую снижением затрат. На самом же деле за этим кроется стремление централизованно использовать и контролировать компьютерные ресурсы. Но, только оценив все затраты, связанные с решением вычислительных задач предприятия, можно выяснить, насколько это разумно.
Есть несколько способов отделить интерактивные действия пользователей (такие, например, как управление выводом графики и использование клавиатуры, мыши, графического планшета) от других операций компьютерной программы. До сих пор при выборе наиболее подходящего из этих способов приходилось учитывать и исторически сложившуюся ситуацию, и объем необходимых вложений. Сегодня же, в связи со все более широким распространением сетевых технологий и сопутствующих им компонентов, решения следует искать исходя из специфики ситуации. И правильный выбор уже далеко не очевиден.
Простой терминал ввода-вывода или даже интеллектуальный терминал - это самые тонкие из возможных клиентов. На деле они представляют удаленное аппаратное расширение хост-компьютера. Вычисления в диалоговом режиме стали играть доминирующую роль только в конце 70-х; именно тогда были разработаны и первые персональные компьютеры. Первые же двадцать или более лет существования компьютеров практически все вычислительные задачи запускались в пакетном режиме. До того как появились терминалы с электронно-лучевыми трубками, для работы в диалоговом режиме использовался телетайп. В то время "Звездные войны" разыгрывались на рулонах бумаги, а все то, что сейчас можно найти на Web-серверах, представлялось с помощью псевдографики, состоящей из ASCII-символов.
Первые программы для работы в диалоговом режиме рассматривали операции ввода-вывода как особый случай чтения перфокарт. То, что и дисплеи терминалов, и перфокарты имеют по 80 столбцов, не простое совпадение. Первые терминалы с электронно-лучевой трубкой (их часто называли стеклянными телетайпами) не использовали бумагу, но работали примерно по тому же образцу, что и телетайпы: они передавали строку вводимых с клавиатуры символов на хост-компьютер и выдавали на экран дисплея получаемые от компьютера символы. Так же, как и при использовании телетайпа, существовали некоторые управляющие коды - перевод строки, перевод страницы, символ табуляции и возврат каретки, - которые обрабатывались дисплеем иначе, чем просто выдача на печать буквенно-цифровых символов. Необходимость реакции на escape-последовательности и управляющие символы потребовала от первых буквенно-цифровых терминалов некоторого "интеллекта". Впоследствии, когда терминалы "научились" реагировать на несколько более сложные управляющие коды, например атрибуты символа (мигание, повышенная яркость или "обращение фона"), набор управляющих символов был стандартизован ANSI. Затем появились дешевые микропроцессоры, и их стали ставить в терминалы для сокращения времени отклика, однако программное обеспечение вывода на экран по-прежнему работало на хост-компьютере.
Х-ТЕРМИНАЛЫ
Следующим шагом в интеллектуализации взаимодействия стало появление Х-терминала. Вместо отклика на нестандартные графические команды хост-компьютера - "провести прямую от такой-то до такой-то координаты", "окрасить такую-то и такую-то область в ярко-красный цвет" и "вывести букву r в такой-то и такой-то позиции, используя шрифт номер 4", - в Х-терминалах исполнялась стандартная программа вывода графики. Х-терминал являлся сервером вывода на экран, а хост-компьютер, где исполнялись все не связанные с выводом части программы, был его клиентом.
Обычно стандарт X Window ассоциируется с системой Unix, но он применяется и в других операционных системах, в том числе DOS и Windows. Рынок Х-терминалов всегда занимал строго определенную нишу, в первую очередь потому, что эта технология никогда не обеспечивала такой экономии, как использование ПК. Более того, способы реализации X Window так же, как и системы Unix самой по себе, не стандартизированы, следствием чего является несовместимость различных версий.
Протокол X Window гораздо сильнее загружает ресурсы, чем потоки данных, которыми обмениваются терминалы ввода-вывода и хост-компьютеры. Терминалы, работающие только в текстовом режиме, при последовательном соединении работают достаточно быстро даже со скоростями передачи 1200 или 2400 бит/с. Графическим же терминалам необходима скорость 9600 бит/с или 19,2 Кбит/с; а Х-терминалы могут потребовать соединения на скорости Ethernet - 10 Мбит/с.
Сам по себе ПК не нуждается в использовании архитектуры клиент-сервер или распределении вычислительных ресурсов. С традиционной точки зрения, ПК - это хост-компьютер, объединенный с графическим терминалом. Но подключение к сети выводит его в сферу распределенных вычислительных ресурсов и клиент-серверных систем. Разделительная линия между клиентом и сервером, как представляют себе создатели SQL и его производных, например стандарта ODBC (Open DataBase Connectivity, открытая связь с базами данных), проходит между запрашивающей программой и местом, где хранятся данные. В системе X Window эта граница разделяет программу и средство отображения информации. Идея, лежащая в основе модели SQL, заключается в том, что база данных размещается на системе масштаба предприятия с высокой степенью защиты информации, обладающей огромной производительностью и достаточной мощностью для поиска данных, индексирования, сортировки и других задач, требующих серьезных вычислительных ресурсов. Компьютеру, с которым работает пользователь, необходимо упаковать и послать несколько строк текста, а затем обработать только небольшие порции возвращенных данных.
КАК ЗАСТАВИТЬ КЛИЕНТА "ПОХУДЕТЬ"
"Клиент-сервер" - довольно расплывчатый термин, впрочем, как и большинство понятий, активно используемых для описания соблазнительных технических нововведений в целях повышения их коммерческой привлекательности. Ясно, что конфигурация "клиент-сервер" требует двух отдельных фрагментов исполняемого кода, обеспечивающих пересылку данных от клиента к серверу, и обратно. Но когда один из процессов становится слишком уж общеупотребительным, это перестает быть системой клиент-сервер в чистом виде. Большинство авторов не рассматривают услуги выдачи на печать и обработки файлов в сети как истинную архитектуру клиент-сервер, хотя при этом они могут ничтоже сумняшеся упоминать об ftp-клиентах и ftp-серверах, взаимоотношения между которыми в некоторых аспектах гораздо менее сложны, нежели взаимоотношения между клиентами и серверами в системах NetWare или Windows NT.
При разработке или разложении на составные части прикладной программы как приложения в системе клиент-сервер, необходимо принять несколько важных решений. Основная масса данных, конечно же, должна находиться на сервере, где ее можно эффективно защитить и обработать. Очевидно, место для отображения данных и работы пользователей в режиме диалога - на клиентских станциях. Но существует третий, промежуточный класс программных кодов, необходимых для работы приложений; иногда его называют "правилами работы" (business rules) или "логикой приложения" (application logic).
Большинство серверов реляционных баз можно программировать. Соответствующие операции называются правилами, хранимыми процедурами или триггерами. Так, проверить, принадлежат ли модифицированные данные к допустимому диапазону, может сервер базы данных, а не специальная программа ввода данных клиента. Однако отраслевых стандартов на такие функции сервера не существует, так что при использовании этих возможностей разработчик приложений оказывается привязан к определенной базе данных. Одной из основных целей применения реляционных баз данных SQL является обеспечение возможности выбора среди нескольких стандартных серверов баз данных. В том числе и по этой причине разработчики стремятся размещать логику приложения в клиентской части системы.
Клиенты, где на одном и том же ПК находятся и процедуры представления данных, и правила работы, зачастую получают презрительное название "жирных" (fat). При таком разделении обязанностей между клиентом и сервером возникают определенные проблемы. Наличие столь мощного программного обеспечения у жирных клиентов означает, что всякий раз, когда изменяются правила работы, все копии клиентского программного обеспечения должны быть модифицированы у каждого клиента. Это вообще непросто - с высокой степенью надежности распространять программное обеспечение среди клиентов сети, которые должны при этом стабильно работать, включаться и входить в систему. А с использованием мобильных компьютеров и с появлением удаленных рабочих мест задача становится и вовсе невыполнимой, поскольку, например, очень трудно гарантировать, что все пользователи имеют один и тот же лимит кредита.
С использованием жирных клиентов аппаратное обеспечение устаревает быстрее, поскольку новые приложения и правила работы скоро "перерастают" возможности платформы, на которой они работают. Многие руководители информационных систем уже решили для себя, что устройства, которые просто отображают битовые массивы и воспринимают действия пользователей, не должны требовать замены раз в год-полтора.
Изящным решением проблемы как жирных клиентов, так и жирных серверов стала трех- или n-уровневая архитектура клиент-сервер. Между пользовательским уровнем и сервером базы данных вводится один или несколько серверов правил работы или логики приложений. Это централизованное решение, так что приложения можно модифицировать весьма эффективно. Аппаратное обеспечение клиента в данном случае служит дольше, поскольку его не нужно усовершенствовать под новые правила и приложения. Сервер базы данных при этом остается чисто вычислительным блоком, который, если понадобится, можно перевести на другую платформу.
БРАУЗЕР, КАК ТОНКИЙ КЛИЕНТ
По своей сути браузер сильно отличается от программы эмуляции терминала. Помимо обработки escape-последовательностей он интерпретирует метки (tag), управляющие деталями способа отображения и особенностями воспроизведения текста. Возможности языка HTML (HyperText Markup Language, язык разметки гипертекста) значительно шире возможностей эмулятора терминала. Так, например, он позволяет загружать и отображать графические файлы нескольких форматов, а также файлы других типов - новости, анимацию, аудио- и видеофайлы - и передавать их вспомогательным приложениям, которые знают, что с ними делать. Более того, одна страница может компоноваться с помощью нескольких URL, расположенных в тысячах километров друг от друга. И, наконец, HTML позволяет загружать исполняемые коды и запускать их на локальном компьютере (Java и ActiveX - наиболее распространенные приложения такого типа). Модель с применением браузера хорошо описывается трехуровневой архитектурой клиент-сервер, или, во всяком случае, ей не противоречит.
Когда браузер отображает текст или (статические до некоторой степени) изображения, он действительно является тонким клиентом. Когда же он запускает вспомогательные приложения, например Adobe Acrobat или Macromedia ShockWave, уже сомнительно, стоит ли его считать тонким клиентом. Поддержка средств мультимедиа - еще одно направление, по которому может происходить утолщение браузера. И наконец, когда браузер загружает виртуальную машину Java и выполняет ряд компонентов Java, называть его тонким клиентом по меньшей мере странно. Поддержка загружаемых апплетов и компонентов тоже ведет к утолщению. Вообще говоря, браузер - не одно и тоже,что тонкий клиент: в зависимости от того, какие именно приложения в него загружаются, браузер можно рассматривать и как тонкий, и как жирный клиент.
Так что когда дело доходит до выбора сетевого компьютера, важно решить, какими компонентами браузера следует пожертвовать для того, чтобы он оставался тонким клиентом и насколько развитым должно быть программное обеспечение клиента для приложений, которые предполагается использовать. (Дополнительную информацию о том, из чего состоят жирные и тонкие клиенты, см. во врезке "Как измерить толщину?".)
СКРЫТЫЕ ЗАТРАТЫ, СКРЫТАЯ ЭКОНОМИЯ
Еще один аргумент в пользу сетевых компьютеров - снижение затрат. Наиболее убедительные доказательства в поддержку этой идеи можно найти в документах исследовательских организаций, оценивающих так называемые скрытые затраты сетей из ПК. Похоже, самым сильным утверждением из такого рода документов являются "Вычисления по модели Java в масштабах предприятия", автор Бад Трибл, компания Sun Microsystems. В соответствии с исследованиями компании Sun, ее тонкие клиенты на основе Java будут стоить 2,5 тыс. долларов в год, а для сетей на основе ПК - 15 тыс. долларов в год на пользователя. Впрочем, в документе не приводятся детали того, как распределяются эти затраты, к тому же сама компания Sun широко сети из ПК не использует. Опасность же для профессионалов в области ИТ заключается в том, что экономия скрытых расходов может оказаться иллюзорной.
Группа аналитиков Gartner Group делит коммерческие сетевые компьютеры на три категории: сетевой компьютер-клиент (Network Computing-Client, NC-C), сетевой компьютер-сервер (Network Computing-Server, NC-S) и сетевой ПК (Network PC, NetPC). (Zona Research проницательно замечает, что потребность в сетевых компьютерах может возникнуть не только в коммерции, но и в торговле и образовании.) Классификация компании Gartner наиболее точно соответствует документу NC Reference Profile (Oracle); при этом изделие JavaStation (Sun) относится к классу NC-C. Такие устройства обычно не имеют жесткого диска и зачастую используют операционную систему, отличную от Windows, например Java OS.
Примером NC-S может служить система Intelligent Console Architecture компании Citrix. Для данной категории сетевых компьютеров выполнение всех программ обеспечивает многопользовательская версия Windows NT Server. Третья категория, NetPC, представлена фирмами Intel и Microsoft. NetPC - это, по существу, "запечатанный" ПК без съемных накопителей, хотя и оборудованный жестким диском, который обычно называют "внутренним буфером".
Дейв Каппуччо, аналитик Gartner Group, попытался оценить полные затраты на компьютерное обеспечение для этих трех разновидностей сетевых компьютеров (или, по крайней мере, для их обещанных характеристик, поскольку к моменту публикации была доступна только модель NC-S). Сравнение проводилось с уровнем затрат для Windows 95. Учитывались затраты на сервер, сеть и настольные станции, а также разнообразные скрытые затраты - неформальную помощь со стороны коллег, самообучение пользователей, время, потраченное на знакомства с шрифтами. На основании анализа всех затрат, который Gartner провела в крупных организациях, средняя стоимость клиента Windows 95 составляет 9784 долларов, включая затраты на сеть и настольные станции.
Что касается сетевых компьютеров, то в исследовании, проведенном Gartner, делается следующий вывод: конфигурация NC-C дешевле клиента Windows 95 примерно на 39%, NC-S - на 31%, а NetPC под Windows NT 5.0 - на 28%.
Однако в предоставленной Gartner информации некоторые обстоятельства не нашли своего отражения. Наиболее важен из этого ряда тот факт, что приложения, запускаемые на платформе NC-С, обычно не являются приложениями под Windows (или Mac, или OS/2). При прочих равных условиях производительность устройства класса NC-C с меньшим быстродействием процессора (MIPS) и меньшей оперативной памятью (RAM) вряд ли превзойдет производительность ПК. К тому же даже для аппаратных платформ равной мощности неизвестно, насколько скоро (если это вообще когда-либо произойдет) приложения на основе компонентов Java смогут обеспечить производительность, сравнимую с существующими настольными системами. Думается, принимать решение о покупке на основе такой ограниченной информации еще слишком рано.
Стоит заметить, что когда сервер недоступен, сетевой компьютер с жестким диском - независимо от того, NetPC это или NC-C, - в состоянии выполнить по крайней мере часть работы. Компьютеры категории NC-S полностью зависят от сервера.
Кроме всего прочего, в исследовании группы Gartner указывается (и это весьма ценный момент), что и при работе с обычной системой Windows 95 можно достичь 25-30% экономии за счет правильного подхода, т. е. сосредоточения приложений на серверах, автоматизации задач управления и проч. При этом, скорее всего, придется принимать меры, чтобы ограничить возможности пользователей по установке программного обеспечения или изменения конфигурации. В результате распространение сетевых компьютеров может стать просто хитрым способом установить централизованное управление над буйными пользователями, не вступая с ними в открытую схватку за их текущие привилегии.
ВЫСОКИ ЛИ ШАНСЫ?
Сетевые клиенты могут иметь самые разные формы - в том числе формы Web-браузеров, встроенных в сотовые телефоны или наручные часы с возможностью загрузки расписаний. Так что сетевому компьютеру наверняка отыщется подходящее место. Однако это произойдет не потому, что они обеспечивают наиболее удобный подход к обработке, и не потому, что они позволяют сэкономить деньги.
Стив Штайнке - старший редактор LAN Magazine. С ним можно связаться по адресу: ssteinke@mfi.com.
ЧТО СТОИТ ЗА ПОНЯТИЕМ "ТОНКИЙ КЛИЕНТ"
Как измерить толщину клиента?
Корни концепции тонкого клиента лежат в архитектуре программного обеспечения систем клиент-сервер. Поэтому использование термина "тонкий" (или "не очень тонкий") клиент для описания оборудования выглядит несколько некорректно. Некую грубую единицу измерения можно найти, рассмотрев, сколько вычислительной мощности процессора потребуется, чтобы обеспечить полноцветный графический интерфейс пользователя - предполагая, что самый тонкий клиент - это клиент, который обеспечивает только визуальное отображение символов.
Вряд ли кто-нибудь осмелится утверждать, что существует более эффективный пользовательский интерфейс, чем разработанная компанией Citrix Systems архитектура ICA (Intelligent Console Architecture). Citrix Systems использует ICA в своих программных продуктах WinFrame и предоставляет ее по лицензии другим компаниям (в том числе Wyse, Tektronix, Sun Microsystems и Insignia Solutions) для представления информации в формате Windows в удаленном режиме. Citrix утверждает, что процессор 80286 вполне годится для отображения информации в формате Windows и что в большинстве случаев для этого хватит каналов связи со скоростями обмена 20 Кбит/с. Таким образом, мы получаем оценку снизу для вычислительной мощности тонкого клиента около 0,5 VAX MIPS (в этих единицах измерялась приблизительная мощность многих процессоров). Для сравнения: компьютеры на базе Pentium Pro обеспечивают производительность 400 VAX MIPS. Процессор Sun microSPARC II, используемый в JavaStation, тянет на 50 VAX MIPS, низкоскоростные процессоры Pentium также дают 50 VAX MIPS, как и PowerPC 601. По нашему мнению, эти цифры свидетельствуют о том, что 99% современных компьютеров - и персональных, и сетевых - в состоянии работать как жирные клиенты, т. е. декодировать потоки MPEG-данных и реализовывать логику приложений на основе Java.
Разве что ленивый не писал об ужасном положении дел с приложениями для ПК и операционными системами, раздутыми от избыточных функций, занимающих слишком много места на диске и слишком медленно работающих. Но как бы ни были важны проблемы жирных приложений и жирных операционных систем, они не имеют никакого отношения к жирным клиентам. Мощные приложения, ставшие мишенью для таких нападок, ни в коем случае не являются распределенными. Они предназначены для запуска на одном компьютере, как и Windows, OS/2, и Mac OS, не говоря уже о практически любой версии Unix.