- 3
- 0
- 约4.72千字
- 约 5页
- 2017-07-09 发布于河南
- 举报
什么是单一入口应用程序
什么是单一入口应用程序?在解释什么是单一入口应用程序之前,我们先来看看传统的 web 应用程序。news.php 显示新闻列表news_edit.php 显示新闻编辑页面这两个页面不但分别实现了两个功能,还成为了应用程序的两个入口。那什么是入口啊?打个比方,大家上 WC,都是男生进一个门,女生进一个门。这两个门就是 WC 的两个入口。呵呵,上面的例子应该很好理解吧。那稍微变换一下,单一入口的概念就很容易理解了。现在我们是进一个公共 WC,不管男女都是从最外面的入口进入,交了钱以后才分别进两个门。那最外面的入口就是这个 WC 的单一入口。所以单一入口的应用程序实际上就是说用一个文件处理所有的 HTTP 请求。例如不管是新闻列表功能还是新闻编辑功能,都是从浏览器访问 index.php 文件。这个 index.php 文件就是这个应用程序的单一入口。index.php 如何知道用户是要使用哪一个功能呢?很简单,我们访问 index.php 时跟上一个特定的参数就行了。例如 index.php?action=news 就是显示新闻列表,而 index.php?action=news_edit 就是新闻编辑。而在 index.php 里面,仅用两行代码就可以实现这种效果。 ?php$action = $_GET[action] == ? index : $_GET[action];include(files/ . $action . .php);?上面的代码中,第一行是从 url 中取出 action 参数。如果没有提供 action 参数,就设置一个默认的 index 作为参数。第二行代码就是根据 $action 参数调用不同的代码文件,从而实现单一入口对应不同功能的效果。单一入口应用程序的入口文件很复杂?有些朋友可能以为单一入口程序的 index.php 会像面条一样复杂,其实是误解。例如我现在的应用程序入口文件只有下面几行: ?phpdefine(APP, realpath(../libs/website));define(LANG, gb2312);define(DEBUG, 1);require(../libs/flea1/basic.php);run();?足够简单了吧?当然了,在 index.php 里面写上一长串 switch case 绝对是拙劣的实现方式。但这纯粹是开发者自己的设计和实现问题,而不是单一入口应用程序这种设计思想的问题。补充说明:这里提到 switch case 并不是说用了 switch 就代表“落后”、“土气”等。只是说在 index.php 这个入口程序里面写上一堆 switch case 不利于程序的修改和维护,所以是一种不好的用法。单一入口应用程序的设计思想当web服务器(apache或者iis)收到一个http请求时,会解析该请求,确定要访问哪一个文件。例如 /news.php 的解析结果就是要求web服务器解析 news.php 文件,并返回结果给浏览器。现在看看单一入口应用程序的 index.php 文件,就会发现 index.php 实际上根据 url 参数进行了第二次解析。完成这个解析的程序一般称为 Dispatcher(中文的准确翻译我也不知道),大概意思就是将不同的请求转发到不同的处理程序进行处理。在单一入口应用程序中,index.php 和 web服务器一起构成了一个 Dispatcher,根据 http 请求和 url 参数来确定请求的处理程序。了解了 Dispatcher 的概念后,我们可以发现前面提到的两行代码实际上就是一个最简单的 Dispatcher 实现: ?php$action = $_GET[action] == ? index : $_GET[action];include(files/ . $action . .php);?诚然,对于一个安全、健壮的应用程序,Dispatcher 肯定不是上面那么简单。在调用实际代码前,还会加上各种判断、安全性检查等。例如判断 url 指定的功能是否可以访问以及 url 中包含了无效的参数。看到这里,朋友们肯定会说:单一入口程序就多了就这样一个 dispatcher ,和我直接做成 news.php、news_edit.php 等单个文件相比有什么好处啊?单一入口应用程序的优势单一入口应用程序的所有http请求都是通过 index.php 接收并转发到功能代码去的,所以我们在 index.php 里面就能完成许多实际工作。这里我只拿安全性检查为例详细说明一下:由于所有的 ht
您可能关注的文档
最近下载
- 应用文写作求职信.pptx VIP
- 注册安全工程师考试《安全生产专业实务(其他安全)》题库(案例分析题)10211.pdf VIP
- 安徽单招考试2025、2025分类考试真题语文数学英语试题(含答案).pdf VIP
- 41834马工程西方文学理论全套PPT课件.pptx
- 粉尘涉爆安全教育课件.ppt VIP
- 协同治理机制经典文献推荐.docx VIP
- 1.国家电力投资集团有限公司光伏项目工程建设管理标准化工作手册.docx VIP
- CECS246-2008 给水排水工程顶管技术规程.pdf VIP
- 人教版(2024)七年级下册英语 Unit 6 Rain or Shine 教案(单元整体教学设计).docx
- 2025年苏州农业职业技术学院单招笔试英语试题库含答案解析.docx VIP
原创力文档

文档评论(0)