web框架基础实现介绍一—开篇

其实在以前写网络编程大并发实战的时候就已经讲过IO框架部分,而本次讲的web框架只是把IO收到之后的业务应用处理的框架加进去。

总框架

万变不离其宗,当前框架总体 IO连接处理+业务处理这样的模式。如果是分布式,那么还会加上路由,集群,负载均衡等基础模块,而基于管理方便考虑还会加上配置管理,服务治理等周边模块。本次我们的介绍会屏蔽这些周边东西,直击比较底层的本质。如果要了解这块内容,可以去看看dubbo框架。

                                           image

在这个基础上,目前市面上的成品WEB服务器,一般又会细分出两个,一个是偏向处理连接web服务器如appache、nginx,还一类就是带连接,主要作为应用处理容器的应用服务器如jetty 、tomcat,当前我们要说的是变向后者。而在JAVA系中,作为应用处理的一个核心关键概念就是servlet,那么我们把上面这个图扩展下,就可以比较清晰的了解到这之间的相互关系及各自在这个web框架中的位置作用。

                                       image

左边部分即为tomcat,jetty之类的应用服务,主要功能其实偏向装载servlet的容器,servlet在JAVA中就是处理请求应答业务的模块,而其 connector模块为其弱点,所以一些追求高性能的后台服务就自己搞connector,以NIO,AIO为基础,netty是当前高并发架构后台服务connector常用的NIO框架。同时我们还有右边servlet部分,当然servlet就是处理请求应答的一个东西,接口虽然一致了,但是实现还是有多种多样,所以很多时候servlet也有实现好的基本款供选择,请求的解析,应答的封装这些都帮你搞定了,那么你就可以只专注业务就好了。而阿里的开源框架DUBBO就是基本给你实现了上图中的所有功能。你们只需要写你自己的业务接口服务。

spring

还是得说说spring。我们知道各个部件都准备好了,总得把他们放在一起组装起来——这个其实还是简单的,那么接下来的一个问题,我们还想把各个部件灵活替换——即把相互之间的依赖关系解耦,那么spring这个框架就是这么个功效。当你把一部大炮准备好了之后,你发觉炮管短小,威力不足,OK,通过spring你可以随时很方便的替换上强有力的炮管,威力加强而不影响其他人。这是spring 核心的作用,这也是为什么不管啥框架,都会把他放到spring 上(至少兼容)组装的原因。以 spring为中心,组合上各个后台功能模块,加上合理的设计就组成了我们各式各样的web架构。

                                                 image

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>