ASP.NET Web Servisi Oluşturmak ve Projelerimizde Kullanmak

Web servisleri, proje geliştirmede önemli bir entegrasyon kaynağıdır.

E-ticaret alanında bir web uygulaması geliştirdiğimizi düşünelim. Bu uygulamanın temel fonksiyonları ürünleri, kategorileri listeleme veya ekleme işlemleri olsun. Bu işlemler genellikle her e-ticaret sitesinde ortak olan işlemlerdir. Eğer istersek bu işlemleri yapan kodları web üzerinden paylaşımda bulunabiliriz.

Başka bir geliştirici, benzer bir uygulama yaparken ürün listelemek için kod yazmak yerine bizim kodlarımızı kendi projesine entegre edebilir. Bizim paylaştığımız bu kod parçacıklarına web servisi denir.

Projelerimizde sık kullandığımız yapılar olan hava durumu,döviz kurlarını web servis yardımı ile kendi projemize entegre edebiliriz.

Web servisleri, HTTP protokolü ile web üzerinden servis sağlayan kod yapılarıdır. Bu kodlar [WebMethod] referansına sahiptir ve metotların üstünde yazılır. Bu referans olmadan kodlarımızı servis edemeyiz.

Web servisleri Remote Procedure Call yani uzaktan bağlantı mantığı ile çalışır.Bu bağlantı ile HTTP üzerinden web servisleri invoke(çağırmak) yapılır ve sonucunda XML çıktısı oluşur.Bu çıktıları SOAP(Simple Object Access Protocol) üretir. XML ile verileri alıp istediğimiz şekilde kullanabiliriz.

Web Servisi Oluşturmak

Visual Studio'da ASP.NET uygulaması açıp Add New Item ile Web Service ekliyoruz.Bu dosya .asmx(active service method file) uzantılıdır. Oluşturduktan sonra bu alana oluşturmak istediğimiz servisleri ekleyebiliriz.




Örnek servisler oluşturmak istediğimizde Kullanıcı Girişini kontrol eden bir servis yazalım.
        [WebMethod]
        public bool GirisKontrol(string username, string password)
        {
            if (username == "user" && password == "pass")
            {
                return true;
            }
            else
            {
                return false;
            }
        }

Yeni bir servis oluşturalım bu sefer Kitap sınıfı oluşturalım ve 3 tane de servis yazalım.

Kitap Sınıfı ve Kitap türünden kitaplar listesi.kitaplar listesini de doldurduk.
       public class Kitap
        {
            public string ISBN { get; set; }
            public string KitapAdi { get; set; }
            public string YazarAdi { get; set; }
            public string KategoriAdi { get; set; }

            public Kitap(string ISBN, string kitapAdi, string YazarAdi, string Kategori)
            {
                this.ISBN = ISBN;
                KitapAdi = kitapAdi;
                this.YazarAdi = YazarAdi;
                KategoriAdi = Kategori;
            }
            public Kitap()
            {

            }
        }
        List<Kitap> kitaplar = new List<Kitap>()
        {
            new Kitap("1000","Satranç","S. Zweig","Roman"),
            new Kitap("1001","Suç ve Ceza","Dostoyevski","Roman"),
            new Kitap("1002","24 Kariyer Tuzağı","M.Acungil","Kişisel Gelişim"),
            new Kitap("1003","24 Öğrenme Tuzağı","M.Acungil","Kişisel Gelişim"),
            new Kitap("1004","Simyacı","P.Coelho","Roman")
        };


3 adet servis hazırladık.Kitap Ekleme,Listeleme ve ISBN'ye göre kitap adını döndüren WebMethod referanslı kodlar
        [WebMethod]
        public bool KitapEkle(string ISBN, string kitapAdi, string YazarAdi, string Kategori)
        {
            Kitap k = new Kitap(ISBN, kitapAdi, YazarAdi, Kategori);
            kitaplar.Add(k);
            return true;
        }

        [WebMethod]
        public List<Kitap> KitapListele()
        {
            return kitaplar;
        }
        [WebMethod]
        public string KitapListeleByISBN(string ISBN)
        {
            string sonuc="";
            var deger = (from k in kitaplar
                         where k.ISBN == ISBN
                         select new
                         {
                             k.KitapAdi
                         });
            foreach (var item in deger)
            {
                sonuc += item.KitapAdi;
            }
            return sonuc;
        }

Projemizi build edip çağırdıktan sonra karşımıza çıkan sayfa, oluşturduğumuz servisleri gösterir.



Servisleri seçip tıkladığımızda test edebileceğimiz sayfalara yönlendirir.

Çağır butonuna bastıp Invoke işlemi ile XML file olarak sonuçları görebiliyoruz.


Web Servislerini Kullanmak

Visual Studio'da yeni ASP.NET projesi oluşturup Add New WebForm oluşturuyoruz.Projemizde Solution Explorer'da References>Add Service Reference dedikten sonra açılan pencerede discover diyerek .asmx dosyamıza ulaşabliriz ya da web servisinin url'sini yazarak servise ulaşabiliriz.Namespace kısmına istediğimizi yazabiliriz web servisini bu isimle çağırırız.


MyService.SampleServiceSoapClient srvc = new MyService.SampleServiceSoapClient();

srvc nesnesi ile serviste oluşturduğumuz metotlara ulaşabiliyoruz.
Listboxta kitaplarımızı listeledik, Labelde ise ISBN'sini girdiğimiz kitabın adını döndürdük.


Web servisine oluşturduğumuz metotları kendi projemize bu şekilde entegre edebildik.

Web servislerini yazanlar yeni metod ekleyebilir ya da var olan metotta değişiklik yapmış olabilir.Bu durumlarda entegre ettiğimiz web servisini sürekli güncellemek gerekir. Bunun için eklediğimiz servis referansına sağ tıklayıp "Update Service Reference" dersek bu işi çözmüş oluruz. Servisi yazan kişi de service metodunu build ederek kaydeder.




Yorumlar