web服务器分析与设计(三)】的更多相关文章

面向对象分析与设计第二步:健壮性分析,完善对象 通过上一篇的分析,已经得到了构建系统中最重要的对象-----实体对象,它们封装着构成系统最重要的数据,实体数据是系统的生命. 但是光有实体还系统是运转不起来的,这里通过健壮性分析来发现边界,控制对象,以大致完成系统对象的发现. 健壮性分析同样是以用例为单位.通过对每一个用例的分析,从中发现以及抽象出边界对象,控制对象. 边界对象:接收外部命令:控制对象:程序逻辑:实体对象:重要数据: 从用例1(U1)开始分析: 上网者:打开网站(www.xxx.c…
随着年龄与经验的增加,对于软件方面的分析与设计也会有一些新的认识.下面做个近期的总结: 1,关于到底用不用作设计的问题: 在最近两个公司,原有人马是不会作设计(我自己的感觉),也察觉不到作设计的任何冲动.但是工作状态却是:压任务,赶进度,代码大量重复,错误丛生.工作几年来,这种公司司空见惯,但是我愈发不能容忍.所以本人立志要奋发图强,从我做起. 在小项目上,不必要作什么架构设计,分层,常见于一个人的项目.在三个人以上的项目上,就有必要进行模块分解了,尤其是跨平台的模块.分解模块可以从高层上防止代…
自己写一个简单的服务器. 面向对象分析与设计第一步:获取需求(基于用例) 功能:1,支持html静态网页,2,支持常用HTTP请求,且容易扩展支持不现请求 3,可以发布站点 补充:至于对动态网页等高级功能,只要确保可扩展性就可以了. 目标系统客户角色:1,上网者 2,浏览器客户端 3,网站发布人 (暂时想到主要的这几个角色) 只要满足了他们的主要需求,这个服务器也就是成功的. 客户发起动作(用例起点):U1:上网者------>打开网站(www.xxx.com) U2:上网者------>提交…
面向对象分析与设计第二步:寻找对象,建立问题域模型 1,用例场景描述 接上一篇中的用例,编写用例场景 U1: 上网者:打开网站(www.xxx.com) 浏览器:连接网站 目标系统:接受连接 检查连接合法性(主要是因为服务端是容易受攻击的,所以需要加入安全检查) 合法,接入连接,等待HTTP请求(不合法看备选流程) 浏览器: 发送GET请求 等待回复 目标系统:收到GET请求 处理GET请求 向浏览器发回请求回复 回复完成,断开连接 备选流程:连接不合法,断开连接. U2 上网者:点击提交按钮…
上篇已经开始了系统内部的分析,并且得到一些分析对象.在整个动作场景中,我们得到了一些粗略的对象.有必要对对象进行分析,合并,再抽象. 实质是职责的合理分配,使得系统合乎功能性,同时得到最大的可扩展,可维护性.建议用图表示,但不要忘记任务是职责分配到对象. 网站(处理连入) 连接(处理数据接收,发送) 请求处理器(对请求处理 GET POST) 请求(各种请求的抽象) 回复(各种回复的抽象) 连接检查器 这里把发送回复去除,因为这个可以归结到请求处理中. 对第二个主要用例进行健壮性分析: U5 (…
模块.CGI.FastCGI三种方式介绍 以PHP脚本为例: 模块方式是指Web服务器通过libphp5.so模块调用PHP服务,模块将相关函数嵌入Web服务请求处理流程,不需要额外解释器进程.注意,libphp5.so是PHP提供的,不是apache自带的. CGI模式是指Web服务器在本地启动一个解释器进程执行PHP脚本,解释完毕后关闭进程.这种方式只适用于本地,并且是串行执行,效率较低. FastCGI模式是指由单独的进程管理器如PHP-FPM启动并管理多个解释器进程,Web服务器只需将脚…
在日常的开发中,我们用过很多开源的web服务器,例如tomcat.apache等等.现在我们自己实现一个简单的web服务器,基本的功能就是用户点击要访问的资源,服务器将资源发送到客户端的浏览器.为了简化操作,这里不考虑资源不存在等异常情况.web服务基于的是HTTP协议,用户在浏览器的地址栏输入要访问的地址,服务器如何得到该地址是个关键.先看下一般的HTTP请求和响应报文的一般格式: HTTP 请求报文 HTTP 响应报文 web服务器获取一个用户的连接时,会初始化一个线程和用户通信,代码如下:…
一.参考网址 1.源码的github地址 二.网页是采用文件读写方式,还是转换为数组方式? 1)其通过宏定义“WEBS_PAGE_ROM”来区分,我是在websPageReadData()(page.c)函数源码发现的 int websPageReadData(webs_t wp, char *buf, int nBytes) { #ifdef WEBS_PAGE_ROM a_assert(websValid(wp)); return websRomPageReadData(wp, buf, n…
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.blog.51cto.com/2033581/1285332 大纲 一.前言 二.Web服务器提供服务的方式 三.多进程.多线程.异步模式的对比 四.Web 服务请求过程 五.Linux I/O 模型 六.Linux I/O 模型具体说明 七.Linux I/O模型的具体实现 八.Apache 的工作模式 九.支持高并发的Web服务器 十.Nginx 详解 一.…
一.BOA嵌入式服务器的移植 step1:下载BOA服务器并解压,进入boa下面的src目录,执行./configure生成必须的配置文件以及Makefile step2:修改Makefile文件 cc=arm-linux-gcc cpp=arm-linux-gcc -E step3:编译make 编译时出错:util.c:100:1:error:posting "t" and "->" does not give a vaild preprocessing…