Haziran 2009 | Sayı : 3
      Veri Alışverişi ve Uygulamalar Haziran 2009 | Sayı : 3
Merhaba arkadaşlar, bu makalemde sizlere web servisleri hakkında kısa bir bilgi verip, küçük bir web servisi oluşturmayı anlatacağım.

Web servislerini basitçe, farklı dillerle ve platformlarla yazılan web siteleri arasında HTTP (80 numaralı port) protokolünü kullanarak bilgi alışverişi şeklinde tanımlayabiliriz. Örnek vermek gerekirse, yapacağınız bir masaüstü programınıza günlük döviz kurunu gösteren bir modül yapmak isterseniz, yapmanız gereken tek şey merkez bankasının günlük döviz kurunu veren web servisine bağlanıp verileri almak. Peki, bu nasıl olacak? Gelin hep beraber işin kodlama kısmına geçelim ve öğrenelim.

Öncelikle Visual Studio’ muzu açalım ve File->New Project deyip aşağıdaki resimdeki ekrana ulaşalım. Daha sonra Web’ i seçip ASP.NET Web Service Application’ ı seçelim. 

Visual Studio bizim yerimize Service1.asmx dosyası oluşturdu ve bu sayfanın kod kısmında (Service1.asmx.cs) bizim yerimize örnek bir metot oluşturdu. Gördüğünüz gibi oluşturulan örnek metodun başında [WebMethod]

şeklinde bir tanımlama var. Bu bizim metodumuzun web servisi üzerinde kullanılabileceğini, yani dışarıdan erişilebileceğini belirtmektedir. Şimdi bu metodu değiştirelim ve kendisine gönderilen bütün sayıları toplayan bir Topla metodu tanımlayalım. Ek olarak da basit bir Carp metodu tanımlayalım.


[WebMethod]

  1.         public int Topla(params int[] sayilar)
  2.         {
  3.             int sonuc = 0;
  4.             foreach (int sayi in sayilar)
  5.             {
  6.                 sonuc += sayi;
  7.             }
  8.             return sonuc;
  9.         }

[WebMethod]

  1.         public int Carp(int a, int b)
  2.         {
  3.             return a * b;
  4.         } 

 

Metodumuz, params int[] sayilar ifadesiyle kendisine gönderilen bütün verileri almaktadır. Daha sonra sonuc isminde bir değişken tanımlıyoruz ve sıfıra eşitliyoruz. Bu değişken bizim sonucumuzu tutacak. Daha sonra foreach (int sayi in sayilar) ifadesiyle metodumuza gelen sayıları alıyoruz. Ve bu sayıları sonuc değişkeni ile toplayıp return sonuc; ile sonucu gönderiyoruz.

Şimdi projemizi F5 ile çalıştırırsak aşağıdaki ekranı göreceğiz. 

Buradaki “Service1” ismi bizim servisimizin adı, “Topla” ve “Carp”  ise bizim tanımladığımız metotlardır. Bizim bu web servisimizi kullanmak isteyen birisi “Service1” servisi altından “Topla” ve “Carp” metoduna erişebilecektir. Şimdi ise yaptığımız bu web servisini kullanacak bir örnek yapalım.

Basit olması açısından, bir konsol örneği olsun. Dikkat etmemiz gereken önemli bir nokta var. Bu web servisimiz şu anda local’ de çalıştığı için eğer visual studio’ yu kapatırsak web servisimiz de kapanır ve erişemeyiz. Bu nedenle bu örneğimizi yapmak için yeni bir visual studio açalım ve bir tane konsol uygulaması oluşturalım.

Solution Explorer içerisindeki “References” a sağ tıklayalım ve “Add Service Reference…”a tıklayalım.

Açılan penceredeki adres satırına ise bizim web servisimizin adresini yazalım.

   

Adresi yazdıktan sonra “Go” butonuna basalım. Servisimiz aşağıdaki gibi listelenecektir.  Bir NameSpace verip tamam diyelim. 

 

