Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Средства разработки клиентских программ (Языки С/С++/С#)

Содержание:

ВВЕДЕНИЕ

В современных условиях в связи со стремительным развитием информационных технологий широко применяется автоматизация различных процессов посредством создания автоматизированных информационных систем. Автоматизированная информационная система (АИС) — это компьютерная система, предназначенная для хранения, поиска и обработки информации. Предназначена для своевременного обеспечения персонала надлежащей информацией, то есть для удовлетворения конкретных информационных потребностей в рамках определённой предметной области, при этом результатом функционирования информационных систем является информационная продукция — документы, информационные массивы, базы данных и информационные услуги. Одним из современных распространенных типов АИС являются клиент-серверные системы [5], в которых база данных и СУБД находятся на сервере, а на рабочих станциях находятся только клиентские приложения.

На сегодняшний день существуют десятки СУБД, написанных для различных платформ, а также множество языков программирования и интегрированных сред разработки для создания клиентских приложений. Выбор конкретной СУБД, языковых и инструментальных средств разработки приложений зависит от ряда условий.

Технология «клиент-сервер» [6] появилась относительно давно и продолжает развиваться в данное время, поэтому литература по данной тематике представлена трудами многих зарубежных и отечественных авторов. Имеется множество учебников, самоучителей по языкам программирования и созданию клиентских приложений. Также имеется множество статей, опубликованных на популярных интернет-сайтах. Вместе с этим, литературы, посвященной анализу и сравнению различных средств разработки, мало.

1. ТЕОРЕТИЧЕСКИЕ ОСНОВЫ КЛИЕНТСКИХ ПРОГРАММ

1.1 Понятие и назначение клиентских программ

Понятие «клиентская программа» возникло в связи с появлением технологии «клиент-сервер». Для того, чтобы дать определение понятию «клиентская программа», необходимо рассмотреть эту технологию [7].

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

Технологии «клиент-сервер» была разработана в 80-х годах прошлого века и стала основной технологией глобальной сети Интернет.

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

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

Преимуществами клиент-серверной технологии являются [9]:

- снижение нагрузки на клиентскую часть;

- высокая скорость обработки информации;

- безопасность данных и защита от несанкционированного доступа;

- отсутствие необходимости в системах хранения данных;

- передача по сети только запросов и ответов;

- масштабируемость;

- обеспечение пользователей качественным интерфейсом.

Благодаря этим преимуществам технология «клиент-сервер» получила большое распространение.

Однако технология «клиент-сервер» имеет и ряд недостатков, среди которых – необходимость переустановки клиентских программ при изменении логики приложений, при изменении интерфейса, а также, при использовании промышленной СУБД - необходимость приобретения лицензий на рабочие места.

Можно выделить три уровня функций, решаемые вычислительной сетью архитектуры «клиент-сервер» [10]:

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

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

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

Выполнение этих функций в основном обеспечивается следующими программными средствами:

- компонент представления отвечает за пользовательский интерфейс;

- прикладной компонент реализует алгоритм решения конкретной задачи;

- компонент управления ресурсом обеспечивает доступ к необходимым ресурсам.

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

Расположение компонентов на стороне клиента или сервера определяет следующие основные модели их взаимодействия в рамках двухзвенной архитектуры [10]:

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

- файл-сервер — доступ к удаленной базе данных и файловым ресурсам;

- сервер БД — удаленное представление данных;

- сервер приложений — удаленное приложение.

Двухзвенная архитектура показана на рис. 1.1.

Рисунок 1.1 - Двухзвенная клиент-серверная архитектура

Как правило, третьим звеном в трехзвенной архитектуре становится сервер приложений, т.е. компоненты распределяются следующим образом (рис. 1.2) [12]:

Представление данных — на стороне клиента.

Прикладной компонент — на выделенном сервере приложений (как вариант, выполняющем функции промежуточного ПО).

Управление ресурсами — на сервере БД, который и представляет запрашиваемые данные.

Рисунок 1.2 - Трехзвенная клиент-серверная архитектура

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

Высокую степень гибкости и масштабируемости.

Высокую безопасность (т.к. защиту можно определить для каждого сервиса или уровня).

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

API – это набор классов, процедур, функций и структур, обеспечивающих взаимодействие клиентов и серверов. Часто реализуется отдельной программной библиотекой или сервисом операционной системы. Используется программистами при написании всевозможных приложений. Если программу (модуль, библиотеку) рассматривать как чёрный ящик, то API — это множество «ручек», которые доступны пользователю данного ящика и которые он может вертеть и дёргать.

Таким образом, клиентская программа [13] – это программа, с которой непосредственно взаимодействует пользователь, посылающая запросы к базе данных, находящейся на сервере, и получающая ответы от сервера. В зависимости от типа клиент может выполнять или не выполнять обработку информации. Важную роль имеет интерфейс клиентской программы (пользовательский интерфейс), который включает [28]:

- средства отображения информации;

- средства взаимодействия программа-пользователь;

- устройства и технологии ввода данных;

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

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

- порядок использования программы и документацию на неё.

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

1.2 Основные виды клиентских программ

В зависимости от функциональных возможностей («толщины») клиентские программы принято подразделять на два вида: «тонкий» клиент и «толстый» клиент. Под толщиной понимается степень участия клиента в обработке информации. Оно определяет конфигурацию оборудования и программное обеспечение, имеющиеся у клиента. Рассмотрим возможные граничные значения [28]:

«Тонкий» клиент

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

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

«Толстый» клиент

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

В последнее время все чаще используется еще один термин: «rich»-client. «Rich»-клиент своего рода компромисс между «толстым» и «тонким» клиентом. Как и «тонкий» клиент, «rich»-клиент также представляет графический интерфейс, описываемый уже средствами XML и включающий некоторую функциональность толстых клиентов (например интерфейс drag-and-drop, вкладки, множественные окна, выпадающие меню и т.п.). Прикладная логика «rich»-клиента также реализована на сервере. Данные отправляются в стандартном формате обмена, на основе того же XML (протоколы SOAP, XML-RPC) и интерпретируются клиентом.

Таким образом [13], технология «клиент-сервер» обладает значительными преимуществами по сравнению с файл-серверной технологией, главными из которых являются высокая производительность, безопасность и масштабируемость. Имеется несколько типов серверов, среди которых можно назвать веб-серверы, серверы баз данных, серверы приложений, почтовые серверы. Примерами клиентов являются браузеры, мобильные приложения, пользовательские программы для доступа к базе данных. В зависимости от сложности клиенты подразделяются на «толстые» - обладающие возможность производить обработку данных самостоятельно, и «тонкие», служащие только для доступа к данным.

Развитие современных технологий AJAX, JavaScript, JSON-RPC, WebSocket позволили сайтам передать часть нагрузки по обработке информации компьютеру пользователя. Браузер клиента связывается с главным сервером по API и получает данные, фильтрует, показывает их пользователю. Таким образом, тонким клиентом по отношению к главному серверу, хранящему все данные, становится оболочка сайта и управляющий JavaScript-код.

Рассмотрим примеры клиентских программ [12]:

Веб-браузер — прикладное программное обеспечение для просмотра веб-страниц, содержания веб-документов, компьютерных файлов и их каталогов; управления веб-приложениями; а также для решения других задач. Примеры браузеров – Google Chrome, Internet Explorer, Mozilla Firefox, Яндекс Браузер. Распространяются бесплатно. В глобальной сети браузеры используют для запроса, обработки, манипулирования и отображения содержания веб-сайтов. Многие современные браузеры также могут использоваться для обмена файлами с серверами FTP, а также для непосредственного просмотра содержания файлов многих графических форматов (gif, jpeg, png, svg), аудио-видео форматов (mp3, mpeg), текстовых форматов (pdf, djvu) и других файлов. Сегодня имеется множество браузеров, и конкуренция между ними побуждает разработчиков к постоянной работе над их улучшением и расширением функциональных возможностей. Со времени начала применения браузеров во Всемирной паутине в начале 1990-х годов, из простого средства просмотра текстовой информации браузер превратился в комплексное прикладное программное обеспечение для обработки данных и обеспечения интерфейса между информационными ресурсами и человеком.

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

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

Мессенджер – это программа-клиент для обмена сообщениями в реальном времени через Интернет. Могут передаваться текстовые сообщения, звуковые сигналы, изображения, видео, а также производиться такие действия, как совместное рисование или игры. Многие из таких программ-клиентов могут применяться для организации групповых текстовых чатов или видеоконференций. Мессенджеры не работают самостоятельно, необходимо подключение к серверу. Широкому кругу пользователей известно некоторое количество популярных сетей (и клиентов) обмена сообщениями, таких как IRC, Skype, ooVoo, AIM, ICQ, MSN, Yahoo!, Jitsi, XMPP. Каждая из этих сетей разработана отдельной группой разработчиков, имеет отдельные серверы и протоколы, отличается своими правилами и особенностями. Между различными сетями обычно нет прямой связи (только в XMPP существует понятие межсетевого транспорта), таким образом, пользователь сети Skype не может связаться с пользователем сети ICQ, однако ничто не мешает быть одновременно пользователем нескольких сетей.

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

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

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

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

Антивирусная программа - специализированная программа для обнаружения компьютерных вирусов, а также нежелательных программ и восстановления заражённых такими программами файлов и профилактики — предотвращения заражения файлов или операционной системы вредоносным кодом.

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

2. ОСНОВНЫЕ ПРОГРАММНЫЕ СРЕДСТВА СОЗДАНИЯ КЛИЕНТСКИХ ПРОГРАММ

2.1 Языки программирования

Язык программирования - формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования [2] определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под ее управлением.

Со времени создания первых программируемых машин человечество придумало более двух с половиной тысяч языков программирования [2]. Каждый год их число увеличивается. Некоторыми языками умеет пользоваться только небольшое число их собственных разработчиков, другие становятся известны миллионам людей.

Для разработки программы, использующей обращение к СУБД, может быть использовано множество языков программирования. Рассмотрим некоторые из них, такие как Java, PHP, C/С++, Object Pascal.

2.1.1 Java

Java – объектно-ориентированный язык программирования. Язык был разработан в 1995 году и первоначально предназначался для программирования электронных бытовых устройств. В 2019 году является одним из самых популярных языков программирования [34].

Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) - программой, обрабатывающей байтовый код и передающей инструкции оборудованию как интерпретатор. Трансляция в байтовый код увеличивает скорость выполнения и уменьшает размер Java программ.

