Uygulama sunucusu ile web sunucusu arasındaki fark nedir?


Yanıtlar:


620

Çoğu zaman bu terimler Web Sunucusu ve Uygulama sunucusu birbirinin yerine kullanılır.

Web Sunucusu ve Uygulama Sunucusu'nun özelliklerindeki bazı önemli farklar şunlardır:

  • Web Sunucusu HTTP İçeriği sunmak üzere tasarlanmıştır. App Server ayrıca HTTP İçeriği sunabilir, ancak yalnızca HTTP ile sınırlı değildir. RMI / RPC gibi diğer protokol desteği sağlanabilir
  • Web Sunucusu çoğunlukla statik içerik sunmak üzere tasarlanmıştır, ancak çoğu Web Sunucusunun Perl, PHP, ASP, JSP vb. Gibi betik dillerini desteklemek için eklentileri vardır.
  • Uygulama sunucularının çoğunun ayrılmaz bir parçası olarak Web Sunucusu vardır, bu da App Server'ın yapabildiği her şeyi yapabileceği anlamına gelir. Ayrıca App Server, Bağlantı Havuzu Oluşturma, Nesne Havuzu Oluşturma, İşlem Desteği, Mesajlaşma hizmetleri vb. Gibi Uygulama düzeyinde hizmetleri destekleyecek bileşenlere ve özelliklere sahiptir.
  • Web sunucuları statik içerik için ve dinamik içerik için uygulama sunucuları için çok uygun olduğundan, üretim ortamlarının çoğunda uygulama sunucusuna ters proxy işlevi gören web sunucusu bulunur. Bu, bir sayfa isteğine hizmet verirken, statik içeriklerin (resimler / Statik HTML gibi) isteği yorumlayan web sunucusu tarafından sunulduğu anlamına gelir. Bir çeşit filtreleme tekniği (çoğunlukla istenen kaynağın genişletilmesi) kullanılarak web sunucusu dinamik içerik isteğini tanımlar ve şeffaf bir şekilde uygulama sunucusuna iletir

Bu yapılandırmaya örnek olarak Apache Tomcat HTTP Sunucusu ve Oracle (eski adıyla BEA) WebLogic Sunucusu verilebilir. Apache Tomcat HTTP Sunucusu Web Sunucusu ve Oracle WebLogic Uygulama Sunucusu'dur.

Bazı durumlarda, sunucular IIS ve .NET Çalışma Zamanı gibi sıkıca tümleşiktir. IIS bir web sunucusudur. .NET çalışma zamanı ortamıyla donatıldığında, IIS uygulama hizmetleri sağlayabilir.


18
JBoss (şimdi WildFly) de Uygulama sunucusunun ünlü bir örneğidir: D
KNU

4
Güzel bir açıklama, web sunucusu yerine uygulama sunucusunu kullanabildiğimiz için, hem tek bir uygulama için hem de web sunucusu ve uygulama sunucusu bulundurmanın avantajları nelerdir? Ve performans akıllıca en iyi seçenek nedir?
Lalinda Sampath

33
"Apache Tomcat HTTP Sunucusu Web Sunucusu ve Oracle WebLogic Uygulama Sunucusu." Her şeyden önce, Apache Tomcat ve Apache HTTP sunucusu 2 farklı üründür. Ve bu gerçekten doğru bir ifade değil. Apache Tomcat bir uygulama sunucusudur. Elbette, web sayfalarını da sunabilir, ancak Java'yı dağıtmak için bir uygulama sunucusudur. Ben çok "web sunucusu" terimini gevşek kullanmak farkındayız. Ama sadece insanları karıştırıyor.
ironarm

18
Apache Tomcat bir web sunucusu değil, Java sunucularını çalıştıran bir uygulama sunucusudur. Apache HTTP sunucusu bir web sunucusudur. Apache Tomcat HTTP sunucusu adı verilen bir sunucu yok.
Abhishek Pathak

3
-1, Apache Tomcat ve Apache HTTPD'yi karıştırmak için. stackoverflow.com/questions/30632/…
Bacon Bits

154

Bu, farkı, benzerliği ve her ikisinin birlikte nasıl çalışabileceğini ve tümünün nasıl anlaşılabileceğini anlamak için bazı senaryolarla ayrıntılı bir cevaptır.

Uygulama Sunucusu , bazen bir web sunucusuyla karıştırılan bir terimdir . Bir web sunucusu çoğunlukla HTTP protokollerini işlerken , uygulama sunucusu HTTP ile sınırlı olmamakla birlikte birkaç farklı protokolle ilgilenir .

Web sunucusunun ana işi site içeriğini görüntülemek ve uygulama sunucusu mantık , kullanıcı ve görüntülenen içerik arasındaki etkileşimden sorumludur . Uygulama sunucusu, birinin görüntülediği ve diğerinin etkileşimde bulunduğu web sunucusuyla birlikte çalışıyor .

Sunucu ve istemcisi arasında gidip gelen bilgiler basit ekran işaretlemesi ile sınırlı değildir, ikisi arasında etkileşim ile sınırlıdır.

Çoğu durumda, sunucu bu etkileşimi J2EE (Java 2 Platformu) , EJB (Enterprise JavaBean) ve diğer farklı uygulama yazılım modelleri gibi bir bileşen API'si aracılığıyla oluşturur .

