龙空技术网

如何在基于面向服务架构设计的项目中应用Web服务技术(上篇)

杨教授工作室 281

前言:

此刻咱们对“vc调用webservice”大概比较珍视,你们都想要了解一些“vc调用webservice”的相关内容。那么小编也在网络上汇集了一些对于“vc调用webservice””的相关文章,希望大家能喜欢,你们快快来了解一下吧!

软件项目实训及课程设计指导——如何在基于面向服务系统架构设计的项目中应用Web Service技术(上篇)

1、了解软件系统开发人员所能够获得的各种层次的功能服务及所存在的问题

(1)计算机操作系统中所提供的"Service"(服务)

个人计算机软件的发展早期是基于微软DOS操作系统的,在早期DOS操作系统中就提供有"中断服务"的概念和有关的API,允许应用程序直接调用DOS操作系统所提供的中断服务程序而获得DOS操作系统中的各种功能(服务)。

随着个人计算机操作系统从DOS平台进入到微软Windows图形界面的系统平台,Windows操作系统仍然继续为PC应用程序提供服务支持,而形成"Window Service"的概念(如开发人员利用VC++访问Window系统API)。

(2)某种编程语言中所提供的API服务

软件应用系统的开发人员在应用某种编程语言开发相关的软件程序时,在该语言中一般也会提供语言级别的API服务。如Java语言中的JDK、C/C++语言中的API库等形式。如下示图为JDK API系统库的帮助文档的局部截图,Java程序员在开发软件系统项目时一般都会随时查阅这个帮助文档中的相关类、方法及接口等说明信息。

(3)某种开发平台中所提供的组件服务

在微软的技术平台中,提供有COM/DCOM组件;而在Sun J2EE技术平台中提供有EJB组件。它们都是平台级别的组件服务。软件系统的开发人员在应用系统程序的设计和开发实现中,充分地应用这些平台级别的组件服务,能够大大地简化软件系统的开发工作量和提高软件系统的可靠性。

尽管在软件开发中,从操作系统底层乃至开发平台的高层都提供有不同层次的功能服务,但这些功能服务都存在有一定的限制或者应用要求——操作系统中所提供的各种系统服务只适用该操作系统中运行的各种应用程序,而某种编程语言中所提供的API服务也只适用基于本语言编程实现的各种源程序代码之间,而开发平台中所提供的组件服务也同样只适用该开发平台,如在J2EE平台下的程序不能直接获得微软的COM/DCOM组件所提高的功能服务,反之也一样(在微软的COM/DCOM组件中也不能直接获得J2EE平台下的EJB组件所提供的功能服务)!

2、Web Service技术是面向对象/面向组件技术在Internet环境中的进一步延伸

(1)Web Service是面向对象/面向组件技术在Internet中的延伸

Web Service是一种新型的Web应用程序,它们是自包含、自描述、模块化的应用程序,可以在Web环境(包括企业内部网Intranet和广域网Internet)中被描述、发布、查找以及通过Web方式来调用其它的Web服务组件。

从这个角度来看,Web Service组件技术其实是面向对象开发技术和更高级别的面向组件开发技术在Intranet/Internet环境中的进一步延伸和扩展。

(2)Web Service从本质上讲是放置于Web站点上的可重用组件

WebService组件是分布式和模块化组件,每个组件本身能够完成特定的业务功能或者服务、并且遵守WebService技术规范(WS标准),这些WebService技术规范保证Web Service组件之间能够进行互操作。

作者注:

分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。

(3)Web Services是对诸如RMI、COM和CORBA等现有面向服务的技术的扩展

但Web Services技术目前是一套标准的平台技术,它定义了Web服务组件如何在Web级别的平台上实现互操作和在不同的平台下的应用协同。

由于Web Service技术是采用简单对象访问协议(SOAP)进行数据通讯,而SOAP的下层协议仍然为超文本传输协议(Http,Hypertext Transfer Protocol)。因此,基于Web Services技术实现的各种服务组件可以是在现有的各种平台组件的技术基础上进一步功能扩展和升级完善。

这为企业应用Web Service技术降低了技术应用的成本!因为基于Http协议的网络已经普及和广泛地应用了。

3、Web Service技术与微软的COM组件和Sun的J2EE EJB组件技术不同点

(1)微软COM组件和Sun J2EE EJB组件协议是基于特定技术平台

微软COM/DCOM/COM+组件技术平台下的客户端和其服务器端程序之间相互通讯采用的是基于微软Windows系统中特有的COM协议——COM协议是微软公司定义的用于对象、应用程序之间交互功能的标准协议。

