Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Visual Studio innehåller verktyg för att arbeta med Windows Communication Foundation (WCF) och WCF Data Services, Microsoft-tekniker för att skapa distribuerade program. Den här artikeln innehåller en introduktion till tjänster ur ett Visual Studio-perspektiv. Fullständig dokumentation finns i WCF Data Services 4.5.
Windows Communication Foundation (WCF) är ett enhetligt ramverk för att skapa säkra, tillförlitliga, transaktionshanterade och interoperabla distribuerade program. Den ersätter äldre kommunikationstekniker mellan processer som ASMX-webbtjänster, .NET-fjärrkommunikation, Enterprise Services (DCOM (Distributed Component Object Model) och Microsoft Message Queue (MSMQ). WCF sammanför funktionerna i alla dessa tekniker under en enhetlig programmeringsmodell. Den här metoden förenklar upplevelsen av att utveckla distribuerade program.
WCF Data Services
WCF Data Services är en implementering av OData-protokollstandarden (Open Data Protocol). Med WCF Data Services kan du exponera tabelldata som en uppsättning REST-API:er, vilket gör att du kan returnera data med hjälp av vanliga HTTP-kommandon som GET, POST, PUToch DELETE. På serversidan ersätter ASP.NET webb-API WCF Data Services för att skapa nya OData-tjänster. WCF Data Services-klientbiblioteket är fortfarande ett bra val för att använda OData-tjänster i ett .NET-program från Visual Studio (Project>Add Service Reference). Mer information finns i WCF Data Services 4.5.
WCF-programmeringsmodell
WCF-programmeringsmodellen baseras på kommunikation mellan två entiteter: en WCF-tjänst och en WCF-klient. Programmeringsmodellen är inkapslad i System.ServiceModel namnområdet i .NET.
WCF-tjänst
En WCF-tjänst baseras på ett gränssnitt som definierar ett kontrakt mellan tjänsten och klienten. Tjänsten är markerad med ett ServiceContractAttribute attribut, enligt följande kod:
Du definierar funktioner eller metoder som exponeras av en WCF-tjänst genom att markera dem med ett OperationContractAttribute attribut.
Du kan också exponera serialiserade data genom att markera en sammansatt typ med ett DataContractAttribute attribut, vilket möjliggör databindning i en klient.
När ett gränssnitt och dess metoder har definierats kapslas de in i en klass som implementerar gränssnittet. En enda WCF-tjänstklass kan implementera flera tjänstkontrakt.
En WCF-tjänst exponeras för förbrukning via en så kallad slutpunkt. Slutpunkten är det enda sättet att kommunicera med tjänsten. Du kan inte komma åt tjänsten via en direkt referens som du gör i andra klasser.
En slutpunkt består av en adress, en bindning och ett kontrakt. Adressen definierar var tjänsten finns, till exempel en URL, en FTP-adress (File Transfer Protocol) eller ett nätverk eller en lokal sökväg. En bindning definierar hur du kommunicerar med tjänsten. WCF-bindningar ger en mångsidig modell för att ange ett protokoll som HTTP eller FTP med en säkerhetsmekanism som Windows-autentisering eller användarnamn och lösenord. Ett kontrakt innehåller de operationer som exponeras av WCF-tjänstklassen.
Flera slutpunkter kan exponeras för en enda WCF-tjänst. Med den här metoden kan olika klienter kommunicera med samma tjänst på olika sätt. En banktjänst kan till exempel tillhandahålla en slutpunkt för anställda och en annan för externa kunder, där var och en använder en annan adress, bindning eller kontrakt.
WCF-klient
En WCF-klient består av en proxy som gör det möjligt för ett program att kommunicera med en WCF-tjänst och en slutpunkt som matchar en slutpunkt som definierats för tjänsten. Proxyn genereras på klientsidan i app.config-filen och innehåller information om de typer och metoder som exponeras av tjänsten. För tjänster som exponerar flera slutpunkter kan klienten välja den som bäst passar dess behov, till exempel för att kommunicera via HTTP och använda Windows-autentisering.
När en WCF-klient har skapats refererar du till tjänsten i koden precis som du gör med andra objekt. Om du till exempel vill anropa metoden GetData som visades tidigare skriver du kod som liknar följande exempel:
private void button1_Click(System.Object sender, System.EventArgs e)
{
ServiceReference1.Service1Client client = new
ServiceReference1.Service1Client();
string returnString;
returnString = client.GetData(textBox1.Text);
label1.Text = returnString;
}
WCF-verktyg i Visual Studio
Visual Studio innehåller verktyg som hjälper dig att skapa både WCF-tjänster och WCF-klienter. Mer information finns i Genomgång: Skapa en enkel WCF-tjänst i Windows Forms.
Skapa och testa WCF-tjänster
Du kan använda WCF Visual Studio-mallarna som grund för att snabbt skapa en egen tjänst. Du kan sedan använda WCF-tjänstens automatiska värd och WCF-testklient för att felsöka och testa tjänsten. Dessa verktyg ger en snabb och bekväm felsöknings- och testcykel och eliminerar kravet på att checka in på en värdmodell i ett tidigt skede.
WCF-mallar
WCF Visual Studio-mallar ger en grundläggande klassstruktur för tjänstutveckling. Flera WCF-mallar är tillgängliga i dialogrutan Lägg till nytt projekt , inklusive WCF-tjänstbiblioteksprojekt, WCF-tjänstwebbplatser och WCF-tjänstobjektmallar.
När du väljer en mall läggs filer till för ett tjänstkontrakt, en tjänstimplementering och en tjänstkonfiguration. Alla nödvändiga attribut har redan lagts till, vilket skapar en enkel "Hello World"-typ av tjänst och du behövde inte skriva någon kod. Du kan lägga till kod för att tillhandahålla funktioner och metoder för din verkliga tjänst, men mallarna ger den grundläggande grunden.
Mer information finns i WCF Visual Studio-mallar.
WCF-tjänstvärd
När du startar Visual Studio-felsökningsprogrammet (genom att välja F5) för ett WCF-tjänstprojekt startas WCF-tjänstens värdverktyg automatiskt som värd för tjänsten lokalt. Verktyget räknar upp tjänsterna i ett WCF-tjänstprojekt, läser in projektets konfiguration och instansierar en värd för varje tjänst som hittas.
Verktyget hjälper dig att testa en WCF-tjänst utan att skriva extra kod eller binda dig till en viss värd under utvecklingen. Mer information finns i server för WCF-tjänster (WcfSvcHost.exe).
WCF-testklient
Med verktyget WCF-testklient kan du mata in testparametrar, skicka indata till en WCF-tjänst och visa svaret från tjänsten. Verktyget erbjuder en lättanvänd testupplevelse för tjänster när du kombinerar det med WCF Service Host. Platsen för verktyget är Common7\IDE under installationsmappen för Visual Studio.
När du väljer F5 för att felsöka ett WCF-tjänstprojekt öppnas WCF-testklienten och visar en lista över tjänstslutpunkter som definierats i konfigurationsfilen. Du kan testa parametrarna och starta tjänsten och upprepa den här processen för att kontinuerligt testa och verifiera din tjänst. Mer information finns i WCF-testklienten (WcfTestClient.exe).
Få åtkomst till WCF-tjänster i Visual Studio
Visual Studio förenklar uppgiften att skapa WCF-klienter genom att automatiskt generera en proxy och slutpunkt för tjänster som du lägger till i dialogrutan Lägg till tjänstreferens . All nödvändig konfigurationsinformation läggs till i filenapp.config . För det mesta behöver du bara instansiera tjänsten för att börja använda den.
I dialogrutan Lägg till tjänstreferens anger du adressen för en tjänst eller söker efter en tjänst som definierats i din lösning. Systemet returnerar en lista över tjänster och åtgärder som tillhandahålls av tjänsterna. Du kan också definiera namnområdet för att referera till tjänsterna i koden.
I dialogrutan Konfigurera tjänstreferenser anpassar du konfigurationen för en tjänst. Du kan ändra adressen för en tjänst, ange åtkomstnivå, asynkront beteende och meddelandekontraktstyper och konfigurera återanvändning av typ.
Tjänstslutpunkt
Vissa WCF-tjänster exponerar flera slutpunkter genom vilka klienter kan kommunicera med tjänsten. En tjänst kan exponera en slutpunkt som använder en HTTP-bindning med användarnamn och lösenordssäkerhet och en andra slutpunkt som använder FTP med Windows-autentisering. Den första slutpunkten används av program för att komma åt tjänsten utanför en brandvägg, medan den andra kan användas i ett intranät.
I det här scenariot specificerar du parametern endpointConfigurationName med konstruktorn för en tjänstreferens.
Anmärkning
Anvisningarna i den här artikeln illustrerar den senaste versionen av den interaktiva utvecklingsupplevelsen (IDE) som är tillgänglig i Visual Studio. Datorn kan visa olika namn eller platser för vissa av användargränssnittselementen. Du kanske använder en annan version av Visual Studio eller andra miljöinställningar. Mer information finns i Anpassa IDE-.
Välj tjänstslutpunkt
Välj en tjänstslutpunkt genom att följa dessa steg:
Lägg till en referens till en WCF-tjänst genom att högerklicka på projektnoden i Solution Explorer och välja Lägg till tjänstreferens.
I kodredigeraren lägger du till en konstruktor för tjänstreferensen. Ersätt
ServiceReferencemed namnområdet för tjänstreferensen och ersättService1Clientmed namnet på tjänsten.
När du anger koden visas en IntelliSense-lista som innehåller överlagringarna för konstruktorn. Välj överlagring
endpointConfigurationName As String.När du har valt överlagringen anger du
="<ServiceEndpoint>", där<ServiceEndpoint>är namnet på den slutpunktstjänst som du vill använda.Tips/Råd
Namnen på de tillgängliga slutpunkterna definieras i filenapp.config .
Hitta tillgängliga slutpunkter för WCF-tjänsten
Följ dessa steg för att hitta tillgängliga slutpunkter för en WCF-tjänst:
Högerklicka på app.config-filen för projektet som innehåller tjänstreferensen i Solution Explorer och välj sedan Öppna. Filen öppnas i kodredigeraren.
Sök efter taggen
<Client>i filen.I taggavsnittet
<Client>söker du efter en kapslad tagg som börjar med<Endpoint>.När tjänstreferensen innehåller flera slutpunkter finns det två eller flera
<Endpoint>taggar.<EndPoint>Leta upp parametern i taggdefinitionenname="<ServiceEndpoint>"(där<ServiceEndpoint>representerar ett slutpunktsnamn för tjänsten). Det här värdet är namnet på tjänstslutpunkten som kan skickas till överlagringenendpointConfigurationName As Stringav en konstruktor för en tjänstreferens.
Anropa tjänstmetoder asynkront
De flesta metoder i WCF-tjänster kan anropas synkront eller asynkront. När du anropar en metod asynkront kan programmet fortsätta att fungera medan metoden anropas. Den här metoden är användbar när systemet fungerar via en långsam anslutning.
När en tjänstreferens läggs till i ett projekt är standardkonfigurationen att anropa metoder synkront. Du kan ändra beteendet till att anropa metoder asynkront i dialogrutan Konfigurera tjänstreferens .
Alternativet anges per tjänst . Om en metod för en tjänst anropas asynkront måste alla metoder anropas asynkront.
Anmärkning
Anvisningarna i den här artikeln illustrerar den senaste versionen av den interaktiva utvecklingsupplevelsen (IDE) som är tillgänglig i Visual Studio. Datorn kan visa olika namn eller platser för vissa av användargränssnittselementen. Du kanske använder en annan version av Visual Studio eller andra miljöinställningar. Mer information finns i Anpassa IDE-.
Anropa en metod asynkront
Följ dessa steg om du vill anropa en tjänstmetod asynkront:
I Solution Explorer väljer du tjänstreferensen.
Välj Projekt>Konfigurera tjänstreferens.
I dialogrutan Konfigurera tjänstreferens markerar du kryssrutan Generera asynkrona åtgärder .
Binda data som tjänsten returnerar
Du kan binda data som returneras av en WCF-tjänst till en kontroll precis som du binder alla andra datakällor till en kontroll. När du lägger till en referens till en WCF-tjänst, om tjänsten innehåller sammansatta typer som returnerar data, läggs de automatiskt till i fönstret Datakällor .
Bind kontroll till datafält som returneras av WCF-tjänsten
Använd följande steg för att binda en kontroll till ett enda datafält som returneras av en WCF-tjänst:
Välj Data>Visa datakällor. Fönstret Datakällor öppnas.
I fönstret Datakällor expanderar du noden för tjänstreferensen. Alla sammansatta typer som returneras av tjänstens visning.
Expandera en typnod och visa datafälten för typen.
Välj ett fält och expandera listrutan för att se listan över tillgängliga kontroller för datatypen.
Välj den typ av kontroll som du vill binda till.
Dra fältet till ett formulär. Kontrollen läggs till i formuläret tillsammans med en BindingSource komponent och en BindingNavigator komponent.
Upprepa steg 4 till och med 6 och bind andra fält.
Bind kontroll till sammansatt typ som returneras av WCF-tjänsten
Följ dessa steg om du vill binda en kontroll till en sammansatt typ som returneras av en WCF-tjänst:
Välj Data>Visa datakällor. Fönstret Datakällor öppnas.
I fönstret Datakällor expanderar du noden för tjänstreferensen. Alla sammansatta typer som returneras av tjänstens visning.
Välj en nod för en typ och expandera listrutan för att se listan över tillgängliga alternativ.
Välj DataGridView och visa data i ett rutnät, eller välj Information och visa data med hjälp av enskilda kontroller.
Dra noden till formuläret. Kontrollerna läggs till i formuläret tillsammans med en BindingSource komponent och en BindingNavigator komponent.
Konfigurera tjänster för återanvändning av befintliga typer
När en tjänstreferens läggs till i ett projekt genereras alla typer som definierats i tjänsten i det lokala projektet. I många fall skapar den här metoden duplicerade typer när en tjänst använder vanliga .NET-typer eller när typer definieras i ett delat bibliotek.
För att undvika det här problemet delas typer i refererade sammansättningar som standard. Om du vill inaktivera typdelning för en eller flera sammansättningar ändrar du inställningarna i dialogrutan Konfigurera tjänstreferenser .
Inaktivera typdelning i en sammansättning
Du kan inaktivera typdelning i en enda sammansättning genom att följa dessa steg:
I Solution Explorer väljer du tjänstreferensen.
Välj Projekt>Konfigurera tjänstreferens.
I dialogrutan Konfigurera tjänstreferenser markerar du kryssrutan Återanvända typer i angivna refererade sammansättningar .
Markera kryssrutan för varje sammansättning där du vill aktivera typdelning. Om du vill inaktivera typdelning för en sammansättning lämnar du kryssrutan avmarkerad.
Inaktivera typdelning i alla sammansättningar
Du kan också inaktivera typdelning i alla sammansättningar med följande steg:
I Solution Explorer väljer du tjänstreferensen.
Välj Projekt>Konfigurera tjänstreferens.
I dialogrutan Konfigurera tjänstreferenser avmarkerar du kryssrutan Återanvända typer i refererade sammansättningar .
Utforska liknande begrepp
I följande artiklar beskrivs begrepp och procedurer som rör WCF-tjänster och WCF-datatjänster.
| Titel | Beskrivning |
|---|---|
| Genomgång: Skapa en grundläggande WCF-tjänst i Windows Forms | Ger en stegvis demonstration av att skapa och använda WCF-tjänster i Visual Studio. |
| Genomgång: Skapa en WCF-datatjänst med WPF och Entity Framework | Innehåller en stegvis demonstration av hur du skapar och använder WCF Data Services i Visual Studio. |
| Använda WCF-utvecklingsverktygen | Beskriver hur du skapar och testar WCF-tjänster i Visual Studio. |
| Gör så här: Lägga till, uppdatera eller ta bort en WCF-datatjänstreferens | Beskriver hur du använder dialogrutan Lägg till tjänstreferens för att söka efter WCF Data Services i lösningen. |
| Felsöka tjänstreferenser | Visar några vanliga fel som kan uppstå med tjänstreferenser och hur du förhindrar dem. |
| Felsöka WCF-tjänster | Beskriver vanliga felsökningsproblem och tekniker som du kan stöta på när du felsöker WCF-tjänster. |
| Genomgång: Skapa ett dataprogram på n-nivå | Innehåller stegvisa instruktioner för hur du skapar en typbaserad datauppsättning och separerar TableAdapter- och datauppsättningskoden i flera projekt. |
| Granska dialogrutan Konfigurera tjänstreferens | Beskriver användargränssnittselementen i dialogrutan Konfigurera tjänstreferens . |
Relaterat innehåll
- Visual Studio-dataverktyg för .NET
- System.ServiceModel namnrymd
- System.Data.Services namnrymd