Заранее извиняюсь за многословность, просто хочется более детально описать суть вопроса и проблему.
Есть фреймворк, написанный на Delphi 7, который позволяет довольно быстро разрабатывать бизнес приложения, такие как системы учета, CRM и т.п. Данный фреймворк представляет собой exe файл. Один для всех приложений. Данный файл для каждого конкретного приложения подгружает прописанные в файл настроек BPL (DLL). По сути вся бизнес логика относительно каждого конкретного проекта заложена в BPL (DLL).
Фреймворк выполняет следующие основные функции:
Стандартный каркас приложения: Главная форма, Ribbon лента, на которой подгружаются кнопки для вызова конкретных модулей. Каждый модуль оформлен в виде фрейма и подгружается системой в центральной части окна в виде Табов (Закладок).
Организация стека сообщений. Каждый модуль независим и не «знает» о существовании других модулей. Для вызова определенного модуля и для обмена между модулями информацией, организована служба сообщений.
Организация основных CRUD функций (модуль просмотра списка данных по таблице, добавление / редактирование записи, удаление, фильтрация) (аналог Django админки)
Система логирования.
Помощник работы с реестром.
Почему мы до сих пор пользуемся данным фреймворком:
1. Он позволяет быстро создавать небольшие бизнес приложения, системы учета, управления данными, CRM системы, не отвлекаясь на создание нового основного окна, каркаса приложения. Все программирование сводится к использованию стандартных CRUD заготовок или написания своего фрейма (тут имеется в виду класс TFrame). Остальное система берет на себя. За счет этого малое время разработки и низкая стоимость решения.
2. Слабая взаимосвязь модулей. Это позволяет быстро заменить один модуль на другой, не заботясь о том, как это повлияет на остальные модуля. Так как все модули общаются только сообщениями.
3. Помощники по стандартным рабочим операциям (логирование, окно о программе, работа с реестром, работа с БД (соединение, настройки соединения, форма авторизации)).
Почему решили отказаться.
1. Разработка собственная, слабо документированная. Новым сотрудникам приходится тратить значительное время, чтобы разобраться с нюансами работы фреймворка. Помимо этого очень ограничена возможность привлекать фриланс – программистов.
2. IDE Delphi 7 мягко говоря устарела. Переход на более новые версии IDE и языка, неизбежно приведет к временным затратам на перевод, адаптацию и переписыванию уже готового кода, да и проблема 1 при этом не исчезнет.
3. Программистов Дельфи становится все меньше
4. Ну и ряд других уже чисто субъективных проблем
В общем, сам вопрос. Есть ли платформа или фреймворк бесплатный или платный, хорошо документированный, позволяющий безболезненно отказаться от старой рухляди пережитков прошлого и начать реализацию проектов по новым технологиям, не в ущерб скорости разработки?
Вообще в среде WEB разработки с этим все более чем отлично. В этом плане, например фреймворк YII на PHP или Django на Python полностью покрывает наши потребности для разработки простых систем учета, все «фишки» нашего фреймворка или реализованы, или просто не нужны в свете новой платформы. Но некоторые заказчики упорно требуют создание Desktop приложений.
Попробуйте поискать в аптеках таблетки «от Делфи», поспрашивать на форумах. За столько времени уже должны быть проверенные решения, которые помогут.
Кстати, про эмуляцию десктопных приложений. Гугл в своей ОС продвигает подход, да и вообще он известный, что приложение создаётся как веб, но с локальным сервером. И имеет чётко регулируемые права. Плюс в том, что оно в 2 счёта переносится в веб при надобности, а минус может быть в скорости отклика и рендеринга.
Пользователи хотят десктопное приложение не из за того что надо разворачивать локальный веб сервер, с этим проблем особо нет, даже под Windows. Им не нравится именно веб интерфейс и то, что надо запускать программу в веб браузере. Дословно они говорят, хочу как в 1С (или другая декстопная известная программа).
Плюс есть момент, когда к компьютеру необходимо подключать дополнительное оборудование, наподобие сканера штрих кодов, считывателя карт и т.п, или еще что нить по COM порту. Тогда уже в веб приложении будет неудобно разрабатывать.
Вообще интересно, и в интернет немного информации, по поводу как оптимально быстро разрабатывать много небольших, практически однотипных десктопных приложений.
Из всего что есть, приходит на ум только 1С. И что, больше нет альтернатив? Я конечно понимаю, что есть компании с собственными наработками, которые позволяют им в кратчайшие сроки разработать простенькую систему учета. Но эти наработки закрыты, неужели нет чего либо общедоступного, общеизвестного, пусть даже платного?
Им не нравится именно веб интерфейс и то, что надо запускать программу в веб браузере.
Вопрос решаемый Chromeless-ом (XULRunner). Как выглядит при этом веб приложение зависит от авторов приложения, а выглядеть он может как угодно.
Плюс есть момент, когда к компьютеру необходимо подключать дополнительное оборудование, наподобие сканера штрих кодов, считывателя карт и т.п, или еще что нить по COM порту.
Вообще если ценник решения на делфи и веб приложение будут сильно отличаться, то нужно думать многих уже перестанет напрягать необходимость работы из браузера.
Не советую уходить с Delphi. Сейчас по работе делаю проекты и в XE2 и в VS студии 2012 c#. XE 2 уже достаточно хороша (последующих не пробовал а на дворе уже XE5). Если работа над проектом ведётся не большим количеством персонала то особого смысла уходить на ту же студию (у которой средства коллективной разработки и тестирования более развиты) не вижу. И мне неизвестно ничего такого что можно реализовать на студии в c# чего нельзя сделать в XE2.
Проблему отсутствия общедоступного движка, который все знают и любят, вместе с проблемой обучения ему, а заодно вместе с проблемой улучшения и поддержки своего движка, можно решить одним смелым ходом:
Откройте свой движок сообществу, с исходниками, на гитхабе, и пиарьте его на всех углах! Уверен, народ подтянется и будут и изучать, и развивать, и документировать, и использовать. Если он и правда так хорош, как пишите.
Или время десктоп приложения безвозвратно уходит? Сейчас перспективнее разрбатывать на веб или на мобильные платформах: iOS, Android? Соответственно в веб куча фреймворков, позволяющих ускорить разработку приложений, причем эти фреймворки общеизвестные и популярные, а вот для десктоп приложений такого выбора особо нет.
В принципе есть для Java фреймоврк Spring, даже его форк есть для .Net. Но это тяжеловесные фреймворки, они будут полезны для приложений корпоративного уровня. А вот чтобы быстро «клепать» системы учета, CRM. такие есть?
Это я же и интересуюсь. Просто переформулировал немного вопрос чтобы рассмотреть варианты различные. Думал может так получу больше ответов. Но увы. Пока не очень густо. Два варианта. Один платный и довольно сильно платный, и причем я ранее пользовался компонентами от DevEx под .Net, ktn 5 — 6 назад. Раньше по крайней мере, приложение существенно тормозило при использовании DEvEx. Не знаю как щас.
Второй вариант на питоне. Довольно необычный подход, десктоп приложения по моему не совсем та область где питон силен, но в ближайшее время попробую установить оба варианта и рассмотреть.
Но уже все больше склоняюсь к варианту все-таки уйти на веб. Что нить типа связки YII + Ext JS. По моему по удобству интерфейса не должно сильно уступать десктоп приложениям.
Я лично тоже за веб. По своему опыту скажу, что у меня в компании мы когда-то разрабатывали десктоп, при чем это была JAVA+Oracle. Сейчас только веб, при чем PHP+MySQL. И я не считаю это какой-то деградацией. Конечно в основном специфика наших приложений такова, что они просто должны быть в вебе, иначе никак (платежные системы). Но мы делали системы, которые вполне могли бы работать в локальной сети, но все равно мы делали веб, потому что это удобнее. Удобнее разрабатывать, удобнее внедрять, обновлять, удобно для пользователей (нужен только браузер). Веб — это перспективно.
У нас был случай, мы дописывали какую-то систему на делфи, и перед этим спросили, может вам ее переписать на веб? Заказчик говорит: «нет, нам НИКОГДА не понадобится заходить в нашу систему извне». Ну ок, пишем на Делфи и Firebird. Проходит наверное месяца два, и тут заказчик говорит, что часть их офиса переехала, и им надо заходить в систему извне. В итоге пришлось настраивать VPN, чтобы пробросить соединение с БД, но работало все это мягко говоря не очень.
Спасибо за развернутый комментарий. Это мне придает все больше уверенности что от десктоп надо отходить. В принципе у нас в штате есть программисты на PHP и по сути опыт разработки веб решений тоже есть. На PHP и на Python. Но обычно мы разрабатывали веб порталы, с довольно простым интерфейсом. И пока есть опасения применять веб разработку для создание CRM или даже ERP систем.
Но так как мы разрабатываем одновременно и на Delphi и на веб, становится все очевиднее что использование YII или Django гораздо сильнее упрощает процесс разработки чем наш самописный фреймворк на дельфи. Да и вообще многие вещи делаются проще. Особенно обновление системы. Заменил в одном месте и все. Да и внедрение тоже упрощается.
Опять же если смотреть на монстров наподобие 1С и СКБ Контур. У 1С Предприятие если я не ошибаюсь наряду с десктоп интерфейсом есть и веб, а СКБ Контур в самом начале списка продуктов указывает Онлайн сервисы, и только в самом низу предлагает десктоп продукты.
Еще можно глянуть в сторону более высокоуровневых готовых решений, например: ru.wikipedia.org/wiki/OpenERP
Писано на Питоне кстати, есть веб-клиент и десктоп на GTK. Но я лично ничего не знаю об этой системе, особенно с точки зрения дописывания своих модулей и кастомизации.
Я его пробовал. Немного правда. Устанавливал клиентскую часть для теста. С первого взгляда выглядит приятно, но есть одно но, русскоязычную документацию, да и вообще любую документацию, развернутую, по данному фреймворку не нашел. Вообще я пробовал форк этой системы, Tryton
Ну вообще информация о данных фреймворках довольно скудная, я не нашел примеры успешных крупных внедрений, продуктов на данное платформе. Например если взять тот же XAF на нем официально разрабатывает Галктика свои ERP, тоесть уже как то вызывает доверие. А тут очень скудная информация, или я не там искал.
Проблема в том что у нас проекты еще на Delphi7. Так уж получилось. И переход на XE2 или другую более старшую версию, потребует довольно немало усилий. На счет реализации проектов, вы правы, я не встречал проектов которые можно было бы реализовать на С# но нельзя на Pascal.
Но во первых, популярность языка Паскаль, не так высока, и на практике сталкиваемся с нехваткой специалистов, на тот же аутсорс хотябы.
Во вторых структура языка, требует писать довольно много лишних слов, те же degin, end или объявление переменных только в начале функции, или объявления структуры классов только в специальном разделе модуля, отдельно от реализации. И так много чего по мелочам. У нас практически одинаково сейчас используется и Delphi и C# и на практике получается что на С# быстрее разрабатывать ПО.
И еще плюс C#, если десктоп приложение, понадобится потом расширить веб версией, то для C# это вообще не проблема, необходимо переделать интерфейс на веб, а вся логика не потребует серьезных изменений. И все это можно будет расширить на ASP.net. C Delphi такой трюк не пройдет, и придется всю логику писать на другом языке или извращаться с библиотеками на Дельфи и CGI