现在的位置: 首页 > 综合 > 正文

如何在vc中编写 WebService

2014年10月29日 ⁄ 综合 ⁄ 共 2003字 ⁄ 字号 评论关闭

 条条大路通罗马,在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 的函数体,完成功能,相关代码如下:

 

 

 

最后,编译工程,我们就能得到一个可供下一步使用的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 完成转换

向导将会生成以下文件

 

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

 

第三部分:部署 webservice

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

 

 rights

 

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

 

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

 

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

 

 

抱歉!评论已关闭.