Webservice简介
什么是webservice
Webservice简单来说就是为应用程序提供一个网络接口,其他应用程序(可以是桌面应用程序或网络应用程序),通过这个接口来调用服务商提供的程序(一般是由客户端发送数据,服务器端接收数据并作出相应处理以后返回给客户),来达到数据交互和分布式处理的效果,并且它通过wsdl、soap等标准实现交互,是一种与语言和平台无关的交互技术。
相关要数
WSDL:Web服务描述语言. 是一个用来描述Web服务和说明如何与Web服务通信的XML语言。为用户提供详细的接口说明书。
怎样向别人介绍你的Web service有什么功能,以及每个函数调用时的参数呢?你可能会自己写一套文档,你甚至可能会口头上告诉需要使用你的Web service的人。这些非正式的方法至少都有一个严重的问题:当程序员坐到电脑前,想要使用你的Web service的时候,他们的工具(如Visual Studio)无法给他们提供任何帮助,因为这些工具根本就不了解你的Web service。
解决方法是:用机器能阅读的方式提供一个正式的描述文档。Web service描述语言(WSDL)就是这样一个基于XML的语言,用于描述Web service及其函数、参数和返回值。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具 既能根据你的Web service生成WSDL文档,又能导入WSDL文档,生成调用相应Web service的代码。
Wsdl是提供了一种对函数、参数和返回值描述标准的 xml语言。通过统一的规则,不论你的程序是用什么语言开发的,只要函数名和功能一样,都能得到相同的wsdl定义。正是wsdl这样一个标准的存在,实现了webservice的跨平台和跨语言,因为不论你用的是什么语言,xml总是一样的。同时wsdl简化了开发流程。我们只需要从服务提供商那里获得相应接口的wsdl文件,那么我们就可以根据该文件,通过相关的软件自动生成客户端不同语言的代码,我们所做的就是调用生成的函数接口而已,大大简化了编码流程。
Soap(xml+http)简单对象访问协议,表示信息交换的协议.
Webservice的通信协议,基于xml和http传输
XML:描述数据的标准方法. 
Webservice通过xml语言进行数据交互,客户端返回给用户的是一个xml文档,客户端会根据生成代码自己处理该xml文档,
根据wsdl文件自动生成服务器端和客户端
现在的软件大多书提供了对wsdl文件的处理。即根据wsdl可以生成特定语言的服务器端和客户端代码。我们只需要做简答的代码调用就可以使用该程序了,简化了程序的开发。
Axis的 java2wsdl 把java转换成wsdl
      Wsdl2java 把wsdl转换成java
Gsoap的 wsdl2 可以把wsdl转换成 c、 c++语言
常用的webservice开发软件
Axis 帕奇可扩展交互系统
Xfire
Cxf
Gsoap C、C++
Webservice环境的搭建
说明
Axis2在xp中搭建服务器,gsoap在liunx中搭建客户端
通过在axis2中生成的wsdl文件生成在gsoap上运行的客户端,并配置完成客户端测试文件
安装
Axis2
把axis2-1.5.4-war.zip包中的axis2.war放到tomcat的webapps目录下,访问local:8080/axis2/即可生成服务器端,在\webapps\axis2\WEB-INF目录中新建pojo文件夹,把编译好的java文件放置在其中,即可完成该webservice的配置。
gsozp
下载下来解压缩,按正常安装过程进行编译、安装。
# tar zxvf gsozp_2.7.
# cd gsoap_2.7.12
# ./configure –-prefix=/usr/local/gSOAP(指定安装路径)
# make
# make install
Run_ws  example
服务器端的一个webservice,run_ws
public class run_ws{
    public String sayHi(){
        return "hi baby,i am axis2 service!";
    }
    public String sayStr(String str){
        return "hi, i get you message,that is:"+str;
    }
}
把该文件编译好的.class文件放于pojo中,localhost/axis2/services/run_ws?wsdl,可获的wsdl文件,用该文件生成客户端代码。
在gsoap目录下,转到要生成文件的目录
wsdl2h -c -o ws.h localhost:8080/axis2/services/run_ws?wsdl
soapcpp2 -c -C ws.h
生成soapC.c soapH.h soapStub.h soapClient.c,把gSOAP自带的文件stdsoap2.c、stdso
ap2.h拷贝到该目录.共同链接到编译文件中。
编写client.cpp文件,编写makefile,测试客户端。
soap_call___ns3__sayHi(soap, "10.30.26.1:8080/axis2/services/run_ws", NULL, &sayhiR)==SOAP_OK
客户端通过soap_call___ns3__sayHi调用服务器端的sayHi方法,客户端从sayhiR响应中获取返回数据。
wsdl2h -o 头文件名 WSDL文件名或URL
wsdl2h常用选项
-o文件名,指定输出头文件
-n名空间前缀 代替默认的ns
-c产生纯C代码,否则是C++代码
-s不要使用STL代码
-t文件名,指定type map文件,默认为typemap.dat
-e禁止为enum成员加上名空间前缀
soapcpp2常用选项
-C如何生成webservice客户端仅生成客户端代码
-S 仅生成服务器端代码
-L不要产生soapClientLib.c和soapServerLib.c文件
-c产生纯C代码,否则是C++代码(与头文件有关)
-I指定import路径(见上文)
-x不要产生XML示例文件
-i生成C++包装,客户端为xxxxProxy.h(.cpp),服务器端为xxxxService.h(.cpp)。
以上内容为个人理解,如有不足,欢迎指出。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。