.NET Webservice'den C# Client ile Veri Almak

Batuhan Düzgün tarafından yayınlanmıştır 17. August 2010 01:28

Merhaba arkadaşlar bu yazımda sizlere .NET ortamında Webservice'ler nasıl oluşturulur,ve oluşturduğumuz bu Webservice ile Client programı aracılığıyla nasıl iletişime geçilir bundan bahsedeceğim.
 
WebServislerin Yararları Neden Webservice'ler?
 
Webservice'ler aslında Web API'leri gibidirler.Bizlere bir arayüz sunarak,uzaktan verilere erişmemizi sağlıyor.Ayrıca,Webservice'ler  bir çok farklı uygulamanın entegre bir şekilde çalışmasını sağlar.Bunu örneklemek gerekirse.Düşünelimki personel bilgilerimizi tuttuğumuz bir veritabanımız olsun.Biz bu veritabanındaki bilgileri dışarı kullanıcıların hizmetine açmak ve kullanmasını sağlamak istiyoruz.Bunun için veritabanımızdaki personel bilgilerini bir Webservice ile internet üzerine taşıyabilir ve paylaşıma açabiliriz.Böyle bizim bilgilerimizi kullanmak isteyen son kullanıcılar ve clientlar veritabanımız ile ilgilenmek zorunda değilller.Yapmamız gerek sadece Webservice 'e erişip bize sunduğu arayüzleri,metodları kullanmak ve detaylardan kurtulmak.Normalde veritabanımızdaki verileri kullanmak isteyen bir kullanıcının veritabanımıza sahip olması gerekirdi.Webserviceler verileri farklı kullanıcıların ve uygulamaların kullanabilmesi için iyi bir çözüm bakıldığında. Ayrıca Webserviceler çalışabilirliğe yardımcı araçlardır.
 
Artık bir Webservice oluşturmanın zamanı geldi sanırsam.Visual Studio 2008'i açıp,ardından File>>New>>Project'i seçiyoruz.Daha sonra aşağıdaki gibi proje tipini Webservice olarak seçiyoruz.
 
 
 
Evet basit bir Webservice oluşturduk.Şimdi bu Webservice'imiz ile neler yapacağız ona bakalım.Yapacağımız uygulama basit SQL Server 2005 veritabanı programında oluşturduğumuz veritabanı içindeki bir tablodaki bilgileri Webservice ile paylaşıma açacağız.Veritabanımızı hemen oluşturalım.Visual Studio üzerinden SQL Server 2005 veritabanı oluşturabilirsiniz.Bunu gerçekleştirmek için Server Explorer sekmesine tıklayınız.Eğer Server Explorer sekmesi gözükmüyorsa,yukarıda bulunan menüden Wiew'a tıklayarak Server Explorer'ı seçip görünür hale getirebilirsiniz.Data Connections'a sağ tıklayıp Create New SQL Server Database diyoruz.Ardından aşağıdaki pencereye ulaşmanız gerekiyor.
 
 
 
Şimdi bu noktada Server Name'mize .\SQLExpress diye belirttikten sonra,veritabanımızın ismini belirliyoruz.Ben MyPersonelBilgiler diye giriyoruz.Ardından OK'ye basıyoruz.Ardından veritabanımıza bir tablo ekleyelim,tablo eklemek aşağıdaki  resimde gösterilmiştir.
 
 
 
 
Herşey gayet yolunda ilerliyor.Tablomuzu aşağıdaki resimde görüldüğü şekilde düzenleyelim.
 
 
 
 
Burada önemli bir nokta Is Identity özelliğini Yes diye belirtip Identity Increment'a  1 yazıp,Identity Seed'e yine 1 yazıyoruz.Bu şu anlama geliyor.Kayıt ID'miz 1 değerinden başlayacak ve kayıt eklendikçe ID birer birer artacak.Eğer Increment değerine 2 yazarsanız her kayıt eklenişde ikişer ikişer artar. Ardından tablomuzu kaydedelim.İsim girmenizi isteyecektir.Ben PersonelTablo diye isimlendirdim.Siz dilediğiniz ismi verebilirsiniz.
 
Evet veritabanımızda hazır hale geldi.Birkaç kayıt ekleyelim.
 
  Ardından Webservicemizin kodlarını yazmaya başlayalım.Webservice'lere metod yazarken metodun üst satırına [WebMethod] şeklinde bir belirtim yapmanız gereklidir.Böylece ilgili metodun bir Webservis metodu olduğu anlaşılır.Aşağıda personel bilgilerini almaya yarayan metodu yazdım ,inceleyebilirsiniz.
Kod satırlarında açıklamalar mevcuttur.
 
Not: SQL Server 2005 veritabanı ile işlemler yapabilmek için  usingSystem.Data.SqlClient;  başlık dosyasını eklemeyi unutmayın. :)
 

[WebMethod]

public DataSet PersonelBilgilerini_Al()

{

            SqlConnectionBaglanti = new SqlConnection(@"Data Source=.\SQLEXPRESS; InitialCatalog=MyPersonelBilgiler; Integrated Security=True");

            //SQLServer'a bağlantı açmak için bağlantı cümlesini yazıyoruz.Data source'a serverismini,Initial catalog'a ise veritabanı ismini yazıyoruz.

            Baglanti.Open();//SQL Server'a bağlantı açmaya yarayan Open metodu.

            stringSQL = String.Format("SELECT* FROM PersonelTablo");//SQL cümlemiz,veriçekmeye yarar SELECT ifadesi var dikkat!

            SqlDataAdapterAdap = new SqlDataAdapter(SQL,Baglanti);//SqlAdapter ile SQL cümlesini ve baglanti adlı nesneyikurucu metod içine gönderiyoruz.

            DataSetMyDataSet = new DataSet();//sqladapter sınıfı dataset nesnesine tablodaki verileridoldurur.

            Adap.Fill(MyDataSet);//fill metoduyla dataset'i dolduruyoruz.

            MyDataSet.AcceptChanges();//yapılan değişiklikleri onaylıyoruz.

            Baglanti.Close();//bağlantıyı kapatıyoruz.

            returnMyDataSet;//verilerle doldurduğumuz dataset'i döndürüyoruz.

}
 
Webservice'imizi F5'e basarak çalıştıralım.Aşağıdaki ekran görüntüsünü almanız gerekiyor.
 
 
Evet görüldüğü üzere Webservice'imiz veritabanındaki verilerimizi tarayıcıya taşımış oldu.Herşey gayet iyi ilerliyor.Ama daha işimiz bitti mi? Tabiki hayır,Şimdi gelin bu güzel Webservice'imizi kullanacak olan bir client'ı C# ile kodlayalım.
 
Tekrar File>>New>>Project diyip,Windows Form Application'ı seçiyoruz.Ardından form üzerine bir tane Datagridview bileşeni sürükle-bırak ile ekliyoruz.
 Bu işlemlerden sonra proje üzerine sağ tıklayıp Add Service Reference diyoruz.Karşımıza gelen pencerede sol alt köşedeki advanced butonuna tıklıyoruz.Açılan pencerede yine sol alt köşede Add Web Reference butonuna tıklıyoruz.Açılan pencerede üstte yer alan URL textbox'ına Webservice'in tarayıcıda gözüken adresini veriyoruz.Yani benim örneğim için "http://localhost:11498/Service1.asmx"  url'sini ekliyoruz.Ardından "Go" butonuna tıklıyoruz.Ve en son olarak Add Reference butonuna tıklıyoruz.İşlemimiz tamam.Şimdi client ile Webservice'imiz haberleşmeye hazır hale geldi.Fakat client'a verileri çekmek için bir takım kodlar yazmamız gerekli.Aşağıda bunlara değindim.
 
Formun load olayına aşağıdaki kodları yazıyoruz.
 

private void Form1_Load(objectsender, EventArgs e)

{

            localhost.Service1myservice = new ClientforWebservice.localhost.Service1();

            //eklediğimizwebreference sayesinde Service1 adlı Webservice'e ait bir tane nesne oluşturuyoruz.

            //bunesne aracılığıyla datagridview'imizi dolduracağız.

            dataGridView1.DataSource =myservice.PersonelBilgilerini_Al().Tables[0];

            //datagridview'indatasource'una webservice'teki PersonelBilgilerini_Al() metodunun döndürdüğüdataseti atıyoruz. 

} 
 
Evet,ilk önce Webservice'imizi çalıştırıyoruz.Ardından client programı ve sonuçlar aşağıdaki gibi olmalı.
 
 
 
Ardından client çalışınca:
 
 
 
Arkadaşlar görüldüğü üzere Webservice aracılığıyla verileri client'a aktarmayı başardık.Webservice ile gerçekten sistemleri bütünleştirmek çok eğlenceli ve kolay.Yaşasın Webserviceler. Webserviceler yazılım dünyası için bulunmaz birer nimet aslında.Webservice'lerin bir üzeri ise Cloud Computing.Umarım zevkle okuyacağınız bir yazı olmuştur.Bir sonraki makalemde görüşmek dileğiyle ...
 
Batuhan Düzgün
 
Sakarya Üniversitesi
 
Bilgisayar Mühendisliği
 
 

Currently rated 5.0 by 7 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler:

Webservices

Comments

Add comment


(Will show your Gravatar icon)  

  Country flag

biuquote
  • Comment
  • Preview
Loading





Bu site BlogEngine.NET 1.4.5.0 ile oluşturulmuştur. Türkçe çevirisi BlogEngine TR ekibi tarafından yapılmıştır.

Batuhan Düzgün

Sakarya Üniversitesi 

Bilgisayar Mühendisi

Endüstri Mühendisi

Yeditepe Üniversitesi

Bilgisayar Mühendisliği Yüksek Lisans 

 sahibinden.com

   Kıdemli Uzman Yazılım Mühendisi  

E-Mail 

   batuhan.duzgun@sahibinden.com

   batuhan.duzgun@windowslive.com

  github.com/batux

 

Sayfalar

Calendar

<<  September 2018  >>
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Yazıları geniş takvimde göster