Главная » Просмотр файлов » Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)

Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619), страница 17

Файл №1162619 Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (Э. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы)) 17 страницаЭ. Таненбаум, М. ван Стеен - Распределённые системы (принципы и парадигмы) (1162619) страница 172019-09-20СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 17)

Поля count и offset требуются для передачи параметров. Поле result в за­просах от клиента к серверу не используется, а при ответах сервера клиенту со­держит значение результата. В конце структуры имеются два массива. Первыйиз них, name, содержит имя файла, к которому мы хотим получить доступ.

Во вто­ром, data, находятся возвращаемые сервером при чтении или передаваемые насервер при записи данные.Давайте теперь рассмотрим код в листингах 1.4 и 1.5. Листинг 1.4 — это про­грамма сервера, листинг 1.5 — программа клиента. Программа сервера достаточноэлементарна.

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

Процедура receive блокируетсервер, пока не будет получено сообщение. Когда оно наконец приходит, серверпродолжает свою работу и определяет тип кода операции. Для каждого кода опе­рации вызывается своя процедура. Входящее сообщение и буфер для исходящихсообщений заданы в параметрах. Процедура проверяет входящее сообщениев параметре ml и строит исходящее в параметре т2. Она также возвращает значе­ние функции, которое передается через поле result. После посылки ответа сер­вер возвращается к началу цикла, выполняет вызов receive и ожидает следующе­го сообщения.В листинге 1.5 находится процедура, копирующая файлы с использованиемсервера. Тело процедуры содержит цикл чтения блока из исходного файла и за­писи его в файл-приемник.

Цикл повторяется до тех пор, пока исходный файл небудет полностью скопирован, что определяется по коду возврата операции чте­ния — должен быть ноль или отрицательное число.Первая часть цикла состоит из создания сообщения для операции чтения и пе­ресылки его на сервер. После получения ответа запускается вторая часть цикла,в ходе выполнения которой полученные данные посылаются обратно на сервердля записи в файл-приемник. Программы из листингов 1.4 и 1.5 — это только на­бросок кода. В них опущено множество деталей.

Так, например, не приводятсяпроцедуры do_xxx (которые на самом деле выполняют работу), отсутствует такжеобработка ошибок. Однако общая идея взаимодействия клиента и сервера вполне1.5. Модель клиент-сервер71понятна. В следующих пунктах мы ближе рассмотрим некоторые дополнитель­ные аспекты модели клргент-сервер.Листинг 1.4. Пример сервера#1nclucie <heacler.h>void ma1n(vo1ci) {struct message ml. m2:/'^ входящее и исходящее сообщения */1nt r:1'^ код результата */whlle(TRUE) {/* сервер работает непрерывно */receive(FILE_SERVER, &ml): /* блок ожидания сообщения ^/switch(mi.opcode) {/* в зависимости от типа запроса Чcase CREATE:r do_create(&ml. &m2); break:case READ:г do_read(&ml.

&m2) break:case WRITE:г do_wr1te(&ml. &m2): break;case DELETE:г do_delete(&ml. &m2): break:default:гE BAD OPER;m2.result = r:send(m1.sowvz^, &m2):/* вернуть результат клиенту V/* послать ответ */Листинг 1.5. Клиент, использующий сервер из листинга 1.4 для копирования файла#1nclucle <header.h>1'^ процедура копирования файла через сервер •ki1nt copyCchar *src. char *dst)istruct message ml:/* буфер сообщения */long position:/* текущая позиция в файле */long client = 110:/* адрес клиента *//* подготовиться к выполнению */initializeO:position = 0:do {/^ операция чтения */ml.opcode = READ:/^ текущая позиция в файле */ml.offset = position:/^ сколько байт прочитать ^/ml. count = BUFJIZE:/* скопировать имя читаемогоstrcpy(&ml.name, src):файла*//* послать сообщение на файловый сервер*/sendCFILESERVER.

&ml):/* блок ожидания ответа */receiveCclient. &ml):/* Записать полученные данные E файл-приемник. *//* операция: запись */ml.opcode = WRITE:ml.offset = position:/* текущая позиция в файле */ml.count = ml.result:/* сколько байт записать */strcpy(&ml.name, cist):/^ скопировать имя записываемогофайла*//^ послать сообщение на файловый сервер */send(FILE_SERVER. &ml):/* блок ожидания ответа */receive(client. &ml):I-' в ml.result содержитсяposition += ml.result:количество записанных байтов */} whileC ml.result > 0 ):/* повторять до окончания */1'^ вернуть OK или код ошибки */returnCml.result >= 0 ? OK :ml .result):72Глава 1.

Введение1.5.2. Разделение приложений по уровнямМодель клиент-сервер была предметом множества дебатов и споров. Один изглавных вопросов состоял в том, как точно разделить клиента и сервера. Понят­но, что обычно четкого различия нет. Например, сервер распределенной базыданных может постоянно выступать клиентом, передающим запросы на различ­ные файловые серверы, отвечающие за реализацию таблиц этой базы данных.В этом случае сервер баз данных сам по себе не делает ничего, кроме обработкизапросов.Однако рассматривая множество приложений типа клиент-сервер, предна­значенных для организации доступа пользователей к базам данных, многие ре­комендовали разделять их на три уровня.> уровень пользовательского интерфейса;4- уровень обработки;> уровень данных.Уровень пользовательского интерфейса содержит все необходимое для непо­средственного общения с пользователем, например для управление дисплеем.Уровень обработки обычно содержит приложения, а уровень данных — собст­венно данные, с которыми происходит работа.

В следующих пунктах мы обсу­дим каждый из этих уровней.Уровень пользовательского интерфейсаУровень пользовательского интерфейса обычно реализуется на клиентах. Этотуровень содержит программы, посредством которых пользователь может взаимо­действовать с приложением. Сложность программ, входящих в пользовательскийинтерфейс, весьма различна.Простейший вариант программы пользовательского интерфейса не содержитничего, кроме символьного (не графического) дисплея.

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

Типичные примеры таких интерфейсов — надстройка X-Windows, используемая во многих UNIX-системах, и более ранние интерфейсы, раз­работанные для персональных компьютеров, работающих под управлением MSDOS и Apple Macintosh.1.5. Модель клиент-сервер73Современные пользовательские интерфейсы значительно более функцио­нальны. Они поддерживают совместную работу приложений через единст­венное графическое окно и в ходе действий пользователя обеспечивают черезэто окно обмен данными.

Например, для удаления файла часто достаточноперенести значок, соответствующий этому файлу, на значок мусорной кор­зины. Аналогичным образом многие текстовые процессоры позволяют поль­зователю перемегцать текст документа в другое место, пользуясь только мы­шью. Мы вернемся к пользовательским интерфейсам в главе 3.Уровень обработкиМногие приложения модели клиент-сервер построены как бы из трех различныхчастей: части, которая занимается взаимодействием с пользователем, части, кото­рая отвечает за работу с базой данных или файловой системой, и средней части,реализующей основную функциональность приложения.

Эта средняя часть логи­чески располагается на уровне обработки. В противоположность пользователь­ским интерфейсам или базам данных на уровне обработки трудно выделить об­щие закономерности. Однако мы приведем несколько примеров для разъяснениявопросов, связанных с этим уровнем.В качестве первого примера рассмотрим поисковую машину в Интернете.Если отбросить все анимированные баннеры, картинки и прочие оконные укра­шательства, пользовательский интерфейс поисковой машины очень прост: поль­зователь вводит строку, состоящую из ключевых слов, и получает список заго­ловков web-страниц.

Результат формируется из гигантской базы просмотренныхи проиндексированных web-страниц. Ядром поисковой машины является про­грамма, трансформирующая введенную пользователем строку в один или не­сколько запросов к базе данных. Затем она помещает результаты запроса в спи­сок и преобразует этот список в набор HTML-страниц. В рамках модели клиентсервер часть, которая отвечает за выборку информации, обычно находится науровне обработки. Эта структура показана на рис. 1.19.Пользовательскийинтерфейсle /Выражениес ключевыми /словами /ГенераторзапросовЗапросык базе данныхБаза данныхweb-страницУровеньпользовательскогоинтерфейсаHTML-страницач со спискомГенераторHTML-страницУровеньУпорядоченный обработкисписокзаголовковКомпонентстраницупорядочиванияЗаголовки web-страницс метаинформациейРис. 1.19. Обобщенная организация трехуровневой поисковой машины для Интернета74Глава 1.

ВведениеВ качестве второго примера рассмотрим систему поддержки принятия penieний для фондового рынка. Так же как PI В ПОИСКОВОЙ машине, эту систему можноразделР1ть на внепрнрпр ригтерфейс, реалргзующий работу с пользователем, внутренрпою часть, отвечающую за доступ к базе с финансовор! информацией, PI проме­жуточную программу анализа. Анализ финансовых данных может потребоватьзамысловатых методик и технологий на основе статистических методов и искус­ственного интеллекта.

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

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6495
Авторов
на СтудИзбе
303
Средний доход
с одного платного файла
Обучение Подробнее