Integracja aplikacji webowej z dekstopową

0

Witam,
jak z integrować aplikację desktopową (np. działającą wewnątrz firmy) z aplikacją webową? Przykładowo mamy sobie hotel, pensjonat... W budynku znajduje się recepcja, która przyjmuje telefoniczne rezerwacje albo ktoś przychodzi z ulicy i bierze pokój (jeśli jest wolny). Nasz hotelik posiada również stronę internetową z możliwością rezerwacji on-line.

Teoretycznie można byłoby zrobić wszystko na jednej bazie. Problem pojawia się gdy w naszym hoteliku nie będzie neta (tzn. będzie jakaś awaria od strony dostawcy netu).

Pewnie są jeszcze jakieś inne problemy do rozwiązania. Ogólnie chodzi o wymianę danych między dwoma światami: webowym i desktopowym.

1

To stawia się bazę lokalnie względem hoteliku i stronę się tam hostuje. Jeśli nie ma neta => nie działa strona, ale aplikacja desktopowa działa, bo baza jest lokalnie.

0

Postawienie serwera nie jest tanie. Zakładamy że serwer webowy jest na zewnątrz.

0

To co robisz w programie, zapisujesz do pliku. Inny podprogram będzie służył do wysyłania tych danych na stronę. Nie ma internetu - nie ma aktualnych danych na stronie. Pojawi się internet, pojawią się dane, wprowadzone, gdy nie było internetu.

1

Kupcie sobie telefon kom z dostępem do neta, aby w razie W móc na recepcji też rezerwować pokoje. Jak padnie net u dostawcy serwisu www, to i tak rezerwacji nikt nie złoży.

0

Ale to nie chodzi konkretnie o hotel, to był tylko przykład. Pytanie jest ogólne. Czy są jakieś sprawdzone już sposoby, rozwiązania?

1

Sprawdzone? Baza danych + web serwisy, do nich łączą się klienci desktopowi oraz aplikacja WWW. Baza danych, web serwisy i aplikacja WWW mogą być na różnych serwerach, mogą też być na jednym.

Dwie bazy nie zapewnią Ci spójności danych, więc to nie będzie sprawdzone rozwiązanie.

1

CAP Theorem:

When you build a distributed system, of three desirable properties you want in your system: consistency, availability, and tolerance of network partitions, you can only choose two.

Tak więc można mieć 2 bazy danych i uzyskać spójność danych, ale np. kosztem braku dostępności serwisu w przypadku awarii jednego segmentu sieci. Do tego celu używa się baz danych z obsługą protokołu 2 Phase Commit.
Albo możesz zbudować system, który będzie odporny na awarię poszczegóólnych segmentów sieci ale nie będzie zapewniał spójności danych (albo będzie zapewniał tylko częściową spójność danych). W tą stronę poszły NoSQLowe bazy danych.
Jeszcze inna kwestia to przepustowość i czas odpowiedzi takiego systemu. Systemy zapewniającą spójność mają mniejszą przepustowość i większy czas odpowiedzi, natomiast systemy nie gwarantujące spójności mają większą przepustowość i mniejszy czas odpowiedzi.
Tak więc wracając do Twojego przykładu z hotelem - zależy jak bardzo zależy Ci na dostępności i na spójności bo pomiędzy tymi dwoma trzeba wybrać. Jeżeli wolisz, żeby system był dostępny 24/7 to będziesz musiał tolerować częściową niespójność danych (np. 2 różne osoby dostaną ten sam pokój hotelowy) i w przypadku wykrycia niespójności powiadamiać klientów.
Jeżeli nie chcesz mieć niespójności to będziesz musiał się pogodzić, że awaria sieci powoduje awarię serwisu.

0
0x200x20 napisał(a)

Tak więc można mieć 2 bazy danych i uzyskać spójność danych, ale np. kosztem braku dostępności serwisu w przypadku awarii jednego segmentu sieci.

Ta, recepcjonista nie może wpuścić nikogo do hotelu, bo strona internetowa nie działa. [rotfl]

0

Teoretycznie, gdyby nie była potrzebna wymiana informacji na bieżąco, tylko np. na koniec dnia albo o jakieś godzinie. Można byłoby zrobić 2 bazy i np. z desktopa wysyłać kiedy będzie można.

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