Hostování v aplikaci služby pro Windows
Služby Systému Windows (dříve označované jako služby systém Windows NT) poskytují procesový model, který je zvláště vhodný pro aplikace, které musí být v dlouhotrvajícím spustitelném souboru a nezobrazují žádnou formu uživatelského rozhraní. Životnost procesu aplikace služby systému Windows je spravována správcem řízení služeb (SCM), který umožňuje spouštět, zastavovat a pozastavit aplikace služeb systému Windows. Proces služby systému Windows můžete nakonfigurovat tak, aby se automaticky spouštěl při spuštění počítače a aby byl vhodným hostitelským prostředím pro "vždy zapnuté" aplikace. Další informace o aplikacích služeb systému Windows naleznete v tématu Aplikace služeb systému Windows.
Aplikace, které hostují dlouhotrvající služby Windows Communication Foundation (WCF), sdílejí mnoho charakteristik se službami Windows. Konkrétně služby WCF jsou dlouhotrvající spustitelné soubory serveru, které nekomuagují přímo s uživatelem, a proto neimplementují žádnou formu uživatelského rozhraní. Například hostování služeb WCF uvnitř aplikace služby systému Windows je jednou z možností pro vytváření robustních dlouhotrvajících aplikací WCF.
Vývojáři WCF se často musí rozhodnout, zda hostovat svou aplikaci WCF uvnitř aplikace služby systému Windows nebo v hostitelském prostředí Internetová informační služba (IIS) nebo hostitelského prostředí was (Windows Process Activation Service). Za následujících podmínek byste měli zvážit použití aplikací služeb systému Windows:
Vaše aplikace vyžaduje explicitní aktivaci. Služby Systému Windows byste například měli použít, když se aplikace musí spustit automaticky, když se server spustí místo dynamického spuštění v reakci na první příchozí zprávu.
Proces, který hostuje vaši aplikaci, musí po spuštění zůstat spuštěný. Po spuštění zůstane proces služby systému Windows spuštěný, pokud správce serveru explicitně nevypíná pomocí správce řízení služeb. Aplikace hostované ve službě IIS nebo WAS mohou být spuštěny a zastaveny dynamicky, aby bylo možné optimálně využívat systémové prostředky. Aplikace, které vyžadují explicitní kontrolu nad životností hostitelského procesu, by měly místo služby IIS nebo WAS používat služby Systému Windows.
Vaše služba WCF musí běžet v systému Windows Server 2003 a používat přenosy jiné než HTTP. V systému Windows Server 2003 je hostitelské prostředí služby IIS 6.0 omezeno pouze na komunikaci HTTP. Aplikace služeb systému Windows nejsou předmětem tohoto omezení a mohou používat jakékoli přenosové technologie WCF, včetně net.tcp, net.pipe a net.msmq.
Postupy
Vytvořte aplikaci služby systému Windows. Aplikace služeb systému Windows můžete psát ve spravovaném kódu pomocí tříd v System.ServiceProcess oboru názvů. Tato aplikace musí obsahovat jednu třídu, která dědí z ServiceBase.
Propojte životnost služeb WCF s životností aplikace služby systému Windows. Obvykle chcete, aby služby WCF hostované v aplikaci služby systému Windows byly aktivní při spuštění hostitelské služby, přestaly naslouchat zprávám, když je hostitelská služba zastavena, a vypnout proces hostování, když služba WCF dojde k chybě. Toho lze dosáhnout následujícím způsobem:
Přepsání OnStart(String[]) pro otevření jedné nebo více instancí ServiceHost. Jedna aplikace služby systému Windows může hostovat více služeb WCF, které se spouštějí a zastavují jako skupina.
Přepsání OnStop pro volání ClosedServiceHost všech spuštěných služeb WCF, které byly spuštěny během OnStart(String[]).
Přihlaste se k odběru Faulted události a ServiceHost pomocí ServiceController třídy ukončete aplikaci služby systému Windows v případě chyby.
Aplikace služeb systému Windows, které hostují služby WCF, se nasazují a spravují stejným způsobem jako aplikace služeb systému Windows, které nepoužívají WCF.