本篇的主要目的是带领你们一块儿来使用ARR来实现一个三层部署架构。这里的三层部署架构主要是由:服务层,应用程序服务器层已经数据层实现。以下图所示: css
每次一提到"层"这个字的时候,彷佛感受这个字特别的惹火。不少朋友开始讨论起来,因而不少的看法和理解就出来了:有人说:架构就是分层;三层就是指:显示层,业务层,数据访问层… html
无论上述的理解和争论对错与否,这里不会对这些理论和概念进行过多的阐释,这里有一点提到的就是:不要将物理层Tier和逻辑层Layer混在一块儿讲,或者说,不要将应用程序的逻辑层与物理的部署层混为一谈! 数据库
注:在本身的学习和工做的经历中有这样的感受:不少时候,所学的东西会搅在一块儿,而且甚至感受他们相互矛盾,还会颠覆本身以前不少的理解和见解,有时候确实感受很是痛苦,可是也是像是凤凰的重生。其实这不是什么坏事,知识和经验就是在这过程当中,不断的思考,总结,提炼出来的!其实到后来你们就能够发现:咱们没有必要死扣一些概念,什么层啊,模式,都不是关键,锻炼出一种思惟才是最有价值的。 浏览器
咱们这里讲的是物理层的部署。 服务器
正如以前同样,咱们来作一些准备工做: 架构
另外,我也把三台服务器的相关配置说明一下: 学习
第一步:准备工做 spa
通常而言,咱们判断是不是对静态文件进行请求,主要是经过检查请求的中是否包含文件的扩展名,例如.js,.png等。固然,在一些状况下,咱们还以动态的方式来对静态文件的请求进行处理,例如,咱们站点中写了一个相似FileHandler的HttpHandler,而后经过相似的www.agilesharp.com/file?fileid=xxxxx的方式来 处理全部对文件的请求。这两种方式各有优缺点和各自的用途,咱们这里不作讨论。 htm
不少时候,咱们在静态文件放在站点的文件夹中,例如/images/,/css/,/js/等。下面,咱们开始演示,咱们为了确认对静态文件的请求是由安装了ARR所在的服务器处理的,咱们分别在三服务器的站点中放置三张名字同样可是内容不一样的图片,以下: 图片
其余服务器上面的站点结果和这个相似,只是把图片的内容改成了"安捷雨希"而已。
第二步:在ARR中配置对静态文件的请求
咱们进行这一步操做的主要目的就是:使得ARR所在的服务器来处理全部对站点静态文件的请求(为了起到演示做用,这里对静态文件的请求,咱们不会包括html的文件)。
下面,咱们就开始操做:
这个205服务器就是咱们安装了ARR的服务器,由于此时个人demo站点部署在8080端口,因此这里要开启"Advance setting"。
再添加第二台服务器,其上的站点是部署在80端口。
添加的结果就以下:
你们到这里就可能有点纳闷了:怎么只是添加了两台服务器呢,不是准备了三台服务器吗?
理由很简单,有一台服务器是做为数据库服务器,而不是做为http请求处理的服务器(换句话说,http请求不会发送到数据库服务器上去),而且数据库服务器是咱们在应用程序中经过链接字符串来链接的。
在我尚未配置Server Farm以前,我分别在两台服务器上浏览了站点:http://localhost:8080/images/logo.png,此时看到的结果以下:
从图中能够看到,我请求logo.png的时候,是应用程序的服务器(没有安装ARR的那个服务器)处理了这个请求。
下面咱们开始配置。
1. 选中建立的Server Farm
2. 选中"Routing Rules",以下:
3. 双击"Routing Rules",以下
主要注意图中标红的两个地方:第一个是配置哪些扩展名的文件不转发请求。在图中,咱们配置了*.png,就说明,若是ARR客户端要请求.png文件,那么ARR就不将这个请求转发给Server Farm中的其余服务器,而是有本机直接处理。
配置好了以后,咱们就点击"Apply",而后再次运行浏览器,来看效果。
你们看到上面的图,右边图是我在ARR所在的服务器发送请求获得的结果,而左边是我直接在应用程序服务器上面查看图片。
还记得在以前没有配置的时候,我在ARR服务器上面发送请求的时候,看到的是"安捷雨希",说明ARR转发了对png文件的请求;而当咱们配置以后,此时ARR就不在转发这个请求,而是本身处理,因此咱们看到了"agilesharp"的图片。
这里,依然给你们留一个做业:你们能够把对html文件的请求也不转发,看看效果!