Kolejkowanie w windows service

Kolejkowanie w windows service
AK
  • Rejestracja:około 7 lat
  • Ostatnio:około 5 lat
  • 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
abrakadaber
  • Rejestracja:ponad 12 lat
  • Ostatnio:8 miesięcy
  • 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


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.
AK
Niby tak, ale to ponieważ jest to rozpoznanie walką, więc nie chciałbym się wpieprzyć w coś, z czego sie potem będę musuał rakiem wycofywać bo z braku doświadczenia nie przewidziałem jakiś tam mogących się pojawić trudności.
Aventus
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 2 lata
  • 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.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
AK
  • Rejestracja:około 7 lat
  • Ostatnio:około 5 lat
  • 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:około 9 lat
  • Ostatnio:ponad 2 lata
  • 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.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
AK
  • Rejestracja:około 7 lat
  • Ostatnio:około 5 lat
  • 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.

edytowany 1x, ostatnio: akerman

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.