如何在vc中编写 WebService

来源:互联网 发布:linux java打开excel 编辑:程序博客网 时间:2024/06/05 19:28

条条大路通罗马,在vc中编写webservice的方法有很多,例如使用gasop,soaptoolkit或者ATL。本文所讨论的是,通过微软的soap toolkit开发包,将一个COM组件转化成为一个webservice。

 本文共分3个部分:

 一.使用ATL开发一个COM组件

 二.通过 soap toolkit 中的 wsdlgenerator 工具将 COM 组件转换成 webservice

 三.部署webservice

第一部分:创建COM组件

 首先,建立一个ATL工程,工程名为MyWebServiceTest.

 创建ATL工程

ServerType 选择 Dynamic-link library(DLL)

Additional options 选择 Allow merging of proxy/stub code

其余的使用默认设置即可

工程属性

创建完工程后,我们需要工程中添加一个COM组件,方法如下

addCom

在弹出的对话框里,选择 ATL Simple Object,然后点击确定

ATL Simple Object 

在接下来的对话框里面,shortName 填写 MyMath,这是我们 COM 组件的名称,其余的均使用默认设置,点击 Finish 完成添加COM组件。该组件将会提供一个IMyMath接口。

shortname

接下来,我们在 IMyMath 接口中添加一个方法 Add, 方法仅仅是简单的将 lParam1 与 lParam2 相加,并返回结果。

添加方法如下:

其中 lParam1 和 lParam2 的类型为 LONG, 并带有 属性 [in]

lResult 的类型为 LONG* ,并带有属性[out,retval]

其余保持默认设置,点击  finish 按钮完成添加

admethod

接下来,我们编辑 Add 的函数体,完成功能,相关代码如下:

 

view plaincopy to clipboardprint?
  1. STDMETHODIMP CMyMath::Add(LONG lParam1, LONG lParam2, LONG* lResult)   
  2. {   
  3.     // TODO: Add your implementation code here   
  4.     *lResult = lParam1 + lParam2;   
  5.     return S_OK;   
  6. }  

 

最后,编译工程,我们就能得到一个可供下一步使用的COM组件了。

第二部分:使用wsdlGeneraor 工具将COM组件转换成webservice

  首先,从微软的网站上下载并安装soaptoolkit3.0,下载地址是

http://www.microsoft.com/downloads/details.aspx?FamilyId=C943C0DD-CEEC-4088-9753-86F052EC8450&displaylang=en

 安装完成后,从开始菜单运行Wsdlgenerator,然后我们根据向导完成相关的设置

wsdl

我们不需要配置文件,所以向导的第二页没有什么用,直接跳过去就行了,进入向导的第3页

在 "what would you like to name your service?" 这一项里面填写 MyMath,

向导会以此作为文件名生成相应的文件

然后点击select Com object 选择我们在上一步编译好的dll文件。 

name

 在接下来的一步,选择需要作为 webservice 的方法,没有被选中的方法在 webservice 是不可见的。

然后点击进入下一步

m

接下来的这一步是很关键的,它关系到我们的webservice 是否能够成功部署。

在 URI 这一栏中,我们填写 http://192.168.2.101/MyMath/

其中 192.168.2.101 是我们要部署 webservice 的机器的 IP 地址

MyMath 是 webservice 所在的虚拟目录的名称。这个名称我们会在第3部分中用到

listener type 我们选择 ASP.

然后下一步

key

在接下来的步骤中,我们接受默认设置

一路 next 下去,最后 finish 完成转换

向导将会生成以下文件

 

view plaincopy to clipboardprint?
  1. mymathClient.wsml   
  2. mymath.wsml   
  3. mymath.WSDL   
  4. mymath.WGen   
  5. mymath.asp  

 

将这些文件,连同 MyWebServiceTest.dll 拷贝到目标机器上(192.168.2.101)

第三部分:部署 webservice

首先,我们在目标机器的IIS中创建一个虚拟目录,虚拟目录名称就是 myMath,这个名字要与前面第二部分填写URI时的红色部分一致。同时保证该虚拟目录有足够的权限执行ASP

 rights

创建完虚拟目录后,将第二部分生成的6个文件拷贝到虚拟目录所对应的物理路径中,然后通过 regsvr32 注册 MyWebServiceTest.dll 组件。如果你无法完成注册,请在你的开发机器中搜索 vcredist_x86.exe 程序,将其拷贝到目标机器并运行,然后再次注册组件。

至此,该webservice已经可以正常工作了。我们可以通过建立一个C#程序来验证这个webservice。验证的部分我就先省略了。

最后希望本文能对大家有所帮助 ,谢谢。