Вы находитесь на странице: 1из 26

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

Московский авиационный институт


(национальный исследовательский университет)

Кафедра 304

Курсовая работа
по дисциплине:
«Технологии Cisco»
На тему «Проектирование клиент-серверного приложения»

Выполнила:
студентка группы 30-409Б
Третьякова Д.С.
Принял:
К.т.н., доцент каф. 304 Чугаев Б.Н.

подпись преподавателя

Москва 2019
Московский авиационный институт
(национальный исследовательский университет)
«МАИ»
Факультет №3
Кафедра 304

ЗАДАНИЕ на курсовую работу


по дисциплине «Технологии Cisco»

Студентке 3О-409Б Третьяковой Дарье Сергеевне


1. Тема: Разработка клиент-серверного приложения

2. Перечень вопросов, подлежащих разработке:


a. Обзор оборудования Cisco.
b. Проектирование приложения для сервера.
c. Проектирование приложения для клиента.
d. Анализ полученных результатов.

Срок начала: 14.02.2019


Срок окончания: 06.05.2019

Студентка
гр.3О-409Б: Третьякова Д.С. дата ________ подпись ________

Руководитель
курсовой работы: Чугаев Б.Н. дата ________ подпись ________
Введение

В настоящее время наблюдается бурный количественный и качественный


рост компьютерных сетей. Эта тенденция, которая очевидно сохранится в
ближайшие десятилетия, хорошо иллюстрируется беспрецедентным ростом
сети Интернет, охватившей все страны мира. Локальные компьютерные сети,
являющиеся основой автоматизации деятельности предприятий и фирм, и
распределенные сети, охватывающие города, регионы и континенты,
проникли во все сферы человеческой деятельности, включая экономику,
науку, культуру, образование, промышленность и т.д.
Современные компьютерные сети обеспечивают пользователям широкий
набор услуг, включая электронную почту, передачу факсимильных и
голосовых сообщений, работу с удаленными базами данных в реальном
масштабе времени, службу новостей и другие услуги.
Быстрый рост числа компьютерных сетей, успехи в развитии
оптоволоконных и беспроводных средств связи, сопровождаются
непрерывной сменой сетевых технологий, направленной на повышение
быстродействия и надежности сетей, возможности интегрированной
передачи данных, голоса и видеоинформации.
В святи с этим возникает проблема передачи информации через сеть.
Каждый разработчик своей системы пытается обеспечить максимальную
производительность при минимальном количестве переданной информации.
При роботе с информацией в сети Интернет используются сервера -
накопители информации и обработчики различных поступающих данных,
которые постоянно работают в режиме Online. Но для этого необходимы
системы и программы для передачи информации с клиента на сервер, как
администраторские, так и пользовательские.

Обзор оборудования Cisco


Многие современные организации среднего бизнеса все чаще выбирают
продукцию Cisco для организации своих корпоративных сетей. Сетевые
устройства компании Cisco Systems давно заслужили репутацию
надежнейших и эффективных систем.

При организации IT-инфраструктуры важно определить, что и как будет


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

Сегодня трудно себе представить IT-инфраструктуру, не использующую


сеть.
Основное назначение любой сетевой инфраструктуры – организовать
эффективную связь для совместной работы сотрудников. Часто
эффективность совместной работы зависит от различных факторов.
Рассмотрим на что здесь влияет сетевое оборудование.

Одним из важнейших элементов современной сетевой инфраструктуры


являются коммутаторы доступа. Это как раз то самое оборудование, которое
создает возможность работать в единой сети.

Коммутаторы доступа Cisco

Компания Cisco Systems предлагает множество линеек коммутаторов.


Однако самыми распространенными являются коммутаторы Cisco Catalyst
2960.

Рисунок 1. Оборудование Cisco для организации сети

Эти устройства пользуются заслуженной популярностью у пользователей,


