|
C# Web Servislerine Giriş |
|
Gönderiliyor lütfen bekleyin... |
|
|
Bu yazımızda basit anlamda web servislerinin ne demek olduğunu, kullanım alanlarını
ve basit bir web servisi uygulamasının adım adım incelenmesini göreceğiz.
Web servisi adından da anlaşılacağı gibi web üzerinden servis veren
program parçacıklarıdır. Web üzerinden verilen bu servisler standart HTTP
protokolü ile olmaktadır. Bu da herkesin bu protokol vasıtası ile bir web servisine
ulaşabileceğini göstermektedir. Bir kullanıcın HTTP üzerinden bir web servisini
kullanmasına RPC(Remote Procedure Call) denmektedir. HTPP üzerinden yapılan bu
çağrımlara karşı SOAP(Simple Obect Access Protocol) dediğimiz protokol XML çıktıları
üretir. Ve bu sayede standart bir veri paylaşım aracı olan XML ile istediğimiz
verileri alıp kullanırız. Aslında kabaca düşündüğümüzde Web servisleri dağıtık
yapıdaki sistemlerde çokça kullanılan DCOM teknolojisinin web üzerinden binary
olmayan düzeydeki uygulamalarıdır.
Gördüğünüz gibi web servisi uygulamasını çağıran istemcinin
kullandığı teknoloji ne olursa olsun SOAP ile HTTP üzerinden bu isteğini
iletebilmektedir. Daha önceden uzaktan veriye erişim için birtakım standartlar mevcuttu, bunlar
küçük ağlarda veya intranetlerde uygun sonuçlar verebiliyordu, DCOM, CORBA ve J2EE
'nin RMI standartları bunlara örnek verilebilir. RMI üzerinden ancak
JAVA nesnelerine ulaşabiliyorduk, bir COM nesnesine RMI ile ulaşabilmek imkansızdı. Ayrıca
bunlar TCP/IP portları üzerinden iletişime geçtikleri için internet
gibi ortamlarda çalştırıldığında bir takım güvenlik sorunları ortaya çıkabiliyordu, mesela birçok
firewall TCP/IP üzerinden bu tür erişimlere izin vermiyor. Halbuki SOAP ile artık
bu aşılmış durumdadır. SOAP ile veriler HTTP üzerinden aktarıldığı için hiçbir
güvenlik sorunu çıkmamaktadır. Çünkü hemen hemen butün firewall'lar 80 numaralı porttan
veri geçisine müdahale etmiyor. (80, HTTP verilerinin aktarıldığı port numarasıdır.)
Şimdi
bu giriş bilgilerinden sonra web servislerine gerçek bir örnek verip kullanım alanları
hakkında genel bir bilgi sahibi olalım. Büyük bir ithalat-ihracat firması ve
bu firmanın çok sayıda bayisinin olduğunu düşünelim. Bu bayilerle tüketici arasındaki
mal alım-satımının döviz ile olduğunu kabul edelim. Bu durumda bütün bayiler aralarında
tutarlı olmak zorundadır. Yani her bayinin döviz kurları aynı olmalıdır.
Bu yüzden ana bayinin, bütün bayilerin kullanması için bir döviz kuru bellirlemesi
gerekir. Bayilerde satış işlemlerinin yapıldığı uygulama bu ortak döviz
kurunu kullanarak satış işlemi yapmalıdır. Dağıtık yapıdaki bu bayilerde kullanılan uygulamalar
aynı döviz kuruna nasıl erişecektir? Cevabımız tabi ki web
servisleri ile. Ana bayi tarafından dinamik olarak belirlenen döviz kuru bir
web servisi olarak HTTP üzerinden kullanıma açılacak, ve ana bayiler de bu
servisi kullanıp işlemlerine devam edecektir. Bu örnekten de görüldüğü gibi web
servisleri genellikle son kullanıcıya hitap etmez. Dağıtık yapıdaki uygulamaların
bir parçası olarak geliştirilirler.
Web Servisleri Standartları
Yukarıda da bahsettiğim gibi, web servisleri ve servisleri isteyen kullanıcı
arasındaki bilgi alışverişi XML formatında olmaktadır. Peki bu bilginin formatını
belirleyen nedir? İşte bu standart kısaca SOAP olarak bilinir. SOAP standartları W3C
standartlar komitesi tarafından belirlenmiştir. Bütün bu standartları uygulamaya
geçiren SOAP sayesinde web servisine, platformdan bağımsız çağırımlar
yapılabilmektedir. Yani .NET ortamında geliştirilen bir web servisine JAVA ile geliştirilen
bir programdan ulaşmak pekala mümkün olabilmektedir.
SOAP dışında birtakım standartlar da vardır, bunlar XML, WSDL, DISCO ve UDDI
gibi sıralanabilir. Bu standartları birer cümle ile açıklayalım. Bildiğiniz
gibi XML ,web servislerinin veriyi sunmak için kullandığı bir standarttır. WSDL(Web
Service Description Language) ,web servisinin sunduğu arayüzü tanımlamak için
kullanılır, bir web servisinde bulunan fonksiyonların hangi parametreleri aldığını
ve ürettiği bilginin türünü bu standartlar ile belirtiriz. DISCO(Dıscovery Protocol)
sayesinde ise bir sunucuda paylaşıma açılmış bütün web servislerinin organizasyonu
sağlanır. UDDI(Universal Description, Discovery and Integration) standartları,
internet üzerinde paylaşıma açılmış ve uygulamalar tarafından kullanılabilecek
web servislerinin organizasyonunu sağlar.
Web servisleri şimdilerde çok yeni bir teknoloji olmasına rağmen yıllar sonra
herşeyin internet üzerinden yapılacağı düşünüldüğünde web servislerinin önemi
ortaya çıkmaktadır. İnternete açabileceğiniz bir mutfak aletine ofisinizden
mesaj göndererek, size ısıttığı suyun sıcaklığını XML bilgisi olarak sunması
artık hayal olmaktan çıkacaktır.
Web Servisi Geliştirme
Bu kadar bilgiden sonra asıl önemli olan nokta bir web servisi nasıl geliştirilir
sorusuna cevap bulmaktır. Eğer herhangi bir .NET dilini biliyorsanız Web servisi
geliştirmek çok basittir. Şimdi Visual Studio.NET ile nasıl web servisi geliştirebileceğimizi
adım adım göreceğiz.
Visual
Studio.NET çalıştırıp File-> New Project menülerinden aşağıdaki pencerenin açılmasını
sağlayın. Proje tipi Visual C# projects template olarak da ASP.NET Web
Services ya da Web Services kısmını seçip "OK" düğmesine basın.
Tabi "OK" düğmesine basmadan önce kendinize uygun bir klasör seçip
web servisinize bir isim belirleyin.
Projeyi oluşturduktan sonra Visual Studio 'nun bizim için birtakım sayfalar
ve sınıflar oluşturduğunu göreceksiniz. Bu sayfaları Solution Explorer bölümünden
görebilirsiniz. Şimdi bu oluşan sayfaların ve sınıfların ne anlama geldiğine
bakalım.
|
Global
Sınıfı : Bu sınıf System.Web.HttpApplication sınıfından türemiştir.
Bu sınıf Global.asax sayfasının içine yerleştirilmiştir. Eski ASP sayfalarında
kullanılan global.asa ile eş değerdedir.
Service1 Sınıfı : Bu sınıf System.Web.Services.WebService sınıfından
türemiştir. Bizim geliştireceğimiz web servisini temsil etmektedir.
AssemblyInfo.cs Dosyası : Bu dosyada Build işlemi sırasında oluşacak
Assembly 'lerin versiyon bilgileri saklanır.
Web.config Dosyası : Web Servisimizin çalışma ayarlarını içerir.
CsWS.vdisco Dosyası : Web Servisimizin organizasyonu ile ilgili
bilgiler içerir(Klasör adları, isim alanları vs.).
Service1.asmx Dosyası : Web Servisimizin asıl yoludur. Web servisimize
ait fonksiyonlar bu sayfadadır. |
Aşağıda, Visual Studio.NET 'in bizim için oluşturduğu kodları düzenleyerek aşağıdaki
hale getirelim. Önce HelloWorld isimli metodun yorumlarını kaldıralım, ve yeni
bir web metodu oluşturalım. Kırmızı ile yazılmış kısımları değiştirmeniz yeterlidir.
using
System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
namespace
CsWS
{
[WebService(Namespace="http://www.csharpnedir.com/WS/",
Description="C#nedir?com web servisleri 1")]
//Yukarıdaki kırmızı alan
web servisi ile ilgili açıklama ve web servisinin isimalanını belirtir.
public class Service1 : System.Web.Services.WebService
{
public Service1()
{
InitializeComponent();
}
#region
Component Designer generated code
//Required
by the Web Services Designer
private IContainer components
= null;
///
/// Required method for
Designer support - do not modify
/// the contents of this
method with the code editor.
///
private void InitializeComponent()
{
}
///
/// Clean up any resources
being used.
///
protected override void
Dispose( bool disposing )
{
if(disposing
&& components != null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
[WebMethod]
public int HarfSayisi(string
a)
{
return
a.length;
}
}
}
|
HarfSayisi
isimli Web Metodu parametre olarak aldğı yazının kaç harften oluştuğunu
geri döndürecektir. Web servisindeki metodların Web Metodu olarak algılanması
için fonksiyonların başına [WebMethod] yazmamız gerekir. Aksi halde web
servisimizin arayüzünde bu metod bulunmayacaktır.
Şimdi sıra geldi web servisimizi tarayıcı üzerinde test etmeye. Projemizi kaydettikten
sonra (Ctrl +Shift + B) tuş kombinasyonlarıyla Build işlemini gerçekleştirelim
ve ardından F5 tuşuna basarak web servisimizin otomatik olarak tarayıcı tarafından
açılmasını sağlayalım. Aşağıdaki tarayıcı penceresinin açıldığını göreceksiniz.
Gördüğünüz gibi yukarıda oluşturduğumuz Web Servisine ilişkin metodlar alt alta
sıralanmıştır. Bu web servisimizde sadece bir tane metod oluşturduğumuz için
yalnızca bir tane web metodu görmekteyiz. HarfSayisi isimle metoda tıklayarak
çalışmasını sağlayalım. HarfSayisi isimli metod hatırlarsanız parametre olarak
bir yazı alıyordu ve geri dönüş değeri olarak bu yazının kaç karekterden oluştuğunu
döndürüyordu. Metoda tıkladığınızda açılan sayfadan aşağıda da görüldüğü gibi
metodun aldığı parametre sayısı kadar textbox oluşturulmaktadır.
Yukarıdaki "İnvoke" düğmesine basıldığında ise HarfSayisi metodunun
geri dönüş değeri olan yazının karakter sayısını XML belgesi olarak açmaktadır.
Oluşturulan XML belgesi aşağıdaki gibidir.
SONUÇ: Gördüğünüz gibi geliştirdiğimiz çok basit C# web servisinin test aşaması
da çok kolay olmaktadır. Bundan sonrası sizin yaratıcılığınıza kaldı. İstediğiniz
gibi metodlar oluşturup bunları tarayıcınız üzerinde test edebilirsiniz.
Bir sonraki yazımda Web Servis Protokollerini daha derinlemesine inceleyeceğiz.
Makale:
C# Web Servislerine Giriş XML ve Web Servisleri Sefer Algan
|
|
|
-
-
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
|
|