Бързо разработване на уеб приложения с уеб инструментариум

Прекарвам много време (всъщност твърде много време) в разработване на бек-офис приложения, чиято основна цел е управление на съдържанието и конфигурации на уеб приложения. Ето как мога да опиша тези приложения:

- Made with PHP
- Using a MySQL or Postgres or SQLite database
- Made of a lot of pages and features
- Very simple features, mostly data CRUD (create+read+update+delete into the database)
- Mostly made of forms
- UIs are usually quite simple (html + css + very basic javascript)

Целият код за достъп до данни в тези приложения разчита на библиотека, която разработих преди години и използвам отново всеки път, когато мога. Тази част не отнема много време.

Това, което отнема време, е частта от потребителския интерфейс и най-вече проектирането на списъци с данни и формуляри. Използването на WYSIWYG редактор би имало много смисъл тук, освен тези, които пробвах (Dreamweaver, Frontpage, Expression, Eclipse, ...) всъщност не го правят много по-бързо, защото генерираният код често е раздут и тези инструменти могат Не разчитайте на персонализирани библиотеки като тази, която направих и използвам.

Реших, че използването на Web Tookit може да бъде друг начин да отделя по-малко време за разработване на тези инструменти. Така че, преди да прекарам твърде много време в търсене на перфектния инструментариум, ще оценя вашите мнения и опит по този въпрос.

Отказ от отговорност: Не търся съвети за това как MVC е правилният начин и как CodeIgniter/Zend/WhatEver е рамката, която трябва да използвам. Въпросът ми не е за рамките или шаблоните за проектиране, върху които трябва да изграждам приложенията си. Въпросът ми е относно използването на правилния инструмент, за да направя разработката на прости уеб приложения по-бърза, а кодът им още по-позволен за повторна употреба.

Има ли страхотен RAD инструмент за уеб приложение, за който не знам?

Кой инструментариум използвате за прости, но тежки уеб приложения?

Има ли добри, леки, нераздути, надеждни инструменти, написани на PHP?

Благодаря предварително !


Редактиране: Засега не получавам много обратна връзка :/ Наясно съм, че въпросът ми е много широк, но съм сигурен, че много хора работят по същия вид проекти, за които говоря, и са подобрили производителността си чрез използване на набори от инструменти като GWT, Wicket и подобни. Разкажете ми за това, моля :)


Редакция от 28 септември : Благодаря на всички за интересните отговори. Това, което търся, не е покрито от никаква рамка, която бих могъл да опитам през последните месеци. PHP вероятно не е най-добрият език, който да използвам за моята визия за RAD, но тъй като това е език, който познавам много добре, и тъй като не искам да прекарвам твърде много време в изучаване на Python толкова добре, колкото познавам PHP (за момента) , реших да го направя сам. Всеки път, когато имам конкретна нужда от джаджа, я кодирам по най-използваемия начин...дотук добре :)

В даден момент може да отворя този набор от инструменти и ще ви уведомя.


person Nicolas    schedule 03.08.2009    source източник
comment
Не съм сигурен дали питате за генератор на кодове? Генерирането на CRUD страници трябва да бъде максимум няколко дни работа   -  person Slartibartfast    schedule 06.09.2009
comment
Няколко месеца по-късно, но всъщност написахте ли PHP инструментариум? Като се има предвид, че няма много хора с отворен код, вашето би било добра идея.   -  person dutchmega    schedule 23.05.2010
comment
Успях да убедя работодателя си да го финансира (позволи ми да работя по него в работно време). Което го прави собственост на моя работодател, така че за момента няма да бъде с отворен код. Не е невъзможно, но няма да е преди няколко месеца :/   -  person Nicolas    schedule 27.05.2010


Отговори (9)


PHP проектът, върху който работя през последните няколко години, е много подобен. Тежък на формуляри, тежък на сървърната логика, но много излишно кодиране на формуляри. Твърде още по-лошо е, че не всички форми бяха, понякога всъщност трябва да направим фантастично оформление (дори просто правенето на дървовидна контрола е болка без библиотека), а домашният характер на потребителския интерфейс означаваше, че ще се боря странности на браузъра от началото до края.

