扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在Visual Studio的下一版本--Visual Studio .NET中将为C++程序员包含一个名为ATL服务器的应用程序,此应用程序极大地简化了高性能可扩展的Web应用程序的开发。ATL服务器提供了一组类,这些类扩展了活动模板库(ATL),可以通过ISAPI访问IIS的所有功能。
ATL服务器提供的类使开发人员能很容易地处理如缓冲、线程-池和会话状态之类的问题。通过使模板库成为轻量级、可扩展的,并利用ATL的“只为需要的东西付出劳动”模型,它使开发人员能在很短的时间内获得ISAPI高度的性能。对ATL服务器更全面的信息,请阅读文章:ATL 服务器: 用Visual C++创建高性能的Web 应用程序 。 ATL服务器结构一个重要的部分是它非常适合于高效处理XML Web 服务请求。因为此模板库扩展到了支持XML Web服务,这样就使企业能够快速而有效的将企业逻辑作为XML Web服务暴露。使用Disco文件,ATL 服务器 Web服务容易通过SOAP/XML协议发布和定位。ATL服务器Web服务通过HTTP协议能被运行在任何平台上的任何语言调用。这将编程能力通过防火墙扩展到了远程客户端。
在ATL中创建XML Web服务
选中ATL服务器应用程序向导中的“作为Web服务创建”复选框(在“应用程序选项”中)者使用“ATL 服务器Web服务工程”向导,就可以在ATL服务器中创建XML Web服务。(注意,“ATL 服务器Web服务工程”向导运行“ATL服务器工程”向导,只是“作为Web服务创建”复选框默认是选中的。)
图 1. ATL 服务器 Wizard 复选框
“作为Web服务创建”复选框生成标准的带名为“HelloWorld”的默认XML Web服务的ATL 服务器应用程序。HelloWorld函数演示了如何创建基本的ATL 服务器Web服务。
下面的代码解释了在生成源文件的向导中发生的情况。
我们需要实现这个接口的类。这个类必须实现已经编写了的接口的方法。将通过两个属性标记XML Web服务。第一个,[ soap_handler],放在类中,指示属性提供者(负责提供代码的应用程序,这些代码将作为属性的替代物插入)这个类将处理SOAP请求。第二个,[ soap_method ],用于标记作为XML Web服务暴露的的方法,并指示属性提供者此方法将用于接收和发送SOAP消息(即,我们需要对此方法进行解码与编码的输入与输出)。
一旦XML Web服务发布到了Web服务器上,就可通过HTTP结对它进行调用,并通过XML与服务交换数据。任何支持作出HTTP请求的语言都能调用XML Web服务,而不管此服务是用什么语言实现的,或不管它运行在什么样的平台上。Visual Studio .NET有一个增加Web参考对话框,它使开发人员能快速而方便地使用XML Web服务。
你可以从喜欢的任何类型的应用程序调用XML Web服务。在下面的例子中,我们将用Win32控制台应用程序中的增加Web参考对话框,介绍访问XML Web服务的步骤。
首先,向方案中增加Win32(空)控制台应用程序(或如果没有打开方案,创建一个新的Win32控制台应用程序)。
在方案管理器中,右击新创建的工程,选择“增加Web参考”。出现增加Web参考对话框。输入在服务器上部署的disco文件(随ATL服务器Web服务自动创建和部署的文件)的位置。你可参考下面的对话框。如果输入了先前创建的XML Web服务的位置,并单击绿色小箭头,对话框将找出XML Web服务,并且在对话框底部的“增加参考”按钮将激活(见下面的图)。
对话框将消失,并且不会再发生什么事。然而,如果你在新工程上右击,然后选择增加->已有项目,你会在XML Web服务客户端的目录中发现一个新生成的文件(按XML Web服务命名,如Project1.h)。这个文件是由增加Web参考对话框(通过“sproxy”命令行应用程序)生成的代理,而且,当包含在文件中时,它使你能方便地访问XML Web服务。这就旬作出标准的方法调用一样。
下面是一个使用Project1 XML Web服务的控制台应用程序示例:
define _WIN32_WINDOWS 0x0403
define _WIN32_WINDOWS 0x0403
#include "project1.h"
#include
int main(void)
{
/*此处创建由代理生成的类的实例。如果我们查看代理的代码,就会发现它在类CProject1Service
(从CsoapSocketClient中继承)中封装了HelloWorld方法。*/
CoInitialize(NULL);
CProject1Service svc;
CComBSTR bstrIn(L"World");
CComBSTR bstrOut;
/*此处调用XML Web服务,你可以看到, 不用告诉代理它正在调用的是XML Web服务,
代理会为我们处理这些事情。 */
svc.HelloWorld(bstrIn, &bstrOut);
wprintf(L"The output string is %s
", bstrOut);
}
总结
通过下一代的Visual Studio工具,微软将极大地削减速创建可编程的XML Web服务的复杂性。这些服务构建在工业标准的Internet协议上,包括HTTP和XML,以提供令人振奋的企业机遇。使用ATL服务器,C++开发人员能方便地创建功能强大的高性能的XML Web服务,以平衡 Internet的需求。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。