Серверы приложений. В чем разница между сервером приложений и веб-сервером

«94 Лекция 6 Организация распределенных вычислений с использованием серверов приложений Серверы приложений (CП) являются одной из ключевых составляющих...»

Организация распределенных вычислений с использованием

серверов приложений

Серверы приложений (CП) являются одной из ключевых

составляющих IT-инфраструктуры значительной части современных крупных

предприятий. Если компания нуждается в интеграции ее

внутрикорпоративных приложений с корпоративным Web-сайтом и Webприложениями, а также в надежном и быстром доступе к данным и

приложениям со стороны собственных сотрудников, партнеров и клиентов,

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

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

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

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

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



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

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

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

Эти компоненты могут представлять собой:

COM-объекты;

CORBA-объекты;

компоненты Enterprise JavaBeans.

В функции сервера приложений входят:

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

обеспечение связи приложения с внешними ресурсами (включая базы данных, сети и другие приложения);

обеспечение качественной поддержки сервисов (доступность, надежность, безопасность, управление, производительность, масштабируемость);

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

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

В настоящее время серверы приложений являются основой многих корпоративных решений с повышенными требованиями к надежности, например приложений, связанных с электронной коммерцией, реализующих схемы «предприятие - потребитель» (business-to-consumer, B2C), «предприятие - предприятие» (business-to-business, B2B), «предприятие - сотрудник» (business-to-employee, B2E).

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

–  –  –

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

–  –  –

Реализация функций приложений, в виде Web-сервисов XML Технологии и стандарты Сегодня на корпоративном рынке доминируют две архитектуры серверов приложений:

NET (представлена только в исполнении Microsoft);

Java EE (ранее известная как J2EE), предоставляемая множеством компаний (мультивендорная).

Но при этом серьезную конкуренцию лидерам составляют новые программные модели, такие как Spring Framework, PHP, Ruby on Rails, Apex Code, Plain Old Java Object (POJO).

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

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

Для определения расстановки сил на рынке серверов приложений обратимся к данным исследовательской и консалтинговой компании Gartner, специализирующейся на рынках информационных технологий (ИТ).

Для оценки поставщиков какого-либо сегмента рынка ИТ, Gartner использует две линейные прогрессивные экспертные шкалы:

полнота видения (англ. completeness of vision), способность реализации (англ. ability to execute).

При этом, полнота видения откладывается на оси абсцисс, способность реализации - на оси ординат.

Каждый поставщик, таким образом, оказывается в одном из четырёх квадрантов плоскости, называемых:

лидеры (англ. leaders) - поставщики с положительными оценками как по полноте видения, так и по способности реализации, претенденты (англ. сhallengers) - поставщики с положительными оценками только по способности реализации, провидцы (англ. visionaries) - поставщики с положительными оценками только по полноте видения, нишевые игроки (англ. niche players) - поставщики с отрицательными оценками по обоим критериям.

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

По мнению Gartner, СП могут применяться в трех основных сценариях:

“временно-ориентированные” проекты - быстрая разработка и развертывание приложений в ответ на бизнес-требования, которые “не могут ждать”. В этом случае время реализации проекта является более важным, чем обеспечение доступности, масштабируемости и т. д.;

проекты “массового рынка” - не очень сложные прикладные системы, создаваемые небольшими ИТ-компаниями. Здесь важны такие параметры, как низкая стоимость, простота развертывания, поддержки и управления, надежность. Функциональность, масштабируемость и производительность не столь существенны;

“систематично-ориентированные” проекты - реализация критически важных для бизнеса корпоративных систем, рассчитанных на долгосрочный период эксплуатации (не менее трех лет). Наряду с разнообразной функциональностью тут необходимы надежность, безопасность, управляемость, масштабируемость, производительность. Ё Ниже в магическом квадранте рассматриваются поставщики продуктов класса CП масштаба предприятия (Enterprise Application Server – EAS) - таких, которые могут применяться в третьем сценарии. При этом отмечается, что многие такие решения можно успешно использовать и в двух других вариантах.

Рисунок 39 – Магический квадрант для СП масштаба предприятия

Как видим из квадранта:

Во первых: существует довольно большое число игроков, 28 компаний, некоторые из которых предлагают решения Open Source (свободное ПО, т.е.

материалы, использованные для его создания, доступны по свободной/открытой лицензии).

Во-вторых: имеется ряд платформ, изначально ориентированных на вариант облачной вычислительной модели (в частности, нужно обратить внимание на Salesforce.com).

В-третьих: есть четко выделенная группа лидеров: IBM, Microsoft, Oracle, Red Hat (JBoss).

В-четвертых: видна острая конкурентная ситуация на рынке, которая предоставляет заказчикам широкий спектр выбора наиболее подходящих им решений. Gartner считает, что в ближайшее время здесь появятся новые серьезные игроки, такие как Google и Tibco, чьи решения (соответственно App Engine и Silver) находятся пока в режиме бета-тестирования.

–  –  –

Семейство ПО IBM WebSphere включает представительный набор EASпредложений (в т.ч. серию продуктов WebSphere Application Server -

WAS), который покрывает широкий диапазон требований заказчиков:

для “временно-ориентированных” проектов (WebSphere sMash), для массового рынка (WAS Community Edition, WAS Express), для масштабируемых корпоративных решений:

WAS Network Deployment, WebSphere Virtual Enterprise, CloudBurst Appliance, WebSphere Virtual Enterprise и др.

Некоторые из этих средств доступны в виде облачных сервисов IBM и Amazon Web Services EC2.

WAS-решения базируются в целом на стандартах Java EE и SOA, обеспечивая при этом поддержку разных моделей программирования.

