你可能早就听说过
WebService
了,你也可能已经对
WebService
有了一些概念,现在不管是在什么场合,谈到以后发展的新趋势,大家都会提到
WebService
。世界上的顶级公司,不管是微软、
IBM
还是
SUN
,都开始把
WebService
频繁地挂在嘴边。大多数媒体也开始鼓吹
WebService
是多么的好,多么的有
前途或者
“
钱
”
途
……
但
WebService
到底是什么呢?数据库通过网页实现服务?网络上的协议?还是一种软件的标准?
在 http//www.hexiesoft.net 上你可以欣赏到 .NET 下使用微软开发工具建立的 WebService 企业级 ERP 应用系统。
在 http//dwdemos.alphaworks.ibm.com/HospitalProj/index.html 上,你可以体验使用 IBM 开发工具创建的提供医疗保险信息查询的 WebService 。
WebService 概念
什么是 WebService 呢?从表面上看, WebService 就是一个应用程序,它向外界 暴露 出一个能够通过 Web 进行调用的 API 。这就是说,你能够用编程的方法通过 Web 调用来实现某个功能的应用程序。例如,笔者创建一个 WebService ,它的作用是查询某公司某员工的基本信息。它接受该员工的编号作为查询字符串,返回该员工的具体信息。你可以在浏览器的地址栏中直接输入 HTTPGET 请求来调用罗列该员工基本信息的 ASP 页面,这就可以算作是体验 WebService 了。
从深层次上看, WebService 是一种新的 Web 应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络 ( 通常为 Web) 中被描述、发布、查找以及通过 Web 来调用。
WebService 便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得 WebService 能与其他兼容的组件进行互操作。它可以使用标准的互联网协议,像超文本传输协议 HTTP 和 XML ,将功能体现在互联网和企业内部网上。 WebService 平台是一套标准,它定义了应用程序如何在 Web 上实现互操作性。你可以用你喜欢的任何语言 ( 笔者用的是 C#) ,在你喜欢的任何平台上写 WebService 。
在 http//www.hexiesoft.net 上你可以欣赏到 .NET 下使用微软开发工具建立的 WebService 企业级 ERP 应用系统。
在 http//dwdemos.alphaworks.ibm.com/HospitalProj/index.html 上,你可以体验使用 IBM 开发工具创建的提供医疗保险信息查询的 WebService 。
WebService 概念
什么是 WebService 呢?从表面上看, WebService 就是一个应用程序,它向外界 暴露 出一个能够通过 Web 进行调用的 API 。这就是说,你能够用编程的方法通过 Web 调用来实现某个功能的应用程序。例如,笔者创建一个 WebService ,它的作用是查询某公司某员工的基本信息。它接受该员工的编号作为查询字符串,返回该员工的具体信息。你可以在浏览器的地址栏中直接输入 HTTPGET 请求来调用罗列该员工基本信息的 ASP 页面,这就可以算作是体验 WebService 了。
从深层次上看, WebService 是一种新的 Web 应用程序分支,它们是自包含、自描述、模块化的应用,可以在网络 ( 通常为 Web) 中被描述、发布、查找以及通过 Web 来调用。
WebService 便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得 WebService 能与其他兼容的组件进行互操作。它可以使用标准的互联网协议,像超文本传输协议 HTTP 和 XML ,将功能体现在互联网和企业内部网上。 WebService 平台是一套标准,它定义了应用程序如何在 Web 上实现互操作性。你可以用你喜欢的任何语言 ( 笔者用的是 C#) ,在你喜欢的任何平台上写 WebService 。
WebService
的技术支持
WebService 平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性, WebService 平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。目前这些协议有:
1.XML 和 XSD
可扩展的标记语言 XML 是 WebService 平台中表示数据的基本格式。除了易于建立和易于分析外, XML 主要的优点在于它既与平台无关,又与厂商无关。 XML 是由 万维网协会 (W3C) 创建, W3C 制定的 XMLSchemaXSD 定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。
WebService 平台是用 XSD 来作为数据类型系统的。当你用某种语言如 VB.NET 或 C# 来构造一个 WebService 时,为了符合 WebService 标准,所有你使用的数据类型都必须被转换为 XSD 类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP 。
2.SOAP
SOAP 即简单对象访问协议 (SimpleObjectAccessProtocol) , 它是用于交换 XML 编码信息的轻量级协议。它有三个主要方面: XML-envelope 为描述信息内容和如何处理内容定义了框架,将程序对象编码成为 XML 对象的规则,执行远程过程调用 (RPC) 的约定。 SOAP 可以运行在任何其他传输协议上。例如,你可以使用 SMTP ,即因特网电子邮件协议来传递 SOAP 消息,这可是很有诱惑力的。在传输层之间的头是不同的,但 XML 有效负载保持相同。
WebService 希望实现不同的系统之间能够用 “ 软件 - 软件对话 ” 的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现 “ 基于 Web 无缝集成 ” 的目标。
3.WSDL
WebService 描述语言 WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于 XML 的语言,用于描述 WebService 及其函数、参数和返回值。因为是基于 XML 的,所以 WSDL 既是机器可阅读的,又是人可阅读的。
4.UDDI
UDDI 的目的是为电子商务建立标准; UDDI 是一套基于 Web 的、分布式的、为 WebService 提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的 WebService 注册,以使别的企业能够发现的访问协议的实现标准。
5. 远程过程调用 RPC 与消息传递
WebService 本身其实是在实现应用程序间的通信。我们现在有两种应用程序通信的方法: RPC 远程过程调用 和消息传递。使用 RPC 的时候,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。 RPC 系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。
WebService 平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性, WebService 平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。目前这些协议有:
1.XML 和 XSD
可扩展的标记语言 XML 是 WebService 平台中表示数据的基本格式。除了易于建立和易于分析外, XML 主要的优点在于它既与平台无关,又与厂商无关。 XML 是由 万维网协会 (W3C) 创建, W3C 制定的 XMLSchemaXSD 定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。
WebService 平台是用 XSD 来作为数据类型系统的。当你用某种语言如 VB.NET 或 C# 来构造一个 WebService 时,为了符合 WebService 标准,所有你使用的数据类型都必须被转换为 XSD 类型。如想让它使用在不同平台和不同软件的不同组织间传递,还需要用某种东西将它包装起来。这种东西就是一种协议,如 SOAP 。
2.SOAP
SOAP 即简单对象访问协议 (SimpleObjectAccessProtocol) , 它是用于交换 XML 编码信息的轻量级协议。它有三个主要方面: XML-envelope 为描述信息内容和如何处理内容定义了框架,将程序对象编码成为 XML 对象的规则,执行远程过程调用 (RPC) 的约定。 SOAP 可以运行在任何其他传输协议上。例如,你可以使用 SMTP ,即因特网电子邮件协议来传递 SOAP 消息,这可是很有诱惑力的。在传输层之间的头是不同的,但 XML 有效负载保持相同。
WebService 希望实现不同的系统之间能够用 “ 软件 - 软件对话 ” 的方式相互调用,打破了软件应用、网站和各种设备之间的格格不入的状态,实现 “ 基于 Web 无缝集成 ” 的目标。
3.WSDL
WebService 描述语言 WSDL 就是用机器能阅读的方式提供的一个正式描述文档而基于 XML 的语言,用于描述 WebService 及其函数、参数和返回值。因为是基于 XML 的,所以 WSDL 既是机器可阅读的,又是人可阅读的。
4.UDDI
UDDI 的目的是为电子商务建立标准; UDDI 是一套基于 Web 的、分布式的、为 WebService 提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的 WebService 注册,以使别的企业能够发现的访问协议的实现标准。
5. 远程过程调用 RPC 与消息传递
WebService 本身其实是在实现应用程序间的通信。我们现在有两种应用程序通信的方法: RPC 远程过程调用 和消息传递。使用 RPC 的时候,客户端的概念是调用服务器上的远程过程,通常方式为实例化一个远程对象并调用其方法和属性。 RPC 系统试图达到一种位置上的透明性:服务器暴露出远程对象的接口,而客户端就好像在本地使用的这些对象的接口一样,这样就隐藏了底层的信息,客户端也就根本不需要知道对象是在哪台机器上。
WebService
软件的支持
操作系统离不开丰富的应用软件的支持。同样, WebService 这项技术只有通过日益广泛的应用才能体现出其价值,目前比较流行的实现方法是使用 .NET 和 Java 两种技术,并且两种实现方法可以互相操作;如今我们已经可以看到使用微软、 IBM 、 SUN 、 Borland 等不同厂商的 WebService 构建工具建立的 WebService 应用。
微软 .NET
微软的 .NET 技术应该算是时下最为流行的 WebService 开发技术。首先因为其公司在以前相应的产品就占有相当大的市场份额,以至使新推出的 .NET 得以有比较稳定的用户群;其次也是更重要的是 .NET 平台不仅延续了微软一贯的编程风格,而且还增加了许多支持 Web 服务的关键性技术,使得 .NET 在操作的简单性和执行的稳定性,高效性上达到了一个非常好的结合。
微软的 VisualStudio.NET 便是一个便于 Web 服务的开发工具。微软的目标是,将其新编程语言 ——C# 作为 WebService 的首选语言。虽然 C# 看起来与 Java 类似,但是还有一些 Java 中没有的独特的功能。 .NET 技术中用于 WebService 开发的主要工具是 ASP.NET 从技术上说, ASPasp.net 提供了一些超出 ASP 以前版本的优点 ( 例如:代码和 HTML 的分离,与脚本语言相比较,对 “ 真正 ” 的编程语言如 C# 的支持 ) 。
IBM 的 WebSphere
IBM 公司是业界第一家能够提供全面支持 Web 服务的电子商务基础设施中间件的公司。通过多年来与 W3C(TheWorldWideWebConsortium) 的共同努力,包括 DB2 、 Lotus 、 Tivoli 和 WebSphere 在内的所有 IBM 软件都实现了对 SOAP 、 WSDL 、 UDDI 、 Linux 、 XML 、 J2EE 等开放技术和标准的全面支持。 IBM 公司的 WebSphere 也是比较好的基础架构软件开发平台。 WebSphere 软件平台及开发工具包括 WebSphereStudioApplicationDeveloperWSAD 基于 J2EE 、 XML 和 Web 服务等开放标准,并具备 IBM 在可靠性、扩展性和安全性上的主要优势。 WebSphere 是 IBM 在 WebServices 策略中的核心平台,它支持所有开发、发布、部署 WebServices 应用所必需的开放标准和技术,包括 UDDI , SOAP , J2EE , WSDL ,和对 XML 技术集成的增强,这特使得它在全球有很多用户。
Borland 的 JBuilder
Borland 公司在 JBuilder7 中,用户可以用其 BorlandWebServicesKitforJava 和 BorlandJBuilderMobileSet3 进行更快捷地开发 WebService 和无线应用。这样将使开发者能够在同一个开发环境中轻松地创建和集成 WebService 。今年新推出的 JBuidler8 更是针对 WebService 开发更提供了方便和高效的方法。
总之,在 WebService 开发上, .NET 和 Java 都是很好的选择,尽管两者现在都有一些需要完善的地方,但是就目前来说,它们还是最好的开发手段和技术。具体选择哪种开发工具,也是仁者见仁,智者见智的问题。从根本上说,这两种方法没有孰优孰劣的问题,只是根据使用者对这两种方法的掌握程度和对具体语言的偏爱程度来决定。
操作系统离不开丰富的应用软件的支持。同样, WebService 这项技术只有通过日益广泛的应用才能体现出其价值,目前比较流行的实现方法是使用 .NET 和 Java 两种技术,并且两种实现方法可以互相操作;如今我们已经可以看到使用微软、 IBM 、 SUN 、 Borland 等不同厂商的 WebService 构建工具建立的 WebService 应用。
微软 .NET
微软的 .NET 技术应该算是时下最为流行的 WebService 开发技术。首先因为其公司在以前相应的产品就占有相当大的市场份额,以至使新推出的 .NET 得以有比较稳定的用户群;其次也是更重要的是 .NET 平台不仅延续了微软一贯的编程风格,而且还增加了许多支持 Web 服务的关键性技术,使得 .NET 在操作的简单性和执行的稳定性,高效性上达到了一个非常好的结合。
微软的 VisualStudio.NET 便是一个便于 Web 服务的开发工具。微软的目标是,将其新编程语言 ——C# 作为 WebService 的首选语言。虽然 C# 看起来与 Java 类似,但是还有一些 Java 中没有的独特的功能。 .NET 技术中用于 WebService 开发的主要工具是 ASP.NET 从技术上说, ASPasp.net 提供了一些超出 ASP 以前版本的优点 ( 例如:代码和 HTML 的分离,与脚本语言相比较,对 “ 真正 ” 的编程语言如 C# 的支持 ) 。
IBM 的 WebSphere
IBM 公司是业界第一家能够提供全面支持 Web 服务的电子商务基础设施中间件的公司。通过多年来与 W3C(TheWorldWideWebConsortium) 的共同努力,包括 DB2 、 Lotus 、 Tivoli 和 WebSphere 在内的所有 IBM 软件都实现了对 SOAP 、 WSDL 、 UDDI 、 Linux 、 XML 、 J2EE 等开放技术和标准的全面支持。 IBM 公司的 WebSphere 也是比较好的基础架构软件开发平台。 WebSphere 软件平台及开发工具包括 WebSphereStudioApplicationDeveloperWSAD 基于 J2EE 、 XML 和 Web 服务等开放标准,并具备 IBM 在可靠性、扩展性和安全性上的主要优势。 WebSphere 是 IBM 在 WebServices 策略中的核心平台,它支持所有开发、发布、部署 WebServices 应用所必需的开放标准和技术,包括 UDDI , SOAP , J2EE , WSDL ,和对 XML 技术集成的增强,这特使得它在全球有很多用户。
Borland 的 JBuilder
Borland 公司在 JBuilder7 中,用户可以用其 BorlandWebServicesKitforJava 和 BorlandJBuilderMobileSet3 进行更快捷地开发 WebService 和无线应用。这样将使开发者能够在同一个开发环境中轻松地创建和集成 WebService 。今年新推出的 JBuidler8 更是针对 WebService 开发更提供了方便和高效的方法。
总之,在 WebService 开发上, .NET 和 Java 都是很好的选择,尽管两者现在都有一些需要完善的地方,但是就目前来说,它们还是最好的开发手段和技术。具体选择哪种开发工具,也是仁者见仁,智者见智的问题。从根本上说,这两种方法没有孰优孰劣的问题,只是根据使用者对这两种方法的掌握程度和对具体语言的偏爱程度来决定。