Сетевое программное обеспечение
51
□ Централизованное сетевое приложение
целиком выполняется на данном компью
тере, но обращается в процессе своей работы к ресурсам других компьютеров сети.
В примере на рис. 2.6,
б
приложение, которое выполняется на клиентском компьютере,
обрабатывает данные из файла, хранящегося на файл-сервере, а затем распечатывает
результаты на принтере, подключенном к серверу печати. Очевидно, что
работа такого
типа приложений невозможна без участия сетевых служб и средств транспортировки
сообщений.
□ Распределенное (сетевое) приложение
состоит из нескольких взаимодействующих
частей, каждая из которых выполняет какую-то определенную законченную работу по
решению прикладной задачи, причем каждая часть может выполняться и, как правило,
выполняется на отдельном компьютере сети (рис. 2.6,
в).
Части распределенного при
ложения взаимодействуют друг с другом, используя сетевые службы и транспортные
средства ОС. Распределенное приложение в общем случае имеет доступ ко всем ресур
сам компьютерной сети.
Очевидным преимуществом распределенных приложений является возможность рас
параллеливания
вычислений, а также специализация компьютеров. Так, в приложении,
предназначенном, скажем, для анализа климатических изменений, можно
выделить три
достаточно самостоятельные части (см. рис. 2.6, в), допускающие распараллеливание.
Первая часть приложения, выполняющаяся на сравнительно маломощном персональном
компьютере, могла бы поддерживать специализированный графический пользовательский
интерфейс, вторая — заниматься статистической обработкой данных на высокопроизво
дительном мэйнфрейме, третья — генерировать отчеты на сервере с установленной стан
дартной СУБД. В общем случае каждая из частей распределенного приложения может
быть представлена несколькими копиями, работающими на разных компьютерах. Ска
жем, в данном примере первую часть, ответственную за поддержку специализированного
пользовательского
интерфейса, можно было бы запустить на нескольких персональных
компьютерах, что позволило бы работать с этим приложением нескольким пользователям
одновременно.
Однако чтобы добиться всех тех преимуществ, которые сулят распределенные приложения,
разработчикам этих приложений приходится
решать множество проблем, например: на
сколько частей следует разбить приложение, какие функции возложить на каждую часть,
как организовать взаимодействие этих частей, чтобы в случае сбоев и отказов оставшиеся
части корректно завершали работу, и т. д. и т. п.
Заметим, что все сетевые службы, включая файловую службу, службу печати, службу элек
тронной почты, службу удаленного доступа, интернет-телефонию и т. д., по определению
относятся к классу распределенных приложений.
Действительно, любая сетевая служба
включает в себя
клиентскую и серверную части, которые могут выполняться и обычно
выполняются на разных компьютерах.
На рис. 2.7, иллюстрирующем распределенный характер веб-службы, мы видим различ
ные виды клиентских устройств —
персональные компьютеры, ноутбуки и мобильные
телефоны — с установленными на них веб-браузерами, которые взаимодействуют по сети
с веб-сервером. Таким образом, с одним и тем же веб-сайтом может одновременно работать
множество — сотни и тысячи — сетевых пользователей.
Многочисленные примеры распределенных приложений можно встретить и в такой об
ласти, как обработка данных научных экспериментов. Это неудивительно, так как многие