Mam aplikację klienta/serwera napisaną Delphi. Zasadniczo cała aplikacja robi to przesyłanie strumieni danych xml pomiędzy aplikacją serwera i podłączonymi klientami. Obecnie używam składnika Indy TIdTCPServer. Ale aplikacja po stronie serwera zawiesza się na niektórych moich ratach. Bardzo ciężko było debugować. Zastanawiam się więc, czy istnieje jakaś "architektura", którą powinienem wykorzystać, która wykonuje całe zarządzanie połączeniami tcp/ip i łączenie baz danych, pozwalając mi skoncentrować się na logice biznesowej.Której technologii Delphi użyć?
Oto więcej szczegółów:
- klienci muszą utrzymać "uporczywy" połączenie. Czasami serwer musi powiadamiać i wysyłać dane do wszystkich podłączonych klientów.
- klienci łączą się z komputerów przenośnych za pomocą bezprzewodowych kart bezprzewodowych. Więc "krople" sieci są dość powszechne.
- Baza danych bazy danych to SqlServer.
- Może znajdować się w górę 100 komputerów jednocześnie połączonych jednocześnie. Gdy serwer otrzymuje nowe połączenie (TCPServer.OnConnect), tworzę własny obiekt zawierający własne połączenie z bazą danych SqlServer. Kiedy połączenia TCP są upuszczane, ja z kolei uwalniam te obiekty (i powiązane połączenie z bazą danych).
- Aplikacja kliencka ma wbudowany TTimer. Rutynowo wysyłają bicie serca na serwer. A jeśli "upuszczają"/"tracą" swoje połączenie, automatycznie nawiązują nowe połączenie po powrocie sieci.
Ktoś ma jakieś sugestie dotyczące najlepszego podejścia/architektury tutaj?
Zakładam, że komponent Indy będzie działał, ale jednocześnie czuję, że "wymyślam nowe koło" w odniesieniu do zarządzania połączeniami.
Tocząc własne środki przeznaczasz procent czasu na utrzymanie własnego systemu. Aby wzmocnić swoją efektywność w Delphi, twój pomysł, że powinieneś chyba ocenić komercyjne obsługiwane technologie/zestawy narzędzi/komponenty, które są już zbudowane i wspierane, są doskonałe. Oczywiście narzędzia open source również mogą być dobre. Ale jeśli twój czas jest mniejszy niż twoje pieniądze, idź z komercyjnymi rozwiązaniami. –
Absolutnie - dokładnie to, do czego dążę. Chcę tylko sprawdzonej architektury C/S "3 warstwowej", która działa. –