Komunikator internatowy

0

Witam, chciałbym zrobić komunikator internetowy w asp.net C#. Chciałbym oprzeć to o bazę danych. Moje pytanie dotyczy tego co w przypadku gdy jednocześnie zacznie pisać kilka osób. Chodzi mi o to jak odpytywać bazę i identyfikować nową wiadomość? (wiem że komunikator oparty o bazę danych to oranie bazy). Proszę o pomoc.

1

przemyśl może tą architekturę. BD dużo lepiej sprawdza się jako backup. Jeśli user A i B są online to wiadomości od jednego do drugiego są przekazywane od razu plus ew. kopia archiwalna do bazy. Jeśli A jest online a B offline i A pisze do B to wiadomość ląduje w bazie. Po przejściu B do online odpytuje bazę o wszystkie wiadomości, które dostał jak go nie było a reszta komunikacji działa jak na początku postu. To jest wg mnie dużo bardziej optymalne rozwiązanie a przede wszystkim wydajniejsze bo tutaj odbiorca dostaje sygnał, że coś do niego jest a nie musi co np. 5 sekund "męczyć" bazy

0

Skoro wiesz, że to "oranie bazy" i wyjście bardzo suboptymalne to dlaczego chcesz to tak rozwiązać? Nikt kto wie, że jest ujemna temperatura nie wychodzi z domu w krótkich spodenkach.

0

OK abrakadaber dzięki za podpowiedź. Mam pytanie jeszcze odnośnie tego jak zrobić przesyłanie wiadomości jeśli użytkownik jest dostępny. Z czego najlepiej skorzystać ?

0

wydaje mi się, że z gniazd. Po pierwsze potrzebujesz komunikacji dwukierunkowej. Po drugie trzeba wyjść z założenia, że tylko serwer będzie miał publiczne IP. Po trzecie jak już klient A i B połączą się z serwerem to mogą zacząć rozmawiać bezpośrednio między sobą po UDP (chociaż wtedy trzeba samemu zaimplementować potwierdzenie odebrania pakietu), wiąże się to oczywiście z poniechaniem opcji zapisywania "onlineowej" komunikacji w bazie a używać jej jedynie do komunikacji "offlineowej" ale powinno znacznie odciążyć serwer.

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