İçeriğe atla

REST

REST (Temsilî Durum Aktarımı; İng. İngilizceRepresentational state transfer), Web protokolleri ve teknolojilerini kullanan bir dağıtık sistemdir. REST prensiplerini sağlayan sistemler, RESTful olarak sıfatlandırılır.[1] Temsilî Durum Aktarımı ismindeki temsilî (İng. İngilizcerepresentational), verinin temsilini kastetmekte olup onunla ilgili durumun aktarılması olarak düşünülebilir.

2000 yılında HTTP spesifikasyonunun yazarlarından biri olan Roy Fielding tarafından doktora tezinin bir parçası olarak geliştirilmiştir.[2]

SOAP ve WSDL tabanlı Web servislerine spesifikasyon olarak daha basit bir alternatif olarak geliştirilmiştir. RESTful sistemler çoğunlukla HTTP protokolü üzerinden Web tarayıcıları tarafından sayfaların transferinde de kullanılan HTTP fiilleri (GET, POST, PUT, DELETE vs.) ile haberleşirler.

Aktarılan verinin formatı HTML, JSON, XML ya da farklı bir tipte olabilir. REST, bu konuda bir kısıtlama getirmez. Aktarılan verinin tipi ve özellikleri istemci ve sunucu tarafından HTTP protokolünde yer alan İngilizcecontent-type (içerik tipi) ve benzeri metaveri ile tanımlanır.

Tarihçesi

REST, ilk defa Roy Thomas Fielding'in 2000 yılındaki "Mimari tarzları ve ağ tabanlı yazılım mimarisi tasarımları" (İng. "İngilizceArchitectural Styles and the Design of Network-based Software Architectures") adlı doktora tezinde teklif edildi.[3] Fielding, REST mimari tarzını 1996-1999 arasında HTTP 1.0'ın mevcut tasarımına dayanarak HTTP 1.1 ile paralel olarak 1996'da geliştirdi.[4]

Mimarî özellikleri

REST mimarî tarzıyla etkilenen mimarî özellikler şunlardır:[3][5]

  • Performans - bileşen etkileşimleri, kullanıcının tespit ettiği performans ve ağ verimliliğinde dominant faktör olabilir.[6]
  • Çok sayıda bileşeni ve bileşenlerarası etkileşimi ölçeklenebilirlik yapmak.
  • Arayüzlerin sadeliği
  • Değişen ihtiyaçları karşılamak için (uygulama yürütülürken dahi) bileşenlerin değiştirilebilirliği
  • Hizmet vekillerince (İng. İngilizceservice agents) tarafından bileşenlerarası haberleşmenin görünürlüğü
  • Program kodunu veriyle beraber hareket ettirerek bileşenlerin taşınabilirliği
  • Sistem seviyesinde bileşenlerde, bağlantılarda veya verideki hatalara rağmen hataya karşı direnç güvenilirliği[6]

Mimarî sınırlamaları

REST'in mimarî özellikleri, bağlantılara, bileşenlere ve veri elementlerine belli etkileşim sınırlamaları uygulayarak erişilir.[3][5] Bu bölümdeki özelliklere sahip uygulamalar, "RESTful" olarak tasvir edilir.[7] Eğer hizmetler gerekli sınırlamaların herhangi birini ihlâl ederse artık RESTful olarak görülemezler. Bu sınırlamalarla uyumlu olma ve böylece REST mimarî stiliyle uyuşma, her çeşit hipermedya sisteminin performans, ölçeklenebilirlir, sadelik, değiştirilebilirlik, görünürlük, taşınabilirlik ve güvenilirlik gibi cazip fonksiyonel olmayan özelliklere sahip olmasını sağlar.[3]

Formel REST sınırlamaları şunlardır:

İstemci–sunucu

İstemcileri sunuculardan ayıran yeknesak bir arayüz. Bu, kavramların ayrılması (İng. İngilizceseparation of concerns), yani mesela istemcilerin sunucu dahilinde yapılmakta olan veri saklama ile ilgilenmedikleridir. Bunun sonucunda istemci yazılımının taşınabilirliği iyileşir. Sunucular da istemcilerde bulunan kullanıcı durumuyla ilgilenmezler. Böylece sunucular daha sade ve daha ölçeklenebilir olurlar. Sunucular ve istemciler de aralarındaki arayüz değiştirilmemesi şartıyla aynı fonksiyona sahip başkalarıyla değiştirilebilir ve farklı gruplarca birbirinden bağımsız olarak geliştirilebilirler.

Durumsuzluk

İstemci–sunucu haberleşmesi, iki talep arasında hiçbir istemci ortamının (İng. İngilizceclient context) sunucuda saklanmamasıyla daha fazla sınırlanmaktadır. Her istemciden gelen talep, hizmeti vermek için lazım olan bütün bilgileri içerir ve oturum durumu istemcide saklı kalır. Oturum durumu, sunucu tarafından veri tabanı gibi başka bir hizmete bir süre için transfer edilebilip denetlenebilir. İstemci, yeni bir duruma geçmek üzereyken istekler yollar. Bir veya birkaç istek yerine getirilmemişken istemci geçiş durumundadır (İng. İngilizceto be in transition). Her uygulama durumunun sunumu, bu istemci yeni bir durum geçişi başlatacağı zaman tekrar kullanılabilecek bağlantılar ihtiva eder.[8]

Ön belleklenebilme

World Wide Web'de istemciler ve aracılar, cevapları ön belleğe alabilirler. Bu yüzden cevaplar, doğrudan veya dolaylı olarak kendilerini ön belleklenebilir (İng. İngilizcecacheable) veya ön belleklenemez olarak tanımlamalıdırlar. Böylece başka isteklere cevaben istemcilerin bayat veya uygunsuz veri kullanımı önlenir. İyi yönetilmiş ön bellekleme (İng. İngilizcecaching) ile bâzı istemci–sunucu etkileşimlerini kısmen veya tamamen bertaraf edilir, böylece ölçeklenebilirlik ve performans daha da iyileşir.

Tabakalı sistem

İstemci, genelde sondaki sunucuya veya yol boyunca bir aracıya bağlı olup olmadığını söyleyemez. Aracı sunucular, yük dengelemesi (İng. İngilizceload balancing) ve bölüşülmüş ön bellekler (İng. İngilizceshared caches) sağlayarak sistem ölçeklenebilirliği geliştirir. Bunun yanında güvenlik ilkelerini de güçlendirirler.

Talep üzerine kod (isteğe bağlı)

Sunucular, geçici olarak istemcinin fonksiyonelliğini icra edilebilir kod yollayarak genişletebilir ya da özelleştirebilir (İng. İngilizceextend or customize code). Java appletler ve JavaScript gibi istemci tarafı betikler bunlardan sayılır. "Talep üzerine kod", REST mimarisinde isteğe bağlı olan tek sınırlamadır.

Yeknesak arayüz

Yeknesak arayüzü sınırlaması, her REST hizmeti için bir temel teşkil eder.[3] eknesak arayüz, mimariyle sadeleştirip ayırır, böylece her taraf birbirinden bağımsız olarak gelişebilir. Yeknesak arayüzünün dört sınırlaması şunlardır:

Kaynakların belirlenmesi (İng. İngilizceidentification of resources)
Başlıbaşına kaynaklar, isteklerle belirlenir. Bu, mesela Web tabanlı sistemlerde yeknesak kaynak kimliği (İng. İngilizceuniform resource identifier, URI) kullanılarak yapılır. Kaynaklar, kavramsal olarak istemcilere döndürülen sunumlarından (İng. İngilizcerepresentation) farklıdırlar. Mesela sunucu, hiçbirisi dahilî sunumu olmamasına rağmen veri tabanından gelen veriyi HTML, JSON veya XML olarak gönderebilir.
Bu temsiller yoluyla kaynakların manipülasyonu
Bir istemci temsilî kaynağı ona bağlı herhangi bir metaveriyle birlikte bulunduruyorsa bu kaynağı değiştirmek veya silmek için yeteri kadar bilgisi vardır.
Kendinden açıklayıcı mesajlar
Her mesajda kendisinin nasıl işleneceğine dair yeterli bilgi mevcuttur. Mesela hangi ayrıştırıcının (İng. İngilizceparser) çalıştırılacağı bir İnternet medya tipi (İng. İngilizceInternet media type, eskiden MIME tipi (İngilizceMIME type) olarak bilinirdi) ile belirlenmiş olabilir.[3] Uygulama durumu motoru olarak hipermedya (İng. İngilizcehypermedia as the engine of application state (HATEOAS))
İstemciler durum değişimini ancak sunucu tarafından hipermedya ile belirlenmiş dinamik eylemlerle yapabilirler (mesela hiper metinlerin içinde bulunan hiper bağlarla). Basit başlama noktalarının haricinde bir istemci, önceki temsillerle haber aldığının dışında herhangi bir kaynak için herhangi bir eylemin mevcudiyetini kabul edemez.

