Aplikacja desktopowa lub webowa, co wybrać ?

0

Witam.

Na wstępie zaznaczę, że programowaniem zajmuje się nie dłużej jak kilka miesięcy. Wybór padł na Python'a. Wcześniej jakoś mnie to nie kręciło, głównie spędzałem czas w obszarze matematyki. Spodobało mi się to, ale nie ważne ile zrobię tutoriali, zadań, czy przeczytam książek i tak zawsze coś nowego będzie. Tyle wstępu. Przejdźmy do problemu:

Do zrobienia mam aplikację dla administracji samorządowej na użytek wewnętrzny. ). Wynika to z faktu, że każdy wydział i zespół (komórka wydziału) ma swoje dane. Np. wydział komunalny ma dane o parkach, układach zieleni, ilości koszy na każdej ulicy, mieszkaniach komunalnych itd. Ludzie od dróg mają informacje o stanie technicznym dróg, kiedy były robione, ich długości, zezwoleniach na pas drogowy itd. Budżet ma informacje o wydatkach, inwestycjach. Od planowania przestrzennego mają MPZP, mapy itd.

Dużą ilość czasu pochłania "załatwienie danych" potrzebnych do jakiegoś wniosku, który złożył mieszkaniec. Kiedy planowany jest remont drogi, budynku, bądź jakakolwiek inwestycja. Radni oraz mieszkańcy wbrew pozorom piszą dużo wniosków o informację publiczną. Pochłania to czas,generuje koszty itd.

Celem aplikacji ma być wizualizacji danych w określony sposób(wykres, tabela, mapa itd.) przez użytkownika (osobę zatrudnioną w urzędzie). Aplikacja będzie zawierała w bazie danych wszystkie informacje, które urząd posiada, a które nie są danymi wrażliwymi (tj. danymi osobowymi umożliwiającymi identyfikację obywateli). Głównie to informacje tak jak w/w w drugim akapicie. Użytkownik będzie mógł tylko wyświetlać dane, które sobie wybierze oraz eksportować je do excela, pdf'a itp.
Aplikację chcę napisać w Pythonie.

Pytania do was:

  1. Czy lepiej zastosować:
    a) aplikację desktopową, łączą się z bazą danych w sieci wewnętrznej (wiąże to się oczywiście z instalacją na komputerach urzędników, gdzie nie wszystkie są w dobrym stanie)
    b) aplikacją webową (np. w Django), gdzie wystarczy przeglądarka (odpala w intranecie)
  2. Jakiej użyć bazy danych(czytałem trochę o tym):
    MySQL, PostgreSQL lub MongoDB(NoSQL)
4
  1. Webowa
  2. Celowałbym raczej w bazę relacyjną więc Postgres ale dużo zależy od typu danych bo może jednak NoSQL będzie sensowniejszy.
0

@Shalom
Dane będą różne:
Użytkownik potrzebuje informacji o "stanie dzielnicy" tj. stan dróg, historia remontów, ilość złotówek wydanych na daną dzielnicę. Wskaźnik bezrobocia (dane z PUP), informacje przestrzenne (jednostki urbanistyczne, tj. jak wygląda zabudowa, jaka jest przewaga budynków w danych obszarze np. bloków lub jednorodzinnych), albo porównanie liczby lokalnej ludności z danych ulic oraz ilość dzieci chodzących do przedszkola, co pozwoli prognozować liczbę miejsc w przedszkolu na nastepne lata itd.
Dane będą przestrzenne (geolokalizacja, dane finansowe, dane ludnosciowe, ilościowe oraz jakościowe - np. stany techniczne budynkow)

Jeżeli webowa, to jaki framework:
Django, TurboGear, web2py, Pylons?

2

Ale ja rozumiem że to są takie teoretyczne dywagacje? Bo jeśli musisz pytać o takie rzeczy to rozumiesz chyba ze ty tego nie zaklepiesz?
Jeśli chodzi o dane pomyśl o Plyglot Persistence: http://martinfowler.com/bliki/PolyglotPersistence.html
Jeśli chodzi o frameworki to wszystko tylko nie web2py :D Django pewnie sie nada.

2

Wybierz Django, bo ma pewnie największe wsparcie z tych frameworkow i pomoc innych często będzie się przydawać.

0
adhed napisał(a):

Wybierz Django, bo ma pewnie największe wsparcie z tych frameworkow i pomoc innych często będzie się przydawać.

Django - OK, także Tornado, Pyramid czy Plone (to nie jest dokładnie framework, tylko CMS, ale dobry do takich celów).

0

Do zrobienia mam aplikację dla administracji samorządowej na użytek wewnętrzny. ). Wynika to z faktu, że każdy wydział i zespół (komórka wydziału) ma swoje dane.

W takim razie krytyczną rzeczą może być tutaj sprzęt i software z jakiego korzystają wydziały.

I czy nie jest to stary Internet Explorer na przykład na jakichś złomach.

1

Wiem, że napiszę oczywistą oczywistość, ale po wyborze technologii nie siadaj od razu do kodzenia i klepania architektury w locie, tylko poświęć większą część czasu na jej obmyślenie i zaprojektowanie aplikacji. Postaraj się przemyśleć tyle, ile się da. Zapoznaj się też z wzorcami projektowymi, pożądanymi podejściami OOP oraz testowaniem. Jeżeli nie poświęcisz odpowiedniej ilości czasu na projektowanie i przemyślenie wszystkiego, to przy implementacji projektu zakładającego pracę ze znaczną ilością powiązanych ze sobą danych, szybko może się okazać, że znajdziesz się w przysłowiowej czarnej czteroliterówce.

Tak na marginesie - również polecam Django i Postgresql.

0

