Uygulama sunucusu, Web sunucusu: Fark nedir?

23 Ağustos 2002

S: Uygulama sunucusu ile Web sunucusu arasındaki fark nedir?

A:

Bir Web sunucusu yalnızca HTTP isteklerini ele alırken, bir uygulama sunucusu herhangi bir sayıda protokol aracılığıyla uygulama programlarına iş mantığını sunar.

Her birini daha detaylı inceleyelim.

Web sunucusu

Bir Web sunucusu, HTTP protokolünü yönetir. Web sunucusu bir HTTP isteği aldığında, bir HTML sayfasını geri göndermek gibi bir HTTP yanıtıyla yanıt verir. Bir isteği işlemek için, bir Web sunucusu statik bir HTML sayfası veya görüntüsü ile yanıt verebilir, bir yönlendirme gönderebilir veya dinamik yanıt üretimini CGI komut dosyaları, JSP'ler (JavaServer Pages), servlet'ler, ASP'ler (Active Server Pages) gibi başka bir programa devredebilir. ), sunucu tarafı JavaScripts veya başka bir sunucu tarafı teknolojisi. Amaçları ne olursa olsun, bu tür sunucu tarafı programlar, bir Web tarayıcısında görüntülemek için çoğunlukla HTML biçiminde bir yanıt oluşturur.

Bir Web sunucusunun yetki verme modelinin oldukça basit olduğunu anlayın. Web sunucusuna bir istek geldiğinde, Web sunucusu isteği en iyi şekilde işleyebilen programa iletir. Web sunucusu, sunucu tarafı programın oluşturulan yanıtları yürütebileceği ve geri verebileceği bir ortam sağlamanın ötesinde herhangi bir işlevsellik sağlamaz. Sunucu tarafı programı genellikle işlem işleme, veritabanı bağlantısı ve mesajlaşma gibi işlevleri kendisi sağlar.

Bir Web sunucusunun kendisi işlemleri veya veritabanı bağlantı havuzunu desteklemeyebilirken, yük dengeleme, önbelleğe alma ve kümeleme gibi hata toleransı ve ölçeklenebilirlik için çeşitli stratejiler kullanabilir - bu özellikler çoğu zaman yanlışlıkla yalnızca uygulama sunucuları için ayrılmış özellikler olarak atanır.

Uygulama sunucusu

Uygulama sunucusuna gelince, tanımımıza göre bir uygulama sunucusu, muhtemelen HTTP dahil olmak üzere çeşitli protokoller aracılığıyla iş mantığını istemci uygulamalarına maruz bırakır. Bir Web sunucusu esas olarak bir Web tarayıcısında görüntülenmek üzere HTML göndermeyle uğraşırken, bir uygulama sunucusu, istemci uygulama programları tarafından kullanılmak üzere iş mantığına erişim sağlar. Uygulama programı, bu mantığı bir nesnede (veya prosedür dünyasında bir işlevi) bir yöntem çağırdığı gibi kullanabilir.

Bu tür uygulama sunucusu istemcileri, bir PC, bir Web sunucusu veya hatta diğer uygulama sunucuları üzerinde çalışan GUI'leri (grafik kullanıcı arayüzü) içerebilir. Bir uygulama sunucusu ile istemcisi arasında gidip gelen bilgiler, basit görüntü işaretlemesiyle sınırlı değildir. Bunun yerine, bilgi program mantığıdır. Mantık, statik HTML değil, veri ve yöntem çağrıları biçimini aldığından, müşteri açık iş mantığını istediği gibi kullanabilir.

Çoğu durumda, sunucu bu iş mantığını J2EE (Java 2 Platform, Enterprise Edition) uygulama sunucularında bulunan EJB (Enterprise JavaBean) bileşen modeli gibi bir bileşen API'si aracılığıyla ortaya çıkarır. Ayrıca, uygulama sunucusu kendi kaynaklarını yönetir. Bu tür kapı tutma görevleri arasında güvenlik, işlem işleme, kaynak havuzlama ve mesajlaşma yer alır. Bir Web sunucusu gibi, bir uygulama sunucusu da çeşitli ölçeklenebilirlik ve hata toleransı tekniklerini kullanabilir.

Bir örnek

Örnek olarak, gerçek zamanlı fiyatlandırma ve kullanılabilirlik bilgileri sağlayan bir çevrimiçi mağazayı düşünün. Büyük olasılıkla site, bir ürün seçebileceğiniz bir form sağlayacaktır. Sorgunuzu gönderdiğinizde site bir arama yapar ve sonuçları bir HTML sayfasına gömülü olarak döndürür. Site bu işlevi çeşitli şekillerde uygulayabilir. Size bir uygulama sunucusu kullanmayan ve kullanan başka bir senaryo göstereceğim. Bu senaryoların nasıl farklı olduğunu görmek, uygulama sunucusunun işlevini görmenize yardımcı olacaktır.

Senaryo 1: Uygulama sunucusu olmayan web sunucusu

İlk senaryoda, bir Web sunucusu tek başına çevrimiçi mağazanın işlevselliğini sağlar. Web sunucusu isteğinizi alır ve ardından isteği yerine getirebilecek bir sunucu tarafındaki programa iletir. Sunucu tarafı programı, bir veritabanından veya düz bir dosyadan fiyatlandırma bilgilerini arar. Bir kez alındığında, sunucu tarafı programı bilgileri HTML yanıtını formüle etmek için kullanır, ardından Web sunucusu bunu Web tarayıcınıza geri gönderir.

