代码改变世界

什么是web services?它有什么作用,以及它如何实现?

2007-11-25 16:58  乱世文章  阅读(1021)  评论(0编辑  收藏  举报
web services
Web Services 简介

Web Services 是一种构建应用程序的普通模型,并能在所有支持 Internet 通讯的操作系统上实施运行。Web Services 令基于组件的开发和 Web 的结合达到最佳,基于组件的对象模型,如:Distributed Component Object Model(DCOM)、Remote Method Invocation(RMI),Internet Inter-Orb Protocol(IIOP)都已经发布了很长时间了,但是这些模型都依赖于特殊对象模型协议,而 Web Services 利用 SOAP 和 XML
对这些模型在通讯方面作了进一步的扩展以消除特殊对象模型的障碍。
  Web Services 主要利用 HTTP 和 SOAP 协议是商业数据在 Web 上传输,SOAP通过 HTTP 调用商业对象执行远程功能调用,Web 用户能够使用 SOAP 和 HTTP通过 Web 调用的方法来调用远程对象.

Web Services 结构

客户根据 WSDL 描述文档,会生成一个 SOAP 请求消息。Web Services 都是放在Web服务器(如IIS)后面,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到 Web 服务器来。Web 服务器再把这些请求转发给 Web Services 请求处理器。请求处理器的作用在于,解析收到的 SOAP 请求,调用 Web Services,
然后再生成相应的 SOAP 应答。Web 服务器得到 SOAP 应答后,会再通过 HTTP应答的方式把信息送回到客户端。

Web Services 体系

Web Services 体系主要包括以下几个方面:
① Web Services 组件。包括 3 种组件:
服务提供者:提供服务,进行注册以使服务可用;
服务代理:服务交换所,服务提供者和服务请求者之间的媒体;
服务请求者:向服务代理请求服务,调用这些服务创建应用程序。
② Web Services 操作。包括 3 种操作:
发布/不发布(Publish/Unpublish):提供者向代理发布(注册)服务或不发布(移
去)这些服务的注册;
发现(Find):由服务请求者向服务代理执行 find 操作,服务请求者描述要找的
服务,服务代理分发匹配的结果;
绑定(Bind):在服务请求者和服务提供者之间绑定,这两部分协商以使请求者
可以访问和调用提供者的服务。
③ UDDI——通用发现、描述和整合。
这是一个Web Services的信息注册规范,基于UDDI的Web Services注册可以被发现 UDDI 的发现方法是:在 Web 上有一种分布的注册服务,商务和服务以一种通用的 XML 格式描述,XML 中的结构化数据易于发现、分析和操作。
④ WSDL——Web 服务描述语言。
Web 服务描述言语(WSDL)是一种 XML 语法,为服务提供者提供了描述构建在不同协议或编码方式之上的 Web Services 请求基本格式的方法。WSDL 用来描述一个 Web Services 能做什么,它的位置在哪里,如何调用它等。在假定以SOAP/HTTP/MIME 作为远程对象调用机制的情况下,WSDL 会发挥最大作用。UDDI 注册描述了 Web Services 绝大多数方面,包括服务的绑定细节。WSDL 可以看作是 UDDI 服务描述的子集。
WSDL 将服务定义为一个网络端点的集合,或者说端口的集合。在 WSDL 里面,端点及消息的抽象定义与它们具体的网络实现和数据格式绑定是分离的。这样就可以重用这些抽象定义:消息,需要交换的数据的抽象描述;端口类型,操作的抽象集合。针对一个特定端口类型的具体协议和数据格式规范构成一个可重用的绑定。一个端口定义成网络地址和可重用的绑定的连接,端口的集合定义为服务。因此一个 WSDL 文档在定义网络服务的时候使用如下的元素:
类型——使用某种的类型系统(如 XSD)定义数据类型的容器;
消息——通讯数据抽象的有类型的定义;
操作——服务支持动作的抽象描述;
端口类型——一个操作的抽象集合,该操作由一个或多个端点支持;
绑定——针对一个特定端口类型的具体协议规范和数据格式规范;
端口——一个单一的端点,定义成一个绑定和一个网络地址的链接;
服务——相关端点的集合。
所以不难看出,WSDL 给客户提供了一个模板,方便客户描述和绑定服务

定义一:

Web Services是自包含的、模块化的应用程序,它可以在网络(通常为Web)中被描述、发布、查找以及调用。

定义二:

Web Services是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。

定义三:

所谓Web服务,它是指由企业发布的完成其特别商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项应用服务。(UDDI规范2.0)

商业需求
XML Web services是分布式计算的重要标准,也是未来软件开发的技术趋势,通过XML Web services标准,应用软件之间可以实现跨平台,跨编程语言的联接和互操作。作为微软平台的一个基本功能,.基于XML Web services标准的.NET 开发平台可以实现个人之间,个人与企业之间,和企业之间的信息互连,这样就实现人们可以随时随地存取和使用信息的梦想。

在微软构造和实现这种.NET- connected平台的同时,众多的合作伙伴和厂商也在开发基于XML Web services标准的可以互相联接和整合软件产品和解决方案。这些软件产品和解决方案正在给他们的客户带来巨大的好处:企业的信息系统可以更方便地为其用户提供更好的服务,企业的信息系统可以与合作伙伴的系统更好地相连,可以为企业的雇员提供及时正确的信息。

产业商机
微软公司的.NET Connected Logo计划,是一个全球认证计划,主要是用来标识那些基于XML Web services而开发的软件和解决方案。经微软认证的软件公司,可以将.NET Connected 标志图案置于其被认证软件产品的包装,文档,宣传材料和广告中。

.NET Connected标识,标志着您的应用软件基于.NET Framework开发,能够基于XML Web services标准和其他的软件共享数据和功能。.NET Connected Logo计划可以帮助客户识别应用软件、系统和服务是否为了适应下一代Internet计算的要求而进行了优化。

参加Microsoft .NET Connected Logo计划的好处
Microsoft .NET Connected Logo会:

标识领先的软件开发技术和实力。
区别您的应用软件于其他的软件产品。
充分利用微软在.NET上所做的广泛的市场宣传和投入。
通过.NET Connected 目录在全球推广和宣传您的软件产品和解决方案。
使用.NET Connected产品和服务的用户会受益:

经认证的软件产品和服务,可以基于XML Web services与其他的软件互联,并被无缝地整合进企业未来的信息系统中。
经认证的产品,基于.NET Framework开发,有良好的性能,稳定性和安全性,意味着这个产品或服务可以信赖。
可以帮助最终用户迅速地识别那些能够帮助他们随时随地信息互连的技术。
Microsoft .NET Connected 白金应用要求:

应用软件或服务应基于Microsoft .NET Framework 开发,主要的应用功能提供有基于XML Web service 的接口, 这个Web service调用的过程要符合业界标准:XML Schema 1.0, SOAP 1.1XML Schema 1.0, SOAP 1.1以及WSDL 1.1 。应用应该用到至少一种微软的应用服务器,如SQL Server, Exchange Server, Biztalk Server等。

The .NET Connected Directory

微软.NET Connected Directory 提供了一个中心的位置,用户可以在这里查找信息,合作伙伴可以在这个位置展示满足.NET Connected logo要求的软件和服务。即使微软推广这些应用软件和XML Web services时,合作伙伴仍然可以继续维护与宿主这些服务或应用软件,维护任何支付方式,处理所有与这些产品相关的问题。

通常,如果你的产品得到了.NET Connected 资质认证,他就会自动的在目录产品列表中显示出来。一个合作伙伴可以选择是否要在.NET Connected Directory中显示自己的产品。

合作伙伴的信息在加入目录之前要经过评审得到允许才可加入。

合作者详细网址(需要URL)

为了能够使合作者对它们提交的东西做出改动时(支付结构,下载网址,描述等)不用重新提交入口,我们需要连接到合作者的网址,这个网址包括后面列出的一些信息。这些信息不仅会帮助开发者得到计划的版本,下载信息等,它也包含应用软件自身的基本商业信息。合作者的网页包含的信息为:

使用XML Web service的XML Web 服务或应用软件的名字
描述产品的功能
执行它的步骤
连接到XML Schema的网址,浏览XML Schema(可选)
WSDL Schema Version (ie: v1.1)
SOAP Version (ie: v1.1)
XML Web service 或软件花费和支付方法
系统要求(可选)
和哪些产品一起工作效果好或要求(可选)
建立联系得到用户支持
建立连接下载软件(可选)
直接回到.NET Connected directory的链接http://www.microsoft.com/net/directory
产品有效期(如果有的话)
可选信息--常见问题回答,其他信息,联系电话
网页必须显示适当的.NET Connected Logo
合作者的信息在加入目录之前要经过评审得到允许才可加入

未来的需求

将来.NET Connected Logo计划会产生更高级的标准。

这个文档只是作为参考,MICROSOFT并没有授权,或隐含什么。

使用 .NET
就其核心问题而言,Microsoft® .NET是关于使技术为人们所用,而不是强制个人适应其计算机的限制。利用 .NET,无论何时何地您总能连接到您首选设备上的信息。利用 .NET,您可以保护您的个人信息和企业数据,同时允许有您的授权的他人连接到这些信息。


.NET 的价值
对于个人(包括您自己、您的客户、雇员、供应商和合作伙伴)来说,使用 Microsoft .NET 进行生成的成果将是无缝的、吸引人的体验。
使用 .NET 进行开发
借助 Microsoft Visual Studio® .NET 和 Microsoft .NET 框架,Microsoft® .NET 提供了生成和部署最先进的应用程序和 XML Web services 的最快捷方法。
.NET 对开发人员意味着什么
通过使用 Microsoft? Visual Studio® .NET 和 .NET 框架,Microsoft 为开发人员提供了一整套开发工具,使用这些工具可以快速而轻松地创建最先进的应用程序和 XML Web services。

借助 Visual Studio .NET 和 .NET 框架,Microsoft .NET 允许更快地开发软件应用程序和服务。
.NET 框架和 Visual Studio .NET 将为应用程序和 XML Web services 提供更高的可靠性。
XML Web services 的使用将允许在 .NET 平台上创建的应用程序和服务更容易、更有效地集成在一起。
XML Web services
对于 Microsoft .NET,在处理一组有限任务的离散单元(XML Web services)中生成代码。由于基于 XML 的标准接口简化了软件之间的通讯,因此可以将 XML Web services 一起集成到高度专门化的应用程序和体验。您可以使用来自世界各地的最好的 XML Web services,快速而轻松地创建所需的解决方案。Microsoft 将提供一组以用户为中心的核心 XML Web services(即 Microsoft .NET 我的服务)以提供诸如用户标识和日历访问之类的功能。 

 

当前应用程序的开发慢慢从C/S结构向B/S结构转移,人们开始偏爱基于浏览器的瘦客户应用程序。这是因为它能够避免花在桌面应用程序发布上的高成本。发布桌面应用程序成本很高,一半是因为应用程序安装、配置以及维护的问题,另一半是因为客户和服务器之间通信的问题。对于B/S结构,浏览器几乎是每一个客户端的标准配置。关于客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信。这是因为任何运行Web浏览器的机器都在使用HTTP协议。同时,当前许多防火墙也配置为只允许HTTP连接。许多商用程序还面临另一个问题,那就是与其他程序的互操作性。这些程序用不同的语言开发并运行在不同的平台上。
同时,现在在各大主流技术论坛或企业信息系统论坛上,我们经常会发现这样一个名词:Web Services。同时还会发现,与这个名词同时出现的多是各大主流技术供应商,各大技术供应商无一不在关注这一领域的发展。从Microsoft的.NET架构,到SUN的SUN ONE,以及IBM的IBM Web Services,都体现了这些重量级的技术提供者对Web Services的推崇与重视。
这些都为Web Services提供了机遇,电子商务的发展更促进了这种发展。Web服务使公司可以降低进行电子商务的成本,更快地部署解决方案以及开拓新机遇。Web服务使应用程序的集成比以前更快、更容易而且更便宜。集成在协议栈中较高层发生,它基于更注重服务语义而不那么注重网络协议语义的消息,从而实现了业务功能的松散集成。这些特性对于在企业之间和企业内部通过web连接业务功能是非常理想的。它们提供一种一致化编程模型,从而在企业内外都可以利用通用的基础设施并以一种通用的方法进行应用程序集成。
什么是Web Services?从技术角度来讲,Web Services是一种新的技术架构、新的软件应用环境。它的系统架构和实现技术完全继承已有的技术,可以认为Web Services是Internet的一种延伸,是现有的Internet面向更好的互操作能力的一个延伸。
1、Web Services的概念
Web Services,从字面上理解就是通过Web提供的服务。我们可以理解Web Services是自包含的、模块化的应用程序,它可以在网络(通常为Web)中被描述、发布、查找以及调用;也可以理解Web Senices是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Sevices能与其他兼容的组件进行互操作;也可以这样理解,所谓Web服务,它是指由企业发布的完成其特别商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项应用服务
对于Web Services,很多人会与Web Service混为一谈,认为二者指的是同一个事物。其实不然,前者指的是用于建构Web Service的技术框架,后者指的是使用Web Services技术而创建的应用实例。Web Services是描述了一些操作的接口,通过标准化的XML消息传输机制,可以通过网络访问这些操作。Web Services使用标准的规范的基于XML的WSDL语言描述的,这称为Web Services的服务描述。这一描述囊括了与服务交互所需要的全部细节,包括消息格式(详细描述操作的输入输出消息格式)、传输协议和位置。该接口隐藏了服务实现的细节,允许通过独立与服务实现、独立于软硬件平台、独立于编写服务所用的编程语言的方式使用该服务。这使得基于Web Services的应用程序具有松散耦合、面向组件和跨技术实现的特点。Web Services都履行一定的特定业务或任务,可以实现同其他Web Services一起用于实现复杂的商业交易。
2、Web Services特征
从外部使用者角度而言,Web Services是一种部署在Web上的对象和组件,具备以下特征:
·完好的封装性:
Web服务既然是一种部署在wbb上的对象,自然具备对象的良好封装性,对于使用者而言,他能且仅能看到该对象提供的功能列表。
·松散耦合
这一特征也是源于对象/组件技术,当一个Web服务的实现发生变更的时候,调用者是不会感到这一点的,对于调用者来说,只要Web服务的调用界面不变,Web服务的实现任何变更对他们来说都是透明的,甚至是当Web服务的实现平台从J2EE迁移到了.NET或者是相反的迁移流程,用户都可以对此一无所知。对于松散锅台而言,尤其是在Internet环境下的Web服务而言,需要有一种适合Internet环境的消息交换协议,而XML/SOAP正是目前最为适合的消息交换协议。
·使用协议的规范性
这一特征从对象而来,但相比一般对象,其界面规范更加规范化和易于机器理解。首先,作为Web服务,对象界面所提供的功能应当使用标准的描述语言来描述(比如WSDL);其次,由标准描述语言描述的服务界面应当是能够被发现的,因此这一描述文档需要被存储在私有的或公共的注册库里面。同时,使用标准描述语言描述的使用协约将不仅仅是服务界面,它将被延伸到Web服务的聚合、跨Web服务的事务、工作流等,而这些又都需要服务质量(QoS)的保障。其次,我们知道安全机制对于松散耦合的对象环境的重要性,因此我们需要对诸如授权认证、数据完整性(比如签名机制)、消息源认证以及事务的不可否认性等运用规范的方法来描述、传输和交换。最后,在所有层次的处理都应当是可管理的,因此需要对管理协约运用同样的机制。
·高度可集成能力
    由于Web服务采取简单的、易理解的标准,Web协议作为组件界面描述和协同描述规范,完全屏蔽了不同软件平台的差异,无论是CORBA、DCOM还是EJB,都可以通过这一种标准的协议进行互操作,实现了在当前环境下最高的可集成性。
3、Web Services的架构
Web服务体系结构基于三种角色(服务提供者、服务注册中心和服务请求者)之间的交互。交互涉及发布、查找和绑定操作。这些角色和操作一起作用于Web服务构件:Web服务软件模块及其描述。在典型情况下,服务提供者托管可通过网络访问的软件模块(Web服务的一个实现)。服务提供者定义Web服务的服务描述,并把它发布到服务请求者或服务注册中心。服务请求者使用查找操作来从本地或服务注册中心检索服务描述,然后使用服务描述与服务提供者进行绑定并调用Web服务实现或同它交互。服务提供者和服务请求者角色是逻辑结构,因而服务可以表现两种特性。图1图示了这些操作、提供这些操作的组件及它们之间的交互。
Web Services体系架构中的角色包括如下三种:
(1)     服务提供者:
从企业的角度看,这是服务的所有者。从体系结构的角度看,这是托管访问服务的平台。
(2)     服务请求者
从企业的角度看,这是要求满足特定功能的企业。从体系结构的角度看,这是寻找并调用服务,或启动与服务的交互的应用程序。服务请求者角色可以由浏览器来担当,由人或无用户界面的程序(例如,另外一个Web服务)来控制它。
(3)     服务注册中心
这是可搜索的服务描述注册中心,服务提供者在此发布他们的服务描述。在静态绑定开发或动态绑定执行期间,服务请求者查找服务并获得服务的绑定信息(在服务描述中)。对于静态绑定的服务请求者,服务注册中心是体系结构中的可选角色,因为服务提供者可以把描述直接发送给服务请求者。同样,服务请求者可以从服务注册中心以外的其他来源得到服务描述。
对于利用Web服务的应用程序,必须发生以下三个行为:发布服务描述、查询或查找服务描述,以及根据服务描述绑定或调用服务。这些行为可以单次或反复出现。这些操作具体为:
(1)      发布   
为了使服务可访问,需要发布服务描述以使服务请求者可以查找它。发布服务描述的位置可以根据应用程序的要求而变化。   
(2)      查找   
在查找操作中,服务请求者直接检索服务描述或在服务注册中心中查询所要求的服务类型。对于服务请求者,可能会在两个不同的生命周期阶段中牵涉到查找操作:在设计时为了程序开发而检索服务的接口描述,而在运行时为了调用而检素服务的绑定和位置描述。   
(3)      绑定   
最后需要调用服务。在绑定操作中,服务请求者使用服务描述中的绑定细节来定位、联系和调用服务,从而在运行时调用或启动与服务的交互。
4、Web Services的类别
综合当今的Web应用以及Web服务的特点,一般认为Web服务实施的领域可以分为四类:
(1)    BuSiness-Oriented Web Services
该类服务针对的是那些面向企业应用的服务,包括企业内部的ERP系统,企业间的SCM/CRM等系统。当这些系统以Web服务的形式在网络(Internet和Intranet)中出现时,企业内的应用集成将更容易,而在企业问的众多合作伙伴的系统对接也将不再是无法完成的任务。目前现有的解决方案和产品的提供商有Bowstreet、Epicentric等。
(2) Consumer-Oriented Web Services
此类服务针对的是那些原先的B2C的网站的改造,为这些Browser-0riented的Web应用增加(注意是增加)了Web服务的应用界面,使得第三方的桌面工具或其自身提供的增值的桌面工具能够利用更优秀的用户界面,提供跨越多个B2C服务的桌面服务。这将使得用户使用Internet更为方便,能够获得更加便捷的服务。比如我们完全可以在个人理财桌面系统中集成(调用)Internet上的股票价格查询Web服务、机票预定Web服务等,使得个人理财应用的自动化程度更高。
(3) Device-Oriented Web Services
此类服务的使用终端一般是手持设备和日用家电,对于前者而言,可以在不用修改网络服务的体系架构的前提下,令先前的网络服务支持除PC以外的各种终端,比如Palm、PocketPC、手机等。如此,那些天气预报服务、Email服务、主动信息服务等将更为有效和便捷。而后者对于日用家电,则可能是一个市场的启动期,有了Web服务作为基础框架,智能型的日用家电将真正获得标准的支持,从而有了广泛使用的可能。
(4) System-Oriented Web Services
一些传统意义上的系统服务、比如用户权限认证、系统监控等,如果被迁移到全球范围的Internet上,或者企业内部的Intranet上,其作用范围将从单个系统或局部网络,拓展到整个企业网络或整个Internet。如此,基于同一系统服务的不同应用将得以在整个Internet环境中部署,譬如跨国企业的所有在线服务可以使用同一个用户权限认证Web服务。
 一种新的软件构架技术。  
  C/S软件只适用于局域网  
  B/S软件虽然解决了远程应用问题,但客户端只能使用浏览器  
   
  webservices模式结合了C/S、B/S特点,客户端用应用程序来远程访问服务器端的服务,这种远程访问是基于http等Internet协议的。  
  webservices还设计了标准化的远程协议:SOAP,设计了一套web服务发布机制,以使这种模式的软件更灵活。
Web   Service   是一种新的web应用程序分支,他们是自包含、自描述、模块化的应用,可以发布、定位、通过web调用。Web   Service可以执行从简单的请求到复杂商务处理的任何功能。一旦部署以后,其他Web   Service应用程序可以发现并调用它部署的服务。    
  Web   Service是一种应用程序,它可以使用标准的互联网协议,像超文本传输协议(HTTP)和XML,将功能纲领性地体现在互联网和企业内部网上。可将Web服务视作Web上的组件编程。    
  Web服务是建立在一些通用协议的基础上,如HTTP,SOAP,XML,WSDL,UDDI等。这些协议在涉及到操作系统、对象模型和编程语言的选择时,没有任何倾向,因此将会有很强的生命力。但具体到Web服务编程时,.NET和J2EE有一些区别。.NET   Web服务可用C#,VB,JScript等语言编写,还能利用一些Windows资源;而J2EE   Web服务一般使用JAVA语言及J2EE资源,像Bean,EJB,CORBA等。它们在编程环境,语法结构,管理配置等方面也各有自己的特色。iNET   Web服务用JAVA语言实现了.NET   类库中提供的Web服务APIs。它能把用户用.NET开发的Web服务移植到与平台无关的JAVA。因是JAVA,故也可利用JAVA的资源。  
  Web   Services扮演什么角色?    
  上述的这些趋势意味着,更加智能的处理,操作和汇总内容变得十分重要。让我们看看按照Web   services角度所预示的四个趋势:    
  ◆内容更加动态:一个web   service必须能合并从多个不同源来的内容,可以包括股票,天气,新闻等,在传统环境中的内容,如存货水平,购物订单或者目录信息等,都从后端系统而来    
  ◆带宽更加便宜:web   services可以分发各种类型的内容(音频,视频流等)    
  ◆存储更便宜:   web   services必须能聪明地处理大量数据,意味着要使用数据库,LDAP目录,缓冲,和负载平衡软件等技术保持可扩展能力    
  ◆普遍式计算更重要:web   services不能要求客户使用某一版本的windows的传统浏览器,必须支持各种设备,平台,浏览器类型,各种内容类型。  
  要达到这样的目标,Web   services要使用两种技术:    
  ◆XML   XML是在web上传送结构化数据的伟大方式,Web   services要以一种可靠的自动的方式操作数据,HTML不会满足要求,而XML可以使web   services十分方便的处理数据,它的内容与表示的分离十分理想    
  ◆SOAP   SOAP使用XML消息调用远程方法,这样web   services可以通过HTTP协议的post和get方法与远程机器交互,而且,SOAP更加健壮和灵活易用。    
  其他象UDDI和WSDL技术与XML和SOAP技术紧密结合用于服务发现。  
  那么什么是web   service   平台呢?最基本的平台是XML加HTTP。HTTP是一个在Internet上广泛使用的协议。XML是一种元语言,你可以用它书写特定的语言来描述客户和服务之间或者组件和复杂服务之间的交互。在web   server之后,XML格式的消息被转变成中间件的请求,返回的结果也会转化成XML格式。    
  有必要增加一些服务,同时保持简单性和普遍性,来把Web构建成一个功能更强大的平台。可以认为功能全面的web   services平台是XML+HTTP+SOAP+WSDL+UDDI。在更高层次上,可能还要加上一些尚未广泛接受的技术如XAML,XLANG,   XKMS,和XFS。