Mam do napisania projekt wykorzystujący architekture kient-serwer. Aktualnie pisze też drugi projekt w java'ie na inne zajęcia i chciałbym je połączyć razem. Aktualnie próbuje napisać coś na wzór organizera studenta (kalendarz, dodawnie swojego planu zajęci itp + każdy własne konto (MySQL)). I tutaj mam problem. Jak w tym projekcie użyć architektury klient-serwer?
aplikacja na androida/dektop z prostym gui jest klientem, a aplikacja do której wysyłasz informacje np: {id:1, date: 2014:12:12, task:"zrobic pierogi"} i ona to zapisze do bazy danych, będzie Twoim serwerem.
okej ale podsuniesz jakieś przykłady co mogę przesyłać w tym przykładzie?
//edit
wysyłanie czegoś na serwer a potem do bazy chyba jest bez sensu. BO przecież w kiencie moge sprawdzić poprawność danych itp. Pewnie się mylę - proszę o wytłumaczenie.
klient nie komunikuje się z bazą tylko z serwerem a dopiero serwer z bazą. Między klientem i serwerem możesz użyć np. soap.
Co ma być wysyłane to musisz sam określić - przecież my nie wiemy co ta aplikacja ma robić.
//edit
Czy ma sens czy nie to dyskusja na kiedy indziej :). Zaletą tego rozwiązanie jest to, że masz zunifikowany interfejs dostępu do danych. Nie pozwalasz bezpośrednio mazać po bazie i jesteś w stanie weryfikować przychodzące zapytania.
Czyli np zakładanie konto. Wysyłam dane sprawdzane przez klienta na serwer a serwer do bazy tak? 2) czy to serwer sprawdza poprawność danych?
nooo, to logiczne nie ? wysyłasz, okazuje się że w tym terminie już coś jest(chociaż to powinno być wykryte przez klienta) zwracasz informacje "sorry rysiu ale termin jest już zajęty".
raczej sprawdzać powinien to już serwer - wtedy jeśli masz klienta na pc, www i np. androida nie musisz implementować sprawdzania 3 razy.
Jak to działa - web service ma np. metodę DodajUsera
z odpowiednimi parametrami (login, hasło, nazwa, ...). Programista klienta widzi
właśnie tę metodę i ją musi zaimplementować. Programista severa musi tak zrobić, żeby po wywołaniu DodajUsera
odpowiedni rekord został dodany np. do bazy
niezdecydowany napisał(a):
(...)(chociaż to powinno być wykryte przez klienta) (...)
Czyli klient też musi mieć dostęp do bazy.
Sumując wychodzi na to że klient i serwer musi mieć dostęp do bazy, chyba że klient sprawdzał by poprawność danych przez serwer ;p
Gubię się już w tym :(
nie - to serwer musi mieć metodę typu ZajeteTerminy czy Terminy czy jak ją nazwiesz, która Ci zwróci już dodane zadania/czy co tam masz w jakimś zakresie danych. Natomiast aby serwer mógł takie dane zwrócić to musi je pobrać z bazy
EDIT: przestań usuwać swoje posty bo dyskusja zaczyna idiotycznie wyglądać :P
shimizu napisał(a):
wysyłanie czegoś na serwer a potem do bazy chyba jest bez sensu. BO przecież w kiencie moge sprawdzić poprawność danych itp. Pewnie się mylę - proszę o wytłumaczenie.
Komunikacja w ten sposób ma 2 zalety
- funkcje bazodanowe mają ukryty interface - nie interesuje Cie jak to działa i które tabele musi uaktualnić i jak przy zapisie jakiś danych - bo zostanie to zrobione przez funkcje, a jeśli będziesz musiał zrobić jakaś zmianę nie poptrawiasz wszystkich klienckich programow, tylko program serwerowy.
- względy bezpieczeństwa - serwer ma dostęp do bazy, natomiast z zewnątrz program ma dostęp tylko do serwera.
Inne wykorzystanie klient/serwer - to np w programie tworzysz port za pomocą którego po jakimś protokole możesz sterować i dzięki temu możesz np zsynchronizować pracę z innym programem wykonującym coś innego.