Özetlemek gerekirse, bir Web sunucusu HTTP isteklerini HTML sayfalarıyla yanıtlayarak işler.

Senaryo 2: Uygulama sunucusuna sahip web sunucusu

Senaryo 2, Web sunucusunun yanıt oluşturmayı bir komut dosyasına vermeye devam etmesi açısından Senaryo 1'e benzer. Ancak, fiyatlandırma araması için iş mantığını artık bir uygulama sunucusuna koyabilirsiniz. Bu değişiklikle, komut dosyası verilere nasıl bakılacağını ve bir yanıt formüle edileceğini bilmek yerine, komut dosyası uygulama sunucusunun arama servisini çağırabilir. Betik, daha sonra komut dosyası HTML yanıtını oluşturduğunda hizmetin sonucunu kullanabilir.

Bu senaryoda, uygulama sunucusu, bir ürünün fiyatlandırma bilgilerini aramak için iş mantığına hizmet eder. Bu işlevsellik, görüntüleme veya müşterinin bilgileri nasıl kullanması gerektiği hakkında hiçbir şey söylemiyor. Bunun yerine, istemci ve uygulama sunucusu verileri ileri geri gönderir. Bir istemci uygulama sunucusunun arama hizmetini aradığında, hizmet sadece bilgiyi arar ve istemciye geri gönderir.

Fiyatlandırma mantığını HTML yanıtı üreten koddan ayırarak, fiyatlandırma mantığı uygulamalar arasında çok daha fazla yeniden kullanılabilir hale gelir. Yazar kasa gibi ikinci bir müşteri, bir katip bir müşteriyi kontrol ederken aynı hizmeti arayabilir. Buna karşılık, Senaryo 1'de fiyatlandırma arama hizmeti, bilgiler HTML sayfasına gömülü olduğundan yeniden kullanılamaz. Özetlemek gerekirse, Senaryo 2'nin modelinde, Web sunucusu HTTP isteklerini bir HTML sayfasıyla yanıtlarken, uygulama sunucusu fiyatlandırma ve kullanılabilirlik isteklerini işleyerek uygulama mantığına hizmet eder.

Uyarılar

Son zamanlarda XML Web hizmetleri, uygulama sunucuları ile Web sunucuları arasındaki sınırı ortadan kaldırmıştır. Bir Web sunucusuna bir XML yükünü ileterek, Web sunucusu artık verileri işleyebilir ve uygulama sunucularının geçmişte yaptığı gibi yanıt verebilir.

Ek olarak, çoğu uygulama sunucusu aynı zamanda bir Web sunucusu içerir, yani bir Web sunucusunu bir uygulama sunucusunun bir alt kümesi olarak kabul edebilirsiniz. Uygulama sunucuları Web sunucusu işlevselliği içerse de, geliştiriciler bu kapasitede uygulama sunucularını nadiren kullanır. Bunun yerine, ihtiyaç duyulduğunda, genellikle uygulama sunucularıyla birlikte bağımsız Web sunucularını dağıtırlar. Böyle bir işlevsellik ayrımı, performansa (basit Web istekleri uygulama sunucusu performansını etkilemez), dağıtım yapılandırmasına (adanmış Web sunucuları, kümeleme vb.) Yardımcı olur ve türünün en iyisi ürün seçimine olanak tanır.

Tony Sintes, bağımsız bir danışman ve farklı kurumsal sistemler ve eğitim arasında köprü kurma konusunda uzmanlaşmış bir danışmanlık firması olan First Class Consulting'in kurucusudur. First Class Consulting dışında, Tony aktif bir serbest yazar ve aynı zamanda Sams Teach Yourself Object-Oriented Programming in 21 Days (Sams, 2001; ISBN: 0672321092) kitabının yazarıdır.

Bu konu hakkında daha fazla bilgi edinin

  • Uygulama sunucuları hakkında daha fazla makale için JavaWorld'ün Konu Dizini'nin Java Uygulama Sunucuları bölümüne göz atın.

    //www.javaworld.com/channel_content/jw-appserv-index.shtml

  • Daha fazla istemek? Tam Soru-Cevap kataloğu için Java Soru-Cevap dizini sayfasına bakın

    //www.javaworld.com/columns/jw-qna-index.shtml

  • Sektördeki en iyi kafasında bazı 100'den fazla anlayışlı Java ipuçları için ziyaret JavaWorld' ın Java İpuçları indeks sayfası

    //www.javaworld.com/columns/jw-tips-index.shtml

  • Kurumsal Java tartışmamızda uygulama sunucuları ve Web sunucuları hakkında daha fazla bilgi edinin

    //forums.idg.net/[email protected]@.ee6b80a

  • JavaWorld'ün ücretsiz haftalık Kurumsal Java e-posta bültenine kaydolun

    //www.javaworld.com/subscribe

  • .Net adresindeki kardeş yayınlarımızdan BT ile ilgili çok sayıda makale bulacaksınız.

Bu hikaye, "Uygulama sunucusu, Web sunucusu: Fark nedir?" orijinal olarak JavaWorld tarafından yayınlandı.