Архитектура и прикладные протоколы клиент-серверных приложении — Теоретические материалы

Оглавление / Contents

  • 1. Архитектурные аспекты клиент-серверных приложений
  • 2. Интерфейсы. Протоколы. Теория и практика
  • 3. Программирование протоколов на Java
  • 4. Прикладные протоколы клиент-серверных приложений. Примеры реализации
  • 5. Проектирование клиент-серверных приложений
  • 6. Проектирование мобильных приложений под Android
  • 7. Язык и среда разработки. Java
  • Приложение. Стек протоколов Интернет. TCP/IP, HTTP, FTP

Презентации по архитеектуре и особенностям программирования Android-приложений

https://yadi.sk/d/eWQANWzQzBsKt - все материалы по разделу

Справочные, обзорные и учебные материалы для базового языка и среды разработи - Java

6. Глоссарий

big endian (BE) - последовательность размещения в памяти или передачи по каналу связи байтов машинного слова – начиная со старшего байта. Этот порядок байтов используется процессорами IBM 360/370/390, Motorola 68000, SPARC, а также в двоичных потоках ввода/вывода в Java.

Keep-alive (англ. - оставаться живым)периодическая передача сообщений в соединение, свидетельствующее о нормальной работе программы на одном из концов соединения. Неполучение  keep-alive-сообщений на другом конце соединения в течение заданного интервала рассматривается как сбой, соединение принудительно разрывается.

little endian  (LE) - последовательность размещения в памяти или передачи по каналу связи байтов машинного слова – начиная с младшего байта, является стандартным  для архитектуры Intel x86. Например, целое int a=1256 во внутреннем представлении в виде 32-разрядного машинного слова выглядит как 0x000004E8, а хранится и передается побайтно как E8 04 00 00.

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

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

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

Асинхронный Call-Back – при передаче запроса серверу клиент не блокируется и продолжает исполнение потока команд. При получении ответа от сервера в контексте протокольного процесса вызывается асинхронная процедура (CallBack - обратный вызов).

Дейтаграмма –  сообщение ограниченного размера без гарантий доставки, передаваемое без установления логического соединения.

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

Интерфе́йс (англ. interface — сопряжение, поверхность раздела, перегородка) — граница раздела двух систем, устройств или программ, определённая их характеристиками, характеристиками соединения, сигналов обмена и т. п.

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

Клиент-сервер (приложения) – распределение функций между приложениями, связанное с размещением клиента – пользователя или другого приложения и предоставляемых данных/сервиса – серверной компоненты.

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

Мета-уровень Java – представление загруженной программы в виде системы объектов-описателей классов типа Class. Позволяет реализовать значительную часть функций JVM на самой Java, а также обеспечить рефлексию.

Поток (поток управления) – последовательность действий программного кода, исполняемая параллельно (независимо, асинхронно) с другими потоками в едином адресном пространстве процесса (приложения).

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

Протокольные процессы – процессы в операционной системе, которые реализуют протокол.

Распределенная система в широком смысле -  система, элементы которой распределены по пространственно разнесенным узлам.

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

Сериализация -  понимается передача в потоке данных значений полей данных объекта и, возможно, его описания.

Сетевой порт (точка доступа) — условный числовой идентификатор  (число от 1 до 65535), обозначающий приложение, с которым устанавливается соединение.

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

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

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

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

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

Синхронный/асинхронный (в вычислительных процессах) - наличие логической привязки исполнения отдельных частей программного кода, что приводит к корреляции их исполнения во времени.

Синхронный/асинхронный (в широком толковании) - наличие или отсутствие одновременности или привязки во времени.

Система с распределенным управлением – распределенная система, в которой административные функции управления и контроля не сосредоточены в одном узле, а функционально распределены по узлам.

Статический порт – порт с фиксированным номером, зарегистрированный или общеизвестный для соединения с конкретной службой (системой).

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

Удаленный вызов процедур (RPC –Remote Procedure Call) - технологический вариант синхронного взаимодействия клиент-сервер, в котором клиент передает серверу имя и параметры вызываемой процедуры и получает в ответ результаты ее выполнения на сервере

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

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

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

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