Daha sonra servisimizi kullanabilmek için önce o servisin bir nesnesini oluşturmamız gerekmektedir.  

ServiceReference1.Service1SoapClient webServisimiz;

webServisimiz = new ServiceReference1.Service1SoapClient();
 

Bu 2 satır ile “webServisimiz” adında bir nesne oluşturduk. Şimdi ise servisimize erişebiliriz. Basit olarak önce Carp metodumuzu kullanalım.

Console.WriteLine("Çarpma Sonucu : " + webServisimiz.Carp(5, 4));

Altı çizili kırmızı renkli yerde gördüğünüz gibi basitçe web servisimizi çağırdık. Bu metot 5 ile 4 ü çarpıp sonucu int tipinde bize gönderecektir.

“Topla” metodumuzda durumlar biraz farklı. Çünkü bu metodumuza gönderilecek parametre sayısını değişken yaptık. Yani 1 tane sayı da gönderebiliriz, 1000 tane de. Bu nedenle öncelikle,

ServiceReference1.ArrayOfInt gonderilecekVeriler;

gonderilecekVeriler = new ServiceReference1.ArrayOfInt();

şeklinde “gonderilecekVeriler” şeklinde bir tamsayı dizisi oluşturmamız gerekiyor. Burada önemli olan kısım oluşturduğumuz değişken Service1’in belirlediği bir tipte (yani ArrayOfInt tipinde) olmasıdır. Daha sonra,

 

  1. for (int i = 1; i <= 10; i++)
  2. {
  3. gonderilecekVeriler.Add(i);
  4. }

kodu ile de 1 den 10 a kadar olan bütün sayıları “gonderilecekVeriler” tamsayı dizisine ekleyelim.

Console.WriteLine("Toplama Sonucu : " + webServisimiz.Topla(gonderilecekVeriler));

şeklinde de verilerimiz Topla metodumuza gönderip sonucu ekrana yazdıralım. Ekranımız aşağıdaki gibi olacaktır. 

Gördüğünüz gibi, uzaktaki bir web servisine bağlanarak veri gönderip, gelen cevabı yönetebildik. Yine bu şekilde merkez bankasından günlük kurları çekebilir, TC Kimlik numarası sorgulayabilir ve daha birçok online hizmeti programınıza ekleyebilirsiniz.

Not: İsteyen arkadaşlar buraya tıklayarak bu örneklerin kodlarını indirebilirler.

Eğlenceli ve bol kodlamalı günler dilerim :)

      Burak KANMAZ
İ.Ü. Bilgisayar Mühendisliği - MSP
- Haziran 2009 -
Editörden... | Ercan ZENGİN Sinir Hücreleri ile İletişim | Yrd. Doç. Dr. Mustafa DAĞTEKİN Alt Ağlar | Taylan SAYIN X-Men Origins : Wolverine | Erman TEPE Animasyon Sanatı | Ilgın UĞUR Unprivileged ve Privileged Modları | Ömer GENÇAY RichFaces'in Web Uygulamalarına Getirdikleri | H. Can ÇOBANOĞLU Veri Alışverişi ve Uygulamalar | Burak KANMAZ Seadragon ile Estetik Albümler | Muhammed Ali KOŞAN Eklentilerin En Hızlısı : Fast Dial | Muhammed CÜCE 20. Yüzyılın En İyi 10 Algoritması | Neslişah ÇELİK Rekabetin Korunması ve Standartlar | Mahmut Cihat KAHRAMAN
« önceki sayfa - 7 - sonraki sayfa »

Ana Sayfa | Künye | Dergimiz | | İletişim
© 2009-2010 Bilisimdergi.Com Tasarım - Kodlama : İU BİLGİSAYAR

Creative Commons License
Bilişim Dergi içeriği  Creative Commons  lisansı ile korunmaktadır.
Kaynak göstermek ve link vermek şartıyla yazılarımızı kullanabilirsiniz.