7.1 Структура Клиент-серверной архитектуры
Что такое Клиент-Серверная архитектура?
Клиент-Серверная архитектура – это структура, в которой нагрузка распределяется между поставщиками услуг и заказчиками услуг, а также промежуточными звеньями.
И давайте рассмотрим такую схему, на ней мы видим, что у нас есть 3 участника, 3 обязательных звена – Это клиент, сервер и база данных.
Давайте подробно разберем каждого из участников:
1) Заказчик услуг, то есть Клиент – это пользователь, в виде интернет браузера или десктопного приложения, который запрашивает информацию у сервера.
То есть мы с Вами, когда выполняем какую-либо работу за нашим компьютером, мобильным устройством или гаджетом, все наши действия выполняют какой-либо запрос, на который мы получаем ответ – то есть, когда мы задаем какую-либо информацию в поисковике, отправляем или принимаем сообщение и т.д, мы с Вами отправляем запросы от лица нашего клиента.
Важно запомнить: клиенты – это не мы с вами, это именно наш браузер или десктопное приложение на нашем устройстве
2) Сервер -выделенный или специализированный компьютер, или же программное обеспечение. Основная его задача – это обработка логики приложения.
У каждого веб-сайта есть своя логика, например возьмем сайт по обмену валюты. Основная его логика – это производить обмен валюты согласно разным котировкам. Любое действие, которое мы произведем на сайте, подвержено определенной логике, например выбор валюты, от этого будет зависеть тот курс, по которому система будет считать денежные средства. Если мы ввели корректные данные, то система произведет расчет, если попытаемся ввести некорректные, то система должна нас об этом предупредить.
3) База данных - место хранения наших данных.
В нашем случае, здесь будут храниться котировки валют, если сайт позволяет, то и данные клиентов.
4) Промежуточное программное обеспечение - набор драйверов, протоколов (то есть правил общения между клиентом и сервером, для того, чтоб они друг друга понимали) и прочего программного обеспечения, позволяющего улучшить взаимодействие между клиентским приложением и сервером, а также язык структурированных запросов SQL
5) Прикладной программный интерфейс (Application Programming Interface - API) - набор функций и подпрограмм, обеспечивающих взаимодействие клиентов и серверов, набор методов, которые можно использовать для доступа функциональности к другой программе (добавление платежной системы к интернет-магазину, курс валют, прогноз погоды, соц. сети).
Взаимодействие между пользователем, сервисом и базой данных происходит через сетевые протоколы.
Пользователь отправляет запрос на сервер, тот в свою очередь в базу данных, база данных возвращает ответ на сервер, а тот в свою очередь отправляет ответ пользователю.
Клиентов огромное множество и под каждого нельзя выделить отдельный сервер, поэтому на один сервер приходится большое количество клиентов, но для того, чтоб не перегружать сервер, количество серверов увеличивается, что позволяет балансировать нагрузку между ними. За распределение клиентов между серверами отвечают балансировщики. Они регулируют нагрузку, могут отключать и включать дополнительные сервера, для того, чтоб создавалась равномерная нагрузка.
У крупного продукта есть несколько серверов и несколько баз данных, для того, чтоб разделить нагрузку между собой и в качестве подстраховки.
Яркий пример опять же компьютерные игры. Мы знаем, что когда мы заходим в игру, система нам предлагает выбрать один из серверов, по геолокации, например Западная Европа, Восточная Европа, Азия, США и т.д. Предположим, что один сервер способен принять в себя одновременно 100 игроков, и если в данный момент у нас есть 1000 желающих игроков, то они не смогут играть. У всех начнет подвисать игра, будут прерываться соединения и сервер просто упадет. Поэтому компания, всегда имеет несколько серверов, с запасом, для того, чтоб обеспечить все потребности пользователей.
Стоит так же отметить, что и баз данных может быть несколько. То есть в высоконагруженных приложениях участвует множество клиентов, серверов и баз данных.
Плюсы и минусы клиент-серверной архитектуры:
- Выполнение большей части работы мощной серверной частью при минимуме нагрузки на клиента.
- Основная часть логики и данных хранятся на сервере. При этом, как правило, он лучше защищён от различного вида угроз, чем обычный клиентский ПК.
- Возможность более чёткого разграничения полномочий доступа к разным уровням информационной системы. Каждому клиенту — свой уровень доступа.
- Кроссплатформенность. Проще говоря, любой клиент может работать с ресурсами сервера вне зависимости от используемой операционной системы.
- Уменьшение нагрузки на сеть ввиду того, что клиент в основном передаёт серверу команды, а тот уже их исполняет.
- Выход из строя сервера может привести к неработоспособности всей системы, его использующей.
- Высокая стоимость серверного оборудования и его обслуживания (в частности, может потребоваться отдельный специалист для обслуживания).
- Высокая нагрузка на серверное оборудование и канал связи до него.
Существует 2 вида клиентов:
Тонкий клиент – это когда большую часть нагрузки берет на себя сервер, а не пользователь. Вся основная бизнес логика и вычислительные процессы происходят на Сервере.
К примеру, это приложения для конвертации файлов, это происходит онлайн, прямо на сайте. Когда вы подгружаете какой-то документ, к примеру в формате pdf и конвертирует, то есть переделываете в формат jpg. Так же онлайн-кинотеатры, где мы можем просмотреть фильм, ведь фильм хранится на стороне веб-приложения, а не на стороне клиента
Толстый клиент – приложение, которое обеспечивает расширенную функциональность независимо от центрального сервера. Сервер выступает в качестве хранилища данных, а вся работа переносится на машину клиента – 1С, онлайн игры. Мы устанавливаем себе какую-либо игру, а сервер предоставляет нам возможность подключиться к другим игрокам.
Классификация приложений по назначению:
1. Веб-сайты
Веб-сайты – платформы, несут информативный характер, они не несут серьезной логики, состоят из нескольких страниц.
Веб-сайтов на данный момент большое разнообразие: образовательные, новостные, форумы, блоги и прочие.
2. Веб-приложения
Веб-приложение – приложение, к которому пользователи получают доступ через Интернет. Это приложение, которое несет логику.
Как правило, любое программное обеспечение, доступ к которому осуществляется через веб-браузер, можно назвать веб-приложением. Веб-приложения приобрели огромную популярность благодаря простоте использования. Платформы, которые позволяют вводить, изменять, манипулировать данными с помощью взаимодействия, могут быть встроенными в веб-страницы или сами страницы являться приложением – почта, соц.сети, интернет-магазины, конвертеры файлов, валют и т.д. При использовании веб-приложений пользователям не нужно беспокоиться об установке и обслуживании приложения. Кроме того, веб-приложения обеспечивают поддержку различных платформ. Кроме того, очень легко использовать веб-приложения, поскольку единственное требование — это веб-браузер. По этим причинам веб-приложения приобрели огромную популярность.
3. Веб-сервисы
Веб-сервисы – это система программного обеспечения, которая позволяет различным системам взаимодействовать друг с другом через сеть. Веб- сервисы используют открытые стандарты XML, SOAP, WSDL для решения этой задачи.
XML — это язык, который можно использовать для отправки сообщений с разными платформами и разными языками программирования, и он используется для тегирования данных в веб-сервисах.
SOAP — это протокол, основанный на XML, который позволяет приложениям взаимодействовать через HTTP, и он используется для доступа к веб-службе.
WSDL используется для описания и поиска веб-службы.
Веб- сервисы в основном используются для обеспечения возможности повторного использования компонентов приложения. Широко используются такие компоненты приложения, как сводки погоды, конвертеры валют и т. Д. Поэтому, не разрабатывая их снова и снова, они предлагаются как веб-службы, которыми можно легко пользоваться. Сервисы также могут использоваться для обмена данными между разными приложениями, работающими на разных платформах.
Разница между приложение и сервисом
Веб-приложение — это приложение, доступ к которому осуществляется через веб-браузер, запущенный на машине клиента, тогда как веб-сервис — это система программного обеспечения, которая позволяет различным машинам взаимодействовать друг с другом через сеть. В большинстве случаев веб-сервис не обязательно имеют пользовательский интерфейс, который мы можем видеть на экране, нажать кнопку, ввести что-то в поле, поскольку он используется как компонент в приложении, а веб-приложение — это законченное приложение с графическим интерфейсом. Кроме того, веб-сервисы могут использоваться для связи или передачи данных между веб-приложениями, работающими на разных платформах.
КЛЮЧЕВАЯ РАЗНИЦА МЕЖДУ API И ВЕБ-СЕРВИСОМ
- Веб-сервис – это набор протоколов и стандартов с открытым исходным кодом, используемых для обмена данными между системами или приложениями, а API – это программный интерфейс, который позволяет двум приложениям взаимодействовать друг с другом без какого-либо участия пользователя.
- Веб-сервис используется для REST, SOAP и XML-RPC для связи, в то время как API используется для любого стиля связи.
- Веб-сервис поддерживает только протокол HTTP, тогда как API поддерживает протокол HTTP / HTTPS.
- Веб-сервис поддерживает XML, а API поддерживает XML и JSON.
- Все веб-сервисы являются API-интерфейсами, но все API-интерфейсы не являются веб-сервисами.