поскольку представляют собой удачное сочетание надежности, цены и
функционала. Эти устройства способны полностью удовлетворить
потребности небольшого предприятия. Если сравнивать возможности этого
оборудования с другими решениями Cisco, их функционал, может быть, и не
будет самым широким. Но при сопоставлении этих коммутаторов с
предложениями от ближайших конкурентов оказывается, что базовый
функционал устройств Cisco заметно выигрывает. Один из ключевых
принципов компании Cisco Systems – доступность высоких технологий для
рядовых потребителей. При необходимости, если базового функционала этих
коммутаторов не хватает, всегда можно добавить некоторое количество
коммутаторов старших моделей.
Коммутаторы Cisco 100 Мб/с

Для обеспечения связи на скорости 100 Мб/с компания предлагает


устройства линейки Catalyst 2960 Plus. Главным достоинством этих
устройств является их цена.

На рисунке представлены устройства этой серии.

Рисунок 2. Коммутаторы серии Cisco Catalyst 2960 Plus

Наиболее популярны в этой линейке модели WS-C2960+24PC-L и WS-


C2960+48PST-L. Коммутаторы комплектуются портами доступа 100 Мб/с,
двумя аплинками (медь/оптоволокно) по 1 Гб/с. Поддерживается технология
PoE.

Компактные коммутаторы Cisco

Если проанализировать цены представленных на рынке устройств, то можно


заметить, что брать устройство на 48 портов выгоднее, чем на 24 и менее. В
пересчете на 1 порт такие устройства обходятся дешевле, а кроме того можно
сэкономить место в стойке. Однако, часто бывает, что в таком большом
количестве портов просто нет необходимости. Достаточно 8 или 12,
например, когда надо соединить два соседних кабинета.

В этом случае подойдут коммутаторы Catalyst Compact. Эта серия включает в


себя коммутаторы второго уровня, базирующиеся на Catalyst 2960 и
коммутаторы третьего уровня на базе Catalyst 3560, которые поддерживают
технологию PoE на портах доступа. Эти устройства могут получать питание
через витую пару и аплинки. На рисунке ниже представлены изображения
этих устройств.

Рисунок 3. Компактные коммутаторы


серий Cisco Catalyst 2960- C и Cisco Catalyst 3560- C
С использованием этих устройств можно оперативно развернуть сеть в
любом помещении, начиная от переговорной, до конференц-зала. Эти
устройства обеспечивают до 100 дополнительных метров, покрытых медным
кабелем, что позволяет сэкономить на оптических подключениях.

Коммутаторы Cisco уровня агрегации

Для подключения к сети 250 человек потребуется не менее 6 коммутаторов.


Чаще всего от простого соединения их между собой отказываются, причина
тому в основах дизайна современных сетевых инфраструктур.

Обычно устройства подключаются к коммутатору агрегации, которые


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

Кроме того, применяя коммутаторы агрегации появляется возможность


экономии на дорогом функционале (например, уровня 3), потому что в таком
случае эти функции достаточно приобрести для коммутатора уровня
агрегации, без применения их на коммутаторах уровня доступа.

Традиционно сложилось, что в качестве устройств агрегации чаще всего используют


коммутаторы Catalyst 3750. Они до сих пор актуальны в этом качестве, но компания
может предложить и новые линейки, более производительные и функциональные. При
выборе коммутаторы для уровня агрегации стоит рассмотреть модели WS-C3650-24PS-E
(для агрегации только медных подключений) и WS-C3850-24S-S (для агрегации медных и
оптических подключений).

Рисунок 4. Коммутатор Cisco


Рисунок 5. Коммутатор Cisco
Catalyst 3650
Catalyst 3850
Наиболее универсальные модели для различных задач
Исходя из необходимых требований для сети внутри предприятия стоит
выбрать следующие коммутаторы:

 Коммутаторы уровня доступа, 100 Мб/с: серия Cisco Catalyst 2960 Plus
 Коммутаторы уровня доступа/агрегации, 1 Гб/с: серия Cisco Catalyst
