LAMP架构下的Web开发概念、流程及优化策略(二)

简介:

六、目前流行的PHP框架 

应用场景二: M (业务模型,应用者编写)

C (业务控制器,应用者编写,由框架控制器自动载入)

V (视图,应用者编写,框架自动载入)

现实中复杂应用场景:

1.用户请求: http://domain/blog/list/

2.分析URL,实例化逻辑控制类blog,执行方法list

3.在控制类news,又分别实例化业务模型类bloguser,并做相应处理.

4.业务模型类blog,user,调用数据模型(专用,M),对数据进行处理.

5.回到逻辑控制类中,展现视图$this->view->output( );

 

运用中需要注意的地方

 PHP没有持久层,每一次访问请求都是独立运行,建立的模型对象不能持久存在,无法跨访问复用.如果框架/应用的设计过于繁琐,每次装载/初始化都会浪费不少时间.

 各层之间的耦合度尽量降到最低,尤其是业务模型和业务逻辑之间要尽量分离.以便日后修改或复用.

 PHP本身只有较少功能是抛出异常,大部份是抛出错误(Notice,warning,error),代码编写中应时常对应用环境的正确性做手工检查,不符合条件时手工抛出异常,并设置异常接收器统一处理

 

 单入口模式

http://domain/index.php?control=blog&action=list

http://domain/index.php?control=news&action=read

 多入口模式

http://domain/blog.php?action=list

http://domain/news.php?action=read

 PathInfo模式

http://domain/index.php/blog/list/

http://domain/index.php/news/read/

 Rewrite模式

http://domain/blog/list/

http://domain/news/read/

Rewritepathinfo的好处:对搜索引擎友好,对用户更直观

 

九、数据库抽象层、Active recode

 数据库抽象层的作用

减少与具体数据库的底层接触,提供跨数据库平台的访问接口,以实现数据操作与数据库类型的无关性.方便数据库系统的迁移变更.

 PHP本身提供的抽象层

Pear::DB(php4),PDO(php5,6)

 框架中引入的各种类Active Recode系统

目的:将数据库字段与映射到对象,不用关心具体的SQL语句,只需要操作数据对象及调用相关的方法即可实现数据的CRUD操作。

好处:模型化了数据库,快捷开发,是数据库抽象层的进一步进化。

缺点:对于复杂数据模型的处理较为无力,例如多表连查、子查询。

缺乏灵活性,比如只想要一列数据,却取出了整行。

与数据库字段名的耦合度太高。如通过配置改进,执行效率又打折扣。

难以应付复杂的Web环境。(多种数据库,分布式数据库,缓存系统介入)

 

十、模板引擎

  

 为什么引入模板引擎

视图:在web开发中通常就是指前端页面。模板引擎的引入,是为了实现视图层的分离,降低视图与逻辑、模型部份的耦合度。使得前端页面与程序部份可以并行工发、轻松整合的工具

 常见的模板引擎及特点

PHP中常用的模板引擎有 Smarty, SmartTemplate

其中smarty提供了强劲的功能,STE则非常轻巧。

两者的核心原理,都是将页面中的变量标签替换成通过assign方法注册的PHP运行变量,并将替换后的页面(“编译”后的页面文件)生成缓存保存在磁盘中。或者提供一定的逻辑控制功能供前端使用。这样即方便将程序和视图分离,使前端设计人员更着重于表现和数据,而不用关心程序上的流程.

 缺点

初次加载模板时,因生成缓存,需要额外的处理开销和IO开销

之后加载模板时,会判断模板文件的最后修改时间是否大于生成的缓存文件时间,亦有一定的额外IO开销.

 

使用模板引擎的注意事项

 

 

 

八、访问模式 

 

 Qee /FleaPHP (领域设计驱动)
 ThinkPHP (大的类库J
 Zend FrameworkPearOOP版)
 Yii 
 KiwiPHP (工业微内核)
 Symfony (配置最简单)

七、WEB中的MVC开发模式

应用场景一: M (数据模型,框架提供)

C (控制器,框架实现)

V (视图,应用者编写,框架自动载入)

应用者编写的,是供控制器装载的业务处理类

 

 

 尽量折分公用组件。

 

 不要在视图中使用太多的控制语句

就以前的经验来看,简单的if,变量循环输出即已足够。

在视图中加入太多的控制语句会带来的问题,是对设计思想的破坏,因为它打乱了将视图层独立出来的最初目的,让前端的设计人员不得不过多的关注“程序”而非页面本身。要不然就得由程序员最终回头修改前端设计人员已经做好的模板文件。

更重要的一点时:如果在模板中引入太多的控制语句,那还不如直接在页面中写<?php ,因为PHP的本身就是模板引擎。无论哪种都快不过它。

所以,尽量将控制放在PHP程序体内,不要放到视图中去跑.

 

