Sposób projektowania aplikacji bazodanowej

0

Witam
Przymierzam się do stworzenia aplikacji bazodanowej działającej naraz na kilkunastu stanowiskach. Założeniem jest żeby aplikacja była desktopowa, odpadają przeglądarkowe. Na serwerze jest MySQL. Które z podejść jest najbardziej odpowiednie?

  1. Aplikacje klienckie łączą się bezpośrednio z bazą po TCP
  2. Aplikacje łączą się przez dodatkowy proces działający na serwerze i dopiero on komunikuje się z bazą już lokalnie
  3. Rozdzielenie aplikacji na warstwę prezentacji która jest na komputerach klienckich i logikę biznesową która jest na serwerze, komunikacja po TCP
    3a. Przy podłączeniu klienta na serwerze jest odpalany wątek który go obsługuje. Minus - wysypie się proces na serwerze, leżą wszystkie wątki
    3b. Przy podłączeniu klienta na serwerze jest odpalany proces, który obsługuje pojedynczy terminal. Do tego na serwerze jest zarządca który nadzoruje pracę procesów, wykrywa zawieszone, komunikacja przez potoki

Aplikacja będzie pisana w C#

Które z podejśc bedzie lepsiejsze, a może ktos ma jakiś inny pomysł?

Na serwerze Win serv 2008R2
na komputerach klienckich WinXP_SP3 - Win8+.

0

Ad 1. Każdy klient zna login i hasło do bazy. Czy to bezpiczne?
Ad 2. i 3., bo to to samo. Chcesz sam pisać jakieś aplikacje serwer-klient komunikujące się przez TCP (czyli chyba jakiś remoting) i zarządzać w nich wątkami? Masz nieograniczony czas, czy po prostu chcesz się tego nauczyć?

Logikę biznesową zawrzyj w usługach sieciowych (np. WCF), które będziesz hostował na serwerze bazodanowym (oczywiście w IIS), tylko one będą korzystały z bazy. A aplikacje klienckie będą po prostu wywoływały metody tych usług.

0

Niestety czas nie ograniczony.
Padł pomysł taki (pkt 3.) bo wtedy uniezależniam się od OSa na komputerach klienckich. Przy ewentualnej zmiane mogę przepisać samą warstwę prezentacji. Co do WCF, to też o tym myslałem, tylko w pewnej przyszłości może być konieczność stworzenia dostępu do systemu z poziomu platform mobilnych... widzę ze są jakieś linki w google w temacie komunikacj np WPF z androidem, ale muszę jeszcze się z tym zapoznać

0
misiakufal napisał(a):

Co do WCF, to też o tym myslałem, tylko w pewnej przyszłości może być konieczność stworzenia dostępu do systemu z poziomu platform mobilnych...

A więc tym bardziej powinieneś użyć WCF. Klient wysyła i obiera od usługi sieciowej tylko XML, więc nie ma znaczenia, czy klientem jest strona WWW, aplikacja na Androida, czy program konsolowy w C++. :)

0

ok, to w takim razie zaczyna to być ciekawym rozwiązaniem :). Powiedz mi tylko, z tego co rozumiem WCF odpowiadałoby wtedy za komunikacje z bazą, weryfikację danych i wykonywanie operacji na bazie, natomiast stan aplikacji byłby przechowywany już na klientach, tak?

0

co rozumiesz pod pojęciem "stan aplikacji"?

0

Może inaczej. Czy przy korzystaniu kilku instancji aplikacji klienckich z takiego WCFa, po stronie serwera jest dla każdej instancji osobna usługa, czy po stronie serwera jest tylko jedna instancja usługi i ona sama z siebie nie jest w stanie określić z którego klienta nadeszło żądanie?

1
misiakufal napisał(a):

Powiedz mi tylko, z tego co rozumiem WCF odpowiadałoby wtedy za komunikacje z bazą, weryfikację danych i wykonywanie operacji na bazie, natomiast stan aplikacji byłby przechowywany już na klientach, tak?

Tak, komunikacja z bazą, obliczenia, algorytmy, walidacja - to wszystko w usłudze WCF. No, ale walidacja danych po stronie klientów też jest raczej potrzebna, żeby niepotrzebnie nie słać danych przez sieć.

misiakufal napisał(a):

Może inaczej. Czy przy korzystaniu kilku instancji aplikacji klienckich z takiego WCFa, po stronie serwera jest dla każdej instancji osobna usługa, czy po stronie serwera jest tylko jedna instancja usługi i ona sama z siebie nie jest w stanie określić z którego klienta nadeszło żądanie?

Usługa jest jedna. Dostaje zadanie do wykonania i je wykonuje, a wynik zwraca do klienta, który ją wywołał. Myśl o tym po prostu jak o metodach przeniesionych ze zwykłego programu na serwer, wystawionych przez HTTP i używających XML jako formatu wymiany danych.

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