Kolejkowanie w windows service

Kolejkowanie w windows service
AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
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?

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
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

Aventus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: UK
  • Postów: 2235
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.

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
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....

Aventus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: UK
  • Postów: 2235
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.

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 51
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.