Файл: Технология построения распределенных информационных систем).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 25.05.2023

Просмотров: 164

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

Клиент и сервер взаимодействую друг с другом в сети Интернет или в любой другой компьютерной сети при помощи различных сетевых протоколов, например, IP протокол, HTTP протокол, FTP и другие. Протоколов на самом деле очень много и каждый протокол позволяет оказывать ту или иную услугу. Например, при помощи HTTP протокола браузер отправляет специальное HTTP сообщение, в котором указано какую информацию и в каком виде он хочет получить от сервера, сервер, получив такое сообщение, отсылает браузеру в ответ похожее по структуре сообщение (или несколько сообщений), в котором содержится нужная информация, обычно это HTML документ.

Сообщения, которые посылают клиенты получили названия HTTP запросы. Запросы имеют специальные методы, которые говорят серверу о том, как обрабатывать сообщение. А сообщения, которые посылает сервер получили название HTTP ответы, они содержат помимо полезной информации еще и специальные коды состояния, которые позволяют браузеру узнать то, как сервер понял его запрос.

ГЛАВА 1. ОСОБЕННОСТИ ФУНКЦИОНИРОВАНИЯ РАСПРЕДЕЛЕННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ

1.1 Характерные принципы функционирования модели «Клиент - Сервер»

1.2 Определение сервера и клиента

1.3 Роль сервера и клиента в архитектуре клиент-сервер

1.4 Понятие прикладных протоколов

1.5 Представление данных в системах обработки данных

ГЛАВА 2. ОСНОВНЫЕ ПРИНЦИПЫ ПОСТРОЕНИЯ РАСПРЕДЕЛЁННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ

2.1 Основные принципы структурного подхода

2.2 Создание клиент-серверного приложения, способное передавать данные по сети

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

Рисунок 1. Опрос (polling)

К очевидным недостаткам такого подхода следует отнести следующие:

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

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

К таким техникам относится другой способ обмена сообщениями, называемый длительный опросом (англ. long polling). После загрузки веб-страницы, клиентский код выполняет запрос, но сервер не отвечает и не закрывает соединение, пока не появятся новые данные или пока клиент не отключится самостоятельно. Как только данные появились – отправляется ответ и соединение закрывается. После чего клиент сразу же отправляет следующий запрос, снова запуская процесс ожидания (рисунок 2).

Рисунок 3. Длинный опрос (long-polling)

Достоинства этого метода по сравнению с классическим опросом (polling):

  • минимальное количество запросов;
  • высокая временная точность событий;
  • отсутствие необходимости длительного хранения событий сервером.

После создания объекта EventSource с указанием адреса подключения браузер отправит запрос на установление соединения серверу. Чтобы соединение успешно открылось, сервер должен ответить с HTTP-заголовком "Content-Type: text/event-stream" и не закрывать соединение. После этого сервер может отправлять в открытое соединение сообщения, когда появляется новая информация (рисунок 3).

Рисунок 4. Server-Sent Events

В Server-Sent Events включена возможность отправлять идентификатор сообщения, который помогает восстановить утраченные события в случае обрыва соединения. В поддерживающих стандарт браузерах доступен удобный событийно-ориентированный программный интерфейс (API) для обработки получаемых сообщений и ошибок.

После того как установлено соединение по протоколу WebSocket, сервер и клиент могут посылать друг другу сообщения, когда новая информация доступна на одной из сторон (рисунок 5). Таким образом, обеспечивается своевременная передача необходимой информации и поддержание ее в актуальном состоянии.


Рисунок 5. WebSocket

Протокол WebSocket подробно описан в RFC 6455 [3]. Здесь лишь отметим, что формат пакета (фрейма) данных имеет компактную структуру, обеспечивая минимум накладных расходов на передачу и повышая тем самым производительность. Кроме того, фреймы делятся на два больших типа: фреймы с данными и управляющие фреймы, предназначенные для проверки связи (ping) и закрытия соединения. Помимо передачи текстовой информации, фреймы с данными могут содержать и бинарные данные.

ГЛАВА 2. ОСНОВНЫЕ ПРИНЦИПЫ ПОСТРОЕНИЯ РАСПРЕДЕЛЁННЫХ ИНФОРМАЦИОННЫХ СИСТЕМ

2.1 Основные принципы структурного подхода

В основу функционально-модульного подхода положен принцип алгоритмической декомпозиции, в соответствии с которым производится разделение функций ИС на модули по функциональной принадлежности, когда каждый модуль системы реализует один из этапов общего процесса. Традиционный функционально-модульный подход к разработке ИС предусматривает строго последовательный порядок действий (так называемая «модель водопада»).

По мнению Страуструпа, главный недостаток модели «водопада» заключается в склонности информации течь только в одну сторону. Если проблема оказывается «внизу по течению», то часто возникает сильный организационный и методический нажим с целью проводить лишь ограниченные исправления и разрешить проблему без воздействия на предыдущие стадии проекта.

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

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


2.2 Создание клиент-серверного приложения, способное передавать данные по сети

Цель данной работы создать клиент серверное приложение способное передавать данные по сети соответственно приложение будет состоять из двух частей.

  1. Сервер который будет принимать запросы от клиента.
  2. Клиент который будет передавать на сервер данные серверу и получать от него информацию.

Для создания приложения понадобиться Microsoft Visual Studio 2005.

Пишем сервер

Создаем новый проект

Выбираем создание консольного приложения

В итоге получаем пустое приложение

Проект состоит из двух частей из подключенных библиотек, таких как

using System;

using System.Collections.Generic;

using System.Text;

чтобы подключить нужную библиотеку необходимо найти ее в object browser

например библиотеку для работы с сетью.