Tylko webowa. Aplikacje desktopowe w 99% przypadków straciły dziś już rację bytu. Desktopowy to może być edytor tekstu albo IDE i niewiele więcej.

1
Wielki Szczur1 napisał(a):

Tylko webowa. Aplikacje desktopowe w 99% przypadków straciły dziś już rację bytu. Desktopowy to może być edytor tekstu albo IDE i niewiele więcej.

Kompletna bzdura z tymi 99%. Jest wiele zastosowań gdzie liczy się tylko desktop. Poza tym web i mobile to może być moda, która za 10-15 lat minie.

Ktoś kiedyś pisał podobne rzeczy, ze w okolicach 2000 roku każdy będzie miał terminal w domu zamiast typowego komputera (terminal czyli komputer o słabej specyfikacji, nawet bez dysków a podpięty do szybkiego internetu. Programy miały przetwarzać dane na serwerach i wyniki miały wracać siecią do terminala w czasie rzeczywistym). I nic takiego się nie stało.

1

Web i mobile to wygoda a nie moda.

"Ktoś kiedyś pisał podobne rzeczy, ze w okolicach 2000 roku każdy będzie miał terminal w domu zamiast typowego komputera (terminal czyli komputer o słabej specyfikacji, nawet bez dysków a podpięty do szybkiego internetu. Programy miały przetwarzać dane na serwerach i wyniki miały wracać siecią do terminala w czasie rzeczywistym). I nic takiego się nie stało." przecież dokładnie to się teraz dzieje. Zamiast instalować Office'a wystarczy, że skorzystasz w Google Docs (oczywiście w jakichś prostszych przypadkach) itp.

0

Ja mam Office i nie korzystam z Google Docs. Takich ogólnodostępnych aplikacji webowych jest niewiele i ograniczają się do kilku branż / specjalizacji.

0

Tylko w kilku branżach desktop ma sens. Chcesz czy nie, większość rynku to desktop i mobile.

0

Tzn, miałem na myśli web i mobile

0
Zeze napisał(a):

Tylko w kilku branżach desktop ma sens. Chcesz czy nie, większość rynku to desktop i mobile.

A co ma do tego w ogóle rynek? Tu jest konkretne zapotrzebowanie na konkretną aplikację, z konkretnymi funkcjonalnościami w tym urzędzie. Wykresy, tabela, mapa, to wszystko ładnie można wykonać w aplikacji napisanej w DJANGO, ten sam cel można by osiągnąć i w aplikacji na desktop, tylko tu się jeszcze zastanawiam jakim kosztem, skoro pod pythona potrzebne będą jakieś biblioteki które trzeba będzie jeszcze zainstalować a w aplikacji działającej pod przeglądarkę dużo można by załatwić Java Scriptem i bibliotekami. DJANGO ma to do siebie, że jest specjalnie stworzone pod to żeby aplikacje można było stworzyć w miarę szybko i tutaj też się właśnie zastanawiam ile czasu potrzeba by było na taką aplikację desktopową a ile na webową.

A to że ludzie powszechnie na rynku zachłystują się chmurą obliczeniową i serwisami społecznościowymi i jeszcze tym że swoje ważne dane się trzyma poza lokalnym komputerem to już inna sprawa, jest to raczej efekt potężnego marketingu a nie koniecznie realnego zapotrzebowania. Podobnie można by mówić o rynku aplikacji mobilnych.

0

Jeśli nie ma ważnych powodów, aby była to aplikacja webowa, należy zdecydować się na desktop.

Na aplikację webową decydujemy się tylko wówczas, jeśli:

  • użytkownicy aplikacji są rozproszeni i nie można ich zgromadzić w jednej sieci wewnętrznej.
  • stanowiska pracy są tak liczne, że ich aktualizacja byłaby zbyt uciążliwa dla firmy.

Jeśli powyższe nie występuje, oczywiście należy się zdecydować na desktop, ponieważ:

  • praca jest wtedy płynniejsza i stabilniejsza.
  • pracę można kontynuować, nawet jeśli stracimy połączenie z Internetem albo Internet działa wolno
  • nie ma ryzyka włamań hakerskich lub mocno ograniczamy ryzyko takich włamań

Twierdzenie jednego z moich poprzedników, że aplikacje desktopowe straciły sens i większość to teraz web, to niedorzeczności.

0

@acalanthis

  1. Złota łopata ;]
  2. o_O

praca jest wtedy płynniejsza i stabilniejsza

No jeśli piszesz jakiegoś CADa to pewnie tak, ale formatki dla pani Jadzi będą działać równie szybko.

pracę można kontynuować, nawet jeśli stracimy połączenie z Internetem albo Internet działa wolno

Jeśli to aplikacja wewnętrzna to i tak działa w oparciu o intranet. Zresztą najpewniej musi się łączyć z jakąś bazą danych / innymi serwisami więc jak leży to leży.

nie ma ryzyka włamań hakerskich lub mocno ograniczamy ryzyko takich włamań

jw. zwykle chodzi o intranet, a to z czym twoja aplikacja się łączy (baza danych, webserwisy) nadal są podatne na atak. Powiedziałbym nawet że jeszcze bardziej, bo w przypadku aplikacji webowej tylko ona zna adresy endpointów, a jeśli aplikacja jest desktopowa to każda instancja musi posiadać takie informacje. Łatwiej wykraść taką aplikacje z komputera pani Grażynki niż z serwera nad którym ktoś czuwa.

Aplikacje desktopowe mają sens na przykład jeśli:

  • potrzebują dostępu do wielu lokalnych plików
  • potrzebują sporej mocy obliczeniowej

1 użytkowników online, w tym zalogowanych: 0, gości: 1