И така, трябва да помисля каква би била по-добра архитектура. Имахме нужда от много мощни контроли на формуляри, богати мрежи, богати дървета, разширено оформление и трябваше да мигрираме към това постепенно. Нито една от рамките на PHP не изглеждаше подходяща. След това направих крачка назад и осъзнах, че не трябва да е PHP, може да е и javascript. Вече имахме изискване за javascript, така че беше добре да изминем разстоянието с него. Първо погледнах по-малките библиотеки, jquery, prototype, но стана очевидно, че те не правят достатъчно. Така че разгледах Dojo, ExtJS, YUI, всички наистина тежки инструменти за javascript и се спрях на ExtJS като имащ най-добрите контроли.

Имахме структура на потребителския интерфейс, която разчиташе до голяма степен на iframes, рамка за навигация отвън, рамки за приложения вътре в нея, рамки за функции вътре в това и т.н. Това, с което стигнахме, е, че мигрираме тези отвън навътре. Всичко се превръща в ExtJS и всичко живее в една и съща страница. Кодът от страната на сървъра се запазва същият, но е мигриран в уеб услуги. В същото време интегрирахме zend framework и пренасяме към нея някои от нещата, които наистина не трябва да правите у дома, като удостоверяване и превод.

Крайната цел е да можете да напишете само бизнес логиката, без да се налага да се забърквате с всички шаблони. Твърде рано е да знам дали подходът ми ще успее, но мисля, че посланието ми ще бъде да бъдете критични към вашата кодова база и да решите кои части искате да продължите да пишете сами и кои части искате да възложите на библиотека.

person Joeri Sebrechts    schedule 27.09.2009

Моля, опитайте http://agiletoolkit.org/. Мисля, че ти трябва. Резултати с минимално време/код.

person romaninsh    schedule 07.04.2011
comment
Моля, уверете се, че хората знаят, че това е ваш собствен проект; изисква се разкриване. (Отнася се и за много от другите ви отговори?) - person Arjan; 08.04.2011
comment
@Arjan Благодаря. Опитвам се навсякъде, където е възможно. Той е с отворен код и е свободно достъпен. - person romaninsh; 08.04.2011

В момента използвам клас солидни формуляри за изобразяване на HTML формуляри с валидиране от страна на клиента и сървъра и клас база данни за писане на SQL. Мога да получа CRUD раздел на моята администраторска конзола в около 10 реда код. Сам написах тези класове, за да мога да ги използвам повторно във всичките си проекти. Надяваме се, че това ви дава някои идеи?

Аз лично бих стоял далеч от инструментите WYSIWYG.

person Al.    schedule 03.08.2009
comment
От любопитство, можете ли да ми кажете повече за класа, който използвате за изобразяване на вашите html форми? За WYSIWYG инструментите стигнах до същото заключение. Въпросът ми е повече за набори от инструменти, които могат да бъдат описани като инструменти, които помагат за програмно генериране на UI елементи. Имам чувството, че могат да бъдат доста страхотни за повторно използване на кода и търся свидетелства за това. - person Nicolas; 03.08.2009
comment
Класът на формуляра има абстрактен клас за елементи на формуляр с подкласове за полета за въвеждане, текстови полета, селекции и т.н. Така че създавам нов обект на формуляр, след което добавям полета (с ID, етикет, регулярен израз за валидиране и подсказка с мишката) и накрая поискайте HTML да го изобрази. Когато POST данните се върнат, създавам обекта на формуляра както последния път, зареждам POST данните и проверявам валидирането. Мога да потвърдя, че повторната употреба е страхотна :) - person Al.; 03.08.2009
comment
Това е почти начинът, по който го правя и аз. Винаги съм много любопитен за начина, по който хората се справят с този тип класически неща, защото това е нещо, с което се занимавам често и всяко подобрение в тази област винаги е добре дошло :) - person Nicolas; 03.08.2009

Тествам NuBuilder.com, открих, че го прави след дни, на пръв поглед изглежда обещаващо. Ако погледнете, моля, изпратете ми отзивите си!

person Community    schedule 21.08.2009

Може би да приемете или създадете „базирана на приложение“ инфраструктура като Django? В случая на Django общността е създала някои мощни базови линии като Pinax.

