Aplikacja klient-serwer z uwierzytelnianiem

0

Witam wszystkich forumowiczów,
Mam do Was pytanie odnośnie budowy aplikacji klient serwer. Otóż aplikacja ma wyglądać następująco:
Serwer ma generować różne sygnały (sinus, prostokąt, trójkąt, szum biały etc. oraz możliwość tworzenia własnych sygnałów np. sinus+szum biały etc) przy czym mają one być znormalizowane. Sygnały mają być generowane w sposób ciągły. Następnie Aplikacja klienta ma mieć możliwość łączenia się z serwerem, przy czym klientów może być kilku (ustalona z góry ilość lub n-ilość). Klient który będzie chciał się połączyć z serwerem musi zostać uwierzytelniony przez serwer aby zestawić połączenie, to po to by z serwera mogła korzystać tylko określona grupa klientów. Klient po połączeniu:

  • może wybrać dowolny sygnał z serwera, który będzie u niego na bieżąco generowany i wyświetlany na wykresie,
  • może dokonać zmiany sygnału w dowolnym momencie,
  • musi mieć możliwość zmiany parametrów sygnału (amplituda, częstotliwość etc.),
  • musi mieć możliwość zapisu próbek sygnału do pliku .txt na dysku klienta,
  • każdy z klientów musi może wybrać inny sygnał, więc każdy z klientów musi działać w osobnym wątku, przydzielonym podczas zestawienia połączenia,
  • generowany sygnał ma być na bieżąco wyświetlany, bez opóźnień.

Teraz mam pytanie jak to wszystko można w prosty, a zarazem dobry sposób zrobić? Serwer będzie w C#, klient jakiś uniwersalny, niezależny od środowiska, tak aby można było go uruchomić bez konieczności instalowanie VS na hoście klienta. Myślałem o kliencie przez przeglądarkę www, chyba że da się zrobić klienta w C# i skompilować tak aby uruchamiał się na kompach bez VS (ale czy pod linuksem pojdzie? :P).

Proszę forumowiczów o sugestie na temat projektu. Będę wdzięczny za wszelaką pomoc w tej sprawie.

0
Mistzzz napisał(a):

Teraz mam pytanie jak to wszystko można w prosty, a zarazem dobry sposób zrobić? Serwer będzie w C#, klient jakiś uniwersalny, niezależny od środowiska, tak aby można było go uruchomić bez konieczności instalowanie VS na hoście klienta. Myślałem o kliencie przez przeglądarkę www, chyba że da się zrobić klienta w C# i skompilować tak aby uruchamiał się na kompach bez VS (ale czy pod linuksem pojdzie? :P).

  1. To chyba normalne, że nie trzeba instalować IDE, żeby uruchomić skompilowaną aplikację.
  2. Aplikacji napisanej w C# i skompilowanej z poziomu Visual Studio oczywiście nie uruchomisz na Linuksie. Ale możesz taki kod skompilować przez Mono, i są szanse, że na Linuksach się uruchomi.
  3. Najprostszym rozwiązaniem jest napisanie aplikacji webowej, zrobienie w niej autoryzacji i oddzielnego kontekstu pracy dla każdego użytkownika jest banalne. Wówczas klient będzie potrzebował tylko przeglądarki do używania Twojej aplikacji, system operacyjny będzie bez znaczenia, a o to chyba Ci chodzi.
    I taką aplikację możesz napisać także w C#.
0

Dodam, że aplikacja musi działać w ten sposób, że serwer generuje sygnał ciągle i sygnał ten nie może mieć przerwy. Chodzi o to, żeby nie doszło do sytuacji, że połączenie zostanie zerwane i w sygnale wystąpi dziura. Więc przesyłane dane muszą zostać jakoś sprawdzone czy wysłane pakiety zostały odebrane poprawnie, czy nie nastąpiła utrata wiadomości. Gdyby nastąpiła utrata, to serwer musi wysłać dane powtórnie, do momentu aż klient odbierze je poprawnie. Tak przynajmniej ma to mniej więcej wyglądać.

0

Nie wiem dokładnie co wyobrażasz sobie pod słowem "ciągły", ale jakkolwiek będziesz chciał przesłać dane pakietowo z puntku A do B to i tak będziesz musiał jawnie, bądź niejawnie skorzystać z jakiegoś próbkowania tego sygnału.
Inna sprawa co do architektury klient serwer i podtrzymania sygnału tak, aby klient otrzymywał sygnał ciągły, przychodzi mi na myśl kilka problemów do rozwiązania/przemyślenia:

  • czy w przypadku N podłączonych klientów wszyscy powinni mieć taki sam poziom sygnału w danej jednostce czasu (synchronizacja pomiędzy wysyłaniem do klientów, co w przypadku kiedy tylko 1 z N będzie miał "laga"),
  • czy może każdy z klientów przy pierwszym połączeniu będzie uruchamiał na serwerze swój generator sygnału, a bufor w przypadku "laga" będzie indywidualny.
0

Chyba lepiej będzie zrobić tą drugą opcję, żeby każdy z klientów miał swój bufor i w razie wystąpienia laga żeby nie zakłócał transmisji innym. Jak za to wszystko się zabrać po kolei?

0

Nie widzę za bardzo jakbyś miał w sposób ciągły przesyłać sygnał do klienta.
Pewnie serwer wysyłałby wartość amplitudy dla danej chwili ale pozostaje i tak synchronizacja wartości amplitudy w czasie, biorąc pod uwagę opóźnienia sieci itp.

A co powiesz na trochę inne rozwiązanie. Serwer i klient generują sygnał, a komunikacja między nimi polega tylko na synchronizacji tych sygnałów np. w momencie przejścia przez zero. W momencie laga klient dalej generuje sygnał, a po odzyskaniu połączenia sygnały się synchronizują.

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