Файл: «Вариант 21. Модель клиент-сервер».pdf

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

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

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

Добавлен: 18.06.2023

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

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

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

Итак, гонка клиентских и веб-приложений находится на той стадии, когда веб просто физически не может проникнуть глубже в ресурсы пользователя, чтобы увеличить быстродействие. [5] Возможности в реализации отдельных техник все же еще не доступны по сравнению с клиентскими приложениями и есть проблема постоянного обращения к серверу, потому что все еще мы работаем с обычным html-кодом. Клиентские же приложение со своим богатством и простотой реализации сложнейших техник веба слишком неохотно потребляются пользователями, привыкшими к этому времени с помощью браузера решать самые сложные свои задачи. [7] К тому же, клиентские приложения по прежнему привязаны к определенным протоколам передачи данных для обмена информацией. А это влечет за собой дублирование определенных сервисов.

Так мы плавно перешли от истории к дням сегодняшним и видим, что бесспорного лидера нет, и каждая из технологий имеет свои достоинства инедостатки. После долгих блужданий возле клиентского компьютера интернет-гиганты все же готовы смирится с тем, что для увеличения быстродействия отдельных сервисов, для дальнейшего усложнения систем придется рассчитывать на мощности своих серверов, а не пытаться максимально глубоко влезть в ресурсы пользователей. [7] В связи с этим последнее время очень интенсивно пошло развитие сервисов, построенных для использования облачных вычислений (cloud computing) – технология обработки данных, в которой программное обеспечение предоставляется пользователю как Интернет-сервис. При этом пользователь не заботится об архитектуре облака, а лишь получает необходимые ему мощности от целых кластеров. Такие сервисы на данный момент уже предоставляют Microsoft, Amazon (Elastic Compute Cloud).Тем самым вся необходимая пользователю функциональность перемещается на сервера тех фирм, которые ее предоставляют. [7] Доступ осуществляет через браузер, а, значит, отсутствует привязанность к разным семействам операционных систем.

Ярким примером может служить: Gmail - почтовый клиент Google, предоставляющий богатый инструментарий для работы с почтой прямо из браузера.

Тем же временем продолжается совершенствование способов приблизить веб в клиентским приложениям. В 2006 году корпорация Microsoft выпустила плагин к IE – Silverlight, который позволяет запускать приложения, содержащие анимацию, векторную графику и аудио-видеоролики, что характерно для RIA (Rich Internet application). [8]

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


Smart Client — это легко устанавливаемое и управляемое клиентское приложение, предоставляющее пользователю адаптивный, отзывчивый и богатый пользовательский интерфейс, полностью использующее возможности локальных ресурсов компьютера и интеллектуально управляющее взаимодействием с распределенными источниками данных. [8]

Ключевыми особенностями, отличающими Smart Client, являются: Богатый пользовательский интерфейс. Чтобы называться «умным»,клиентское приложение должно иметь удобный пользовательский интерфейс, подстраиваясь под нужды пользователя, допуская персонализацию и предоставляя все современные способы управления(drag’n’drop, контекстные меню, дочерние окна, нотификации и т. д.). Простая установка, не требующая участия пользователя. Приложение должно предлагать пользователю автоматическую установку, не требующую перезагрузки, долгого ожидания или большого объема закачиваемых файлов. Автоматическая установка обновлений. [8] Появление новых версий приложения должно автоматически проверяться, их установка так же должна происходить в автоматическом режиме. Возможность работы при отсутствии соединения с сервером. Если приложение в своей работе взаимодействует с удаленными источниками данных, оно также должно работать и предоставлять максимум возможной функциональности и при «отсоединенной» (оффлайн) работе.

Примерами существующих смарт-клиентов могут быть:

IssueVision - help desk management application

TaskVision – клиентское приложение, которое позволяет подключенным пользователям создавать задачи, проекты и распределять их между другими пользователями. [9]

Взаимодействие между пользователями построено с использованием веб-сервисов. Поскольку обмен структурированными данными между клиентом ссервисом производится с помощью стандартного языка XML – то приложение может взаимодействовать с большинством существующих сервисов, не зависимо от языка реализации. Однако даже с этими решениями у «smart» клиентов в случае прерывания связи с Internet только один выбор— отключаться, поэтому для устранения этого неудобства в Microsoft предложили технологию Live Mesh, позволяющую локально запускать Web-приложения. [9] Звучит немного парадоксально – имеется в виду, чтоприложение может работать с данными и при следующем подключении ужесинхронизировать их с сервером.Такая возможность (работать оффлайн) также будет включена впоследний Silverlight, что позволит даже с веб-страницами работать воффлайн режиме.

В ближайшее время, как и последние много лет, основной средой обмена информацией останется интернет. Судя по тенденциям, клиентские и веб приложения будут развиваться параллельно, только немного другим путем –теперь это будут не монолитные порталы, написанные одной командой и использующие ресурсы одной эко-системы. Это будут наряжено - один костяк и множество подключенных сервисов, возможно даже разработанные разными фирмами. [9] Это приведет к тому, что основное внимание и львиная доля времени будет расходоваться на разработку сложных сервисов, но потом они легко будут подключаться к всевозможным порталам, приложениях и другим сервисам. Тем самым в скором будущем мы будем находиться не только во всемирной паутине, но еще и каждая ниточка этой паутины будет состоять из такого же сложного смешения различных сервисов, потребляемых различными устройствами. [8] Но это огромное разнообразие сервисов будет полезно после окончательного внедрения нового протокола IPV6, что позволит подключать к интернету даже микроволновые печи, холодильники и т.д. Именно управление таким огромным количеством устройств в сети приведет к созданию множеств асервисов и порталов, которые в онлайн режиме помогут управлять вашими электроприборами.[9]


ГЛАВА 3. ОСОБЕННОСТИ РЕАЛИЗАЦИИ КЛИЕНТ-СЕРВЕРНЫХ ПРИЛОЖЕНИЙ

3.1 ВЫБОР ПЛАТФОРМЫ ДЛЯ СЕРВЕРНОЙ ЧАСТИ МОДЕЛИ

Теперь, когда у нас есть практически вся общая информация про модель клиент-сервер, мы можем приступить к рассмотрению конкретных реализациях. [7] Итак, первый вопрос, который задаёт себе практически любой человек, который приступает к созданию клиент-сервера, это вопрос «Linux или Windows»? Особенностям, которые отличают эти две операционные системы, а также программы, которые написаны под определенную определённую ОС может быть посвящена не одна книга, однако, если посмотреть на клиент-серверные приложения со стороны непосредственного пользователя, то разница на самом деле будет невелика, и оба варианта подходят для большинства клиентов. [5] Linux и Windows на сегодняшний день являются самыми популярными системами для создания хост-сервера, и, хотя нельзя не отметить, что Linux является бесспорным лидером этой гонки, но если рассматривать предлагаемый этими системами функционал, то различия будут незначительны (в большинстве случаев), так что выбор не такой и простой. Под Linux обычно понимают общее название для всех архитектурных решений, разработанных на одном программном ядре. [3] Пакетные реализаций существует огромное количество, их отличия, однако, не будут в дальнейшем рассматриваться в ходе этой работы. Рассмотрим отличие этих операционных систем по некоторым критериям. Опустим критерии оценки удобства пользования графическим интерфейсом, поскольку это является скорее вопросом удобства использования. Одним из самых важных вопросов при выборе сервера является его безопасность, поскольку обычно такие модели содержат данные, чья конфиденциальность должна быть обеспечена. Обычно безопасность обеспечивается не только самой реализацией клиент-серверных приложений, но и хостом и операционной системой. Анти-лидером по количеству программных ошибок в операционной системе можно назвать Windows, различные ошибки в этой операционной системе возникают практически ежедневно и связаны с функциональными возможностями, которые не могут быть заменены в рамках этой операционной системы. [2] Поэтому, можно сказать, что если выбор операционной системы для сервера обусловлен только выбором безопасности, то операционная система Linux лидирует в этом показателе, хотя безусловно нельзя полагать, что Windows server является совершенно уязвимой ОС – использование современных методов защиты и технологий компьютерной безопасности делают её достаточной. Рассмотрим стабильность работы операционных систем. Если провести достаточно подробную аналитику, то можно бесспорно заявить, что операционная система Windows является более уязвимой к ошибкам, которые могут привести к аварийной остановке работы сервера. [1] Чаще всего такие ошибки связаны с определённой несовместимостью программных компонентов, но диагностика и нормализация этой проблемы может отнять много времени. Средняя частота перезагрузок на серверах на базе Windows составляет 2.3 перезагрузки в день, некоторые же сервера на базе Linux фактически работают без единой перезагрузки на протяжении нескольких лет, что вовсе не означает, что на этой операционной системе не случаются ошибки, однако, как правило, они более редкие и реже приводят к фатальным изменениям. Возможности обеих операционных систем ограничены лишь набором технологий, которые можно в них использовать. [1] Практически все существующие технологии имеют какую-то систему интеграции с обеими операционными системами, однако, всё же интеграция технологий обычно не поспевает за созданием этих технологий, да и их использование лучше оптимизировано под «родную» операционную систему. [1] Примерный список технологий, который лучше использовать на какой-то конкретной операционной системе приведён в виде таблицы (технологии не указанные в таблице работают практически одинаково на обеих операционных системах). [2]


Технологии

Linux

Windows

Web-приложений

+

-

WYSIWYG

+

-

PHP, MySQL,CGI,Perl,Python

+

-

ASP,ASP.NET,MS SQL

-

+

ASP,ASP.NET,PHP, MySQL

-

+

Таблица 2. Сравнение используемых технологий

Как видно из приведённой таблицы технологии, непосредственно разрабатываемые Microsoft обычно работают лучше на операционных системах Windows, все прочие либо одинаково работают на обеих платформах (к примеру, весь стек-технологий Java) или же имеют некоторое преимущество в ОС Linux (Что, как в случае с Python, может служить основополагающим моментом не только в рамках первоначального выбора, но и может стать серьёзным аргументом по переносу серверной части. [2] Поскольку тот Python имеет на сегодняшний день самое большое количество эффективных библиотек для работы в сфере data science и машинного обучения, что бессомнения может потребоваться на каком-то этапе развития клиент-серверной модели), однако, и этот критерий не может быть заключительным, поскольку каждая конкретная задача должна решаться индивидуально и гибкость разрабатываемой модели является основополагающим моментом при разработке архитектуры. [2] Разумеется в этой таблице приведены лишь небольшое количество элементов, которые могут участвовать в анализе – традиционное лидерство операционной системы Linux можно отметить и в FTP-серверах, Web-серверах под управлением Apache, DNS-серверы, файловые серверы, серверы электронной почты, однако в указанном списке не всё так очевидно, поскольку в операционной системе Windows также может успешно функционировать все указанные выше технологии (WEB-серверы с ограничениями), но и у Windows есть ряд ещё неозвученных возможностей: широкое применение нашли внедряемые локальные сети под управлением службы каталогов Active Directory (которая активно развивается в каждом новом выпуске Windows server). [3] Последний сравниваемый критерий будет заключаться в цене. Большинство дистрибутивов Linux распространяются согласно лицензии GPL, а значит совершенно бесплатны, исключением являются некоторые специализированные программные дистрибутивы. Программный продукт компании Microsoft является полностью коммерческим продуктом, поэтому стоимость устанавливается самой компанией и, к сожалению, эта стоимость является довольно высокой, иногда настолько, что цена одного только этого программного обеспечения может превышать стоимость всего оборудования. [3] Для более подробного изучения модельной структуры клиент-сервера в дальнейшем в этой работе будут рассмотрены особенности реализации клиент-серверных приложений на базе каждой из операционных систем.


3.2 РЕАЛИЗАЦИЯ КЛИЕНТ-СЕРВЕРНОГО ПРИЛОЖЕНИЯ В LINUX

Для реализации клиент-серверного приложения в Linux будем использовать сильные стороны этой операционной системы. Напишем TCP/IP-сервер на C, который обменивался бы с клиентом информацией о времени суток через заданный порт на указанном удаленном узле. Пользователь должен быть способен указать адрес удаленного хоста в виде его имени или точечного IP-адреса через терминал. [3] Клиент должен выводить имя/адрес локального хоста. Клиент также должен выводить номер порта локального сокета после соединения с сервером. Клиент также должен вывести имя/адрес удаленного хоста и данные о времени, возвращаемые сервером. [5] Сервер после отправки информации должен очистить неотправленные байты, а в последствии закрыть соединения с клиентом. Поскольку переброс информации о времени –достаточно простой протокол передачи информации, то можно рассмотреть лишь однопоточный сервер (более подробно об способах реализации многопоточного сервера в Linux на fork'ах и процессах можно прочитать выше в работе). [5] Итак, поскольку мы решили использовать C для реализации нашей задачи, то неплохо было бы ознакомиться с теми возможностями, которыми располагает этот язык. Для начала, базовая структура, которая используется при работе с интернет адресами: struct sockaddr_in {short sin_family;unsigned short sin_port; struct in_addr sin_addr;char sin_zero[8];};struct in_addr {unsigned long s_addr;};

Поле sin-family определяет используемый формат адреса (набор протоколов), для протокола TCP/IP должно иметь значение AF_INET.Поле sin_addr содержит адрес узла сети.Поле sin_port содержит номер порта на узле сети.Поле sin_zero служебное

Далее необходимо разобрать структуру изменения действия процесса. Эта структура используется для установления сигналов между процессами.

structsigaction {void (*sa_handler)(int);void (*sa_sigaction)(int, siginfo_t *, void *);sigset_t sa_mask;int sa_flags;void (*sa_restorer)(void);}

В некоторых архитектурных решениях используют объединение элементов, но не sa_handler и sa_sigaction одновременно. [7] Соответсвенно, эти два параметра используются для задачи типа действия процесса. Sa_mask –задаёт маску сигналов для блокировки, sa_flags проставляет набор флагов для корректировки поведения процесса.

Невозможно представить работу процесса без функции socket, которая используется для создания сокетов. Её прототив выглядит следующим образом: intsocket (intdomain, inttype, intprotocol); где domain –параметр накладывающий ограничения на формат используемых адресов, type – определяет тип канала для связи с сокетом, protocol позволяет выбрать протокол для канала связи. При равенстве нулю ОС выбирает такой протокол автоматически. [7]