Web Service günümüz teknolojilerinin olmazsa olmazları arasında yer almaktadır. Bunun en büyük nedeni M2M iletişimin önünü açmak ve back-end sistemde var olan çeşitli database yada enterprise yapıların diğer platformlarla iletişimini güvenli bir şekilde sağlamaktır.
.Net tarafında çeşitli Web Service yazma yolları vardır bunlardan bir tanesi asmx dediğimiz [WebMethod]’ lar kullanılarak yazılan servislerdir. Aşağıda ki örnekte Database’den veri çekilerek nasıl bir asmx servis yazılıp çekilen veri internet ortamında yayınlanır ona değiniyor olacağız.
1.Adım | Projenin Oluşturulması
- Öncelikle aşağıdaki resimde de olduğu gibi ismi "WebService" olan bir adet Asp.Net Empty Web Application oluşturuyoruz
2.Adım | Projeye Web Service Sayfası Eklenmesi
- Projeyi oluşturduğumuzda içerisinde default olarak Properties, References ve Web.config sayfalar geliyor. WebMethod yazabilmek için Proje ismine sağ tıklayıp aşağıda ki resimde de olduğu gibi bir adet ismi "WebMethods" olan WebService sayfası ekliyoruz.
3.Adım | WebMethod 'un Anlaşılması
- Service sayfasını ekledikten sonra kodlarını açtığımızda içerisinde default olarak gelen bir adet HelloWorld() metodu bulunmaktadır
[WebMethod] // [WebMethod] tag'i altında yazılı olan Metodun bir "Web Method" olduğunu belirten yapıdır. Aslında kabacası bizim internette yayınlayacağımız ve Client tarafında kullanılacak metod olduğunu belirtiyor.
publicstring HelloWorld() //Herbir .asmx service sayfasında Default olarak gelen parametre almadan geriye string dönen HelloWorld() bulunmaktadır.Browser'da servici çalıştırdığınızda aşağıda resimde olduğu gibi metodları görüyor olacaksınız
DipNot - [WebMethod] tanımlaması yapılan metodlar Browser'da görünmeyecektir, Sadece [WebMethod] etiketine sahip metodlar burda görünür ve Client tarafından direkt olarak kullanılır
{
return"Hello World";
}
4.Adım | Web Service Nasıl Bir İşlem Yapıyor Olacak ?
- Geliştireceğimiz Web Service local'de bulunan Northwind Database'ine bağlanarak Employees tablosunda bulunan Çalışanların Ad(FirstName), Soyad(LastName) ve İş Tanımı(Title) bilgilerini yayınlıyor olacak.Bunun için öncelikle pc'nizde Northwind database'i bulunuyor olması gerekli. Olmayan arkadaşlar bu Link' teki script'i indirip MS-SQL Management Studio kullanarak kurulum yapabilirler.
5.Adım | Database'den Employees Bilgilerini Çeken Metodun Yazılması
- Database ile bağlantı kurmanın çeşitli yolları vardır.İster Entity Framework kullanırsınız istersenizde klasik Ado.Net yazarsınız.Ben Ado.Net'in Entity Framework ve yandaşlarına kıyasla 7 kat gibi bir hız farkıyla çalışmasında dolayı Ado.Net kullanıyor olacağım . İlk olarak "Employees" tablosundan "FirstName" ,"LastName" ve "Title" bilgilerini almamız için bu attributelere sahip "Employees" class'ını aşağıdaki gibi oluşturuyoruz
public class Employees
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Title { get; set; }
}
- Şimdi ise Ado.Net kullanarak çekeceğimiz bu Employees'leri List<Employees> array'i oluşturup içerisine atıp sonrasında Web Service' imiz ile yayınlıyor olacağız. Geriye List<Employees> dönen CallEmployees() adında bir metod tanımlayalım ve kodlarımızı aşağıda olduğu içerisine yazalım.
[WebMethod]
public List<Employees> CallEmployees()
{
//Employees'leri içerisine doldurup return ettireceğimiz List<> array
List<Employees> AllEmployees = new List<Employees>();
//Local'de bulunan Northwind database'ine bağlanmamızı sağlayan connectionstring'i
SqlConnection conn = new SqlConnection("server=.;database=Northwind;trusted_connection=True");
//Hangi bilgileri çekeceğimizi belirttiğimiz sql sorgumuz
SqlCommand cmd = new SqlCommand("select FirstName,LastName,Title from Employees", conn);
conn.Open(); //Sql bağlantısını açıyoruz
SqlDataReader dr = cmd.ExecuteReader(); //DataReader kullanarak verileri alıyoruz
while (dr.Read())
{
//Çektiğimiz verileri Employee nesnesi'nin attribütlerine atayıp sonrasında AllEmployees array'inin içerisine atıyoruz
AllEmployees.Add(new Employees()
{
FirstName = dr.GetString(0),
LastName = dr.GetString(1),
Title = dr.GetString(2)
});
}
//Son olarakda doldurduğumuz array'i return ediyoruz
return AllEmployees;
}
- Projeyi Run ettiğimizde Browser'da aşağıda olduğu gibi HelloWorld() metoduyla birlikte bizim sonradan tanımladığımız CallEmployees() metodunu görüyor olacağız. 1. resimde bulunan metodumuza tıkladığımızda 2. resimde gördüğümüz sayfa açılıyor olacak ve Çağır butonuna tıkladığımızda son resimde gördüğümüz gibi Database'den gelen veriler XML formatında görüntüleniyor olacak.
-
6.Adım | Web Service'in Internet'te Yayınlanması
- Geliştirmiş olduğunuz bu gibi Web Servic'i yayınlamak için Solution'dan proje üzerine sağ tıklayıp Publish deyip sonrasında generate edilmiş dosyaları web sitenizin bulunduğu ftp' ye atmanız yeterli olacaktır.
- Yazılmış olan bu web service'i diğer projelerde kullanmak için ise service'in bulunduğu sayfayı projelerinize Reference olarak ekleyip sonrasında içerisinde bulunan metodları kullanabilirsiniz.Biz projede sadece select işlemi yapan bir WebMethod yazdık ama ihtiyaca göre çok daha farklı inserti, update, delete gibi işlemler yapan WebMethod'larda yazılabilir.
7.Adım | Web Service' de Güvenlik
- Makalenin başında da bahsettiğimiz gibi Web Service'ler şirketler için büyük önem taşırlar nedeni ise veri'nin sadece istenilen kişiler tarafından kullanılması. Biz yukarıda geliştirmiş olduğumuz projede güvenlik olarak hiç birşey yapmadık yani siz bu projeyi internette publish ettikten sonra çeşitli yazılımlar kullanılarak data-sniffing ile servis'in bulunduğu URL bulunup yazmış olduğunuz metodlar diğer kişiler tarafındanda kullanılabilir.İşte bu gibi durumlarda güvenlik çok büyük öneme sahip oluyor.Konu uzun olduğu için Web Service'de Güvenlik Nasıl Sağlanır ? bir sonraki makalemizde görüyor olacağız. Umarım buraya kadar yazdıklarımız yararlı olmuştur, herhangi bir sorunuz olduğunda e-mail ile ulaşabilirsiniz,
Projeyi burdan indirebilirsiniz..