Sdílet prostřednictvím


Služby Windows Communication Foundation a služby WCF Data Services v sadě Visual Studio

Visual Studio poskytuje nástroje pro práci se službou Windows Communication Foundation (WCF) a Datové služby WCF technologiemi Microsoftu pro vytváření distribuovaných aplikací. Toto téma obsahuje úvod ke službám z pohledu sady Visual Studio. Úplnou dokumentaci najdete v Datové služby WCF 4.5.

Co je WCF?

Windows Communication Foundation (WCF) je sjednocená architektura pro vytváření zabezpečených, spolehlivých, transactovaných a interoperabilních distribuovaných aplikací. Nahrazuje starší komunikační technologie meziprocesů, jako jsou webové služby ASMX, vzdálené komunikace .NET, podnikové služby (model DCOM)) a Fronta zpráv Microsoftu (MSMQ). WCF spojuje funkce všech těchto technologií v rámci jednotného programovacího modelu. To zjednodušuje práci s vývojem distribuovaných aplikací.

Co jsou Datové služby WCF

Datové služby WCF je implementace standardu OData (Open Data Protocol). Datové služby WCF umožňuje zveřejnit tabulková data jako sadu rozhraní REST API, která umožňují vracet data pomocí standardních příkazů HTTP, jako je GET, POST, PUT nebo DELETE. Na straně serveru Datové služby WCF nahrazuje webové rozhraní API ASP.NET pro vytváření nových služeb OData. Klientská knihovna Datové služby WCF nadále představuje dobrou volbu pro využívání služeb OData v aplikaci .NET ze sady Visual Studio (>reference ke službě Pro přidání projektu). Další informace najdete v tématu Datové služby WCF 4.5.

Programovací model WCF

Programovací model WCF je založen na komunikaci mezi dvěma entitami: službou WCF a klientem WCF. Programovací model je zapouzdřen v System.ServiceModel oboru názvů v .NET.

Služba WCF

Služba WCF je založená na rozhraní, které definuje kontrakt mezi službou a klientem. Je označen atributem ServiceContractAttribute , jak je znázorněno v následujícím kódu:

[ServiceContract]
public interface IService1

Definujete funkce nebo metody, které jsou vystaveny službou WCF tím, že je označíte atributem OperationContractAttribute .

[OperationContract]
string GetData(string value);

Kromě toho můžete serializovaná data zveřejnit tak, že označíte složený typ atributem DataContractAttribute . To umožňuje datovou vazbu v klientovi.

Po definování rozhraní a jeho metod jsou zapouzdřeny do třídy, která implementuje rozhraní. Jedna třída služby WCF může implementovat více kontraktů služeb.

Služba WCF je zpřístupněna pro spotřebu prostřednictvím toho, co se označuje jako koncový bod. Koncový bod poskytuje jediný způsob komunikace se službou; ke službě nemůžete přistupovat prostřednictvím přímého odkazu, stejně jako u jiných tříd.

Koncový bod se skládá z adresy, vazby a kontraktu. Adresa definuje, kde se služba nachází; může to být adresa URL, adresa FTP (File Transfer Protocol) nebo síť nebo místní cesta. Vazba definuje způsob komunikace se službou. Vazby WCF poskytují univerzální model pro zadání protokolu, jako je HTTP nebo FTP, mechanismus zabezpečení, jako je ověřování systému Windows nebo uživatelská jména a hesla a mnoho dalšího. Kontrakt zahrnuje operace, které jsou vystaveny třídou služby WCF.

Pro jednu službu WCF je možné vystavit více koncových bodů. To umožňuje různým klientům komunikovat se stejnou službou různými způsoby. Například bankovní služba může poskytovat jeden koncový bod pro zaměstnance a jiný pro externí zákazníky, každý z nich používá jinou adresu, vazbu a/nebo smlouvu.

Klient WCF

Klient WCF se skládá z proxy serveru , který aplikaci umožňuje komunikovat se službou WCF a koncovým bodem, který odpovídá koncovému bodu definovanému pro službu. Proxy server se vygeneruje na straně klienta v souboru app.config a obsahuje informace o typech a metodách, které služba vystavuje. U služeb, které zpřístupňují více koncových bodů, může klient vybrat ten, který nejlépe vyhovuje jeho potřebám, například ke komunikaci přes protokol HTTP a používat ověřování systému Windows.