Достоинство подобного способа выполнения программ - в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание.

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

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее. С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++.

СУБД Oracle включает JVM как свою составную часть, обеспечивающую возможность непосредственного программирования СУБД на языке Java, включая, например, хранимые процедуры.

2.1.2 PHP

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

Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений, таких как [34]:

- автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;

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

- автоматизированная отправка HTTP заголовков;

- работа с HTTP авторизацией;

- работа с cookies и сессиями;

- работа с локальными и удалёнными файлами, сокетами;

- обработка файлов, загружаемых на сервер;

- работа с XForms.

PHP-скрипты, обычно, обрабатываются интерпретатором в порядке, обеспечивающем кроссплатформенность разработанного приложения.

Важной особенностью является то [28], что разработчику нет необходимости заботиться о распределении и освобождении памяти. Ядро PHP реализует средства для автоматического управления памятью; вся выделенная память возвращается системе после завершения работы скрипта.

Данный язык может быть использован также и при разработке GUI – приложений – приложений с графическим интерфейсом. Для создания кроссплатформенных приложений служат пакеты PHP-GTK и PHP-Qt.

2.1.3 Языки С/С++/С#

C++ - компилируемый статически типизированный язык программирования общего назначения. Поддерживая разные парадигмы [4] программирования, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником языком C, наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «C++» происходит от языка C, в котором унарный оператор ++ обозначает инкремент переменной.

Являясь одним из самых популярных языков программирования [4], C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигр). Существует несколько реализаций языка C++ - как бесплатных, так и коммерческих [24]. Их производят Проект GNU, Microsoft, Intel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

При создании C++ стремились сохранить совместимость с языком C. Нововведениями C++ в сравнении с C являются [29]:

- поддержка объектно-ориентированного программирования;

- поддержка обобщённого программирования через шаблоны;

- дополнительные типы данных;

- исключения;

- пространства имён;

- встраиваемые функции;

- перегрузка операторов;

- перегрузка имён функций;

- ссылки/операторы управления свободно распределяемой памятью;

- дополнения к стандартной библиотеке.

Достоинства языка С++ [26]:

1. Поддерживаются различные стили и технологии программирования, включая традиционное директивное программирование, ООП, обобщённое программирование, метапрограммирование (шаблоны, макросы).

2. Автоматический вызов деструкторов объектов при их уничтожении, причём в порядке, обратном вызову конструкторов.

3. Пользовательские функции-операторы позволяют кратко и ёмко записывать выражения над пользовательскими типами в естественной алгебраической форме.

4. Язык поддерживает понятия физической (const) и логической (mutable) константности. Это делает программу надёжнее, так как позволяет компилятору, например, диагностировать ошибочные попытки изменения значения переменной.

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

