Aplikacja Webowo-Desktopowa

0

Witam

Chciałbym napisać aplikację która działałaby zarówno w Internecie jak i lokalnie. Do tej pory pisałem trochę w php, mysql, delphi, turbo C+, nie mam więc sporego doświadczenia ale chciałbym solidnie zabrać się do tego tematu. Nauka+Praca=Efekt

W chwili obecnej korzystam z Accessa, który obsługuje moją małą sieć sklepów (każdy posiada lokalnie swoją bazę danych, codzienne zmiany w tabelach są wysyłane na serwer, gdzie jest centralna baza danych oraz dostęp do bardziej zaawansowanych funkcji dla administracji (wgląd w statystyki, zatowarowanie, czas pracy, ewidencja środków, nadzór zleceń- Workflow itd.).

Niemniej jednak program ten ma kilka wad, często pojawiają się błędy z różnego powodu złe użytkowanie, błędy połączenia sieciowego (następne modyfikacje naruszyły integralność bazy). Można więc napisać program w Accessie od nowa według nowego uporządkowanego schematu lub napisać program w innym języku i tu pojawia się pytanie jak to zrobić i jakiego języka użyć?

Czytałem trochę na ten temat można użyć Flex'a ale podobno są problemy z bazami danych, w dodatku nie wiem jak Flex miałby działać lokalnie w przypadku kiedy desktop nie będzie miał dostępu do Internetu. Może użyć środowiska Javy z PHP i MySql? Dodam, że chciałbym aby aplikacja była wieloplatformowa Windows/Linux w przyszłości może obsługa programu z tabletu.
Szukałem gotowego oprogramowania, ale jak do tej pory nic nie przypadło mi do gustu (aplikacje są albo bardzo rozbudowane, albo typowo sprzedażowe, działają w zasadzie tylko lokalnie).

Co do samej bazy danych (Access) w chwili obecnej jak wspominałem każdy komputer- klient posiada bazę lokalną. Po zakończeniu pracy(dnia) wysyła dane (spakowane paczki .xls), które na serwerze są pobierane w następnym dniu i wgrywane do bazy. Cała praca ogranicza się do kliku kliknięć ale mimo wszystko chciałbym pozbyć się zbędnej pracy i maksymalnie zautomatyzować procesy, gdyż i tu pojawiają się błędy. Dane wprowadzone przez komputer klient muszą same przesyłać się do centralnej bazy i być widoczne dla wszystkich (serwer, pozostali klienci), więc dodatkowo należy wziąć pod uwagę przepustowość łącza aby go nie przepełnić ciągłym przesyłem danych w obie strony, tu może skorzystać z Ajaxa?

Moje wstępne wymagania: :)
Wieloplatformowość Windows/Linux
Obsługa w Desktop oraz Web
Baza Danych
Workflow
Użycie kodów kreskowych RFID
Druk paragonów
Łatwy backup

Zdaje sobie sprawę z trudu jaki należy włożyć aby taki program napisać. Wszystkich chętnych podzielenia się doświadczeniem proszę o udzielenie cennych wskazówek.

Z góry dziękuję !
Pozdrawiam
Mariusz

1

Jeżeli chodzi o wieloplatformowość to Java może być dobrym rozwiązaniem - przy odrobinie szczęścia może Ci się uda uniknąć rzeczy zależnych od platformy, a jak nie to będzie ich niewiele.
Baza danych lokalna to może być np. sqlite - accessa lepiej sobie darować.
Aplikacja o ustalonej godzinie, lub w momencie zamykania dnia wysyła dane na serwer automatycznie i np. w przypadku niepowodzenia takiej operacji przez jakiś okres czasu(np. parę dni) blokuje możliwość dokonywania transakcji i zmusza sklep do naprawy problemu.

Największym problemem może być wymaganie funkcjonowania zarówno jako desktop i web w sytuacji jeżeli stałe połączenie do internetu nie może być wymaganiem koniecznym do funkcjonowania aplikacji. Prawdopodobnie będziesz musiał napisać dwie aplikacje - zarówno desktopową działającą offline jak i webową działającą online, która najlepiej od razu będzie wrzucać dane do głównej bazy na serwerze.

