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

自己写一个简单的服务器. 面向对象分析与设计第一步:获取需求(基于用例) 功能:1,支持html静态网页,2,支持常用HTTP请求,且容易扩展支持不现请求 3,可以发布站点 补充:至于对动态网页等高级功能,只要确保可扩展性就可以了. 目标系统客户角色:1,上网者 2,浏览器客户端 3,网站发布人 (暂时想到主要的这几个角色) 只要满足了他们的主要需求,这个服务器也就是成功的. 客户发起动作(用例起点):U1:上网者------>打开网站(www.xxx.com) U2:上网者------>提交…
随着年龄与经验的增加,对于软件方面的分析与设计也会有一些新的认识.下面做个近期的总结: 1,关于到底用不用作设计的问题: 在最近两个公司,原有人马是不会作设计(我自己的感觉),也察觉不到作设计的任何冲动.但是工作状态却是:压任务,赶进度,代码大量重复,错误丛生.工作几年来,这种公司司空见惯,但是我愈发不能容忍.所以本人立志要奋发图强,从我做起. 在小项目上,不必要作什么架构设计,分层,常见于一个人的项目.在三个人以上的项目上,就有必要进行模块分解了,尤其是跨平台的模块.分解模块可以从高层上防止代…
面向对象分析与设计第二步:健壮性分析,完善对象 通过上一篇的分析,已经得到了构建系统中最重要的对象-----实体对象,它们封装着构成系统最重要的数据,实体数据是系统的生命. 但是光有实体还系统是运转不起来的,这里通过健壮性分析来发现边界,控制对象,以大致完成系统对象的发现. 健壮性分析同样是以用例为单位.通过对每一个用例的分析,从中发现以及抽象出边界对象,控制对象. 边界对象:接收外部命令:控制对象:程序逻辑:实体对象:重要数据: 从用例1(U1)开始分析: 上网者:打开网站(www.xxx.c…
面向对象分析与设计第二步:寻找对象,建立问题域模型 1,用例场景描述 接上一篇中的用例,编写用例场景 U1: 上网者:打开网站(www.xxx.com) 浏览器:连接网站 目标系统:接受连接 检查连接合法性(主要是因为服务端是容易受攻击的,所以需要加入安全检查) 合法,接入连接,等待HTTP请求(不合法看备选流程) 浏览器: 发送GET请求 等待回复 目标系统:收到GET请求 处理GET请求 向浏览器发回请求回复 回复完成,断开连接 备选流程:连接不合法,断开连接. U2 上网者:点击提交按钮…
上篇已经开始了系统内部的分析,并且得到一些分析对象.在整个动作场景中,我们得到了一些粗略的对象.有必要对对象进行分析,合并,再抽象. 实质是职责的合理分配,使得系统合乎功能性,同时得到最大的可扩展,可维护性.建议用图表示,但不要忘记任务是职责分配到对象. 网站(处理连入) 连接(处理数据接收,发送) 请求处理器(对请求处理 GET POST) 请求(各种请求的抽象) 回复(各种回复的抽象) 连接检查器 这里把发送回复去除,因为这个可以归结到请求处理中. 对第二个主要用例进行健壮性分析: U5 (…
在日常的开发中,我们用过很多开源的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…
嵌入式web服务器子系统 一.嵌入式web服务器的控制流程 如下图所示,嵌入式web服务器可实现通过网络远程控制嵌入式开发板,便捷实用. 控制流程:浏览器 --->>>嵌入式开发板 1)浏览器发送命令,开发板的web服务器接收请求,在开发板" #boa "运行web服务器后,其应用程序配置文件boa_conf内调用指定目录/cam/下的CGI程序 (arm-linux-gcc movctl.c -o movctl.cgi): 2)CGI程序调用开发板系统的其他程序,实…
一.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…
     今天准备较详细的对比一下apache httpd与nginx两个web服务器的异同点.优缺点.由于我并不是做web开发的,所以有什么理解错误还请指出,想要了解它们是因为工作中有时候会用到它,有系统中用到了nginx+apache.本文绝大多数资料都是摘抄网上,自己做的只就是整合网上零散的资源然后加上自己的一点见解.简单的说apache httpd和nginx都是web服务器,但两者适应的场景不同,也就是两者专注于解决不同的问题.apache httpd:稳定.对动态请求处理强,但同时高…