Web Server – App Server Farkı

  • Temel anlamda baktığın zaman ikisi de aynı işi yapar gibi görünür.
  • Daha çok java camiasında kullanılan bir kavramdır. En azından PHP ya da .net üzerinde öyle bir kavram görmedim.
  • Web server daha basit bir yapıda olup, çok detaylı destekler vermez. Mesela JEE kütüphaneleri kullanmak istediğin zaman bir web server (tomcat, jetty, vb.) sana java mail sağlamaz, ya da JSF direk vermez. Bunun yerine senin gerekli kütüphaneleri toplayıp kendi uygulamanın içinde sağlaman gerekir. Application server (uygulama sunucusu) bunları sağlar. Bu şekilde uygulamanın boyutu küçülür. Gerçi bence web server da aynı şekilde kullanılabilir.
  • Web server daha çok HTTP protokolü üzerinden çalışır, uygulama sunucusu ise genelde HTTP üzerinden çalışmasına rağmen başka protokoller de destekleyebilir, EJB veya RPC gibi konuları destekleyebilir (EJB den emin değilim ama RPC yi web server üzerinde de kullanabilirsin, sonuçta web servisler var jaxws, cxf vb.)
  • Bazı kaynaklarda uygulama sunucusu connection pooling destekler diyor ama, bildiğim kadarıyla tomcat’de destekliyor. Burada şahsen bir fark göremedim.
  • Uygulama sunucuların şimdiye kadar gördüğüm en güzel özellikleri; ekranları üzerinden verdikleri destekler. Mesela JNDI tanımı yapacaksan, connection kapat/aç işlemlerini yapacaksan, açık bağlantıları takip edeceksen, uygulama üzerinde hafıza analizleri yapacaksan uygulama sunucuları kullanmak daha rahat oluyor.
  • Uygulama sunucularda yükü dağıtmak için çok gelişmiş özellikler olabiliyor, bkz Web application sphere. Ama fiyatı dolayısıyla kullanmak istemeyebilirsin 🙂

Uzun lafın kısası;

Benim yorumum web sunucu uygulama sunucusunun alt kümesi oluyor. Fazladan sağladığı özellikler olmasına rağmen bunlar basit uygulamalarda çok önemli olmayabilir. Fiyat/performans eğrisinde bakarsan java dünyasında büyük kuruluşlar -örneğin bankalar- uygulama sunucu kullanırken, geriye kalan (Yani java dünyasının %80’i civarı) tomcat kullanıyor.

 

 

Web Server (Apache , ISS, nGix)

HTTP requestleriyle ilgilenir. Bir client’tan gelen requesti karşılar ve hazırlanan response’u client’a yollar. Web Server Request’i işlerken HTML sayfası, resim, requesti başka bir yere iletmek veya dinamik içerik üretebilen JSP, Servlet, ASP gibi teknolojileri kullanabilir. Amaçları ve ürettikleri response ne olursa olsun Web Serverlar Request işleyip Response yaratmakla sorumludur.

Web Server’ların çalışma mantıkları basittir. Bir Web Server kendine iletilen requesti kendi containerında bulunan en ve requesti en iyi işleyebilecek programa gönderir. Web Serverları bunun ötesinde kendi içlerinde herhangi bir fonksiyonalite sunmazlar. Server-side programlar ise database işlemleri, mesajlaşma ve transaction işleme gibi özelliklere sahip olabilir.

Application Server(JBOSS, MONO)

Application Serverlar ise HTTP protocolünü işleme dışında client’e bir iş mantığı(Bussiness Logic) sunarlar. Client bu iş mantığını bir class’ın methodunu çağırarak kullanabilir.

Client ile Application arasında bulunan bilgi iletişi sadece HTTP protokolüne ve Markup Language’lere bağlı değildir. Kullanıcıya geri iletilen veri sadece HTML türünde olmadığı için kullanıcı bir GUI ile bağlandığı Application Server’dan istediği bilgiyi çekebilir.

Bir çok durumda Application Server’lar bilgiyi clienta iletirken Component API kullanırlar. Facebook, Twitter, GitHub gibi bir çok internet sitesinin kendilerine özel API’leri vardır. Bu API’ler sayesinde erişebildiğimiz iş mantıklarından gerekli bilgileri çekere kendimize masaüstü veya ticari uygulamalar yazabiliriz.

Uzun lafın kısası; Web Server sadece HTTP tipi requestlerin alıp işlenip, response inşa ettinten sonra bunu client’a iletmek ile sorumlu iken Application Server bunun yanında kullanıcıya Session Management, Transaction Management, E-mail Service gibi bir çok özellik sunar. Web Server’dan sadece response alınabilirken Application Serverlardan Component API’ler sayesinde bir çok bilgi çekilebilir.

 

 

J2EE Application Server genel olarak şunları içermelidir :

  • EAR files
  • Java Servlets
  • JavaServer Pages or JavaServer Faces
  • Enterprise JavaBeans (EJB)
  • Java Authentication and Authorization Service (JAAS)
  • J2EE Connector Architecture
  • JavaBeans Activation Framework (JAF)
  • JavaMail
  • Java Message Service (JMS)
  • Java Persistence API (JPA)
  • Java Transaction API (JTA)
  • The Java Management Extensions (JMX) API
  • Java API for XML Processing (JAXP)
  • The Java API for XML-based RPC (JAX-RPC)
  • The Java Architecture for XML Binding (JAXB)
  • The SOAP with Attachments API for Java (SAAJ)
  • Java Database Connectivity (JDBC) framework
  • WAR files
  • Java Servlets
  • JavaServer Faces or JavaServer Pages
  • Java Database Connectivity (JDBC) framework

 

Bir cevap yazın

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