|
Web Servisleri ile Uygulama Geliştirme |
|
Gönderiliyor lütfen bekleyin... |
|
|
Yaklaşık 2 yıl önce, sitemiz MaxiASP de yeni bir projeye başlamıştık,
amacımız bir program yaratıp kullanıcılara dağıtmaktı; Bu program web
sitesindeki gelişmeleri takip edecek ve kullanıcıya bildirecekti. Ancak
çalışmayı yürüten arkadaşlarım bir süre sonra tıkandıklarını belirttiler. Çünkü
bir sorun vardı. Programın, web sitesindeki verileri sağlıklı bir şekilde
alabilmesi için sunucuda bir programın çalışması gerekiyordu ama böyle bir
ihtimal yoktu. Bu yüzden bu projeyi rafa kaldırmak zorunda kaldık.
Ancak şimdi .Net ile hiç bir program çalıştırmadan,sunucu yöneticisi ile
muhattab olmadan bu işlemi gerçekleştirebiliyoruz. Nasıl mı? Web servisleri
sayesinde. Bu yazımızda Windows Forms ile Web Servislerine erişecek ve
internetteki veritabanımız ile işlem yapacağız. Ben kodları C# ile yazacağım,
siz VB.Net kullanıyorsanız basit bir şekilde VB.Net'e çevirebilirsiniz...
Uygulamamızı adım adım geliştireceğiz. Adımları düzgün bir şekilde uygularsanız
sorun çıkmayacaktır...
1) Web Servisimizi Oluşturalım...
Şimdi
lütfen aşağıdaki gibi bir web servisi oluşturunuz.
2) Veritabanımızı Oluşturalım
Ben bu uygulamada Access
veritabanı kullanacağım, siz isterseniz SQL Server da kullanabilirsiniz ancak
kodlarda gerekli değişiklikleri yapmayı unutmayınız. Ben aşağıdaki gibi bir
veritabanı yapısı kullanacağım.
Veritabanımı, bu uygulamada web
servisim ile aynı klasöre koyuyorum.Adını da gördüğünüz gibi vt.mdb yapıyorum.
3) Web Servis kodları
Sıra
web servisimizin kodlarını yazmaya geldi. Eğer VS.Net ile çalışıyorsanız
service1.asmx.cs dosyasını, yok kendiniz web servisi yarattıysanız service1.asmx
dosyasının kod bloklarını kodlarımızı yazmak için kullanabilirsiniz... Şimdi
size uygun bölüme aşağıdaki kodları yazınız.
[WebMethod] public DataSet ProgramaGonder() { OleDbConnection objBaglanti =
new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;DATA Source="+ Server.MapPath("vt.mdb")+""); objBaglanti.Open();
DataSet objDs =
new DataSet("data_setim"); OleDbDataAdapter objVeriKoprusu =
new OleDbDataAdapter("Select * from Siteler order by fldSiteAd
asc",objBaglanti); objVeriKoprusu.Fill(objDs,"siteler_tablo"); return objDs; } [WebMethod] public
void ProgramdanAl(string strAd,
string strUrl) { OleDbConnection objBaglanti =
new OleDbConnection("Provider=Microsoft.jet.OLEDB.4.0;DATA Source="+ Server.MapPath("vt.mdb")+""); objBaglanti.Open();
OleDbCommand objKomut =
new OleDbCommand("INSERT INTO Siteler (fldSiteAd,fldSiteAdres) Values ('"+ strAd.ToString() +"','"+ strUrl.ToString() +"')",objBaglanti); objKomut.ExecuteNonQuery(); } |
Eğer biraz C# ile
ilgilenmişseniz bugüne kadar [WebMethod] kodunu fark etmişsinizdir.Normalde
Winforms uygulamalarında kullanılmayan bir koddur bu, sadece web servislerinde
kullanılır. Bu koddan sonraki metodun web servisinin ona ulaşacak program ya da
sayfalar için olduğunu anlar, yani onları birer web servisine dönüştürür.
Burada 2 tane metod tanımlı.
Biri ProgramaGonder(), ki bu metod veritabanına bağlanıp veriyi programa DataSet
halinde yolluyor, diğeri ise ProgramdanAl(), bu da programdan gelen veriyi
veritabanına ekliyor.Önce ProgramaGonder() metodunu inceleyelim. Bu metodda
veritabanına bağlanmak için objBaglanti isimli bir nesne oluşturuyouz.
Veritabanımız Access olduğu için bunu OleDbConnection ile yapıyoruz. Daha sonra
DataSet oluşturuyor ve adını "data_setim" koyuyoruz. OleDbDataAdapter sayesinde
bir veri koprüsü oluşturup SQL kodumuz ile çektiğimiz verileri objVeriKoprusu.Fill
özelliği ile DataSet'imize yüklüyoruz.Son olarak verileri alan DataSet'i return
komutu ile döndürüyoruz.
İkinci metodu inceleyecek
olursak. Burada 2 tane overload var. Bunların ikisi de string türünde. Bu
veriler bize programdan gelecek. Metodu incelemeye devam edersek, yine bi
bağlantı oluşturmuşuz. Ancak burada DataSet ya da DataAdapter yok. Burada
Command nesnesi var. SQL komutları yürütmemizi sağlayan bir nesne olan
OleDbCommand. Aslında kodlarının yazımı DataAdapter'e benzemesine rağmen çalışma
mantıkları çok farklıdır. Mesela DataAdapter'de SQL sorgusu hemen yürütülmesine
rağmen Command'da objKomut.ExecuteNonQuery() satırı ile SQL'i yürüttük. Buradaki
SQL'imizde gördüğünüz gibi veriyi alıp, veritabanına ekliyoruz.
Bu hali ile kodları web
servisinizi çalıştırmaya kalksanız hata verir. Çünkü bu kodlarda kullandığımız
OleDbCommand, OleDbConnection gibi nesneleri taşıyan namespace'i sayfamıza
eklemedik. Bunu da en üstteki bölümden yapıyoruz. Kodlarımızın üst tarafı
aşağıdaki gibi olmalı.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Data.OleDb; |
4) Windows Programımızın oluşturulması...
Biraz sonra oluşturacağımız
program ile web servisimize bağlanacak ve az önce web servimizde yazdığımız
kodların icra edilmesini sağlayacağız. Tabi ki önce projemizi oluşturalım...
Projenizi oluşturduysanız kodlamaya geçmeden önce yapmanız gereken bir şey daha
var. Biz bu uygulamamızda web servisi kullanacağımız için referans olarak
eklememiz lazım. Eklemek için aşağıdaki şekle bakabilirsiniz.
"Add Web
Reference..."a tıkladıktan sonra açılan penceredeki adres satırına web
servisinizin .asmx dosyasının adresini girmelisiniz. Mesela, ben "http://localhost/csharpservis/service1.asmx"
adresini girdim. Web servisinin bulununca "Add Reference" düğmesine
tıklamalısınız.Eğer işlemler sorunsuz olarak gerçekleşti ise şu an referansınız
eklenmiş demektir. Uygulamamızın tasarımını yapabiliriz demek. Ben aşağıdaki
gibi bir program hazırladım.
Böyle bir tasarımı da hazırladıysanız kod yazma zamanı gelmiş demektir.
5) Form1'in Yüklenme Olayı...
Programımız ilk yüklendiğinde yapılacak işlemleri burada belirliyoruz. Bizim
istediğimiz program açılınca web servisine bağlansın ve objDg isimli DataGrid'i
dolduracak DataSet'i alsın...
private
void Form1_Load(object sender, System.EventArgs e) { DataSet objDs =
new DataSet("data_setim"); maxipower.Service1 Servisimiz =
new maxipower.Service1(); objDs = Servisimiz.ProgramaGonder();
objDg.SetDataBinding(objDs,"siteler_tablo"); } |
Kodlarımıza şöyle bi bakalım. Önce objDs adında bir DataSet oluşturuyoruz. Biraz
sonra web servisinden gelecek veriler bu DataSet'e yüklenecek çünkü. İşin esas
kısmını yapan web servise bağlantı ise bi sonraki satırda oluyor. Buradaki "maxipower"
benim bilgisayarımın adı.Bu adı "Solution Explorer"dan
değiştirebilirsiniz.Neyse, kodlarımız ile web servisimize bağlanıyoruz ve sonra
ProgramaGonder() metodunu çağırıyoruz ve gördüğünüz gibi objDs isimli nesneye
atıyoruz bunu;çünkü bu metot bir DataSet döndürüyor.Bu kod ile dönen DataSet
verisi direk bizim DataSet'imize yükleniyor.
Son
satırda ise objDg isimli DataGrid'imize DataSetteki "siteler_tablo" isimli
tabloyu "Bind" ediyoruz,yani bağlıyoruz. Eğer daha önce ASP.Net ile de
ilgilendiyseniz kodların farklı olduğunu görmüşsünüzdür.
6) Düğme'nin tıklanma olayı...
Bu
bu yazımızın son kodları. Bu kodu yazdıktan sonra uygulamamızda bir eksik
kalmamış olacak.Aşağıdaki kodları düğmenizin tıklanma olayına ekleyiniz.
private
void Ekle_Click(object sender, System.EventArgs e) { maxipower.Service1 Servisimiz =
new maxipower.Service1(); Servisimiz.ProgramdanAl(txtAd.Text,txtAdres.Text); MessageBox.Show("Site adı ve adresi eklendi","Veri Eklendi",MessageBoxButtons.OK,MessageBoxIcon.Information); } |
Gördüğünüz gibi bu işlemde oldukça basit kodlarla yapılıyor. Servisimiz isimli
web servisi nesnemizi normal bir metot çağırıyor gibi çağırıyoruz. İki tane "textbox"taki
veriyi overload olarak yolluyoruz. Son olarakta kullanıcı bilgilendirmek için
MessageBox ile kullanıcıya mesaj çıkatıyoruz.
Bu
son kodumuzla hem programımızın hem de yazımızın sonuna geldik. Sanıyorum sizin
için az da olsa yararlı birşeyler yapabildim. Ancak benim sizden istediğim bir
şey var. User Interface konusu hakkında bilginiz varsa sizde bunları yazıya
dönüştürüp bizimle paylaşın...
Projenin winforms kodlarını indirmek için tıklayınız...
Makale:
Web Servisleri ile Uygulama Geliştirme XML ve Web Servisleri Bahadır Arslan
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|