一、概念
前端控制器模式用一个中心来处理所有到来的请求,最后调用视图将结果呈现给用户。此模式是Java企业应用的核心模式之一,但在PHP中并没有受到广泛的喜爱,部分原因是初始化前端控制器所需要的开销会导致系统性能下降。
二、为什么要使用前端控制器?
(1)当请求可以发送到系统中多个地方时,很难避免代码重复。
例如你可能需要验证用户、检查参数,多个页面都要执行这些操作,如果不使用前端控制器,可以从一个页面复制该操作相关的代码并粘贴到另一个页面,但是这样的话,当需要修改某个操作时,其他粘贴的代码也要随着修改,给代码的维护带来了很大的麻烦。
(2)当系统控制器和视图混杂在一起时,管理视图的切换和选择是另一个难点。
在一个复杂的系统中,随着输入和逻辑层中操作的成功执行,一个视图中的提交动作可能会产生任意数目的结果页面。从一个视图跳到另一个视图时,可能会产生混乱,特别当某个视图被用在多个地方的时候。
三、实践
(1)应用程序助手(ApplicationHelper类)
此类的主要作用是读取配置文件中的数据并使客户端代码可以访问这些数据。可以利用应用注册表来缓存这些数据,这样可以有效地保证复杂而且耗费时间的初始化过程只在第一次请求是发生,而之后所有的请求都能从中受益。
(2)命令解析器
前端控制器需要通过某种策略来决定如何解释一个HTTP请求,然后调用正确的代码来满足这个请求。为了方便代码的重构和实现多态,最好使用一个特定的类来完成这任务。
通常通过运行一个Command对象来调用应用程序逻辑。Command对象通常根据请求中的参数或URL的结构来决定选择哪个命令。你可以在一个配置文件或一个数据结构(逻辑方案)中测试该参数,或者直接查找文件系统(物理方案)中是否存在与参数相对应的类文件。
(3)请求封装
在PHP中,对系统的请求会被自动封装到一个全局有效的数组中。前端控制器使用类来封装请求。为什么不直接查询$_REQUEST,$_GET,$_POST呢?当然也可以这样做,但是把请求处理集中到一个地方,就有了更多的选择。比如,可以对所有的请求使用过滤器。
(4)执行命令
通过上面三步,运用命令模式,指定到命令相关类,执行命令!
四、缺点
(1)前期开发工作过多,如果项目太小以致于前端控制器在系统中的比重太大,那么不适合。
(2)每次请求都要加载所有的配置信息(其实即使不用前端控制器也常常这样),还需要额外的信息,如命令和视图的分布结构等。这些开销很容易通过缓存来降低。最有效的方法是把配置信息直接写到代码中,但是如果还有其他不懂技术的用户来维护,最好把配置信息单独放到一个配置文件中。
五、优点
(1)一旦在项目中成功部署了前端控制器,就可以很快地在其他项目中再次使用它。可以把前端控制器的功能提取到共享库代码中,打造出一个可重用的开发框架。
(2)集中了系统的表现逻辑,这意味着可以在一个地方同时处理请求和选择视图。这样做能降低代码重复和BUG发生的几率。
(3)易于扩展。搭建好前端控制器的核心部分后,可以很方便地增加新的Command类和视图。
相关推荐
9. 中间件:中间件可以在请求到达控制器之前或之后执行特定操作,如权限验证、日志记录等。 通过对《ThinkPHP5控制器从入门到精通》的学习,你将能够熟练地运用控制器进行业务逻辑处理,理解其在整个MVC架构中的...
模型负责业务逻辑,视图负责展示数据,控制器接收并处理用户请求,协调模型和视图。理解MVC模式对于构建可维护和可扩展的框架至关重要。 3. **请求处理**:在Java Web框架中,请求处理是核心功能之一。这涉及到URL...
在实际开发过程中,开发者需要具备PHP基础,了解MVC(模型-视图-控制器)架构模式,因为这种模式在PHP web开发中广泛应用。同时,熟悉前端技术如HTML、CSS和JavaScript,以及数据库管理,如MySQL,也是必要的,因为...
在系统向某个 NS 提交 IO 命令之前,这个 NS 必须与某个控制器关联。 4. NVMe 工作机制 NVMe 是基于成对的 Submission Queue(简称 SQ)和 Completion Queue(简称 CQ)机制工作,它们存在于主机内存里。...
在解析给定文件的详细知识点之前,需要明确报告的主题是关于机器人行业的专题报告,特别是关注新兴领域的拓展和高性价比对工业机器人控制器国产替代的加速效应。报告提及了新能源汽车、光伏行业和风电行业的发展态势...
在现代企业网络架构中,域控制器(Domain Controller,简称DC)扮演着至关重要的角色,它是网络系统的核心部分,负责处理用户的登录验证、管理网络内计算机及用户的账户和权限,以及提供目录服务等。为了提高企业的...
1. **MVC架构**:模型-视图-控制器(Model-View-Controller)是一种常见的Web应用设计模式,用于分离业务逻辑、数据处理和用户界面。在Java Web中,Spring MVC框架广泛用于实现这种架构。 2. **配置文件**:如web....
4. 服务端架构设计:企业级应用通常涉及微服务、SOA(面向服务架构)或MVC(模型-视图-控制器)架构。源代码可能会展示如何使用ASP.NET Core构建这些架构,以及如何设计可扩展、可维护的服务。 5. 用户体验优化:...
本文档中提到了使用Filter作为控制器的一种方式,这是一种较为特殊的实现方法。 #### 使用Filter作为控制器的MVC设计 在传统的MVC设计中,Servlet通常扮演控制器的角色,负责处理HTTP请求并调用相应的业务逻辑。...
- **BYPASS功能**:当控制器出现故障时,BYPASS端口能够物理上导通两端,确保网络的正常使用。 ##### 2. 部署方式 - **桥接方式**:IP-guard网络控制器通常以桥接方式接入网络,位于需要限制访问的计算机之前。 - ...
Servlet过滤器允许在请求到达目标Servlet之前或之后对其进行拦截和处理,实验十一讲解了如何实现和配置过滤器,以实现预处理、后处理或修改请求和响应。 实验环境的配置,包括JDK、MyEclipse、Tomcat和MySQL,是...
4. **路由与控制器**:在MVC(Model-View-Controller)架构中,路由负责分配URL请求,控制器处理这些请求并调用相应的模型和视图。这有助于组织代码结构,提高可维护性。 5. **安全性**:动态网站需要考虑的安全...
在深入研究这个源码之前,你需要有PHP基础,了解MVC(模型-视图-控制器)架构,以及可能涉及到的前端技术,如HTML、CSS和JavaScript。此外,熟悉MySQL数据库管理和Linux服务器环境也有助于部署和运行此系统。通过...
1. **MVC架构**:深喉咙企业网站生成系统很可能采用了Model-View-Controller(模型-视图-控制器)设计模式,这是一种常见的Web应用架构,将业务逻辑、数据和用户界面分离,提高代码的可读性和可维护性。 2. **...
企业库5.0相较于之前的版本进行了诸多改进,其中最重要的一项是引入了依赖注入容器Unity,这极大地简化了对象的创建和生命周期管理。 **什么是企业库?** 企业库包含了一系列应用程序模块和核心架构,旨在帮助...
系统可能采用了MVC(Model-View-Controller)设计模式,这是一种常见的软件架构模式,将应用程序分为三个核心部分:模型负责管理数据和业务逻辑,视图负责展示数据,控制器则协调模型和视图之间的交互。在这种模式下...
### 高可用分布式架构设计与实践-内训方案 #### 第一课:知识原理篇 ...综上所述,本内训方案涵盖了高可用分布式架构设计与实践的多个方面,从理论基础到具体实践,旨在帮助企业构建一个既稳定又高效的技术平台。
- **控制器基类**: 控制器基类提供了一系列可重写的方法,例如全局异常处理等。 - **前后台验证**: 通过服务器端Model Metadata和客户端的Unobtrusive JavaScript实现前后台的统一验证,减少了开发工作量。 #### 四...
4. **MVC(Model-View-Controller)架构**:这是一种常见的Web开发模式,将业务逻辑(模型)、用户界面(视图)和应用控制逻辑(控制器)分离,提高代码可读性和可维护性。 5. **安全机制**:源码可能包含了身份...
6. **控制器(Controller)**:如果使用了MVC(模型-视图-控制器)架构,控制器负责处理请求并调用相应的模型和视图。 7. **模型(Model)**:与数据库交互,执行查询和数据操作。 8. **视图(View)**:显示给用户...