Kaynakça

  1. ^ "Techopedia'da REST tanımı". 19 Kasım 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Mart 2015. 
  2. ^ Roy Fielding (2000). "Architectural Styles and the Design of Network-based Software Architectures". UCU Donald Bren – School of Information & Computer Science. 19 Mart 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 19 Mart 2015. 
  3. ^ a b c d e f Fielding, Roy Thomas (2000). "Chapter 5: Representational State Transfer (REST)". Architectural Styles and the Design of Network-based Software Architectures (Ph.D.). University of California, Irvine. This chapter introduced the Representational State Transfer (REST) architectural style for distributed hypermedia systems. REST provides a set of architectural constraints that, when applied as a whole, emphasizes scalability of component interactions, generality of interfaces, independent deployment of components, and intermediary components to reduce interaction latency, enforce security, and encapsulate legacy systems. 
  4. ^ "Fielding discusses the development of the REST style". Tech.groups.yahoo.com. 1 Eylül 2015 tarihinde kaynağından arşivlendi. Erişim tarihi: 14 Eylül 2014. 
  5. ^ a b Thomas Erl, Benjamin Carlyle, Cesare Pautasso, Raj Balasubramanian (2013). "5.1". Thomas Erl (Ed.). SOA with REST. Prentice Hall. ISBN 978-0-13-701251-0. 
  6. ^ a b Fielding, Roy Thomas (2000). "Chapter 2: Network-based Application Architectures". Architectural Styles and the Design of Network-based Software Architectures (Ph.D.). University of California, Irvine. 
  7. ^ Richardson, Leonard; Ruby, Sam (2007), RESTful Web service, O'Reilly Media, ISBN 978-0-596-52926-0, 19 Şubat 2012 tarihinde kaynağından arşivlendi, erişim tarihi: 18 Ocak 2011, The main topic of this book is the web service architectures which can be considered RESTful: those which get a good score when judged on the criteria set forth in Roy Fielding's dissertation. 
  8. ^ "Fielding talks about application states". Tech.groups.yahoo.com. 21 Mayıs 2012 tarihinde kaynağından arşivlendi. Erişim tarihi: 7 Şubat 2013. 

İlgili Araştırma Makaleleri

<span class="mw-page-title-main">HTTP</span> iletişim protokolü

HTTP bir kaynaktan dağıtılan ve ortak kullanıma açık olan hiperortam bilgi sistemleri için uygulama seviyesinde bir iletişim protokolüdür. HTTP, World Wide Web için veri iletişiminin temelidir; burada köprü metni belgeleri, örneğin bir fare tıklamasıyla veya bir web tarayıcısında ekrana dokunarak kullanıcının kolayca erişebileceği diğer kaynaklara köprüler içerir.

<span class="mw-page-title-main">Sunucu (bilişim)</span> bilgisayar ağlarında, diğer ağ bileşenlerinin (kullanıcıların) erişebileceği, kullanımına ve/veya paylaşımına açık kaynakları barındıran bilgisayar birimi