2690-X, 2960-XR.
 Компактные коммутаторы уровня доступа: серия Cisco Catalyst
Compact.
 Коммутаторы уровня агрегации, 1 Гб/с: серии Cisco Catalyst 3750, Cisco
Catalyst 3650, Cisco Catalyst 3850.
 Коммутатор уровня ядра, 1/10 Гб/с: Cisco Catalyst 4500-X.
 Модульные коммутаторы уровня агрегации и ядра, 1/10 Гб/с: серия
Cisco Catalyst 4500E.

Технология «Клиент – сервер»


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

Со временем малофункциональную модель файлового сервера для


локальных сетей (FS) заменили появившиеся одна за одной модели
структуры «Клиент- сервер» (RDA, DBS и AS).

Заняв нишу баз данных, технология «Клиент – сервер» стала основной


технологией глобальной сети Internet. Далее, в результате перенесения
идей сети Internet в среду корпоративных систем, появилась технология
Intranet. В отличие от технологии «Клиент-сервер» эта технология
ориентирована не на данные, а на информацию в ее окончательно готовом
к потреблению виде. Вычислительные системы, построенные на основе
Intranet, имеют в своем составе центральные серверы информации и
распределенные компоненты представления информации конечному
пользователю (программы-навигаторы, или браузеры). Взаимодействие
между клиентом и сервером в Intranet происходит при помощи web –
технологий.
На сегодняшний день технология «Клиент-сервер» получает все большее
распространение, однако сама по себе она не предлагает универсальных
рецептов. Она лишь дает общее представление о том, как должна быть
организована современная распределенная информационная система. В то
же время реализации этой технологии в конкретных программных
продуктах и даже в видах программного обеспечения различаются весьма
существенно.

Классическая двухуровневая архитектура «Клиент – сервер»


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

Технология «Клиент – сервер» - это архитектура программного


комплекса, в которой происходит распределение прикладной программы
по двум логически различным компонентам (клиент и сервер),
взаимодействующим по схеме «запрос-ответ» и решающим свои
определенные задачи (рисунок 6).

Рисунок 6. Архитектура «Клиент – сервер»

Компьютер (или программа), управляющий и/или владеющий каким-либо


ресурсом, называют сервером этого ресурса.

Компьютер (или программа), запрашивающий и пользующийся каким-


либо ресурсом, называют клиентом этого ресурса.

Клиент и сервер могут находиться как на одном компьютере (ПК), так и


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

Основной принцип технологии «Клиент-сервер» заключается в


разделении функций приложения как минимум на три группы:
- модули интерфейса с пользователем;

Также эту группу называют логикой представления. Через эту группу


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

- модули хранения данных;

Эту группу также называют бизнес-логикой. Бизнес-логика определяет,


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

- модули обработки данных (функции управления ресурсами);

Эту группу также называют логикой доступа к данным или алгоритмами


доступа к данным. Алгоритмы доступа к данным исторически
рассматривались как специфический для конкретного приложения
интерфейс к механизму постоянного хранения данных наподобие
файловой системы или СУБД. При помощи модулей обработки данных
организуется специфический для приложения интерфейс к СУБД. При
помощи интерфейса приложение управляет соединениями с базой данных
и запросами к ней (перевод специфических для конкретного приложения
запросов на язык SQL, получение результатов и перевод этих результатов
обратно в специфические для конкретного приложения структуры
данных).

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


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

В соответствии с разделением функций в любом приложении выделяются


следующие компоненты:

- компонент представления данных;

- прикладной компонент;
- компонент управления ресурсом.

В классической архитектуре клиент-сервер приходится распределять три


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

В двухзвенной архитектуре при разбиении алгоритмов обработки данных


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

Чтобы избежать несогласованности различных элементов архитектуры


были созданы две модификации двухзвенной архитектуры «Клиент –
сервер»: «Толстый клиент» («Тонкий сервер») и «Тонкий клиент»
(«Толстый сервер»).

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


данных на одной из двух физических частей - либо на стороне клиента
(«Толстый клиент»), либо на сервере («Тонкий клиент).

Каждый подход имеет свои недостатки. В первом случае неоправданно


перегружается сеть, потому что по ней передаются необработанные, а
значит, избыточные данные. Кроме того, усложняется поддержка системы
и ее изменение, так как замена алгоритма вычислений или исправление
ошибки требует одновременной полной замены всех интерфейсных
программ, а иначе могут возникнуть ошибки или несогласованность
данных. Если же вся обработка информации выполняется на сервере, то
возникает проблема описания встроенных процедур и их отладки.
Систему с обработкой информации на сервере абсолютно невозможно
перенести на другую платформу (ОС), что является серьезным
недостатком.

Есди все-таки разрабатывается двухуровневая классическая архитектура


«Клиент – сервер», то необходимо помнить следующее:

- архитектура «Толстый сервер» аналогична архитектуре «Тонкий


клиент» (рисунок 7);
Рисунок 7. Архитектура «Тонкий клиент»

Передача запроса от клиента на сервер, обработка запроса сервером и


передача результата клиенту. При этом архитектуры имеют следующие
недостатки:

- усложняется реализация, так как языки типа SQL не приспособлены для


разработки подобного ПО и нет хороших средств отладки;

- производительность программ, написанных на языках типа SQL,


значительно ниже, чем созданных на других языках, что имеет важное
значение для сложных систем;

- программы, написанные на СУБД-языках, обычно работают


недостаточно надежно; ошибка в них может привести к выходу из строя
всего сервера баз данных;

- получившиеся таким образом программы полностью непереносимы на


другие системы и платформы.

- архитектура «Тонкий сервер» аналогична архитектуре «Толстый


клиент» (рисунок 8).

Обработка запроса происходит на стороне клиента, то есть происходит


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

- усложняется распределение полномочий, так как разграничение доступа


происходит не по действиям, а по таблицам;

- перегружается сеть вследствие передачи по ней необработанных данных;

- слабая защита данных, поскольку сложно правильно распределить


полномочия.

Рисунок 8. – Архитектура «Толстый клиент»

Для решения перечисленных проблем используются многоуровневые (три


и более уровней) архитектуры «Клиент-сервер».

Трехуровневая модель
С середины 90-х годов прошлого века признание специалистов получила
трехзвенная архитектура «Клиент – сервер», которая разделила
информационную систему по функциональным возможностям на три
отдельных компонента: логика представления, бизнес-логика и логика
доступа к данным. В отличие от двухзвенной архитектуры в трехзвенной
появляется дополнительное звено - сервер приложений, который
предназначен для осуществления бизнес-логики, при этом полностью
разгружается клиент, который направляет запросы промежуточному
программному обеспечению, и максимально используются все
возможности серверов.
В трехуровневой архитектуре клиент обычно не перегружен функциями
обработки данных, а выполняет свою основную роль системы
представления информации, поступающей с сервера приложений. Такой
интерфейс можно реализовать с помощью стандартных средств Web-
технологии - браузера, CGI и Java. Это уменьшает объем данных,
передаваемых между клиентом и сервером приложений, что позволяет
подключать клиентские компьютеры даже по медленным линиям типа
телефонных каналов. Кроме того, клиентская часть может быть настолько
простой, что в большинстве случаев ее реализуют с помощью
универсального браузера. Но если менять ее все-таки придется, то эту
процедуру можно осуществить быстро и безболезненно.

Программное обеспечение технологии «Клиент – сервер»


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

Для успешного применения технологии «Клиент-сервер» должно


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

Программное обеспечение, установленное на сервере для управления базой