Po vytvoření klienta WCF odkazujete na službu v kódu stejně jako na jakýkoli jiný objekt. Pokud chcete například volat dříve zobrazenou metodu GetData , napíšete kód podobný následujícímu:

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;
}

Nástroje WCF v sadě Visual Studio

Visual Studio poskytuje nástroje, které vám pomůžou vytvářet služby WCF i klienty WCF. Návod, který ukazuje nástroje, naleznete v části Návod: Vytvoření jednoduché služby WCF v model Windows Forms.

Vytváření a testování služeb WCF

Šablony sady VISUAL Studio WCF můžete použít jako základ k rychlému vytvoření vlastní služby. Potom můžete k ladění a otestování služby použít automatického hostitele služby WCF a testovacího klienta WCF. Tyto nástroje společně poskytují rychlý a pohodlný cyklus ladění a testování a eliminují požadavek na potvrzení modelu hostování v rané fázi.

Šablony WCF

Šablony sady WCF sady Visual Studio poskytují základní strukturu tříd pro vývoj služeb. V dialogovém okně Přidat nový projekt je k dispozici několik šablon WCF. Patří sem projekty knihovny služeb WCF, weby služeb WCF a šablony položek služby WCF.

Když vyberete šablonu, přidají se soubory pro kontrakt služby, implementaci služby a konfiguraci služby. Všechny nezbytné atributy jsou již přidány, vytvoření jednoduchého typu "Hello World" služby a nemuseli jste psát žádný kód. Samozřejmě budete chtít přidat kód pro poskytování funkcí a metod pro vaši skutečnou službu, ale šablony poskytují základní základ.

Další informace o šablonách WCF najdete v tématu Šablony WCF sady Visual Studio.

Hostitel služby WCF

Když spustíte ladicí program sady Visual Studio (stisknutím klávesy F5) pro projekt služby WCF, nástroj Hostitel služby WCF se automaticky spustí pro místní hostování služby. Hostitel služby WCF vytvoří výčet služeb v projektu služby WCF, načte konfiguraci projektu a vytvoří instanci hostitele pro každou službu, kterou najde.

Pomocí hostitele služby WCF můžete otestovat službu WCF, aniž byste museli během vývoje psát další kód nebo se zavázat ke konkrétnímu hostiteli.

Další informace o hostiteli služby WCF najdete v tématu Hostitel služby WCF (WcfSvcHost.exe).

Testovací klient WCF

Nástroj WCF Test Client umožňuje zadat parametry testu, odeslat tento vstup do služby WCF a zobrazit odpověď, kterou služba odesílá zpět. Poskytuje pohodlné prostředí pro testování služeb při kombinování s hostitelem služby WCF. Vyhledejte nástroj ve složce %ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE .

Když stisknete klávesu F5 pro ladění projektu služby WCF, otevře se testovací klient WCF a zobrazí seznam koncových bodů služby, které jsou definovány v konfiguračním souboru. Parametry můžete otestovat a spustit službu a tento proces zopakovat, abyste mohli službu průběžně testovat a ověřovat.

Další informace o testovacím klientovi WCF najdete v tématu o testovacím klientovi WCF (WcfTestClient.exe).

Přístup ke službám WCF v sadě Visual Studio

Visual Studio zjednodušuje vytváření klientů WCF, automatické generování proxy serveru a koncového bodu pro služby, které přidáte pomocí dialogového okna Přidat odkaz služby. Všechny potřebné informace o konfiguraci se přidají do souboru app.config . Ve většině případů je vše, co musíte udělat, vytvořit instanci služby, aby ji bylo možné použít.

Dialogové okno Přidat odkaz na službu umožňuje zadat adresu služby nebo vyhledat službu definovanou ve vašem řešení. Dialogové okno vrátí seznam služeb a operací poskytovaných těmito službami. Umožňuje také definovat obor názvů, pomocí kterého budete odkazovat na služby v kódu.

Dialogové okno Konfigurovat odkazy na služby umožňuje přizpůsobit konfiguraci služby. Můžete změnit adresu služby, zadat úroveň přístupu, asynchronní chování a typy kontraktů zpráv a nakonfigurovat opakované použití typu.

Výběr koncového bodu služby