Sunucu, bilişim alanında "istemci" denilen diğer program ve cihazlara çeşitli işlevler sunan bilgisayar donanımları veya yazılımlarıdır. Bu mimariye istemci-sunucu modeli denir. Sunucular, istemciler arasında veri veya kaynak paylaşımı, bir istemci için hesaplama yapma gibi çeşitli işlevleri yerine getirebilirler. Bu işlevlere genellikle "servis" veya "hizmet" denir. Tek bir sunucu çok sayıda istemciye hizmet verebilir, tek bir istemci de çok sayıda sunucudan hizmet alabilir. İstemci ve sunucu aynı cihaz üzerinde çalışabileceği gibi, istemci ağ üzerinden farklı bir cihazdaki sunucuya da bağlanabilir. Tipik sunucular arasında veritabanı sunucuları, dosya sunucuları, e-posta sunucuları, yazdırma sunucuları, web sunucuları, oyun sunucuları ve uygulama sunucuları sayılabilir.

SMTP, bir e-posta göndermek için sunucu ile istemci arasındaki iletişim şeklini belirleyen protokoldür. Farklı işletim sistemleri için geliştirilmiş e-posta protokolleri bulunmaktadır. Bu e-posta protokollerinin SMTP'ye geçit yolu (gateway) vardır. SMTP, Aktarım Temsilcisi ve Kullanıcı Temsilcisi yazılımları arasındaki iletişimi sağlar. TCP'nin üst katmanında çalışır.

Bilgi işlemde, İnternet Mesaj Erişim Protokolü (IMAP), e-posta istemcilerinin bir TCP/IP bağlantısı üzerinden bir posta sunucusundan e-posta mesajları almak için kullandığı bir İnternet standart protokolüdür. IMAP, RFC 9051 tarafından tanımlanır.

<span class="mw-page-title-main">DNS</span>

DNS, internet uzayını bölümlemeye, bölümleri adlandırmaya ve bölümler arası iletişimi organize etmeye yarayan, bilgisayar, servis, internet veya özel bir ağa bağlı herhangi bir kaynak için hiyerarşik dağıtılmış bir adlandırma sistemidir.

<span class="mw-page-title-main">Dosya aktarım iletişim kuralı</span> Bilgisayarcılık terimi

Dosya aktarım iletişim kuralı,, bir veri yığınının - ASCII, EBCDIC ve binary- bir uç aygıttan diğerine iletimi için kullanılmaktadır.

Telnet, Internet ağı üzerindeki çok kullanıcılı bir makineye uzaktaki başka bir makineden bağlanmak için geliştirilen bir TCP/IP protokolü ve bu işi yapan programlara verilen genel isimdir. Telnet iki bileşenden oluşur: (1) iki tarafın nasıl iletişim kuracağını belirleyen protokolün kendisi ve (2) hizmeti sağlayan yazılım uygulaması.Kullanıcı verileri, İletim Kontrol Protokolü (TCP) üzerinden 8 bitlik bayt yönlendirmeli bir veri bağlantısında Telnet kontrol bilgisi ile bant içi serpiştirilir. Telnet, 1969'da RFC 15 ile başlayarak geliştirildi, RFC 855'te genişletildi ve ilk İnternet standartlarından biri olan İnternet Mühendisliği Görev Gücü (IETF) İnternet Standardı STD 8 olarak standartlaştırıldı. encryption sağlayan bazı Telnet eklentileri geliştirilmiştir. Bağlanılan makineye girebilmek (login) için orada bir kullanıcı isminizin (İng:username) ve bağlantının gerçekleşebilmesi için bir telnet erişim programınızın olması gereklidir. Fakat bazı kütüphane ve herkese açık telnet bazlı web servisleri, bağlantı sırasında kullanıcı ismi (numarası) istemeyebilirler; ya da, kullanıcı isim ve parola olarak ne yazmanız gerektiği bağlandığınızda otomatik olarak karşınıza çıkar. Telnet, BBS sistemlere İnternet üzerinden erişimde günümüzde yaygın olarak kullanılmaktadır. Telnet erişim programları, günümüzdeki işletim sistemlerinin çoğunda işletim sistemi ile birlikte gelmektedir. Çok kullanıcılı işletim sistemleri genellikle kullanıcılara metin tabanlı bir arayüz sunar ve bu sistemlerde tüm işlemler klavye vasıtası ile komut isteminden gerçekleştirilir.

Ağ Dosya Sistemi, Network file system, yani ağ dosya sistemi diğer bilgisayarlardaki dosyalara erişilebilmesini sağlayan bir yerel ağ işletim sisteminin parçasıdır. Bilgisayarlarda kullanılan programların network makinalarında kullanılmasını sağlar. Sun Microsystems tarafından 1984 yılında geliştirilmiş, ağdaki bilgisayarların ortak bir dosya sistemine, yerel diskleri kadar kolay ulaşmasını sağlayan, RPC temelli dağıtık dosya sistemi yapısıdır.

<span class="mw-page-title-main">Sanal özel ağ</span> Uzaktan erişim yoluyla farklı ağlara bağlanmayı sağlayan internet teknolojisi

Sanal Özel Ağ, uzaktan erişim yoluyla farklı ağlara bağlanmayı sağlayan bir internet teknolojisidir. VPN, sanal bir ağ uzantısı oluşturarak, ağa bağlanan cihazların fiziksel olarak bağlıymış gibi veri alışverişinde bulunmasına olanak tanır. Basitçe, İnternet veya diğer açık ağlar üzerinden özel bir ağa bağlanmayı mümkün kılan bir bağlantı türüdür.

Network Address Translation (NAT), TCP/IP ağındaki bir bilgisayarın yönlendirme cihazı ile başka bir ağa çıkarken adres uzayındaki bir IP ile yeniden haritalandırma yaparak IP paket başlığındaki ağ adres bilgisini değiştirme sürecidir.

Uygulama programlama arayüzü, bir yazılımın başka bir yazılımda tanımlanmış işlevlerini kullanabilmesi için oluşturulmuş bir tanım bütünüdür. API; web uygulaması, işletim sistemi, veritabanı, donanımlar yahut yazılım kütüphanesi için kullanılabilir. Günümüzde yoğunlukla web tabanlı uygulamalarda istemci ve sunucu arasındaki iletişimi sağlayan bir sözleşme olarak kullanılmaktadır. Öyle ki istemci spesifik bir formatta veri talep eder ve her halükarda sunucudan yine belirli bir formatta cevap alır. Bu durum API'nın özel bir formu olarak WebAPI olarak da adlandırılır.

<span class="mw-page-title-main">DHCP</span>

DHCP, ağda bulunan her bir bilgisayarın IP adresi, alt ağ maskesi, varsayılan ağ geçidi ve DNS sunucuları gibi ağ bağlantısı ayarlarının otomatik olarak atamasını sağlar. Bu sayede ağ yöneticileri, ağdaki her bir bilgisayarın IP adresi ve diğer ağ bağlantısı ayarlarını elle girerek zaman kaybetmek yerine, DHCP sunucusu üzerinden bu bilgileri otomatik olarak atayarak daha verimli ve güvenilir bir ağ yönetimi yapabilirler. Bu sayede sistem yönetim işlemi de kolaylaşmış olur. Ayrıca UDP, TCP'ye dayalı herhangi bir iletişim protokolünün ve DNS, NTP gibi ağ hizmetlerinin kullanımına olanak sağlar.

<span class="mw-page-title-main">İstemci-sunucu</span>

İstemci-sunucu, istemciyi sunucudan ayıran bir ağ mimarisidir. Her bir istemci yazılımı, sunucuya ya da uygulama sunucusuna isteklerini (request) gönderir.

Bu liste tüm ülkelerde kullanılan IRC in geleneksel komutların listesidir.

<span class="mw-page-title-main">Hyper-V</span>

Hyper-V, Microsoft Hyper-V, Viridian kod adındaki ve önceleri Windows Sunucu Sanallaştırma olarak bilinen, x64 bilgisayarlar için hypervisor tabanlı bir sanallaştırma sistemidir. Birden fazla sunucu rolünü tek bir fiziksel ana makinede çalışan ayrı sanal makineler olarak birleştirerek sunucu donanımı yatırımlarını iyileştirmek için bir araç sağlar. Hyper-V ayrıca, Windows haricinde Linux gibi işletim sistemleri de dahil olmak üzere birden fazla işletim sistemini verimli bir şekilde tek bir sunucuda çalıştırmak ve 64-bit bilgi işlemin gücünden faydalanmak için de kullanılabilir.Windows Server 2008'in belirli x64 sürümleriyle birlikte Hyper-V'nin bir betası sevk edilmiş ve kesinleşmiş sürüm 26 Haziran 2008'de piyasaya çıkmıştır. Yeni çıkacak olan Windows Server 2012® Hyper-V® ile de birden fazla işletim sisteminin paralel olarak aynı sunucu üzerinde çalıştırılmasını sağlamaktadır.

