Dela via


Värdtjänster

För att bli aktiv måste en tjänst finnas i en körningsmiljö som skapar den och styr dess kontext och livslängd. WCF-tjänster (Windows Communication Foundation) är utformade för att köras i alla Windows-processer som stöder hanterad kod.

WCF tillhandahåller en enhetlig programmeringsmodell för att skapa tjänstorienterade program. Den här programmeringsmodellen är konsekvent och är oberoende av körningsmiljön där tjänsten distribueras. I praktiken innebär det att koden för dina tjänster ser ungefär likadan ut oavsett värdalternativ.

Dessa värdalternativ sträcker sig från att köras i ett konsolprogram till servermiljöer, till exempel en Windows-tjänst som körs inom en arbetsprocess som hanteras av IIS (Internet Information Services) eller Windows Process Activation Service (WAS). Utvecklare väljer den värdmiljö som uppfyller tjänstens distributionskrav. Dessa krav kan härledas från den plattform där programmet distribueras, den transport som det måste skicka och ta emot meddelanden på, eller på vilken typ av processåtervinning och annan processhantering som krävs för att säkerställa tillräcklig tillgänglighet, eller på andra hanterings- eller tillförlitlighetskrav. Nästa avsnitt innehåller information och vägledning om värdalternativ.

Värdalternativ

Självvärd i ett hanterat program

WCF-tjänster kan finnas i alla hanterade program. Det här är det mest flexibla alternativet eftersom det kräver minst infrastruktur för distribution. Du bäddar in koden för tjänsten i den hanterade programkoden och skapar och öppnar sedan en instans av ServiceHost för att göra tjänsten tillgänglig. Mer information finns i Så här: Värd för en WCF-tjänst i ett hanterat program.

Det här alternativet möjliggör två vanliga scenarier: WCF-tjänster som körs i konsolprogram och omfattande klientprogram, till exempel de som baseras på Windows Presentation Foundation (WPF) eller Windows Forms (WinForms). Att vara värd för en WCF-tjänst i ett konsolprogram är vanligtvis användbart under programmets utvecklingsfas. Detta gör dem enkla att felsöka, lätt att hämta spårningsinformation från för att ta reda på vad som händer i programmet och enkelt att flytta runt genom att kopiera dem till nya platser. Det här värdalternativet gör det också enkelt för omfattande klientprogram, till exempel WPF- och WinForms-program, att kommunicera med omvärlden. Till exempel en peer-to-peer-samarbetsklient som använder WPF för sitt användargränssnitt och även är värd för en WCF-tjänst som gör att andra klienter kan ansluta till den och dela information.

Hanterade Windows-tjänster

Det här värdalternativet består av att registrera programdomänen (AppDomain) som är värd för en WCF-tjänst som en hanterad Windows-tjänst (tidigare känd som NT-tjänst) så att tjänstens processlivstid styrs av tjänstkontrollhanteraren (SCM) för Windows-tjänster. Precis som självvärdalternativet kräver den här typen av värdmiljö att viss värdkod skrivs som en del av programmet. Tjänsten implementeras både som en Windows-tjänst och som en WCF-tjänst genom att den ärver från ServiceBase klassen samt från ett WCF-tjänstkontraktsgränssnitt. ServiceHost Skapas och öppnas sedan inom en åsidosättningsmetod OnStart(String[]) och stängs inom en åsidosättningsmetodOnStop(). En installationsklass som ärver från Installer måste också implementeras för att programmet ska kunna installeras som en Windows-tjänst av verktyget Installutil.exe. Mer information finns i Så här: Värd för en WCF-tjänst i en hanterad Windows-tjänst. Scenariot som aktiveras av det hanterade värdalternativet för Windows-tjänsten är det för en långvarig WCF-tjänst som finns utanför IIS i en säker miljö som inte är meddelandeaktiverad. Tjänstens livslängd styrs i stället av operativsystemet. Det här värdalternativet är tillgängligt i alla versioner av Windows.

Internet Information Services (IIS)

IIS-värdalternativet är integrerat med ASP.NET och använder de funktioner som dessa tekniker erbjuder, till exempel processåtervinning, inaktiv avstängning, övervakning av processhälsa och meddelandebaserad aktivering. På operativsystemen Windows XP och Windows Server 2003 är detta den bästa lösningen för att vara värd för webbtjänstprogram som måste vara mycket tillgängliga och mycket skalbara. IIS erbjuder också den integrerade hanterbarhet som kunderna förväntar sig av en serverprodukt i företagsklass. Det här värdalternativet kräver att IIS är korrekt konfigurerat, men det kräver inte att någon värdkod skrivs som en del av programmet. Mer information om hur du konfigurerar IIS-värdtjänster för en WCF-tjänst finns i Så här är du värd för en WCF-tjänst i IIS.

IIS-värdbaserade tjänster kan bara använda HTTP-transporten. Implementeringen i IIS 5.1 har infört vissa begränsningar i Windows XP. Den meddelandebaserade aktivering som tillhandahålls för en WCF-tjänst av IIS 5.1 i Windows XP blockerar alla andra lokalt installerade WCF-tjänster på samma dator från att använda port 80 för att kommunicera. WCF-tjänster kan köras i samma AppDomain/Programpool/Arbetsprocess som andra program som hanteras av IIS 6.0 på Windows Server 2003. Men eftersom både WCF och IIS 6.0 använder HTTP-stacken i kernelläge (HTTP.sys) kan IIS 6.0 dela port 80 med andra lokalt installerade WCF-tjänster som körs på samma dator, till skillnad från IIS 5.1.

Windows Process Activation Service (WAS)

Windows Process Activation Service (WAS) är den nya processaktiveringsmekanismen för Windows Server 2008 som också är tillgänglig i Windows Vista. Den behåller den välbekanta IIS 6.0-processmodellen (programpooler och meddelandebaserad processaktivering) och värdfunktioner (till exempel snabbt felskydd, hälsoövervakning och återvinning), men det tar bort beroendet av HTTP från aktiveringsarkitekturen. IIS 7.0 använder WAS för att utföra meddelandebaserad aktivering via HTTP. Ytterligare WCF-komponenter ansluter också till WAS för att tillhandahålla meddelandebaserad aktivering över de andra protokollen som WCF stöder, till exempel TCP, MSMQ och namngivna pipes. På så sätt kan program som använder kommunikationsprotokoll använda IIS-funktioner som processåterställning, snabbt skydd mot fel och det vanliga konfigurationssystemet som endast var tillgängligt för HTTP-baserade program.

Det här värdalternativet kräver att WAS är korrekt konfigurerat, men det kräver inte att du skriver någon värdkod som en del av programmet. Mer information om hur du konfigurerar WAS-värd finns i Så här: Värd för en WCF-tjänst i WAS.

Välj en värdmiljö

I följande tabell sammanfattas några av de viktigaste fördelarna och scenarierna som är associerade med vart och ett av värdalternativen.

Värdmiljö Vanliga scenarier Viktiga fördelar och begränsningar
Hanterat program ("Lokalt installerad") – Konsolprogram som används under utvecklingen.
– Omfattande WinForm- och WPF-klientprogram som har åtkomst till tjänster.
-Flexibel.
– Lätt att distribuera.
– Inte en företagslösning för tjänster.
Windows Services (kallades tidigare NT-tjänster) – En långvarig WCF-tjänst som finns utanför IIS. – Livslängd för tjänstprocess som styrs av operativsystemet, inte meddelandeaktiverad.
– Stöds av alla versioner av Windows.
– Säker miljö.
IIS 5.1, IIS 6.0 – Köra en WCF-tjänst sida vid sida med ASP.NET innehåll på Internet med hjälp av HTTP-protokollet. - Processåtervinning.
- Inaktiv avstängning.
- Bearbeta hälsoövervakning.
– Meddelandebaserad aktivering.
- Endast HTTP.
Windows Process Activation Service (WAS) – Köra en WCF-tjänst utan att installera IIS på Internet med hjälp av olika transportprotokoll. – IIS krävs inte.
- Processåtervinning.
- Inaktiv avstängning.
- Bearbeta hälsoövervakning.
– Meddelandebaserad aktivering.
– Fungerar med HTTP, TCP, namngivna pipes och MSMQ.
IIS 7.0 – Köra en WCF-tjänst med ASP.NET innehåll.
– Köra en WCF-tjänst på Internet med hjälp av olika transportprotokoll.
- VAR fördelar.
– Integrerad med ASP.NET och IIS-innehåll.

Valet av värdmiljö beror på vilken version av Windows den distribueras på, vilka transporter som krävs för att skicka meddelanden och vilken typ av process- och programdomän som krävs. I följande tabell sammanfattas de data som är relaterade till dessa krav.

Värdmiljö Plattformstillgänglighet Transporter som stöds Process- och AppDomain-återvinning
Hanterade program ("Lokalt installerad") Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

net.tcp,

net.pipe,

net.msmq
Nej
Windows Services (kallades tidigare NT-tjänster) Windows XP, Windows Server 2003, Windows Vista,

Windows Server 2008
HTTP,

net.tcp,

net.pipe,

net.msmq
Nej
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

Det är viktigt att observera att säkerheten äventyras om du kör en tjänst eller ett tillägg från en ej betrodd värd. När du öppnar en ServiceHost under personifiering måste ett program också se till att användaren inte loggas ut, till exempel genom att cachelagra WindowsIdentity användarens.

Se även