Některé služby WCF (Windows Communication Foundation) zpřístupňují několik koncových bodů, pomocí kterých může klient komunikovat se službou. Například služba může zveřejnit jeden koncový bod, který používá vazbu HTTP a zabezpečení uživatelského jména a hesla, a druhý koncový bod, který používá protokol FTP a ověřování systému Windows. První koncový bod můžou používat aplikace, které přistupují ke službě mimo bránu firewall, zatímco druhý může být použit v intranetu.

V takovém případě můžete zadat endpointConfigurationName jako parametr konstruktoru pro odkaz na službu.

Poznámka:

V počítači se můžou zobrazovat různé názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio v tomto článku. Možná používáte jinou edici sady Visual Studio nebo jiné nastavení prostředí. Další informace naleznete v tématu Přizpůsobení integrovaného vývojového prostředí (IDE).

Výběr koncového bodu služby

  1. Přidejte odkaz na službu WCF tak, že kliknete pravým tlačítkem myši na uzel projektu v Průzkumník řešení a zvolíte Přidat odkaz na službu.

  2. V Editoru kódu přidejte konstruktor pro odkaz na službu:

    ServiceReference.Service1Client proxy = new ServiceReference.Service1Client(
    

    Poznámka:

    Nahraďte ServiceReference oborem názvů pro odkaz na službu a nahraďte Service1Client názvem služby.

  3. Zobrazí se seznam IntelliSense, který obsahuje přetížení konstruktoru. endpointConfigurationName As String Vyberte přetížení.

  4. Po přetížení zadejte = ConfigurationName, kde ConfigurationName je název koncového bodu, který chcete použít.

    Poznámka:

    Pokud neznáte názvy dostupných koncových bodů, najdete je v souboru app.config .

Vyhledání dostupných koncových bodů pro službu WCF

  1. V Průzkumník řešení klikněte pravým tlačítkem na soubor app.config projektu, který obsahuje odkaz na službu, a potom klikněte na Otevřít. Soubor se zobrazí v Editoru kódu.

  2. Vyhledejte <Client> značku v souboru.

  3. Vyhledejte pod <Client> značkou značku, která začíná značkou <Endpoint>.

    Pokud odkaz na službu poskytuje více koncových bodů, budou existovat dvě nebo více <Endpoint značek.

  4. Uvnitř značky <EndPoint> najdetename=" parametr SomeService" (kde SomeService představuje název koncového bodu). Toto je název koncového bodu, který lze předat endpointConfigurationName As String přetížení konstruktoru pro odkaz na službu.

Asynchronní volání metody služby

Většina metod ve službách WCF (Windows Communication Foundation) se může volat synchronně nebo asynchronně. Asynchronní volání metody umožňuje vaší aplikaci pokračovat v práci, zatímco metoda je volána, když pracuje přes pomalé připojení.

Ve výchozím nastavení se při přidání odkazu na službu do projektu konfiguruje tak, aby volala metody synchronně. Chování volání metod můžete změnit asynchronně změnou nastavení v dialogovém okně Konfigurovat odkaz na službu.

Poznámka:

Tato možnost se nastavuje pro jednotlivé služby. Pokud je jedna metoda pro službu volána asynchronně, musí být všechny metody volána asynchronně.

Poznámka:

V počítači se můžou zobrazovat různé názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio v tomto článku. Možná používáte jinou edici sady Visual Studio nebo jiné nastavení prostředí. Další informace naleznete v tématu Přizpůsobení integrovaného vývojového prostředí (IDE).

Asynchronní volání metody služby

  1. V Průzkumník řešení vyberte odkaz na službu.

  2. V nabídce Projekt klepněte na tlačítko Konfigurovat odkaz služby.

  3. V dialogovém okně Konfigurovat odkaz na službu zaškrtněte políčko Generovat asynchronní operace .

Vytvoření vazby dat vrácených službou

Data vrácená službou Windows Communication Foundation (WCF) můžete svázat s ovládacím prvek stejně jako jakýkoli jiný zdroj dat s ovládacím prvek. Když přidáte odkaz na službu WCF, pokud služba obsahuje složené typy vracející data, automaticky se přidají do okna Zdroje dat.

Vytvoření vazby ovládacího prvku na jedno datové pole vrácené službou WCF

  1. V nabídce Data klikněte na Zobrazit zdroje dat.

    Zobrazí se okno Zdroje dat.

  2. V okně Zdroje dat rozbalte uzel pro odkaz na službu. Všechny složené typy vrácené zobrazením služby.

  3. Rozbalte uzel pro typ. Zobrazí se datová pole pro daný typ.

  4. Vyberte pole a kliknutím na šipku rozevíracího seznamu zobrazte seznam ovládacích prvků dostupných pro datový typ.

  5. Klikněte na typ ovládacího prvku, ke kterému chcete vytvořit vazbu.

  6. Přetáhněte pole do formuláře. Ovládací prvek se přidá do formuláře spolu s komponentou BindingSource a komponentou BindingNavigator .

  7. Opakujte kroky 4 až 6 pro všechna ostatní pole, která chcete svázat.

Vytvoření vazby ovládacího prvku na složený typ vrácený službou WCF

  1. V nabídce Data vyberte Zobrazit zdroje dat. Zobrazí se okno Zdroje dat.

  2. V okně Zdroje dat rozbalte uzel pro odkaz na službu. Všechny složené typy vrácené zobrazením služby.

  3. Vyberte uzel pro typ a kliknutím na šipku rozevíracího seznamu zobrazte seznam dostupných možností.

  4. Kliknutím na DataGridView zobrazíte data v mřížce nebo Podrobnosti, aby se data zobrazila v jednotlivých ovládacích prvcích.

  5. Přetáhněte uzel do formuláře. Ovládací prvky se přidají do formuláře spolu s komponentou BindingSource a komponentou BindingNavigator .

Konfigurace služby pro opakované použití existujících typů

Při přidání odkazu na službu do projektu se vygenerují všechny typy definované ve službě v místním projektu. V mnoha případech se vytvoří duplicitní typy, když služba používá běžné typy .NET nebo když jsou typy definované ve sdílené knihovně.

Chcete-li se tomuto problému vyhnout, jsou typy v odkazovaných sestaveních ve výchozím nastavení sdíleny. Pokud chcete zakázat sdílení typů pro jedno nebo více sestavení, můžete to udělat v dialogovém okně Konfigurovat odkazy na služby.

Zakázání sdílení typů v jednom sestavení

  1. V Průzkumník řešení vyberte odkaz na službu.

  2. V nabídce Projekt klepněte na tlačítko Konfigurovat odkaz služby.

  3. V dialogovém okně Konfigurovat odkazy na služby vyberte Opakovaně použít typy v zadaných odkazovaných sestaveních.

  4. Zaškrtněte políčko pro každé sestavení, ve kterém chcete povolit sdílení typů. Chcete-li zakázat sdílení typů pro sestavení, ponechte políčko nezaškrtnuto.

Zakázání sdílení typů ve všech sestaveních

  1. V Průzkumník řešení vyberte odkaz na službu.

  2. V nabídce Projekt klepněte na tlačítko Konfigurovat odkaz služby.

  3. V dialogovém okně Konfigurovat odkazy na služby zrušte zaškrtnutí políčka Znovu použít typy v odkazovaných sestaveních .

Titulek Popis
Návod: Vytvoření jednoduché služby WCF v modelu Windows Forms Poskytuje podrobnou ukázku vytváření a používání služeb WCF v sadě Visual Studio.
Návod: Vytvoření datové služby WCF pomocí WPF a Entity Frameworku Poskytuje podrobnou ukázku postupu při vytváření a používání Datové služby WCF v sadě Visual Studio.
Použití vývojových nástrojů WCF Popisuje, jak vytvářet a testovat služby WCF v sadě Visual Studio.
Postupy: Přidání, aktualizace nebo odebrání odkazu na službu WCF Data Service
Řešení potíží s odkazy na služby Představuje některé běžné chyby, ke kterým může dojít u odkazů na služby a jak jim zabránit.
Ladění služeb WCF Popisuje běžné problémy a techniky ladění, se kterými se můžete setkat při ladění služeb WCF.
Návod: Vytvoření vícevrstvé datové aplikace Poskytuje podrobné pokyny k vytvoření typové datové sady a oddělení kódu TableAdapter a datové sady do více projektů.
Dialogové okno Konfigurovat referenční informace o službě Popisuje prvky uživatelského rozhraní dialogového okna Konfigurovat odkaz služby.

Reference

Viz také