данных, реагируя на запросы клиентов, начинает поиск информации. Как
часть системы «клиент-сервер» оно возвращает только результаты поиска.

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


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

Программное обеспечение сервера предусматривает и другие действия над


информацией: обновление, удаление, добавление, защита и так далее.

Также на сервере размещены хранимые процедуры (короткие,


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

Инструментальные средства, приложения и утилиты для интерфейсной части


дополняют возможности модели «Клиент-сервер». К ним относятся средства
запросов, которые упрощают доступ к данным сервера, используя
предопределенные запросы и встроенные возможности для построения
отчетов, пользовательские приложения, которые могут работать в качестве
интерфейсной части, предоставляя доступ к серверу базы данных. Другие
приложения (такие, как Microsoft Access) имеют свой собственный SQL,
который обеспечивает доступ к системам управления базами данных от
разных производителей. Для реализации систем «Клиент-сервер»
необходимы специально разработанные интерфейсные части. Средства
разработки программ (например, Microsoft Visual Basic) значительно
облегчают программистам и администраторам информационных систем
создание приложений, которые отвечают за доступ к серверам базы данных.

В зависимости от выбора операционной системы (ОС) и поставленных задач


определяется программное обеспечение. Так, если используется ОС
Windows, то на компьютере – клиенте обычно используется пакет Microsoft
Office, в состав которого входят текстовый процессор Word, табличный
процессор Excel, система подготовки презентаций PowerPoint, система
управления базами данных Access и программа управления информацией
Outlook

В связи с успехом распространения пакета Microsoft Office корпорация


Microsoft решила собрать комплекс программ для сервера –пакет MS
BackOffice. В состав названного пакета входят Windows Server – сетевая
операционная система, System Management Server – система
администрирования сети, SQL Server – сервер управления базами данных,
SNA Server – сервер для соединения с хост-компьютерами, Exchange Server –
сервер системы электронной почты и Internet Information Server – сервер для
работы с Internet.

Windows Server 2000/2003/2008 способна обеспечить совместное


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

В качестве сетевой операционной системы используют Windows


2000/2003/2008 Server, которую можно использоваться и на рабочей станции
для реализации дополнительных возможностей.

Windows Server 2000/2003/2008 обеспечивает совместное использование не


только множества процессов, но и ресурсов многими пользователями.
Возможность соединения с удаленными сетями реализуется через сервис
удаленного доступа – RAS (Remote Access Service), а также через средства
связи с сетями других фирм (Novell, Digital Pathworks и Apple).

System Management Server (SMS) позволяет сетевому администратору


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

SQL Server представляет собой систему управления реляционными базами


данных, использующую принципы технологии «Клиент-сервер». MS SQL
Server поддерживает систему обработки транзакций и механизм
распределенных транзакций, систему сохранения ссылочной целостности и
тиражирование данных.

SNA Server позволяет нескольким настольным ПЭВМ, работающим под


управлением различных операционных систем «видеть» хост-компьютеры.

Exchange Server обеспечивает средства передачи и приема сообщений в


информационной сети организации. Этот сервис включает электронную
почту (E-mail) и обмен информационными сообщениями для рабочих групп.
Microsoft Exchange Server построен на принципах технологии «Клиент-
сервер» и масштабируется в соответствии с возрастанием вычислительных
возможностей сети.

Internet Information Server обеспечивает возможность создания Web-, FTP- и


Gopher-серверов для сети Internet, поддерживает управление ими с помощью
встроенной программы Internet Service Manager.

Проектирование программ для клиента и сервера


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

Обзор сред разработки и выбор языка программирования


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

1. Microsoft Visual Studio


Microsoft Visual Studio является интегрированной средой разработки от компании
Microsoft. Это приложение позволяется разрабатывать веб-сайты, веб-приложения,
консольные приложения, а также приложения с графическим интерфейсом. В
основном эта система известна для написания приложений на .NET.Также
Microsoft Visual Studio включает в себя удобный редактор кода с
интеллектуальным автозаполнением, дизайнер графических форм, а также простую
навигационную систему. Существует несколько версий поставки Visual Studio:
Community Edition, Professional и Enterprise.

Community Edition является полностью бесплатной версией для отдельных


разработчиков с несколькими ограничениями:

 Ограничены возможности тестирования (нет тестов производительности)


 Нет системы контроля версий
2. Eclipse
Данная среда разработки является абсолютно бесплатной и имеет открытый
исходный код. Особенностями данной системы является ее кроссплатформенность
и множество поддерживаемых языков программирования.

Основным элементом Eclipse является исполняющая среда Eclipse Runtime, которая


обеспечивает вся базовую функциональность: управление обновлениями и
взаимодействие с ОС. Также Eclipse содержит саму среду разработки, которая
отвечает за управление основными системами программы. К минусам Eclipse
можно отнести отсутствие интеллектуального редактора кода и медленная
компиляция приложения.

3. NetBeans
NetBeans является бесплатной интегрированной средой разработки с открытым
исходным кодом. Данная среда поставляет все необходимые средства для создания
как мобильных приложений, так и приложений для персональных компьютеров.
Поддерживает множество языков программирования, например, Java, C/C++, PHP,
Ruby и т.д. К плюсам данной среды разработки можно отнести:

Наличие проверки ошибок во время ввода в редакторе ввода и автозаполнение

Редактор может вставлять в исходный код сгенерированные стандартные


фрагменты кода на поддерживаемых языках.

К минусам NetBeans можно отнести большое потребление оперативной памяти и


отсутствие справки для поддерживаемых языков.
Для того, чтобы определиться с выбором среды разработки необходимо выбрать язык
программирования.
В качестве основного языка программирования в моей программе был выбран язык C#,
так как приложения, написанные на нем, имеют высокую производительность и работают
на всех операционных системах, а также имеется множество расширений и
дополнительных библиотек для написания приложений на C#.
Таким образом, наиболее удачной для данного проекта является использование
интегрированной системы разработки Microsoft Visual Studio.

Описание используемой среды разработки

Интегрированная среда разработки Microsoft Visual Studio является средой запуска,


которая позволяет редактировать, отлаживать или создавать код. Visual Studio включает в
себя редактор кода, отладчик, компилятор, средства выполнения кода, графические
конструкторы и т.д.
Системные требования для Visual Studio 2015 Community Edition:

Поддерживаемые операционные системы:

 Windows 7 с пакетом обновления 1;


 Windows 8;
 Windows 8.1;
 Windows Server 2008 R2 с пакетом обновления 1 (SP1);
 Windows Server 2012: ;
 Windows Server 2012 R2;
 Windows 10.

Требования к оборудованию:

 Процессор с частотой 1.6 ГГц (или выше);


 1 Гб оперативной памяти (1,5 ГБ при работе на виртуальной машине);
 6 Гб свободного пространства на жестком диске;
 Жесткий диск (5400 об/мин);
 Видеоадаптер с поддержкой DirectX 9, минимально допустимое разрешение экрана
- 1024 x 768.

После запуска среды разработки появляется начальное окно, которое дает возможность
создать новый проект или открыть уже существующий, а также содержит сведения об
обновлениях и новых возможностях Visual Studio.
Рисунок 9. – Начальное окно Visual Studio
Для того, чтобы создать новый проект необходимо на начальном экране выбрать «New
Project».
После этого откроется диалоговое окно «New Project», в котором необходимо выбрать
язык программирования и тип приложения, которое необходимо создать, а также дать имя
проекту и указать его место расположения на диске.

Рисунок 10. – Окно создания нового проекта


После нажатия на кнопку «OK», будет создан проект.
В обозревателе решений отображается графическое представление иерархии файлов в
проекте, в нем также можно переходить к нужным файлам путем нажатия на него дважды
левой кнопкой мыши.

Рисунок 11. – Обозреватель решений.


В верхней части окна Visual Studio сгруппированы различные команды по категориям,
например, «Проект», «Инструменты», «Параметры» и т.д.

Рисунок 12. – Меню Visual Studio


Окно «Список ошибок», которое содержит ошибки и предупреждения в текущем коде
расположен внизу окна Visual Studio.

Рисунок 13. – Окно «Список ошибок»


Для создания консольного приложения на языке С++ необходимо создать проект с
заданными параметрами, написать код программы и собрать приложение. Сборка кода
осуществляется с помощью команды «Собрать решение» в меню «Сборка» или с
помощью клавиши F7.
Рисунок 14. – Меню «Сборка»
Отладка приложения запускается с помощью команды «Начать отладку» в меню
«Отладка» или с помощью клавиши F5.

Рисунок 15. – Меню «Отладка»


После этого запускается отладчик, который выполнит код. В результате чего, можно
проверить работу написанной программы и скорректировать ее, если потребуется.
Для упрощенной отладки приложения удобно использовать точки остановки. Для
создания точки остановки необходимо в меню «Отладка» необходимо выбрать пункт
«Переключить точку остановки». После этого рядом с выбранной строкой кода слева
появится красный кружок, информирующий о том, что здесь будет точка остановки.
После отладки приложения необходимо подготовить окончательную сборку. Из
выпускной сборки удалена вся информация, относящаяся к отладке, а также используются
параметры оптимизации компилятора для создания более быстро выполняемого кода
меньшего размера. Для очистки от лишней информации используется команда «Очистить
решение» меню «Сборка». Для того, чтобы сменить конфигурацию приложения, на
панели инструментов стоит сменить Debug на Release.
Рисунок 16. – Смена конфигурации приложения
После всех проделанных действий получается приложение, которое можно запустить в
любом окне командной строки.

Проектирование клиент-серверного приложения на сокетах


TCP
Рассмотрим, как создать сервер, работающий по протоколу TCP, с помощью сокетов.
Общая схема работы серверного сокета TCP будет следующей:

Рисунок 16. - схема работы серверного сокета TCP

Код программы будет выглядеть следующим образом:

using System;
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace SocketTcpServer
{
class Program
{
static int port = 8005; // порт для приема входящих
запросов
static void Main(string[] args)
{
// получаем адреса для запуска сокета
IPEndPoint ipPoint = new
IPEndPoint(IPAddress.Parse("127.0.0.1"), port);

// создаем сокет
Socket listenSocket = new
Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
try
{
// связываем сокет с локальной точкой, по
которой будем принимать данные
listenSocket.Bind(ipPoint);

// начинаем прослушивание
listenSocket.Listen(10);

Console.WriteLine("Сервер запущен. Ожидание


подключений...");

while (true)
{
Socket handler = listenSocket.Accept();
// получаем сообщение
StringBuilder builder = new StringBuilder();
int bytes = 0; // количество полученных
байтов
byte[] data = new byte[256]; // буфер для
получаемых данных

do
{
bytes = handler.Receive(data);

builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (handler.Available > 0);

Console.WriteLine(DateTime.Now.ToShortTimeString() + ": " +


builder.ToString());

// отправляем ответ
string message = "ваше сообщение
доставлено";
data = Encoding.Unicode.GetBytes(message);
handler.Send(data);
// закрываем сокет
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}

Вначале после создания сокета связываем его с локальной точкой методом Bind:
listenSocket.Bind(ipPoint);
Сокет будет прослушивать подключения по 8005 порту на локальном адресе 127.0.0.1. То
есть клиент должен будет подключаться к локальному адресу и порту 8005.

Далее начинаем прослушивание:


listenSocket.Listen(10);
Метод Listen вызывается только после метода Bind. В качестве параметра он принимает
количество входящих подключений, которые могут быть поставлены в очередь сокета.
После вызова метода Listen начинается прослушивание входящих подключений, и если
подключения приходят на сокет, то их можно получить с помощью метода Accept:
Socket handler = listenSocket.Accept();
Метод Accept извлекает из очереди ожидающих запрос первый запрос и создает для его
обработки объект Socket. Если очередь запросов пуста, то метод Accept блокирует
вызывающий поток до появления нового подключения.

Для обработки запроса сначала в цикле do..while получаем данные с помощью метода
Receive:
do
{
bytes = handler.Receive(data);
builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (handler.Available > 0);
Метод Receive в качестве параметра принимает массив байтов, в который считываются
полученные данные, и возвращает количество полученных байтов.

Если отсутствуют данные, доступные для чтения, метод Receive блокирует вызывающий
поток до тех пор, пока не станут доступны данные, если не было установлено значение
тайм-аута путем использования объекта Socket.ReceiveTimeout. Если значение тайм-аута
было превышено, объект Receive выдаст исключение SocketException. Чтобы отследить
наличие данных в потоке, используется свойство Available.

После получения данных клиенту посылается ответное сообщение с помощью метода


Send, который в качестве параметра принимает массив байтов:
handler.Send(data);
В конце обработки запроса надо закрыть связанный с ним сокет:
handler.Shutdown(SocketShutdown.Both);
handler.Close();
Вызов метода Shutdown() перед закрытием сокета гарантирует, что не останется никаких
необработанных данных. Этот метод в качестве параметра принимает значение из
перечисления SocketShutdown:
Both: остановка как отправки, так и получения данных сокетом

Receive: остановка получения данных

Send: остановка отправки данных

Теперь добавим проект для клиента. Общая схема работы клиента на сокетах будет
немного отличаться:

Рисунок 17. Схема работы клиента


Полный код клиента:
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;

namespace SocketTcpClient
{
class Program
{
// адрес и порт сервера, к которому будем подключаться
static int port = 8005; // порт сервера
static string address = "127.0.0.1"; // адрес сервера
static void Main(string[] args)
{
try
{
IPEndPoint ipPoint = new
IPEndPoint(IPAddress.Parse(address), port);

Socket socket = new


Socket(AddressFamily.InterNetwork, SocketType.Stream,
ProtocolType.Tcp);
// подключаемся к удаленному хосту
socket.Connect(ipPoint);
Console.Write("Введите сообщение:");
string message = Console.ReadLine();
byte[] data =
Encoding.Unicode.GetBytes(message);
socket.Send(data);

// получаем ответ
data = new byte[256]; // буфер для ответа
StringBuilder builder = new StringBuilder();
int bytes = 0; // количество полученных байт

do
{
bytes = socket.Receive(data, data.Length,
0);

builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
}
while (socket.Available > 0);
Console.WriteLine("ответ сервера: " +
builder.ToString());

// закрываем сокет
socket.Shutdown(SocketShutdown.Both);
socket.Close();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.Read();
}
}
}
Для клиента характерно все то же самое, только теперь после создания сокета вызывается
метод Connect(), в который передается адрес сервера:

IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse(address), port);


socket.Connect(ipPoint);
Теперь запустим программы сервера и клиента. Консоль клиента:

Консоль сервера:

Вывод
Наиболее бурно развивающимся направлением в области информационных технологий в
последние годы стала разработка программного обеспечения на основе архитектуры
клиент-сервер, связанного с сетью Internet и системами Intranet, опирающегося на Web-
технологию и язык Java. Объектные, распределенные технологии консорциумов OMG и
ODMG интегрируются в общие тенденции, расширяя и обобщая их. Примечательно, что
все ведущие производители систем Internet/Intranet, включая Sun, IBM, Netscape,
Microsoft, встраивают в свои продукты поддержку КС совместимых протоколов.

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

Вам также может понравиться