3.5 设计一个Web服务
当你创建一个Web服务时有一些关键点你必须牢记。本节将贯穿创建一个高效实用的服务时需要关注的要点。
首先要决定你将采用哪种服务形式,如果你的服务和表述数据结合很紧密,你可能会选择RESTful服务。对于计算机之间的数据交换,你可能选择XML-RPC或SOAP,特别是在你确信SOAP已被人们透彻理解的企业环境下。当我们从JavaScript传输异步请求或者传输数据到移动设备时,JSON也许是一个更好的选择。
当你使用Web服务时,要始终牢记用户总会将一些毫无意义的内容传入服务中,这并不是说用户都是白痴,但有时候我们会误解(或忽略)这个提示,或者犯明显的错误。这种情况下服务如何响应是衡量它好坏的标准。一个健壮性和可靠的服务将对非破坏性的失败做出反应,而且把在哪里发生错误的信息反馈给用户。在我们讲完该主题准备向前继续时,要做的最重要一点是:错误消息应该以同样的格式返回,如同一个成功的输出将会到达。
有一个设计原则我们称其为KISS(Keep It Simple, Stupid, 保持简单、无趣),就API设计而论少即是多。要当心避免创建一个广泛的、不规则的、不稳定的API。只有我们真正需要的时候才添加功能,并且要确保新功能和其他API实现的方式保持一致。
一个Web服务直到交付相关文档它才算完整。没有文档,用户很难使用你的服务,其中很多都不会使用。好的文档将消除障碍,并允许用户在你暴露的功能上建立属于自己的精彩内容。
归根结底,暴露一个API,不是从内部就是作为一个面向服务内容结构的一部分,都是关于增强他人的能力和信心使用有效信息的内容。无论这个“他人”指软件还是指人、内部还是外部,这个基本目标不会改变。Web服务和Web应用程序的基础都是相同的,另外本章中所涉及的一些特定方面和技能也都是相同的。
《PHP精粹:编写高效PHP代码》——3.5节设计一个Web服务
时间: 2024-09-18 18:02:48
《PHP精粹:编写高效PHP代码》——3.5节设计一个Web服务的相关文章
《PHP精粹:编写高效PHP代码》——3.3节数据格式
3.3 数据格式 在许多方面,Web服务仅仅只是一个网页,它提供机器可读的内容,而不是人类可读的内容.我们与其在一个浏览器的HTML网页标记标签,不如返回内容到JSON或XML中(我们马上将论及上述内容). 健壮性Web服务的强大特征之一便是它的设计可使其以不同的格式返回信息.因此,如果一个服务消费者更喜欢另一种数据格式,它可以轻易请求到最好的格式.这表明,当我们创建的服务公开后,解释请求和构成响应的方式是独立于代码中其他部分的. 接下来的两节将详细讲解JSON和XML,并举例说明如何以这种方式
《PHP精粹:编写高效PHP代码》——2.8节数据库—排序
2.8 数据库-排序 在本章,我们全面讲述了与PHP开发者息息相关的数据库主题.了解了PDO扩展并利用它在你的应用程序中建立稳定高效的代码. 除PHP外,我们还研究了一连串的数据库技术,这些技术以不同的方式在表中建立SQL查询.我们还使用索引,设计了经受住时间和可扩展性考验的数据库架构.
《PHP精粹:编写高效PHP代码》——3.4节HTTP:超文本传输协议
3.4 HTTP:超文本传输协议HTTP(HyperText Transfer Protocol)是通过导线来传送Web请求和响应的数据传输格式.它包含了很多请求和响应的元数据,除了这些请求或响应的实体之外,我们也可以利用它来使用Web服务.我们也将看到其他的协议,例如XML-RPC和SOAP,它们也都是建立在HTTP基础上的.当我们在本章快结尾构建RESTful服务时,便可以广泛使用HTTP的功能了.当我们开发一个简单的Web应用程序时,可能不会那么重视HTTP.但是如果你想了解缓存.不同文件
《PHP精粹:编写高效PHP代码》——1.2节OOP简介
1.2 OOP简介 开始冒险吧!在理论知识方面,我们会结合代码示例来讲解,这让你更容易看懂代码的实际意义. 1.2.1 声明类 类相当于蓝图,是表明如何创建对象的一组指令.它还不是一个对象,而仅仅是对象的一个描述.在Web应用程序中,用类来表示各种实体.下面是一个可能用于电子商务应用程序中的Courier类: 以上代码表明了如何声明类,可以将Courier类保存在一个名为courier.php的文件中.这个文件的命名方法是需要牢记的一个要点,其重要性在1.3节中会详细阐述,我们会讲解当需要时如何
《PHP精粹:编写高效PHP代码》——3.2节面向服务的架构
3.2 面向服务的架构SOA(Service-Oriented Architecture,面向服务的架构)是在各种PHP应用程序中日益得到普及的方法.它是基于一个服务层的系统,提供系统需要的所有功能,但这个服务提供的是应用层,并未链接到表现层.这样,多种系统就可以使用这个相同模块化.可重复使用的功能了.例如,你可以写一个服务层,接着website和几个移动设备应用程序都来使用服务层,同时我们允许第三方对它集成.这个系统架构可能最终看起来如图3.1所示. SOA方法允许我们使用.测试,以及强化(h
《PHP精粹:编写高效PHP代码》——1.3节对象的继承
1.3 对象的继承继承是类之间相互结合的方式.如同我们从父母那里继承他们的生物学特性,我们可以设计一个类从另一个类继承(这比女儿遗传父亲的卷发更具预见性).类可以从一个父类那里继承或扩展.而类并不知道其他类从它这里继承,因此一个父类可以有多少子类且没有限制.一个子类拥有父类的所有特性,我们可以增加或修改子类中的任意元素,使其变得与众不同.以Courier类作为例子,在应用程序里为每个Courier创建子类.在图1.1中,Courier类有两个子类,每个子类都有各自的ship()方法. 图1.1使
代码- B/S架构的一个web项目,在VS2010中用C#语言编写
问题描述 B/S架构的一个web项目,在VS2010中用C#语言编写 B/S架构的一个web项目,在VS2010中用C#语言编写 编写代码:从前台页面中读取exl表中的数据,以及在后台页面将数据写入exl表中 解决方案 可以使用NPOI这个库,参考:http://blog.csdn.net/jyz123456/article/details/7966844 解决方案二: C#操作EXCEL,一般都是用NPOI这个类库来实现
《PHP精粹:编写高效PHP代码》——1.8节更多神奇的方法
1.8 更多神奇的方法 本章已介绍了一些神奇方法.在表1.1中快速回顾一下这些方法. 当在一个类中定义这些函数时,可以定义当这些事件发生时会引发什么.没有这些函数的话,类将显现为默认行为,而这些常常都是需要的.PHP另外还有一些神奇方法,在本节中我们将看到一些使用最频繁的方法. 1.8.1 使用__call()和__callStatic()方法 在关于访问修饰符的内容里,我们看到,对于__get()和__set()方法而言,__call()方法是一个天生的搭档.使用__get()和__set()
学习PHP精粹,编写高效PHP代码之质量保证
一.使用静态分析工具测量质量 我们用静态分析测量代码而不运行它.实际上,我们将这些工具用于评估代码.读取文件.衡量它所写的要素.使用这些工具,可以帮助我们对代码库有一个完整的层次化的认识,甚至在代码库变得更大.更复杂的时候也能掌握. 静态分析工具是项目过程中的一个关键组成部分,但是,只有定期使用它们,并以理想的方式进行每一次提交,静态分析工具才真正显示出价值.这些工具涵盖了代码的所有方面,从计数类和计算行数,到识别哪里有提示使用复制和粘贴的类似代码段.然后我们来看看静态分析工具在代码质量