ASP.Net Core之详解服务器-基础概念

随笔2个月前发布 卫红兵
28 0 0

一、前言

  在学习ASP.NET Core中跨平台特性中,对于ASP.NET Core能够实现跨平台Kestrel起到至关重要的作用,所以专门写一篇总结关于这个服务器的内容。主要从什么是服务器①在软硬件上的含义,②基本工作原理,③什么是代理服务器与应用服务器,什么是Kestrel服务器,④实践代理服务器转发至Kestrel等几个方面了解服务器。

Kestrel是进程内服务器,以一个包形式提供,自身不能单独运行,必须寄宿在一个.NET的WEB应用程序中。它内部封装了对libuv的调用,但不是libuv库简单的封装库。Kestrel是个精简的,高效的Http Server!!

二、服务器定义

  1、关于服务器的定义

  ①从硬件是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵,给其它客户机、终端设备提供计算或者应用服务。服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。

  ②从软件是一个管理资源并为用户提供服务的计算机软件,通常分为文件服务器(能使用户在其它计算机访问文件),数据库服务器和应用程序服务器。运行以上软件的计算机,或称为网络主机(Host)。

  2、关于服务器的类型

  ①网页服务(Web Server)提供存储、处理和传递Web页面给客户端(如Web浏览器),比如Apache、lighttpd、nignx、IIS。

  ②文件服务器(File Server)或网络存储设备是一种在计算机网络环境中,所有用户都可访问的文件存储设备,比如Novell、NetWare。

  ③数据库服务器(Database Server)是一种用于存储、管理和处理大量数据的硬件设备,它起着支持和管理数据库系统(DBMS)的重要作用,为用户提供高效的数据存储和访问功能,比如Mysql、Oracle、SQL Serve、MongoDB、Redis。

  ④邮件服务器(Mail Server)是一种用于负责电子邮件收发管理的设备,其功能是完成电子邮件在网络上的接收、发送和中转过程。邮件服务器比网络上的免费邮箱更安全和高效,因此一直是企业公司的必备设备。比如Sendmail、Postfix、Qmail、Microsoft Exchange、Lotus Domino、dovecot。

  ⑤应用程序服务器(Application Server)作为应用程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序;比如WebLogic、JBoss、GlassFish。

  ⑥FTP服务器(FTP Server)是用于在计算机网络中提供文件存储和访问服务的服务器,比如Pureftpd、Proftpd、WU-ftpd、Serv-U、vs-ftpd等

  ⑦域名服务器(DNS Server)是进行域名(domain name)和与之相对应的IP地址(IP address)转换的服务器,比如Bind等

  ⑧代理服务器(Proxy Server)、游戏服务器。

注意:在服务器硬件中安装相关软件提供不同类型的服务,相关软件提供多种多样的功能,构成这个服务器的能力!

三、服务器类型

  上述对服务器形成基本的认识,在实际的开发或者交流中,我们会讨论到应用服务器、Web服务器、反向代理服务器、Web容器,这些名词表达的内容是什么,具体的载体是什么,关联关系是什么?通过下述介绍来一一说明,清楚了解界定范围或者形式,减少模糊的概念。

  1、什么是Web服务器?

  Web服务器:①主要用于提供静态内容(如 HTML、CSS、JavaScript 文件等)给客户端;②常见的 Web 服务器有 Apache HTTP Server(也称为 Apache)和 Nginx。主要界定在于提供动态内容的访问。

  Web服务器:可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应 (response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或图片,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。

  2、什么是应用服务器?

  应用服务器:①除了提供静态内容外,还能处理动态内容,这通常是通过执行服务器端代码(如 Java Servlet、JSP 页面等)来实现的;②应用服务器提供了额外的功能,如事务处理、连接池、安全性等,以支持企业级应用程序;③Tomcat 就是一个典型的例子,因为它不仅可以提供静态内容,还能执行 Java Servlet 和 JSP 页面,并提供了许多用于企业级开发的特性。所以应用服务器主要提供处理动态内容的能力。在微软中定义到-我们把应用程序服务器定义为,作为服务器执行共享业务应用程序的底层的系统软件。

  应用服务器:作为应用程序服务器,它通过各种协议,可以包括HTTP,把商业逻辑暴露给(expose)客户端应用程序。Web服务器主要是处理向浏览器发送HTML以供浏览,而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用。应用程序使用此商业逻辑就象你调用对象的一个方法 (或过程语言中的一个函数)一样,应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC、一个Web服务器或者甚至是其它的应用程序服务器上。在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记。相反,这种信息就是程序逻辑(program logic)。正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML,所以客户端才可以随心所欲的使用这种被暴露的商业逻辑。

  大多数情况下,应用程序服务器是通过组件 (component) 的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)应用程序服务器的EJB(Enterprise JavaBean)组件模型。此外,应用程序服务器可以管理自己的资源,例如看大门的工作(gate-keeping duties)包括安全(security),事务处理(transaction processing),资源池(resource pooling),和消息(messaging)。就象Web服务器一样,应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术。

  3、总之,关于Web服务器、应用服务器在软件初期存在一定的界定,但是随着软件的完善,慢慢应用程序服务器也包含了Web服务器,这就意味着可以把Web服务器当作是应用程序服务器的一个子集(subset)。Web服务器从开始的提供静态内容到通过引入相关模块与组件实现处理动态的能力,提供应用服务器的功能。  

 总结:严格意义上Web服务器只负责处理HTTP协议,只能发送静态页面的内容。而JSP,ASP,PHP等动态内容需要通过CGI、FastCGI、ISAPI等接口交给其他程序去处理。这个其他程序就是应用服务器。比如Web服务器包括Nginx,Apache,IIS等。而应用服务器包括WebLogic,JBoss等。应用服务器一般也支持HTTP协议,因此界限没这么清晰。但是应用服务器的HTTP协议部分仅仅是支持,一般不会做特别优化,所以很少有见Tomcat直接暴露给外面,而是和Nginx、Apache等配合,只让Tomcat处理JSP和Servlet部分

 注意:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑 (business logic)。

ASP.Net Core之详解服务器-基础概念

  通过上述一个完整的服务器架构应用于Web服务,主要包括域名服务器、应用服务器、缓存服务器、数据库服务器、文件服务器、邮件服务器、许可证服务器,不同的服务器各自有不同的功能要求,比如CPU性能、内存性能、安全性、网络性能等都各自不同,所以不断细化,专业化提升服务器的能力。

四、总结

  关于服务器从软件与硬件两个角度表述什么是服务器,服务器提供什么样的能力。由于业务体量不断变大,场景越来越复杂导致服务器不断的演变中定义不同类型的,不同功能,解决特定场景问题的服务,从而提供高性能,高可用,高扩展的服务器。在服务器中比较常见的Web服务器与应用服务器,从开始比较清晰的界限到都能提供各自功能,分界线不明显。

参考:https://www.cnblogs.com/zhaoyl/archive/2012/10/10/2718575.html、https://www.zhihu.com/question/20096067/answer/226652400

Most of the times these terms Web Server and Application server are used interchangeably.
在大多数时候,Web服务器和引用服务器这两个术语是可以互换使用的。
Following are some of the key differences in features of Web Server and Application Server:
以下是Web服务器和应用服务器在特性上的一些关键的差异:
Web Server is designed to serve HTTP Content. App Server can also serve HTTP Content but is not limited to just HTTP. It can be provided other protocol support such as RMI/RPC.
Web服务器的设计目的是提供HTTP内容,应用服务器也可以提供HTTP内容,但不限于HTTP,它还可以提供其他协议支持,如RMI / RPC
Web Server is mostly designed to serve static content, though most Web Servers have plugins to support scripting languages like Perl, PHP, ASP, JSP etc. through which these servers can generate dynamic HTTP content.
Web服务器主要是为提供静态内容而设计的,不过大多数Web服务器都有插件来支持脚本语言,比如Perl、PHP、ASP、JSP等,通过这些插件,这些服务器就可以生成动态的HTTP内容
Most of the application servers have Web Server as integral part of them, that means App Server can do whatever Web Server is capable of. Additionally App Server have components and features to support Application level services such as Connection Pooling, Object Pooling, Transaction Support, Messaging services etc.
多数应用服务器都将Web服务器作为其不可分割的一部分,这意味着应用服务器可以做任何Web服务器所能做的事情。此外,应用服务器有组件和特性来支持应用级服务,如连接池、对象池、事务支持、消息传递服务等
As web servers are well suited for static content and app servers for dynamic content, most of the production environments have web server acting as reverse proxy to app server. That means while servicing a page request, static contents (such as images/Static HTML) are served by web server that interprets the request. Using some kind of filtering technique (mostly extension of requested resource) web server identifies dynamic content request and transparently forwards to app server.
由于web服务器非常适合用于提供静态内容,而应用服务器适合提供动态内容,因此大多数生产环境都有web服务器充当应用服务器的反向代理。这意味着在页面请求时,web服务器会通过提供静态内容(例如图像/静态HTML)来解释请求,并且它还会使用某种过滤技术(主要是请求资源的扩展)识别动态内容请求,并透明地转发到应用服务器
Example of such configuration is Apache Tomcat HTTP Server and Oracle (formerly BEA) WebLogic Server. Apache Tomcat HTTP Server is Web Server and Oracle WebLogic is Application Server
In some cases the servers are tightly integrated such as IIS and .NET Runtime. IIS is web server. When equipped with .NET runtime environment, IIS is capable of providing application services.

ASP.Net Core之详解服务器-基础概念

tuqunfu IT技术类博客

__EOF__

ASP.Net Core之详解服务器-基础概念
本文作者: tuqunfu 本文链接: https://www.cnblogs.com/tuqunfu/p/18167750 关于博主: 评论和私信会在第一时间回复。或者直接私信我。 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...