LINUX.ORG.RU

Минимально необходимый фреймворк

 , ,


0

2

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

Чтобы велосипед не оказался с квадратными колёсами, хочется взять уже нечто готовое в качестве базы. Из требований: пользователи с ролями и правами доступа на основе этих ролей, авторизация, минимальный ORM, чтобы не пришлось потом ручками перепиливать запросы к базе при каких-то модификациях/совершенствованиях, RESTful-стиль, логирование действий. В качестве клиентской библитеки уже выбрал webix - в нём есть все необходимые компоненты.

Язык не столь принципиален. Из PHP вроде как подходят Silex и Lumen, правда, на пыхе я последний раз писал ещё во времена версии 4.3, и все эти неймспейсы с ООП меня смущают. Из питона слышал только про джангу и писал простейшие скрипты для uwsgi.

UPD. Продвинутые шаблоны и развесистый роутинг не нужны, сервер пускай отдаёт клиенту json/xml, а тот уже сам с ним развлекается.

★★

Из PHP вроде как подходят Silex и Lumen

Где ты в silex нашёл ORM? Если прикручивать доктрину, то получится тот же symfony, вид сбоку. Кроме того, там нет ни вменяемой админки из коробки, ни скаффолдинга. Тоже самое можно сказать и про Lumen. Т.о. если нужен именно ORM и все плюшки к нему, то просто сразу бери Laravel/Symfony/Yii2.

сервер пускай отдаёт клиенту json/xml, а тот уже сам с ним развлекается

Из вышеперечисленного проще всего будет Yii2 (как технически, так и для понимания). ORM без заморочек, json/xml rest-контроллер генерируется из модели, RBAC из коробки.

no-such-file ★★★★★ ()
Ответ на: комментарий от pawnhearts

Посмотрел, он джангу с собой целиком тянет. Это так и должно быть?

lizard ★★ ()
Ответ на: комментарий от vvn_black

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

lizard ★★ ()
Ответ на: комментарий от lizard

И? Либо минимализм или много самому писать или так.

pawnhearts ★★★★★ ()

Пиши на goland. С заделом на большие нагрузки.

Jopich1 ()
Ответ на: комментарий от no-such-file

Стоит заметить, что все эти MVC, паттерны проектирования и прочие контроллеры для меня тёмный лес. В это Yii можно писать тупой императивный код? Мне, по сути, нужен простой CRUD и небольшая обвязка к нему в виде авторизации и аутентификации. Теоретически можно вообще одними возможностями базы данных обойтись, но реализация будет не ахти.

lizard ★★ ()
Ответ на: комментарий от lizard

но мне не надо слишком низкоуровневый

Я бы не сказал про aiohttp, что это слишком низкоуровнево. Тутор у них там краткий, но ёмкий http://aiohttp.readthedocs.io/en/stable/tutorial.html

vvn_black ★★★★★ ()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от pawnhearts

Алхимия умеет в асинхронщину?

Это ж памятник... Это ж ORM, в асинхронщину должны движки уметь.

vvn_black ★★★★★ ()
Ответ на: комментарий от vvn_black

Какие движки? Драйвер бд? orm тоже должна уметь, все соотв вызовы должны быть завернуты в await и функции в async. И твои обращения к orm.

Типа https://peewee-async.readthedocs.io/en/latest/ или https://motor.readthedocs.io/en/stable/

И вместо aiohttp можно взять торнадо, там больше всего из коробки.

pawnhearts ★★★★★ ()
Ответ на: комментарий от vvn_black

Прошел по твоей ссылке, там какая-то асинхронная алхимия действительно.

pawnhearts ★★★★★ ()

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

Стоит заметить, что все эти MVC, паттерны проектирования и прочие контроллеры для меня тёмный лес.

Нет такого фреймворка. К стати, их учить ещё надо, просто взять и пользоваться не получится.

anonymous ()
Ответ на: комментарий от anonymous

И зачем они тогда нужны? Уж лучше учить спринг с хибернейтом.

lizard ★★ ()
Ответ на: комментарий от lizard

Они тоже фреймворки. :) Так что да, можно одни фреймворки учить, а других нет, что все и делают. А, кстати, в этих ваших спрингах есть тобою перечисленные вещи? То есть, что нафигачить можно, я и не сомневаюсь, но чтоб из коробки «пользователи с ролями и правами доступа на основе этих ролей», «логирование действий»? Или тебе просто примитивные заготовки на тему нужны, а ты там уже разберёшься? Тогда вот оно: https://docs.zendframework.com/zend-authentication, https://docs.zendframework.com/zend-db/, https://docs.zendframework.com/zend-log/, https://docs.zendframework.com/zend-mvc/controllers/#abstractrestfulcontroller

Но без знания MVC будет тяжело.

anonymous ()
Ответ на: комментарий от lizard

Стоит заметить, что все эти MVC, паттерны проектирования и прочие контроллеры для меня тёмный лес

Достаточно прочитать туториал.

no-such-file ★★★★★ ()
Ответ на: комментарий от anonymous

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

lizard ★★ ()
Ответ на: комментарий от lizard

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

Как говорят, всё относительно. Машина иногда облегчает передвижение с точки А до точки Б, но приносит с собой дорожные правила, аттестацию, пробки, страхование, ремонт, нехватку стоянок и прочее. То же самое и с фреймворками. Они, по сути, библиотеки с акцентом на удобство стелажов, что из них сварганишь - завысит целиком от твоих умении и опыта. Если говоришь, что PHP не знаешь, про Питон слыхал краем уха и не врубаешься во все эти «MVC, паттерны проектирования и прочие контроллеры...», фреймворки тебе принесёт мало пользы, так как рассчитаны на тех, кто уже «в теме» и готовы дополнительно разбираться со спецификой фреймворка. По тому, что ты написал, просто невозможно тебе дать хороший ответ. Вот Zend Framework: формально подходит, но без знания PHP очень сомнительно, что ты в нём не разочаруешься.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.