Uygulama sunucusu ve web sunucusu arasındaki fark nedir?
Çoğu zaman bu terimler Web Sunucusu ve Uygulama sunucusu birbirlerinin yerine kullanılır.
Aşağıda, Web Sunucusu ve Uygulama Sunucusu özelliklerinde bazı önemli farklar bulunmaktadır:
Bu tür bir konfigürasyon örneği Apache Tomcat HTTP Sunucusu ve Oracle (önceki adıyla BEA) WebLogic Sunucusu'dur. Apache Tomcat HTTP Sunucusu Web Sunucusu ve Oracle WebLogic Uygulama Sunucusu'dur.
Bazı durumlarda sunucular, IIS ve .NET Runtime gibi sıkıca tümleştirilmiştir. IIS web sunucusudur. .NET çalışma zamanı ortamıyla donatıldığında, IIS uygulama hizmetleri sunabilir.
Bu, farklılıkları, benzerliği ve her ikisinin birlikte ve nasıl birlikte çalışabileceğini açıkça anlamak için bazı senaryolarda verilen ayrıntılı bir cevaptır.
Uygulama Sunucusu , bazen web sunucusu ile karıştırılan bir terimdir. Bir web sunucusu çoğunlukla HTTP protokollerini ele alırken, uygulama sunucusu, ancak bunlarla sınırlı olmamak üzere, HTTP dahil olmak üzere birkaç farklı protokolle ilgilenir.
Web sunucusunun asıl işi site içeriğini göstermektir ve uygulama sunucusu mantıktan sorumludur , kullanıcı ile görüntülenen içerik arasındaki etkileşim. Uygulama sunucusu bir - diğerinin etkileşime girdiği web sunucusuyla birlikte çalışır.
Sunucu ve istemcisi arasında ileri geri dolaşan bilgiler, basit görüntüleme işaretlemesiyle değil, ikisi arasındaki etkileşimle sınırlıdır.
Bir örnek:
Bir uygulama sunucusunun web sunucusuyla çalıştığı senaryolar ile uygulama sunucusunun bulunmadığı bir senaryo arasındaki farkı anlamanın en iyi yolu bir çevrimiçi mağaza aracılığıyladır.
Senaryo 1: Uygulama sunucusu olmayan web sunucusu
yalnızca web sunucusu olan ve uygulama sunucusu olmayan bir çevrimiçi mağazanız var. Site, içinden bir ürün seçebileceğiniz bir ekran sağlayacaktır. Bir sorgu gönderdiğinizde, site bir arama yapar ve bir HTML sonucunu müşterisine geri döndürür. Web sunucusu sorgunuzu doğrudan veritabanı sunucusuna gönderir (sabırlı olun, bunu bir sonraki nugget'imizde açıklayacağım) ve yanıt bekler. Alındıktan sonra, web sunucusu 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, bir sorgu çalıştırıldığında gerçekleşir.
Senaryo 2: Bir uygulama sunucusuna sahip web sunucusu
Çalıştırmak istediğiniz sorgu daha önce yapıldıysa ve o zamandan beri hiçbir veri değişmediyse, sunucu, isteği veritabanı sunucusuna göndermek zorunda kalmadan sonuçları üretecektir. Bu, ikinci bir istemcinin aynı bilgiye erişebildiği ve veritabanı sunucusuna başka bir yinelenen sorgu göndermeden gerçek zamanlı, güvenilir bilgi alabildiği gerçek zamanlı bir sorguya izin verir. Sunucu temel olarak veritabanı sunucusu ve web sunucusu arasında bir aracı görevi görür. Bu, ilk senaryoda, bu bilginin belirli ve "özelleştirilmiş" bir HTML sayfasına gömülü olması nedeniyle çekilen bilgilerin yeniden kullanılabilir olmasına izin verir, bu yeniden kullanılabilir bir işlem değildir. İkinci bir istemciden tekrar bilgi istemek ve istenen bilgiyi çok yüksek verimsiz bir HTML gömülü sayfa almak zorunda kalacak. Güvenlik, işlem işleme, mesajlaşma ve kaynak havuzu da dahil olmak üzere kendi kaynaklarını yönetme yeteneği nedeniyle bu tür bir sunucunun çok esnek olduğundan bahsetmiyorum.
Bu kadar çeşitli karmaşık görevleri desteklemek için, bu sunucunun yerleşik bir fazlalık, büyük işlem gücü ve yüksek miktarda RAM değerine sahip olması gerekir;.
Bu yardımcı olur umarım.
Her iki terim de çok geneldir, biri diğerini içerir ve bazı durumlarda bunun tersi geçerlidir.
Web sunucusu : http protokolünü kullanarak web içeriği sunar.
Uygulama sunucusu : iş mantığını ve işlemlerini barındırır ve gösterir.
Asıl mesele web sunucusunun http protokolü ile her şeyi gösterdiği ve uygulama sunucusunun bununla sınırlı olmadığını 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 sitede bulunan iş kuralları ile etkileşime girmesini sağlayan bir dizi web sayfasını göstereceği uygulama sunucusu.
Rutesh ve jmservera'nın işaret ettiği gibi, ayrım bulanıktır. Tarihsel olarak, farklıydılar, ancak 90'lı yıllar boyunca bu iki daha önce farklı olan kategoriler özellikleri harmanladılar ve etkili bir şekilde birleştirdiler. Bu noktada "Uygulama Sunucusu" ürün kategorisinin "web sunucusu" kategorisinin katı bir üst kümesi olduğunu hayal etmek en iyisidir.
Bazı tarihler. Mosaic tarayıcısının ve köprü içeriğinin ilk günlerinde, HTTP üzerinden web sayfası içeriği ve görüntüleri sunan "web sunucusu" denilen bir şey oldu. İçeriğin çoğu statikti ve HTTP 1.0 protokolü dosyaları göndermenin bir yoluydu. Hızla "web sunucusu" kategorisi CGI özelliğini içerecek şekilde gelişti; dinamik olarak içerik üretmek için her web isteği üzerinde etkin bir şekilde işlem başlattı. HTTP de olgunlaştı ve ürünler önbellekleme, güvenlik ve yönetim özellikleriyle daha karmaşık hale geldi. Teknoloji olgunlaştıkça, sonunda hepsi JSP ile birleştirilen Kiva ve NetDynamics'ten şirkete özgü Java tabanlı sunucu tarafı teknolojisini aldık. Microsoft ASP’yi ekledi, 1996’da Windows NT 4.0’a sanırım. Statik web sunucusu bazı yeni püf noktaları öğrenmişti, böylece birçok senaryo için etkili bir "uygulama sunucusu" idi.
Paralel bir kategoride, uygulama sunucusu uzun bir süredir gelişti ve var oldu. şirketler, Unix'e, Mainframe uygulama yönetimi ve IMS ve CICS gibi izleme ortamlarından felsefi olarak türetilmiş olan Tuxedo, TopEnd, Encina gibi ürünler teslim etti. Microsoft'un teklifi, daha sonra COM + olarak geliştirilen Microsoft Transaction Server (MTS) idi. Bu ürünlerin çoğu, "yağ" istemcilerini sunuculara bağlamak için "kapalı" ürüne özel iletişim protokollerini belirtti. (Encina için iletişim protokolü DCE RPC; MTS için DCOM'du; vb.) 1995/96'da bu geleneksel uygulama sunucusu ürünleri ilk önce ağ geçitleri üzerinden temel HTTP iletişim kabiliyetini gömmeye başladı. Ve çizgiler bulanıklaşmaya başladı.
Web sunucuları, daha fazla yük, daha fazla eşzamanlılık ve daha iyi özelliklerle ilgili olarak giderek daha da olgunlaştı. Uygulama sunucuları, daha fazla HTTP tabanlı iletişim yeteneği sağladı.
Bu noktada "uygulama sunucusu" ve "web sunucusu" arasındaki çizgi bulanıktır. Ancak insanlar, terimleri farklı bir biçimde kullanmaya devam ediyor. 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 kuyruğa alma, çok kanallı iletişim (HTTP + daha fazla) diyebilirsiniz.
Web sunucusu
python -m 'SimpleHTTPServer' komutunu çalıştırın ve http: // localhost: 8080 konumuna gidin. Gördüğün şey işindeki bir web sunucusu. Sunucu yalnızca bilgisayarınızda depolanan HTTP üzerinden dosya sunar. Kilit nokta, tüm bunların HTTP protokolünün üstünde yapılmasıdır. Örneğin aynı şeyi yapan (depolanmış dosyalara hizmet veren) ancak farklı bir protokolün üstünde olan FTP sunucuları da vardır.
Uygulama sunucusu
Diyelim ki aşağıdakine benzer küçük bir uygulamamız var ( Flask dan snippet).
@app.route('/') def homepage(): return '<html>My homepage</html>' @app.route('/about') def about(): return '<html>My name is John</html>'
Küçük örnek program,
/ URL'sini
homepage() işlevine ve
/about işlevini
about() işlevine eşler.
Bu kodu çalıştırmak için bir uygulama sunucusuna (örn. Gunicorn) ihtiyacımız var - bir müşteriden gelen istekleri dinleyebilen ve kodumuzu kullanarak bir şeyi dinamik olarak geri verebilen bir program veya modül. Örnekte basitçe bazı kötü HTML'ler döndürüyoruz.
Diğer insanların bahsettiği iş mantığı ne? Peki, bir URL özellikle kod tabanımızdaki bir yerle eşleştiğinden, programımızın nasıl çalıştığıyla ilgili bazı mantıkları varsayıyoruz.
Yeniden Ekleme
web sunucusu - bir yerde depolanmış dosyalara hizmet eder (en çok .css, .html, .js). Yaygın web sunucuları Apache, Nginx ve hatta Python'un SimpleHTTPServer'ıdır.
application server - anında oluşturulan dosyalara hizmet eder. Temel olarak, çoğu web sunucusu bir çeşit eklentiye sahiptir, hatta bunu yapmak için yerleşik işlevlerle birlikte gelir. Gunicorn (Python), Unicorn (Ruby), uWSGI (Python), vb. Katı uygulama sunucuları da bulunmaktadır.
Uygulama sunucusunun koduyla gerçekten bir web sunucusu oluşturabileceğinize dikkat edin. Bu, bazı durumlarda bilgisayarınızda çalışan farklı bir sunucuda çalışan bir gazillionun olmasını istemediğiniz durumlarda gerçekleştirilir.
Daha önce de belirtildiği gibi, web sunucuları HTTP dilekçelerini, uygulama sunucuları dağıttığı bileşenler için dilekçeleri kullanır. Bu nedenle, belki de farkı anlamanın en kolay yolu, iki ürünü sundukları programlama ortamı açısından karşılaştırmaktır.
IIS: ASP (.NET)
Tomcat: Servlet
İskelesi: Servlet
Apache: Php, CGI
MTS: COM +
WAS: EJB
JBoss: EJB
WebLogic Uygulama Sunucusu: EJB
Önemli fark, uygulama sunucularının Java dünyasında EJB veya COM + gibi uzaktan başlatma ve dağıtılmış işlemler gibi özellikler sağlayan bazı dağıtılmış bileşen teknolojisini desteklemesidir. Microsoft platformu Http sunucusu genellikle daha basit programlama ortamlarını destekler; genellikle Microsoft veya Servlet tabanlı durumlarda JSP ve Java veya ASP ve CGI dahil olmak üzere PHP (.NET) gibi komut dosyaları kullanılır. Apache durumunda.
Uygulama sunucuları alanında kullanılan yük dengeleme, kümeleme, oturum devretme, bağlantı havuzu vb. Gibi diğer özellikler doğrudan veya bazı üçüncü taraf ürünleri aracılığıyla web sunucularında da mevcut hale geliyor.
Son olarak, resmin, uygulama sunucularının amaçlarını daha basit bir şekilde ve uygulama sunucusu altyapısı olmadan basitçe tamamlayan Spring Framework gibi "hafif kaplar" ile daha da çarpık olduğuna dikkat etmek önemlidir. Uygulamalarda dağıtım yönü dağıtılmış bileşenden hizmet paradigmasına ve SOA mimarisine doğru ilerlediğinden, geleneksel uygulama sunucuları için daha az yer kalıyor.
Bir Web sunucusu yalnızca HTTP/HTTPS isteklerini işler. HTTP/HTTPS protokolünü kullanarak web içeriği sunar.
Bir uygulama sunucusu, uygulama programlarına, muhtemelen HTTP de dahil olmak üzere herhangi bir sayıda protokol aracılığıyla iş mantığı sunar. Uygulama programı, bu mantığı, bir nesnede bir yöntem ç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ı üzerinden sunar. Ana nokta, web sunucusunun http protokolü ile her şeyi göstermesi ve uygulama sunucusunun bununla sınırlı olmamasıdır. Bu nedenle bir uygulama sunucusu, genellikle aşağıdakileri içeren bir web sunucusundan çok daha fazla hizmet sunar:
Uygulama sunucularının çoğunda, bir parçası olarak Web Sunucusu bulunur; bu, Uygulama Sunucusunun Web Sunucusu ne yapabilirse yapabileceği anlamına gelir. Ek olarak, Uygulama Sunucusu, Bağlantı Havuzu Oluşturma, Nesne Havuzu Oluşturma, İşlem Desteği, Mesajlaşma servisleri vb. Gibi Uygulama düzeyinde servisleri destekleyecek bileşen ve özelliklere sahiptir.
Bir uygulama sunucusu, program mantığını yürütmek için bir web sunucusunda çalışabilir (ancak her zaman çalışmaz), bunun sonucu da web sunucusu tarafından iletilebilir. Bu bir web sunucusu/uygulama sunucusu senaryosuna bir örnektir. 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 "üstünde" bulunur, belirli bir mantık yürütür ve sonuçları IIS üzerinden 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 uygun olduğundan, üretim ortamlarının çoğunda, uygulama sunucusuna ters proxy görevi yapan web sunucusu bulunur. Bu, bir sayfa isteğine hizmet verirken, görüntüler/Statik html gibi statik içerikler, isteği yorumlayan web sunucusu tarafından sunulur. Bir tür filtreleme tekniği (çoğunlukla istenen kaynağın uzantısı) kullanılarak web sunucusu, dinamik içerik isteğini belirler ve şeffaf bir şekilde uygulama sunucusuna iletir.
Bu tür bir yapılandırma örneği Apache HTTP Sunucusu ve BEA WebLogic Sunucusu'dur. Apache HTTP Sunucusu Web Sunucusu ve BEA WebLogic Uygulama Sunucusu'dur. Bazı durumlarda, sunucular IIS ve .NET Runtime gibi sıkıca tümleştirilmiştir. IIS web sunucusudur. .NET çalışma zamanı ortamı ile donatıldığında IIS uygulama hizmetleri sunabilir
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+
Kısaca a web sunucusu , web sayfalarını kullanıcılara http üzerinden hizmet veren bir sunucudur. Bir uygulama sunucusu , bir sistem için iş mantığını barındıran bir sunucudur. Genellikle uzun süre çalışan/toplu işlemleri ve/veya insan tüketimi için amaçlanmayan bir birlikte çalışma hizmetlerini (REST/JSON hizmetleri, SOAP, RPC vb.) Barındırır.
Web sunucusu ve uygulama sunucusu arasındaki temel fark, web sunucusunun, örneğin statik sayfalara hizmet etmek anlamına gelmesidir. HTML ve CSS, Uygulama Sunucusu, örneğin sunucu yan kodunu çalıştırarak dinamik içerik oluşturmaktan sorumludur; JSP, Servlet veya EJB.
Hangisini kullanmalıyım?
Web ve uygulama sunucusu ile web konteynerleri arasındaki farkı öğrendikten sonra, bunların ne zaman kullanılacağını anlamak kolaydır. Statik web sayfaları sunuyorsanız Apache HTTPD gibi bir
web server dosyasına ihtiyacınız vardır. Dinamik içerik oluşturmak için yalnızca JSP ve Servlet içeren bir Java uygulamanız varsa, Tomcat veya Jetty gibi
web containers'a ihtiyacınız vardır. , EJB kullanarak Java EE uygulamanız varsa, dağıtılmış işlem, mesajlaşma ve diğer fantezi özellikleri varsa JBoss, WebSphere veya Oracle's WebLogic gibi tam teşekküllü bir
application server koduna ihtiyacınız varsa.
Web konteyneri, Web Sunucusunun bir parçasıdır ve Web Sunucusu, Uygulama Sunucusunun bir parçasıdır.
Web Sunucusu web konteyneri, Uygulama Sunucusu ise web konteyneri ve EJB konteyneridir.
Java terimlerinde bir tane daha var: web container (veya daha kesin olarak servlet container). Yani, web sunucusu ile uygulama sunucusu arasında. Java terimlerindeki bir web kabı, Java EE'nin JSP/Servlet bölümünü temelde only uygulayan ve EJB desteği gibi Java EE'nin birkaç çekirdek parçasından yoksun bir uygulama sunucusudur. Bir örnek Apache Tomcat.
Bir uygulama sunucusu, daha fazla kaynak yoğun olacak daha uzun süren işlemleri kolaylaştırmak için tipik olarak 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ı trafiğe hizmet vermeyi kolaylaştırmak içindir.
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 çalışmaz), bunun sonucu da web sunucusu tarafından iletilebilir. Bu bir web sunucusu/uygulama sunucusu senaryosuna bir örnektir.
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 "üstünde" bulunur, belirli bir mantık yürütür ve sonuçları IIS üzerinden sunar.
Java dünyasında, örneğin Apache ve Tomcat ile benzer bir senaryo var.
İlk olarak, bir web sunucusu HTTP protokolü üzerinden web içeriği (HTML ve statik içerik) sunar. Öte yandan, bir uygulama sunucusu, üst düzey bir mimaride HTTP dahil olmak üzere çeşitli protokoller aracılığıyla iş mantığını ve işlemlerini istemci uygulamalarına açıp ifşa edebileceğiniz bir konteynerdir.
Bu nedenle bir uygulama sunucusu, genellikle aşağıdakileri içeren bir web sunucusundan çok daha fazla hizmet sunar:
AFAIK, ATG Dinamo , 90'ların sonunda ilk uygulama sunucusundan biriydi (yukarıdaki tanıma göre). 2000 yılının başlarında, ColdFusion (CFML AS), BroadVision (Sunucu Tarafı JavaScript AS), vb. Gibi bazı özel uygulama sunucularının egemenliğiydi.
Bu ikisi arasındaki sınır gittikçe zayıflıyor.
Uygulama sunucuları, iş mantığını bir istemciye sunar. Bu nedenle, benzer uygulama sunucusu, iş mantığını gerçekleştirmek için bir dizi yöntemden (zorunlu olsa da, birçoğunun üzerinde yazılım çalıştırmasına izin veren ağa bağlı bir bilgisayar bile olabilir) oluşabilir. Böylece sadece HTML içeriğini değil istenen sonuçları verir. (bir yöntem çağrısına benzer). Bu yüzden kesinlikle HTTP tabanlı değil.
Ancak web sunucuları HTML içeriğini web tarayıcılarına iletir (Kesinlikle HTTP tabanlı). Web sunucuları sadece statik web kaynaklarını idare edebiliyorlardı, ancak sunucu tarafında kod yazmanın ortaya çıkması, web sunucularının da dinamik içerikleri kullanmasına yardımcı oldu. Web sunucusunun isteği aldığı ve müşteriye gönderilecek HTML içeriğini CREATE yapmak için komut dosyasına (PHP, JSP, CGI betikleri, vb.) Yönlendirir. O zaman web sunucusu onları müşteriye nasıl geri göndereceğini bilir. Çünkü bir web sunucusunun bildiği şey bu.
Bunu söyledikten sonra, günümüzde geliştiriciler her ikisini birlikte kullanmaktadır. Web sunucusunun isteği alması ve ardından HTML'yi oluşturmak için bir komut dosyasını çağırması durumunda, BUT komut dosyası, HTML içeriğini doldurmak için yine bir uygulama sunucusu LOGIC (ör. İşlem ayrıntılarını al) arayacaktır.
Dolayısıyla bu durumda her iki sunucu da etkili bir şekilde kullanıldı.
Bu nedenle .... Günümüzde çoğu zaman web sunucularının uygulama sunucularının bir alt kümesi olarak kullanıldığını güvenle söyleyebiliriz. AMA Teatral olarak durum böyle değil.
Bu konuyla ilgili birçok makale okudum ve this makale'yi oldukça kullanışlı buldum.
Bir uygulama sunucusu, (hangi makinede çalışan, aslında herhangi bir kanalda, herhangi bir kanalda) "dinleyen" (istemcilerden sağladığı hizmet için istemcilerden gelen istekler için) ve bu isteklere dayanarak bir şeyler yapan bir makinedir. (müşteriye başvuruyu içerebilir veya içermeyebilir)
Bir Web sunucusu, "internet" protokollerinden birini kullanarak (http, https, ftp, vb.) Özellikle TCP/IP Kanalını "dinleyen" bir makinede çalışan ve gelen isteklere göre ne yaptığını yapan bir işlemdir. .. Genellikle, (orijinal olarak tanımlandığı gibi), istemciye bir html web sayfası getirdi/oluşturdu ve döndürdü, ya sunucudaki statik bir html dosyasından getirildi ya da gelen istemci isteğindeki parametrelere göre dinamik olarak oluşturuldu.
Yukarıdakilerin hepsi çok basit bir şeyi aşırı karmaşık hale getirmektedir. Bir uygulama sunucusu bir web sunucusu içerir; bir uygulama sunucusu, standart web sunucularından çok daha fazla ekleme/uzantıya sahiptir. 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'ın (Web kapsayıcısı/sunucusu), uygulama sunucuları cephaneliğindeki başka bir araç olduğunu göreceksiniz. İsterseniz JPA'yı ve diğer teknolojileri web sunucusunda da alabilirsiniz, ancak uygulama sunucuları rahatlığınız için tüm bunları paketler. Tamamen bir uygulama sunucusu olarak sınıflandırılmak için, temel olarak bazı standartlarda belirtilen araçların listesine uymanız gerekir.
Aslında Apache bir web sunucusudur ve Tomcat bir uygulama sunucusudur. HTTP isteği web sunucusuna geldiğinde. Ardından statik içerik tarayıcıya web sunucusu tarafından 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önderilir ve istemciye gönderilir.
En büyük fark, bir Web Sunucusu HTTP isteklerini yerine getirirken, bir Uygulama sunucusu herhangi bir sayıda protokolde iş mantığı yürütecektir.
Uygulama sunucusu ve web sunucusu hem Web barındırma web uygulamasında kullanılır. Web Sunucusu, web konteyneri ile ilgilidir. Uygulama Sunucusu ise web konteyneri ile birlikte EJB (Enterprise JavaBean) konteyneri veya Microsoft dot Net için COM + konteyneri ile ilgilidir.
Web Sunucusu, HTML, resimler vb. Gibi HTTP statik İçeriği sunmak ve dinamik içeriğin Perl, PHP, ASP, JSP vb. Gibi betik dillerini destekleyen eklentilere sahip olması ve HTTP protokolüyle sınırlandırılması için tasarlanmıştır. Aşağıdaki sunucular dinamik HTTP içeriği oluşturabilir.
Web Sunucusunun Programlama Ortamı:
IIS: ASP (.NET)
Apache Tomcat: Sunucu Uygulaması
İskelesi: Servlet
Apache: Php, CGI
Uygulama Sunucusu, Web Sunucusu'nun yapabileceği her şeyi yapabilir ve herhangi bir protokolü kullanarak dinler; Uygulama Sunucusu, Bağlantı Havuzu Oluşturma, Nesne Havuzu Oluşturma, İşlem Desteği, Mesajlaşma hizmetleri vb.
Uygulama Sunucusunun Programlama Ortamı:
MTS: COM +
WAS: EJB
JBoss: EJB
WebLogic Uygulama Sunucusu: EJB
Kesin olarak net bir bölme çizgisi yoktur. Günümüzde, pek çok program her ikisinin öğelerini birleştiriyor - http isteklerini yerine getiriyor (web sunucusu) ve iş mantığını ele alıyor (uygulama sunucusu)
Web sunucusu, World Wide Web’de bilgi dağıtmak için kullanılan temel ağ protokolü olan HTTP üzerinden istekleri işleyen bir bilgisayar sistemidir. Terim tüm sisteme veya özellikle HTTP isteklerini kabul edip denetleyen yazılımına atıfta bulunabilir.
Bir uygulama sunucusu bir web Sunucusunun arkasında çalışır (örneğin, Apache veya Microsoft Internet Information Services (IIS)) ve (hemen hemen her zaman) bir SQL veritabanının önünde (örneğin, PostgreSQL, MySQL veya Oracle).
Web uygulamaları, uygulama sunucularının üzerinde çalışan ve uygulama sunucusunun desteklediği dilde/dillerinde yazılmış ve çalışma zamanı kitaplıklarını ve bileşenlerini uygulama sunucusu sunar adlı bir bilgisayar kodudur.
İkisi arasında çakışma olsa da (bazı web sunucuları uygulama sunucusu olarak bile kullanılabilir) IMHO'nun işleme modeli ve oturum yönetimi arasındaki en büyük fark:
Web sunucusu işleme modelinde odak, istekleri ele almaktır; "oturum" kavramı oldukça sanaldır. Bu, "oturum" un, istemci ve sunucu arasındaki durumun temsil edilmesinin (dolayısıyla REST) aktarılması ve/veya harici bir kalıcı depolamaya (SQL Server, Memcached vb.) Seri hale getirilmesiyle simüle edildiği anlamına gelir.
Uygulama sunucusunda, oturum genellikle daha belirgindir ve genellikle "oturumun" süresi boyunca uygulama sunucusunun hafızasında yaşayan bir nesneden oluşur.
Bu özel mimariye bağlıdır. Bazı uygulama sunucuları web protokollerini yerel olarak kullanabilir (HTTP üzerinden XML/RPC/SOAP), bu nedenle çok az teknik fark vardır. Tipik olarak bir web sunucusu, kullanıcı tarafından karşı karşıya kalmaz ve standart olmayan ya da yönlendirilemeyen protokoller kullanabilirken, HTTP/HTTPS üzerinden çeşitli içeriğe hizmet eden bir kullanıcı tarafından karşı karşıyadır. Elbette, RIA/AJAX ile fark, daha da bulanıklaştırılabilir ve belirli uzaktan erişim hizmetlerini pompalayan istemcilere yalnızca HTML dışı içerik (JSON/XML) sunabilir.
IMO, çoğunlukla endişeleri ayırmakla ilgili.
Tamamen teknik açıdan bakıldığında, her şeyi (web içeriği + iş mantığı) tek bir web sunucusunda yapabilirsiniz. Bunu yaparsanız, o zaman bilgi HTML içeriğinde istenen içine gömülürdü. Etki ne olurdu?
Örneğin, tarayıcıda tamamen farklı HTML içeriği sunan 2 farklı uygulamanız olduğunu hayal edin. İş mantığını bir uygulama sunucusuna ayırırsanız, aynı verileri uygulama sunucusundaki komut dosyasıyla arayan farklı web sunucuları sağlayabilirsiniz. Ancak, mantığı ayırmaz ve web sunucusunda tutmazsanız, iş modelinizi ne zaman değiştirirseniz, sahip olduğunuz her web sunucusunda daha fazla zaman alacak, daha az güvenilir ve hataya yatkın.
Temel anlayış :
İstemci sunucusu mimarisinde
Sunucu:> İsteklere hizmet eder.
Müşteri:> Hangi hizmeti tüketir.
Web sunucusu ve Uygulama sunucusu, müşterileri 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.
Örn: Yalnızca web tabanlı içerik sunan, tüm hazır sunucular genel kullanıma hazırdır.
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 docs sunucularını, Microsoft 365 sunucularını, AI için Microsoft bilgisayarlı görüş sunucularını eşler.
Onları 4 katmanlı/n katmanlı mimaride katman/Hiyerarşi olarak kabul edebiliriz.
So they can provide load balancing, multiple security levels, multiple active points, even they can provide different request processing environments.
Lütfen standart mimari analojileri için bu linki takip edin: