`

Web Service开发的层次

阅读更多
Web Service是最近几年比较火的一个东西,它带来了一大堆的新名词,所以显得比较炫。看透其华而不实的表面,它也就不再神奇。下面的讨论均以Java为参考。

1 访问一个Web Service实际上可以看作调用一个函数,唯一不同的就是这个函数是远程的,这么一说,它和RMI就没有什么本质的区别了。
既然是一个函数,当然要有函数的声明了,完成这个工作的就是WSDL,它详细的定义函数的原型,包括函数名、入口参数、出口参数,这就是WSDL中opertion完成的工作。
既然是一个远程的函数,还要涉及与远程地址的一个绑定,这是WSDL中service的任务。
Axis是一个可以通过WSDL生成相应访问代码的开发包,JBuilder中将它集成了进去,通过Wizard的方式简化了原本需要在命令行中手工完成的操作。

2 既然是远程访问,就一定要有一个访问协议,Web Service的访问协议就是SOAP,SOAP建立在XML之上,不同的就是对XML原本没有限制的格式加上了一些限制,需要有envelope,在envelope中,还要分header和body。
如果利用SOAP开发Web Service的程序,那就需要根据WSDL的定义来自行组装SOAP包,这显然要比利用WSDL直接面向Web Service开发要复杂一些。
JAXM是一个利用SOAP进行通信的开发包,它简化了SOAP消息的打包过程。

3 SOAP是建立在XML之上的,那么显然XML的开发包同样适合于SOAP。
在这个层次上开发Web Service,除了要完成上一层的工作外,还要自行按照SOAP的格式组装SOAP消息,这显然又增加了工作量。
XML的开发工具就比较多了,从最简单的SAX和DOM到DOM4J、JDOM,还有不少XML到对象绑定的工具,如JAXB、Castor等等。
其实,不考虑Web Service,完全用XML做通信协议的情况也并不少见。知晓XML-RPC的存在,就不难理解了XML做通信的含义了。

截至到这里所讨论的内容,Sun提供了JWSDP(Java Web Service Developer Pack),其中包含从XML解析到WSDL生成的全套解决方案。

4 上面讨论的所有东西实际上都还停留在传递消息的内容上,并未涉及通信的过程。不要一看到Web Service的Web就想当然认为它只能通过HTTP来传输。前面的讨论可以看出,所有的消息内容与传输并无直接关系,所以,无论是以HTTP传输,还是SMTP或是自定义的协议都没有问题。
在这个层次上开发Web Service,前面的种种险阻之外,还要完成对XML的手工解析工作。
这里还是以最常见的HTTP方式来讨论。
HTTP的开发就将Server和Client区别对待,Server的实现通常的选择是Servlet,让Web Server替我们完成HTTP协议的解析可以省去我们很多的作。Client的实现可以选择JDK自带的Http Client,Apache的Jakarta项目下的Commons子项目也提供了一个HttpClient。

5 无论是HTTP还是SMTP,抑或是自定义协议,归根结底都是应用级的协议,底层的实现都是由Socket完成。到了这个层次基本就是原始时代了,什么都没有,一切都要手工完成。
在这个层次上开发Web Service,所有前面的困难都要一一经历,此外,还有协议的开发等待着不幸至此的人们。
到了这里,也不需要其它的工具了,JDK自带的Socket可以保打天下。

6 还想往下吗?再往下就是操作系统的实现了,Java的平台无关就失去了意义,也超出了我目前所了解的范围,到此打住吧!

前面所提及应该算是Web Service的一个基本知识结构,这里并没有讨论UDDI等等的内容,一来我对它并不了解,二来那应该属于应用,不应该算Web Service实现中。

虽然我们可能不会从最下层开发Web Service,但遇到底层的问题的情况却在所难免。
我就曾经在开发一个Web Service应用的时候,被人抓住HTTP头中的SOAPAction大小写与某个所谓的规范不同,我查了半天HTTP规范和SOAP规范,知道了HTTP是区分大小,而SOAPAction就是应该这么写,据理力争,指出所谓规范的错误。

经过前面的讨论,我们可以看出,Web Service并没有什么神秘可言,所有的东西都是建立在已有东西的基础之上。技术的发展不会是无中生有,只会是一个更好的解决方案而已,在追新求变之前,一个比较牢固的基础才是最重要的。
分享到:
评论

相关推荐

    XML Web Service 开发XML Web Service 开发

    总的来说,XML Web服务是构建分布式系统和实现跨平台数据交换的重要技术,涉及多个层次的设计、实现和管理。理解并熟练掌握这些概念和技术,对于任何从事Web服务开发的IT专业人员都是至关重要的。

    vmware vSphere web service SDK开发指南

    VMware vSphere Web Service SDK开发指南是一份指导开发者如何使用VMware vSphere SDK进行开发的文档。VMware vSphere是VMware公司推出的业界领先虚拟化解决方案,它通过提供高级抽象层来管理和控制计算资源,为用户...

    web service 精典入门教程

    Web Service 的基本层次结构包括: * 服务器端:提供 Web Service 的服务端,发布 wsdl 文件。 * 客户端:根据 wsdl 文件生成代理类,调用远端的接口,获取结果,进行下一步处理。 SOAP 协议 SOAP(Simple Object...

    《XML Web Service开发》报告

    - **书籍推荐**:如《Web Service编程》、《.net Web 服务实用案例教程》等,帮助学生深入理解Web Service开发的相关技术和实践技巧。 综上所述,《XML Web Service开发》课程设计报告不仅要求学生掌握理论知识,还...

    ASP.NET与Web Service实例剖析

    【ASP.NET与Web Service实例剖析】是一场技术讲座或教程,专注于讲解如何使用ASP.NET技术和Web Service进行实际项目开发。ASP.NET是微软推出的用于构建Web应用程序的开发框架,而Web Service则是一种基于XML的通信...

    Web Service

    Web Service 技术以其强大的跨平台能力和高度标准化的特点,在现代软件开发中占据着极其重要的地位。无论是企业内部系统集成还是不同组织之间的业务合作,Web Service 都能提供高效、可靠的解决方案。随着技术的不断...

    Delphi中Web Service应用

    但从深层次理解,Web服务是一种新的Web应用程序分支,它们是自包含、自描述且模块化的应用组件,可以在网络中被描述、发布、查找及通过Web调用。 Web服务的关键技术包括: - **SOAP (Simple Object Access Protocol...

    SOAP和Web_Service的概念

    ### SOAP和Web Service的概念 #### 一、从Remoting到Web Service 随着互联网技术的发展以及分布式计算需求的增长,传统的客户端/服务器模型逐渐显现出局限性。例如,在多层分布式架构中,如何有效地实现不同层级...

    开发J2EE Web应用

    在IT领域,特别是软件开发行业中,Java 2 Platform, Enterprise Edition(简称J2EE)是一个极为重要的技术框架,专门用于构建可扩展、健壮的企业级Web应用。《Designing Enterprise Applications with the Java 2 ...

    web service business process execution language

    BPEL 2.0在先前版本的基础上增加了许多新特性,包括对Web服务上下文(Web Service Context)的支持,以及对事件处理和多方交易的改进。BPEL的版本历史还包括1.1版本和一个正在维护的草案版本。WSDL(Web服务描述语言...

    WebService测试工具

    总的来说,一个优秀的Web Service测试工具能够大大提高开发和测试团队的工作效率,降低项目风险,确保Web Service的质量和可靠性。熟练掌握并运用这些工具,对于任何从事Web Service相关工作的专业人士来说都是至关...

    VC开发的WEBSERVICE服务器

    通过以上知识点,我们可以看到,使用VC开发Web Service服务器涉及多个层次的技术,从协议理解、接口设计、编码实现到测试部署,都需要开发者具备扎实的编程基础和深入的Web Service技术理解。在实际项目中,开发者还...

    详解:Intenret web应用开发,N层结构技术讲义(PPT)

    **互联网Web应用开发详解——N层结构技术** 在互联网Web应用开发中,N层结构(N-Tier Architecture)是一种常用的设计模式,它将应用程序分解为多个独立的逻辑层,每个层都有特定的功能,以实现更好的模块化、可...

    J2EE and web service PPT

    J2EE平台的四个主要层次包括: 1. 客户层组件:这部分运行在用户的客户端设备上,如应用客户端程序和Java小应用程序(applets)。 2. Web层组件:运行在J2EE服务器上,由Java Servlets和JavaServer Pages (JSP)组成...

    web前端开发的未来和发展

    为了适应这些变化,前端开发者应该不断学习和提升,关注最新的Web技术和标准,例如Web Components、Service Worker和WebAssembly等。同时,培养良好的代码组织习惯,学习前端架构设计原则,如模块化和面向对象编程。...

    xfire ibatis spring web service

    总之,这个主题涉及了Web服务开发、ORM解决方案以及依赖注入框架的整合,对于理解Java Web开发中的不同层次和技术交互有很重要的意义。通过阅读这篇博客和研究提供的"myXfire"文件,你可以深入学习如何在实际项目中...

Global site tag (gtag.js) - Google Analytics