2014-07-16 9 views
8

Diversi servizi Windows possono condividere un processo. In C# inizieranno come:Architettura di servizi Windows da .Net point

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

Il richiamo dei blocchi metodo run thread in cui main() esegue. Allo stesso tempo vengono gestiti gli eventi dei servizi. Quindi dove vengono eseguiti?

Usano la chiamata di procedura asincrona nel processo "principale" che non è solo bloccato ma è in attesa prevedibile? Se è così, la condivisione di un processo per più servizi presenta un inconveniente nelle prestazioni. I gestori corrono in thread separati? Vengono eseguiti al di fuori del processo che contiene la chiamata Run()?

+2

Hai fatto 7 domande. Dovrai ridurlo a * uno *. –

+2

@HansPassant Le domande 2-5 sono solo un chiarimento del primo. Ho rimosso 6, 7. – SerG

+2

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

risposta

0

In Windows, più servizi possono condividere un singolo processo utilizzando il tipo di servizio SERVICE_WIN32_SHARE_PROCESS. .NET deve utilizzare questo tipo di servizio per registrare più servizi in un unico processo su Windows.

Ogni servizio registrato ha un nome e un indirizzo del punto di ingresso nativo rappresentato dalla struttura SERVICE_TABLE_ENTRY. .NET deve costruire un SERVICE_TABLE_ENTRY per ogni servizio passato al metodo ServiceBase.Run e chiamare la funzione StartServiceCtrlDispatcher con queste informazioni.

Per ricevere notifiche sullo stato del servizio, il punto di ingresso (ServiceMain come implementato dalla classe ServiceBase) deve chiamare RegisterServiceCtrlHandlerEx per ricevere le notifiche. Queste notifiche vengono inviate utilizzando gli APC. Come nota a margine, l'API NotifyServiceStatusChange utilizza anche gli APC.

0

Quello che probabilmente cercate è l'architettura del servizio Windows e in che modo sono integrate le applicazioni di servizio.

Esiste già un ottimo articolo su questo argomento in MSDN, which can be found here.

Essa non solo spiega come di Windows interagisce con i servizi, come funziona il database di servizi (almeno in parte).

L'articolo spiega anche come funzionano i servizi del sistema operativo e fornisce alcuni suggerimenti sui servizi di hosting nell'IIS (Internet Information Services).