Следует отметить, что IBM имеет в своем распоряжении мощные наборы средств разработки (Rational) и управления ИТ (Tivoli).

В то же время нужно сказать, что присутствие IBM на массовом рынке пока невелико. Выпущенный в середине 2008 года WebSphere sMash пока имеет относительно небольшую инсталлированную базу и весьма ограниченную поддержку со стороны третьих фирм. Продукты для облаков (WAS Hypervisor Edition, CloudBurst Appliance) появились относительно недавно, и пока в этой сфере IBM заметно отстает от лидеров. В целом Gartner отмечает, что стратегия IBM в области APaaS находится в ранней стадии своей реализации.

Microsoft

NET Framework вместе с Internet Information Server (оба являются интегрированными компонентами Windows Server) представляют собой полный набор функциональности EAS. Продукты семейства корпоративных серверов Microsoft Server System предназначены, как и другие СП, для создания и развертывания интегрированных корпоративных решений.

При относительно невысокой стоимости для этих серверов характерны:

поддержка XML,

–  –  –

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

Все серверы семейства Microsoft Server System поддерживают управление COM-, COM+- и.NET-компонентами и доступны для операционных систем семейства Windows. Для других платформ эти продукты не выпускались и не выпускаются.

Из продуктов, входящих в семейство Microsoft Server System, к серверам приложений в традиционном понимании можно отнести:

сервер интеграции приложений Microsoft BizTalk Server, сервер сообщений и групповой работы Microsoft Exchange Server, сервер электронной коммерции Microsoft Commerce Server, масштабируемый сервер приложений для мобильной телефонии Microsoft Mobile Information Server, корпоративный портал Microsoft SharePoint Portal Server, сервер для управления информационным наполнением Web-сайтов Microsoft Сontent Manager Server;

сервер для управления крупными корпоративными проектами Microsoft Project Server.

Облачные предложения Microsoft реализованы в виде бета-версии Windows Azure Platform и недавно анонсированной технологии программируемой облачной платформы (xRM).

Преимущество Microsoft - огромная инсталлированная база Windows Server и обширное сообщество разработчиков ПО, что делает ее продукты стандартом де-факто на массовом рынке. При этом компания постоянно наращивает свое присутствие в сфере крупных корпоративных проектов. У компании есть весьма четкая стратегия реализации облачной модели вычислений.

Но из достоинств Microsoft вытекают и ее слабые стороны - поддержка одной ОС и использование продуктов от одного поставщика. Из-за традиционной фокусировки на массовом рынке компания постоянно запаздывает с реализацией важных технологических инициатив (например, XTP (Extreme Transaction Processing - форма обработки транзакций в информационных технологиях) и SOA). При этом у Microsoft появился ряд очень серьезных соперников (Google, Salesforce, VMware), также ориентированных на массовый рынок, но в конкурентной борьбе использующих иные деловые и технологические модели.

Основу EAS-предложений Oracle составляет JEE-семейство Oracle WebLogic Server (WLS), полученное в результате приобретения в 2008-м компании BEA Systems, и собственная разработка Oracle Application Server (она еще поддерживается, но в стратегическом плане не развивается).

Кроме того, в группу EAS-продуктов входят:

средство разработки Oracle JDeveloper, инструмент Oracle TopLink;

средство для мониторинга, администрирования и управления Oracle Enterprise Manager.

В результате приобретения Sun Microsystems компания пополнила свой EAS-арсенал еще и целым портфелем EAS-технологий (в частности свободную среду разработки NetBeans), благодаря чему заняла ведущую роль в Java-сообществе.

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

На текущий момент в Oracle слабо представлены EAS-решения, ориентированные на массовый рынок, хотя приобретение Sun GlassFish частично заполнило эту брешь в спектре ПО Oracle.

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

Red Hat

JBoss EAS - это JEE5-совместимый JBoss Application Server (c апреля 2013 WildFly). Он доступен для бесплатной загрузки (без технической поддержки) или в составе пакета для предприятий в виде JBoss Enterprise Application Platform с оплатой поддержки по подписке.

Кроме того, у Red Hat имеется набор JBoss Enterprise SOA Platform, в него входят сервер приложений и целый ряд технологий поддержки SOA, включая решение JBoss ESB, предназначенное для интеграции различных систем, в том числе несовместимых.

Имеется также EAS-предложение JBoss Communications Platform, ориентированное на использование в телекоммуникационной отрасли.

Для Web-проектов предлагается JBoss Enterprise Web Server, включающий сервер приложений Apache Tomcat.

В семейство ПО JBoss входит и целый ряд других продуктов и инструментов, в том числе средства разработки и управления ИТинфраструктурой.

Все это ПО, бесплатное или получаемое по подписке, распространяется по лицензиям LGPL 2.x или Apache Software и доступно в виде исходных кодов или объектных модулей.

JBoss EAS имеет отличную техническую репутацию на рынке, Red Hat является явным лидером среди поставщиков открытых EAS-решений, ее продукты имеют огромную инсталлированную базу и великое множество партнеров и пользователей. Фактически это единственное Open Sourceсемейство на ИТ-рынке, которое на равных конкурирует с предложениями ведущих проприетарных вендоров. Но бизнес-стратегия Red Hat, нацеленная на повышение прибыльности подразделения JBoss, иногда имеет результатом замедление внедрения инженерных инноваций. Компания явно отстает от конкурентов в освоении передовых технологий, таких как XTP, событийное управление и облачные вычисления.

Архитектуры серверов приложений

Java Platform, Enterprise Edition Java Platform, Enterprise Edition, сокращенно Java EE (до версии 5.0 - Java 2 Enterprise Edition или J2EE) - набор спецификаций и соответствующей документации для языка Java, описывающей архитектуру серверной платформы для задач средних и крупных предприятий.

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

Основная цель спецификаций - обеспечить масштабируемость приложений и целостность данных во время работы системы. JEE во многом ориентирована на использование её через веб как в интернете, так и в локальных сетях. Вся спецификация создаётся и утверждается через JCP (Java Community Process) в рамках инициативы Sun Microsystems Inc.

Популярности JEE также способствует то, что Sun предлагает бесплатный комплект разработки, SDK (Software Development Kit), позволяющий предприятиям разрабатывать свои системы, не тратя больших средств. В этот комплект входит сервер приложений GlassFish с лицензией для разработки.

Актуальная версия Java EE (JEE) имеет номер 7.0.

При переходе на версию 5.0 к набору спецификаций добавилось несколько новых технологий и изменилось название спецификации с J2EE (Java 2 Platform, Enterprise Edition), на Java Platform, Enterprise Edition, сокращённо Java EE.

–  –  –

EJB – Enterprise JavaBeans – спецификация технологии написания и поддержки серверных компонентов, содержащих бизнес-логику.

JPA – Java Persistence API – предоставляет возможность сохранять в удобном виде Java-объекты в базе данных.

Сервлет – класс, расширяющий функциональные возможности сервера.

Сервлет взаимодействует с клиентами посредством принципа запрос-ответ.

JSP - JavaServer Pages -технология, позволяющая веб-разработчикам легко создавать содержимое, которое имеет как статические, так и динамические компоненты. По сути, страница JSP является текстовым документом, который содержит текст двух типов: статические исходные данные, которые могут быть оформлены в одном из текстовых форматов HTML, SVG, WML, или XML, и JSP элементы, которые конструируют динамическое содержимое.

JSTL – JavaServer Pages Standard Tag Library – «стандартная библиотека тегов JSP». Она расширяет спецификацию JSP, добавляя библиотеку JSP тегов для общих нужд, таких как разбор XML данных, условная обработка, создание циклов и поддержка интернационализации.

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

JSF - JavaServer Faces - компонентный серверный фреймворк для разработки веб-приложений на технологии Java, предназначенный для облегчения разработки пользовательских интерфейсов (ПИ) для JEEприложений. Подход JSF основывается на использовании компонентов.

Состояние компонентов ПИ сохраняется, когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется.

JAX-WS - Java API for XML Web Services - это прикладной программный интерфейс языка Java для создания веб-служб.

JNDI - Java Naming and Directory Interface - это Java API, организованный в виде службы каталогов, который позволяет Java-клиентам открывать и просматривать данные и объекты по их именам.

JMS - Java Message Service - стандарт промежуточного ПО для рассылки сообщений, позволяющий приложениям, выполненным на платформе Java EE, создавать, посылать, получать и читать сообщения.

JTA - Java Transaction API - Java API для транзакций. Определяет взаимодействие между менеджером транзакций и другими участниками распределенной транзакционной системы.

JAAS - Java Authentication and Authorization Service - реализация в языке программирования Java стандарта системы информационной безопасности PAM. Pluggable Authentication Modules (PAM, подключаемые модули аутентификации) - это набор разделяемых библиотек, которые позволяют интегрировать различные низкоуровневые методы аутентификации в виде единого высокоуровневого API. Это позволяет предоставить единые механизмы для управления, встраивания прикладных программ в процесс аутентификации.

JavaMail - это Java API, предназначенный для получения и отправки электронной почты с использованием протоколов SMTP, POP3 и IMAP.

JACC - Java Authorization Contract for Containers – это стандарт, который определяет контракты безопасности между модулями СП и политики авторизации. Эти контракты определяют способы установки, настройки и использования провайдеров авторизации в решениях доступа.

JCA - J2EE Connector Architecture – решение на базе технологии Java для соединения серверов приложений и корпоративных информационных систем в рамках решений интеграции корпоративных приложений.

JAF - JavaBeans Activation Framework - стандартное расширение для платформы Java, позволяющее воспользоваться стандартными услугами:

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

StAX - Streaming API for XML – интерфейс прикладного программирования для чтения и записи XML-файлов.

CDI - Context and Dependency Injection - Внедрение контекстов и зависимостей - помогают связать уровень веб-узлов и уровень транзакций платформы JEE. CDI - это набор услуг, которые, позволяют разработчикам использовать JavaBeans с JSF в веб-приложениях.

Microsoft.NET Framework

NET Framework - программная платформа, выпущенная компанией Microsoft в 2002 году. Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), которая подходит для разных языков программирования. Функциональные возможности CLR доступны в любых языках программирования, использующих эту среду.

Считается, что платформа.NET Framework явилась ответом компании Microsoft на набравшую к тому времени большую популярность платформу Java компании Sun Microsystems (ныне принадлежит Oracle).

Хотя.NET является патентованной технологией корпорации Microsoft и официально рассчитана на работу под операционными системами семейства Microsoft Windows, существуют независимые проекты (прежде всего это Mono и Portable.NET), позволяющие запускать программы.NET на некоторых других операционных системах.

Архитектура.NET Программа для.NET Framework, написанная на любом поддерживаемом языке программирования, сначала переводится компилятором в единый для.NET промежуточный байт-код Common Intermediate Language (CIL) (ранее назывался Microsoft Intermediate Language, MSIL). В терминах.NET получается сборка, англ. assembly.

Затем код либо исполняется виртуальной машиной Common Language Runtime (CLR), либо транслируется утилитой NGen.exe в исполняемый код для конкретного целевого процессора. Использование виртуальной машины предпочтительно, так как избавляет разработчиков от необходимости заботиться об особенностях аппаратной части. В случае использования виртуальной машины CLR, встроенный в неё JIT-компилятор «на лету» (just in time) преобразует промежуточный байт-код в машинные коды нужного процессора. Современная технология динамической компиляции позволяет достигнуть высокого уровня быстродействия. Виртуальная машина CLR также сама заботится о базовой безопасности, управлении памятью и системе исключений, избавляя разработчика от части работы.

Microsoft начала разрабатывать.NET Framework в конце 1990-х под именем «Next Generation Windows Services» (NGWS). В 2000 году была выпущена первая бета-версия.NET 1.0.

–  –  –

Объектные классы.NET, доступные для всех поддерживаемых языков программирования, содержатся в библиотеке Framework Class Library (FCL). Ядро FCL называется Base Class Library (BCL).

Windows Forms – API, отвечающий за графический интерфейс пользователя.

ASP.NET(Active Server Pages) - технология создания вебприложений и веб-сервисов.

ADO.NET – технология, предоставляющая.NET-приложениям доступ к данным.

Windows Presentation Foundation (WPF) – система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем. Разрабатываемые приложения могут быть автономными или запускаемыми в браузере.

Windows Communication Foundation (WCF) - программный фреймворк, используемый для обмена данными между приложениями. До выпуска в составе.NET Framework 3.0, был известен под кодовым именем Indigo. WCF позволяет создавать безопасные и надёжные транзакционные системы через упрощённую унифицированную программную модель межплатформенного взаимодействия. В WCF заложены принципы интероперабельности, которые позволяют организовывать работу с другими платформами.

Windows Workflow Foundation (WF) – технология для определения, выполнения и управления рабочими процессами (англ. workflow). (Рабочий процесс (поток) – 1. графическое представление процесса выполнения задачи и связанных с ним подпроцессов; 2. способ поступления информации к различным объектам, участвующим в процессе). WF ориентирована на визуальное программирование и использует декларативную модель программирования.

Windows CardSpace (WCS) – это способ идентификации пользователей при перемещении между ресурсами Интернета без необходимости повторного ввода имен и паролей. 15 февраля 2011 корпорация Майкрософт объявила об отмене Windows CardSpace 2.0 и о работе над замещающим ПО U-Prove.

Language Integrated Query (LINQ) - проект по добавлению синтаксиса языка запросов, напоминающего SQL (structured query language - «язык структурированных запросов»), в языки программирования платформы.NET.

ADO.NET Entity Framework (EF) - объектно-ориентированная технология доступа к данным. Предоставляет возможность взаимодействия с объектами как посредством LINQ (LINQ to Entities), так и с использованием Entity SQL.

Параллельный LINQ (PLINQ) – параллельная реализация LINQ to Objects.

PLINQ, реализующая полный набор стандартных операторов запроса LINQ в виде расширения для пространства имен T:System.Linq и имеющая дополнительные операторы для параллельных операций. PLINQ может значительно увеличить скорость запросов LINQ to Objects, эффективнее используя все доступные ядра на главном компьютере.

Task Parallel Library (TPL) - библиотека параллельных задач, представляющая собой сочетание общих типов и API, которые позволяют реализовывать параллелизм и согласованность операций. TPL является высокоуровневым каркасом параллельного программирования для.NET кода, позволяющим максимально использовать производительность многоядерных процессоров. TPL позволяет реализовать логический параллелизм (указать то, что потенциально может работать параллельно) вместо жесткого деления на потоки. Реальное распараллеливание библиотека производит во время выполнения в зависимости от доступных аппаратных средств.

Modern UI Runtime – дизайнерский стиль, ориентированный на типографское оформление интерфейса пользователя.

Task-based Asynchronous Pattern (TAP) – основанная на задачах асинхронная модель – схема программирования, направленная на создание асинхронных потоков в выполнении программы и управление ими.

Одной из основных идей Microsoft.NET является совместимость программных частей, написанных на разных языках. Например, служба, написанная на C++ для Microsoft.NET, может обратиться к методу класса из библиотеки, написанной на Delphi. Каждая библиотека (сборка) в.NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок.

Среды разработки, поддерживающие.NET:

Microsoft Visual Studio (C#, Visual Basic.NET, Managed C++, F#)

–  –  –

Приложения.NET также можно разрабатывать в текстовом редакторе, просто вызывая компилятор из командной строки.

Mono Mono - проект по созданию полноценного воплощения системы.NET Framework на базе свободного программного обеспечения.

Основной разработчик проекта Mono - компания Xamarin (ранее Novell). После заключения Microsoft договорённости с Novell, платформа Mono была официально признана реализацией.NET на Unix-подобных операционных системах: Linux, Mac OS X и других. (Хотя Mono успешно работает и под Microsoft Windows). Однако договорённость касается только Novell и клиентов Novell; также технологии ASP.NET, ADO.NET и Windows Forms не были стандартизированы ECMA/ISO, и использование их в Mono находится под угрозой юридических претензий со стороны Microsoft, поэтому Mono предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в

Похожие работы:

«ГЛАВА VI КОСМЕТИЧЕСКИЕ СРЕДСТВА, АРОМАТИЧЕСКИЕ ВЕЩЕСТВА И БЛАГОВОННЫЕ КУРЕНИЯ Косметические средства Косметика так же стара, как человеческое тщеславие. В Египте употребление косметических средств может быть прослежено почти от того самого периода, от ко...»

«2013 – № 32 Судовые энергетические установки 185 УДК 656.61.052.484 Репетей В.Д., ОНМА СОВЕРШЕНСТВОВАНИЕ ОРГАНИЗАЦИИ УПРАВЛЕНИЯ ОПЕРАЦИЯМИ SAR Постановка задачи в общем виде. Конечной целью совершенствования управления системой является оптимизация, которая предполагает наличие целевой функции управления f(x) ограничений по её...»

«OCR: Библиотека святоотеческой литературы http://orthlib.ru (с. 299) Мёсzца тогHже въ }i-й дeнь. С™aгw ґпcла и3 є3ђлjста луки2. И# прпdбнагw їHсифа волоцкaгw. Слyжба є3гw2 пи1сана септeмвріа, f7 днS. На вечeрни п...»

«РЕКОМЕНДАЦИИ КЛАССНЫМ РУКОВОДИТЕЛЯМ Формы работы по преодолению вредных привычек обучающихся Для эффективности внеклассной работы в этом направлении можно и нужно использовать следующие формы работы: просмотр видеофильмов с последующим обсуждением, просмотр кинофильмов, которые...» Статья посвящается досудебному порядку реализации предусмотренных законом мер защиты патентных прав в Российской Федерации. Ключевые слова: административный, защита...»

Файл-сервер и сервер приложений очень похожи на первый взгляд. Но есть и отличия. Файл-сервер хранит данные и программы, а сервер приложений обрабатывает первые и выполняет вторые.

За счет использования разумной комбинации существующих технологий можно реализовать поразительные возможности такого вида приложений. Например, при соединении Web-сервера Apache с языком серверных сценариев PHP, получаем сервер приложений. Но в маркетинге этим термином обычно обозначают комплексное решение, которое содержит в себе все необходимые компоненты технологий. Такой подход к построению сервера приложений иногда даже облегчает разработку, поскольку существуют унификации разрабатываемых моделей и их централизованная поддержка.

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

Предоставление сервисных услуг для программ.

Предоставление модели контейнера для приложений.

Обеспечение управления приложениями. Представление средств их разработки.

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

Обслуживание веб-страниц, поскольку в этом существует реальная востребованность.

Преимущества при работе с серверами приложений:

Целостность кода и данных. Размещение на выделенном сервере дает для всех клиентов гарантию доступа к модернизированному ПО. Исключается работа с данными из устаревших программ.

Централизованное управление. Все изменения в конфигурации прикладных программ выполняются централизованно.

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

Производительность. На сервер приложений можно возложить задачу по балансировке сетевого трафика. Результат – равномерное распределение нагрузки между физическими серверами системы.

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

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

Сервер приложений

Сервер приложений (англ. application server ) - это программная платформа (software framework), предназначенная для эффективного исполнения процедур (программ, механических операций, скриптов), которые поддерживают построение приложений. Сервер приложений действует как набор компонентов, доступных разработчику программного обеспечения через API (Интерфейс прикладного программирования), который определен самой платформой.

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

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

Преимущества серверов приложений

Целостность данных и кода

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

Централизованная настройка и управление

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

Безопасность

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

Поддержка транзакций

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

Примеры реализации

  • Под сервером приложений в случае Java EE подразумевается комплекс программ, реализующих концепцию Java EE и позволяющих запускать в себе Java EE приложения. К классу серверов приложений относятся такие продукты как Sun GlassFish, IBM WebSphere, RedHat JBoss Application Server, Apple WebObjects (англ. ) и др.
  • Zope, развитый сервер web-приложений.
  • Терминальные серверы, например поставляемые компанией Citrix

27 ответов

В большинстве случаев эти термины Web Server и сервер приложений используются взаимозаменяемо.

Ниже перечислены некоторые ключевые отличия в функциях веб-сервера и сервера приложений:

  • Веб-сервер предназначен для обслуживания содержимого HTTP. Сервер приложений также может обслуживать HTTP-контент, но не ограничивается только HTTP. Он может быть предоставлен для поддержки других протоколов, таких как RMI/RPC
  • Веб-сервер в основном предназначен для обслуживания статического контента, хотя большинство веб-серверов имеют плагины для поддержки языков сценариев, таких как Perl, PHP, ASP, JSP и т.д., через которые эти серверы могут генерировать динамический контент HTTP.
  • Большинство серверов приложений имеют в своем составе Web-сервер, что означает, что сервер приложений может делать все, на что способен веб-сервер. Кроме того, сервер приложений имеет компоненты и функции для поддержки сервисов уровня приложения, таких как пул соединений, объединение объектов, поддержка транзакций, службы обмена сообщениями и т.д.
  • Поскольку веб-серверы хорошо подходят для статического контента и серверов приложений для динамического контента, большинство производственных сред имеют веб-сервер, выступающий в качестве обратного прокси-сервера для сервера приложений. Это означает, что при обслуживании запроса страницы статическое содержимое (например, изображения/статический HTML) обслуживается веб-сервером, который интерпретирует запрос. Используя какой-то метод фильтрации (в основном расширение запрашиваемого ресурса), веб-сервер идентифицирует запрос динамического содержимого и прозрачно пересылает сервер приложений.

Пример такой конфигурации - сервер HTTP Apache Tomcat и сервер Oracle (ранее BEA) WebLogic. HTTP-сервер Apache Tomcat - это веб-сервер, а Oracle WebLogic - это сервер приложений.

В некоторых случаях серверы тесно интегрированы, такие как IIS и.NET Runtime. IIS - это веб-сервер. При использовании среды выполнения.NET среда IIS может предоставлять приложения.

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

    Веб-сервер : служит для контента в Интернете с использованием протокола http.

    Сервер приложений : хосты и раскрывают бизнес-логику и процессы.

Я думаю, что главное, что веб-сервер предоставляет все через HTTP-протокол, в то время как сервер приложений не ограничивается им.

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

Это подробный ответ с некоторыми сценариями, чтобы четко понимать разницу, сходство и то, как оба могут работать совместно, и все

Сервер приложений - это термин, который иногда смешивается с веб-сервером . Хотя веб-сервер обрабатывает главным образом протоколы HTTP , сервер приложений имеет дело с несколькими различными протоколами, включая не ограниченный, HTTP .

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

Информация, перемещаемая между сервером и его клиентом, не ограничивается простой разметкой экрана, а взаимодействием между ними.

В большинстве случаев сервер создает это взаимодействие через API-интерфейс компонента , например J2EE (платформа Java 2), EJB (Enterprise JavaBean) и другие различные модели прикладных программ.

Пример:

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

Сценарий 1: веб-сервер без сервера приложений

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

Сценарий 2. Веб-сервер с сервером приложений

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

Для поддержки такого множества сложных задач этот сервер должен иметь встроенную избыточность, большую вычислительную мощность и большое количество ОЗУ для обработки всех данных, которые он вытягивает в реальном времени.

Надеюсь, что это поможет.

Как указывал Rutesh и jmservera, различие является нечетким. Исторически сложилось, что они были разными, но через 90 эти две ранее отличающиеся категории смешивали черты и эффективно сливались. На данный момент лучше всего предположить, что категория продуктов "Сервер приложений" является строгим надмножеством категории "веб-сервер" .

Некоторая история. В ранние дни браузера Mosaic и гиперссылки на контент возникла эта вещь, называемая "веб-сервером", которая обслуживала содержимое веб-страницы и изображения через HTTP. Большая часть контента была статичной, а протокол HTTP 1.0 был всего лишь способом отправки файлов. Быстро категория "веб-сервер" эволюционировала, чтобы включить возможности CGI - эффективно запускать процесс на каждом веб-запросе для создания динамического контента. HTTP также созрел, и продукты стали более сложными, с кешированием, защитой и функциями управления. По мере того, как технология созрела, мы получили специфическую для Java технологию на стороне сервера от Kiva и NetDynamics, которые в конечном итоге слились в JSP. Microsoft добавила ASP, я думаю, в 1996 году к Windows NT 4.0. Статический веб-сервер узнал некоторые новые трюки, так что это был эффективный "сервер приложений" для многих сценариев.

В параллельной категории сервер приложений развился и существовал в течение длительного времени. компании поставляли продукты для Unix, такие как Tuxedo, TopEnd, Encina, которые были философски получены из приложений управления и мониторинга приложений для мэйнфреймов, таких как IMS и CICS. Microsoft предлагала Microsoft Transaction Server (MTS), который позже превратился в COM+. Большинство из этих продуктов указали "закрытые" протоколы коммуникаций, специфичные для продукта, для соединения "толстых" клиентов с серверами. (Для Encina протокол comms был DCE RPC, для MTS - DCOM и т.д.). В 1995/96 годах эти традиционные серверные продукты приложений начали внедрять базовые возможности HTTP-связи, сначала через шлюзы. И линии начали размываться.

Веб-серверы стали все более зрелыми в отношении обработки более высоких нагрузок, более concurrency и лучших функций. Серверы приложений поставляли все больше и больше возможностей связи на основе HTTP.

В этот момент линия между "сервером приложений" и "веб-сервером" является нечеткой. Но люди продолжают использовать термины по-разному, в качестве акцента. Когда кто-то говорит "веб-сервер" , вы часто думаете, что HTTP-ориентированный, веб-интерфейс, ориентированные приложения. Когда кто-то говорит "Сервер приложений", вы можете подумать "более тяжелые нагрузки, функции предприятия, транзакции и очередность, многоканальная связь (HTTP + больше). Но часто это тот же продукт, который обслуживает оба набора требований к рабочей нагрузке.

веб сервер

Запустите python -m "SimpleHTTPServer" и перейдите по адресу http://localhost: 8080 . То, что вы видите, это веб-сервер в его работе. Сервер просто обслуживает файлы по HTTP, хранящиеся на вашем компьютере. Ключевым моментом является то, что все это делается поверх протокола HTTP. Также существуют FTP-серверы, например, которые делают то же самое (обслуживая сохраненные файлы), но поверх другого протокола.

Сервер приложений

Скажем, у нас есть крошечное приложение, как показано ниже (фрагмент из Flask).

@app.route("/") def homepage(): return "My homepage" @app.route("/about") def about(): return "My name is John"

Небольшой пример программы отображает URL / на homepage() функции homepage() а /about - на функцию about() .

Для запуска этого кода нам нужен сервер приложений (например, Gunicorn) - программа или модуль, который может прослушивать запросы от клиента и, используя наш код, возвращать что-то динамически. В примере мы просто возвращаем очень плохой HTML.

О какой бизнес-логике говорят все остальные? Итак, поскольку URL-адрес отображается где-то конкретно в нашей кодовой базе, мы гипотетически показываем некоторую логику о том, как работает наша программа.

резюмируя

веб-сервер - обслуживает файлы, хранящиеся где-то (чаще всего.css,.html,.js). Обычными веб-серверами являются Apache, Nginx или даже Python SimpleHTTPServer.

Сервер приложений - обслуживает файлы, созданные на лету. По сути, большинство веб-серверов имеют какие-то плагины или даже поставляются со встроенными функциями для этого. Существуют также строгие серверы приложений, такие как Gunicorn (Python), Unicorn (Ruby), uWSGI (Python) и т.д.

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

Как уже было сказано ранее, веб-серверы обрабатывают HTTP-петиции, а серверы приложений обрабатывают петиции для распределенных компонентов. Таким образом, возможно, самый простой способ понять разницу - сравнить два продукта в отношении среды программирования, которую они предлагают.

Веб-сервер → среда программирования

Причал: сервлет

Apache: Php, CGI

Серверы приложений → среда программирования

Сервер приложений WebLogic: EJB

Важнейшим отличием является то, что серверы приложений поддерживают технологию распределенного компонента , предоставляя такие функции, как удаленный вызов и распределенные транзакции, такие как EJB в мире Java или COM +/strong > на платформе Microsoft. Http-сервер часто поддерживает некоторые более простые среды программирования, часто скрипты, такие как ASP (.NET) в случае Microsoft или Servlet, включая JSP и многие другие в случае Java или PHP и CGI в случае Apache.

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

Наконец, стоит отметить, что картина искажена "легкими контейнерами", такими как Spring Framework, которые чаще всего дополняют назначение серверов приложений более простым способом и без инфраструктуры сервера приложений. И поскольку аспект распространения в приложениях перемещается из распределенного компонента в сторону парадигмы обслуживания и архитектуры SOA, для традиционных серверов приложений все меньше и меньше места.

Веб-сервер исключительно обрабатывает запросы HTTP/HTTPS. Он служит для содержания в Интернете с использованием протокола HTTP/HTTPS.

Сервер приложений обслуживает бизнес-логику для прикладных программ через любое количество протоколов, возможно, включая HTTP. Прикладная программа может использовать эту логику так же, как вызовет метод для объекта. В большинстве случаев сервер предоставляет эту бизнес-логику через компонентный API, такой как компонентная модель EJB (Enterprise JavaBean), найденная на серверах приложений Java EE (Java Platform, Enterprise Edition). Главное, что веб-сервер предоставляет все через HTTP-протокол, в то время как сервер приложений не ограничен этим. Таким образом, сервер приложений предлагает гораздо больше услуг, чем веб-сервер, который обычно включает в себя:

  • API (собственный или нет) API
  • Управление жизненным циклом объекта
  • Управление состоянием (сеанс)
  • Управление ресурсами (например, пулы подключений к базе данных)

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

Сервер приложений может (но не всегда) запускаться на веб-сервере для выполнения программной логики, результаты которой затем могут быть доставлены веб-сервером. Этот пример сценария сервера веб-сервера/сервера приложений. Хорошим примером в мире Microsoft является отношение Internet Information Server/SharePoint Server. IIS - это веб-сервер; SharePoint - это сервер приложений. SharePoint сидит "сверху" IIS, выполняет определенную логику и обслуживает результаты через IIS. В мире Java существует, например, аналогичный сценарий с Apache и Tomcat.

Поскольку веб-серверы хорошо подходят для статического контента и серверов приложений для динамического контента, большинство производственных сред имеют веб-сервер, выступающий в качестве обратного прокси-сервера для сервера приложений. Это означает, что при обслуживании запроса страницы статическое содержимое, такое как images/Static html, обслуживается веб-сервером, который интерпретирует запрос. Используя какой-то метод фильтрации (в основном расширение запрашиваемого ресурса), веб-сервер идентифицирует запрос динамического содержимого и прозрачно пересылает сервер приложений.

Пример такой конфигурации - Apache HTTP Server и BEA WebLogic Server. HTTP-сервер Apache - это веб-сервер, а BEA WebLogic - сервер приложений. В некоторых случаях серверы тесно интегрированы, такие как IIS и.NET Runtime. IIS - это веб-сервер. при наличии среды выполнения.NET. IIS способен предоставлять сервисы приложений.

Web Server Programming Environment Apache PHP, CGI IIS (Internet Information Server) ASP (.NET) Tomcat Servlet Jetty Servlet Application Server Programming Environment WAS (IBM WebSphere Application Server) EJB WebLogic Application Server (Oracle"s) EJB JBoss AS EJB MTS COM+

Основное различие между веб-сервером и сервером приложений заключается в том, что веб-сервер предназначен для обслуживания статических страниц, например HTML и CSS, тогда как сервер приложений отвечает за генерацию динамического содержимого путем выполнения кода на стороне сервера, например, JSP, сервлета или EJB.

Какой из них я должен использовать?
Как только вы узнаете разницу между веб-сервером и сервером приложений и веб-контейнерами, легко определить, когда их использовать. Вам нужен web server такой как Apache HTTPD, если вы обслуживаете статические веб-страницы. Если у вас есть Java-приложение с JSP и сервлетом для генерации динамического контента, вам понадобятся web containers такие как Tomcat или Jetty. Хотя, если у вас есть приложение Java EE, использующее EJB, распределенные транзакции, обмен сообщениями и другие полезные функции, вам нужен полноценный application server такой как JBoss, WebSphere или Oracle WebLogic.

Веб-контейнер является частью веб-сервера, а веб-сервер является частью сервера приложений.

Веб-сервер состоит из веб-контейнера, в то время как сервер приложений состоит из веб-контейнера и EJB-контейнера.

Веб-сервер выполняет HTTP-протокол для обслуживания веб-страниц. Сервер приложений может (но не всегда) запускаться на веб-сервере для выполнения программной логики, результаты которой затем могут быть доставлены веб-сервером. Этот пример сценария сервера веб-сервера/сервера приложений.

Хорошим примером в мире Microsoft является отношение Internet Information Server/SharePoint Server. IIS - это веб-сервер; SharePoint - это сервер приложений. SharePoint сидит "сверху" IIS, выполняет определенную логику и выполняет результаты через IIS.

В мире Java существует, например, аналогичный сценарий с Apache и Tomcat.

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

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

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

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

  • API (собственный или нет) API
  • Управление жизненным циклом объекта,
  • Управление состоянием (сеанс),
  • Управление ресурсами (например, пулы подключений к базе данных),
  • Балансировка нагрузки, сбой...

В терминах Java есть еще один: веб-контейнер (или, точнее, контейнер сервлетов). Это, скажем, между веб-сервером и сервером приложений. Веб-контейнер в терминах Java - это сервер приложений, который в основном реализует только часть JSP/Servlet Java EE и не имеет нескольких основных частей Java EE, таких как поддержка EJB. Примером является Apache Tomcat.

Граница между этими двумя становится все более тонкой.

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

Но веб-серверы передают HTML-контент в веб-браузеры (строго на основе HTTP). Веб-серверы могли обрабатывать только статические веб-ресурсы, но появление сценариев на стороне сервера помогло веб-серверам также обрабатывать динамическое содержимое. Где веб-сервер принимает запрос и направляет его на script (PHP, JSP, CGI-скрипты и т.д.), Чтобы СОЗДАТЬ HTML-контент, который будет отправлен клиенту. Затем веб-сервер знает, как отправить их обратно клиенту. ПОТОМУ ЧТО, что действительно знает веб-сервер.

Сказав это, в наши дни разработчики используют оба эти метода вместе. Если веб-сервер принимает запрос и затем вызывает script для создания HTML, НО script снова вызовет ЛОГИКУ сервера приложений (например, Получить данные транзакции), чтобы заполнить содержимое HTML.

Таким образом, в этом случае оба сервера были эффективно использованы.

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

Я прочитал много статей по этой теме и нашел довольно удобной.

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

Веб-сервер работает на компьютере, который "прослушивает" специально по каналу TCP/IP с использованием одного из "интернет-протоколов" (http, https, ftp и т.д.) и делает все, что он делает на основе этих входящие запросы... Как правило, (как определено на языке оригинала), он извлекал/сгенерировал и вернул html-страницу клиенту, либо извлечен из статического файла html на сервере, либо построен динамически на основе параметров входящего запроса клиента.

Все вышеперечисленное просто слишком усложняет что-то очень простое. Сервер приложений содержит веб-сервер, на сервере приложений есть еще несколько дополнений/расширений к нему, чем стандартные веб-серверы. Если вы посмотрите на TomEE в качестве примера:

CDI - Apache OpenWebBeans EJB - Apache OpenEJB JPA - Apache OpenJPA JSF - Apache MyFaces JSP - Apache Tomcat JSTL - Apache Tomcat JTA - Apache Geronimo Transaction Servlet - Apache Tomcat Javamail - Apache Geronimo JavaMail Bean Validation - Apache BVal

Вы увидите, что Tomcat (веб-контейнер/сервер) - это еще один инструмент в арсенале серверов приложений. Вы можете получить JPA и другую технику на веб-сервере, если хотите, но серверы приложений просто упакуют все эти вещи для вашего удобства. Чтобы быть полностью классифицированным как сервер приложений, вам, по существу, необходимо выполнить список инструментов, определенных некоторым стандартом.

Фактически Apache - это веб-сервер, а Tomcat - сервер приложений. Когда HTTP-запрос поступает на веб-сервер. Затем статическое содержимое отправляется обратно в браузер через веб-сервер. Есть ли логика и сделать это, а затем этот запрос отправляется на сервер приложений. после обработки логики, тогда ответ отправляется на веб-сервер и отправляется клиенту.

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

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

Под клиент-серверным приложением мы будем понимать информационную систему, основанную на использовании серверов баз данных (см. длинное замечание в конце раздела 2.1). Общее представление информационной системы в архитектуре "клиент-сервер" показано на рисунке 2.3.

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

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

(Здесь опять проявляются недостатки в терминологии. Обычно, когда компания объявляет о выпуске очередного сервера баз данных, то неявно понимается, что имеется и клиентская составляющая этого продукта. Сочетание "клиентская часть сервера баз данных" кажется несколько странным, но нам придется пользоваться именно этим термином.)

Рис. 2.3. Общее представление информационной системы в архитектуре "клиент-сервер"

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

Наконец, клиентская часть сервера баз данных, используя средства сетевого доступа, обращается к серверу баз данных, передавая ему текст оператора языка SQL.

Здесь необходимо сделать еще два замечания.

    Обычно компании, производящие развитые серверы баз данных, стремятся к тому, чтобы обеспечить возможность использования своих продуктов не только в стандартных на сегодняшний день TCP/IP-ориентированных сетях, но в сетях, основанных на других протоколах (например, SNA или IPX/SPX). Поэтому при организации сетевых взаимодействий между клиентской и серверной частями СУБД часто используются не стандартные средства высокого уровня (например, механизмы программных гнезд или вызовов удаленных процедур), а собственные функционально подобные средства, менее зависящие от особенностей сетевых транспортных протоколов.

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

Посмотрим теперь, что же происходит на стороне сервера баз данных. В продуктах практически всех компаний сервер получает от клиента текст оператора на языке SQL.

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

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

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

      При выполнении операторов модификации содержимого базы данных (INSERT, UPDATE, DELETE) проверяется, что не будут нарушены определенные к этому моменту ограничения целостности (те, которые относятся к классу немедленно проверяемых), после чего выполняется соответствующее действие (сопровождаемое модификацией всех соответствующих индексов и журнализацией изменений). Далее сервер проверяет, не затрагивает ли данное изменение условие срабатывания какого-либо триггера, и если такой триггер обнаруживается, выполняет процедуру его действия. Эта процедура может включать дополнительные операторы модификации базы данных, которые могут вызвать срабатывание других триггеров и т.д. Можно считать, что те действия, которые выполняются на сервере баз данных при проверке удовлетворенности ограничений целостности и при срабатывании триггеров, представляют собой действия серверной части приложения.

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

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

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

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

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

Рис. 2.4. "Тонкий" клиент и "толстый" сервер в клиент-серверной архитектуре

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

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

Рис. 2.5. "Потолстевший" клиент и "толстый" сервер в клиент-серверной архитектуре с поддержкой локального кэша на стороне клиентов

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

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

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