6. Кроссплатформенность.

7. Эффективность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы.

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

9. Высокая совместимость с языком C.

C# - объектно-ориентированный язык программирования [27, 32, 33]. Разработан как язык разработки приложений для платформы Microsoft.NET Framework. C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию [35], поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML. Переняв многое от своих предшественников - языков C++, Java, Delphi, Smalltalk язык С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# не поддерживает множественное наследование классов (в отличие от C++).

2.1.4 Object Pascal

Object Pascal - результат развития языка Турбо Паскаль [5], который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal - динамическую идентификацию типа данных с возможностью доступа к метаданным классов Отличительным свойством Object Pascal от С++ является то, что объекты по умолчанию располагаются в динамической памяти. Однако можно переопределить виртуальные методы NewInstance и FreeInstance класса TObject.

Object Pascal (Delphi) является результатом функционального расширения Turbo Pascal. Начиная с версии среды разработки Delphi 7, фирма Borland стала официально называть язык Object Pascal как Delphi.

Простота, скорость и эффективность Delphi объясняют ее популярность. Delphi имеет один из самых быстрых компиляторов, порождающий, тем не менее, весьма и весьма неплохой объектный код. Модель программирования в Delphi [19] - компонентная, что позволяет пользоваться компонентами, написанными другими разработчиками, даже не имея их исходного кода и уж подавно не изучая его. В Интернете есть огромное количество компонентов, значительная часть которых распространяется бесплатно. Применение компонентной модели приводит к тому, что довольно многое в поведении объектов программировать не нужно вообще, и многое, на что в других средах ушли бы недели, можно сделать за часы или даже минуты. К достоинствам можно отнести очень быстрый браузер классов и мгновенный вывод подсказки автозавершения кода (code completion).

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

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

- текстовый редактор;

- компилятор и/или интерпретатор;

- средства автоматизации сборки;

- отладчик.

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

Хотя, и существуют среды разработки, предназначенные для нескольких языков программирования - такие, как Eclipse, NetBeans, Embarcadero RAD Studio, Qt Creator или Microsoft Visual Studio, обычно среда разработки предназначается для одного определённого языка программирования - как, например, Visual Basic, Delphi, Dev-C++.

Рассмотрим такие среды разработки, как Eclipse, NetBeans, Delphi, Microsoft Visual Studio, Qt Creator.

2.2.1 Microsoft Visual Studio

Microsoft Visual Studio - интегрированная среда разработки компании Microsoft [30], позволяющая разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, а также веб-сайты и веб-приложения. Первая версия была выпущена в 1997 году, последняя версия – 18 апреля 2019 года [4]. Существует бесплатный аналог Visual Studio Professional - Visual Studio Community Edition, который обладает тем же функционалом. На данный момент выпущено множество редакций Visual Studio, например, Microsoft Visual Studio LightSwitch — это среда разработки, нацеленная на создание отрасли приложений, построенных на существующих .NET-технологиях и платформах Microsoft.

Visual Studio включает один или несколько компонентов из следующих:

- Visual Basic .NET, а до его появления — Visual Basic;

- Visual C++;

- Visual C# (включён начиная с Visual Studio .NET);

- Visual F# (включён начиная с Visual Studio 2010).

Многие варианты поставки [31] также включают Microsoft SQL Server либо Microsoft SQL Server Express.

В прошлом в состав Visual Studio также входили продукты:

- Visual InterDev;

- Visual J++;

- Visual J#;

- Visual FoxPro.

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

Встроенный Web-сервер. Для обслуживания Web-приложения ASP.NET необходим Web-сервер, который будет ожидать Web-запросы и обрабатывать соответствующие страницы. Наличие в Visual Studio интегрированного Web-сервера позволяет запускать Web-сайт прямо из среды проектирования, а также повышает безопасность, исключая вероятность получения доступа к тестовому Web-сайту с какого-нибудь внешнего компьютера, поскольку тестовый сервер может принимать соединения только с локального компьютера.

Поддержка множества языков при разработке. Visual Studio позволяет писать код на своем языке или любых других предпочитаемых языках, используя все время один и тот же интерфейс (IDE). Более того, Visual Studio также еще позволяет создавать Web-страницы на разных языках, но помещать их все в одно и то же Web-приложение. Единственным ограничением является то, что в каждой Web-странице можно использовать только какой-то один язык (очевидно, что в противном случае проблем при компиляции было бы просто не избежать).

