Aracılığıyla paylaş


ASMX Web Hizmetleri ile birlikte çalışma

ASMX örneği, bir Windows Communication Foundation (WCF) istemci uygulamasının mevcut bir ASMX Web hizmetiyle nasıl entegre edileceğini gösterir.

Uyarı

Bu örnek için kurulum yordamı ve derleme yönergeleri bu konunun sonunda yer alır.

Bu örnek, Internet Information Services (IIS) tarafından barındırılan bir istemci konsol programı (.exe) ve hizmet kitaplığından (.dll) oluşur. Hizmet, istek-yanıt iletişim desenini tanımlayan bir sözleşme uygulayan bir ASMX Web Hizmetidir. Hizmet matematik işlemlerini (Add, Subtract, Multiplyve Divide) kullanıma sunar. İstemci bir matematik işlemine senkron istekler yapar ve hizmet sonuç ile yanıt verir. İstemci etkinliği konsol penceresinde görünür.

Aşağıdaki örnek kodda gösterilen ASMX Web hizmeti uygulaması, uygun sonucu hesaplar ve döndürür.

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

Aynı makinedeki bir istemci tarafından http://localhost/servicemodelsamples/service.asmx adresinden yapılandırıldığı gibi hizmete erişilebilir. Uzak makinelerdeki istemcilerin hizmete erişebilmesi için localhost yerine uygun bir etki alanı adı belirtilmelidir.

İletişim, ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe) tarafından oluşturulan bir istemci aracılığıyla gerçekleştirilir. İstemci, generatedClient.cs dosyasında yer alır. AsMX hizmeti, güncelleştirilmiş meta verileri almak için kullanıldığından ara sunucu kodunu oluşturmak için kullanılabilir olmalıdır. Yazılan ara sunucuyu oluşturmak için istemci dizinindeki bir komut isteminden aşağıdaki komutu çalıştırın.

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

Oluşturulan istemciyi kullanarak uygun adresi ve bağlamayı yapılandırarak bir hizmet uç noktasına erişebilirsiniz. Hizmet gibi istemci de iletişim kuracak uç noktayı belirtmek için bir yapılandırma dosyası (App.config) kullanır. İstemci uç noktası yapılandırması, aşağıdaki örnek yapılandırmada gösterildiği gibi hizmet uç noktası, bağlama ve sözleşme için mutlak bir adres içerir.

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

İstemci uygulaması, oluşturulan istemcinin bir örneğini oluşturur. Oluşturulan istemci daha sonra hizmetle iletişim kurmak için kullanılabilir.

// 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();

Örneği çalıştırdığınızda, işlem istekleri ve yanıtları istemci konsolu penceresinde görüntülenir. İstemciyi kapatmak için istemci penceresinde ENTER tuşuna basın.

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.

Örneği ayarlamak, derlemek ve çalıştırmak için

  1. Windows Communication Foundation Örnekleri içinOne-Time Kurulum Yordamını yaptığınızdan emin olun.

  2. Çözümün C# veya Visual Basic .NET sürümünü oluşturmak için Windows Communication Foundation Örneklerioluşturma başlığındaki yönergeleri izleyin.

  3. Örneği tek bir makine veya makineler arası bir yapılandırmada çalıştırmak için, Windows Communication Foundation örneklerini çalıştırmayönergelerini izleyin.