Находим ее в object browser

Выделяем название библиотеки System.Net чтобы объявить ее необходимо перейти в объявления модулей и сказать программе что мы будем его использовать объявлением

Using System.Net; так как пишем на C# главное не забыть в конце строки ставить “;”

данный метод программирования довольно просто так как Microsoft Visual Studio 2005 предлагает сама на выбор методы и функции которыми обладают библиотеки.

Для работы приложения необходимо подключить следующие библиотеки:

  • System.Net библиотека работы с сетью
  • System.Net.Sockets библиотека работы с сокетами на уровне портов
  • System.Net.NetworkInformation библиотека работы с информацией, которую можно получить от сетевых устройств

Когда подключены все библиотеки можно писать программу

Существуют два типа переменных

  1. обычные переменные объявляют как обычно во всех языках программирования например

string имя переменной; объявление текстовых переменных p=”текст”;

int имя переменной; объявление цифровых переменных p=65535

  1. объектные переменные необходимо создавать командой new например создания сервера ожидающего запросов от клиента на заданный порт

TcpListener имя переменной сервера = new TcpListener(IP адрес ПК ,номер порта от 1000 до 65534);

Например:

PAddress demo4 = IPAddress.Parse("0.0.0.0");//используем все IP адреса компьютера для прослушивания

TcpListener demo=new TcpListener(demo4,3000);//прослушиваем порт 6000


После создания сервера, его необходимо запустить, чтобы он прослушивал запросы от клиента

Для запуска и остановки используют 2 функции обьекта такие как

имя переменной сервера.Start() запускает сервер и он начинает ждать запросы на тот порт который назначен от клиента.

имя переменной сервера.Stop() останавливает прослушивание и работу сервера

Далее необходимо дождаться запроса от клиента и ответив ему попытаться получить какую ни будь информацию.

Далее строка ждет соединения с сервером и когда оно произошло присваивает переменной сессию данного соединения

TcpClient имя переменной сессии = имя переменной сервера .AcceptTcpClient(); если присвоилось то коннект есть и приложение продолжит дальше свою работу если не присвоилось то оно будет ожидать запроса от клиента.

Так как в сетевых устройствах все данные передаются в формате байт то полученную информацию от клиента необходимо будет преобразовать из байт например в текст.

Но для получения ответа необходимо объявить массив байт например длинной 256 символов чтобы с запасом на будущее было

byte[] имя переменной в байтах = new byte[256];

Преобразование выполняется следующим образом

Объявляем текстовую переменную и присваиваем ей значение полученное от клиента

Объявленная переменная для ответа = System.Text.Encoding.ASCII.GetString(имя переменной в байтах);

Чтобы получать от клиента не одно а несколько значений необходимо создать непрерывный цикл например:

While(true)

{

действия

}

Данный цикл никогда не завершиться поэтому он будет постоянно считывать значения от клиента и выводит их на экран сервера командой Console.Write(Объявленная переменная для ответа );

Для того чтобы считать данные переданные клиентом необходимо вызвать метод Receive(байтовый массив) в байтовый массив будет записано значение переданное от клиента в байтах мы его преобразуем в строку и выведем на экран

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


Если же нужно послать другое значение то для преобразования значения в байты необходимо воспользоваться командой

System.Text.Encoding.ASCII.GetBytes(значение) Даная команда преобразует значение в байтовую форму.

При запуске сервера появиться простое окно консоли

Для подключения к приложению можно воспользоваться в строенным средством windows называющимся telnet

Чтобы подключиться к приложению наберите в командной строке telnet localhost номер порта который написали в созданном сервере.

Например

В появившемся окне введите любой текст и посмотрите результат

так как сервер взаимодействует с клиентом и не может закрыться по его команде его пока это не предусмотрено в приложении во избежание ошибок сервер нужно закрывать первым.

В контексте DDB межоперабельность означает две вещи. Во-первых, - это качество, позволяющее обмениваться данными между базами данных различных поставщиков. Как, например, тиражировать данные из базы данных Informix в Oracle и наоборот? Известно, что штатные средства тиражирования в составе данной конкретной СУБД позволяют переносить данные в однородную базу. Так, средствами CA-Ingres/Replicator можно тиражировать данные только из Ingres в Ingres. Как быть в неоднородной DDB? Ответом стало появление продуктов, выполняющих тиражирование между разнородными базами данных.

Во-вторых, это возможность некоторого унифицированного доступа к данным в DDB из приложения. Возможны как универсальные решения (стандарт ODBC), так и специализированные подходы. Очевидный недостаток ODBC - недоступность для приложения многих полезных механизмов каждой конкретной СУБД, поскольку они могут быть использованы в большинстве случаев только через расширения SQL в диалекте языка данной СУБД, но в стандарте ODBC эти расширения не поддерживаются.

Специальные подходы - это, например, использование шлюзов, позволяющее приложениям оперировать над базами данных в "чужом" формате так, как будто это собственные базы данных. Вообще, цель шлюза - организация доступа к унаследованным (legacy) базам данных и служит для решения задач согласования форматов баз данных при переходе к какой-либо одной СУБД. Так, если компания долгое время работала на СУБД IMS и затем решила перейти на Oracle, то ей очевидно потребуется шлюз в IMS. Следовательно, шлюзы можно рассматривать как средство, облегчающее миграцию, но не как универсальное средство межоперабельности в распределенной системе. Вообще, универсального рецепта решения задачи межоперабельности в этом контексте не существует - все определяется конкретной ситуацией, историей информационной системы и массой других факторов. DDB конструирует архитектор, имеющий в своем арсенале отработанные интеграционные средства, которых на рынке сейчас очень много.