`
lz726
  • 浏览: 333537 次
  • 性别: Icon_minigender_2
  • 来自: 福建,福州
社区版块
存档分类
最新评论

JAVA语言进阶:什么是Web Service

阅读更多


你可能早就听说过Web service了,你也可能已经对Web service有一些概念了。一时间,好像所有的计算机期刊、书籍和网站都开始提及Web service。然而,当前大多数对Web service的介绍都没能清楚的说明Web service到底是什么。他们只是鼓吹Web service是多么多么的好,简直就像是在做广告。在本文中会讲清楚两件事:Web service到底是什么;在什么情况下你应该使用Web service。 

分布式应用程序和浏览器 

研究一下当前的应用程序开发,你会发现一个绝对的倾向:人们开始偏爱基于浏览器的瘦客户应用程序。这当然不是因为瘦客户能够提供更好的用户界面,而是因为它能够避免花在桌面应用程序发布上的高成本。发布桌面应用程序成本很高,一半是因为应用程序安装和配置的问题,另一半是因为客户和服务器之间通信的问题。 

传统的Windows富客户应用程序使用DCOM来与服务器进行通信和调用远程对象。配置好DCOM使其在一个大型的网络中正常工作将是一个极富挑战性的工作,同时也是许多IT工程师的噩梦。事实上,许多IT工程师宁愿忍受浏览器所带来的功能限制,也不愿在局域网上去运行一个DCOM。在我看来,结果就是一个发布容易,但开发难度大而且用户界面极其受限的应用程序。极端的说,就是你花了更多的资金和时间,却开发出从用户看来功能更弱的应用程序。不信?问问你的会计师对新的基于浏览器的会计软件有什么想法:绝大多数商用程序用户希望使用更加友好的Windows用户界面。 

关于客户端与服务器的通信问题,一个完美的解决方法是使用HTTP协议来通信。这是因为任何运行Web浏览器的机器都在使用HTTP协议。同时,当前许多防火墙也配置为只允许HTTP连接。 

许多商用程序还面临另一个问题,那就是与其他程序的互操作性。如果所有的应用程序都是使用COM或.NET语言写的,并且都运行在Windows平台上,那就天下太平了。然而,事实上大多数商业数据仍然在大型主机上以非关系文件(VSAM)的形式存放,并由COBOL语言编写的大型机程序访问。而且,目前还有很多商用程序继续在使用C++、Java、Visual 

Basic和其他各种各样的语言编写。现在,除了最简单的程序之外,所有的应用程序都需要与运行在其他异构平台上的应用程序集成并进行数据交换。这样的任务通常都是由特殊的方法,如文件传输和分析,消息队列,还有仅适用于某些情况的的API,如IBM的"高级程序到程序交流(APPC)"等来完成的。在以前,没有一个应用程序通信标准,是独立于平台、组建模型和编程语言的。只有通过Web 

Service,客户端和服务器才能够自由的用HTTP进行通信,不论两个程序的平台和编程语言是什么。 

什么是Web Service 

对这个问题,我们至少有两种答案。从表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。我们把调用这个Web service 的应用程序叫做客户。例如,你想创建一个Web service ,它的作用是返回当前的天气情况。那么你可已建立一个ASP页面,它接受邮政编码作为查询字符串,然后返回一个由逗号隔开的字符串,包含了当前的气温和天气。要调用这个ASP页面,客户端需要发送下面的这个HTTP GET请求: 

http://host.company.com/weather.asp?zipcode=20171 

返回的数据就应该是这样: 

21,晴 

这个ASP页面就应该可以算作是Web service 了。因为它基于HTTP GET请求,暴露出了一个可以通过Web调用的API。当然,Web service 还有更多的东西。 

下面是对Web service 更精确的解释: Web services是建立可互操作的分布式应用程序的新平台。作为一个Windows程序员,你可能已经用COM或DCOM建立过基于组件的分布式应用程序。COM是一个非常好的组件技术,但是我们也很容易举出COM并不能满足要求的情况。 

Web service平台是一套标准,它定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写Web service ,只要我们可以通过Web service标准对这些服务进行查询和访问。 

新平台 

Web service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,Web service平台必须提供一套标准的类型系统,用于沟通不同平台、编程语言和组件模型中的不同类型系统。在传统的分布式系统中,基于界面(interface)的平台提供了一些方法来描述界面、方法和参数(译注:如COM和COBAR中的IDL语言)。同样的,Web service平台也必须提供一种标准来描述Web service,让客户可以得到足够的信息来调用这个Web 

service。最后,我们还必须有一种方法来对这个Web service进行远程调用。这种方法实际是一种远程过程调用协议(RPC)。为了达到互操作性,这种RPC协议还必须与平台和编程语言无关。下面几个小节就简要介绍了组成Web service平台的这三个技术。 

XML和XSD 

可扩展的标记语言(XML)是Web service平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。 

XML解决了数据表示的问题,但它没有定义一套标准的数据类型,更没有说怎么去扩展这套数据类型。例如,整形数到底代表什么?16位,32位,还是64位?这些细节对实现互操作性都是很重要的。W3C制定的XML Schema(XSD)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。Web service平台就是用XSD来作为其数据类型系统的。当你用某种语言(如VB.NET或C#)来构造一个Web service时,为了符合Web service标准,所有你使用的数据类型都必须被转换为XSD类型。你用的工具可能已经自动帮你完成了这个转换,但你很可能会根据你的需要修改一下转换过程。在第二章中,我们将深入XSD,学习怎样转换自定义的数据类型(例如类)到XSD的类型。 

SOAP 

Web service建好以后,你或者其他人就会去调用它。简单对象访问协议(SOAP)提供了标准的RPC方法来调用Web service。实际上,SOAP在这里有点用词不当:它意味着下面的Web service是以对象的方式表示的,但事实并不一定如此:你完全可以把你的Web service写成一系列的C函数,并仍然使用SOAP进行调用。SOAP规范定义了SOAP消息的格式,以及怎样通过HTTP协议来使用SOAP。SOAP也是基于XML和XSD的,XML是SOAP的数据编码方式。第三章我们会讨论SOAP,并结识SOAP消息的各种元素。 

WSDL 

你会怎样向别人介绍你的Web service有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的Web service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的Web service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Web 

service。解决方法是:用机器能阅读的方式提供一个正式的描述文档。Web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述Web service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应Web service的代码。 

分享到:
评论
4 楼 lz726 2007-09-27  
http://qiuleng.xhblog.com/archives/2007/203024.shtml
3 楼 lz726 2007-09-27  
http://www.cn-java.com/target/news.php?news_id=1397
2 楼 lz726 2007-09-27  
http://i.mop.com/water335/blog/2006/04/01/1408386.html
1 楼 lz726 2007-09-27  
http://www.vchome.net/dotnet/webservice/webservice15.htm

相关推荐

    Spring进阶:Spring的CRUD

    比如,使用`@Repository`注解标记数据访问层组件,`@Service`注解标记业务逻辑层组件,以及`@Controller`注解标记Web层组件。此外,`@Autowired`注解用于自动装配依赖。 总结,Spring的CRUD操作是通过IoC容器管理的...

    高性能网站建设进阶指南:WEB开发者性能优化最佳PDF

    - Java语言在服务器端的强大处理能力使其成为Web开发的首选。了解Java内存管理、线程安全、异步处理等概念,有助于编写高效代码,避免性能瓶颈。 4. **性能优化**: - 这本书可能会涵盖页面加载优化,如合并CSS和...

    Java Web整合开发进阶100例

    《Java Web整合开发进阶100例》是一本针对Java Web开发的实践教程,旨在帮助读者提升在这一领域的技能。书中的100个实例覆盖了从基础到高级的各种技术,涵盖了Java Web开发的核心概念、框架和技术。通过学习这些实例...

    完整版Java web开发教程PPT课件 Java开发进阶教程 第06章 SERVLET(共15页).pptx

    这些知识点构成了一套完整的Java Web开发进阶教程,旨在帮助开发者深入理解Web开发的核心概念和技术,以便构建高效、可维护的Web应用程序。通过学习这个教程,开发者可以从基础的前端交互到后端服务的实现,再到框架...

    java进阶之java就业班视频教程资源

    在“Java进阶之Java就业班视频教程资源”中,我们深入探讨了多个关键的Java技术领域,这对于希望提升自己技能或准备Java相关工作的学习者来说是宝贵的资源。本教程覆盖了从Web开发到框架应用,再到数据库管理和移动...

    Java Web Service教程

    Java Web Service教程是针对使用Java技术构建网络服务的详尽指南。Web服务是一种通过互联网交换数据的方式,允许不同系统之间进行通信。Java Web Service利用开放标准如SOAP(Simple Object Access Protocol)和WSDL...

    XML Web Service开发

    XML Web Service的核心在于XML,它是一种通用的数据表示语言,具有自我描述性和平台无关性。XML使得不同系统间的数据交换变得简单且可理解。Web Service则是基于XML的网络服务,通过SOAP(简单对象访问协议)将XML...

    JAVA程序员必读:提高篇

    《JAVA程序员必读:提高篇》是一本专为已经掌握Java基础知识并希望进一步提升技能的程序员设计的进阶教程。本书以chm(Compiled HTML Help)格式呈现,这种格式允许读者通过关键字搜索迅速找到所需信息,提高了学习...

    java学习线路

    本文档为初学者提供了一条较为系统的 Java 学习路线,涵盖了 Java 语言的基础知识、Java SE、JDBC 编程、DHTML 编程、XML 编程、Web 编程、Ajax 编程、Android 开发、轻量级 Java EE 等方面。 一、Java SE 部分 * ...

    学通Java Web的24堂课.pdf

    《学通Java Web的24堂课》显然是一本旨在帮助初学者和进阶者掌握这个领域的教材。以下是对Java Web及其相关技术的详细解读: 1. **Java Servlet**:Java Web开发的核心之一是Servlet,它是Java平台上的一个服务器端...

    WebService大讲堂之Axis2及其它web service资料

    1. **服务端创建**:使用Axis2,开发者可以轻松地将Java类转换为Web Service。通过编写Java代码,定义服务接口,然后使用Axis2工具生成服务部署描述符(WSDL),最后将服务部署到服务器上。 2. **客户端调用**:...

    AXIS Web Service入门及应用

    3. 第一个Service:文件"axis应用1-安装及第一个Service.doc"很可能是关于创建和部署第一个AXIS Web服务的指南,包括安装AXIS、创建简单的服务接口和实现,以及部署服务的步骤。 四、进阶应用 1. 异常处理:AXIS...

    java web开发学习手册

    《Java Web开发学习手册》是一本专为初学者和进阶者设计的全面教程,它涵盖了从基础到高级的Java Web开发技术。这本书的核心目标是帮助读者理解和掌握如何使用Java语言构建动态、交互式的Web应用程序。书中不仅提供...

    《Java Web应用开发技术实用教程》-王红-电子教案

    10. **Struts、Spring MVC、Hibernate等框架**:进阶学习时,会接触到这些流行的Java Web开发框架,它们能简化开发过程并提高代码质量。 11. **AJAX (Asynchronous JavaScript and XML)**:在现代Web应用中,使用...

    java web5.zip

    标签“Java Web”明确指出本资源主要关注的是使用Java语言进行Web应用开发的相关技术。通过压缩包中的文件名可以推测,这可能是一个大型教程或电子书的分卷下载,包括了.part17、.part19、.part18和.part20四个部分...

    JAVA_WEB_PPT.rar_java ppt_java web_java web ppt_java.ppt

    **Java Web 开发详解** Java Web 开发是Java技术在...本PPT详细讲解了以上知识点,是Java Web开发者入门和进阶的重要参考资料。通过学习,你可以掌握从基础到高级的Java Web开发技能,为实际项目开发打下坚实基础。

    Tomcat与Java Web开发技术详解(光盘)

    【标题】:“Tomcat与Java Web开发技术详解(光盘)” 涵盖了Java Web应用程序的开发和部署,特别是围绕着Apache Tomcat服务器展开。Tomcat是一款轻量级、开源的Java Servlet容器,它是Java EE(现在称为Jakarta EE)...

    张孝祥IT课堂-深入体验Java Web开发内幕

    Java Web开发通常是在Java EE平台上进行的,它包含了大量用于企业级应用的API和服务,如EJB(Enterprise JavaBeans)、JPA(Java Persistence API)、JMS(Java Message Service)等。 4. **Web容器**:Servlet和...

    Servlet+Jsp--基于Java语言的Web宿舍管理系统.zip

    【Servlet+JSP Web宿舍管理系统】是一个基于Java技术的Web应用程序,主要利用Servlet和JSP进行后端逻辑处理和前端展示。此系统适用于学生、教师或管理员进行宿舍管理,包括宿舍分配、信息查询、问题反馈等多种功能。...

    java学习JAVA-web其他材料

    本资料包“JAVA-web其他材料”显然是为Java Web初学者或进阶者准备的,提供了丰富的学习资源。以下将详细介绍Java Web开发中的一些核心知识点。 1. **Servlet与JSP**:Servlet是Java Web的基础,它是一种服务器端的...

Global site tag (gtag.js) - Google Analytics