Подходит ли дизайн PHP, Python, PostgreSQL для бизнес-приложения?

Мне нужно вкратце подумать о бизнес-приложении, которое я собираюсь создать. Я хотел бы разделить три уровня презентация, логика предметной области и данные, используя PHP, Python и PostgreSQL соответственно. Я хотел бы услышать, возможно, от других людей, которые уже прошли этот путь раньше, если есть проблемы с этим подходом, если я нацелен не на те инструменты и т. д.

  • Я смотрю на PHP, потому что он широко используется, достаточно зрелый, и я могу найти достаточно людей с навыками в дизайне интерфейсов PHP.

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

  • Я ищу в PostgreSQL функции уровня транзакции. MySQL здесь тоже вариант, но мне не нужно обсуждать этот аспект.

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

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

Я НЕ ищу споров между покупкой и сборкой, это другое обсуждение.

Спасибо за понимание

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
2 442
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Я лично согласен со вторым и третьим пунктами вашего поста. Что касается PHP, на мой взгляд, вы можете использовать Python и для презентации, существует множество решений (Zope, Plone ...) на основе Python.

Ответ принят как подходящий

Посмотрите на Джанго.

Код Python. Язык шаблонов, который допускает некоторые из тех же функций, что и PHP, - немного другой синтаксис.

Модель отделена от функций просмотра («бизнес-правил») и от представления. Это применяется во всем Django.

Один из распространенных вопросов: «Почему я не могу сделать - какую-то сумасшедшую PHP-подобную вещь - в шаблоне Django?» Ответ в том, что презентация не обрабатывается. Выполняйте свою обработку в функциях просмотра Django. Отобразите результаты в шаблоне как HTML.

Кроме того, в Django есть уровень ORM, который отвлекает вас от мелких вопросов, связанных с SQL. MySQL или PostgreSQL более или менее эквивалентны внутри Django.


Редактировать

«Зрелость» означает многое. Вы особо упомянули квалифицированных людей как признак зрелости.

Django - это чистый Python. Если вы сможете найти людей, занимающихся Python, они смогут изучить Django за несколько дней. Им просто нужно делать уроки.

  • Сайт на базе Django - это обычно Apache + some glue + Django. Клей может быть mod_wsgi, mod_python или mod_fastcgi. Вы должны осторожно управлять этой конфигурацией, потому что в ней есть несколько движущихся частей. Это, однако, та же проблема конфигурации Apache, что и у вас с PHP - здесь нет ничего нового.

  • Сайт Django имеет один или несколько экземпляров сервера Django, каждый с файлом настроек, сопоставлением URL-адресов и любым количеством приложений. На данный момент чистый Python.

  • Приложение Django имеет сопоставления URL-адресов, модель и представления. Все на чистом Python. Модуль протестирован с расширениями Django для собственной внутренней среды unittest Python.

  • Модель использует слой ORM. Возможно, это самая запутанная вещь в Django. Люди иногда создают очень странные модели, потому что думают либо слишком универсально, либо слишком много думают о SQL. Django - это золотая середина в основном объектно-ориентированного программирования с некоторым учетом SQL. Получите это, и вас не остановить.

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

  • У вас, вероятно, будет JavaScript (также верно для PHP и любой другой инфраструктуры веб-приложений). Здесь ничего нового.

  • Поскольку приложение администратора Django автоматически обрабатывает базовую обработку CRUD, вам не нужно писать это. Вы можете писать все, что хотите. Но это не обязательно. Это приводит вас к очень и очень мощному гибриду.

    • Вы пишете несколько сложных критических транзакций. Чистый Python, кстати.

    • Вы не пишете никаких глупых транзакций по обслуживанию таблиц. Никакой код не превосходит Python или PHP.

    • После того, как вы познакомитесь с механизмом шаблонов и CSS, вы можете настроить интерфейс администратора так, чтобы он выглядел как угодно. Это материал HTML / CSS, а не Python или PHP.

Нижняя граница. Большая часть набора навыков - это Python. ORM - синтаксически - Python, но требует некоторой осторожности, чтобы делать вещи просто и чисто. Шаблон - это собственный язык, но значительно проще, чем PHP. Остальное - это SQL, Javascript, HTML, CSS, Apache и тому подобное.


Редактировать

Зрелость Джанго

Блог Django восходит к '05, а это означает, что у них были годы солидного опыта, прежде чем, наконец, выпустили 1.0 в сентябре '08. Очевидно, разработка началась в 2003 году.

Спасибо за ответ. Больше всего меня беспокоит Django из-за относительной незрелости фреймворка. Мне нужно подумать о возможности найти множество разработчиков, которых я (или моя фирма) могу нанять для внесения обновлений в будущем. Что вы думаете о Django в этом отношении?

Randy Burgess 13.01.2009 20:22

Отличное редактирование! Спасибо за подробности.

Randy Burgess 13.01.2009 20:45

Что ж, я беспокоился о зрелости не о Python, а о структуре Django. Поймите, я не пытаюсь сломать Django, я просто пытаюсь принять обоснованное решение об уровне поддержки, доступной для поддержки технологии, если меня не будет рядом после разработки приложения.

Randy Burgess 14.01.2009 01:12

Проверьте страницу Django на предмет «разработчиков по найму», если вас интересует зрелость с точки зрения занятости. Я бы согласился использовать Django. Не смешивайте PHP и Python. В Django есть все необходимое, включая утилиты для упрощения некоторых функций.

Josh Smeaton 14.01.2009 16:54

Просто пропустите PHP и используйте Python (с Django, как уже было замечено, когда я печатал). Django уже разделяет слои, как вы упомянули.

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

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

Если у вас нет предпочтений, вы можете использовать MySQL просто потому, что он более популярен для работы в Интернете. Это приводит к появлению большего количества примеров, облегчению поиска помощи и т. д. На самом деле я предпочитаю философию PgSQL, но это не достаточно веская причина, чтобы дуть против ветра.

Я собираюсь предположить, что под «бизнес-приложением» вы подразумеваете веб-приложение, размещенное в среде интрасети, а не какое-то приложение SaaS в Интернете.

Пока вы разрабатываете архитектуру своего приложения, вам необходимо учитывать существующую инфраструктуру и людей, обслуживающих инфраструктуру, вашего работодателя / клиента. Кроме того, если компания достаточно велика, чтобы иметь такие вещи, как «списки утвержденного программного и аппаратного обеспечения», вам следует об этом знать. Имейте в виду, что некоторые элементы списка могут быть просто запаздывающими. Не позволяйте прошлым ошибкам определять архитектуру вашего приложения, но в тех случаях, когда они разумны, я бы выбрал свои сражения и придерживался вашего корпоративного стандарта. Это может быть настоящей болью, когда вы выбираете стек разработки, который действительно лучше всего работает в Unix / Linux, а затем кто-то пытается принудительно подключиться к серверу Windows, администрируемому кем-то, кто никогда не касался ничего, кроме приложений ASP.NET.

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

Что касается PG по сравнению с MySQL, любой из них работает. Посмотрите, что ваш клиент уже развернул, и, если у них много одного и мало другого, выберите это. Если у них есть существующая инфраструктура Oracle, вам следует рассмотреть возможность ее использования. Если это магазин SQL Server ... пересмотрите свой стек и не забудьте выбрать свои сражения.

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

Randy Burgess 13.01.2009 21:31

Отсутствие ограничений не означает, что не существует «более легких» и «более сложных» вариантов. Но если у вас есть реализация с нуля в организации с широким кругозором, я бы пошел с Django на PG. Это действительно здорово, и вы сможете заставить все работать очень быстро.

Erik Engbrecht 13.01.2009 22:07

Я могу только повторить то, что уже говорили здесь другие люди: если вы выберете Python для уровня домена, вы ничего не получите (совсем наоборот), используя PHP для уровня представления. Другие уже советовали Django, и это может быть неплохим выбором, но недостатка в хороших веб-фреймворках Python нет.

Просто чтобы выбросить это там ... есть PHP-фреймворки, использующие MVC.

Codeigniter делает простые, но мощные вещи. Вы определенно можете отделить слой шаблона от слоя логики.

Другие вопросы по теме