巴赫——伟大的作曲家——以他的“为了艺术而艺术”而闻名于世。换句话说,他创作音乐并并不需要特殊的原因或者动机,仅仅是因为他觉得自己需要这么做。
有时候,技术领域也遵循着同样的道路——我们创造并使用新技术仅仅是因为我们觉得我们需要这么做。当然,在巴赫的年代,不会每年有五千万份广告来告诉他“你需要创作大提琴协奏曲来紧跟时代”。
把多种技术集合在一起实际上会创造新的技术。例如,电技术加上麦克风和扬声器就导致了一系列新技术的出现,如电话和收音机;再加上视频技术又出现了更复杂的技术,如电视和可视电话。那么根据这一原则,Web技术加上P2P会产生更复杂的东东,这些东东或许会派上用场,那么它们究竟是些什么呢?
或许Web服务本身就是P2P的。实际上,已经有几篇文章在探讨Web服务与P2P的“收敛(convergence)”。这里的“收敛”指的是Web服务与P2P共同使用。
或许看到这里你会问:“如何在Web服务中利用P2P技术?”呵呵,这个问题的提法本身就不对。你应该这么问自己:“我如何在我的P2P网络中利用Web服务呢?”
开发者常常把P2P技术称为P2P网络。这是因为“peer”实际上就是网络中的“节点”。由于P2P是一个高层次的技术,实际的底层网络对这个概念并不重要。尽管实际上,网络常常是TCP/IP网络,并利用Internet来从一个peer到达另一个peer,如同IP地址中的节点那样。
P2P网络的应用程序导致了若干种类型的应用程序。从即时消息到文件共享以及分布式计算的每一样事物都用到了P2P概念和技术。和P2P应用程序一样,它们会遇到各种问题,而Web服务技术可以解决这些问题。
P2P的一个主要问题就是定位P2P服务以及理解底层通信协议。一般的P2P途径在Internet上搜索适当的P2P应用程序并安装定制应用程序。在更集成的环境下,常常用客户API或者工具包提供了封装,也就是隐藏了应用程序协议的细节。
Web服务为定位应用程序提供了UDDI注册服务。每一个注册到UDDI数据库的应用程序都包含了一组关于这个服务的信息,包括对协议的描述;描述一般是按照一种称之为网络服务描述语言(Web
Services Description Language ,WSDL)的格式进行标准化的。
WSDL描述指出了访问服务的实际方法和参数。此外,它还提供了可以被服务器识别的传输和绑定协议。大多数Web服务通过XML和HTTP、用SOAP来绑定Web服务来传输SOAP消息。
简而言之,Web服务技术(无论故意使用还是无意的)可以解决设计、建立和配置P2P应用程序中的许多常见问题。联合使用XML、SOAP、WSDL、HTTP和UDDI,使用Web服务的P2P应用程序将会更加标准、更易于访问、更易于理解并更容易集成。