织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>杂项技术>.NET(C#)>

非托管C++代码开发WebService:开发步骤

jackyhwei 发布于 2009-12-10 11:37 点击:次 
一般大家都用C#之类的托管代码来做WebService,但偶尔还是会有直接用VC C++来做的情况,这是一个具体实现的例子。
TAG:

开发步骤:

1、利用向导生成Service工程

i)在VS2005中新建一个工程,工程类型选择Visual C++,模板选择ATL Server Web Service,输入工程名称(如:TestWebService),点击OK按钮,进入向导界面。
ii)向导第一步,提示当前工程设置,告知当前工程将会生成哪些内容。直接点击“下一步”按钮
iii)向导第三步,设置部署参数,向导将为您生成一个ISAPI动态库,在这一步中可以设置ISAPI动态库的名字和ISAPI动态库工程的位置,以及编译后,服务在IIS中部署的位置(如:指定ServiceTest)。
iv)向导第四步,缓存和会话设置,可以直接选择下一步
v)向导第五步,直接选择下一步
vi)向导第六步,直接选择finish,创建Service工程。
vii)创建好的工程将包含一个WebService工程和一个ISAPI工程。

2、编写WebService

建立的WebService工程缺省会包含一个HelloWorld服务,其定义如下所示:

WebService接口定义:

__interface ITestWebServiceService
{
     // HelloWorld is a sample ATL Server web service method. It shows how to
     // declare a web service method and its in-parameters and out-parameters
     [id(1)] HRESULT HelloWorld([in] BSTR bstrInput, [out, retval] BSTR *bstrOutput);
     // TODO: Add additional web service methods here
};

WebService实现:

     [ soap_method ]
     HRESULT HelloWorld(/*[in]*/ BSTR bstrInput, /*[out, retval]*/ BSTR *bstrOutput)
     {
         CComBSTR bstrOut(L"Hello ");
         bstrOut += bstrInput;
         bstrOut += L"!";
         *bstrOutput = bstrOut.Detach();
         return S_OK;
     }

可以将向导生成的HelloWorld服务修改为想要的服务,也可以添加自己的服务。具体添加方法和ATL编写组件方式类似,分为两步。

首先,在接口定义中添加新的方法描述,然后在添加新方法的实现,如下所示:

__interface ITestWebServiceService
{
     // HelloWorld is a sample ATL Server web service method. It shows how to
     // declare a web service method and its in-parameters and out-parameters
     [id(1)] HRESULT HelloWorld([in] BSTR bstrInput, [out, retval] BSTR *bstrOutput);
     // TODO: Add additional web service methods here
     [id(2)] HRESULT Add([in] LONG a, [in] LONG b, [out, retval] LONG *pret);
};

     [ soap_method ]
     HRESULT HelloWorld(/*[in]*/ BSTR bstrInput, /*[out, retval]*/ BSTR *bstrOutput)
     {
         CComBSTR bstrOut(L"Hello ");
         bstrOut += bstrInput;
         bstrOut += L"!";
         *bstrOutput = bstrOut.Detach();
         return S_OK;
     }

// TODO: Add additional web service methods here
     [ soap_method ]
     HRESULT Add(/*[in]*/ LONG a, /*[in]*/ LONG b, /*[out, retval]*/ LONG *pret)
     {
         if (pret != NULL)
         {
              *pret = a + b;
         }
         return S_OK;
     }


最后编译Solution,生成WebService的DLL和ISAPI的DLL。

要想编译该Solution,必须安装IIS。

原文:http://www.geostar.com.cn/bbs1/dispbbs.asp?boardID=3&ID=215&page=2

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200912/8111.html]
本文出处:geostar.com.cn 作者:秩名
顶一下
(1)
33.3%
踩一下
(2)
66.7%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容