Przejdź do treści stopki
Iron Academy Logo
Aplikacja C#
Aplikacja C#

Inne Kategorie

Wprowadzenie do usług Windows w języku C#

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ć skomplikówanie, 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.

Wprowadzenie do usług Windows

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.

Tworzenie aplikacji demonstracyjnej w konsoli

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.

Czym jest usługa Windows?

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.

Typy projektów w Visual Studio: Aplikacja konsolowa vs. Usługa Windows

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."

Dodawanie Topshelf przez NuGet

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:

  1. Kliknij prawym przyciskiem myszy na Referencje

  2. Wybierz Zarządzaj pakietami NuGet

  3. Wyszukaj i zainstaluj Topshelf

Pisanie logiki usługi

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."

To symuluje, jak procesy działające długo działają w prawdziwych usługach, jak skanowanie folderów czy drukowanie dokumentów.

Podłączenie usługi z Topshelf

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

Uruchamianie usługi jako aplikacji konsolowej

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.

Instalacja i weryfikacja usługi

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 start
SimpleHeartbeatService.exe install
SimpleHeartbeatService.exe start

To 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 uninstall
SimpleHeartbeatService.exe uninstall

Podsumowanie: Korzyści i uwagi

Tim 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.

Pomysły na usługi w rzeczywistym świecie

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ń.

Podsumowanie

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ń bezpieczeństwa lub bardziej solidnego wdrożenia, będzie potrzebna dodatkowa konfiguracja.

"Jest tu dużo mocy, i wiele rzeczy, które można zrobić."

Wnioski

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 zrozumieniuiuiuiuia, tworzenia i instalowania usług efektywnie. Nie zapomnij o dokładnym testowaniu i zawsze uruchamiaj instalator lub wiersz poleceń jako administrator.

Hero Worlddot related to Wprowadzenie do usług Windows w języku C#
Hero Affiliate related to Wprowadzenie do usług Windows w języku C#

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespol wsparcia Iron

Jestesmy online 24 godziny, 5 dni w tygodniu.
Czat
Email
Zadzwon do mnie