Файл: Средства разработки клиентских программ (Архитектура клиент-сервер).pdf

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

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

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

Добавлен: 23.04.2023

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

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

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

gtk_widget_show(_window);

Эта функция принимает указатель типа Gtkwidget, поэтому нужно просто предостав­ить ссылку на свое окно.

Последним выполняется вызов функции gtk_main. Эта основная функция запус­кает процесс обмена информацией (interactivity process), передавая управление GTK+, и не возвращает его до тех пор, пока не будет выполнен вызов функции gtk_main_quit.

Рисунок 1 - Простейшей окно, созданное средствами GTK+.

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

Современные оконные системы имеют систему событий и приемники событий, кото­рым адресована эта задача. Общая идея основана на том, что любой пользовательский ввод как правило, при помощи мыши или клавиатуры инициирует событие. Перемещение мыши, например, вызывает "событие маши". Затем используется программный код, который будет ждать приема именно этого события и выполняться, в случае если оно возникнет.

Эти события генерирует система X Window System, но они мало помогут программисту GTK+, т. к. они очень низкоуровневые. Когда про­изводится щелчок кнопкой мыши, X порождает событие, содержащее координаты указателя мыши, а разработчику нужно знать, когда пользователь активизирует виджет [12].

У GTK+ есть собственная система событий и приемников событий, называемых сигналами и обратными вызовами. Их очень легко применять, поскольку для уста­новки обработчика сигнала можно использовать очень полезное свойство языка С, указатель на функцию.

Сигнал GTK+ порождается объектом типа GtkObject, когда происходит нечто, например, ввод пользователя. Функция, связанная с сигналом и, следовательно, вызываемая при любом порождении сигнала, называется функцией обратного вызова.

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


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

void a__callback_function (GtkWidget *widget, gpointer user_data) ;

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

Для связывания функции обратного вызова необходимо вызвать функцию g_signal_connect и передать ей виджет, имя сигнала в виде строки ASCII, указатель на функцию обратного вызова и произвольный указатель:

gulong g_signal_connect (gpointer *object, const gchar *name,

GCallback func, gpointer user data );

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

2.1.3 Платформенно-независимые оконные API

Существуют и другие способы программирования приложений GUI для ОС Linux, — существуют языки программирования со своей собственной поддержкой GUI.

  • Язык Java имеет поддержку программирования GUI с помощью Swing и некоторых более старых API AWT. Внешнее оформление приложений GUI на языке Java может понравиться не всем и на многих более старых компьютерах интерфейс может восприниматься громоздким и медленно реагирующим. Преимущество языка Java в том, что однажды откомпилированный код способен выполняться неизменным на лю­бой платформе с установленной виртуальной машиной Java (Java Virtual Machine), реализация которой существует для Linux, Windows, Mac OS и мобильные устройства.
  • Язык программирования С# похож на язык Java. В ОС Linux приход обще­языковой исполняющейся среды (С# Common Language или CLR) был осуществлён благодаря проек­ту Mono. На платформе Mono язык С# имеет поддержку модели программирования Windows Forms, которая применяется в Windows, а также необходимую привязку к комплекту инструментов GTK+, которая называется Gtk#.
  • Tcl/Tk - это язык сценариев который отлично подходит для быстрого создания интерфейсов GUI и работает с X, Windows и Mac OS. Он является очень удобным для эффективного макетирования или маленьких утилит, которые нуждаются в удобстве сопровождения сценария.
  • Python – также является языком сценариев. В Linux имеется возможность использовать привязку Python к GTK+, и тем самым разрабатывать програм­му GTK+ на языке Python.
  • Perl - является еще одним популярным языком сценариев в Linux. Возможно применять Тk или часть Tcl/Tk, в языке Perl как Perl/Tk.

За независимость от платформы, которую обеспечивают эти языки, приходится платить. Затрудняется совместное использование данных их собственными приложениями, примером является использование операций перетаскивания мышью (drag and drop), сохранение конфигурации не стандарт­ным способом, которое характерно для данного рабочего стола. Зачастую поставщики программного обеспечения на языке Java включают в поставку платформенно-зависимые расширения с целью избежать этих проблем [1].

2.2 Разработка клиентских приложений для web-ресурсов

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

Веб-службы по определению являются веб-приложениями, и многие, хотя и не все, веб-приложения содержат веб-приложения.

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

2.2.1 HTML5

HTML5 - это язык программирования, акроним расшифровывается как Hyper Text Markup Language. Это система, которая позволяет изменять внешний вид веб-страниц, а также вносить коррективы в их внешний вид. Он также используется для структурирования и представления контента в Интернете.

С помощью HTML5 такие браузеры, как Firefox, Chrome, Explorer, Safari и другие, могут знать, как отображать определенную веб-страницу, знать, где находятся элементы, где размещать изображения и где размещать текст.

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

Основными достоинствами HTML5 по сравнению с его предшественником (HTML4) является то, что вы можете добавлять мультимедийный контент без использования Flash или другого медиаплеера. Благодаря HTML5 пользователи могут получать доступ к веб-сайтам без подключения к Интернету. К этому добавляется функция перетаскивания, а также онлайн-редактирование документов, которое было популяризировано в Документах Google. Кроме того, вот возможности, которые вы имеете, когда используете HTML5:


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

2.2.2 CSS

Каскадные таблицы стилей (CSS) - это язык таблиц стилей, используемый для описания представления документа, написанного на языке разметки, например HTML. CSS является краеугольной технологией Всемирной паутины, наряду с HTML и JavaScript.

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

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

Каскадирование имен происходит из указанной схемы приоритетов, чтобы определить, какое правило стиля применяется, если конкретному элементу соответствует несколько правил. Эта каскадная схема приоритетов предсказуема [8].

2.2.3 JavaScript

JavaScript часто называемый JS, представляет собой интерпретируемый язык программирования высокого уровня, который соответствует спецификации ECMAScript. JavaScript имеет синтаксис фигурных скобок, динамическую типизацию, ориентирование объектов на основе прототипов и функции первого класса.

Наряду с HTML и CSS, JavaScript является одной из основных технологий Всемирной паутины. JavaScript обеспечивает интерактивные веб-страницы и является неотъемлемой частью веб-приложений. Подавляющее большинство веб-сайтов используют его, и основные веб-браузеры имеют специальный механизм JavaScript для его выполнения.

Как мультипарадигмальный язык, JavaScript поддерживает стили программирования, управляемые событиями, функциональные и императивные (в том числе объектно-ориентированные и основанные на прототипах). У него есть API для работы с текстом, массивами, датами, регулярными выражениями и DOM, но сам язык не включает никаких операций ввода-вывода, таких как сетевые функции, хранилище или графические средства. Для обеспечения этих функций он зависит от среды хоста, в которую он встроен.


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

Термины Vanilla JavaScript и Vanilla JS относятся к JavaScript, который не распространяется ни на какие фреймворки или дополнительные библиотеки. Скрипты, написанные на Vanilla JS, представляют собой простой код JavaScript.

Хотя между JavaScript и Java есть сходства, в том числе имя языка, синтаксис и соответствующие стандартные библиотеки, эти два языка отличаются друг от друга и сильно различаются по дизайну. На JavaScript повлияли такие языки программирования, как Self и Scheme. Формат сериализации JSON, используемый для хранения структур данных в файлах или их передачи по сетям, основан на JavaScript [5].

2.2.4 Веб фреймворки для разработки клиентских приложений

        1. Angular

Angular — основанная на TypeScript инфраструктура веб-приложений с открытым исходным кодом, возглавляемая Angular Team в Google и сообществом людей и корпорации. Angular - это полное переписывание от той же команды, которая создала AngularJS.

  • Angular не имеет понятия «объем» или контроллеров, вместо этого он использует иерархию компонентов в качестве своей основной архитектурной характеристики.
  • Angular имеет другой синтаксис выражений, фокусируясь на «[]» для привязки свойства и «()» для привязки события;
  • Модульность - основная функциональность перешла на модули;

Angular рекомендует использовать язык Microsoft TypeScript, который включает следующие функции:

  • Статическая типизация, в том числе Generics
  • TypeScript является расширенным набором ECMAScript 6 (ES6) и обратно совместим с ECMAScript 5 (т. Е. JavaScript).
  • Динамическая загрузка
  • Асинхронная компиляция шаблонов
  • Итеративные обратные вызовы, предоставляемые RxJS. RxJS ограничивает видимость состояния и отладку, но их можно решить с помощью реактивных надстроек, таких как ngReact или ngrx.
  • Поддержка Angular Universal, технологии, которая запускает ваше приложение Angular на сервере
  • Имеет собственный набор современных компонентов пользовательского интерфейса, которые работают через Интернет, мобильные и настольные системы, под названием Angular Material [13].

Vue.js