Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Sefer Algan
Sefer Algan
http://www.seferalgan.com
İletişme geçmek için tıklayın.
71 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler:  XML / Web Serv. Sefer Algan
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Başlangıç
Kategori : XML / Web Serv.
Yayınlanma Tarihi : 1.1.2003
Okunma Sayısı : 128589
Yorum Sayısı : 9     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 23.11.2024
Turhal Temizer
Mac OS/X Removing CUDA 23.11.2024
Burak Selim Şenyurt
Rust ile ECS Yaklaşımını Anlamak 23.11.2024
Burak Selim Şenyurt
Birlikte Rust Öğrenelim Serisi 23.11.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
C# Web Servislerine Giriş
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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
  • Yazılan Yorumlar
  • Yorum Yaz
TEM
12
2012
Elinize saglik net bi yazi olmus..
HAZ
28
2011
Gerçekten çok işime yarayan bir makale. hazırlayandan allah razı olsun
OCA
27
2010
web servisler hakkında hiçbir fikrim yoktu. Teşekkürler...
ARA
2
2008
abim tek telime ile süperdi. Rabbim vesile olduğun ve bize yardımcı olduğun için sana yardım eylesin.
ŞUB
5
2003
ben de teşekkür ederim... işinize yaramış olması güzel bişey
OCA
2
2003
bu makale çok işime yaradı teşekkür ederim...
Sayfalar : 1 
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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