Uygulama sunucusu ile web sunucusu arasındaki fark nedir?
Uygulama sunucusu ile web sunucusu arasındaki fark nedir?
Yanıtlar:
Ç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:
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.
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 .
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.
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.
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.
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 /about
iş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.
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.
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.
IIS: ASP (.NET)
Tomcat: Servlet
İskele: Servlet
Apache: Php, CGI
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.
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 server
Statik 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 containers
Tomcat 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 server
JBoss, 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.
Web Sunucusu web konteynerinden, Uygulama Sunucusu web konteynerinden ve EJB konteynerinden oluşur.
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.
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:
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+
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 .
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.
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.
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.
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.
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:
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.
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)
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.
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.
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.
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
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 .
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
İ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.
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.
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.