28 Şubat 2012 Salı

Web Servis İle Döviz Kur Bilgilerini Çekme!

Merhaba;
Bu yazımda sizlere; bir web servisinin nasıl oluşturulduğu, ve oluşturulan bu web servisinin bir Windows uygulaması tarafından nasıl kullanılacağını eğlenceli bir uygulamayla basit bir şekilde açıklamaya çalışacağım. Umarım örnek uygulamam maksadının dışına çok fazla çıkmamıştır.
Daha önce uğraşanlar bilir. Eskiden T.C.M.B. kurlarını, Today.html isimli html belgesindeki kur bilgilerini almak son derece zahmetli ve sıkıcı bir işti. Hatta bir o kadar da tehlikeliydi. Çünkü verinin geçerli ve garantili bir formatı yoktu. Şahsen ben bu tür kodları yazarken hep " Bu benim işim olmamalı" diye düşünürdüm. Yani düşünün ki bir yemek yapıyorsunuz ve yemekte kullanacağınız her malzemeyi de siz üretmek zorundasınız. Bunu bir üreten ve kullanıma sunan birileri olmalı ki ben en iyi yemeği yapabileyim!
Neyse ki artık Merkez Bankası bir adım daha attı (hayır bir web servisi yazmadı) ve verileri bir Xml belgede topladı. Bu sayede en azından veriler Xml gibi bir standarda sahip oldu. Birazdan biz bu Xml belgeyi kullanarak bir Xml Web servisi yaratıp, hizmete sunacağız. Bizim yazdığımız bu servisi uygulamalarında kullanan insanlar kur bilgilerini teknik olarak nereden ve nasıl elde ederimi düşünerek ve sırf bu iş için uzun uzun kod yazarak vakit kaybetmeyecekler. Bu da sanırım bir web servisinin ne işe yaradığını açıklar.
Gelelim uygulamamıza;
Servisimiz Visual Studio.Net ile C# ta yazılmıştır. Çalışma mantığını kısaca açıklayayım.
Uygulamamızda tek fonksiyon bulunmaktadır. TlKarsiligi foksiyonu.

Tlkarsiligi fonksyonu aldığı 2 parametreye karşılık dövizin T.L. karşılığını bize verir.
parametre tipleri ve geri dönüş değerleri hakkında bilgi aşağıda verilecektir.

Yeni bir asp.net web servisi projesi açın ve adını Currency olarak ayarlayın. Kodunuza Sytem.Xml NameSpace ini ekleyin (using System.XML;)


using

System;
using
 System.Collections;
using
 System.ComponentModel;
using
 System.Data;
using
 System.Diagnostics;
using
 System.Web;
using
 System.Web.Services;
using
 System.Xml;

namespace
 Currency

{

public class DovizIslemleri : System.Web.Services.WebService

{

public enum KurKodu : byte

{

USD,
CAD,
DKK,
SEK,
NOK,
CHF,
JPY,
SAR,
KWD,
AUD,
EUR,
GBP,
IRR,
SYP,
JOG,
BGL,
ROL,
ILS,
}

public enum Tur: byte

{

ForexBuying, //Döviz alış
ForexSelling, //Döviz satış
BanknoteBuying, //Efektif alış
BanknoteSelling, //Efektif satış
}
// enumarationlar içerisinde Tlkarsiligi isimli fonksiyona gönderebileceğimiz değişkenleri tanımlıyoruz. 

public DovizIslemleri()

{


}
[WebMethod]
/* TlKarsiligi fonksiyonumuz Kukodu ve Tur enumaration değişkenlerini alır.
böylece alabileceği değişkenler sabitlenmiş olur. Bunun faydasını web servisini windows
uygulamamıza dahil ettiğimizde daha iyi anlayacaksınız
*/

public string TlKarsiligi(KurKodu kodu, Tur turu)

{

string kod = kodu.ToString();string tur = turu.ToString();
//Değişkenlerimizi stringe çeviriyoruz.
XmlTextReader rdr = 
newXmlTextReader("http://www.tcmb.gov.tr/kurlar/today.xml");
XmlDocument MyXml = 
new XmlDocument();
MyXml.Load(rdr);
// internetteki xml belgesini uygulamamıza yüklüyoruz.
XmlNodeList MyNode = MyXml.SelectNodes("/Tarih_Date/Currency[@Kod ='"+kod+"']/"+tur);

// MyNode isimli XmlNodeList türünden değişkenimizi tanımlıyoruz. SelectNodes metodu kendisine
// parametre olarak gönderilen xpath e karşılık bu path deki nodeları bize döndürür. Yani fonksiyonu
// TlKarsiligi(KurKodu.NOK,Tur.BanknoteSelling) şeklinde çağırdığımızda SelectNodes metodu
// Kodu NOK (norveç kronu) olan node un BanknoteSelling nodelarını seçer.
return MyNode.Item(0).InnerXml.ToString();
//seçilen node un verisi stringe çevrilip geri döndürülür.

}

}

}

bu kodu derleyip kapatın.
Solitionu da kapatın ve yeni bir Windows uygulaması açın adınıda GetCurrency olarak ayarlayın. Solition Explorer penceresinde References e sağ tıklayın ve Add Web Reference seçeneğini tıklayın . Açılam pencerede Url kısmınahttp://localhost/Currency/Service1.asmx yazın ve Go butonuna basın. DovizIslemleri isimli web servisimiz ekrana gelecektir. Web Referance Name ini KurServisi olarak ayarlayın Add Reference butonuna basın. Solition Explorer penceresinde Referencesin altına KurServisi nin eklendiğini göreceksiniz. Uygulmanıza

using

GetCurrency.KurServisi;
Satırını ekleyin
private
void Form1_Load(object sender, System.EventArgs e)
{
DovizIslemleri doviz =
new DovizIslemleri();

MessageBox.Show(doviz.TlKarsiligi(KurKodu.NOK,Tur.BanknoteSelling));

// TlKarsiligi isimli fonksiyonun parametrelerinin web servisinde belirtilen Kurkodu ve Tur enumarationlarında 
tanımlanan değerler olduğuna dikkat edin

}

Uygulamayı çalıştırın. MessageBox içinde Norveç kronunun efektif satış TL karşılığını göreceksiniz. İşte Web Servisimiz hazır. Bu web servisini bir kere yazdık ve Windows uygulamamıza kolayca ekledik. Sadece iki satır kod ile istediğimiz döviz kurunun Tl karşılığına ulaştık. Geriye sadece Web Servisini yazana Dua etmek kaldı :)
Burada önemli olan nokta bence bir web servisinin nasıl yaratıldığından çok nasıl kolayca kullanılabildiği daha önemlidir.

Hiç yorum yok: