web服务器

 1.web服务器

1.1技术见解

ASP,JSP,PHP

(1)ASP:微软:国内最早流行的就是ASP;

在HTML中嵌入了VB的脚本代码,ASP+DOM;(如果学习这个就去学C)

在ASP开发中,如下所示的这样子的基本一个页面都有几千行的业务代码,页面极其混乱,造成维护成本高,重构成本太高。

ASP里面主要使用的语言是C#语言。

示例代码如下:

<h1>
  <h1>  <h1>
      <h1>
          <h1>
             <h1>
     <h1>
<%System.out.println("hello world")
%>//中间要嵌入一些java的代码
          <h1>
             <h1>

   <h1>  <h1>
<h1>
//所有输出的都是在html里面进行写的,这样子嵌套的是非常麻烦的。

微软使用的都是IIS服务器(Windows),具体使用如下所示:

在Windows系统里面找到控制面板

点击卸载程序

 点击启用或关闭Windows功能 

之后我们即可发现Internet Information Services 可承载的Web核心该选项,当鼠标放置到该选项上面的时候会有注释即对应用程序进行编程,以利用核心IIS功能为HTTP请求功能。一般对于电脑而言,这个没有进行勾选,如果勾选上之后,就可以进行一些iis开发了,与此同时,还有远程连接客户端(Telnet客户端),TFTP客户端也没有进行勾选。

 

如果把这些进行勾选后,即可进行IIS相关方面的开发。

(2)PHP:

PHP开发速度很快,功能很强大,跨平台,代码很简单(70%网站)WP(开源的一些模板引擎)WP,WordPress 是一种使用 PHP 语言和 MySQL 数据库开发的开源、免费的 Blog(博客,网志)引擎

缺点:无法承载大访问量的情况下(局限性)

(3)JSP/Servlet(JSP本质是Servlet):

B/S:浏览器和服务器     C/S:客户端和服务器


深入分析B/S架构和C/S架构:

一、什么是C/S架构
C/S架构是第一种比较早的软件架构,主要用于局域网内。也叫 客户机/服务器模式。

它可以分为客户机和服务器两层:

第一层:  在客户机系统上结合了界面显示与业务逻辑;

第二层:  通过网络结合了数据库服务器。

简单的说就是第一层是用户表示层,第二层是数据库层。

  这里需要补充的是,客户端不仅仅是一些简单的操作,它也是会处理一些运算,业务逻辑的处理等。也就是说,客户端也做着一些本该由服务器来做的一些事情,如图所示:

C/S架构

C/S架构软件有一个特点,就是如果用户要使用的话,需要下载一个客户端,安装后就可以使用。比如QQ,office软件等。

1、C/S架构的优点:

1 C/S架构的界面和操作可以很丰富。(客户端操作界面可以随意排列,满足客户的需要)

2 安全性能可以很容易保证。(因为只有两层的传输,而不是中间有很多层。

3 由于只有一层交互,因此响应速度较快。(直接相连,中间没有什么阻隔或岔路,比如QQ,每天那么多人在线,也不觉得慢)

2、C/S架构的缺点:

可以将QQ作为类比:

1 适用面窄,通常用于局域网中。

2 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。

3 维护成本高,发生一次升级,则所有客户端的程序都需要改变。

二、什么是B/S架构
B/S架构的全称为Browser/Server,即浏览器/服务器结构。

Browser指的是Web浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现。

B/S架构的系统无须特别安装,只有Web浏览器即可。

其实就是我们前端现在做的一些事情,大部分的逻辑交给后台来实现,我们前端大部分是做一些数据渲染,请求等比较少的逻辑。

B/S架构的分层:

与C/S架构只有两层不同的是,B/S架构有三层,分别为:

第一层表现层:主要完成用户和后台的交互及最终查询结果的输出功能。

第二层逻辑层:主要是利用服务器完成客户端的应用逻辑功能。

第三层数据层:主要是接受客户端请求后独立进行各种运算。

如图所示:

B/S架构的优点:

1、客户端无需安装,有Web浏览器即可。 
2、BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。 
3、BS架构无需升级多个客户端,升级服务器即可。可以随时更新版本,而无需用户重新下载啊什么的。

B/S架构的缺点:

1、在跨浏览器上,BS架构不尽如人意。 
2、表现要达到CS程序的程度需要花费不少精力。 
3、在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。 
4、客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)

三、B/S架构的几种形式
第一种:客户端-服务器-数据库

 这个应该是我们平时比较常用的一种模式:

1、客户端向服务器发起Http请求

2、服务器中的web服务层能够处理Http请求

3、服务器中的应用层部分调用业务逻辑,调用业务逻辑上的方法

4、如果有必要,服务器会和数据库进行数据交换. 然后将模版+数据渲染成最终的Html, 返送给客户端

第二种:客户端-web服务器-应用服务器-数据库

 类似于第一种方法,只是将web服务和应用服务解耦

1 客户端向web服务器发起Http请求

2 web服务能够处理Http请求,并且调用应用服务器暴露在外的RESTFUL接口

3 应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给web服务器

4 web服务器将模版+数据组合渲染成html返回给客户端

第三种方法:客户端-负载均衡器(Nginx)-中间服务器(Node)-应用服务器-数据库

这种模式一般用在有大量的用户,高并发的应用中。

1、真正暴露在外的不是真正web服务器的地址,而是负载均衡器的地址

2、客户向负载均衡器发起Http请求

3、负载均衡器能够将客户端的Http请求均匀的转发给Node(中间)服务器集群

4、Node服务器接收到Http请求之后,能够对其进行解析,并且能够调用应用服务器暴露在外的RESTFUL接口

5、应用服务器的RESTFUL接口被调用,会执行对应的暴露方法.如果有必要和数据库进行数据交互,应用服务器会和数据库进行交互后,将json数据返回给Node

6、Node层将模版+数据组合渲染成html返回反向代理服务器

7、反向代理服务器将对应html返回给客户端

Nginx(负载均衡器)的优点有:

1、它能够承受、高并发的大量的请求,然后将这些请求均匀的转发给内部的服务器,分摊压力.

2、反向代理能够解决跨域引起的问题,因为Nginx,Node,应用服务器,数据库都处于内网段中。

3、Nginx非常擅长处理静态资源(img,css,js,video),所以也经常作为静态资源服务器,也就是我们平时所说的CDN

  比如:前一个用户访问index.html, 经过Nginx-Node-应用服务器-数据库链路之后,Nginx会把index.html返回给用户,并且会把index.html缓存在Nginx上,

  下一个用户再想请求index.html的时候,请求Nginx(负载均衡器)服务器,Nginx发现有index.html的缓存,于是就不用去请求Node层了,会直接将缓存的页面(如果没过期的话)返回给用户。

四、发展前景

1、 C/S和B/S各有优势,C/S在图形的表现能力上以及运行的速度上肯定是强于B/S模式的,不过缺点就是他需要运行专门的客户端,而且更重要的是它不能跨平台,用c++在windows下写的程序肯定是不能在linux下跑的。

2、对于B/S模式,它不需要专门的客户端,只要浏览器,而浏览器是随操作系统就有的,方便就是他的优势了。 
而且,B/S是基于网页语言的、与操作系统无关,所以跨平台也是它的优势,而且以后随着网页语言以及浏览器的进步, 
B/S在表现能力上的处理以及运行的速度上会越来越快,它的缺点将会越来越少。尤其是HTML5的普及,在图形的渲染方面以及音频、文件的处理上已经非常强大了。 
不过,C/S架构也有着不可替代的作用。
 


​​​​​​​sun公司主推的B/S架构(sun公司被orcle公司收购啦)

基于java语言的(所有的大公司,或者一些开源的组件都是用Java写的)

可以承载三高问题所带来的影响:(高并发、高可用、高性能)

语法像ASP,可以让学ASP的人快速转化学习JSP,加强市场强度。

1.2web服务器(IIS、Tomcat)

服务器是一种被动的操作,用来处理用户的一些请求和给用户一些响应信息

IIS(微软的:ASP,Windows系统中自带的)

Tomcat服务器,进行搜索(百度百科)

工作中面向百度编程

我们进入百度百科进行搜索之后出现如下资料:

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为比较流行的Web 应用服务器。

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个Java初学web的人来说,它是最佳的选择。

Tomcat 实际上运行JSP 页面和Servlet。Tomcat最新版本为10.0.14

Tomcat的logo如下所示:

工作3-5年后,可以尝试手写Tomcat服务器

下载Tomcat

下载一个软件需要做的事情:

1.安装或者进行解压

2.了解配置文件(配置环境变量)及目录结构

例如,我们了解一下java的结构,如下所示:

里面有jdk和jre两个文件夹,我们打开jdk来看。 



摘要:JDK是 Java 语言的软件开发工具包(SDK)。在JDK的安装目录下有一个jre目录,里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib合起来就称为jre。

一、JDK
JDK(Java Development Kit) 是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API 包括rt.jar)。
JDK是java开发工具包,基本上每个学java的人都会先在机器 上装一个JDK,那他都包含哪几部分呢?在目录下面有 六个文件夹、一个src类库源码压缩包、和其他几个声明文件。其中,真正在运行java时起作用的 是以下四个文件夹:bin、include、lib、 jre。有这样一个关系,JDK包含JRE,而JRE包 含JVM。

      bin:最主要的是编译器(javac.exe)
      include:java和JVM交互用的头文件
      lib:类库
      jre:java运行环境
1.bin:最主要的是编译器(javac.exe)

2.include:java和JVM交互用的头文件

3.lib:类库

4.jre:java运行环境
(注意:这里的bin、lib文件夹和jre里的bin、lib是 不同的)

总的来说JDK是用于java程序的开发,而jre则是只能运行class而没有编译的功能。

二、JRE

JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器)
JRE是指java运行环境。光有JVM还不能成class的 执行,因为在解释class的时候JVM需要调用解释所需要的类库lib。 (jre里有运行.class的java.exe)
JRE ( Java Runtime Environment ),是运行 Java 程序必不可少的(除非用其他一些编译环境编译成.exe可执行文件……),JRE的 地位就象一台PC机一样,我们写好的Win64应用程序需要操作系统帮 我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。

三、JVM

JVM(Java Virtual Machine),即java虚拟机, java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。针对java用户,也就是拥有可运行的.class文件包(jar或者war)的用户。里面主要包含了jvm和java运行时基本类库(rt.jar)。rt.jar可以简单粗暴地理解为:它就是java源码编译成的jar包。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

四、JDK、JRE、JVM三者的联系与区别

1.三者联系:
JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和 lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

2.三者区别:
a.JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。
b.JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。


jdk里面的文件如下所示:

bin就是我们的执行文件,比如javac、javadoc(生成文件)、javaws、jdb.exe(db控制台)、keytool(可以生成证书)、jsadebugd.exe(监控程序)都在这里面,bin目录下的文件如下所示:

include目录下的文件:include底层有用C++写的东西,里面包含了很多C的源文件(后缀名为.h的文件),win32为一些系统的底层。

 jre为java运行环境(里面有一些大量的环境)

 jre里面的lib文件夹有一些jar包,applet为处理图形的,fonts为字体,security为一些安全的。java的核心jar包为rt.jar包(为jre里面的)。

 

 将该rt.jar包进行解压,为如下所示:(java的核心机制就是来自于rt.jar包)

解压后的文件如下所示:

 

 string是在java.lang下面。

 

jre包里面的lib文件夹里面的内容是应该在反射的时候写的.jre里面的一个bin目录是最核心的一个目录。

 将jdk文件里面的src.zip进行解压后出现相同的文件目录。里面所存的文件与jre所存文件的区别在于jdk里面的文件为.java,而jre里面的文件为.class。

jre文件里面的java的lang包里为.class文件

 3.最后了解所下载的这个东西的作用。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直再追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值