Spring Web

Java Spring, Spring Boot, Spring Framework

Spring Web

Spring Framework, web ile etkileşimli uygulamalar ve servisler yazmamızı kolaylaştırmıştır. Spring’te web desteği adında anlaşılabileceği gize “Spring Web” modülü ile sağlanmıştır. Basitçe, web modülü veya Spring Web, web isteklerini işlemek (handle) için kullanılan için bir frameworktür. Bu web isteklerini işlemek için iki yöntem bulunmaktadır. Birincisi Spring Web MVC, ikincisi ise Spring Webflux. Şimdi bunların detayına bakalım.

Spring Web MVC

Spring Web MVC’yi anlamak için öncelikle Servlet’in ne olduğunu anlamamız gerekiyor. Java dili içerisinde yerleşik olarak web ile etkileşime girmek çok basit bir destek sunan Servlet API’ı bizlere sunmuştur.

Basitçe tanımlarsak Servlet, gelen web isteklerini (request) alıp, bu isteğe bağlı bir cevap (response) oluşturan bir nesnelerdir. Servlet ile bu işlemin nasıl olduğuna biraz daha yakından bakalım.

Bir web sunucusuna istek yaptığımızda ilk olarak servlet api tarafından karşılanacaktır. Buradan geçtikten sonra uygulamanın iş kuralına göre bir takım işlemler yapılacaktır. (Businnes logic). Burada işlemler yapıldıktan sonra bir takım sonuçlar elde edilecek ve bu sonuçlar tekrardan servlet api’a aktarılacak ardından servlet api ilk yapılan isteğe (request) cevap (response) üretmiş olacaktır.

Servletlet son derece iyidir fakat kullanmak istediğimizde bir takım zorluklar bizi bekliyor olacaktır. Servletler düşük seviye bir apidır, kullanımları zordur ve üretkenlik düşüktür. Burada uygulama geliştirmek ilk etapta kolay görünebilir ama uygun tasarım ilkelerinden uzak olacağı için kodunuz zamanla karışacaktır.

Şimdi aynı durumu Spring Web MVC için inceleyelim. Yukarıdaki ile aynı şekilde Web sunucusuna bir istek yaptığımızı düşünelim. Web sunucu isteği yuklarıda olduğu gibi yine servlet api’a gönderecek fakatsonra buradan direk olarak businness logic’e geçmek yerine Spring Web MVC katmanına düşecektir. Buradan sonra Businnes logic çalışacak, ürettiği çıktıyı Spring web mvc’ye aktaracaktır o da aynı şekilde servlet api’a oradan da web sunucusundan response olarak çıkacaktır.

Spring Web MVC’nin yüksek seviye bir api sağlar, kullanı kolaydır ve üretkenliği kolaydır. Burada bahsettiğim API bize uygun tasarım prensiblerini kullanma imkanı sağlar. Uygun tasarım prensibimden kastım burada MVC olacaktır. MVC, model-view-controller’ı ifade eder.  MVC’nin detaylarına burada girmeyeceğim.

Spring Webflux

Spring Webflux, web isteklerini işlemek (handle) için kullanılan , Spring Framework içerisinde gelen bir diğer yoldur. Webflux’ı anlamak için öncelikle Reactive Programlamayı anlamamız gerekiyor. Reactive Programlama, veri akışları (data streams) ve  bu akış üzerindeki  veri değişimlerine odaklanan bir programlama paradigmasıdır.

Web istekleri asenkron olarak yürütülür ve engellenmez veya beklemezler ve bu da daha iyi kaynak kullanımıyla sonuçlanır. Daha iyi anlamak için Gelenesel yöntem veya Reactive olmayan (non-reactive) yöntemin nasıl çalıştığına bir bakalım.

Geleneksel yöntemde istek yapılır, istek cevap alana kadar işlem kilitlenir ve başka kimse istekte bulunamaz.  Gerçek hayattan bir örnek verirsek, bankamatiklerde kuyruk mesela önünüzdeki kişi işlemni bitirmeden bankamatik size cevap veremez.

Reactive yöntemde ise istekler asenkron olarak yürütülür. Yani bir istek yapıldığında o isteğin bitmesini beklemeden başka bir istek daha yapılabilir. Şöyle düşünün bir istek yaparsınız sizin isteğinize cevap gelemden diğer isteklerde alınabilir. Bu işlem tıpkı fast-food restorantlarında olduğu gibidir. Siz şiparişinizi veririsiniz, sizin siparişinizi gelmeden de başkaları sipariş verebilir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir