Udostępnij za pośrednictwem


Współdziałanie z usługami sieci Web ASMX

W przykładzie ASMX pokazano, jak zintegrować aplikację kliencką programu Windows Communication Foundation (WCF) z istniejącą usługą sieci Web ASMX.

Uwaga

Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.

Ten przykład składa się z programu konsolowego klienta (.exe) i biblioteki usług (.dll) hostowanej przez usługi Internet Information Services (IIS). Usługa jest usługą sieci Web ASMX, która implementuje kontrakt definiujący wzorzec komunikacji typu żądanie-odpowiedź. Usługa uwidacznia operacje matematyczne (Add, Subtract, Multiplyi Divide). Klient wysyła synchroniczne żądania do operacji matematycznej, a usługa odpowiada z wynikiem. Działanie klienta jest widoczne w oknie konsoli.

Implementacja usługi internetowej ASMX pokazana w poniższym przykładowym kodzie oblicza i zwraca odpowiedni wynik.

[WebService(Namespace="http://Microsoft.ServiceModel.Samples")]
public class CalculatorService : System.Web.Services.WebService
    {
        [WebMethod]
        public double Add(double n1, double n2)
        {
            return n1 + n2;
        }
        [WebMethod]
        public double Subtract(double n1, double n2)
        {
            return n1 - n2;
        }
        [WebMethod]
        public double Multiply(double n1, double n2)
        {
            return n1 * n2;
        }
        [WebMethod]
        public double Divide(double n1, double n2)
        {
            return n1 / n2;
        }
    }

Zgodnie z konfiguracją dostęp do usługi może uzyskać http://localhost/servicemodelsamples/service.asmx klient na tym samym komputerze. Aby klienci na maszynach zdalnych mogli uzyskać dostęp do usługi, należy określić kwalifikowaną nazwę domeny zamiast hosta lokalnego.

Komunikacja odbywa się za pośrednictwem klienta wygenerowanego przez narzędzie ServiceModel Metadata Tool (Svcutil.exe). Klient jest zawarty w pliku generatedClient.cs. Usługa ASMX musi być dostępna do wygenerowania kodu serwera proxy, ponieważ służy do pobierania zaktualizowanych metadanych. Uruchom następujące polecenie z wiersza polecenia w katalogu klienta, aby wygenerować typowy serwer proxy.

svcutil.exe /n:http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples http://localhost/servicemodelsamples/service.svc?wsdl /out:generatedClient.cs

Korzystając z wygenerowanego klienta, możesz uzyskać dostęp do punktu końcowego usługi, konfigurując odpowiedni adres i powiązanie. Podobnie jak w przypadku usługi, klient używa pliku konfiguracji (App.config), aby określić punkt końcowy do komunikacji. Konfiguracja punktu końcowego klienta składa się z bezwzględnego adresu punktu końcowego usługi, powiązania i kontraktu, jak pokazano w poniższej przykładowej konfiguracji.

<client>
   <endpoint
      address="http://localhost/ServiceModelSamples/service.asmx"
      binding="basicHttpBinding"
      contract="Microsoft.ServiceModel.Samples.CalculatorServiceSoap" />
</client>

Implementacja klienta tworzy wystąpienie wygenerowanego klienta. Wygenerowany klient może następnie służyć do komunikowania się z usługą.

// Create a client.
CalculatorServiceSoapClient client = new CalculatorServiceSoapClient();

// Call the Add service operation.
double value1 = 100.00D;
double value2 = 15.99D;
double result = client.Add(value1, value2);
Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);

// Call the Subtract service operation.
value1 = 145.00D;
value2 = 76.54D;
result = client.Subtract(value1, value2);
Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result);

// Call the Multiply service operation.
value1 = 9.00D;
value2 = 81.25D;
result = client.Multiply(value1, value2);
Console.WriteLine("Multiply({0},{1}) = {2}", value1, value2, result);

// Call the Divide service operation.
value1 = 22.00D;
value2 = 7.00D;
result = client.Divide(value1, value2);
Console.WriteLine("Divide({0},{1}) = {2}", value1, value2, result);

//Closing the client gracefully closes the connection and cleans up resources.
client.Close();

Console.WriteLine();
Console.WriteLine("Press <ENTER> to terminate client.");
Console.ReadLine();

Po uruchomieniu przykładu żądania operacji i odpowiedzi są wyświetlane w oknie konsoli klienta. Naciśnij klawisz ENTER w oknie klienta, aby zamknąć klienta.

Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

Aby skonfigurować, skompilować i uruchomić przykład

  1. Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).

  3. Aby uruchomić przykład w konfiguracji pojedynczej lub między maszynami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.