Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
31m 20s
Usługi Windows to potężne narzędzia w ekosystemie .NET, zdolne do wykonywania zadań w tle bez interwencji użytkownika. Tworzenie usługi Windows w C# może brzmieć skomplikowanie, ale w swoim filmie "Intro to Windows Services in C# - How to create, install, and use a service using Topshelf", Tim Corey tłumaczy to krok po kroku.
W tym artykułe przeanalizujemy ten film, omawiając każdy temat dla jasności i ciągłości.
Tim przedstawia usługi Windows jako potężne, często pomijane narzędzia do automatyzacji. Te aplikacje są zaprojektowane do działania w tle, obsługując zadania bez potrzeby interfejsu użytkownika. Typowe przykłady to SQL Server Agent lub usługi Hyper-V.
Tim podkreśla znaczenie ćwiczeń dla opanowania C#. Zaleca pobranie kodu źródłowego połączonego w opisie filmu dla nauki praktycznej.
Używając Visual Studio, Tim tworzy nowy projekt aplikacji konsolowej o nazwie SimpleHeartbeatService. Chociaż można użyć szablonu projektu Usługi Windows, Tim preferuje podejście konsolowe ze względu na prostotę debugowania.
"Chodzi tu nie o to, jaki kod umieszczę, ale jak stworzyć samą usługę," zauważa Tim.
Tim otwiera zakładkę Usługi w Windows, używając wyszukiwania w menu Start (wystarczy wpisać "usługi" i nacisnąć Enter). Wyjaśnia, że usługi działające w tle wykonują kluczowe funkcje systemu operacyjnego jak zdalny pulpit czy serwer MySQL.
Celem jest stworzenie nowego wpisu na tej liście przy użyciu własnego kodu.
Możesz być skłonny wybrać projekt Usługi Windows w Visual Studio, ale Tim wyjaśnia, że trudniej go debugować. Zamiast tego aplikacja konsolowa pozwala uruchamiać i testować ją lokalnie, co zmniejsza potrzebę podłączania debugera do działającej usługi.
"Wbudowany typ projektu usługi utrudnia debugowanie, ponieważ najpierw trzeba go zainstalować, a potem dołączyć debugger."
Aby uprościć implementację usługi, Tim dodaje Topshelf, otwartoźródłowy framework, przez NuGet. Ta popularna biblioteka (z milionami pobrań) pomaga tworzyć usługi Windows bez kodu szablonowego.
Kroki:
Kliknij prawym przyciskiem myszy na Referencje
Wybierz Zarządzaj pakietami NuGet
Wyszukaj i zainstaluj Topshelf
Tim tworzy klasę Heartbeat z dwoma publicznymi metodami: Start() i Stop(). W konstruktorze ustawia System.Timers.Timer do wykonywania co sekundę.
Zdarzenie Elapsed tego timera dopisuje bieżący czas do pliku .txt w folderze C:\temp\demos. To imituje zadanie działające w tle, które działa nieprzerwanie.
"Ten timer będzie co sekundę zapisywać do pliku tekstowego, pokazując, że usługa jest aktywna."
Symuluje to działanie długotrwałych procesów w rzeczywistych usługach, takich jak skanowanie folderów czy drukowanie dokumentów.
Używając HostFactory.Run, Tim integruje Topshelf z aplikacją:
Definiuje klasę Heartbeat
Mapuje metody Start() i Stop()
Konfiguruje usługę do działania jako LocalSystem, nadając niezbędne uprawnienia
Ustawia również metadane dla usługi:
Nazwa usługi: HeartbeatService
Nazwa wyświetlana: Heartbeat Service
Opis: Używane do celów demonstracyjnych w filmie na YouTube
Przed instalacją Tim uruchamia aplikację, aby ją przetestować. Timer poprawnie dopisuje znaczniki czasu do heartbeat.txt. Używając funkcji Monitoringu w Notepad++, pokazuje aktualizacje w czasie rzeczywistym.
Tim kopiuje plik .exe i powiązane pliki z folderu bin\Debug do stałej lokalizacji (np. C:\demos\HeartbeatService). Używając wiersza poleceń z uprawnieniami administracyjnymi, wykonuje następujące polecenia:
SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe startSimpleHeartbeatService.exe install
SimpleHeartbeatService.exe startTo dodaje usługę do Menedżera Kontroli Usług. Po ponownym otwarciu zakładki Usługi i kliknięciu Odśwież, usługa jest teraz widoczna i działa.
"Naprawdę łatwo jest zainstalować usługę, i naprawdę łatwo jest coś zrobić z usługą."
Aby odinstalować:
SimpleHeartbeatService.exe uninstallSimpleHeartbeatService.exe uninstallTim podsumowuje, że tworzenie i instalowanie usługi przy użyciu Topshelf jest proste. Jednak ostrzega, że nieskończone pisanie do plików może prowadzić do problemów z przechowywaniem, co jest dobrym przypomnieniem o właściwym zarządzaniu logowaniem.
Tim dzieli się praktycznymi pomysłami na usługi Windows:
Czyszczenie folderów: Usuń stare pliki z folderu Pobrane
Organizacja obrazów: Sortuj zdjęcia do folderów według daty
Przetwarzanie CSV: Obserwuj folder i automatycznie importuj CSV do bazy danych
Automatyzacja e-mail: Monitoruj tabelę helpdesk i wysyłaj powiadomienia
Te przykłady pokazują, jak używać usług do automatyzacji zadań w tle i integracji z takimi narzędziami jak SQL Server, OneDrive i planery zadań.
Tim kończy, zachęcając programistów do eksperymentowania. Należy jednak uważać na pamięć, przechowywanie i logowanie wydarzeń. Jeśli potrzebujesz automatycznej aktualizacji, ustawień zabezpieczeń lub bardziej solidnego wdrożenia, wymagana będzie dalsza konfiguracja.
"Jest tu dużo mocy, i wiele rzeczy, które można zrobić."
Używając demonstracji krok po kroku Tima Coreya w jego filmie, tworzenie usługi Windows w C# staje się dostępne i praktyczne. Dzięki zastosowaniu Topshelf, aplikacja konsolowa może być przekształcona w pełni działającą usługę Windows z minimalną konfiguracją. Niezależnie od tego, czy zarządzasz plikami dziennika, obsługujesz zdarzenia bazy danych czy wykonujesz automatyzację, usługi oferują potężny i skalowalny sposób budowania aplikacji działających w czasie rzeczywistym, w tle z wykorzystaniem .NET Framework lub .NET Core.
Użyj tego samouczka jako kompletnej ścieżki do zrozumienia, tworzenia i instalowania usług efektywnie. Nie zapomnij o dokładnym testowaniu i zawsze uruchamiaj instalator lub wiersz poleceń jako administrator.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy