Форум сайта python.su
Доброго времени суток, ув. форумчане.
Во-первых, только вливаюсь в ряды питонщиков - поэтому просьба сильно по почкам не бить. Однако, топик прошу оставить в разделе для экспертов, ибо задача не для новичков :)
Во-вторых, пишу свое первое приложение (кроме Hello, world) и встретился с несколькими возможными проблемами. Все они решаемы тупым методом деления на разные дистрибутивы ПО - но вариант этот мне не очень нравится: поддерживать в актуальном состоянии одну ветку для одного программиста всегда проще, чем три.
1. Архитектура
2. Визуализация
3. Установка на разные платформы
Для того, чтобы точнее задавать вопросы - опишу суть задачи.
Необходимо написать приложение, которое будет работать в двух эпостасиях:
1. Как десктоп-приложение на POSIX/Windows системах
2. Как вебсервис
Задачи таковы: софт будет использовать сеть в целях доступа к некоторой информации с последующим ее анализом. Вполне возможно, что будет использовать прокси для анонимности. Т.к. не все себе могут позволить широкие каналы (увы) - в десктоп приложении планируется поставить галочку “использовать вебсервис”, которая будет включать маршрутизацию запросов на центральный сервер/один из группы серверов и получать уже обработанные данные.
Таким образом, в двух вариантах работы (и на десктоп и на вебсервисе) должна иметься возможность принимать/обрабатывать запросы и отдавать результат. Для этой цели хочу использовать XMLRPC/SOAP запросы и отделение функциональной части приложения в отдельные библиотеки, дабы апдейтить код централизованно (исправил что-то - отразилось и на клиентах, и на сервере)
Но использовать XMLRPC/SOAP на десктопе, по крайней мере, странно, не правда ли? Пока забьем на этот вопрос- он решаем архитектурно.
Второй вопрос касается непосредственно визуализации:
1. Вебсервис должен отдавать xml или любой другой формат, который будет ближе к сердцу - тоже пока некритично. Вполне возможно, что будет еще web-интерфес к этому делу (c намеком на JSON).
2. Десктоп-приложение должно отображать данные по своему. В качестве универсальной DE хочу использовать GTK (не очень хочется поддерживать множество оконных интерфесов - это путь регрессивный изначально).
А теперь сам вопрос: как грамотно разделить отображение от логики. Понятно, что есть MVC - но мне он как-то не очень нравится по причине разнородности сред (Web/Desktop). Можно применить MVC в веб-части - просто рендерить данные в HTML/XML/JSON - это не проблема. Можно применить в Десктоп-приложении - суть та же. Но чтобы работа была прозрачной и в web-контроллере и в контроллере десктоп-приложения… Хех =)
Если есть какие-то пожелания или кто-то наступал на грабли по приниципам, описанным мною - прошу высказаться. Насколько оправдано использование GTK и стороннего формата удаленного вызова процедур. Насколько оправданно пытаться написать универсально? Задача ведь нетривиальная далеко (до сих пор не видел софта, который работает и под веб и под десктоп).
Третье, что меня очень смущает - процесс инсталляции моего приложения под win. Видел в сети набор “All-in-One win32 python installer.” - если кто работал, выскажите свое мнение, если не сложно… Про никсы пока молчу: пока Nix-системы удел гиков, в основном - сами разберутся )
ЗЫ: Задавал вопрос на винграде - пока ответов нет. Может, хоть здесь помогут :)
Заранее, спасибо ;)
Офлайн
jeureyОтвечу на этот вопрос: py2exe выход из проблемы. Собираешь и не задумываешься над установкой пользователями.
Третье, что меня очень смущает - процесс инсталляции моего приложения под win.
Офлайн
подивіться як приклад http://www.openobject.com/
тільки вам ГТК клієнта потрібно буде переробляти так щоб був механізм синхронізації і використання локальної бази (наприклад SQLITE/Firebird) з центральною, щоб той клієнт міг виступати і автономною програмою
Офлайн
clopomorНе совсем понимаю украинский. Я так понял, что прийдется отдельно работать над GTK-клиентом, чтобы синхронизировать локальную базу с центральной.
подивіться як приклад http://www.openobject.com/
тільки вам ГТК клієнта потрібно буде переробляти так щоб був механізм синхронізації і використання локальної бази (наприклад SQLITE/Firebird) з центральною, щоб той клієнт міг виступати і автономною програмою
Офлайн
jeureyТак, а зачем вообще делать это различие? Напишите всю систему как web приложение. Сильно упростите себе жизнь.
Все различие между тремя платформами сводится к формату вызова локальных/удаленных процедур. Единственное между ними различие должно сводиться только к визуальному интерфейсу.
Офлайн
Тут не на что отвечать, потому что нет вопроса.
Я не вижу проблемы. Разделите всё грамотно, да и прикручивайте как интерфейс все что хотите. Просто прослойки между приложением и интерфейсом разные будут, в зависимости от нужд и особенностей интерфейса.
Отредактировано (Фев. 20, 2009 14:10:23)
Офлайн
Если сделать клиент серверное приложение. И клиент и сервер какая то проблема запустить на одной машине. Странный пост.
Офлайн
tretiy3Как попросить виндузятников установить mod_python в денвер? На этом форуме есть примеры таких попыток (http://python.su/forum/viewtopic.php?id=1778) =)
Так, а зачем вообще делать это различие? Напишите всю систему как web приложение. Сильно упростите себе жизнь.
Отредактировано (Фев. 24, 2009 19:18:30)
Офлайн
jeureyА зачем вам денвер? Используйте легкие сервера на питоне, тот-же CherryPy например, его можно и как службу запустить под виндойtretiy3Как попросить виндузятников установить mod_python в денвер? На этом форуме есть примеры таких попыток (http://python.su/forum/viewtopic.php?id=1778) =)
Так, а зачем вообще делать это различие? Напишите всю систему как web приложение. Сильно упростите себе жизнь.
Офлайн
PooH+1jeureyА зачем вам денвер? Используйте легкие сервера на питоне, тот-же CherryPy например, его можно и как службу запустить под виндойtretiy3Как попросить виндузятников установить mod_python в денвер? На этом форуме есть примеры таких попыток (http://python.su/forum/viewtopic.php?id=1778) =)
Так, а зачем вообще делать это различие? Напишите всю систему как web приложение. Сильно упростите себе жизнь.
Офлайн