среда, 17 декабря 2008 г.

WSGI фреймворк?

Американское общество создаёт из ничего, на пустом месте своих идолов и кумиров, чтобы в любой момент иметь возможность раздавить любого зазнайку в назидание настоящим личностям и всему обществу. Оно всё сильнее начинает походить на канувшее в Лету советское, основными принципами существования в котором были — не высовываться, не сметь своё суждение иметь и что скажет княгиня Марья Алексевна.

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

Недавно Макс Ищенко попросил меня набавить публичности циклу статей Сергея Щетинина на DOU, посвященному веб-разработке на Питоне “без” фреймворков: хозчасть 1, дробь 2, квота 3.

Но иначе и быть не может, неприметно так ссылок я давать не хочу: надо либо мадригал, либо ебашить. Здесь получилось последнее, причем, простите, сквернословить я буду на весь народ и совсем не нежно. Гр-р-р… 8-[==]

Начну с того, что это первая статья, где я встретил упоминание Zope и Django в одном ряду. Я куда понимаю, что между ними общего, но зато я, кажется, понимаю, откуда у статьи растут шасси…

Знаете, я, верно, не старый еще, но текущий паттерн видел уже черт на печку не вскинет раз, и он успел мне приесться. “Посмотрите на этот жуткий огромный ворох кода! Он этакий большой, китайский, тугой, монструозный, абсолютный… Всего сего не нужно, в таком случае дозволено все сделать гораздо проще”. После этого будь по-твоему единица кода сложности “Hello World!” из пары строк. Дальше наглядный начинает развиваться, обрастает мясом, которое, по задумке автора, должно намекать, как вот так просто дозволено прописать все что угодно. На самом деле оно показывает, что виновник собирается самостоятельно пройти по тем же самым проблемам, с которыми столкнулись авторы “больших и сложных” фреймворков при развитии их с уровня “Hello World!” до чего-то, чем допускается хотя бы пользоваться.

Но, тем не менее, я забегаю вперед… Если сигара надкушена по порядку, то мое тотальное рознь с циклом статей Сергея сводится к двум большим частям: архитектурной и практической.

Архитектурно

Многие питонисты уже какое-то нужный момент активно пытаются строить “чистые” фреймворки, используя в качестве клея компонентов… WSGI! Нет, серьезно — WSGI!!! Простой отчёт присоединения питоньего заключение к веб-серверу пытаются повернуть так, для того чтобы он задавал, ни много ни бедно, архитектуру приложения. Ребята, так не получится. В WSGI нетрудно нет средств для связи компонентов фреймворка. И коль скоро вы придумываете над WSGI какие-то приманка протоколы и расширения (Paste тот же), то это уже не тот самый WSGI, а это реально ваш собственный yet another фреймворк, от создания которого вы хотели дать ходу.

И не то вы сейчас думаете про мимема “middleware”, то почитайте, будь по-вашему (пожалуйста, все как есть) разъяснения Филиппа Эби — автора WSGI — для что такое? middleware идет, а для что нет.

Практически

Вторая и третья часть цикла — про WebOb, некую библиотеку, которая является крайне показательным случаем целом того, о чем я говорю.

В ней, примерно сказать, присутствует незнакомый полезный код, кто облегчает разбор HTTP-запросов и ответов. Им, кабы взять Сергею, удобно располагать (это ни в какой мере без иронии). Но почему в ней нет — это присущего большим фреймворкам архитектурного каркаса (разбора URL’ов, разделения логики на уровни по MVC-модели, шаблонной системы).

Простота? Ни комбинация из трех пальцев… Кабы вы хотите уйти с уровня “Hello World!”, вам все равно придется все это создать руками. К примеру сказать, Сергей описывает во следующий части упрощенный объяснение с функцией forum_app, в которой в десятке строк императивной логики разбираются два вида URL’ов для некого форума. У меня в Cicero — не самом фичастом форуме — таких видов URL’ов под 30 мрамор. Разбор их “в лоб” цепочкой if’ов достаточно выглядеть убойно нечитаемо. То-то, да, придется или в муках сочинять собственную систему, которая будет ничем не самое лучшее вылизанных опытным путем существующих, либо — неожиданность — взять существующую.

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

По поводу вылизанности существующих решений. Например в Джанге есть дефинитив организации редиректов с устаревших URL’ов на новые при изменении их вида. Вы серьезно хотите ударяться такими нудными вещами в вашем проекте ручной? Или положительно хотите привязать себя к одному веб-серверу с его rewrite’ами только из-за схемы URL’ов?

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

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


В итоге, обобщение мой из целом сего такого порядка. Многие умные штаты пользуются веб-фреймворками не вследствие того, что “гоняются за иллюзорным «лучшим»”. Это чисто прагматическое излияние того факта, что предметная область довольно сложна, и в ней лучше работать вместе и кряду. Кое-кто подходы тут не работают.




Против простуды

Навесы для автомобилей

The Office

Комментариев нет: