Методы и технологии разработки клиент-серверных приложений
Министерство образования и науки Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования «ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР) Кафедра технологий электронного обучения (ТЭО) МЕТОДЫ И ТЕХНОЛОГИИ РАЗРАБОТКИ КЛИЕНТ-СЕРВЕРНЫХ ПРИЛОЖЕНИЙ Учебное пособие ТОМСК
Кручинин Владимир Викторович, Морозова Юлия Викторовна Методы и технологии разработки клиент-серверных приложений : Учебное пособие. – Томск: Томский государственный университет систем управления и радиоэлектроники, 2018. – 106 с. Изложены основы разработки сетевых приложений, базирующихся на клиент/серверной модели. Даны основные понятия и логические основы компьютерных сетей. Рассмотрены: организация распределенных многопроцессорных и многопоточных приложений; средства синхронизации потоков и процессов. Приводятся методы и средства межпроцессорного обмена данными (сокеты, удаленный вызов процедур, логические каналы) Показаны примеры построения функциональных расширений WWWсервера на основе интерфейсов CGI и ISAPI. © Томский государственный университет систем управления и радиоэлектроники, 2018 © Кручинин В.В., Морозова Ю.В., 2018 2
ОГЛАВЛЕНИЕ | ||
ВВЕДЕНИЕ. | 5 | |
1 КОМПЬЮТЕРНЫЕ СЕТИ. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ. | 6 | |
1.1 | Структура сети . | 6 |
1.2 | Протоколы . | 8 |
1.3 | Адреса и имена. | 9 |
1.4 | Основные протоколы транспортного уровня UDP и TCP. | 10 |
1.5 | Основные службы TCP/IP. | 10 |
1.6 | Порт . | 11 |
2 ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРНЫХ СЕТЕЙ . | 12 | |
2.1 | Модель «клиент/сервер» . | 12 |
2.2 | Операционные системы . | 14 |
2.3 | Серверное программное обеспечение . | 14 |
2.4 | Клиентское программное обеспечение . | 16 |
3 ПРОГРАММНЫЕ ИНТЕРФЕЙСЫ . | 17 | |
3.1 | Сокеты. | 17 |
3.1.1 Основные понятия. | 17 | |
3.1.2 Основные функции API сокетов. | 20 | |
3.1.3 Простейшая реализация модели клиент/сервер на основе | ||
сокетов. | 20 | |
3.1.4 Описание API-winsock2 . | 21 | |
3.2 | Каналы (Pipes) . | 27 |
3.2.1 Создание каналов . | 27 | |
3.2.2 Создание соединения с помощью именованных каналов. | 28 | |
3.2.3 Передача данных по именованному каналу . | 29 | |
3.2.4 Простейший пример реализации модели «клиент/сервер» . | 30 | |
3.3 | Удаленный вызов процедур (RPC – remote call procedure) . | 31 |
3.3.1 RPC для открытых систем . | 31 | |
3.3.2 RPC для Windows . | 32 | |
3.3.3 Пример создания сетевого приложения на основе RPC | ||
Windows. | 40 | |
4 МНОГОПОТОЧНЫЕ ПРИЛОЖЕНИЯ. | 49 | |
4.1 | Процессы. | 49 |
4.2 | Потоки (Thread). | 52 |
4.3 | Синхронизация потоков . | 54 |
4.4 | Атомарный доступ . | 55 |
4.5 | Критические секции . | 56 |
4.6 | Синхронизация потоков в системном режиме . | 57 |
4.6.1 События (Events) . | 59 | |
4.6.2 Ожидаемые таймеры . | 61 | |
4.6.3 Семафоры . | 62 | |
4.6.4 Мьютексы. | 63 | |
4.7 | Пулы потоков . | 64 |
4.7.1 Очередь асинхронных вызов функций. | 64 | |
4.7.2 Использование порта завершения ввода/вывода . | 65 | |
4.7.3 Пример организации пула потоков . | 66 | |
5 ПРОСТЕЙШЕЕ СЕТЕВОЕ ПРИЛОЖЕНИЕ, ОСНОВАННОЕ НА | ||
СОКЕТАХ . | 68 | |
5.1 | Сервер . | 68 |
5.2 | Клиентское приложение. | 70 |
6 РАЗРАБОТКА СЕТЕВЫХ ПРИЛОЖЕНИЙ НА ОСНОВЕ WWW- | ||
СЕРВЕРА . | 73 | |
6.1 | Обзор технологий . | 73 |
6.2 | Программирование CGI-скриптов . | 75 |
6.2.1 Описание интерфейса . | 75 | |
6.2.2 Взаимодействие WWW-сервера и CGI-программы . | 77 | |
6.2.3 Переменные среды о сервере . | 78 | |
6.3 | Программный интерфейс ISAPI . | 82 |
6.4 | Фильтры IIS . | 86 |
7 ПРОГРАММИРОВАНИЕ КЛИЕНТ-СЕРВЕРНЫХ ПРИЛОЖЕНИЙ НА | ||
ЯЗЫКЕ PYTHON . | 90 | |
8 ПРОГРАММИРОВАНИЕ КЛИЕНТ-СЕРВЕРНЫХ ПРИЛОЖЕНИЙ НА | ||
ЯЗЫКЕ JAVA . | 97 | |
ЗАКЛЮЧЕНИЕ . | 104 | |
ЛИТЕРАТУРА . | 105 |
ВВЕДЕНИЕ Развитие современных технических устройств не мыслим без внедрения технологий компьютерных сетей. Компьютерные сети являются необходимым элементом интеграции различного рода устройств и комплексов, в том числе и устройств промышленной электроники. Поэтому программирование компьютерных сетей является важным элементом подготовки современных инженеров и магистров, специализирующихся на проектировании сложных систем промышленной электроники. Данный курс «Методы и технологии разработки клиент-серверных приложений» предназначен для изучения основ и принципов создания сетевого программного обеспечения, базирующегося на клиент/серверной модели. Данный курс базируется на курсах «Информатика», «Программирование», «Технологии программирования», «Базы данных», «Компьютерные сети», «Основы вычислительной техники», «Операционные системы», «Введение в интернет» Курс имеет следующую структуру: 1. Основные понятия и логические основы компьютерных сетей. 2. Организация распределенных многопроцессных и многопоточных приложений. 3. Средства синхронизации потоков и процессов. 4. Средства межпроцессоного обмена данными (сокеты, удаленный вызов процедур, логические каналы). 5. Структура и простой пример организации клиент/сервер-ного приложения. 6. Построение функциональных расширений WWW-сервера на основе интерфейсов CGI и ISAPI. 7. Программирование клиент-серверных приложений на языке Python. 8. Программирование клиент-серверных приложений на языке Java. Для изучения данного курса необходимо знание и наличие практиче- ских навыков программирования на языке программирования С++ и Java для операционной системы MS Windows.
1 КОМПЬЮТЕРНЫЕ СЕТИ. ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ 1.1 Структура сети Компьютерная сеть это совокупность компьютеров и других устройств, соединенных с помощью средств телекоммуникации с целью эффективной обработки данных и разделения ресурсов [14]. На рисунке 1.1 показаны основные элементы компьютерной сети. Рис. 1.1 – Структура компьютерной сети Компьютерная сеть состоит из рабочих станций, серверов, сетевого оборудования, различных устройств (принтер, плоттер, и пр.). Рабочая станция – это, как правило, персональный компьютер на котором работает клиент (пользователь компьютерной сети). Сервер – специально выделенный в сети компьютер, обеспечивающий обслуживание запросов некоторого множества клиентов. Подсеть – компьютерная сеть, входящая в другую компьютерную сеть. По назначению выделяют: файл сервер предназначен для хранения и архивации файлов; сервер печати предназначен для управления одним или несколькими принтерами; почтовый сервер предназначен для хранения и обработки электронной почты;
факс сервер предназначен для управления одним или несколькими факсами; телефонный сервер обычно обеспечивает связь между телефонной сетью и сетью Интернет; прокси сервер предназначен для обеспечения эффективной работы клиента в сети (например, в Интернет через прокси-сервер все пользователи некоторой локальной сети могут иметь доступ в Интернет используя один IP-адрес); сервер удаленного доступа обеспечивает доступ к компьютерной сети через модемные или другие линии связи; сервер приложений сервер, обеспечивающий выполнение специфических программ, необходимых для конкретной группы пользователей; игровой сервер обеспечивает выполнение сетевых игр; веб сервер обеспечивает доступ и манипулирование HTMLдокументами в сети Интернет. сервер баз данных обеспечивает доступ и манипулирование к базам данных. Сетевые устройства: хабы (hub) предназначены для организации рабочей группы; мосты (bridge) предназначены для соединения двух сегментов сети и локализации трафика в пределах каждого из них; переключатели (switch) предназначены для соединения нескольких сегментов локальной вычислительной сети; маршрутизатор (роутер) предназначен для объединения нескольких сетей различной конфигурации. Классификация компьютерных сетей Компьютерный сети можно классифицировать по ряду признаков. По размеру, охваченной территории выделяют: Локальные сети (LAN, Local Area Network). Территориальные сети (MAN, Metropolitan Area Network). Глобальные вычислительные сети (WAN, Wide Area Network). По типу сетевой топологии встречаются: Шина. Звезда. Кольцо. Решётка. Смешанной топологии.
По архитектуре сети распределяют на: одноранговые (peer-to-peer), все компьютеры в сети одинаковые; клиент/сервер, когда часть компьютеров являются серверами, а другая – клиентами. Модель взаимодействия «клиент/сервер» предполагает, что сервер находится в пассивном состоянии ожидания запроса клиентов. Клиент находится в активном состоянии, инициирует обращение к серверу на обслуживание. Затем клиент ждет ответа на посланный запрос, в то время как последний обрабатывается сервером. 1.2 Протоколы Протоколом в компьютерных сетях называют набор правил для специфического типа связи. Для обеспечения обмена данными между узлами сети необходимо выполнить следующие действия: 1) произвести пакетирование данных; 2) определить пути пересылки данных; 3) осуществить физическую пересылку; 4) регулировать скорости пересылки данных; 5) обеспечить полную сборку полученных данных, без потерянных частей; 6) осуществить проверку полученных данных на наличие дублированных фрагментов; 7) информировать отправителя о том, сколько было успешно передано данных; 8) обеспечить пересылку данных в нужное приложение; 9) произвести обработку ошибок. В результате выполнения этих операций программное обеспечение существенно усложняется. Разбивая соответствующие действия по уровням, и записывая их в виде правил, получаем 7 уровневую модель взаимосвязи открытых компьютерных сетей (OSI) (табл. 1.1). Интернет – всемирная система добровольно объединённых компьютерных сетей, построенная на использовании протокола IP и маршрутизации пакетов данных. Интернет образует глобальное информационное пространство, служит физической основой для Всемирной паутины и множества систем (протоколов) передачи данных. Таблица 1.1
Уровень | Определение | Протоколы |
Физический | Обеспечивает передачу | ISDN |
информации в виде фи- | RS-232 | |
зических сигналов |
Канальный | Обеспечивает форми- | Ethernet |
рование и передачу | Token ring | |
кадров | Fibre Channel | |
HDLC | ||
Сетевой | Обеспечивает управле- | ICMP |
ние передачей пакетов | IP | |
через промежуточные | IPX | |
узлы сети | ||
Транспортный | Обеспечивает управле- | SPX |
ние передачей данными | TCP | |
между оконечными | UDP | |
пунктами компьютер- | RTCP | |
ной сети | ||
Сеансовый | Обеспечивают под- | DNS |
держание сеанса связи, | FTP | |
Презентационный | позволяя приложениям | Gopher |
Прикладной | взаимодействовать | HTTP |
между собой длитель- | IMAP | |
ное время. | IRC | |
LDAP | ||
NTP | ||
NNTP | ||
POP3 | ||
SSH | ||
SMTP | ||
Telnet | ||
SNMP | ||
РРР |
1.3 Адреса и имена Каждый сетевой узел должен иметь имя и адрес. Стратегия присваивания адресов и имен позволяет делегировать соответствующие полномочия. Схема имен и адресов Интернета позволяет: делегировать присвоение имен и адресов; именам отражать логическую структуру организации; присваивать адреса, отражающие топологию физической сети. Иерархическая структура имен, например, ie.tusur.ru , состоит в следующем ie – кафедра, tusur – организация, ru – Российский домен. В протоколе IP используются IP-адреса, которые идентифицируют рабочие станции, сервера и маршрутизаторы. IP-адрес должен быть уникальным. Соответствие между именем и IP-адресом узла сети осуществля-
ется с помощью специальных баз данных, хранящих пару имя-адрес. IPадрес представлен четырьмя октетами. Например, 191.200.182.101. IP протокол – это протокол сетевого уровня, обеспечивающий маршрутизацию данных в Интернете. Взаимодействия в сети могут быть: 1) без установки соединения, например, как при отправке почтового письма, написал адрес и отправил письмо; 2) с установкой соединения, как в телефоне, позвонил, получил ответ, сделал запрос, получил ответ и т.д. закрыл соединение. Кроме того, передача данных по сети может быть гарантированной или негарантированной. 1.4 Основные протоколы транспортного уровня UDP и TCP В таблице 1.2 показаны основные протоколы транcпортного уровня UDP и TCP. Таблица 1.2 – Основные протоколы транcпортного уровня UDP и TCP
UDP | TCP |
User Datagram Protocol | Transmission control protocol |
Не устанавливает соединения | Устанавливает соединение |
Не гарантирует получение | Гарантирует получение |
Посылает сообщение | Устанавливает потокоориентиро- |
ванную передачу данных | |
Простота организации | Сложность организации |
Имеет преимущества для широко- | Хорошо интегрируется в модель |
вещательных и многоадресных рас- | “клиент-сервер” |
сылок | |
1.5 Основные службы TCP/IP |
Выделяются следующие основные службы TCP/IP: 1. Пересылка файлов осуществляется на основе протокола FTP (File Transfer Protocol). FTP обеспечивает доступ к удаленной файловой системе и позволяет переименовывать, удалять и копировать файлы и каталоги. 2. Удаленный доступ к компьютеру Telnet. 3. Электронная почта. Один из самых распространенных протоко- лов простой протокол пересылки почты SMTP (Simple Mail Transfer Protocol). 4. Всемирная паутина WWW ( World Wide Web) . 5. NFS (Network File System) – сетевая файловая система. Обеспечивает доступ клиента к файлу, в таком режиме, если бы файл располагался на компьютере клиента. 6. Новости. Приложения, работающие с новостями для обслуживания локальных досок объявлений BBS (Bulletin Board System).