Skalowalna aplikacja klient-serwer a architektura


(Dariusz Tulik) #1

Hey,

chciałbym w ramach nauki stworzyć skalowalną aplikację (webową) do obsługi wielu klientów. Będzie to coś w stylu komunikatora. Interesuje mnie technologia .NET. Początkowo miałem zamiar oprzeć się na wątkach, tzn każdy nowy klient = nowy wątek, jednak przy setkach użytkowników zarządzanie tym może być co najmniej kłopotliwe.

Prosiłbym o wskazówkę bardziej zaawansowanych w jaki sposób do tego podejść. Jak powinna być przygotowana architektura takiego systemu? Zakładam, że serwer będzie sobie gdzieś tam stał, a w przeglądarce (np. w jakimś aplecie) będą działać klienci. Jakiś działający przykład byłby naprawdę przydatny. Uprzedzam, że szukałem w literaturze i sieci, jakieś tam pojęcie o tym zdobyłem, ale chcę być pewny zanim zacznę.

Pozdrawiam


(etam) #2

To ja może polecę coś zupełnie innego niż .NOT:, znaczy Erlang.

Dobrym przykładem aplikacji napisanej w Erlangu jest serwer jabber Ejabberd.

http://www.erlang.org/faq/introduction.html

Ps. Erlanga poznałem dopiero niedawno.


(Dariusz Tulik) #3

Na Erlang przyjdzie czas kiedyś :slight_smile: Widzę, że to forum ogólnie jest źle nastawione do .NETa bo mało jest odpowiedzi w tematach z tym związanych :slight_smile:


(somekind) #4

A konkretnie w których wątkach jest mało odpowiedzi? ;> Tutaj raczej każdy, kto zada pytanie dostanie odpowiedź.

Inna rzecz, że to chyba jakość, a nie ilość się liczy.

Aplikacje webowe, czyli obsługiwane przez przeglądarkę są skalowalne z definicji, bo za ich działanie odpowiada serwer WWW (konkretnie IIS). Nie Ty tworzysz wątki i nie Ty nimi zarządzasz. Nie ma też znaczenia liczba klientów, bo w bezstanowym protokole HTTP połączenie klient serwer nie jest stałe, lecz tracone, gdy tylko serwer wyśle odpowiedź na żądanie klienta.

Jeśli zaś chcesz mieć emulację trwałego połączenia klient-serwer, to stosujesz np. wbudowany w ASP.NET mechanizm sesji - po prostu zapisujesz lub odczytujesz ze słownika żądaną informację, a przechowywaniem i całą resztą zajmuje się za Ciebie platforma.

W jakim aplecie? W ASP.NET tworzy się zwykłe formularze HTML i to na nich oparta jest cała aplikacja webowa. Dobór architektury jest prosty - jeśli chcesz wykorzystać ASP.NET WebForms, to wybierasz wzorzec MVP, a jeśli ASP.NET MVC, to rzecz jasna MVC.