Amazon.com 的老用户可能会记得“Eyes”服务,这个服务可以让您设置自己感兴趣的产品的关键字列表。在出现与您所设置的关键字列表匹配的新产品时,就会向您发送一个电子邮件通知,其中包含这些新产品的链接,以及一些您可以在自己的 Web 站点上使用的服务的介绍,如果您是 Amazon 的会员,这会非常有用。随着使用这项服务的人数不断增加,Amazon.com 决定停止这项服务,因为它对处理器的需求非常高,并且难以维护。
之后,Amazon.com 提供了一项称为 Amazon Web Service 或 AWS 的 Web 服务,您可以使用它在自己的 Web 站点上查询 Amazon 的搜索引擎。这个 Web 服务允许我们创建一个与 Eyes 服务类似的应用程序。您可以将 Amazon Web Service 集成到一个 Notes 应用程序中,从而创建一个比 Eyes 更好的服务;集成方案提供了一种方法,通过这种方法,您可以使用自己的标准对书籍进行分类、标记不相关的书籍,以及在某本书籍停止出版时进行跟踪记录。这种技术目前被用来更新 Notes FAQ Web 站点 上的书籍清单。当然,也可以对 Amazon 上其他类型的产品清单使用这种技术。
本文共有两部分,在第 1 部分中,我们将简要介绍如何在一个 Notes 应用程序中集成 Amazon Web Service(AWS),从而可以使用 Notes Java API 查询 Amazon.com 的搜索引擎。我们还将介绍如何创建一个代理来删除对过期书籍的引用。在本文的第 2 部分中,我们将介绍如何使用 RDBMS 和 J2EE 技术重新创建这个应用程序。本文假设您具有开发 Notes 应用程序的经验,并且具有 Java 编程技巧。您可以从 Amazon.com 的 Web 站点上直接下载 Amazon 的 Web Services SDK。
SOAP 和 Web 服务
通过 Web 服务进行通信有很多方法,但是通常都使用以下两种方法:XML/HTTP 或者 SOAP(Simple Object Access Protocol)。XML/HTTP 方法使用了一种针对请求的专门格式化了的 URL。由于 XML/HTTP 访问方法使用一些编码后的参数来发起请求,因此它限制了 URL 的最大长度,这个长度大概是 1,024 个字符(有些服务器可以支持的长度更长,但是 1,024 个字符是一个比较安全的设置)。您所接收到的结果是使用 XML/SOAP 进行编码过的。您可以使用 XSLT 对 XML 进行转换,或者使用 XML 解析器从 XML 读取所需的值。然而,编写 XML 解析器的工作是非常繁琐的。
用来访问 Web 服务的 SOAP 技术利用了 Web 服务提供者所提供的 WSDL(Web Services Description Language)的定义。如果您要发布一个 Web 服务,就需要 WSDL 定义;通常可以通过一个 URL 来使用 Web 服务,这一点在本文后面部分将会看到。在这里,Amazon Web Service 提供了 WSDL 的定义。WSDL 定义描述了如何对请求进行格式化,以及如何读取响应信息,还将告诉您可以使用哪些请求。WSDL 是位于 Web 服务之上的另外一个复杂的层次,但是它真正提供的是生成“封装程序”来访问 Web 服务所需的桥梁,就仿佛这些服务在您自己的机器上一样。
可以使用以友好方式支持 Web 服务的任何语言生成调用 Web 服务的封装程序,这些语言包括 Java、C、VB、PHP、Perl、TCL,等等。另外,在“SOAP 请求”中发送的信息在大小方面存在限制,因为这些信息是在一个 Web 请求体中发送的,而不是在 URL 中发送的;这可以让您发出针对 Web 服务的复杂请求,因为在 Web 请求体中没有大小的限制。
Amazon Web Service
在 Amazon.com Web Service 页面 中,您可以看到更多有关 Amazon Web 服务的信息。您可以看到 SDK 中提供的 Java、Perl、PHP 和 VB 的示例代码。这个工具中还包括使用 SDK 的文档。这里还有一个开发人员论坛,Amazon 会对其进行监视。在可以调用 Amazon Web 服务的 API 之前,首先需要注册一个开发人员帐号。在 Amazon 的客户使用 Amazon Associate Web 站点来添加 Amazon 的订单记录时,可以使用这个开发人员帐号来提供 Amazon Associate 的推荐记录。如果您使用 Amazon 的 XSLT 服务将 XML 结果转换成 HTML 格式,那么该帐号将自动嵌入所返回的 URL 中,这样您就可以获得推荐费了。
Amazon 在自己的 Web 服务实现中提供了很多功能,这是可以使用 Web 服务来实现哪些功能的一个很好例证。它们不但提供了对搜索引擎的调用功能,而且还提供了管理 Amazon 用户的购物车、购买意向和邮购信息等级的功能。实际上,Web 服务的意图在于允许 Amazon Associate(他们支付推荐费)使用一种更加灵活的方法来构建 Web 店面(Web storefront),从而帮助销售更多的 Amazon 产品。这就是为什么它是一个很好的 Web 服务的例子:它可以帮助 Web 服务的提供者增加收益。
对于本文来说,我们感兴趣的内容是 Amazon 搜索引擎的 Web Services API。在开始之前,我们需要准备以下内容:
安装 Amazon Web Service。有关的更多信息,请参阅 Amazon Web 服务的 SDK 中的文档。
为了进行测试,我们创建一个 Notes 应用程序来使用 AWS。
要使用 Amazon 搜索引擎,您必须在 Notes 应用程序中指定的第一项内容是称为模式的东西;这等同于您在 Amazon.com 主页上可以看到的高级附签:书籍、音乐、工具,等等。然后您就可以根据以下内容进行搜索:关键字、浏览节点(产品目录,例如如果将模式设置为书籍,就可以查找科幻小说)、ASIN、ISBM、UPC、作者、音乐家、演员、导演、发行商、ListMania! 和类似产品(顾客可能购买的其他产品)。对于我们正在构建的 BetterEyes 服务来说,我们将使用关键字进行搜索。