Меньше кода для написания. Для создания большинства приложений требуется приличное количество стандартного стереотипного кода, и Web-страницы ASP. NET тому не исключение. Например, добавление Web-элемента управления, присоединение обработчиков событий и корректировка форматирования требует установки в разметке страницы ряда деталей. В Visual Studio такие детали устанавливаются автоматически.

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

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

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

Visual Studio также имеет и множество других функций [31]: возможность управления проектом; встроенная функция управления исходным кодом; возможность рефакторизации кода; мощная модель расширяемости. Более того, в случае использования Visual Studio 2008 Team System разработчик получает расширенные возможности для модульного тестирования, совместной работы и управления версиями кода (что значительно больше того, что предлагается в более простых инструментах вроде Visual SourceSafe).

В качестве недостатка [33] можно отметить невозможность отладчика (Microsoft Visual Studio Debugger) отслеживать в коде режима ядра. Отладка в Windows в режиме ядра в общем случае выполняется при использовании WinDbg, KD или SoftICE.

2.2.2 QT Creator

Qt Creator - кроссплатформенная свободная интегрированная среда разработки на языках С, С++ и QML. Разработана Trolltech (Digia) для работы с фреймворком Qt. Включает в себя графический интерфейс отладчика и визуальные средства разработки интерфейса как с использованием QtWidgets, так и QML [33]. Поддерживаемые компиляторы: GCC, Clang, MinGW, MSVC, Linux ICC, GCCE, RVCT, WINSCW. Рассмотрим особенности, преимущества и недостатки этой среды разработки.

В Qt Сreator реализовано автодополнение, в том числе ключевых слов, введённых в стандарте C++11, подсветка кода. Также есть возможность задания стиля выравнивания, отступов и постановки скобок.

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

- автогенерация пустого тела метода после его обновления;

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

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

Среда разработки имеет графический интерфейс для следующих отладчиков: GDB, CDB и QML/JavaScript.

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

Сравним Qt Creator с MS Visual Studio:

Преимуществами Qt Creator по сравнению с MS Visual Studio [33] являются:

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

2. Бесплатность. Можно скачать с официального сайта.

3. Кроссплатформенность. Qt Creator сам работает под различными ОС: Windows, GNU/Linux, OS X, BSD, и позволяет создавать приложения для этих платформ, а также для: Maemo 5, MeeGo Harmattan, Generic remote Linux, Symbian, Android.

4. Скорость работы: исследования, проводившиеся британскими учёными, показали, что Qt Creator 2.5 работает в среднем на 46% быстрее, чем Microsoft Visual Studio 2012.

5. Стабильность: те же исследования показали, что число системных ошибок, возникающих при работе с Qt Creator примерно на 42% меньше, чем в Visual Studio.

6. Размер установки: в ОС Windows Qt Creator с компилятором g++ (последних версий) занимает в 3,5 раза меньше места, чем Visual Studio последних версий.

7. Функция автодополнения работает лучше, поскольку она учитывает контекст, а также поддерживает нововведения C11 (стандарта языка С 2011 года) и C++11.

8. Возможность автоматического обновления через интернет.

Недостатки:

Бывают проблемы с исходниками, сохранёнными не в UTF8, а также разработкой в ОС (под ОС), поддерживающими UTF8 не полностью (например, Windows XP).

2.2.3 Eclipse

Первоначально Eclipse разрабатывалась фирмой IBM как преемник среды разработки IBM VisualAge, в качестве корпоративного стандарта IDE для разработки на разных языках под платформы IBM. По сведениям IBM, проектирование и разработка стоили 40 миллионов долларов. Исходный код был полностью открыт и сделан доступным после того, как Eclipse был передан для дальнейшего развития независимому от IBM сообществу.

В Eclipse 3.0 (2003 год) были выбраны спецификации сервисной платформы OSGi, как архитектура времени выполнения. С версии 3.0 Eclipse перестал быть монолитной IDE, поддерживающей расширения, а сам стал набором расширений. В основе лежат фреймворк OSGi и SWT/JFace, на основе которых разработан следующий слой -- RCP (Rich Client Platform, платформа для разработки полноценных клиентских приложений). RCP служит основой не только для Eclipse, но и для других RCP-приложений, например Azureus и File Arranger. Следующий слой -- сам Eclipse, представляющий собой набор расширений RCP -- редакторы, панели, перспективы, модуль CVS и модуль Java Development Tools (JDT).

