《PHP精粹:编写高效PHP代码》——3.2节面向服务的架构

3.2 面向服务的架构
SOA(Service-Oriented Architecture,面向服务的架构)是在各种PHP应用程序中日益得到普及的方法。它是基于一个服务层的系统,提供系统需要的所有功能,但这个服务提供的是应用层,并未链接到表现层。这样,多种系统就可以使用这个相同模块化、可重复使用的功能了。
例如,你可以写一个服务层,接着website和几个移动设备应用程序都来使用服务层,同时我们允许第三方对它集成。
这个系统架构可能最终看起来如图3.1所示。

SOA方法允许我们使用、测试,以及强化(harden)应用服务层的代码,并且轻松地在其他地方使用它。当代码被强化,即表明代码已经使用了一段时间,因此我们对它的性能和稳定性拥有足够的信心。既然有了整齐、模块化的健壮性服务层,我们便可将代码用于应用程序的基础,而且人们日益视之为最优方法。
你到底如何构造系统有待探讨,还有SOA方法的大量完美实现,同样值得探讨。通常,MVC方法应用于服务层,我们也看到本章的一些示例中使用了这种方式。顶层的项目将使用不同构建方式,这样工作使我们可以轻易在不同的平台上构建各种不同的独立元素。
也许SOA方法的最大优势在于它是模块化的方法,它非常适合我们正在构建的庞大而复杂的系统。以这种方式构建的系统易于缩放,你可以在系统的不同部分根据系统的负荷以不同的比率缩放它们。当我们发展应用平台到云操作系统时,SOA理所当然在今后的应用中帮助我们。
现在我们继续向前看看使用Web服务的一些技术细节。

时间: 2024-11-23 21:05:05

《PHP精粹:编写高效PHP代码》——3.2节面向服务的架构的相关文章

《PHP精粹:编写高效PHP代码》——2.8节数据库—排序

2.8 数据库-排序 在本章,我们全面讲述了与PHP开发者息息相关的数据库主题.了解了PDO扩展并利用它在你的应用程序中建立稳定高效的代码. 除PHP外,我们还研究了一连串的数据库技术,这些技术以不同的方式在表中建立SQL查询.我们还使用索引,设计了经受住时间和可扩展性考验的数据库架构.

《PHP精粹:编写高效PHP代码》——3.5节设计一个Web服务

3.5 设计一个Web服务当你创建一个Web服务时有一些关键点你必须牢记.本节将贯穿创建一个高效实用的服务时需要关注的要点.首先要决定你将采用哪种服务形式,如果你的服务和表述数据结合很紧密,你可能会选择RESTful服务.对于计算机之间的数据交换,你可能选择XML-RPC或SOAP,特别是在你确信SOAP已被人们透彻理解的企业环境下.当我们从JavaScript传输异步请求或者传输数据到移动设备时,JSON也许是一个更好的选择.当你使用Web服务时,要始终牢记用户总会将一些毫无意义的内容传入服务

《PHP精粹:编写高效PHP代码》——3.3节数据格式

3.3 数据格式 在许多方面,Web服务仅仅只是一个网页,它提供机器可读的内容,而不是人类可读的内容.我们与其在一个浏览器的HTML网页标记标签,不如返回内容到JSON或XML中(我们马上将论及上述内容). 健壮性Web服务的强大特征之一便是它的设计可使其以不同的格式返回信息.因此,如果一个服务消费者更喜欢另一种数据格式,它可以轻易请求到最好的格式.这表明,当我们创建的服务公开后,解释请求和构成响应的方式是独立于代码中其他部分的. 接下来的两节将详细讲解JSON和XML,并举例说明如何以这种方式

《PHP精粹:编写高效PHP代码》——1.8节更多神奇的方法

