WEB开发网
开发学院软件开发VC 用 Visual C++创建的高性能的Web应用程序和XML We... 阅读

用 Visual C++创建的高性能的Web应用程序和XML Web 服务

 2007-03-30 21:32:23 来源:WEB开发网   
核心提示: BEGIN_REPLACEMENT_METHOD_MAP(CHelloWorld)REPLACEMENT_METHOD_ENTRY("Title", OnTitle)REPLACEMENT_METHOD_ENTRY("HelloWorld", OnH
BEGIN_REPLACEMENT_METHOD_MAP(CHelloWorld)
  REPLACEMENT_METHOD_ENTRY("Title", OnTitle)
  REPLACEMENT_METHOD_ENTRY("HelloWorld", OnHelloWorld)
END_REPLACEMENT_METHOD_MAP()

图 2. HelloWorld.cpp文件中的替代方法映射部分

OnTitle 和 OnHelloWorld方法(与替代方法映射部分包含在同一个文件内)的实现比较简单。它们使用ChttpResponse对象的流操作符将动态内容写入到响应流中,然后发送到客户端。

HTTP_CODE OnTitle()
  {
    m_HttpResponse << "HelloWorld Sample";
    return http_success;
  }
  
  http_code OnHelloWorld()
  {
    m_HttpResponse << "Hello World!";
    return HTTP_SUCCESS;
  }

图 3. HelloWorld.cpp文件中 OnTitle 和 OnHelloWorld 方法的实现

当然,应用程序DLL能做的远远超过这点事件。ATL服务器包含的类简化了对Crypto API和微软消息队列(MSMQ)的访问,允许通过简单邮件传输协议(SMTP)进行简单的邮件发送。应用程序DLL有许多应用类用于帮助对请求的处理。它们包括用于请求参数的集合类,cookies和POST数据。多目的Internet邮件提高警惕(MIME)语法分析器可用于分析发送到Web服务器的MIME数据。请求处理器有权访问一些接口,这些接口使它能够访问存在于ISAPI扩展的EXTENSION_CONTROL_BLOCK(带请求上下文的由IIS传递到ISAPI扩展的数据结构)中的所有信息。如果所有内容都必须动态生成,在不存在.SRF文件的情况下也可以使用请求处理器。

在处理.SRF文件的过程中,ATL 服务器 ISAPI DLL由文件的开头开始执行,调入在“handler”替代标记内指定的应用程序DLL。在应用程序DLL中将调用输出端口指针,此指针然后传递所请求的处理器的名字。如果找到这个处理器,应用程序DLL将创建这个处理器的一个实例,然后处理器的IRequestHandler接口将返回到ISAPI扩展。扩展然后调用IRequestHandler::HandleRequest方法,向它传递有关HTTP请求的信息。HandleRequest方法装入模板,对其进行分析,并将它发送到响应流中。作为性能上的一个改进,模板只分析一次。一旦它被分析过了,它就由ISAPI扩展以分析格式缓存。以后对模板的请求将ISAPI扩展的模板缓存提供服务。

本例的结果非常简单:在浏览器中显示两行文本(图4)。你将注意到文本“HelloWorld Sample”的格式在.SRF文件中进行管理:一对HTML头标签被{{标题}}调用所包围。

图 4. HelloWorld ATL 服务器应用程序的浏览器输出

总结

ATL服务器目前对于开发人员编写ISAPI代码是理想的,因为它在ISAPI和平台APIs上提供了常用代码的基本实现和简单的C++抽象层,简化了ISAPI开发中的编程任务。对此类库的补充支持是Visual C++开发环境中的向导和部署及调试支持。

预见到对Web应用程序有极大性能需求的建筑和开发经理也应当考虑ATL服务器。ATL服务器使用已经证实的方法确保在IIS之上最高级别的性能。希望进行高性能C++和IIS开发的任何C++开发人员,特别是具有ATL经验的开发人员将发现ATL服务器是有用的。

上一页  1 2 3 4 

Tags:Visual 创建 高性能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接