Eclipse - в первую очередь полноценная Java IDE, нацеленная на групповую разработку: среда интегрирована с системами управления версиями -- CVS в основной поставке, для других систем (например, Subversion, MS SourceSafe) существуют плагины. В силу бесплатности и высокого качества, Eclipse во многих организациях является корпоративным стандартом для разработки приложений.

Второе назначение Eclipse -- служить платформой для разработки новых расширений, чем он и завоевал популярность: любой разработчик может расширить Eclipse своими модулями. Уже существуют C/C++ Development Tools (CDT), разрабатываемые инженерами QNX совместно с IBM, и средства для языков COBOL, FORTRAN, PHP и пр. от различных разработчиков. Множество расширений дополняет среду Eclipse менеджерами для работы с базами данных, серверами приложений и др.

Eclipse написана на Java, потому является платформонезависимым продуктом, за исключением библиотеки SWT, которая разрабатывается для всех распространённых платформ. Библиотека SWT используется вместо стандартной для Java библиотеки Swing. Она полностью опирается на низлежащую платформу (операционную систему), что обеспечивает быстроту и натуральный внешний вид пользовательского интерфейса, но иногда вызывает на разных платформах проблемы совместимости и устойчивости приложений.

2.2.4 Delphi

Delphi - среда программирования, в которой используется язык программирования Object Pascal [14]. Начиная со среды разработки Delphi 7.0, в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal.

Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows [16], затем был реализован также для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft.NET. При этом высказывались предположения, что эти два факта взаимосвязаны.

Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.

Также предпринимались попытки использования языка в проектах GNU и написания компилятора для GCC.

Среди многих распространённых программных продуктов, сделанные на Delphi, можно найти [17, 19]:

Продукция Embarcadero:

— Embarcadero Delphi, Embarcadero C++ Builder, Borland JBuilder 1 и 2 версии. Администрирование/разработка баз данных:

— MySQL Tools (Administrator, Query Browser), Navicat, IBExpert, TOAD (software).

— Инженерное ПО: Altium Designer/Protel, Ajuster (связь с устройствами, визуализация и хранение данных Modbus RTU, Modbus TCP/IP, Ajbus).

— ПО для химической отрасли: Продукты ACD/Labs.

— Просмотрщики графики: FastStone Image Viewer, FuturixImager, Photofiltre.

— Видео и аудио проигрыватели: The KMPlayer (не путать с KMPlayer), X-Player, Snow Player, AIMP.

— Доставка информации в Интернете: QIP и R&Q, Skype, The Bat! и si.Mail, PopTray, FeedDemon, XanaNews, Xnews, MIC (Magcomline Internet Communicator).

— Создание музыки: FL Studio (ранее FruityLoops), Guitar Pro (до версии 6.0).

— Разработка программного обеспечения: Dev-C++, Dev-PHP, Maguma Open Studio и Open Perl IDE (IDE), DUnit, Jedi Code Format, Game Maker, Help & Manual, Inno Setup.

— Веб-разработка: Macromedia HomeSite (HTML-редактор), TopStyle, Pro (CSS-редактор), Macromedia Captivate, Quick Page 2008.

— Веб-браузеры (оболочки для MSIE): Avant Browser, Netcaptor.

— Утилиты: Spybot -- Search & Destroy, Ad-Aware, jv16 PowerTools, FDK, Total Commander, Frigate, DarkCrypt TC/GUI, ImageSpyer, StegoTC, Copernic Desktop Search, MCubix, Download Master, ASProtect, XNResourceEditor, Victoria, Battery Eater Pro.

— Текстовые редакторы: SynEdit, BirEdit, Notepad GNU, Bred, KeyNote, cEdit Professional, UniRed, gleditor.

— Редакторы двоичных файлов (HEX-редакторы): Hexapad.

— Бухучёт и налогообложение: Lacerte Professional Tax Software, Капитал CSE, Парус, ТурбоБухгалтер, AVARDA, Комплекс VirGo 2.5М.

— Электронное декларирование и связь с госорганами: Альта ГТД PRO (подготовка и передача таможенных деклараций)

— Торговый и складской учёт: Полюс (Система учёта).

— Программы для чтения и каталогизации электронного текста: DarkLib, IxReader, Гарант F1.

— Электронные энциклопедии и справочники: De2

— Программы для создания анимаций: Pivot Stickfigure Animator.

— Программы для сжатия данных: ALZip, PowerArchiver, PeaZip.

