Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Что можно считать сервером приложений?


Автор: rene 22.4.2009, 22:38
Например, такие продукты GlassFish, WebSphere, JBoss, Zope называют серверами приложений.

Как вы считаете, можно ли назвать веб-сервер+PHP сервером приложений?

Несколько соображений на эту тему:
1) Сервером приложений можно считать такое серверное ПО, которое обеспечивает выполнение какой-либо логики на стороне сервера. Тогда Apache+PHP - сервер приложений.


2) Сервером приложение можно называть ПО, которое обеспечивает выполнение приложения постоянно, т.е. программы там запускаются и "живут" до тех пор пока не будут остановлены.
Тогда Apache+PHP не сервер приложений.

Так как в PHP приложение живет во время обработки обращения клиента: веб-сервер вызыват модуль интерпретатора PHP, тот выполянет программу, результат отдает веб-серверу и на этом жизнь программы заканчивается.

Складывается чувство, что когда IBM, Sun или Bea хотят продать что-то дорогое, то они называют это солидным словом "сервер приложений", а когда речь идет о пролетарском Apache+PHP, то это просто "выполнение сценариев на стороне сервера". Понятно, что в продукты именитых компаний входит больше чем интерпретатор или среда выполнения какого-либо языка, там еще развитая инфраструктура, папример : свой API, набор библиотек, каркас и т.д.

Автор: Vasay 23.4.2009, 00:03
Цитата

Как вы считаете, можно ли назвать веб-сервер+PHP сервером приложений?


Нет нельзя. 

Цитата

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


Впринципе, логично, и я бы с этим согласился, НО! Тот же TomCat, умеющий выполнять приложение постоянно, лишь контейнер сервлетов.

http://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9
Цитата

Под сервером приложений в случае Java EE подразумевается комплекс программ, реализующих концепцию Java EE и позволяющих запускать в себе Java EE приложения. К классу серверов приложений относятся такие продукты как GlassFish, WebSphere, JBoss и др.



Цитата

Складывается чувство, что когда IBM, Sun или Bea хотят продать что-то дорогое, то они называют это солидным словом "сервер приложений"


GlassFish, WebSphere Community Edition, JBoss  - бесплатны и открыты. Чем не "пролетарские" решения?

Кстати, есть вполне дешевые хостинги с GlassFish (правда не в России).

Впринципе, для разработки сайтов (порталов и т.д.), App сервер не нужен. Можно ограничится TomCat-ом. с ним великолепно работает Spring, можно использовать различные ORM библиотеки... 

Автор: rene 23.4.2009, 14:20
Цитата

Впринципе, логично, и я бы с этим согласился, НО! Тот же TomCat, умеющий выполнять приложение постоянно, лишь контейнер сервлетов.

Почему сервлет - не приложение, работающее на сервере?
Сервлет - определение придуманное Sun, как и контейнер сервлетов.

http://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9
Цитата

Под сервером приложений в случае Java EE подразумевается комплекс программ, реализующих концепцию Java EE и позволяющих запускать в себе Java EE приложения. К классу серверов приложений относятся такие продукты как GlassFish, WebSphere, JBoss и др.

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

Автор: Vasay 23.4.2009, 21:41
rene

Цитата

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


Ну попробуйте smile Изложите свою концепцию.

Автор: rene 23.4.2009, 23:25
Цитата(Vasay @ 23.4.2009,  21:41)
rene

Цитата

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


Ну попробуйте smile Изложите свою концепцию.

Мне больше нравится определение в английском варианте на http://en.wikipedia.org/wiki/Application_server.

An application server, in an n-tier architecture, is a server that hosts an API to expose business logic and business processes for use by third-party applications.

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


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


Да, это широкое определение, под которое попадет и PHP+Apache и cgi-скрипты написанные на чем угодно.
То, что в случае PHP код приложения интерпретируется для каждого запроса, а затем выгружается из памяти можно считать таким способом реализации выполнения приложения на сервере.
 

Автор: Vasay 24.4.2009, 01:05
rene

Хорошее определение.  Я понял его так:

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

Т.е. разрабатывая приложение Вам не нужно ручками реализовывать - работу с сессиями, транзакциями,  работу с контролем доступа, рабоду с БД...., все это уже реализовано на сервере приложений, Вам нужно лишь воспользоваться соответствующим API.

Согласно этому определению ни апач (даже с php), ни томкэт серверами приложений не являются.




Автор: rene 24.4.2009, 15:06
Vasay,
Цитата
Согласно ему сервер приложений должен иметь в себе реализацию некоторой (стандартной, часто встречающейся) бизнес логики.
И предоставлять API для того, что бы сторонние (third-party) приложения, запущенные на сервере, могли эту бизнес логику использовать. 


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

Цитата

Т.е. разрабатывая приложение Вам не нужно ручками реализовывать - работу с сессиями, транзакциями,  
работу с контролем доступа, рабоду с БД...., все это уже реализовано на сервере приложений, 
Вам нужно лишь воспользоваться соответствующим API.


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

Добавлено через 7 минут и 55 секунд
Определение от МС:
http://www.microsoft.com/windowsserver2003/techinfo/overview/appservfaq.mspx

Q.    What is an application server?
    
A.    We define the category of application server as the “system software that underlies the server-based execution of shared business applications.” Just as a file server delivers files to many users, an application server makes applications—often custom-built applications—available to multiple concurrent users.

В. Что такое сервер приложений?

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

Автор: rene 24.4.2009, 15:38
http://www.webopedia.com/TERM/A/application_server.html
Аpplication server 
Also called an appserver. A program that handles all application operations between users and an organization's backend business applications or databases. Application servers are typically used for complex transaction-based applications. To support high-end needs, an application server has to have built-in redundancy, monitors for high-availability, high-performance distributed application services and support for complex database access.

See the Server Types page in the quick reference section of Webopedia for a comparison of server types.

(Many thanks go out to Paul White, Product Marketing Manager EMEA, BEA Systems, for providing this updated definition.) 

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

Автор: Vasay 24.4.2009, 15:54
rene

Цитата

Позвольте с Вами не согласиться. 

Цитата

is a server that hosts an API to expose business logic and business processes for use by third-party applications.


third-party applications - это ваше приложение, запущенное на сервере. Т.е. для сервера, оно стороннее. 


А тут я с вами полностью согласен:
Цитата

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


Цитата

Ко сожалению перечня того, что должно входить в этот набор я не видел.


Если речь идет о Java, то такой перечень есть и называется  "спецификация j2ee"

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


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)