Z mniej więcej takim rozwiązaniem mam do czynienia w praktyce i działa to bardzo sprawnie przy sporej ilości klientów i transakcji.

0
squall_ffx napisał(a):

Dane wprowadzone przez komputer klient muszą same przesyłać się do centralnej bazy i być widoczne dla wszystkich (serwer, pozostali klienci), więc dodatkowo należy wziąć pod uwagę przepustowość łącza aby go nie przepełnić ciągłym przesyłem danych w obie strony, tu może skorzystać z Ajaxa?

A co ma Ajax do prędkości łącza? :|

I po co w ogóle aplikacja webowa? Kto jej będzie używał? Czemu desktopowa nie wystarczy?

0

Źle się wyraziłem, bardziej chodziło mi o zastosowanie myśli, jaką znalazłem poszukując informacji o Ajax, który to pozwala na pobieranie z sieci ogromnych ilości danych, a przy tym strona wykonana w tej technice utrzymuje płynność i nie wymaga przeładowywania.

Dlaczego aplikację Webową?

Zastanawiam się nad pracą programu z poziomu przeglądarki w sytuacjach awaryjnych lub normalnie na urządzeniach przenośnych czy też w ogóle nie przenieść całego oprogramowania do działania tylko w Internecie (Tu pojawia się problem w przypadku braku dostępu do sieci). W tej chwili jeżeli padnie komputer to niestety muszę poświęcić czas na dojazd do punktu, konfigurację innego komputera, wgranie bazy danych, odpowiednich bibliotek (a to nie zawsze działa od razu) itp. Dlatego chciałbym, aby kolejna aplikacja była po prostu lepsza i w takiej sytuacji działała na dowolnym urządzeniu/ komputerze.

0

No dobra, ale jeśli zakładasz, że może nie być dostępu do internetu, to aplikacja webowa nie jest rozwiązaniem Twoich problemów.

No, ale ok, kwestia odpowiedniego przemyślenia warstw aplikacji. Np., jeśli dostęp do danych i logikę biznesową zrealizujesz przez web serwisy, to potem wystarczy dorobić dwa interfejsy - webowy i desktopowy. I w takim przypadku nie musi być to rozwiązane w jednej technologii, webserwisy mogą stać na Javie, aplikacja desktopowa w .NET, a webowa w PHP.

1

Jeśli zdecydujesz się na Javę to polecam:

  • do desktopowego GUI użyć JavyFX - jest to następca Swinga, mocno unowocześnione (Swing ma już swoje lata), ale chyba dziedziczy sporo z filozofii Swinga i ma bardzo ciekawy bajer - można go ostylować pewną wariacją CSSa, tzn coś na tyle zbliżone do CSSa, że można to tak nazwać; dzięki temu zrobienie interfejsów webowych i desktopowych tak, żeby były podobne powinno być proste,
  • do zrobienia webowej wersji polecam Apache Wicket (obecnie są już bety wersji 6 i najlepiej od tej zacząć), w zasadzie ma "AJAXa za darmo", tzn funkcjonalność AJAXowa działa w Wickecie w ten sposób, że jeśli przeglądarka obsluguje AJAX to części stron są dynamicznie przeładowywane, a jeśli nie to przeładowywane są całe strony (komponent AjaxFallbackLink); ponadto Apache Wicket ma architekturę przypominającą Swingową, a to powinno pomóc w uwspólnieniu kodu logiki do aplikacji webowej i desktopowej,
  • jako bazę lokalną polecam bazę 100% Javową - mniejszy narzut na komunikację; zobacz na: h2database.com, działa bez problemu nawet w całości w pamięci (bez zapisywania niczego na dysk);

A poza tym do Javy jest miliard bibliotek i jeśli chodzi o sterowniki do urządzeń to jest duża szansa że gdzieś już są gotowe.

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