— Компьютерные игры: Age of wonders, Космические рейнджеры, Космические рейнджеры 2, Venom. Codename: Outbreak, Space Empires 4, Space Empires V, Pythian project, Битва героев, GTA 2, Hedgewars, Правда о девятой роте.

— Бизнес-аналитика: BaseGroup Deductor

Delphi оказал огромное влияние на создание концепции языка C# для платформы.NET [23]. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Delphi, из компании Borland Ltd. в Microsoft Corp.

2.2.5 Android Studio

Android Studio — это интегрированная среда разработки для работы с платформой Android, вышедшая в 2013 году, в 2014 году вышла первая стабильная версия. Данная среда разработки доступна для ОС Windows, OS X, Linux. Официальные языки программирования – Java, C++, Kotlin.

Новые функции появляются с каждой новой версией Android Studio. На данный момент доступны следующие функции [23]:

1. Расширенный редактор макетов: WYSIWYG, способность работать с UI компонентами при помощи drag-and-drop, функция предпросмотра макета на нескольких конфигурациях экрана.

2. Различные виды сборок и генерация нескольких .apk файлов

3. Рефакторинг кода

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

5. Встроенный ProGuard и утилита для подписывания приложений.

6. Шаблоны основных макетов и компонентов Android.

7. Поддержка разработки приложений для Android Wear и Android TV.

8. Встроенная поддержка Google Cloud Platform, которая включает в себя интеграцию с сервисами Google Cloud Messaging и App Engine.

9. Android Studio 2.1 поддерживает Android N Preview SDK, а это значит, что разработчики смогут начать работу по созданию приложения для новой программной платформы.

10. Новая версия Android Studio 2.1 способна работать с обновленным компилятором Jack, а также получила улучшенную поддержку Java 8 и усовершенствованную функцию Instant Run.

11. Начиная с Platform-tools 23.1.0 для Linux исключительно 64-разрядная.

12. В Android Studio 3.0 будут по стандарту включены инструменты языка Kotlin основанные на JetBrains IDE.

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

В предыдущих разделах нами было рассмотрено пять популярных на сегодня интегрированных сред разработки, а также популярные языки программирования. Выбор того или иного средства зависит от назначения программы-клиента. Так, веб-приложения разрабатываются в основном на PHP, а язык С++.может быть использован для самых различных целей, от создания ОС до компьютерных игр. При создании сложных приложений могут быть использованы сразу несколько языков. Современные интегрированные среды разработки (ИСР) являются удобным инструментом, включая редактор кода, компилятор, отладчик и средства автоматизации ввода. Наиболее популярными ИСР на данный момент являются Microsoft Visual Studio, поддерживающий сразу несколько языков, и Qt Creator – свободно распространяемое, кроссплатформенное ПО, поддерживающее языки С и С++. Eclipse поддерживает язык Java. Для разработки мобильных приложений для ОС Android существует среда Android Studio. Среда Delphi, поддерживающая язык Object Pascal, широко используется для разработки клиентов для серверных СУБД.

Сравнительная характеристика интегрированных сред разработки (ИСР) приведена в табл. 2.1

Таблица 2.1 - Сравнительная характеристика ИСР

ИСР

свойства

MS Visual Studio

Qt Creator

Eclipse

Delphi

Android Studio

Поддержка языков

С++

С#, Visual Basic.NET

C++

C#, QML

Java, С/С++, PHP, JS

Object Pascal

Java

С/C++

Операционная система

Windows

кроссплатформенность

кроссплатформенность

Windows

Windows,

Назначение

разработка консольных приложений, веб-сайтов и веб-приложений, мобильных приложений

разработка настольных и мобильных приложений

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

разработка приложений для Linux, MacOS X, Windows CE

разработка мобильных приложений для ОС Android

Наличие бесплатной версии

+

+

+

+

+

Исходный код

закрыт

открыт

открыт

закрыт

закрыт

Требуемые навыки

для опытных разработчиков

для опытных разработчиков

для опытных разработчиков

подходит для начинающих

подходит для начинающих

Компоненты для работы с БД

+

+

+

+

-

Как видно из таблицы, наибольшими преимуществами обладает MS Visual Studio, что объясняет его первое место по популярности среди разработчиков. Однако эта среда сложна для начинающих разработчиков, то же самое можно сказать о Qt Creator. Начинающему разработчику при создании, например, приложения для работы с БД в учебных целях, лучше использовать Delphi.

ЗАКЛЮЧЕНИЕ

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

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