resim açıklamasını buraya girin

Bir örnek:

Bir uygulama sunucusunun web sunucusuyla çalıştığı senaryolar ile uygulama sunucusunun çevrimiçi olmayan bir mağazadan geldiği senaryo arasındaki farkı anlamanın en iyi yolu.

Senaryo 1: Uygulama sunucusu olmayan web sunucusu

yalnızca web sunucusu olan ve uygulama sunucusu olmayan bir çevrimiçi mağazanız var. Site, bir ürün seçebileceğiniz bir ekran sunacaktır. Bir sorgu gönderdiğinizde, site bir arama gerçekleştirir ve istemcisine bir HTML sonucu döndürür. Web sunucusu sorgunuzu doğrudan veritabanı sunucusuna gönderir (sabırlı olun, bunu bir sonraki külçemizde açıklayacağım) ve bir yanıt bekler. Web sunucusu alındıktan sonra yanıtı bir HTML dosyasına formüle eder ve web tarayıcınıza gönderir. Sunucu ve veritabanı sunucusu arasındaki bu ileri ve geri iletişim her sorgu çalıştırıldığında gerçekleşir.

Senaryo 2: Uygulama sunuculu web sunucusu

çalıştırmak istediğiniz sorgu daha önce yapılmışsa ve o zamandan beri hiçbir veri değişmemişse, sunucu, isteği veritabanı sunucusuna göndermek zorunda kalmadan sonuçları oluşturur. Bu, ikinci bir istemcinin veritabanı sunucusuna başka bir yinelenen sorgu göndermeden aynı bilgilere erişebildiği ve gerçek zamanlı, güvenilir bilgiler alabildiği gerçek zamanlı bir sorguya olanak tanır. Sunucu, temel olarak veritabanı sunucusu ile web sunucusu arasında bir aracı görevi görür. Bu, ilk senaryoda çekilen bilgilerin yeniden kullanılabilir olmasını sağlar, çünkü bu bilgi belirli ve "özelleştirilmiş" bir HTML sayfasına gömülü olduğundan, bu yeniden kullanılabilir bir işlem değildir. İkinci bir müşterinin bilgiyi tekrar istemesi ve istenen bilgilerle birlikte HTML gömülü bir sayfa alması gerekir.

Bu tür çeşitli karmaşık görevleri desteklemek için, bu sunucunun gerçek zamanlı olarak çektiği tüm verileri işlemek için yerleşik bir fazlalık, büyük işlem gücü ve yüksek miktarda RAM'e sahip olması gerekir.

Bu yardımcı olur umarım.


10
Bu, web uygulamaları için bile doğru / kafa karıştırıcı değildir (yani, uygulama sunucusu terimi hiçbir web uygulaması için geçerli değildir). Yalnızca web dikkate alındığında: Web sunucusu, web isteklerini (http) işlemek için yazılım (apache, nginx) içerir. Uygulama sunucusu uygulamayı içerir / ortaya çıkarır (örn. Php kodu). Aynı makine olabilirler, olmayabilir - örneğin, kendisinde olmayan farklı bir makinede (uygulama sunucusu) php-fpm'ye istek gönderen bir makinede (web sunucusu) nginx olması normal kabul edilir http access (sadece port php-fpm için açığa çıkar).
AD7six

@ AD7six Bir Web sunucusu yalnızca HTTP isteklerini, bir uygulama sunucusu da iş programlarını HTTP dahil olmak üzere çok sayıda protokol aracılığıyla uygulama programlarına işler.
Durai Amuthan.H

Demek istediğim uygulama sunucusu var olabilir o hiçbir şekilde bir gereklilik olduğunu, http istekleri işlemek. the application server deals with several different protocols, including, but not limited, to HTTP<- Bu kesinlikle http isteklerini işlediğini söylüyor - bu doğru değil.
AD7six

6
Verilen örnekleri tekrar okuduktan sonra, burada gerçek bir netlik görmüyorum - açıklamalar çoğunlukla önbellekleme ile ilgilidir. Açık olması gereken şey, bir web sunucusunun yazılım, bir uygulamanın yazılım olmasıdır. aynı makineye yerleştirilmişlerse, makineden istediğiniz gibi bahsedilebilir. Farklı makinelerdeyse, web sunucusunu web sunucusu olarak çalıştırana ve uygulamayı uygulama sunucusu olarak çalıştırana başvurmak normaldir . Normalde işleri yük ve yük dengelemesine göre ayırırdınız. Genel olarak bu cevabın yararlı bir şey eklemediğini düşünüyorum.
AD7six

@ AD7six Cevabım diğer cevapları tamamlamak anlamına geliyor, yani diğer cevaplar zaten bunun sadece bir uzantısı olduğunu sorduğunuz anlamına geliyor.
Durai Amuthan.H

136

Her iki terim çok genel, biri diğerini içeren ve bazı durumlarda tam tersi.

  • Web sunucusu : http protokolü kullanarak web'e içerik sunar.

  • Uygulama sunucusu : iş mantığını ve süreçlerini barındırır ve sunar.

Ana nokta, uygulama sunucusu ile sınırlı değilken, web sunucusu http protokolü yoluyla her şeyi açığa olduğunu düşünüyorum.

