Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Какую платформу и язык выбрать для веб проекта?  (Прочитано 28843 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« : 20-11-2014 17:31 » 

Здравствуйте! Хочу сказать спасибо форуму Весельчака - это Люди, которого помогли мне начать программировать лет 10 назад. Сейчас зашел и прям ностальгия. Наверное буду читать и писать здесь снова.
И снова я с глобальным вопросом.
У меня есть готовый проект состоящий из программ статистических расчетов.
Расчеты разные, но алгоритм взаимодействия с пользователем одинаков.
1. Загрузка пользователем исходных данных в достаточно большие таблицы руками, copy paste либо из БД
2. Расчет результатов, в ходе расчета бывает диалог с пользователем - например на выбор пользователю дается 2 алгоритма либо пользователю нужно ввести дополнительное значение
3. На экран выводятся результаты расчета - табличные данные и график
4. Результат расчета с графиком можно передать в Ворд, можно сохранить в БД

Такое взаимодействие и математика прекрасно реализованы в Delphi + MSSQL.
Мне нравятся удобные таблицы для ввода, работа пользователя с формой, когда в таблице он может выбрать из ComboBox его вариант и на лету меняется вид таблицы. Все это легко сделать в исполняемом файле.
Сейчас встал вопрос о переводе проекта на web интерфейс т.к. количество пользователей растет и поддерживать их все труднее. И вот сейчас думаю на чем писать проект.
Delphi, SQL - навыки достаточные для такой работы.
C++ - подзабыл, могу вспомнить и легко переложить математику из pascal в C++
html,php - легкая математика, работа с БД, но не более - делал как-то "Электронную библиотеку" - по сути это работа с БД + морфологический поиск используя готовые библиотеки
Net Studio  -  пробовал asp лет 10 назад, очень понравилось, но тогда выбрал для себя Delphi основным языком так как был с ним уже хорошо знаком.

Вот что выбрать, склоняюсь к ASP т.к. там, как я помню, можно визуально проектировать "форму" как в Delphi, но можно ли с ASP создать такой же удобный интерфейс как у exe файла? Может есть еще платформы на которых реализовывают такие проекты, может Borland что-то подобное делает на паскале (чтобы расчетную часть меньше переписывать)?

Заранее спасибо.
Записан

Кто выпил весь кофе!
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 20-11-2014 18:01 » 

ASP не создает UI ни разу. UI делается из HTML+JS. Т.ч. серверная часть может быть любая.

За себя скажу, что не рекомендую завязываться на платформу MS - ни языком, не web-сервером, ни СУБД. Также не рекомендую PHP, даже если он на первый взгляд кажется проще.

Кстати, HTTP-сервер можно написать на Дельфях. Ведь этот язык ты знаешь лучше.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 20-11-2014 18:30 » 

Спасибо.
Насколько я помню в Net Studio было какое то подобие дельфийской формы на которой можно было расположить элементы ввода и управления. А сама студия формировала уже html c js. Меня вот это привлекает.
Когда я писал программу в Delphi большую часть времени я бился над пользовательским интерфейсом, если сейчас вручную используя html мне писать пользовательский интерфейс я завязну на долгое время.

HTTP сервер на Дельфях - я понимаю это дельфийская программа будет формировать html страницы, допустим так Writeln(varfile, '<html><head> .....')? Я думал над этим, даже пример находил и пробовал, но честно скажу - я так хочу максимально возможно избавиться от ручного писания html кода.

Честно, cайты aspx, которые я видел по работе были в основном написаны за госденьги и большинство было просто уродство, да и вообще прилично выглядящих подобных онлайн программ не припомню, например таблица для ввода значений, собранная из input получается такой не удобной, что пользователи не будут ее заполнять, нужно что-то более приближенное к тому же StringGrid.
Я подотстал в веб-технологиях поэтому прошу уважаемых программистов ткнуть пальцем в какую сторону смотреть.
Записан

Кто выпил весь кофе!
zubr
Гость
« Ответ #3 : 20-11-2014 20:21 » 

Ну для красивости есть всякие готовые компоненты типа JQuery. Динамику все равно придется программно выводить writeln (Delphi) или echo (PHP).
У php есть свои преимущества, что в статическую html-страницу можно вставлять вставки <php>.
В варианте с Delphi можно, чтобы весь html-код не формировать программно, создать на сервере html-файлы шаблоны, которые уже в динамике модифицировать.
Записан
Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 21-11-2014 07:33 » 

Простите наверное за тупой вопрос. И все таки перед тем как выбрать что-то, спрошу у знающих людей.
Есть ли в web возможность сделать для пользователя ввод табличных данных как в stringgrid?
То, что я пока нашел в интернете красиво, но удобством пользования не отличается.
Допиленный дельфийский stringgrid умеет копировать, вставлять, двигаться курсорными стрелками, встраиваются comboboxы и очень удобен для ввода моим пользователям. Это главный элемент работы пользователя. Крайне не хочу, чтоб программа при переходе на Веб потеряла в удобстве работы.

Остапа понесло...
Кто что знает про Intraweb - VCL for Delphi, отпишитесь, пожалуйста!!!
« Последнее редактирование: 21-11-2014 08:05 от Ilia » Записан

Кто выпил весь кофе!
zubr
Гость
« Ответ #5 : 21-11-2014 08:17 » 

Не знаю, есть ли что то готовое типа stringgrid в виде готовых java-script компонентов. Но:
1. В связке html java-script вполне можно соорудить что то похожее, а то и поудобнее.
2. Можно посмотреть в сторону flex или java-аплетов. Во flex точно есть аналог stringgrid.
3. А что мешает сделать клиентом ваше дельфийское приложение, которое будет данные получать с сервера и если надо обновляться оттуда?
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 21-11-2014 09:18 » 

Та не вопрос
На любой вкус Улыбаюсь
http://www.sitepoint.com/15-best-javascript-charting-libraries/?utm_medium=email&utm_campaign=SitePoint+Newsletter++20+November+2014&utm_content=SitePoint+Newsletter++20+November+2014+Version+A+CID_688ee538f700756ed47f839c6f335fff&utm_source=CampaignMonitor&utm_term=15%20of%20the%20Best%20JavaScript%20Charting%20Libraries

Это для построение графиков

Ввод данных...

html имеет такие же типы input'ов, как и система
Обернув их различными валидаторами, назначив каждому маску ввода можно получить и таблицу ввода любого вида

Не вижу здесь каких либо препятствий.

Если использовать фреймворки то работа с DOM'ом не представляет особой трудности.
вот например
http://www.datatables.net/examples/index

« Последнее редактирование: 21-11-2014 09:28 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 21-11-2014 09:24 » 

HTTP сервер на Дельфях - я понимаю это дельфийская программа будет формировать html страницы, допустим так Writeln(varfile, '<html><head> .....')? Я думал над этим, даже пример находил и пробовал, но честно скажу - я так хочу максимально возможно избавиться от ручного писания html кода.

Бррр.... Такой подход устарел лет на 20. Не забывай, что тут у тебя не монолитное приложение, а клиент-серверное. Шаблоны + AJAX + jQuery или другая либа. Сервер только обрабатывает запросы и подготавливает данные, передавая их шаблонизатору. AJAX позволяет JS оперативно без перезагрузки страницы обмениваться данными с сервером.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 21-11-2014 09:31 » 

Кроме того, можно использовать js шаблонизаторы

http://www.creativebloq.com/web-design/templating-engines-9134396
шаблоны можно динамически формировать.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 22-11-2014 13:53 » 

Спасибо друзья за обсуждение, пока в голове все еще каша, честно, полагал, что asp.net легко справится с этой задачей, но видно надо действительно смотреть другой вариант.
Внимательно посмотрю Ваши рекомендации и напишу.
3. А что мешает сделать клиентом ваше дельфийское приложение, которое будет данные получать с сервера и если надо обновляться оттуда?
Этот вариант я думаю, но хочу чисто браузерный вариант без exe файлов и желательно без ActiveX
Шаблоны + AJAX + jQuery или другая либа. Сервер только обрабатывает запросы и подготавливает данные, передавая их шаблонизатору.
Действительно для меня лучше всего проект базировать на Delphi но я не могу понять как это в связке все работает.
Шаблонизатор - это вообще что? PHP в инете называют шаблонизатором.
Понятно, что шапку и низ страницы, меню и т.п. я буду дергать из готовых файлов
а результат расчета формировать программно, а еще в чем суть шаблонизатров?
Вот у меня допустим есть хостинг с виртуалкой.
Могу для этого проекта свой отдельный компьютер подключить к сети интернет.
ОС и веб-сервер на хостинге какие ставить и какие среды программирования ставить для разработки
и как это мне все совместить?
Записан

Кто выпил весь кофе!
zubr
Гость
« Ответ #10 : 22-11-2014 14:07 » 

Цитата
Этот вариант я думаю, но хочу чисто браузерный вариант без exe файлов и желательно без ActiveX
А причем здесь ActiveX?
У вас только к вашей имеющейся программе добавится модуль, который будет взаимодействовать с серверной программой на основе WinInet API или дельфийских компонентов.
Записан
Rimbe
Интересующийся

ru
Offline Offline

« Ответ #11 : 23-11-2014 15:18 » 

Можно использовать связку asp.net mvc с ext. Вот примеры: http://examples.ext.net/  Улыбаюсь
Записан
Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 23-11-2014 23:56 » 

У вас только к вашей имеющейся программе добавится модуль, который будет взаимодействовать с серверной программой на основе WinInet API или дельфийских компонентов.
Я понимаю, но в идеале я хочу избавиться от exe файлов на стороне клиента, переложив все на браузер.

Можно использовать связку asp.net mvc с ext. Вот примеры: http://examples.ext.net/  Улыбаюсь
Любопытно и красиво, спасибо посмотрю обязательно.

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

Кто выпил весь кофе!
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 24-11-2014 09:21 » 

Обрати внимание, что программирование на JS с jQuery будет асинхронным. Это существенно сложнее привычного синхронного - надо быть очень аккуратным и не ждать определенной последовательности срабатывания колбеков. Если нужна определенность срабатывания, то, вместо вешания второго колбека, эту функцию нужно вызвать из первого колбека.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 24-11-2014 12:24 » 

Обрати внимание...
Ok, спасибо большое, учту. Этот проект совмещаю с другими, когда есть свободное время, разгребу текучку и продолжу.
Для начала думаю попробую написать простенькое на Delphi + jQuery с простой логикой - пользователь заполнил таблицу - сервер ее сохранил - пользователь открыл таблицу - изменил - сервер опять сохранил. Если это нормально получится, остальное будет уже легче.
Записан

Кто выпил весь кофе!
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 24-11-2014 16:12 » 

Цитата
программирование на JS с jQuery будет асинхронным.
бр... а в чем асинхронность?

1. Рисуется основа DOM
2. Доступ к элемента по слектору
3. Callback - да, конечно же существует, но не это главное, и не сейчас.
4. Асинхронность представлена в виде callback? Так не все методы имеет callback. Callback методы имеют, в основном те методы, которые влияют на визуальные эффекты и на асинхронные запросы, в частности - ajax (во всех его видах)
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 24-11-2014 16:22 » 

Слав, колбеки! Много колбеков!
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #17 : 24-11-2014 19:49 » 

Слав, колбеки! Много колбеков!
Не понимаю, о чем ты...
Чесслово...
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 28-11-2014 16:00 » 

Появилось немного времени для этой задачи и нашел любопытное свойство в html5 contenteditable.
Легко можно создать простую редактируемую таблицу, из таблицы легко копируются данные (со вставкой правда надо возиться)
В Chrome все супер, но в IE 9 не работает и интернет о contenteditable неоднозначного мнения...
Что скажете мастера?
Записан

Кто выпил весь кофе!
Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 03-12-2014 18:41 » 

Разобрался с IE conteneditable нормально работает, скоро напишу простую программу Hello table! - прототип будущего проекта и покажу если кому интересно на обсуждение.
Записан

Кто выпил весь кофе!
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #20 : 19-01-2015 14:45 » 

У вас только к вашей имеющейся программе добавится модуль, который будет взаимодействовать с серверной программой на основе WinInet API или дельфийских компонентов.
Я понимаю, но в идеале я хочу избавиться от exe файлов на стороне клиента, переложив все на браузер.

Можно использовать связку asp.net mvc с ext. Вот примеры: http://examples.ext.net/  Улыбаюсь
Любопытно и красиво, спасибо посмотрю обязательно.

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

JQuery - это только вершина айсберга, сейчас чаще используются готовые фреймворки типа Backbone или Knockout. Смысл JQuery в добавлении AJAX-функциональности, т.е. в возможности обмениваться данными с сервером без перегрузки страницы. Отсюда вытекает необходимость в отлавливании изменений на стороне страницы и обновлении данных на серваке, + при необходимости, опросе сервака и отображении изменений. и для этого есть уже готовые фреймворки.

модная тема - это RESTfull сервер на стороне СУБД, который помимо GET/POST умеет делать PUT/DELETE и пр, т.е. представляет собой просто интерфейс к БД. При этом стандартом де-факто для обмена данными является JSON (который более удобен, чем XML, к тому же может быть бинарным), А транспортом является HTTP. Это - бэк-енд.

фронт-енд, само приложение,  представляет собой HTML+CSS+JS. при этом HTML отвечает за структуру данных (model), CSS - за их внешний вид (view), а скрипты - за логику их обработки (controller). В совокупности имеем тот самый MVC-паттерн, о котором так долго мечтали большевики. есс-но, что разделение это во многом условное.

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

пример такого подхода можно посмотреть здесь: http://knockoutjs.com/examples/gridEditor.html

чем это все интересно. у вас получается четкое разделение серверной части, работающей по спецификации REST, к которой можно наколбасить сколько угодно клиентов, и клиентской части, которая обменивается с сервером HTTP-запросами, при этом работая полностью на стороне клиента (и HTML, и CSS, и джава-скрипты - все это будет в конечном итоге жить в локальном кеше браузера).

следующим шагом в развитии всего этого являются такие штуки, как, например, kordova и работающий на его основе адобовский PhoneGap. это нативные врапперы под основные платформы (андроид, виндофон, мак и т.д.), "внутрь" которых засовывается, по сути, веб-приложение (тот самый HTML+CSS+JS). на телефоне это выглядит и является нативным приложением, хотя по факту это приложение представляет собой мини веб-сайт, засунутый в родной для данной платформы враппер.

я видел на практике такие решения для одной телефонной компании. мобильное приложение для телефонов (андроид, виндофон, айфон и еще чего-то) пишется с нуля и полностью 4 людьми, из которых 1 - разработчик, 1 - дизайнер, и двое - бизнесовые бумагомаратели. в обычных условиях один человек, пишущий для 4 разных платформ - это утопия, а вот приблуды вроде PhoneGap это делают вполне реальным, т.к. адаптация под разные оси сводится к допиливанию CSS, вся остальная клиентская часть не меняется.

кроме того, никто не мешает на том же дельфи наваять клиента (для винды, линуха или андроида) к этому же рест-серваку.

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

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 19-01-2015 15:40 » 

Цитата
JQuery - это только вершина айсберга, сейчас чаще используются готовые фреймворки типа Backbone или Knockout. Смысл JQuery в добавлении AJAX-функциональности, т.е. в возможности обмениваться данными с сервером без перегрузки страницы. Отсюда вытекает необходимость в отлавливании изменений на стороне страницы и обновлении данных на серваке, + при необходимости, опросе сервака и отображении изменений. и для этого есть уже готовые фреймворки.

Ой...

jquery - это framework для работы с dom объектами в клиентской части

аякс - это просто уже встроенный функционал, который "формирует" заголовок HTTP_X_REQUESTED_WITH

Цитата
стандартом де-факто для обмена данными является JSON (который более удобен, чем XML, к тому же может быть бинарным), А транспортом является HTTP. Это - бэк-енд.
Здесь нужно расставить приоритеты

Сначала транспорт (HTTP), а затем формат данных, который может быть  практически любой, который подходит для решения задач.

backend - это, грубо, сервер
frontend - клиентская часть

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

Для RESTfull - все равно нужно использовать роутеры, для валидации запросов.
Лично я пока не вижу большого преимущества использования PUT/DELETE


Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
x77
Команда клуба

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #22 : 19-01-2015 15:50 » 

и в чем ты не согласен? я все это расписывал, чтобы в итоге подвести к таким вещам, как PhoneGap, kordova, nodejs и пр. основной посыл - есть готовые фреймворки, которые реализуют большую часть рутинной работы и позволяют четко разделять фронт и бэк. о чем был твой "Ой" - я не понял, если честно )
Записан

Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #23 : 19-01-2015 17:10 » new

в формулировках.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines