CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  XML/SOAP

SOAP开发入门

楼主stepwin(品度)2005-05-10 16:54:08 在 Web 开发 / XML/SOAP 提问

来自:  
  http://www.softboss.com/ForumDetail.asp?ForumID=450  
  这里不能贴图,请看原文!  
   
  1.1.   SOAP基础  
  一、SOAP:Simple   Object   Application   Protocol。  
   
    WEB服务是通过标准的Web协议、以简单对象编程方式可以访问的一个应用程序组件。大家所遵循的这种约定,就称之为SOAP。  
   
  标准制定者:   http://www.w3.org/2000/xp/Group/   ,   http://www.w3.org/TR/soap/    
   
   
  二、SOAP开发框架:  
   
  不同的技术提供商为SOAP提供有开发模式。  
   
    SUN为支持Web   Service制定了JAX-RPC等。听说:J2EE1.4平台是围绕Web   Service来构架的。微软是如何支持的,我就不清楚了。  
   
    Apache开源组织为java语言编写SOAP程序,提供了一个既遵循SOAP又非常简单实用的工具库:   Axis(有支持java的,也有支持C++的)   。  
   
    详情见:http://ws.apache.org/axis/  
   
    正因为有了这些开源工具类库,才让我们的编程世界变得如此简单!!!    
   
   
  三、SOAP消息结构  
   
    SOAP消息的传输建立在HTTP,SMTP和FTP之上。  
   
  HTTP是最外层的信封格式、SOAP是里面的信封格式、XML是信(SOAP)的表现形式。  
   
  在"之前的内容,跟一个普通的HTTP一样,"..."之间的内容是附加的,这些内容是以XML格式来表现的。  
   
  看到这些标签很可怕吧?在HTTP编程中,如果有sun提供的servlet包,我们编写起来,根本不管这些信息是如何组成的;同样,在SOAP编程中,如果有Axis包,我们也不用管这些信息是如何组成的。  
   
   
  这些知识知道就可以了,如果有兴趣可以去分析开源项目Axis对于SOAP是如何包装的。在JBUILDER中提供了TCP   MONITOR工具进行数据分析,在TOOLS菜单下,可以自己去琢磨。  
   
   
  下面开始STEP   BY   STEP   进行SOAP实战开发。  
   
  1.2.   用JBUILDER开发  
  工具:JBUILDER   9  
   
  任务:开发一个简单的SOAP服务端对客户端调用实例。  
   
   
  创建服务端:  
   
  STEP1:新建一个空项目,取名为JAVASOAP  
   
  STEP2:编写服务端要实现的工作,必须有一个普通的JAVABEAN文件为要作为服务发布的接口文件。在例子中是CHello.JAVA,实现一个简单的操作SayHi,和普通JAVABEAN的写法一样。  
   
  STEP3:将这个接口文件打包为WEB服务,并且生成WSDL接口文件。这一步就是不同了,下面有图示:  
   
   
  选FILE->NEW菜单,弹出新建对话筐,选择Web   Service页的Export   as   a   Web   Service标签  
   
   
   
   
  点击OK后弹出一个向导来带领你生成SOAP服务和WSDL文件。  
   
   
   
   
   
  这是要求生成一个提供SOAP服务的WEB应用程序,可以惦记NEW按钮,生产这个WEB服务:  
   
   
   
   
  我这里给这个SOAP服务取名叫SOAPSVR。填写完成后点击OK按钮。又回到开始的向导  
   
   
   
   
   
  点击FINISH按钮:  
   
   
   
   
   
  这个向导就是要你选择是哪个类作为接口类提供出去,我们选CHello,然后按照NEXT按钮一路点下去就了,最后你会看到硬盘一通乱转,生成对外接口的CHello.WSDL文件和一个包generated。  
   
   
   
   
   
  CHello.java类就是我们实现的remote远程接口,和RMI、EJB是一个套路。  
   
  CHelloService.java类是实现RPC服务器的类。  
   
  CHelloServiceLocator.java类是在本地实现和RPC服务器通讯的类,这里面定义了通讯参数,你可以看看,但是最好不要修改。  
   
  CHelloServiceTestCase.java类是测试的例子,要先绑定再通过绑定的接口调用接口处理方法,太麻烦了,不要学,下面给一个更简单的方法。  
   
  CHelloSoapBindingStub.java类是那个用来绑定的接口类,不用。  
   
   
  得到这一堆东西的时候你的服务就这样做完了。启动这个WEB服务就可以了对外提供SOAP服务了。  
   
   
   
   
   
   
  创建客户端  
   
   
   
   
   
   
  按照向导点击下一步步到结束就可以生成一大堆接口类和方法了。  
   
   
   
   
   
  你可看到这里有6个类,是刚才自动生成的,很熟悉吧,这和服务端生成的generated包里面的文件相比就是多了一个CHelloSoapBindingImpl.JAVA文件,这个文件中定义的接口就是我们要用到的,但是不能实际生成这个类的对象来使用,他只是实现了CHello接口,好象没什么用,先不管了。  
   
  如何使用这个接口:  
   
  先生成服务实例  
   
  CHelloServiceLocator   hellolocate   =   new   CHelloServiceLocator();  
   
  然后通过服务实例获得接口对象  
   
  CHello   hello   =   hellolocate.getCHello();  
   
  现在可以直接调用这个接口的方法了,就象使用本地的对象的方法一样。我推荐的方法应该是写起来最简单的,至于是不是最有效率最好的我就不知道了,哪位高手可以分析测试一下。  
   
  System.out.println(hello.sayHi("钟林大"));  
   
  实际上这个调用过程是和SOAP服务进行了一次通讯,服务器也为你做了一次计算。客户端和服务器间的通讯是XML包,不过都被框架屏蔽了,这个框架是我们在前面创建SOAP服务时候缺省选的AXIS。AXIS是一个开源的SOAP框架,值得学习,现在我们只用就好了  
   
   
  现在启动SOAP服务,运行客户端:  
   
   
   
   
  是不是很简单?  
   
  1.3.   用DELPHI开发  
  用DELPHI开发SOAP服务比较土,因为要写CGI服务,然后生成对外的WSDL接口文件,DELPHI写WEB服务当然不如JAVA了,所以不推荐,但是我给了一个例子,就不多说了。  
   
  用DELPHI写客户端是最好的,可以写应用程序直接连到WEB服务上,最直接的体现网络即服务的思想。  
   
   
  用DELPHI写客户端  
   
   
  Step1:选择file->new->other,弹出新建对话框,选择WebServices页:  
   
   
  选择WSDL   Importer,点击OK按钮,弹出导入WSDL文件的向导。  
   
   
   
   
  这里我选了前面用JAVA写的SOAP服务接口文档CHello.wsdl,然后一路NEXT按下去就会生成CHello1.pas的接口实现文件。  
   
   
  这个接口使用起来也是很简单,先创建一个THTTPRIO   对象:HTTPRIO1:   THTTPRIO;  
   
  然后就可以直接使用CHello提供的接口方法了:  
   
  showmessage((HTTPRIO1   as   CHello).SayHi('钟林大'));  
   
  结果是:  
   
   
   
   
  当然这个时候需要将SOAP服务启动才可以呀。同样,这里面你的一次点击被提交到了用JAVA写的SOAP服务,然后返回了一个中文信息。完美实现了DELPHI应用程序和WEB服务之间的交互,同样,这中间是怎么通讯的被框架隐藏了。  
   
   
  1.4.   跨语言跨平台开发  
  你还可以用ASP.net开发SOAP服务端,用C#开发客户端,通过同一个WSDL接口文件进行通讯。SOAP不依赖任何语言和平台,而且他的开源框架保证了开发的简单和有效,应用前景很好,特别是电子商务,基于互联网的WEB服务,在国外很多公司都用来做对外发布信息的接口。  
   
  ----  
  软件大佬是基于软件业的研发、学习、交易、管理的网络平台,是您事业开始的地方,请访问www.softboss.com!    
   
  问题点数:20、回复次数:6Top

1 楼dutguoyi(新鲜鱼排)回复于 2005-05-12 08:23:50 得分 5

upTop

2 楼zjjjacky(kiky)回复于 2005-05-12 17:21:31 得分 5

不要泛泛而谈Top

3 楼lodestar51(来CSDN就是看你个混蛋!!!!!)回复于 2005-05-19 19:26:30 得分 5

先UP一下...再看...Top

4 楼eglic(圪圪) (理由永远是谎言,信仰永远是自慰)回复于 2005-05-19 23:36:00 得分 0

Simple   Object   Access   Protocol,   SOAP  
   
  楼主是在做广告把?Top

5 楼BeiAn(北岸石头)回复于 2005-05-20 00:36:27 得分 5

谢谢楼主!  
  Top

6 楼stepwin(品度)回复于 2005-06-19 09:09:16 得分 0

这个是入门的技巧而已,实际上这种技术你用就是了,如果再深你就写你自己的SOAP协议了。  
   
   
  下面的是广告,最近搞了一个大佬联盟,联合起来接单子,而且我们有外包管理方面的能力和一些合作公司,这个欢迎您过来啊。  
  ----  
  国际软件外包管理网是软件外包管理专家,助您成就知识新贵!请访问www.softboss.com!Top

相关问题

  • 搞游戏开发怎样入门?
  • 关于J2ME开发入门的问题
  • 如何入门软件开发
  • 嵌入开发如何入门?
  • 求视频开发入门书
  • 求linux开发入门书籍
  • 请高手推荐HTML开发的入门好书。
  • 新手入门! 我该什么样的开发环境?
  • 新手,想开发小游戏,征求入门建议。
  • brew怎么入门?需要些什么开发包?

关键词

  • soap
  • axis
  • 文件
  • 接口
  • 普通
  • 内容
  • 编程
  • 简单
  • 编写
  • 开发

得分解答快速导航

  • 帖主:stepwin
  • dutguoyi
  • zjjjacky
  • lodestar51
  • BeiAn

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo