metaclass: (Default)
[personal profile] metaclass
Сижу изучаю различные варианты реализации middle-tier, который планируется использовать в будущем для нескольких проектов. Решил пересилить свой страх и взглянуть на J2EE. А надо сказать, что для неподготовленного ума ентерпрайз жаба выглядит совершенно ирреально бредовой: миллиарды фреймворков, утилит, серверов, сотни страниц документации, проекты на ней содержат over 9000 папок и мелких исходников и xml-конфигов и вообще я не уверен, что в здравом уме и имея некую начальную свободу выбора инструментов, с этим стоит вообще связываться.

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

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

Вообще говоря, у меня уже есть почти полностью готовая основа для этого миддл-тиера, на которой я бы проект сделал очень быстро: Firebird+Delphi+ASP.NET RESTful веб-сервис. Но проблема в том, что это означает полную и окончательную привязку проектов к виндам, отказ от любых потенциальных работ с юниксами в будущем и сгнаивание мозга до состояния "сеньор-фокспро-девелопер в ВЦ НИИ Говна и Торфа, 50 лет, 30 лет опыта рисования формочек в дизайнере".

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


PS: Есть кстати, еще одна, еще более неадекватная альтернатива: сойти с ума и ударится в нетривиальщину вроде ерланга и хаскеля, начать писать самодельный миддл-тиер на чистом С и изобретать прочие велосипеды. То, что это гарантированно будет легче для нервной системы, чем J2EE и ASP.NET, я уверен. Там комьюнити меньше и не будет такого, что половина интернетов забита разнообразными фреймворками, каждый из которых настолько наворочен, что позволяет не писать код, а всего лишь парой сотен xml-конфигов сделать любое приложение.
Я вспоминаю 90-е годы, когда никаких интернетов не было, проекты были более мелкие и выбора "на чем писать" особо не было, можно было велосипеды изобретать хоть годами.

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

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

Date: 2009-12-17 02:07 pm (UTC)
From: [identity profile] alexclear.livejournal.com
Выше было написано слово "инициализируется", а не "выполняется".
Нет, не инициализируется заново каждый раз.
А что, разве в случае java сервлет каждый раз заново не выполняет обработчик запроса?
Я думал, именно в этом смысл динамической обработки.

Date: 2009-12-17 02:12 pm (UTC)
From: [identity profile] norguhtar.livejournal.com
В скрипте все переменные инициализируются заново. Если не используется pconnect то каждый раз производится переподключение к базе данных. Разница между php-cgi и mod_php в том что во втором случае php у нас висит в памяти и когда надо форкается и выполняет скрипт к которому обратились. Причем если нет акселератора, код особо не кешируется.

Date: 2009-12-17 02:27 pm (UTC)
From: [identity profile] alexclear.livejournal.com
В скрипте все переменные инициализируются заново.

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

Если не используется pconnect то каждый раз производится переподключение к базе данных.

Да и фиг бы за этим.
pconnect в тех конфигурациях, которые в вебе встречаются, вообще не нужен.

Разница между php-cgi и mod_php в том что во втором случае php у нас висит в памяти и когда надо форкается и выполняет скрипт к которому обратились.

В какой это он памяти висит и куда форкается?
Я бы даже так сказал - а зачем это он форкается, если он уже в памяти висит?
Разница между php-cgi и mod_php, как мне кажется, совсем не в этом.

Причем если нет акселератора, код особо не кешируется.

А что такое акселератор?

Date: 2009-12-17 02:46 pm (UTC)
From: [identity profile] norguhtar.livejournal.com

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

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


pconnect в тех конфигурациях, которые в вебе встречаются, вообще не нужен.

Нужен нужен.


В какой это он памяти висит и куда форкается?
Я бы даже так сказал - а зачем это он форкается, если он уже в памяти висит?

Чтобы выполнить скрипт, зачем же еще. Это причем не он сам, а apache.


Разница между php-cgi и mod_php, как мне кажется, совсем не в этом.

В чем?

Date: 2009-12-17 03:05 pm (UTC)
From: [identity profile] alexclear.livejournal.com
Вообще FastCGI технология подразумевает что у нас есть демон к которому мы отправляем запросы используя эту технологию и подразумевается, что в случае FastCGI этот демон сам запросы и обрабатывает. Это технология нужна не только чтобы fork не происходил и каждый раз с диска не читать, но и еще держать соединеия и состояние.

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

Нужен нужен.

Зачем?

Чтобы выполнить скрипт, зачем же еще. Это причем не он сам, а apache.

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

В чем?

В том, что в случае mod_php PHP подтянут в адресное пространство Apache в виде библиотеки. И никуда ему форкаться, вообще говоря, не надо, он и так уже здесь.

Date: 2009-12-17 02:47 pm (UTC)
From: [identity profile] norguhtar.livejournal.com

А что такое акселератор?

xcache, apc и т.п.

Date: 2009-12-17 02:58 pm (UTC)
From: [identity profile] alexclear.livejournal.com
Я не про названия.
Акселератор - это такая библиотека, которая использует разделяемую память.
Если бы PHP форкался, как Вы говорите, в случае использования mod_php, то, для использования разделяемой памяти нужен был бы процесс-родитель php.
Тем не менее, если на машине запущен apache с mod_php, никаких процессов php на ней нет.
Это как бы говорит нам, что php не форкается.

Date: 2009-12-17 03:01 pm (UTC)
From: [identity profile] norguhtar.livejournal.com
если php собран в mod_php и он работает как часть apache то с чего мы его увидим? Апач то как раз таки форкается активно.

Date: 2009-12-17 03:11 pm (UTC)
From: [identity profile] alexclear.livejournal.com
Апачей можно форкнуть заранее штук 20, больше все равно не понадобится.
Это в конфиге задается примерно тремя параметрами.

Date: 2009-12-17 03:21 pm (UTC)
From: [identity profile] norguhtar.livejournal.com
А еще можно добавить акселератор и тогда код будет компилироваться ровно один раз, но при этом скрипт по другому запускаться не будет. цикл будет все тот же запустились, отработали, умерли.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 25th, 2025 12:57 am
Powered by Dreamwidth Studios