十一、LAMP架构下的加速系统

 

 

十二、各级加速系统说明

 

 

 

 WEB服务层

Nginx :自身支持反向代理,提供简单的负载均衡及从错机制,能很方便的搭建起web服务集群.

Lighttpd:超轻量,合适搭建静态访问服务器

Squid:对动态内容亦能做缓存处理.

 PHP

APC:缓存opcode,减少了扫描和编译阶段,但仍无法实现持久对象.纯脚本效率提高在200%--500%,应用场景下实测通常能提高效率一倍.

XCACHE

 数据层

共享内存

Memcache: Key=>Value对形式的内存数据缓存服务.基于TCP连接.常用于缓存数据库查询结果.支持分布式.

缺点:关机即无,每次连接的时间开销大.

 

 

 

 

推荐的工具

 

 Editplus+PHP

 XDEBUG+Eclipse PDT

 SmartTemplate

Xdebug+ WinCacheGrind
 

 













本文转自百度技术51CTO博客,原文链接:http://blog.51cto.com/baidutech/748346 ,如需转载请自行联系原作者
相关文章
|
5天前
|
敏捷开发 监控 数据管理
构建高效微服务架构的五大关键策略
【4月更文挑战第20天】在当今软件开发领域,微服务架构已经成为一种流行的设计模式,它允许开发团队以灵活、可扩展的方式构建应用程序。本文将探讨构建高效微服务架构的五大关键策略,包括服务划分、通信机制、数据管理、安全性考虑以及监控与日志。这些策略对于确保系统的可靠性、可维护性和性能至关重要。
|
18天前
|
API 数据库 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第8天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构面临着可扩展性、维护性和敏捷性的挑战。为了解决这些问题,微服务架构应运而生,并迅速成为后端开发领域的一股清流。本文将深入探讨微服务架构的设计原则、实施策略及其带来的优势与挑战,为后端开发者提供一种全新视角,以实现更加灵活、高效和稳定的系统构建。
23 0
|
22天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
6天前
|
消息中间件 监控 持续交付
构建高效微服务架构:后端开发的进阶之路
【4月更文挑战第20天】 随着现代软件开发的复杂性日益增加,传统的单体应用已难以满足快速迭代和灵活部署的需求。微服务架构作为一种新兴的分布式系统设计方式,以其独立部署、易于扩展和维护的特点,成为解决这一问题的关键。本文将深入探讨微服务的核心概念、设计原则以及在后端开发实践中如何构建一个高效的微服务架构。我们将从服务划分、通信机制、数据一致性、服务发现与注册等方面入手,提供一系列实用的策略和建议,帮助开发者优化后端系统的性能和可维护性。
|
23小时前
|
JSON API 数据库
后端架构设计与优化:打造高性能应用后端
后端架构设计与优化:打造高性能应用后端
10 2
|
1天前
|
消息中间件 持续交付 数据库
构建高效可靠的微服务架构:策略与实践
【4月更文挑战第25天】 随着现代软件开发的复杂性日益增加,传统的单体应用已难以满足快速迭代和灵活部署的需求。本文深入探讨了如何构建一个高效且可靠的微服务架构,包括关键的设计原则、技术选型以及实践中的挑战和应对策略。通过分析多个成功案例,我们总结了一系列最佳实践,并提出了一套可量化的性能优化方法。文章不仅为开发者提供了具体的技术指导,同时也强调了团队协作和持续学习在微服务转型过程中的重要性。
|
1天前
|
持续交付 API 开发者
构建高效微服务架构:后端开发的新范式
【4月更文挑战第24天】 随着现代软件系统的复杂性日益增加,传统的单体应用已难以满足快速迭代与灵活扩展的需求。微服务架构作为一种新兴的软件开发模式,以其服务的细粒度、独立部署和弹性伸缩等优势,正在逐渐成为后端开发的重要趋势。本文将深入探讨微服务架构的设计原则、关键技术以及在实际业务中的应用实践,旨在为后端开发者提供构建和维护高效微服务架构的参考指南。
|
2天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
3天前
|
监控 API 持续交付
构建高效微服务架构:后端开发的新趋势
【4月更文挑战第23天】 随着现代软件开发实践的不断演进,微服务架构已经成为企业追求敏捷、可扩展和弹性解决方案的首选。本文深入探讨了如何构建一个高效的微服务架构,涵盖了关键的设计原则、技术选型以及实践建议。通过分析微服务的独立性、分布式特性和容错机制,我们将揭示如何利用容器化、服务网格和API网关等技术手段,来优化后端系统的可维护性和性能。文章旨在为后端开发人员提供一套全面的指南,以应对不断变化的业务需求和技术挑战。
|
8天前
|
JSON Java fastjson
Spring Boot 底层级探索系列 04 - Web 开发(2)
Spring Boot 底层级探索系列 04 - Web 开发(2)
16 0