Udostępnij za pośrednictwem


Usługi Windows Communication Foundation i usługi danych WCF w programie Visual Studio

Program Visual Studio udostępnia narzędzia do pracy z programem Windows Communication Foundation (WCF) i Usługi danych programu WCF technologiami firmy Microsoft do tworzenia aplikacji rozproszonych. Ten temat zawiera wprowadzenie do usług z perspektywy programu Visual Studio. Aby uzyskać pełną dokumentację, zobacz Usługi danych programu WCF 4.5.

Co to jest WCF?

Windows Communication Foundation (WCF) to ujednolicona struktura umożliwiająca tworzenie bezpiecznych, niezawodnych, transakcyjnych i współdziałalnych aplikacji rozproszonych. Zastępuje starsze technologie komunikacji międzyprocesowej, takie jak usługi sieci Web ASMX, komunikacja zdalna platformy .NET, usługi przedsiębiorstwa (rozproszony model obiektów składników (DCOM) i kolejka komunikatów firmy Microsoft (MSMQ). WCF łączy funkcje wszystkich tych technologii w ramach ujednoliconego modelu programowania. Upraszcza to tworzenie aplikacji rozproszonych.

Co to są Usługi danych programu WCF

Usługi danych programu WCF to implementacja standardu protokołu Open Data (Open Data Protocol (OData)). Usługi danych programu WCF umożliwia uwidocznienie danych tabelarycznych jako zestawu interfejsów API REST, co umożliwia zwracanie danych przy użyciu standardowych czasowników HTTP, takich jak GET, POST, PUT lub DELETE. Po stronie serwera Usługi danych programu WCF są zastępowane przez interfejs API sieci Web ASP.NET do tworzenia nowych usług OData. Biblioteka klienta Usługi danych programu WCF nadal jest dobrym wyborem do korzystania z usług OData w aplikacji .NET z poziomu programu Visual Studio (Project>Add Service Reference). Aby uzyskać więcej informacji, zobacz Usługi danych programu WCF 4.5.

Model programowania WCF

Model programowania WCF jest oparty na komunikacji między dwiema jednostkami: usługą WCF i klientem WCF. Model programowania jest hermetyzowany w System.ServiceModel przestrzeni nazw na platformie .NET.

Usługa WCF

Usługa WCF jest oparta na interfejsie definiującym kontrakt między usługą a klientem. Jest ona oznaczona atrybutem ServiceContractAttribute , jak pokazano w poniższym kodzie:

[ServiceContract]
public interface IService1

Definiujesz funkcje lub metody uwidocznione przez usługę WCF, oznaczając je atrybutem OperationContractAttribute .

[OperationContract]
string GetData(string value);

Ponadto można uwidocznić serializowane dane, oznaczając typ złożony atrybutem DataContractAttribute . Umożliwia to powiązanie danych w kliencie.

Po zdefiniowaniu interfejsu i jego metod są hermetyzowane w klasie, która implementuje interfejs. Pojedyncza klasa usługi WCF może implementować wiele kontraktów usług.

Usługa WCF jest uwidoczniona do użycia za pośrednictwem tego, co jest nazywane punktem końcowym. Punkt końcowy zapewnia jedyny sposób komunikowania się z usługą; nie można uzyskać dostępu do usługi za pośrednictwem bezpośredniego odwołania, tak jak w przypadku innych klas.

Punkt końcowy składa się z adresu, powiązania i kontraktu. Adres definiuje miejsce, w którym znajduje się usługa; może to być adres URL, adres FTP (File Transfer Protocol) lub ścieżka sieciowa lub lokalna. Powiązanie definiuje sposób komunikowania się z usługą. Powiązania WCF zapewniają wszechstronny model określania protokołu, takiego jak HTTP lub FTP, mechanizm zabezpieczeń, taki jak uwierzytelnianie systemu Windows lub nazwy użytkowników i hasła, i wiele innych. Kontrakt obejmuje operacje uwidocznione przez klasę usługi WCF.

Dla pojedynczej usługi WCF można uwidocznić wiele punktów końcowych. Dzięki temu różni klienci mogą komunikować się z tą samą usługą na różne sposoby. Na przykład usługa bankowa może zapewnić jeden punkt końcowy dla pracowników, a drugi dla klientów zewnętrznych, z których każdy korzysta z innego adresu, powiązania i/lub umowy.

Klient programu WCF

Klient WCF składa się z serwera proxy , który umożliwia aplikacji komunikowanie się z usługą WCF oraz punkt końcowy zgodny z punktem końcowym zdefiniowanym dla usługi. Serwer proxy jest generowany po stronie klienta w pliku app.config i zawiera informacje o typach i metodach udostępnianych przez usługę. W przypadku usług, które uwidaczniają wiele punktów końcowych, klient może wybrać ten, który najlepiej odpowiada jego potrzebom, na przykład, aby komunikować się za pośrednictwem protokołu HTTP i korzystać z uwierzytelniania systemu Windows.

Po utworzeniu klienta programu WCF odwołujesz się do usługi w kodzie tak samo jak w przypadku każdego innego obiektu. Aby na przykład wywołać pokazaną wcześniej metodę GetData , należy napisać kod podobny do następującego:

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

Narzędzia WCF w programie Visual Studio

Program Visual Studio udostępnia narzędzia ułatwiające tworzenie zarówno usług WCF, jak i klientów WCF. Aby zapoznać się z przewodnikiem, który demonstruje narzędzia, zobacz Przewodnik: tworzenie prostej usługi WCF w formularzach systemu Windows.

Tworzenie i testowanie usług WCF

Możesz użyć szablonów programu Visual Studio WCF jako podstawy, aby szybko utworzyć własną usługę. Następnie możesz użyć automatycznego hosta usługi WCF i klienta testowego programu WCF do debugowania i testowania usługi. Te narzędzia razem zapewniają szybki i wygodny cykl debugowania i testowania oraz eliminują wymaganie zatwierdzenia modelu hostingu na wczesnym etapie.

Szablony WCF

Szablony programu Visual Studio WCF zapewniają podstawową strukturę klas na potrzeby tworzenia usług. Kilka szablonów WCF jest dostępnych w oknie dialogowym Dodawanie nowego projektu . Należą do nich projekty bibliotek usług WCF, witryny internetowe usługi WCF i szablony elementów usługi WCF.

Po wybraniu szablonu pliki są dodawane do kontraktu usługi, implementacji usługi i konfiguracji usługi. Wszystkie niezbędne atrybuty są już dodawane, tworząc prosty typ usługi "Hello World" i nie trzeba było pisać żadnego kodu. Oczywiście chcesz dodać kod w celu zapewnienia funkcji i metod dla usługi w świecie rzeczywistym, ale szablony zapewniają podstawową podstawę.

Aby dowiedzieć się więcej na temat szablonów WCF, zobacz WCF Visual Studio templates (Szablony programu Visual Studio WCF).

Host usługi WCF

Po uruchomieniu debugera programu Visual Studio (przez naciśnięcie F5) dla projektu usługi WCF narzędzie hosta usługi WCF jest automatycznie uruchamiane do hostowania usługi lokalnie. Host usługi WCF wylicza usługi w projekcie usługi WCF, ładuje konfigurację projektu i tworzy wystąpienie hosta dla każdej znalezionej usługi.

Za pomocą hosta usługi WCF można przetestować usługę WCF bez konieczności pisania dodatkowego kodu lub zatwierdzania określonego hosta podczas programowania.

Aby dowiedzieć się więcej na temat hosta usługi WCF, zobacz Host usługi WCF (WcfSvcHost.exe).

Testowy klient programu WCF

Narzędzie klienta testowego programu WCF umożliwia wprowadzanie parametrów testu, przesyłanie tych danych wejściowych do usługi WCF i wyświetlanie odpowiedzi wysyłanej z powrotem przez usługę. Zapewnia wygodne środowisko testowania usług podczas łączenia go z hostem usługi WCF. Znajdź narzędzie w folderze %ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE .

Po naciśnięciu F5 w celu debugowania projektu usługi WCF zostanie otwarty klient testowy programu WCF i wyświetli listę punktów końcowych usługi zdefiniowanych w pliku konfiguracji. Możesz przetestować parametry i uruchomić usługę, a następnie powtórzyć ten proces, aby stale testować i weryfikować usługę.

Aby dowiedzieć się więcej o kliencie testowym programu WCF, zobacz Klient testowy programu WCF (WcfTestClient.exe).

Uzyskiwanie dostępu do usług WCF w programie Visual Studio

Program Visual Studio upraszcza zadanie tworzenia klientów WCF, automatycznego generowania serwera proxy i punktu końcowego dla usług dodanych przy użyciu okna dialogowego Dodawanie dokumentacji usługi. Wszystkie niezbędne informacje o konfiguracji są dodawane do pliku app.config . W większości przypadków wystarczy utworzyć wystąpienie usługi w celu jej użycia.

Okno dialogowe Dodawanie odwołania do usługi umożliwia wprowadzenie adresu usługi lub wyszukania usługi zdefiniowanej w rozwiązaniu. Okno dialogowe zwraca listę usług i operacji udostępnianych przez te usługi. Umożliwia również zdefiniowanie przestrzeni nazw, za pomocą której będziesz odwoływać się do usług w kodzie.

Okno dialogowe Konfigurowanie odwołań do usługi umożliwia dostosowanie konfiguracji usługi. Możesz zmienić adres usługi, określić poziom dostępu, asynchroniczne zachowanie i typy kontraktów komunikatów oraz skonfigurować ponowne użycie typu.

Wybieranie punktu końcowego usługi

Niektóre usługi Windows Communication Foundation (WCF) udostępniają wiele punktów końcowych, za pośrednictwem których klient może komunikować się z usługą. Na przykład usługa może uwidocznić jeden punkt końcowy, który używa powiązania HTTP, nazwy użytkownika i zabezpieczeń hasła oraz drugiego punktu końcowego korzystającego z uwierzytelniania FTP i Windows. Pierwszy punkt końcowy może być używany przez aplikacje, które uzyskują dostęp do usługi spoza zapory, natomiast drugi może być używany w intranecie.

W takim przypadku można określić endpointConfigurationName jako parametr konstruktora dla odwołania do usługi.

Uwaga

Na komputerze mogą być wyświetlane różne nazwy lub lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio w tym artykule. Być może używasz innej wersji programu Visual Studio lub innych ustawień środowiska. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Aby wybrać punkt końcowy usługi

  1. Dodaj odwołanie do usługi WCF, klikając prawym przyciskiem myszy węzeł projektu w Eksplorator rozwiązań i wybierając polecenie Dodaj odwołanie do usługi.

  2. W Edytorze kodu dodaj konstruktor dla dokumentacji usługi:

    ServiceReference.Service1Client proxy = new ServiceReference.Service1Client(
    

    Uwaga

    Zastąp ciąg ServiceReference przestrzenią nazw odwołania do usługi i zastąp element Service1Client nazwą usługi.

  3. Zostanie wyświetlona lista funkcji IntelliSense zawierająca przeciążenia konstruktora. endpointConfigurationName As String Wybierz przeciążenie.

  4. Po przeciążeniu wpisz = ConfigurationName, gdzie ConfigurationName jest nazwą punktu końcowego, którego chcesz użyć.

    Uwaga

    Jeśli nie znasz nazw dostępnych punktów końcowych, możesz je znaleźć w pliku app.config .

Aby znaleźć dostępne punkty końcowe dla usługi WCF

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy plik app.config dla projektu zawierającego odwołanie do usługi, a następnie wybierz polecenie Otwórz. Plik zostanie wyświetlony w Edytorze kodu.

  2. <Client> Wyszukaj tag w pliku.

  3. Wyszukaj pod tagiem <Client> tag, który rozpoczyna się od <Endpoint>.

    Jeśli odwołanie do usługi zawiera wiele punktów końcowych, będą istnieć co najmniej <Endpoint dwa tagi.

  4. Wewnątrz tagu znajdzieszname=" parametr SomeService (gdzie SomeService" reprezentuje nazwę <EndPoint> punktu końcowego). Jest to nazwa punktu końcowego, który można przekazać do endpointConfigurationName As String przeciążenia konstruktora dla odwołania do usługi.

Asynchronicznie wywoływanie metody usługi

Większość metod w usługach Windows Communication Foundation (WCF) może być wywoływana synchronicznie lub asynchronicznie. Wywołanie metody asynchronicznie umożliwia aplikacji kontynuowanie pracy, gdy metoda jest wywoływana, gdy działa przez wolne połączenie.

Domyślnie po dodaniu odwołania do usługi do projektu jest ono skonfigurowane do synchronicznego wywoływania metod. Zachowanie można zmienić tak, aby wywoływać metody asynchronicznie, zmieniając ustawienie w oknie dialogowym Konfigurowanie dokumentacji usługi.

Uwaga

Ta opcja jest ustawiana dla poszczególnych usług. Jeśli jedna metoda usługi jest wywoływana asynchronicznie, wszystkie metody muszą być wywoływane asynchronicznie.

Uwaga

Na komputerze mogą być wyświetlane różne nazwy lub lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio w tym artykule. Być może używasz innej wersji programu Visual Studio lub innych ustawień środowiska. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Aby asynchronicznie wywołać metodę usługi

  1. W Eksplorator rozwiązań wybierz odwołanie do usługi.

  2. W menu Project (Projekt) kliknij pozycję Configure Service Reference (Konfigurowanie odwołania do usługi).

  3. W oknie dialogowym Konfigurowanie dokumentacji usługi zaznacz pole wyboru Generuj operacje asynchroniczne.

Wiązanie danych zwracanych przez usługę

Dane zwracane przez usługę Windows Communication Foundation (WCF) można powiązać z kontrolką tak samo, jak w przypadku powiązania dowolnego innego źródła danych z kontrolką. Po dodaniu odwołania do usługi WCF, jeśli usługa zawiera typy złożone zwracające dane, zostaną one automatycznie dodane do okna Źródła danych.

Aby powiązać kontrolkę z pojedynczym polem danych zwróconym przez usługę WCF

  1. W menu Dane kliknij pozycję Pokaż źródła danych.

    Zostanie wyświetlone okno Źródła danych.

  2. W oknie Źródła danych rozwiń węzeł dla dokumentacji usługi. Wszystkie typy złożone zwrócone przez wyświetlanie usługi.

  3. Rozwiń węzeł dla typu. Pojawią się pola danych dla tego typu.

  4. Wybierz pole i kliknij strzałkę listy rozwijanej, aby wyświetlić listę kontrolek dostępnych dla typu danych.

  5. Kliknij typ kontrolki, do której chcesz powiązać.

  6. Przeciągnij pole na formularz. Kontrolka jest dodawana do formularza wraz ze składnikiem BindingSource i składnikiem BindingNavigator .

  7. Powtórz kroki od 4 do 6 dla innych pól, które chcesz powiązać.

Aby powiązać kontrolkę z typem złożonym zwróconym przez usługę WCF

  1. W menu Dane wybierz pozycję Pokaż źródła danych. Zostanie wyświetlone okno Źródła danych.

  2. W oknie Źródła danych rozwiń węzeł dla dokumentacji usługi. Wszystkie typy złożone zwrócone przez wyświetlanie usługi.

  3. Wybierz węzeł typu i kliknij strzałkę listy rozwijanej, aby wyświetlić listę dostępnych opcji.

  4. Kliknij pozycję DataGridView , aby wyświetlić dane w siatce lub Szczegóły , aby wyświetlić dane w poszczególnych kontrolkach.

  5. Przeciągnij węzeł na formularz. Kontrolki są dodawane do formularza wraz ze składnikiem BindingSource i składnikiem BindingNavigator .

Konfigurowanie usługi w celu ponownego użycia istniejących typów

Po dodaniu odwołania do usługi do projektu wszystkie typy zdefiniowane w usłudze są generowane w projekcie lokalnym. W wielu przypadkach powoduje to utworzenie zduplikowanych typów, gdy usługa używa typowych typów platformy .NET lub typów zdefiniowanych w bibliotece udostępnionej.

Aby uniknąć tego problemu, typy w zestawach, do których odwołuje się odwołanie, są domyślnie udostępniane. Jeśli chcesz wyłączyć udostępnianie typów dla co najmniej jednego zestawu, możesz to zrobić w oknie dialogowym Konfigurowanie odwołań do usługi.

Aby wyłączyć udostępnianie typów w jednym zestawie

  1. W Eksplorator rozwiązań wybierz odwołanie do usługi.

  2. W menu Project (Projekt) kliknij pozycję Configure Service Reference (Konfigurowanie odwołania do usługi).

  3. W oknie dialogowym Konfigurowanie odwołań do usługi wybierz pozycję Ponowne używanie typów w określonych zestawach, do których odwołuje się odwołanie.

  4. Zaznacz pole wyboru dla każdego zestawu, w którym chcesz włączyć udostępnianie typów. Aby wyłączyć udostępnianie typów dla zestawu, pozostaw pole wyboru wyczyszczone.

Aby wyłączyć udostępnianie typów we wszystkich zestawach

  1. W Eksplorator rozwiązań wybierz odwołanie do usługi.

  2. W menu Project (Projekt) kliknij pozycję Configure Service Reference (Konfigurowanie odwołania do usługi).

  3. W oknie dialogowym Konfigurowanie odwołań do usługi wyczyść pole wyboru Ponowne używanie typów w zestawach, do których odwołuje się odwołanie.

Nazwa opis
Przewodnik: tworzenie prostej usługi WCF w aplikacji Windows Forms Zawiera szczegółowy pokaz tworzenia i używania usług WCF w programie Visual Studio.
Przewodnik: tworzenie usługi danych WCF za pomocą platform WPF i Entity Framework Zawiera szczegółowy pokaz tworzenia i używania Usługi danych programu WCF w programie Visual Studio.
Korzystanie z narzędzi programistycznych WCF Omówienie sposobu tworzenia i testowania usług WCF w programie Visual Studio.
Instrukcje: dodawanie, aktualizowanie lub usuwanie dokumentacji usługi danych WCF
Rozwiązywanie problemów z odwołaniami do usługi Przedstawia niektóre typowe błędy, które mogą wystąpić z odwołaniami do usługi i jak je zapobiec.
Debugowanie usług WCF Opisuje typowe problemy i techniki debugowania, które mogą wystąpić podczas debugowania usług WCF.
Przewodnik: tworzenie aplikacji danych n-warstwowej Zawiera instrukcje krok po kroku dotyczące tworzenia typizowanego zestawu danych i oddzielania kodu TableAdapter i zestawu danych do wielu projektów.
Okno dialogowe Konfigurowanie dokumentacji usługi Opisuje elementy interfejsu użytkownika okna dialogowego Konfigurowanie odwołania do usługi.

Odwołanie

Zobacz też