工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 微软开发专栏 > 技术专题 > 正文
.NET框架和VS.NET中的SOAP
[文章信息]
作者:Keith Ballinger,Jonathan Hawkins,Pranish Kumar
时间:2004-11-07
出处:msdn
责任编辑:方舟
[文章导读]
本文的主要目的是对 .NET 框架和 Visual Studio.NET 中的 SOAP 功能作一个总体的介绍
advertisement
热点推荐
· Java加密和数字签名编程快速入门
· 在VB6中用命令行为模式控制GUI动作
· Excel图表向导详解
· 浅析各种计算机病毒应对方法
· 2月16日软件精选 春节文章精彩回顾
[正文]

上一页  1 2 3 4 5  


  将 SOAP 用作 ATL 开发工具

  ATL Server Web Services 为 C++ 开发人员提供了在本机代码中创建和使用 Web Services 的简便方式。ATL Server 是 C++ 开发人员在 Internet 上提供和使用 Web Services 的首选方法,其设计目的是为包含 SOAP 的 Web 应用提供快速、轻便和高度灵活的程序库。

  ATL Server 之所以称为 ATL,是因为它体现了同时追求高性能和灵活性的 ATL 目标。例如,您可以很容易地抛开 ATL Server HTTP 模型,编写您自己的调度程序,同时仍然获得 ATL Server 封送/协议代码的好处。

  ATL Server Web Services 使用与 COM 相似的语法说明接口,便于目前的 ATL 开发人员学习。这种与 COM 相似的语法允许开发人员轻而易举地将对象同时以 COM 对象和 Web Service 方式提供。

  属性的引入大大简化了代码,使它对于非 ATL 开发人员也很容易。ATL Server 具有和其他所有 .NET Web Services 进行互操作的能力,这对那些在一个应用程序中使用多种技术的开发人员来说十分方便。

  接口:新的 __interface 关键字使开发人员很容易创建 COM 对象或 Web Services 接口。

[
uuid("D7DAE6FD-AEBB-4579-BD8D-866F74139501"),
object
]
__interface IWeb_Service_ExampleService
{
[id(1)] HRESULT HelloWorld([in] BSTR bstrInput, [out, retval] BSTR *bstrOutput);
};

  这是一个运用 ATL Server 定义 Web Service 接口的例子。通过 C++ 属性的运用,嵌入式 IDL 属性和新的 __interface 关键字、ATL Server Web Service 接口看起来和新的属性化的 COM 接口非常相似。这里的 Web Service 接口样例 IWeb_Service_ExampleService 仅实现一个方法 HelloWorld。HelloWorld 用 BSTR 作为输入并返回 BSTR 作为输出。

  请求处理程序:请求处理程序是一个 C++ 类,该类通过处理程序映射来提供,并且具有通过替代方法映射来提供的方法。处理程序映射只是文字标签与类名称的映射,而方法映射是类中文字标签与方法的映射。

[
request_handler(name="Default",sdl="GenWeb_Service_ExampleServiceSDL"),
soap_handler(
name="Web_Service_ExampleService",
namespace="urn:Web_Service_ExampleService",
protocol="soap"
)
]
class CWeb_Service_ExampleService:
public IWeb_Service_ExampleService
{
public:

[ soap_method ]
HRESULT HelloWorld(BSTR bstrInput, BSTR *bstrOutput)
{
CComBSTR bstrOut(L"Hello ");
bstrOut += bstrInput;
bstrOut += L"!";
*bstrOutput = bstrOut.Detach();

return S_OK;
}
};

  ATL Server 请求处理程序模型与 Web 应用和 Web Services 非常相似。图 1 显示了处理请求的模型:


          图 1. ATL Server 请求处理模型

  HTTP Request 进入 IIS,将请求(基于 URL 及其扩展)映射到适当的 ISAPI DLL。然后,ISAPI DLL 把在请求中指定的处理程序(即在标签或查询参数中指定的处理程序)映射到适当的 Application DLL。Application DLL 再将这个处理程序映射到 C++ 对象。在这个模型(ATL Server 模型)中,Web 应用程序和 Web Service 的唯一差别在于最后一步。使用 Web Services,C++ 对象能够解码/编码 SOAP(当编译器解析 soap_handler 属性时,它会插入执行此操作的代码)。

  您可以理解,这个类是从我们的接口继承过来的,并且我们使用 [soap_method] 属性指示将由 HelloWorld 方法来处理 SOAP 请求。实现这种方法和实现任何其他 C++ 方法是一样的。

  这个 soap_handler 属性还确保自动生成有效说明服务的 WSDL。Web Service 的用户使用这个对服务的说明(格式为 XML/WSDL),确保他们能够以正确的格式发送/接收正确的数据。

  通过 ATL Server 使用 Web Services

  通过 ATL Server 使用 Web Services 相对来说是个比较简单的操作。开发人员只需使用 “Add Web Reference” 对话框,将它指向 .disco 文件,然后指向 WSDL,这和使用其他类型的 Web 引用一样。这个对话框在后台运行在 Web Service 的 WSDL 上的 sproxy.exe 实用程序(对于非本机的 .NET Web Services 有另外一个实用程序)。

  该操作将创建 Web Service 代理文件,包含要求利用所请求的 Web Service 的全部 C++ 代码。使用 WSDL 中的信息,代理生成器能够判断 Web Service 要接收到的数据以及它要返回给客户端的数据。这就允许代理生成器创建可以和 Web Service“交谈”的头文件。

  您只需创建自己的 Web Service 类(如在生成的头文件中查找到的一样)的实例,并且使用合适的方法即可,例如:

CWeb_Service_ExampleServiceService MyService;
CComBSTR bstrOut;
CComBSTR bstrIn(L"World");
MyService.HelloWorld ( bstrIn ,&bstrOut,);
wprintf(bstrOut);

  现在,您就已经有一个基本的 ATL Server Web Service 和 ATL Server Web Service Consumer 了。

  总结

  本文的主要目的是对 .NET 框架和 Visual Studio.NET 中的 SOAP 功能作一个总体的介绍。其次,就如何创建使用 SOAP 的应用程序,给用户一些有益的指导。



上一页  1 2 3 4 5  

天极社区邀请您:写博客日记  上传相片   论坛聊天  订阅电子杂志  推荐网摘   免费图铃工具
笔名:   请您注意:

 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。

 天极网拥有管理笔名和留言的一切权利。
评论:
 
发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 五种常见的ASP.NET安全缺陷
  • ADO.NET2.0的十大新特性
  • 使用ADO.NET的最佳实践
  • .NET Web应用框架构建模式
  • .NET框架中基于角色的安全性
  • 中兴携手阿尔卡特 全球逐鹿CDMA
  • 用友总裁王文京:誓将ERP变成“大众消费”
  • 香港消费者委员会:数码相机最贵未必最好
  • 外电称中兴正评估西门子手机业务 或能并购
  • 国信办督战八大行业灾难备份 将出台国家标准
  • 中国IT企业走进欧盟 搭第六框架计划直通车
  • 美邦银行用户注意 警惕新型“钓鱼”邮件
  • 微软三年时间磨出新IE 具有更强大安全性能
  • Advertisement