平台与技术
6.6.1 Web Services平台与技术
Microsoft.NET与J2EE是目前Web Services平台市场的两个最重要的应用框架(Application Framework)。它们基于分布式N层(N-Tier)应用的设计、集成、性能、安全性和可靠性等诸多方面为用户提供了总体的指南和规范。基于这些指南和规范,技术提供商提供了相应的平台、工具和编程环境。在具体的应用框架中,包括了针对应用的表现层服务、服务器端进程、会话管理、商业逻辑框架、应用数据缓存、应用逻辑、持久化性、事务、安全和日志服务等。
技术提供商能够在应用框架的顶部构建应用程序开发工具和应用服务器。应用框架的目标是提供一个统一的软件框架,以减少对企业软件产品的支持、维护和集成的代价。
Microsoft.NET是一个由Server、Client和Service组成的平台。.NET框架包括基本的运行库、用户接口库、CLR(公共语言运行库)、程序设计语言(包括C#,C++,VB.NET,Jscript.NET)、ASP.NET以及.NET框架API等,其XML Web Services技术是由.NET环境所直接支持的。
J2EE(Java企业版)平台为基于多层分布式应用模型的Java应用设计、开发、装配和部署提供了一个完整的框架。J2EE规范为应用开发和企业系统集成定义了数目众多的应用编程接口(APl)和多种应用编程模型。J2EE规范包括EJB 2.0,J2EEConnector Architecture 1.0,JDBC 2.0,JSP 1.2,Servlet 2.3,JTA 1.0.1,JMS 1.0.2,JNDI 1.2,Java RMI 1.0,RMI/IIOP 1.0,JAAS 1.0,JavaMail 1.1和JAXP 1.1等。
Microsoft.NET与J2EE都支持Web服务开发实现、服务描述、服务发现绑定、执行调用等功能实现,具体实现方法描述如下:
1)Web服务实现
实现一个Web Service实际上意味着首先要将服务调用所需要指定的操作以及操作所涉及的数据结构化,组织成符合SOAP规范的XML消息文档,然后该Web实现需要能解释和处理这个XML文档。当一个Web Service被实现之后,这个Web Service的客户端就能够向其发送一个SOAP消息,该SOAP消息中包含了需要调用的具体操作以及涉及的数据,这个Web Service接收该SOAP消息并完成处理后,向客户端响应一个SOAP消息,该消息包含了操作的执行结果(返回值)。
在J2EE中,通过使用SUN的Java Web Services DeveloperPack(简称为WSDP)中的JavaAPI forXML-based RPC(JAX-RPC),已有的Java类或Java应用都能够被重新包装,并以Web Services的形式发布。JAX-RPC提供了将RPC参数(in/out)编码和解码的API,使开发人员可以方便地使用SOAP消息来完成RPC调用。同样,对于那些使用EJB的商业应用而言,同样可以使用JAX-RPC来包装成Web Services,而这个Web Services的WSDL界面与原先的EJB的方法是对应一致的。
JAX-RPC为用户包装了Web Services的部署和实现,对Web Services的开发人员而言,SOAP/WSDL变得透明,这有利于加速Web Services的开发进度。当然,如果开发人员认为这样的透明带来了不灵活性,那么也可以直接使用JAXP来手工处理XML消息。
在.NET平台上,开发人员可以使用各种语言来开发Web Services,.NET平台同样提供了优秀的快速开发工具,将SOAP/WSDL等繁复的技术点对开发人员透明。例如,可以在相应的方法前面加上[WebMethod]属性就可以使它变成可以提供Web Services的方法。当然,开发人员同样也可以使用MSXML来直接处理XML消息。
2)服务描述
J2EE通过WSDP中的JavaAPl forXML-based RPC(JAX-RPC)提供了Web Services的RPC调用的支持,其中,Web Services的调用界面使用的规范正是WSDL。使用J2EE开发和部署的Web Services,能够使用WSDL来发布它的调用界面,Web Services之间的所有的XML交互消息及其交互模式都应当遵循对应的WSDL文档的描述,同时,Web Services的用户也可以在各种Web Services的注册中心中查询并获取Web Services的WSDL描述。
与J2EE Web Services相同,.NET Web Services同样支持WSDL 1.1规范,同时采用WSDL作为Web Services界面的描述工具。.NET提供了一个Client端的组件以使应用程序能够调用由WSDL文档描述Web Services的RPC入口,而同时也在Server端提供了一个组件以实现从WSDL文档到COM组件的映射。
3)服务的发现与绑定
注册服务是目前用于发布、发现和绑定Web Services的主要方法。注册服务中包含了用于描述Web Services以及Web Services提供者的数据结构和分类信息。注册服务既可以由企业自己来提供,也可以使用第三方的中立服务。
在J2EE的WSDP中,JavaAPIforXML Registries(JAXR)提供了与多种类型注册服务进行交互的APl。JAXR运行客户端访问与JAXR规范相兼容的Web Services,这里的Web Services即为注册服务,一般来说,注册服务总是以Web Services的形式运行的。
而对于Microsoft的.NET,最初使用一种称为DISCO的文件来发现Web Services,而随着以Microsoft、IBM、Ariba作为创始企业的UDDI.org发布UDDI规范之后,.NET将UDDI注册服务作为其内置的Web Services的发布、发现机制。在VS.NET中,内置了一个私有的UDDI Registry供开发使用,同时提供了一个基于UDDI注册服务的易于使用的Web Services发现的GUl。就目前来看,UDDI提供了最佳的保证Web Services互操作性的注册服务。而Microsoft也是UDDI实现的领先者。在它的Office XP中,也提供了使用UDDI集成Web Services的功能。另外,它还支持WS-Inspection规范。
4)服务的调用与执行
J2EE使用SUN WSDP中的JavaAPI forXML-basedRPC(JAX-RPC)来完成使用SOAP方法,来调用远端服务的功能。JAX-RPC使得Java开发人员能够利用符合SOAP 1.1规范的基于XML的RPC方法来完成Web Services之间的交互。
当一个JAX-RPC服务被设计并实现之后,它就需要被部署到服务器端的JAX-RPC运行系统中,例如,一个基于EJB的服务就需要被部署到EJB Container中。
在JAX-RPC服务的部署过程中,可以使用部署配置工具来为这个JAX.RPC服务配置一半或多个协议绑定。绑定的实质就是将抽象的服务定义与指定的基于XML的传输协议相结合,例如在HTTP之上的SOAP 1.1。
而对于这个Web Services的客户端而言,它应当根据描述该Web Services的WSDL文档中所描述的绑定信息与这个Web Services进行远程调用。
同样,.NET也是通过Microsoft SOAP Toolkit这样的工具来使得客户端能够根据描述Web Services的WSDL文档与Web Services进行远程交互。
5)客户端与Web服务器
Web Services的客户端,可以是J2EE平台,也可以是.NET平台。Microsoft.NET是一个由Server、Client和Service组成的平台。ASP.NET是对Web技术的支持,而XML Web Services则是建立在ASP.NET基础上的。就客户端而言,.NET环境中可以有三种形式的客户端:
WinForm:即基于Windows的应用程序;
WebForm:建立在ASP.NET上的Web应用程序,该程序运行在服务器上,而客户端是普通的浏览器;
MobileForm:建立在ASP.NET上的Mobile应用程序(移动应用),该程序运行在服务器上,而客户端是各种移动设备(如PDA、手机、车载GIS设备等)。
Web Services及三种客户端的关系如图6.14所示。
图6.14 .NET中的Web Services及三种客户端所处的位置
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。