Hostingservices
Als u actief wilt worden, moet een service worden gehost in een runtimeomgeving die deze maakt en de context en levensduur beheert. WcF-services (Windows Communication Foundation) zijn ontworpen om te worden uitgevoerd in elk Windows-proces dat beheerde code ondersteunt.
WCF biedt een geïntegreerd programmeermodel voor het bouwen van servicegerichte toepassingen. Dit programmeermodel blijft consistent en is onafhankelijk van de runtime-omgeving waarin de service wordt geïmplementeerd. In de praktijk betekent dit dat de code voor uw services er ongeveer hetzelfde uitziet als de hostingoptie.
Deze hostingopties variëren van het uitvoeren in een consoletoepassing tot serveromgevingen zoals een Windows-service die wordt uitgevoerd binnen een werkproces dat wordt beheerd door Internet Information Services (IIS) of door Windows Process Activation Service (WAS). Ontwikkelaars kiezen de hostingomgeving die voldoet aan de implementatievereisten van de service. Deze vereisten kunnen zijn afgeleid van het platform waarop de toepassing wordt geïmplementeerd, het transport waarop de toepassing berichten moet verzenden en ontvangen, of van het type procesrecycling en ander procesbeheer dat nodig is om voldoende beschikbaarheid te garanderen, of op een andere beheer- of betrouwbaarheidsvereisten. De volgende sectie bevat informatie en richtlijnen voor hostingopties.
Hostingopties
Zelfhost in een beheerde toepassing
WCF-services kunnen worden gehost in elke beheerde toepassing. Dit is de meest flexibele optie omdat hiervoor de minste infrastructuur is vereist om te implementeren. U sluit de code voor de service in de code van de beheerde toepassing in en maakt en opent vervolgens een exemplaar van de ServiceHost service om de service beschikbaar te maken. Zie Procedures voor meer informatie: Een WCF-service hosten in een beheerde toepassing.
Deze optie maakt twee veelvoorkomende scenario's mogelijk: WCF-services die worden uitgevoerd in consoletoepassingen en uitgebreide clienttoepassingen, zoals die op basis van Windows Presentation Foundation (WPF) of Windows Forms (WinForms). Het hosten van een WCF-service in een consoletoepassing is doorgaans nuttig tijdens de ontwikkelingsfase van de toepassing. Hierdoor kunnen ze eenvoudig fouten opsporen, gemakkelijk traceringsinformatie ophalen om erachter te komen wat er in de toepassing gebeurt en eenvoudig te navigeren door ze naar nieuwe locaties te kopiëren. Deze hostingoptie maakt het ook eenvoudig voor uitgebreide clienttoepassingen, zoals WPF- en WinForms-toepassingen, om met de buitenwereld te communiceren. Een peer-to-peer-samenwerkingsclient die WPF gebruikt voor de gebruikersinterface en host ook een WCF-service waarmee andere clients verbinding kunnen maken en informatie kunnen delen.
Beheerde Windows-services
Deze hostingoptie bestaat uit het registreren van het toepassingsdomein (AppDomain) dat als host fungeert voor een WCF-service als een beheerde Windows-service (voorheen bekend als NT-service), zodat de levensduur van het proces van de service wordt beheerd door de Service Control Manager (SCM) voor Windows-services. Net als bij de selfhostingoptie vereist dit type hostingomgeving dat sommige hostingcode wordt geschreven als onderdeel van de toepassing. De service wordt geïmplementeerd als zowel een Windows-service als als een WCF-service door deze over te nemen van de ServiceBase klasse en van een WCF-servicecontractinterface. De ServiceHost wordt vervolgens gemaakt en geopend binnen een overschreven OnStart(String[]) methode en gesloten binnen een overschreven OnStop() methode. Een installatieprogrammaklasse van waaruit wordt Installer overgenomen, moet ook worden geïmplementeerd om het programma te kunnen installeren als een Windows-service door het hulpprogramma Installutil.exe. Zie Procedures voor meer informatie: Een WCF-service hosten in een beheerde Windows-service. Het scenario dat is ingeschakeld door de beheerde windows-servicehostingoptie is dat van een langlopende WCF-service die buiten IIS wordt gehost in een beveiligde omgeving die niet wordt geactiveerd door een bericht. De levensduur van de service wordt in plaats daarvan beheerd door het besturingssysteem. Deze hostingoptie is beschikbaar in alle versies van Windows.
Internet Information Services (IIS)
De IIS-hostingoptie is geïntegreerd met ASP.NET en maakt gebruik van de functies die deze technologieën bieden, zoals procesrecycling, niet-actieve afsluiting, processtatuscontrole en activering op basis van berichten. Op de besturingssystemen Windows XP en Windows Server 2003 is dit de voorkeursoplossing voor het hosten van webservicetoepassingen die maximaal beschikbaar en zeer schaalbaar moeten zijn. IIS biedt ook de geïntegreerde beheerbaarheid die klanten verwachten van een serverproduct van bedrijfsklasse. Deze hostingoptie vereist dat IIS correct is geconfigureerd, maar vereist niet dat er hostingcode wordt geschreven als onderdeel van de toepassing. Zie How to: Host a WCF Service in IIS (Een WCF-service hosten in IIS) voor meer informatie over het configureren van IIS-hosting voor een WCF-service.
IIS-gehoste services kunnen alleen gebruikmaken van het HTTP-transport. De implementatie in IIS 5.1 heeft enkele beperkingen in Windows XP geïntroduceerd. De activering op basis van berichten voor een WCF-service door IIS 5.1 op Windows XP blokkeert alle andere zelf-hostende WCF-service op dezelfde computer van poort 80 om te communiceren. WCF-services kunnen worden uitgevoerd in hetzelfde AppDomain/Application Pool/Worker-proces als andere toepassingen wanneer deze worden gehost door IIS 6.0 op Windows Server 2003. Maar omdat WCF en IIS 6.0 beide gebruikmaken van de HTTP-stack in de kernelmodus (HTTP.sys), kan IIS 6.0 poort 80 delen met andere zelf-hostende WCF-services die op dezelfde computer worden uitgevoerd, in tegenstelling tot IIS 5.1.
Windows Process Activation Service (WAS)
Windows Process Activation Service (WAS) is het nieuwe procesactiveringsmechanisme voor Windows Server 2008 dat ook beschikbaar is op Windows Vista. Het behoudt het vertrouwde IIS 6.0-procesmodel (toepassingsgroepen en activering van berichten) en hostingfuncties (zoals snelle bescherming tegen fouten, statuscontrole en recycling), maar verwijdert de afhankelijkheid van HTTP uit de activeringsarchitectuur. IIS 7.0 gebruikt WAS om activering op basis van berichten via HTTP uit te voeren. Aanvullende WCF-onderdelen kunnen ook worden aangesloten op WAS om activering op basis van berichten te bieden via de andere protocollen die WCF ondersteunt, zoals TCP, MSMQ en named pipes. Hierdoor kunnen toepassingen die gebruikmaken van communicatieprotocollen de IIS-functies gebruiken, zoals procesrecycling, snelle failbeveiliging en het algemene configuratiesysteem dat alleen beschikbaar was voor HTTP-toepassingen.
Deze hostingoptie vereist dat WAS correct is geconfigureerd, maar u hoeft geen hostingcode te schrijven als onderdeel van de toepassing. Zie How to: Host a WCF Service in WAS voor meer informatie over het configureren van WAS-hosting.
Een hostingomgeving kiezen
De volgende tabel bevat een overzicht van enkele van de belangrijkste voordelen en scenario's die zijn gekoppeld aan elk van de hostingopties.
Hostingomgeving | Gangbare scenario's | Belangrijke voordelen en beperkingen |
---|---|---|
Beheerde toepassing (zelf-hostend) | - Consoletoepassingen die tijdens de ontwikkeling worden gebruikt. - Uitgebreide WinForm- en WPF-clienttoepassingen die toegang hebben tot services. |
-Flexibele. - Eenvoudig te implementeren. - Geen bedrijfsoplossing voor services. |
Windows Services (voorheen bekend als NT-services) | - Een langlopende WCF-service die buiten IIS wordt gehost. | - De levensduur van het serviceproces dat wordt beheerd door het besturingssysteem, niet door bericht geactiveerd. - Ondersteund door alle versies van Windows. - Veilige omgeving. |
IIS 5.1, IIS 6.0 | - Het uitvoeren van een WCF-service naast ASP.NET inhoud op internet met behulp van het HTTP-protocol. | - Procesrecycling. - Niet-actieve afsluiting. - Processtatuscontrole. - Activering op basis van berichten. - alleen HTTP. |
Windows Process Activation Service (WAS) | - Een WCF-service uitvoeren zonder IIS op internet te installeren met behulp van verschillende transportprotocollen. | - IIS is niet vereist. - Procesrecycling. - Niet-actieve afsluiting. - Processtatuscontrole. - Activering op basis van berichten. - Werkt met HTTP, TCP, benoemde pijpen en MSMQ. |
IIS 7.0 | - Een WCF-service uitvoeren met ASP.NET inhoud. - Het uitvoeren van een WCF-service op internet met behulp van verschillende transportprotocollen. |
- WAS voordelen. - Geïntegreerd met ASP.NET en IIS-inhoud. |
De keuze van een hostingomgeving is afhankelijk van de versie van Windows waarop deze wordt geïmplementeerd, de transporten die nodig zijn om berichten te verzenden en het type proces en het toepassingsdomein dat nodig is voor recycling. De volgende tabel bevat een overzicht van de gegevens met betrekking tot deze vereisten.
Hostingomgeving | Beschikbaarheid van platform | Ondersteunde transporten | Proces en AppDomain Recycling |
---|---|---|---|
Beheerde toepassingen ('zelf-hostend') | Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 |
HTTP, net.tcp, net.pipe, net.msmq |
Nee |
Windows Services (voorheen bekend als NT-services) | Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 |
HTTP, net.tcp, net.pipe, net.msmq |
Nee |
IIS 5.1 | Windows XP | HTTP | Ja |
IIS 6.0 | Windows Server 2003 | HTTP | Ja |
Windows Process Activation Service (WAS) | Windows Vista, Windows Server 2008 | HTTP, net.tcp, net.pipe, net.msmq |
Ja |
Het is belangrijk te weten dat het uitvoeren van een service of een extensie van een niet-vertrouwde host een inbreuk maakt op de beveiliging. Bij het openen van een ServiceHost onder-imitatie moet een toepassing er ook voor zorgen dat de gebruiker niet is afgemeld, bijvoorbeeld door de gebruiker in de cache op te WindowsIdentity plaatsen.