<span class="mw-page-title-main">Storage area network</span>

Storage area network (SAN), Türkçe literatüründeki adı ile Depolama alan ağı; büyük ağ kullanıcılarına hizmet vermek üzere veritabanı sunucuları ile birlikte farklı tipteki veri depolama cihazlarını birbirine bağlayan ve bu cihazlar arasında veri alışverişine olanak veren özel amaçlı, yüksek hızlı bir ağdır. Bir depolama alan ağı, yönetim katmanına fiziksel bağlantılar sağlayan ve aynı zamanda bilgisayar sistemlerini, depo birimlerini ve bu birimlerin aralarındaki bağlantıları düzenleyen bir iletişim altyapısından oluşmaktadır.

Bir iletişim ve iş birliği sistemi, bireylerin, çalışma gruplarının ve kurumların kendi içlerinde ya da birbirleri ile veri, enformasyon ve bilgi alışverişi için kullandıkları bir bilgisayar tabanlı bilişim sistemidir. Veri, enformasyon ve bilgi alışverişine mesajlaşma adı verilir. Mesajlaşma iki boyutta gerçekleşmektedir: Yer ve zaman. İletişim ve iş birliği sistemleri farklı yerlerde veya aynı yerde farklı zamanlarda bulunan birey ya da grupların mesajlaşma gereksinmelerini karşılamak için kullanılmaktadır. Mesajlaşma farklı zamanlarda gönderilen iletilerle gerçekleşebileceği gibi, iletileri eşzamanlı olarak paylaşma biçimini de alabilmektedir.

Hareket işlem sistemi bir işletmede meydana gelen yapılandırılmış ve sürekli yinelenen olguları kaydetmek, izlemek, saklamak, işlemek ve yayımlamak için kullanılan bir bilgisayar tabanlı bilişim sistemidir. Bu olgulara örnek olarak arasında sipariş almak, fatura ve irsaliye hazırlamak, mal ve hizmet teslim almak ya da etmek, bordro hazırlamak gösterilebilir. Bir işletmede kullanılan kaynakların, işletme içinde ve dışındaki çıkar ve ilgi gruplarının her biri açısından anlamlı olan ve zamanla meydana gelen her bir değişimine hareket denir. Hareketler bir kurumun işleyişi sırasında meydana gelen olgulardır. Bu olgular fiziksel, parasal ya da kavramsal kaynakların özelliklerinden birinin, bir bölümünün ya da tümünün değişimini içerir. Kimi zaman bir hareket başka hareketlerin meydana gelmesine neden olur.

Diyaloguer (ingilizce) olarak da bilinen, ağ işletim sistemi, bir sunucu üzerinde çalışan ve verileri, kullanıcıları,grupları, güvenliği, uygulamaları ve ağ üzerinde koşan diğer çoğu ağ işlevlerinin yönetilmesine olanak sağlayan bir yazılımdır. Ağ işletim sistemleri, bir ağ içerisinde bulunan bilgisayarların ağ içerisindeki diğer bilgisayarlarla yazıcı paylaşımı, ortak dosya sisteminin ve veritabanının paylaşımı, uygulama paylaşımı gibi işlevleri yerine getirmek için tasarlanmıştır. En popüler olanları Novell NetWare, Linux, Windows Server 2003, Mac OS X tir.

Oyun sunucusu, çok oyunculu bir video oyunundaki olayların yetkili kaynağı olan bir sunucudur. Sunucu, bağlı istemcilerinin oyunculara gösterilmek üzere oyun dünyasının kendi doğru versiyonlarını korumalarına olanak sağlamak için dahili durumu hakkında yeterli veriyi iletir. Ayrıca her oyuncunun girdisini alır ve işlerler.