2014-07-16 9 views
8

Kilka usług Windows może współdzielić jeden proces. W języku C# zaczną jak:Architektura usług windowsowych z .Net punktu widzenia

ServiceBase.Run(new MyService1(), new MyService2()); 

The wywołanie metody Run bloków wątku gdzie main() wykonuje. Jednocześnie obsługiwane są wydarzenia związane z usługami. Więc gdzie są wykonywane?

Czy używają asynchronicznego wywołania procedury w "głównym" procesie, który nie jest tylko zablokowany, ale jest w stanie wyczekiwanego oczekiwania? Jeśli tak jest, udostępnianie procesu dla wielu usług ma ujemny wpływ na wydajność. Czy procedury obsługi działają w oddzielnych wątkach? Czy są one wykonywane poza procesem zawierającym wywołanie Run()?

+2

Zadajesz 7 pytań. Musisz go zmniejszyć do * 1 *. –

+2

@HansPassant Pytania 2-5 to tylko wyjaśnienie pierwszego. Usunąłem 6, 7. – SerG

+2

http://msdn.microsoft.com/en-us/library/windows/desktop/ms685967%28v=vs.85%29.aspx –

Odpowiedz

0

W systemie Windows wiele usług może współużytkować pojedynczy proces przy użyciu typu usługi SERVICE_WIN32_SHARE_PROCESS. .NET musi używać tego typu usługi, aby zarejestrować wiele usług w jednym procesie w systemie Windows.

Każda zarejestrowana usługa ma nazwę i natywny adres punktu wejścia reprezentowany przez strukturę SERVICE_TABLE_ENTRY. .NET utworzy SERVICE_TABLE_ENTRY dla każdej usługi przekazanej do metody ServiceBase.Run i wywoła funkcję StartServiceCtrlDispatcher za pomocą tych informacji.

Aby otrzymywać powiadomienia o stanie usługi, punkt wejścia (ServiceMain, zaimplementowany przez klasę ServiceBase) musi zadzwonić pod numer RegisterServiceCtrlHandlerEx, aby otrzymywać powiadomienia. Te powiadomienia są wysyłane za pomocą APC. Na marginesie, API NotifyServiceStatusChange wykorzystuje również urządzenia APC.

0

To, czego prawdopodobnie oczekujesz, to architektura usług systemu Windows i sposób w jaki aplikacje usług są w nich zintegrowane.

Istnieje już bardzo dobry artykuł na ten temat w MSDN, which can be found here.

Wyjaśnia nie tylko, jak system Windows współdziała z usługami, jak działa baza danych usługi (przynajmniej częściowo).

W artykule wyjaśniono również, w jaki sposób działają usługi systemu operacyjnego, oraz podano wskazówki dotyczące usług hostingowych w usługach IIS (Internetowe usługi informacyjne).

Powiązane problemy