2002-08-26 10:15
Web服务的(革)创新,第1部分
--将Web服务应用于应用程序
Graham Glass
CEO/首席设计师,The Mind Electric
2000 年 11
月
这是本新专栏的开篇文章,讲述了构建 Web 服务应用的一些好处和挑战。Web 服务也许是设计分布式应用中一个创造性步骤,但是,它们并不是完美无缺的。Graham 概述了开发者在创建确实可工作的 Web 服务分布式系统时会遇到的困难。本文还概述了在本专栏的后续文章中介绍构建对等 Web 应用的计划。
欢迎阅读这个新专栏的第一部分,本文讲述了 Web 服务技术的革新和创新。之所以称为“革新”,是因为 Web 服务是超越于面向对象技术的抽象范畴中的下一个阶段,而称之为“创新”是因为我坚信它们将推进从客户机-服务器体系结构到对等体系结构的转变。
在本系列中,我将从 Web 服务的概述和一些为了实现大规模采用而必须克服的障碍入手。接着,构建一些简单的 Web 服务,并使用它们来创建分布式系统。然后,检查一些棘手问题,如安全性、事务和可伸缩性。最后,使用 Web 服务来创建一些对等系统,这些系统将演示与传统分布式体系结构不同的思想方法。
概述
Web
服务是封装成单个实体并发布到网络上以供其它程序使用的功能集合。Web
服务是用于创建开放分布式系统的构件,并可以使公司和个人迅速且廉价地将向全世界提供他们的数字资产。其早期的示例是 Microsoft
Passport,Microsoft 拥有的一种便利认证服务。以下是其它一些示例:
信用检查服务,给出个人分配社会保障号时,它将返回信用信息。
股票报价服务,返回与指定股票行情自动收录器符号相关的股票价格。
采购服务,如果给定了项目代码和数量,允许计算机系统购买办公用品。
Web 服务可以集合其它 Web 服务以提供一套更高级的功能。例如,Web 服务可以通过吸纳低级的汽车租借、航空旅行和酒店等 Web 服务来提供一套高级的旅行服务。将根据成本、质量和可用性在运行时动态选择 Web 服务,并根据这些 Web 服务来构建未来的应用。
几乎可以保证 Web 服务是下一代分布式系统的核心部分。其原因如下:
互操作性。任何 Web 服务都可以与其它 Web 服务进行交互。应感谢
SOAP,这是所有主要供应商(以及大多数中小供应商)都支持的新标准协议,这样就避免了在 CORBA、DCOM
和其它协议之间转换的麻烦。还因为可以使用任何语言来编写 Web 服务(甚至 COBOL,我敢打赌),开发者无需更改他们的开发环境就可生产和使用 Web 服务。
普遍性。Web 服务使用 HTTP 和 XML 进行通信。因此,任何支持这些技术的设备都可以拥有和访问 Web
服务。不久,它们将在电话、汽车甚至汽水贩卖机中出现。汽水供应不足吗?没问题,无线联网的汽水贩卖机可以与本地供应商的 Web 服务联系,订购更多您喜爱的饮料。
低进入屏障。Web 服务背后的概念易于理解,并且来自 IBM 和微软这样的供应商的免费工具箱能够让开发者快速创建和部署 Web
服务。此外,其中的某些工具箱还可以让已有的 COM 组件和 JavaBean 方便地成为 Web 服务。
行业支持。所有主要的供应商都支持
SOAP 和周边 Web 服务技术。例如,微软的 .NET 平台就基于 Web 服务,因此用 Visual Basic 编写的组件很容易作为 Web
服务部署,并由使用 IBM VisualAge 编写的 Web 服务使用,反之亦然。
挑战
到目前为止,一切顺利。但要使 Web
服务成功,还会遇到许多技术挑战,其中有许多与它们赖以生存的开放、不利的环境有关。以下是一些问题:
发现。Web 服务如何做自我宣传以引起其它服务的关注?如果服务在其自我宣传后做了改动,会发生什么情况?WSDL(Web
服务定义语言)和 UDDI(通用描述、发现和集成)是解决这个问题的两个新标准。
可靠性。某些 Web
服务主机将比其它主机更可靠。那如何测量和传递这个可靠性呢?当 Web
服务主机暂时脱机时会发生什么情况?您是寻求和使用其它供应商拥有的替代服务,还是等待原来的那个重新可用呢?您怎么知道哪些供应商可以信赖?
安全性。某些 Web 服务将在公开情况下可用而没有保护措施,但大多数与商业相关的服务将使用带认证的加密通信。SSL 上的 HTTP
往往能够提供基本的安全性,但有个别服务需要更高颗粒度级别。Web
服务如何认证用户?服务需要在方法级别上提供安全性的能力吗?如果您与在世界范围内提供服务的供应商签约,这些服务如何了解您的安全性特权呢?
事务。传统的事务处理系统使用两阶段提交方式,所有参与的资源都被集中起来,并在整个事务发生之前锁定,等到事务发生后,资源被最后释放。这种方式在事务生存时间很短的封闭环境中很有效,但在事务可能跨越几小时,甚至几天的开放环境中就不那么好用了。微软支持一种替代的方案,称为补偿事务,用在他们新的分布式商业过程
XLANG 系统。这种事务应不应该集成到 Web 服务中?如果应该,这种方式和建议的标准,例如 XAML(一种将要发布的支持传统事务的 XML
标记语言)之间有什么重叠吗?
可伸缩性。因为有可能将现有的组件系统,例如 Enterprise Java Bean 当作 Web
服务,所以应该有可能利用已有的负载均衡和其它可伸缩性机制。但在进行的过程中有没有未预见的障碍?需不需要一种新的 Web 服务应用服务器?
可管理性。管理高度分布式的系统需要哪种机制?因为系统的特性是其各个部分特性的函数,所以每种不同 Web
服务的管理器是否需要以一种特殊的方式协调?是否可能将一些 Web 服务的管理“外包”给其它 Web 服务?
可说明性。如何定义一个用户可以访问和执行 Web 服务多久?如何收取 Web 服务的费用?占主导地位的模式是基于订阅的还是现购现付?如果您销售
Web 服务,如何表明所有权的变更? Web 服务是在使用时完全消费,还是可以作为采购协议的一部分多次重用该服务?
测试。如果系统由位置和质量潜在地不断变化的许多 Web
服务组成,测试和调试就会采用全新的方式。如何实现可预测的响应时间?如何调试可能来自不同供应商、在不同环境和不同操作系统上驻留的 Web 服务?
除非您知道解决这些问题的系统已经存在,否则听上去它们都相当令人望而却步。人类社会和生态组织就是两个这样的例子。这两个示例展示了以下特性:
容错。
大规模并行。
分布式。
良好组织的。
自我修复。
按分层方式设计。
在简单组件上设计。
通过这些现有示例中的榜样,应该有可能创建一个 Web 服务的社会,其中各个组件相互之间进行合作以实现其各自目的。您可以很容易想象这样一个联网市场,其中 Web 服务将它们自己出租给最高的出价者。 MojoNation 就是采取这种方法的开放源码项目。
对等和 Web 服务
除了 Web 服务的直接使用以外,在对等 (P2P)
计算领域中,这种技术还有许多精彩的应用。例如,考虑一个 eBay 的 P2P 版本,在这里,消费者将一个简单的拍卖 Web
服务安装到他们的家庭计算机或智能电话上。一旦告诉了拍卖服务您的买卖意向后,它就与世界范围内的其它拍卖服务联系,帮您找到适当的买家和卖家。交易在消费者的设备之间直接发生,不需要任何服务器。
一个更大胆的想法是 P2P 蜂窝网络,它使用其它中间消费者的电话,而不是基站。当您拨打电话时,通话沿着相邻的蜂窝电话进行路由,到达它的最终目的地。使用这种体系结构,从理论上说,可以将 10,000 个蜂窝电话投放到以前未装电话线的区域中,并且只要有适当的人群,就可以立即在不使用基站或其它传统电话网络基础设施的情况下拨打电话!
我想,Web 服务的强大威力和简单性将加速分布式计算世界的革新。在本系列的其余部分中,我打算培养、接纳和促进这一领域中开发者之间的讨论。尽管预测演示的特定顺序比较困难,但将涉及到以下方面:
上机实践教程。
新兴标准,例如 SOAP、UDDI、WSDL 和 XAML。
对等体系结构。
动态发现。
安全性和事务。
Web 服务的用户界面。
Web 服务的安排。
测试基于 Web 服务的应用。
下一专栏将指导您完成创建自己的 Web 服务的每个步骤。到那时再享受其中的乐趣吧!
参考资料
关于作者
Graham Glass 是 The Mind
Electric 的创建者、CEO
和首席设计师,该公司致力于大型分布式计算的构建。他相信因特网的发展将反映生物头脑的发展,而帮助人们和商家有效联网的那些体系结构将提供对将人类思想连接在一起的体系结构的深入了解。
在创建 The Mind Electric 之前,Graham 是 ObjectSpace 的主席、CTO 和联合发起人之一,该公司总部位于达拉斯,专门从事商家到商家的集成。在 ObjectSpace 时,他担任分布式计算、JGL Java 集合库和跨平台 C++ 工具箱的 Voyager 产品线的设计师和首席开发者。Graham 由于 Voyager 和 JGL 的开发,于 1996 年荣获年度 Ernst and Young Entrepeneur 奖和一些行业大奖。
Graham 还是 ObjectLesson(一家提供前沿技术培训的公司)的创办人。他为 Prentice Hall 撰写了两本有关 UNIX 和 STL 的书籍,并以他对新兴技术的热情和清晰阐述而成为受欢迎的演说家。
Graham 从南安普敦大学获得了数学和计算机科学理学士学位,从达拉斯的得州大学获得了计算机科学硕士学位,并从 Haberdashers 的 Aske's School 获得 British "O" 和 "A" 级。在转向企业之前,他在 UTD 作为高级讲师,教授 UNIX、C、C++、Smalltalk 和编程语言。可通过 graham-glass@mindspring.com 与他联系。
浏览: Web服务的(革)创新,第2部分