person orip    schedule 30.08.2009

Мисля, че Symfony може да е правилният начин, защото, подобно на вашите приложения:

  • написано е на PHP
  • ORM, базиран на Propel/doctrine (така че можете да използвате MySQL, Postgres или SQLite)
  • Архитектурата и използваните модели ще ви помогнат със сложни приложения
  • Ще намерите инструменти, които ви помагат да отстранявате грешки, документирате и тествате вашето приложение
  • Създаване на формуляри, валидиране, l10n & i18n, тестване, AJAX е лесно (форми в symfony са обяснени тук, вижте го)
  • прототипирането на вашите уеб страници, докато разработвате вашето приложение, е лесно

Други инструменти/практики, внедрени в рамката на symfony, които ще направят живота ви лесен:

  • пълна конфигурация с помощта на YAML синтаксис (лесен за четене и разбиране)
  • функцията за скеле генерира за вас прост CRUD интерфейс за редактиране на вашите данни.
  • не е нужно да се притеснявате за дезинфекция на формуляр за кодиране, сигурност, кеширане, ACL; необходима е конфигурация, но без тежко кодиране.

Единственият недостатък е, че трябва да прочетете малко документация, за да разберете "начина на symfony да правите нещата". Но хей, добрата рамка е 20% код и 80% добри практики.

Искам да кажа, че дори и да не искате да използвате Symfony за вашия проект, трябва да проверите неговите функции и вградени инструменти, защото това са инструментите, които искате за вашия проект.

person Brian Clozel    schedule 01.09.2009

Започнах да използвам Django и има много полезни функции, особено. вграденият администратор (за общи CRUD неща) и наистина страхотен код за обработка на формуляри и изобразяване на джаджи. Бих предложил да погледнете, дори и да не планирате да използвате python, просто за да добиете представа.

Споменахте, че не искате съвет относно „Използване на X framework“, тъй като това е повече за RAD & UI/форми, отколкото за системна архитектура. Но открих, че добрата рамка помага също толкова много с потребителския интерфейс и формите на нещата, колкото и с архитектурата. Това означава, че докато рамките са чудесни за големи проекти, те също са много полезни за намаляване на излишъка на кода. Започнах да създавам свои собствени помощни функции в PHP, които щях да копирам от приложение в приложение, което автоматично изобразяваше HTML формуляр въз основа на няколко параметъра. Дори след много работа, това беше много рудиментарно в сравнение с това, което Django предлага, и в общи линии пишех своя собствена рамка.

Мисля, че може да търсите инструмент в стил GUI, който да ви помогне, но може да откриете, че добрата PHP рамка е по-полезна в този случай. Най-малкото опитвали ли сте да създадете свои собствени помощни библиотеки? Знам, че те ми помогнаха много.

Прост пример:

function renderInput($name, $value="") {
    print "<input type=\"input\" name=\"" . htmlentities($name) . "\" value=\"" . htmlentities($value) . "\" >";
}
function renderRadios($name, $value="", $choices=array()) {
    for ($choices as $cvalue) {
        print "<input type=\"checkbox\" name=\"" . htmlentities($name) . "\" value=\"" . htmlentities($cvalue) . "\" " . ($cvalue == $value ? "checked" : "") . ">";
    }
}

И надграждайте оттам. Глупави неща като това правят създаването на формуляри много по-бързо. Една добра рамка ще издуха това от водата. И съм сигурен, че горното има някои правописни грешки, не съм работил с PHP от малко.

Ако това не е това, което търсите, можете ли да добавите още нещо към въпроса? Любопитен съм.

person rocketmonkeys    schedule 28.09.2009

Въпреки че питате за PHP + MySql, бих искал да ви препоръчам да опитате OutSystems Agile Platform.

Можете да създадете просто приложение CRUD за по-малко от 10 минути и да го развиете, докато преминавате към по-сложна система.

Изтеглете изданието на общността безплатно от www.outsystems.com.

Най-добри,

person Mário André Araújo    schedule 05.07.2010

Не съм сигурен, но изглежда, че Tibco General Interface (http://www.generalinterface.org) е това, което търсите.

person pashute    schedule 05.05.2011