woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

使用gSoap实现企业级数据存储应用

下载源代码

一、介绍

  SOAP实现远程数据存储比起DCOM以及Midas都要好,因为它可以使用80端口,并且在服务器端无需多添加一个托盘图标,部署也相当方便。
  要在VC6下实现SOAP的客户端,可以使用微软提供的Soap SDK,或者是开源的gSoap(其实网上还有xSoap,eSoap等很多),如果采用微软提供的Soap SDK的话,客户端部署就稍微麻烦一些,需要注册一堆的组件,如SOAP,XML等。
gSoap是一个夸平台的,用于开发Web Service服务端和客户端的工具,使用C和C++语言编码,当看到这个东东的时候,就不会再想用微软的SDK了。

二、实例介绍

例子的服务器端使用C#开发的ASP.NET Web Service,客户端使用gSoap,例子的内容相当简单,就是测试连接。

三、创建服务器端

在VS2003里面新建一个ASP.NET Web 服务MyWebService,创建函数如图所示:

使用[WebMethod]来标识对外输出的函数名。点击运行会出现如下页面:

四、创建客户端

首先,点击服务说明,将WSDL使用查看源代码的方式存储为MyService.wsdl文件。

然后,使用开源的WsdlToCode工具,创建客户端代码:

选择之前产生的wsdl文件后,点击生成按钮,产生的文件如下图:

第三,在VC6.0下创建基于对话框的工程TestClient,将MyServiceSoap.nsmap,soapC.cpp,soapClient.cpp,soapH.h,soapStub.h,以及gSoap工程根目录下的stdsoap2.h,stdsoap2.cpp,总共七个文件添加到工程,再添加代码:
在对话框类中添加头文件包含。
#include "MyServiceSoap.nsmap"
代码编写如下图:

修改soapC.cpp,soapClient.cpp,stdsoap2.cpp的编译条件为不需要预编译头文件,gSoap不需要MFC。

第四,运行结果:

编译后运行,效果如下:

五、问题

  1. 服务器端的函数必须要有入口参数,以及返回参数;
  2. 服务器端必须要安装IIS以及FrontPage200服务器扩展,由于有些机子使用的是DeepIn系统,可能安装了IIS而没有安装FrontPage200服务器扩展;
  3. gSoap是支持用户名以及密码登录的,上面的代码是采用匿名登录,所以需要将Web Service设置为匿名登录;
  4. 入口参数以及返回参数可以采用Xml与Base64编码,这样就支持所有的数据格式了,甚至是整个数据库;
  5. 十行代码之内就可以解决一个不小的问题还不多见,所以我强烈推荐使用gSoap;
  6. 本文涉及的所有代码都在附件中,希望与大家多多交流;

==========================================================

评论

不错, SOAP的确比DCOM好。
在互联网环境下, DCOM会淘汰了。
客户端直接操作远程数据库不适合现代企业应用,安全是问题。
( littlestar 发表于 2007-4-23 12:46:00)
传统的企业应用采用局域网的方式,直接使用SQLServer或者MySQL就可以实现,但是现在的企业都要求在广域网间进行业务操作,这样就需要一个与服务器交换数据的方法,之前是使用DCOM等实现的,比较麻烦,如果还不明白,就说明你没有做过企业级的系统,没有遇到数据交换带来的问题。 ( zhaiht 发表于 2007-4-18 9:10:00)
这个怎么就实现了企业级数据存储应用啦
详细说一下吧
不知道哪里能用到这个东西 ( sheds 发表于 2007-4-16 21:50:00)

posted on 2008-05-27 18:53 肥仔 阅读(354) 评论(0)  编辑 收藏 引用 所属分类: 网络编程


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理