Существует множество языков программирования для разработки клиентских программ. Наиболее популярными являются C++, C#, PHP, Java, Delphi. Популярным средством для разработки приложений является интегрированная среда разработки (IDE), включающая текстовой редактор, отладчик, компилятор или интерпретатор. В последние годы популярность получили такие IDE. как Microsoft Visual Studio, Vim, Qt Creator, Eclipse, Android Studio.

При выполнении данной работы были решены следующие задачи:

- изучен принцип технологии «клиент-сервер»;

- рассмотрены основные виды программ-клиентов, примеры распространенных клиентов.

СПИСОК ЛИТЕРАТУРЫ

1. Броцдо В.Л., Ильина О.П. Вычислительные системы, сети и телекоммуникации. 3-е изд. – СПб.: Питер, 2008.

2. А.Г. Зотин, А.И. Пахирка, М.Н. Фаворская. Разработка клиентских приложений баз данных. – Красноярск, 2014.

3. develnext.org – Студия для быстрой разработки игр и программ. 05.10.2019.

4. wikipedia.org – Microsoft Visual Studio. 06.10.2019.

5. Журнал PCWEEK 30 сентября 1997 (65 стр).

6. Журнал PCWEEK 19 августа 1997 (20 стр).

7. Журнал ComputerWorld, статья Делерри Хелд «Где же этот хваленый универсальный сервер», 1997, 21 номер.

8. Кен Хендерсон, Руководство разработчика баз данных в Delphi 2.

9. Журнал LAN апрель 1995, Статья Дж. Салеми.

10. Журнал LAN декабрь 1995, Статья Билла Лазарья.

11. Журнал СУБД 1995г №4 стр. 50-57.

12. Dr. E.F. Codd «A Relational Model of Data for Large Share Data Banks», 1990.

13. Стивен Бобровски, Oracle 7 вычисление клиент/сервер.

14. С. Орлик, Секреты Delphi.

15. Сергей Дунаев, Borland технологии.

16. Эндрю Возневич, Освой самостоятельно Delphi.

17. А. Федоров, Создание Windows-приложений в среде Delphi.

18. Мартин Грабер, Введение в SQL.

19. А.М. Епанешников, Программирование в среде Delphi 2.0.

20. B.Ю. Баженова, Windows SQL.

21. В.В. Фаронов Библиотека Turbo Vision 6.0.

22. Справочник по функциям и процедурам Borland Pascal 7.0.

23. Подборка статей из эхо-конференции RU.DELPHI, RU.DELPHI.DB в сети FIDONET (от сентября по декабрь1997 года).

24. Агуров П. В. C#. Сборник рецептов / . - СПб.: БХВ-Петербург, 2007. - 411 с.

25. Буткевич Е. Пишем программы и игры для сотовых телефонов /Е. Буткевич. - СПб.: Питер, 2006. - 204 с: ил.

26. Дрейер М. C# для школьников: Учебное пособие / М. Дрейер. Перевод с англ. под ред. В. Биллига - М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2009. - 128 с.: ил., табл. - (Лицей информационных технологий).

27. Жарков, графика, мультимедиа и игры на Visual C# 2005 /. - М.: Жарков Пресс, 2005. - 812 с.

28. Зубкова, разработки программного обеспечения: Учебное пособие /. - Оренбург: ГОУ ОГУ, 2004. - 101 с.

29. Культин Н.Б. C# в задачах и примерах /. - СпБ.: БХВ-Петербург, 2007. - 241 с.

30. Лабор В.В. Си Шарп: Создание приложений для Windows / . - Мн.: Харвест, 2003. - 384 с.

31. Лунгу, программирование: Руководство к решению задач /. - М.: ФИЗМАТЛИТ, 2005. - 128 с.

32. Мак-Дональд, Мэтью. Microsoft 3.5 с примерами на C# 2008 для профессионалов, 2-е изд.: Пер. с англ. / Мак-Дональд, Мэтью, Шпушта Марио. - М.: ООО, 2008. - 1424 с.: ил.

33. С#. Программирование на языке высокого уровня: Учебник для вузов /. - СПб.: Питер, 2009. - 432 с: ил.

34. Степанченко, тестирования программного обеспечения: Учеб. пособие /. - Волгоград: ВолгГТУ, 2006. - 74 с.

35. Стефан, Рэнди Дэвис. C# 2005 для «чайников» / Стефан Рэнди Дэвис, Чак Сфер. - М.: ИД Вильямc, 2008. - 576 с.