Kolejkowanie w windows service

0

Hej,

Chcę zrobić coś w rodzaju mechanizmu kolejkującego. Na jednym z komputerów w lokalnej sieci serwer (TCPListener, TCPClient) będzie lokalnie nasłuchiwał komend od innych komputerów, ustawiał je w kolejności i przetwarzał. Myślicie że windows service będzie do tego dobrym rozwiązaniem?

1

przecież serwis to normalny program tylko bez GUI i działający bez zalogowanego usera. Jeśli takie są wymagania to jak najbardziej możesz napisać serwis

0

W takiej sytuacji Windows Service jest nawet "naturalnym" rozwiązaniem. Co do kolejkowania,to zależnie od zaawansowania systemu warto rozważyć wykorzystanie gotowych rozwiązań w postaci jakiegoś brokera (np. RabbitMQ).

Swoja droga polecam zainteresować się projektem Topshelf. Znacznie ułatwia tworzenie i instalacje windows services.

0

No właśnie tak sobie kombinowałem. Napisałem to jako aplikację konsolową, podpiąłem Topshelfa.Wszystko pięknie ładnie: odpalone z poziomu VS hula, instaluje się jako Windows Service. Tyle, że potem gdy usiłuję to uruchomić w Menagement Console zimna dupa. Mieli, mieli i wyrzuca Error 1053: the service did not respond to the start or control request in a timely fashion. Czy jakoś tak. Szukałem po stronach różnych tricków jak sobie radzić z tym problemem, zmiana rejestrów by wydłużyć czas oczekiwania i inne takie: bez rezultatu.
Zacząłem powoli dekomponować kod, żeby zobaczyć co blokuje uruchomienie i zauważyłem ciekawą sprawę. Wygląda to tak jakby problem pojawiał się jak tylko wstawię w kodzie TcpListener.AcceptTcpClient. Tak sobie kombinuję, że może robię coś źle i trzeba to wywoływać w jakiś specjalny sposób, albo coś na kompie mi blokuje....

0

Ciężko powiedzieć, może problem z przywilejami? Warto by zastosować jakieś logi, chociażby tymczasowo do pliku tekstowego żeby zobaczyć gdzie wywala. Albo przed startem głównej logiki serwisu uspij wątek na jakąś minute żeby mieć czas podlaczyc debugger.

1

He he, problem okazał się wręcz kabaretowy. Idąc po linii najmniejszego oporu zapętliłem przez AcceptTcpClient wątek główny, przez co po odpaleniu program de facto działał, tyle że w Management Consoli, wciąż trwało uruchamianie... Nauka na przyszłość.
Dzięki za sugestię z opóźnieniem wątku.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.