而Sun(现为Oracle公司)的J2EE EJB组件技术平台下的客户端和其服务器端程序之间相互通讯采用的是RMI-IIOP协议——RMI-IIOP是基于Internet ORB间协议的Java远程方法调用,是J2EE标准体系中实现分布式对象的相互通信的标准。

如下示例图的左边为微软的DNA架构体系工作原理示图(DNA是指Windows Distributed Internet Application Architecture,也就是"Windows分布式应用结构"的含义),而右边代表J2EE三层架构的工作原理示图。

由于微软的COM协议和J2EE的RMI-IIOP协议一方面都是某个特定的技术平台下特有的专用协议,另一方面它们都采用二进制格式的数据作为网络协议,这样将无法穿越企业网络系统的防火墙——组件的客户端无法在企业网络的外部对部署在企业内部的服务器端中的组件进行访问以获得相关的功能服务。

(2)Web Service技术组件之间的协议是跨平台的XML技术标准

Web Service核心技术基础是可扩展标记语言XML,其相关标准协议包括服务调用协议SOAP、服务描述语言WSDL以及服务注册检索访问标准UDDI等都是基于XML标准的。这将保证Web Service组件能够适应"异构的企业应用环境"和"不断变化的企业需求"。

另外,也为企业推广"移动办公"和跨地区(包括跨国)、跨行业的"远程访问"和"业务协同"提供了技术实现的可能性。因为XML是文本格式,基于XML格式的交互消息可以穿越企业网络系统的防火墙——组件的客户端可以在企业网络的外部对部署在企业内部的服务器端中的组件进行访问以获得相关的功能服务。

4、Web Services组件的客户端和服务器端组件的请求和响应过程

(1)Web Services组件客户程序通过网络并利用SOAP协议向Web Services服务组件所在的应用程序服务器发出SOAP消息的请求,该请求中的URI中包含有该服务器识别和被调用的具体Web Services组件的标识。请参考下图所示的过程说明图。

(2)支持Web Services技术的服务器读取SOAP请求消息,并且识别它需要调用的目标组件中的方法。

(3)服务器进一步解析SOAP请求消息以获得请求参数、并对客户端传递来的请求参数实现从XML到Java之间的转换(利用对象反序列化技术实现)。

(4)然后再对目标组件中的请求方法进行调用,并向目标方法传递由客户端通过SOAP请求消息传递来的调用参数。

(5)目标组件中的请求方法被调用完毕之后,后端Web服务功能组件返回响应的结果,由Web Services服务器使用合适的序列化类将该响应从Java数据类型再转换为XML数据类型(利用对象序列化技术实现),然后再将它打包为SOAP消息响应向客户端调用者返送。

整个请求响应的过程请见上图示例图所示,根据Web Service的请求响应的过程也可以了解到Web Service体系架构中存在有三个不同的角色。

(1)服务提供者

从业务角度看,它是服务的拥有者;而从系统体系看,它是访问服务的平台。

(2)服务请求者

从业务角度看,它是请求特定功能的业务;而从系统体系看,它是寻找并调用服务或启动与服务交互的应用。服务请求者可以是基于B/S系统的Web程序或者是基于GUI图形用户界面的应用程序实现。

(3)服务注册中心

是一个可搜索的注册器,服务提供者将服务描述发布其中,服务请求者查找服务并获取绑定信息的工作。

5、应用Web服务组件技术的开发实现过程

(1)Web服务组件开发者的工作内容

主要涉及设计和编程需要发布为Web服务的业务功能组件,并向WebService服务器的注册中心提供本WebService服务方法的说明信息——这可以利用WSDL来描述本WebService组件中的Web服务方法。

当然,为了使WebService的客户端程序(Web服务的请求者)能够找到和了解本Web服务组件,需要对本Web服务组件进行注册——这同样也是利用WSDL来描述本WebService组件有关的信息。

(2)Web服务组件使用者的工作内容

Web服务组件使用者(Web服务客户)从Web服务组件所在的WebService服务器的注册中心中搜寻和发现所需要访问的目标Web服务组件——这要利用统一描述、发现和集成协议UDDI(UDDI, Universal Description Discovery and Integration,它是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范而且也是基于XML标准)。

成功找到后,然后使用Web服务组件中的目标方法、并获得目标方法的返回结果——这仍然要应用SOAP协议进行通讯和描述返回的信息。

(3)MyEclipse开发工具全面地提供了对开发WebService的技术支持

Java平台的开发人员可以借助于MyEclipse IDE开发工具开发实现WebService组件、包括发布Web服务等,大大地简化了开发过程,并提高了开发效率。而且提供了对JAX-RS和JAX-WS两种不同风格的WebService框架的支持。如下示图为在MyEclipse IDE开发工具创建WebService项目的界面局部截图。

标签: #vc调用webservice