您当时的方位:主页 > 言语编程 > XML

什么是 XML Web Service

2014-11-02  

  XML Web Service 是在 Internet 上进行分布式核算的根本结构块。敞开的标准以及对用户和运用程序之间的通讯和协作的重视产生了这样一种环境,在这种环境下,XML Web Service 成为运用程序集成的渠道。运用程序是经过运用多个不同来历的 XML Web Service 结构而成的,这些服务彼此协同作业,而不论它们坐落何处或许怎么完结。
  有多少个构建 XML Web Service 的公司,就或许有多少种 XML Web Service 界说。不过简直一切界说都具有以下共同点:
  XML Web Service 经过标准的 Web 协议向 Web 用户供给有用的功用。大都情况下运用 SOAP 协议。
  XML Web Service 能够十分具体地阐明其接口,这运用户能够创立客户端运用程序与它们进行通讯。这种阐明一般包括在称为 Web 服务阐明言语 (WSDL) 文档的 XML 文档中。
  XML Web Service 现已过注册,以便潜在用户能够轻易地找到这些服务,这是经过通用发现、阐明和集成 (UDDI) 来完结的。

  本文将介绍这三种技能,但首要需求解释一下为什么要重视 XML Web Service。
  XML Web Service 体系结构的首要长处之一是:答应在不同渠道上、以不同言语编写的各种程序以依据标准的办法彼此通讯。对这一职业有所了解的用户或许立刻会说:“等一等,CORBA 和之前的 DCE 不是都做过相同的许诺吗?这和它们有什么差异?”最重要的差异在于:SOAP 比曾经的办法要简略得多,因而要完结与标准兼容的 SOAP,妨碍也要少得多。Paul Kulchenko 在 http://www.soapware.org/directory/4/implementations(英文)上供给了一个 SOAP 完结计划的列表。前次统计时,该列表现已包括了 79 项。正如您所意料,大都大的软件公司都供给 SOAP 完结计划,但也有许多完结计划是由单个开发人员创立和维护的。相对曾经的计划而言,XML Web Service 的另一大长处是运用标准的 Web 协议 - XML、HTTP 和 TCP/IP。许多公司都现已建立了 Web 根底结构,一起它们的职工在维护方面也都具有相应的常识和经历。因而,引进 XML Web Service 与引进曾经的技能比较,其本钱要低得多。
  咱们将 XML Web Service 界说为:经过 SOAP 在 Web 上供给的软件服务,运用 WSDL 文件进行阐明,并经过 UDDI 进行注册。那么,您或许要问:“运用 XML Web Service 能够做什么?”开端的 XML Web Service 一般是能够方便地并入运用程序的信息来历,如股票价格、天气预报、体育成果等等。咱们很简略想到,能够构建一整类运用程序以剖析和汇总所关怀的信息,并以各种办法供给这些信息;例如,您能够运用 Microsoft® Excel 电子表格来汇总一切的财政信息 - 股票、401K、银行存款、借款等等。假如能够经过 XML Web Service 取得这些信息,Excel 就能够不断对其进行更新。这些信息中有些是免费的,有些则或许需求订阅才干取得相应服务。大部分这种信息现在现已能够在 Web 上找到了,可是 XML Web Service 能够使编程拜访更简略,也更牢靠。
  以 XML Web Service 办法供给现有运用程序,能够构建新的、更强壮的运用程序,并运用 XML Web Service 作为结构块。例如,用户能够开发一个收购运用程序,以主动获取来自不同供货商的价格信息,然后运用户能够挑选供货商,提交订单,然后盯梢货品的运送,直至收到货品。而供货商的运用程序除了在 Web 上供给服务外,还能够运用 XML Web Service 检查客户的信誉、收取货款,并与货运公司处理货运手续。
  将来,某些最风趣的 XML Web Service 所支撑的运用程序还能够运用 Web 完结现在无法完结的使命。例如,日历服务便是 Microsoft .NET My Services(英文)项目行将支撑的服务之一。假如您的牙医和机械师经过这一 XML Web Service 供给其日程安排,您就能够经过网络与他们安排约会;假如您乐意,他们也能够直接在您的日历上约好清洁和日常保养的日期。不难想象,只需能够对 Web 进行编程,您就能够创立数以百计的运用程序。
  有关 XML Web Service 及其能够构建的运用程序的具体信息,请参阅 MSDN Web 服务(英文)主页。
  SOAP

  Soap 是 XML Web Service 的通讯协议。当把 SOAP 描绘为一种通讯协议时,大都人都会想到 DCOM 或 CORBA,并且会问“SOAP 怎么激活目标?”或“SOAP 运用什么样的命名服务?”等问题。尽管 SOAP 完结计划或许会包括上述内容,但 SOAP 标准并未对其进行规则。SOAP 一种标准,用来界说音讯的 XML 格局 - 这是标准中所必需的部分。包括在一对 SOAP 元素中的、结构正确的 XML 段便是 SOAP 音讯。这是不是很简略?
  SOAP 标准的其他部分介绍怎么将程序数据表明为 XML,以及怎么运用 SOAP 进行远程过程调用 (RPC)。这些可选的标准部分用于完结 RPC 方法的运用程序,其间客户端将宣布一条 SOAP 音讯(包括可调用函数,以及要传送到该函数的参数),然后服务器将回来包括函数履行成果的音讯。现在,大都 SOAP 完结计划都支撑 RPC 运用程序,这是因为习惯于开发 COM 或 CORBA 运用程序的编程人员了解 RPC 方法。SOAP 还支撑文档方法的运用程序,在这类运用程序中,SOAP 音讯仅仅 XML 文档的一个包装。文档方法的 SOAP 运用程序十分灵敏,许多新的 XML Web Service 都运用这一特点来构建运用 RPC 难以完结的服务。
  SOAP 标准的最终一个可选部分界说了包括 SOAP 音讯的 HTTP 音讯的款式。此 HTTP 绑定十分重要,因为简直一切当时的 OS(以及许多曾经的 OS)都支撑 HTTP。HTTP 绑定尽管是可选的,但简直一切 SOAP 完结计划都支撑 HTTP 绑定,因为它是 SOAP 的唯一标准协议。因为这一原因,人们一般误以为 SOAP 有必要运用 HTTP。其实,有些完结计划也支撑 MSMQ、MQ 系列、SMTP 或 TCP/IP 传输,但因为 HTTP 十分遍及,简直一切当时的 XML Web Service 都运用它。因为 HTTP 是 Web 的中心协议,因而大大都安排的网络根底结构都支撑 HTTP,并且职工现已了解了怎么对其进行办理。现在,现已建立了用于 HTTP 的安全维护、监督和负载平衡的根底结构。
  开端运用 SOAP 时,最简略混杂的是 SOAP 标准及其许多完结计划之间的差异。大都运用 SOAP 的用户并不直接编写 SOAP 音讯,而是运用 SOAP 东西包来创立和剖析 SOAP 音讯。这些东西包一般将函数调用从某种言语转换为 SOAP 音讯。例如,Microsoft SOAP Toolkit 2.0 将 COM 函数调用转换为 SOAP,而 Apache Toolkit 将 JAVA 函数调用转换为 SOAP。函数调用的类型和支撑的参数的数据类型随每个 SOAP 完结计划的不同而不同,因而适用于一个东西包的函数或许并不适用于另一个东西包。这并不是 SOAP 的约束,而是所运用的特定完结计划的约束。
  到现在为止,SOAP 最有目共睹的特征是它能够在许多不同的软件和硬件渠道上完结。这意味着 SOAP 可用于链接企业内部和外部的不同体系。曩昔曾试过多种办法以提出一个可用于体系集成的通用通讯协议,但它们都没有象 SOAP 相同取得广泛的认可。为什么呢?因为与许多前期的协议比较,SOAP 更细巧,并且更易于完结。例如,DCE 和 CORBA 的完结需求数年时刻,所以只发布了很少几个完结计划。而 SOAP 能够运用现有的 XML 剖析器和 HTTP 库完结大部分艰苦的作业,因而 SOAP 完结计划在数月内便可完结。这便是为什么现在现已有 70 多个 SOAP 完结计划的原因。当然,SOAP 并不具有 DCE 或 CORBA 的悉数功用,尽管功用减少了,但因为其杂乱程度大大降低了,因而 SOAP 更易于运用。
  HTTP 的遍及和 SOAP 的简略性使您简直能够从任何环境调用它们,因而成为 XML Web Service 的抱负根底。有关 SOAP 的具体信息,请参阅 MSDN SOAP(英文)主页。
  安全性怎么?

  一般,刚触摸 SOAP 的用户提出的第一个问题便是 SOAP 怎么处理安全性问题。在其前期开发阶段,SOAP 被看作是依据 HTTP 的协议,所以以为 HTTP 的安全性关于 SOAP 现已满意了。究竟现在有数以千计的 Web 运用程序都在运用 HTTP 安全性,所以这关于 SOAP 确完结已满意。因而,当时的 SOAP 标准假定安全性归于传输问题,而并不作为安全性问题处理。
  当 SOAP 扩展至更为通用的协议,并运转于很多传输之上时,安全性问题就变得突出了。例如,HTTP 供给若干种办法对进行 SOAP 调用的用户进行身份验证,可是当音讯从 HTTP 路由到 SMTP 传输时,怎样传达该身份标识呢?SOAP 是作为结构块协议进行规划的,所以走运的是,现已有了相应的标准以依据 SOAP 为 Web 服务供给额定的安全维护功用。WS-Security 标准(英文)界说了一套完好的加密体系,而 WS-License 标准(英文)界说了相应的技能,以保证调用者的身份标识,并保证只要授权用户才能够运用 Web 服务。
  WSDL

  WSDL (Web Services Description Language) 表明 Web 服务阐明言语。在本文中,咱们能够以为 WSDL 文件是一个 XML 文档,用于阐明一组 SOAP 音讯以及怎么交流这些音讯。换句话说,WSDL 关于 SOAP 的效果就象 IDL 关于 CORBA 或 COM 的效果。因为 WSDL 是 XML 文档,因而很简略进行阅览和修改;但大大都情况下,它由软件生成和运用。
  要检查 WSDL 的值,能够假定您要调用由您的一位事务同伴供给的 SOAP 办法。您能够要求对方供给一些 SOAP 音讯示例,然后编写您的运用程序以生成并运用与示例类似的音讯,但这样很简略犯错。例如,您或许看到一个 2837 的客户 ID,并假定它为整数,而实践上它是一个字符串。WSDL 经过清晰的表明法指定恳求音讯有必要包括的内容以及呼应音讯的款式。
  WSDL 文件用于阐明音讯格局的表明法以 XML 架构标准为根底,这意味着它与编程言语无关,并且以标准为根底,因而适用于阐明可从不同渠道、以不同编程言语拜访的 XML Web Service 接口。除阐明音讯内容外,WSDL 还界说了服务的方位,以及运用什么通讯协议与服务进行通讯。也便是说,WSDL 文件界说了编写运用 XML Web Service 的程序所需的悉数内容。有几种东西能够读取 WSDL 文件,并生成与 XML Web Service 通讯所需的代码。其间一些最强壮的东西可在 Microsoft Visual Studio® .NET 中找到。
  当时,许多 SOAP 东西包都包括从现有程序接口生成 WSDL 文件的东西,但却简直没有直接用于编写 WSDL 的东西,并且 WSDL 的东西支撑也很不完好。但不久就会呈现编写 WSDL 文件的东西,接着还会有生成署理和存根的东西(与 COM IDL 东西很类似),这些东西将成为大都 SOAP 完结计划的一部分。到那时,WSDL 将成为创立 XML Web Service 的 SOAP 接口的首选办法。
  这里有一个十分好的 WSDL 阐明(英文),您还能够在 http://www.w3.org/TR/wsdl(英文)找到 WSDL 标准。
  UDDI

  通用发现、阐明和集成 (UDDI) 是 Web 服务的黄页。与传统黄页相同,您能够查找供给所需服务的公司,阅览以了解所供给的服务,然后与或人联络以取得更多信息。当然,您也能够供给 Web 服务而不在 UDDI 中注册,就象在地下室开展事务,依托的是口头呼喊;可是假如您期望拓宽商场,则需求 UDDI 以便能被客户发现。
  UDDI 目录条目是介绍所供给的事务和服务的 XML 文件。UDDI 目录条目包括三个部分。“白页”介绍供给服务的公司:称号、地址、联络办法等等;“黄页”包括依据标准分类法(例如 North American Industry Classification System 和 Standard Industrial Classification)的职业类别;“绿页”具体介绍了拜访服务的接口,以便用户能够编写运用程序以运用 Web 服务。服务的界说是经过一个称为类型模型(或 tModel)的 UDDI 文档来完结的。大都情况下,tModel 包括一个 WSDL 文件,用于阐明拜访 XML Web Service 的 SOAP 接口,可是 tModel 十分灵敏,能够阐明简直一切类型的服务。
  UDDI 目录还包括若干种办法,可用于查找构建您的运用程序所需的服务。例如,您能够查找特定地理方位的服务供给商或许查找特定的事务类型。之后,UDDI 目录将供给信息、联络办法、链接和技能数据,以便您确定能满意需求的服务。
  UDDI 答应您查找供给所需的 Web 服务的公司。假如您现已知道要与谁进职事务协作,但尚不了解它还能供给哪些服务,这时该怎么处理呢?WS-Inspection 标准(英文)答应您阅读特定服务器上供给的 XML Web Service 的调集,从中查找所需的服务。
  有关 UDDI 的具体信息,请拜访 http://www.uddi.org/about.html(英文)。
  其他内容

  到现在为止,咱们现已评论了怎么与 XML Web Service 通讯 (SOAP),XML Web Service 是怎样进行阐明的 (WSDL),以及怎么查找 XML Web Service (UDDI)。这些内容构成了一套根本标准,为运用程序的集成和聚合供给了根底。依据这些根本标准,公司能够构建实践的处理计划,并从中获益。
  为完结 XML Web Service,咱们现已做了许多作业,但仍有很多作业需求完结。今日,人们现已运用 XML Web Service 取得了成功,但关于开发人员来说,仍有许多环节需求完善。例如,安全性、运营办理、事务处理以及牢靠的音讯传递等。Global XML Web Services Architecture 将经过以下办法协助 XML Web Service 进入下一个开展阶段:供给一个共同的通用模型,以模块化和可扩展的办法向 XML Web Service 增加新的高档功用。
  上面说到的安全模块(WS-Security [英文] 和 WS-License [英文])便是 Global Web Services Architecture 标准的一部分。运营办理的需求(例如在多个服务器之间路由音讯,以及动态装备这些服务器以便进行处理)也是 Global Web Services Architecture 的一部分,它们是经过 WS-Routing 标准(英文)和 WS-Referral 标准(英文)来完结的。跟着 Global Web Services Architecture 的开展,还将进一步介绍满意上述需求以及其他需求的标准。