Bununla birlikte, birçok senaryoda, web sunucusunun uygulama sunucusunun ön ucunu oluşturmak için kullanıldığını göreceksiniz, yani, kullanıcının bulunan iş kurallarıyla etkileşime girmesini sağlayan bir dizi web sayfası ortaya koymaktadır uygulama sunucusu.


66

Web sunucusu

Çalıştırın python -m 'SimpleHTTPServer've http: // localhost: 8080 adresine gidin . Gördüğünüz şey, işlerinde bir web sunucusudur. Sunucu, dosyaları bilgisayarınızda depolanan HTTP üzerinden sunar. Kilit nokta, tüm bunların HTTP protokolünün üstünde yapılmasıdır. Örneğin, aynı şeyi yapan (saklanan dosyaları sunan) ancak farklı bir protokolün üstünde FTP sunucuları da vardır.

Uygulama sunucusu

Aşağıdaki gibi küçük bir uygulamamız olduğunu varsayalım (Flask'tan snippet ).

@app.route('/')
def homepage():
    return '<html>My homepage</html>'

@app.route('/about')
def about():
    return '<html>My name is John</html>'

Küçük bir örnek programı URL'yi eşler /işlevine homepage()ve /aboutişleve about().

Bu kodu çalıştırmak için bir uygulama sunucusuna (örn. Gunicorn) ihtiyacımız var - bir istemciden gelen istekleri dinleyebilen ve kodumuzu kullanarak bir şeyi dinamik olarak döndüren bir program veya modül. Örnekte, çok kötü bir HTML döndürüyoruz.

Diğer insanların konuştuğu iş mantığı nedir? Bir URL özellikle kod tabanımızda bir yere eşlendiğinden, programımızın nasıl çalıştığı hakkında varsayımsal olarak bazı mantık gösteriyoruz.


kapakları yenilenmesi

web sunucusu - bir yerde saklanan dosyaları sunar (çoğunlukla .css, .html, .js). Genel web sunucuları Apache, Nginx ve hatta Python'un SimpleHTTPServer'ıdır.

uygulama sunucusu - anında oluşturulan dosyaları sunar. Temelde çoğu web sunucusunun bir çeşit eklentisi vardır, hatta bunu yapmak için yerleşik işlevlerle birlikte gelir. Gunicorn (Python), Unicorn (Ruby), uWSGI (Python) gibi katı uygulama sunucuları da vardır.

Uygulama sunucusunun koduyla bir web sunucusu oluşturabileceğinize dikkat edin. Bu, bazı durumlarda bilgisayarınızda çalışan bir milyarlarca farklı sunucunun olmasını istemediğiniz geliştirme sırasında yapılır.


Bu en iyi ve en kısa cevaptır. Bir web sunucusunun bir uygulama sunucusunun alt kümesi olarak kabul edilip edilemeyeceğini merak ediyordum. Şu anda bir web sunucusu bir alıcı yöntemi gibi ve bir uygulama sunucusu bir fabrika yöntemi (URL bir yapıcı argüman: D olduğu gibi) olarak düşünüyorum

8
Uff .. Son olarak, bir Python perspektifi verdiğiniz için teşekkürler. Bu konuya göre agnostik bir dil göründüğü gibi değil. Daha önce hiç EJB kullanmayan biri Java yönelimli cevapları net bir şekilde anlamayacaktır.
Vikas

Teşekkürler. "Bu kodu çalıştırmak için bir uygulama sunucusuna ihtiyacımız var", flask programını çalıştırmak için uygulama sunucusunun ne olduğunu belirtebilir misiniz?
Tim

Bu neredeyse mükemmel bir cevap
Ramy Farid

65

Rutesh ve jmservera'nın da belirttiği gibi, ayrım bulanık. Tarihsel olarak farklıydılar, ancak 90'lı yıllar boyunca bu iki farklı kategori özellikleri birleştirdi ve etkili bir şekilde birleştirildi. Bu noktada, "App Server" ürün kategorisinin "web sunucusu" kategorisinin katı bir üst kümesi olduğunu hayal etmek en iyisidir.

Bazı tarih. Mosaic tarayıcısının ve köprülü içeriğin ilk günlerinde, HTTP üzerinden web sayfası içeriği ve görüntüleri sunan "web sunucusu" adı verilen bir şey gelişti. İçeriğin çoğu statikti ve HTTP 1.0 protokolü dosyaları dolaşmanın bir yoluydu. "Web sunucusu" kategorisi, CGI özelliğini içerecek şekilde hızla gelişti - dinamik içerik oluşturmak için her web isteğinde etkili bir şekilde işlem başlatır. HTTP de olgunlaştı ve ürünler önbellekleme, güvenlik ve yönetim özellikleriyle daha sofistike hale geldi. Teknoloji olgunlaştıkça, Kiva ve NetDynamics'ten şirkete özel Java tabanlı sunucu tarafı teknolojisine sahibiz ve sonunda JSP ile birleşti. Microsoft, 1996 yılında Windows NT 4.0'a ASP'yi ekledi. Statik web sunucusu bazı yeni hileler öğrendi, böylece etkili bir "

Paralel bir kategoride, uygulama sunucusu gelişti ve uzun süredir var oldu. şirketler, felsefi olarak Mainframe uygulama yönetimi ve IMS ve CICS gibi izleme ortamlarından türetilen Tuxedo, TopEnd, Encina gibi Unix ürünleri üretti. Microsoft'un teklifi daha sonra COM + 'ya dönüşen Microsoft Transaction Server (MTS) idi. Bu ürünlerin çoğu, "şişman" istemcileri sunuculara bağlamak için "kapalı" ürüne özel iletişim protokolleri belirtmiştir. (Encina için, iletişim protokolü DCE RPC idi; MTS için DCOM idi; vb.) 1995/96'da, bu geleneksel uygulama sunucusu ürünleri ilk olarak ağ geçitleri aracılığıyla temel HTTP iletişim yeteneğini gömmeye başladı. Ve çizgiler bulanıklaşmaya başladı.

Web sunucuları, daha yüksek yükleri, daha fazla eşzamanlılığı ve daha iyi özellikleri ele alma konusunda giderek daha olgunlaştı. Uygulama sunucuları gittikçe daha fazla HTTP tabanlı iletişim yeteneği sağladı.

Bu noktada "uygulama sunucusu" ile "web sunucusu" arasındaki çizgi bulanıktır. Ancak insanlar terimleri vurgulamak için farklı şekilde kullanmaya devam ediyorlar. Birisi "web sunucusu" dediğinde, genellikle HTTP merkezli, web kullanıcı arayüzü odaklı uygulamaları düşünürsünüz. Birisi "Uygulama sunucusu" dediğinde "daha ağır yükler, kurumsal özellikler, işlemler ve kuyruk, çok kanallı iletişim (HTTP + daha fazlası)" diyebilirsiniz.

  • IBM'in "uygulama sunucusu" olan WebSphere'in kendi paketlenmiş web sunucusu vardır.
  • WebLogic, başka bir geleneksel uygulama sunucusu gibi.
  • Microsoft'un Uygulama Sunucusu olan Windows (Dosya ve Yazdırma Sunucusu, Medya Sunucusu vb. Olmasının yanı sıra) IIS'yi paketler.

Çok net bir cevap. Ancak, bir web sunucusunun uygulama sunucusu olarak çalışmasına izin veren 'yeni numaralar' hakkında biraz daha ayrıntı verebilir misiniz?
Quazi Irfan

3
"Yeni numaralar", sunucu tarafı mantığını çalıştırmayı ifade eder. ASP veya diğerleri gibi komut dosyası mantığı. Orijinal "web sunucuları" dosya sisteminden yeni statik içerik döndürdü. Bundan çok yol aldık, şimdi.
Cheeso

36

Daha önce belirtildiği gibi, web sunucuları HTTP dilekçelerini, uygulama sunucuları ise dağıtılmış bileşenler için dilekçeleri ele alır. Yani, belki de farkı anlamanın en kolay yolu, iki ürünü sundukları programlama ortamıyla karşılaştırmaktır.

Web Sunucusu -> Programlama Ortamı

IIS: ASP (.NET)

Tomcat: Servlet

İskele: Servlet

Apache: Php, CGI

Uygulama Sunucuları -> Programlama Ortamı

MTS: COM +

WAS: EJB

JBoss: EJB

WebLogic Uygulama Sunucusu: EJB

En önemli fark, uygulama sunucularının , uzaktan çağırma ve Java dünyasında EJB veya Microsoft platformunda COM + gibi dağıtılmış işlemler gibi özellikler sağlayan bazı dağıtılmış bileşen teknolojisini desteklemesidir . Http sunucusu genellikle JSP ve Apache durumunda Java veya PHP ve CGI için birçok başka program da dahil olmak üzere Microsoft veya Servlet tabanlı ASP (.NET) gibi genellikle komut dosyası oluşturma gibi daha basit programlama ortamlarını destekler.

Uygulama sunucuları alanında bulunan yük dengeleme, kümeleme, oturum yük devretme, bağlantı havuzu oluşturma gibi diğer özellikler, web sunucularında da doğrudan veya bazı üçüncü taraf ürünleri aracılığıyla kullanılabilir hale gelmektedir.

Son olarak, resmin, uygulama sunucularının amacını daha basit bir şekilde ve uygulama sunucusu altyapısı olmadan destekleyen Spring Framework gibi "hafif kaplar" ile daha da bozulduğunu belirtmek gerekir. Ayrıca, uygulamalardaki dağıtım boyutu dağıtılmış bileşenden hizmet paradigmasına ve SOA mimarisine doğru ilerlediğinden, geleneksel uygulama sunucuları için gittikçe daha az yer kalmaktadır.


Listelediğiniz uygulama sunucularından herhangi biri, apache http gibi bir http web sunucusu olarak kullanılabilir mi?
LearningMath

22

Web sunucusu ve uygulama sunucusu arasındaki temel fark, web sunucusunun HTML ve CSS gibi statik sayfalar sunmasıdır; Uygulama Sunucusu ise JSP, Servlet veya EJB gibi sunucu tarafı kodlarını çalıştırarak dinamik içerik oluşturmaktan sorumludur.

Hangisini kullanmalıyım?
Web ve uygulama sunucusu ile web kapsayıcıları arasındaki farkı öğrendikten sonra, bunları ne zaman kullanacağınızı kolayca anlayabilirsiniz. web serverStatik web sayfaları sunuyorsanız, benzer bir Apache HTTPD'ye ihtiyacınız vardır. Dinamik içerik oluşturmak için yalnızca JSP ve Servlet içeren bir Java uygulamanız varsa, web containersTomcat veya Jetty gibi bir şeye ihtiyacınız vardır . İken, Java EE EJB kullanarak uygulamayı, dağıtık işlem, mesajlaşma ve diğer fantezi varsa özellikleri size teşekküllü tam gerekenden daha application serverJBoss, WebSphere veya Oracle'ın WebLogic'e gibi.

Web kapsayıcısı Web Sunucusu'nun bir parçasıdır ve Web Sunucusu Uygulama Sunucusu'nun bir parçasıdır.

Uygulama sunucusu

Web Sunucusu web konteynerinden, Uygulama Sunucusu web konteynerinden ve EJB konteynerinden oluşur.


"Web Sunucusu web kapsayıcısından oluşur": youtu.be/ATObcDPLa40 uyarınca bu video yanlıştır
Vyshnav Ramesh Thrissur

20

Kısacası bir web sunucusu , web sayfalarını http üzerinden kullanıcılara sunan bir sunucudur. Bir uygulama sunucusu , bir sistem için iş mantığını barındıran bir sunucudur. Genellikle uzun süren / toplu işlemleri ve / veya insan tüketimi için olmayan bir birlikte çalışma hizmetlerini (REST / JSON hizmetleri, SOAP, RPC, vb.) Barındırır.


2
'Ev sahibi iş mantığı' terimi ne anlama geliyor? Nasıl Yapılır?
TwiggedToday

İş mantığı web servisleri aracılığıyla istemciye açık mı?
TwiggedToday

Web hizmetleri üzerinden sunulabilir veya başka bir arabirim (TCP, MQ, bir paylaşımdaki düz dosyalar (Sonuncuyu önermiyorum)) tarafından sunulabilir.
C. Ross

Bu yanıltıcı olabilir. Uygulama sunucusu hiçbir şey barındırmıyor. Kodunuz iş mantığını barındırır ve uygulama sunucusu, bu ve kullanıcıların istediği web sayfaları arasında tutkal olarak çalışır.
Pithikos

18

Bir Web sunucusu yalnızca HTTP / HTTPS isteklerini işler. HTTP / HTTPS protokolünü kullanarak web'e içerik sunar.

Uygulama sunucusu, muhtemelen HTTP dahil olmak üzere herhangi bir sayıda protokol aracılığıyla uygulama programlarına iş mantığı sunar. Uygulama programı, bu mantığı bir nesne üzerindeki bir yöntemi çağırdığı gibi kullanabilir. Çoğu durumda, sunucu bu iş mantığını Java EE (Java Platform, Enterprise Edition) uygulama sunucularında bulunan EJB (Enterprise JavaBean) bileşen modeli gibi bir bileşen API'sı aracılığıyla ortaya koyar. Ana nokta, web sunucusunun http protokolü aracılığıyla her şeyi göstermesidir, ancak uygulama sunucusu bununla sınırlı değildir. Dolayısıyla bir uygulama sunucusu, tipik olarak aşağıdakileri içeren bir web sunucusundan çok daha fazla hizmet sunar:

  • A (tescilli veya değil) API'sı
  • Yük dengeleme, arıza ...
  • Nesne yaşam döngüsü yönetimi
  • Devlet yönetimi (oturum)
  • Kaynak yönetimi (örn. Veritabanına bağlantı havuzları)

Uygulama sunucularının çoğunun ayrılmaz bir parçası olarak Web Sunucusu vardır, bu da App Server'ın yapabildiği her şeyi yapabileceği anlamına gelir. Ayrıca App Server, Bağlantı Havuzu Oluşturma, Nesne Havuzu Oluşturma, İşlem Desteği, Mesajlaşma hizmetleri vb. Gibi Uygulama düzeyinde hizmetleri destekleyecek bileşenlere ve özelliklere sahiptir.

Bir uygulama sunucusu, program mantığını yürütmek için bir web sunucusunda çalışabilir (ancak her zaman değil), bunun sonuçları daha sonra web sunucusu tarafından iletilebilir. Bu bir web sunucusu / uygulama sunucusu senaryosunun bir örneğidir. Microsoft dünyasında iyi bir örnek Internet Information Server / SharePoint Server ilişkisidir. IIS bir web sunucusudur; SharePoint bir uygulama sunucusudur. SharePoint, IIS'nin "en üstünde" oturur, belirli bir mantık yürütür ve sonuçları IIS aracılığıyla sunar. Java dünyasında, örneğin Apache ve Tomcat ile benzer bir senaryo var.

Web sunucuları statik içerik için ve dinamik içerik için uygulama sunucuları için çok uygun olduğundan, üretim ortamlarının çoğunda uygulama sunucusuna ters proxy işlevi gören web sunucusu bulunur. Bu, bir sayfa isteğine hizmet verirken, images / Static html gibi statik içeriklerin, isteği yorumlayan web sunucusu tarafından sunulduğu anlamına gelir. Bir tür filtreleme tekniği kullanarak (çoğunlukla istenen kaynağın genişletilmesi) web sunucusu dinamik içerik isteğini tanımlar ve şeffaf bir şekilde uygulama sunucusuna iletir.

Bu yapılandırmaya örnek olarak Apache HTTP Sunucusu ve BEA WebLogic Sunucusu verilebilir. Apache HTTP Sunucusu Web Sunucusu ve BEA WebLogic Uygulama Sunucusu'dur. Bazı durumlarda, sunucular IIS ve .NET Çalışma Zamanı gibi sıkıca tümleştirilir. IIS bir web sunucusudur. .NET çalışma zamanı ortamıyla donatıldığında IIS, uygulama hizmetleri sağlayabilir


Web Server                               Programming Environment
Apache                                   PHP, CGI
IIS (Internet Information Server)        ASP (.NET)
Tomcat                                   Servlet
Jetty                                    Servlet

Application Server                       Programming Environment
WAS (IBM's WebSphere Application Server) EJB
WebLogic Application Server (Oracle's)   EJB
JBoss AS                                 EJB
MTS                                      COM+

2
Başka şeylerden bahsediyor, Ama çok şey bana intihal gibi geliyor. Sonundaki liste gibi, Dan'ın gönderisinden kopyalanmış gibi. Ve "... uygulama sunucusuna ters proxy ..." Ayrıca HTTP Server ve BEA WebLogic Server kullanarak kısmen örnek olarak Rutesh Makhijani yazdı hemen hemen aynı şey.
velet

11

Bu ikisi arasındaki sınır giderek inceliyor.

Uygulama sunucuları iş mantığını istemcilere sunar. Bu, uygulama sunucularının iş mantığını gerçekleştirmek için bir dizi yöntemden oluştuğu anlamına gelir (sadece değil, birçok kişinin üzerinde yazılım çalıştırmasına izin veren ağa bağlı bir bilgisayar bile olabilir). Böylece, HTML içeriğini değil, istenen sonuçları çıkarır. (bir yöntem çağrısına benzer). Bu yüzden kesinlikle HTTP tabanlı değildir.

Ancak web sunucuları HTML içeriğini web tarayıcılarına geçirir (Kesinlikle HTTP tabanlı). Web sunucuları yalnızca statik web kaynaklarını işleyebiliyordu, ancak sunucu tarafı komut dosyalarının ortaya çıkması, web sunucularının da dinamik içerikleri işlemesine izin verdi. Bir web sunucusunun isteği alması ve istemciye gönderilecek HTML içeriğini OLUŞTURMAK için ilgili komut dosyalarına (PHP, JSP, CGI komut dosyaları vb.) Yönlendirmesi. İçerik alındıktan sonra, web sunucusu HTML sayfasını istemciye gönderir.

Ancak, günümüzde her iki sunucu birlikte kullanılmaktadır. Burada web sunucusu isteği alır ve ardından HTML içeriğini oluşturmak için bir komut dosyası çağırır. Daha sonra komut dosyası, HTML içeriğini doldurmak için yine bir uygulama sunucusu LOGIC'i (örn. İşlem ayrıntılarını alma) çağırır.

Böylece her iki sunucu da etkin bir şekilde kullanılmaktadır.

Bu nedenle ... Günümüzde çoğu durumda web sunucularının uygulama sunucularının bir alt kümesi olarak kullanıldığını güvenle söyleyebiliriz. AMA teatrik olarak durum böyle değil.

Bu konuyla ilgili birçok makale okudum ve bu makaleyi oldukça kullanışlı buldum .


10

Bir uygulama sunucusu genellikle daha fazla kaynak yoğun olacak daha uzun çalışan işlemleri kolaylaştırmak için tasarlanmış ve dağıtılmıştır.

Bir web sunucusu, genellikle kaynak yoğun olmayan kısa patlamalar için kullanılır. Bu çoğunlukla web tabanlı trafik sunmayı kolaylaştırmak içindir.


9

Java terimleriyle, bir tane daha var: web kapsayıcısı (veya daha kesin olarak, sunucu uygulaması kapsayıcısı). Diyelim ki web sunucusu ile uygulama sunucusu arasında.

Java terimlerindeki bir web kapsayıcısı, temelde Java EE'nin yalnızca JSP / Servlet bölümünü uygulayan ve EJB desteği gibi Java EE'nin birkaç temel parçasından yoksun olan bir uygulama sunucusudur . Apache Tomcat buna bir örnek.


8

Uygulama sunucusu, istemciden sağladığı hizmet için istekler için "dinleyen" (herhangi bir kanalda, herhangi bir kanalda) ve bu isteklere dayalı bir şey yapan bir makinedir (aslında bazı makinelerde çalışan yürütülebilir bir işlemdir). (müşteriye bir saygı gösterebilir veya içermeyebilir)

Bir Web sunucusu, "internet" protokollerinden birini (http, https, ftp, vb.) Kullanarak özellikle TCP / IP Kanalı üzerinde "dinleyen" bir makinede çalışan ve gelen isteklere göre ne yaptığını yapan işlemdir. Genel olarak (oriyanca tanımlandığı gibi), sunucudaki statik bir html dosyasından getirilen veya gelen istemci isteğindeki parametrelere göre dinamik olarak oluşturulmuş bir html web sayfasını getirmiş / oluşturmuş ve istemciye döndürmüştür.


3
banyo davaları için örnekler verebilir misiniz.
frewper

Lütfen her ikisine de örnek verebilir misiniz? Teşekkürler.
LearningMath

8

Bir web sunucusu, web sayfalarını sunmak için HTTP protokolünü çalıştırır. Bir uygulama sunucusu, program mantığını yürütmek için bir web sunucusunda çalışabilir (ancak her zaman değil), bunun sonuçları daha sonra web sunucusu tarafından iletilebilir. Bu bir web sunucusu / uygulama sunucusu senaryosunun bir örneğidir.

Microsoft dünyasında iyi bir örnek Internet Information Server / SharePoint Server ilişkisidir. IIS bir web sunucusudur; SharePoint bir uygulama sunucusudur. SharePoint, IIS'nin "en üstünde" oturur, belirli bir mantık yürütür ve sonuçları IIS aracılığıyla sunar.

Java dünyasında, örneğin Apache ve Tomcat ile benzer bir senaryo var.


8

Bir web sunucusu, HTTP protokolü üzerinden web içeriği (HTML ve statik içerik) sunar. Öte yandan, bir uygulama sunucusu, n-katmanlı bir mimaride HTTP de dahil olmak üzere çeşitli protokoller aracılığıyla iş mantığı ve süreçleri oluşturup istemci uygulamalarına gösterebileceğiniz bir kaptır.

Dolayısıyla bir uygulama sunucusu, tipik olarak aşağıdakileri içeren bir web sunucusundan çok daha fazla hizmet sunar:

  • A (tescilli veya değil) API'sı
  • Nesne yaşam döngüsü yönetimi,
  • Devlet yönetimi (oturum),
  • Kaynak yönetimi (örn. Veritabanına bağlantı havuzları),
  • Yük dengeleme, arıza ...

AFAIK, ATG Dinamo 90'ların sonundaki ilk uygulama sunucusuydu (yukarıdaki tanıma göre). 2000'in başlarında, ColdFusion (CFML AS), BroadVision (Sunucu tarafı JavaScript AS), vb.Gibi bazı özel uygulama sunucularının saltanatıydı . Ancak hiçbiri Java uygulama sunucusu çağından gerçekten kurtuldu.


6

Temel anlayış :

İstemci sunucusu mimarisinde

Sunucu:> İsteklere hizmet eder.

Müşteri:> Hangi hizmet tüketir.

Web sunucusu ve Uygulama sunucusu, istemcileri için sunucu görevi gören yazılım uygulamalarıdır.

İsimlerini kullanım yerlerine göre aldılar.

Web server :> serve web content
           :> Like Html components
           :> Like Javascript components
           :> Other web components like images,resource files
           :> Supports mainly web protocols like http,https.
           :> Supports web Request & Response formats.

Kullanım -

      we require low processing rates,

      regular processing practices involves.

Örneğin: Tüm düz sunucular genellikle yalnızca web tabanlı içerik sunan hazır olarak kullanılabilir.

Application server :> Serve application content/component data(Business data).
                   :> These are special kind which are custom written 
                      designed/engineered for specific
                      purpose.some times fully unique in 
                      their way and stands out of the crowd. 

                   :> As these serves different types of data/response contents
                   :> So we can utilize these services for mobile client,web 
                      clients,intranet clients. 
                   :> Usually application servers are services offered on different 
                      protocols.    
                   :> Supports different Request& Response formats.

Kullanım -

      we require multi point processing,

      specialized processing techniques involves like for AI.

Örneğin: Google, sunucuları, Google arama sunucularını, Google doküman sunucularını, Microsoft 365 sunucularını, AI için Microsoft bilgisayar görme sunucularını eşler.

Bunları 4 katmanlı / n katmanlı mimaride katmanlar / Hiyerarşiler olarak kabul edebiliriz.

 So they can provide 
                    load balancing,
                    multiple security levels,
                    multiple active points,
                    even they can provide different request processing environments.

Standart mimari analojileri için lütfen bu bağlantıyı izleyin:

https://docs.microsoft.com/en-us/previous-versions/msp-np/ee658120(v%3dpandp.10)


5

En büyük fark, bir Web Sunucusunun HTTP isteklerini yönetmesidir; Uygulama sunucusu ise herhangi bir sayıda protokolde iş mantığı yürütür.


5

Aslında Apache bir web sunucusudur ve Tomcat bir uygulama sunucusudur. HTTP isteği web sunucusuna geldiğinde. Ardından statik içerikler web sunucusu tarafından tarayıcıya geri gönderilir. Orada ve mantık yapılacak mı, o zaman bu istek uygulama sunucusuna gönderin. mantığı işledikten sonra yanıt web sunucusuna gönderir ve istemciye gönderir.


4

Yukarıdakilerin hepsi çok basit bir şeyi aşırı karmaşıklaştırıyor. Bir uygulama sunucusu bir web sunucusu içerir, bir uygulama sunucusunda standart web sunucularından birkaç eklenti / uzantı vardır. TomEE'ye örnek olarak bakarsanız:

CDI - Apache OpenWebBeans
EJB - Apache OpenEJB
JPA - Apache OpenJPA
JSF - Apache MyFaces
JSP - Apache Tomcat
JSTL - Apache Tomcat
JTA - Apache Geronimo Transaction
Servlet - Apache Tomcat
Javamail - Apache Geronimo JavaMail
Bean Validation - Apache BVal

Tomcat'in (Web kapsayıcısı / sunucusu) uygulama sunucuları cephaneliğindeki başka bir araç olduğunu göreceksiniz. İsterseniz JPA ve diğer teknolojiyi web sunucusunda da alabilirsiniz, ancak uygulama sunucuları tüm bunları kolaylaştırmak için paketliyor. Bir uygulama sunucusu olarak tam olarak sınıflandırılmak için, esas olarak bazı standartlarda belirtilen araçların listesine uymanız gerekir.


2

Mutlaka net bir ayrım çizgisi yoktur. Günümüzde, birçok program http isteklerini (web sunucusu) sunmak ve iş mantığını (uygulama sunucusu) ele almak için her ikisinin öğelerini birleştirir


2

Gönderen https://en.wikipedia.org/wiki/Web_server

Bir web sunucusu HTTP üzerinden süreçleri istekleri temel ağ protokolü, World Wide Web'de bilgi dağıtmak için kullanılan bir bilgisayar sistemidir. Terim, tüm sistemi veya özellikle HTTP isteklerini kabul eden ve denetleyen yazılımı ifade edebilir .

Gönderen https://en.wikipedia.org/wiki/Application_server#Application_Server_definition

Bir uygulama sunucusu, bir Web Sunucusu (örn. Apache veya Microsoft Internet Information Services (IIS)) arkasında ve (neredeyse her zaman) bir SQL veritabanının (örn. PostgreSQL, MySQL veya Oracle) önünde çalışır.

Web uygulamaları , uygulama sunucularının üzerinde çalışan ve uygulama sunucusunun desteklediği dilde / dillerde yazılan ve uygulama sunucusunun sunduğu çalışma zamanı kitaplıklarını ve bileşenlerini çağıran bilgisayar kodudur .


2

Web sunucusu barındırmak için uygulama sunucusu ve web sunucusu kullanılır. Web Sunucusu web kapsayıcı ile anlaşma Uygulama Sunucusu web kapsayıcı yanı sıra EJB (Enterprise JavaBean) kapsayıcı veya Microsoft dot Net için COM + kapsayıcı ile anlaşma.

Web Sunucusu, HTML, görüntüler vb.Gibi HTTP statik İçeriği sunmak için tasarlanmıştır ve dinamik içerik için Perl, PHP, ASP, JSP vb. Aşağıdaki sunucular dinamik HTTP içeriği oluşturabilir.

Web Sunucusunun Programlama Ortamı:

IIS: ASP (.NET)

Apache Tomcat: Servlet

İskele: Servlet

Apache: Php, CGI

Uygulama Sunucusu, Web Sunucusu'nun yapabildiği her şeyi yapabilir ve herhangi bir protokolü kullanarak dinler ve Uygulama Sunucusu, Bağlantı Havuzu Oluşturma, Nesne Havuzlaması, İşlem Desteği, Mesajlaşma hizmetleri vb. Gibi Uygulama düzeyinde hizmetleri destekleyen bileşenler ve özelliklere sahiptir.

Uygulama Sunucusunun Programlama Ortamı:

MTS: COM +

WAS: EJB

JBoss: EJB

WebLogic Uygulama Sunucusu: EJB


1

İkisi arasında çakışmalar olsa da (bazı web sunucuları uygulama sunucusu olarak da kullanılabilir) IMHO'nun en büyük farkı işleme modelinde ve oturum yönetiminde:

Web sunucusu işleme modelinde, odak isteklerin ele alınması üzerinedir; "oturum" kavramı hemen hemen sanaldır. Yani "oturum", durumun temsilini istemci ve sunucu (dolayısıyla REST) ​​arasında aktararak ve / veya harici bir kalıcı depoya (SQL Server, Memcached vb.) Serileştirerek simüle edilir.

Uygulama sunucusunda oturum genellikle daha açıktır ve genellikle "oturum" un tüm süresi boyunca uygulama sunucusunun belleğinde yaşayan bir nesne biçimini alır.


0

Belirli mimariye bağlıdır. Bazı uygulama sunucuları yerel olarak web protokollerini kullanabilir (HTTP üzerinden XML / RPC / SOAP), bu nedenle çok az teknik fark vardır. Tipik olarak bir web sunucusu kullanıcıya dönüktür, HTTP / HTTPS üzerinden çeşitli içerik sunar, bir uygulama sunucusu ise kullanıcılara dönük değildir ve standart olmayan veya yönlendirilemeyen protokoller kullanabilir. Tabii ki RIA / AJAX ile, fark daha fazla bulutlanabilir ve belirli uzaktan erişim hizmetlerini pompalayan istemcilere yalnızca HTML olmayan içerik (JSON / XML) sunabilir.


0

IMO, çoğunlukla endişeleri ayırmakla ilgili.

Tamamen teknik bir bakış açısından, her şeyi (web içeriği + iş mantığı) tek bir web sunucusunda yapabilirsiniz. Bunu yaparsanız, bilgi istenen HTML içeriğinin içine gömülür. Etkisi ne olurdu?

Örneğin, tarayıcıda tamamen farklı HTML içeriği oluşturan 2 farklı uygulamanız olduğunu düşünün. İş mantığını bir uygulama sunucusuna ayıracaksanız, komut dosyalarıyla uygulama sunucusunda aynı verileri arayan farklı web sunucuları sağlayabilirsiniz. Bununla birlikte, mantığı ayırmaz ve web sunucusunda tutmazsanız, iş modelinizi her değiştirdiğinizde, daha fazla zaman alacak, daha az güvenilir ve hataya yatkın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.