1.8 更多神奇的方法 本章已介绍了一些神奇方法.在表1.1中快速回顾一下这些方法. 当在一个类中定义这些函数时,可以定义当这些事件发生时会引发什么.没有这些函数的话,类将显现为默认行为,而这些常常都是需要的.PHP另外还有一些神奇方法,在本节中我们将看到一些使用最频繁的方法. 1.8.1 使用__call()和__callStatic()方法 在关于访问修饰符的内容里,我们看到,对于__get()和__set()方法而言,__call()方法是一个天生的搭档.使用__get()和__set()

《PHP精粹:编写高效PHP代码》——3.4节HTTP:超文本传输协议

3.4 HTTP:超文本传输协议HTTP(HyperText Transfer Protocol)是通过导线来传送Web请求和响应的数据传输格式.它包含了很多请求和响应的元数据,除了这些请求或响应的实体之外,我们也可以利用它来使用Web服务.我们也将看到其他的协议,例如XML-RPC和SOAP,它们也都是建立在HTTP基础上的.当我们在本章快结尾构建RESTful服务时,便可以广泛使用HTTP的功能了.当我们开发一个简单的Web应用程序时,可能不会那么重视HTTP.但是如果你想了解缓存.不同文件

学习PHP精粹,编写高效PHP代码之质量保证

一.使用静态分析工具测量质量   我们用静态分析测量代码而不运行它.实际上,我们将这些工具用于评估代码.读取文件.衡量它所写的要素.使用这些工具,可以帮助我们对代码库有一个完整的层次化的认识,甚至在代码库变得更大.更复杂的时候也能掌握.   静态分析工具是项目过程中的一个关键组成部分,但是,只有定期使用它们,并以理想的方式进行每一次提交,静态分析工具才真正显示出价值.这些工具涵盖了代码的所有方面,从计数类和计算行数,到识别哪里有提示使用复制和粘贴的类似代码段.然后我们来看看静态分析工具在代码质量

《PHP精粹:编写高效PHP代码》——1.7节异常

1.7 异常 异常(exception)是一个处理错误的面向对象方法.一些PHP扩展像往常一样仍会报错:很多最新的扩展(例如PDO)将代替抛出异常.异常也是对象,而且Exception是PHP的一个内置类.一个Exception对象将包含发生错误的位置(文件名或代码行).一条错误消息和(可选)一个错误代码等信息. 1.7.1 处理异常 首先我们看看如何处理可能会抛出异常的函数.我们会使用一个PDO示例,因为PDO扩展抛出异常.在这里代码会试图创建一个数据库连接,但是会失败,因为nonsense主

《PHP精粹:编写高效PHP代码》——2.4节PHP数据库对象

2.4 PHP数据库对象 如果之前你使用过PHP和MySQL,你可能用过mysql或mysqli类库连接到数据库,如使用mysql_connect()函数.多年来,这是连接到MySQL数据库的标准方式,并且对于其他数据库平台也使用同样的方式. 这些类库可以直接使用,并形成了无数PHP应用程序类库和框架的基础.这种方式的缺点是每个扩展都与其他稍有不同,因此使得代码在数据库平台之间轻松转移变得复杂.虽然这些数据库特定类库依然活跃并且运转良好,但是本章中仍将专注讲解更先进的PDO扩展.创建的PDO扩展

《PHP精粹:编写高效PHP代码》——2.6节处理PDO中的错误

2.5 处理PDO中的错误 当你刚开始使用PDO时,它的某个方面是令人惊讶或让人沮丧的(视你的态度而定),即当它出现问题时,并不总是显而易见的.当我们第一次连接到数据库时,就会看到一个失败的连接会导致抛出一个异常.这里有一个提醒的代码: 一般来说,当某些引人注目的事情发生时PDO会抛出异常,但是如果你的查询由于某些原因而未能运行时,你也不必为此大惊小怪.这表明我们要仔细检查一切是否按照我们所预期的那样运行. 让我们复习一下迄今为止所学到的相关内容,看看我们如何对出现的问题进行识别和反应. 2.5