Welcome 微信登录

首页 / 网页编程 / PHP / PHP Web服务的价值

PHP Web服务的价值2011-09-19据我所知,Web服务是最酷的技术,但它最终会让大家觉得沉闷。不知道您感觉如何,每当我参加讨论web服务的演讲时,总是听到很多缩写,如REST、XML/RPC、SOAP和RSS。然后就开始打盹,梦到有个地方树上长满Krispy Kreme甜面卷。醒来时,我认识到实际上我做了很多web服务工作,并没完全用到那些毫无意义的标准程序。我看待web服务的方式非常简单,它就是web应用程序的备用接口,允许其他程序以编程语言可以理解的方式与我的应用程序通信。人们通过HTML与应用程序通信,应用程序通过XML、CSV或其他标准与我的应用程序通信。

图1能更好地解释这个理论:

图1. 传统的web应用程序与面向服务的架构(SOA)

左侧为传统的web应用程序。服务器通过HTML与web客户端通信。该服务器可以是任何技术:Java、.NET、Rails、PHP、Python或ColdFusion。右侧为相同的web应用程序。但是它除了提供HTML,还使用XML通信,因此可以与其他应用程序或RSS阅读器之类的专用服务器交流。

我经常听到人们谈论完全基于服务的应用服务器。这对于后端技术来说可能不错。但是对于普通的web应用程序,您总是希望它同时支持HTML和XML接口。拥有两种接口的一项好处在于,它强制您将业务逻辑集中到一个位置(可能是一个“中间层”),因此HTML和XML接口都可以与数据库通信并获得相同的结果。

允许web应用程序通过XML与其他程序通信的价值对您来说可能显而易见,但是对我来说并非如此,至少最初是这样。因此本文讲述一个示例,演示通过在应用程序中设置XML接口可以实现哪些功能。首先讲述简单的HTML前端,然后显示如何构建XML接口并添加各种阅读器(包括Ajax、RSS和Adobe Flex)。

文章应用程序

首先讲述的测试应用程序是数据库中有一个文章列表的程序。清单1显示了这个数据库。

清单 1. articles.sql

DROP TABLE IF EXISTS articles;
CREATE TABLE articles (
id INTEGER NOT NULL AUTO_INCREMENT,
title VARCHAR(255),
author VARCHAR(255),
description TEXT,
PRIMARY KEY( id ) );
INSERT INTO articles VALUES ( null,
"What I like about dogs", "Megan Herrington",
"Everything that I love about dogs I learned in preschool" );
INSERT INTO articles VALUES ( null,
"Making action movies", "Jack Herrington",
"How to script, produce and direct Hong Kong action flicks" );
INSERT INTO articles VALUES ( null,
"Super Paper Mario Tips", "Lori Herrington",
"Everything you need to know to win at Paper Mario" );
INSERT INTO articles VALUES ( null,
"Why I bark", "Oso Herrington",
"" );