(0N0。,的543 cstring The Doors,voca18”& he who, Drums.& vbnewline x,, Guitar Vocals.& vbNewlLine Set objTableStorage2- Server Createobject('ASPComponents Tablestorage2') ob]TableStorage2. Parsecsv csvstring objTablestorage2. Sort ' N <P>Number for Columns: <s=objTablestorage2 numColumns ></P> <P>Number for Rows: <%=objTableStorage2 numROwS%></P> objTablestorage2. OutputTable 1 这与上一章中的ASP代码非常相似,区别只是没有遍历字段以显示数据,仅须调用 OutputTable。这段代码比较简洁并可得到相似的结果,如图18-4所示。 TableStorage C++ Component Test Driver Number for Columns: 3 Number for Rows: 5 Grop「 Instrument「 The Doors Vocals Jim morrison vocals Jimi hendrix The Who Drum Keith Moon Kraft 图18-4浏览器中显示的表 此表仅是相似,列的顺序不同。这是因为C++程序与ASP代码用不同的方式进行列遍历, C艹+中列按字母顺序存储在map数据结构中。另一方面,ASP代码以列存储的顺序进行遍历, 其存储的顺序是“Name、 Group、 Instrument”,是由上一章的例子生成的输出。可以扩展 OutputTable方法,使用户可指定列的顺序,而不需要改变代码 综上所述,如果可以与其环境交互,C++服务器组件会更有用。在这种情况下,C++组件 可通过COM得到各种ASP内置对象的指针。这样可以让组件利用ASP的固有功能。我们仅分 析了一个ASP内置对象,其余的都以同样的方式工作。下面介绍C++服务器组件如何通过 COM+与其环境交互 18.2与cOM+进行接口 特别应当注意:suaC++向导仍采用术语“MTS”, Visual c++头文件和静态库名 称中仍含有“mt”。因此,本节中我们使用术语“ MTS/COM+”,而不只是“cOM+
这与上一章中的 A S P代码非常相似,区别只是没有遍历字段以显示数据,仅须调用 O u t p u t Ta b l e。这段代码比较简洁并可得到相似的结果,如图 1 8 - 4所示。 图18-4 浏览器中显示的表 此表仅是相似,列的顺序不同。这是因为 C + +程序与A S P代码用不同的方式进行列遍历, C + +中列按字母顺序存储在 m a p数据结构中。另一方面, A S P代码以列存储的顺序进行遍历, 其存储的顺序是“ N a m e、G r o u p、I n s t r u m e n t”,是由上一章的例子生成的输出。可以扩展 O u t p u t Ta b l e方法,使用户可指定列的顺序,而不需要改变代码。 综上所述,如果可以与其环境交互, C + +服务器组件会更有用。在这种情况下, C + +组件 可通过C O M得到各种A S P内置对象的指针。这样可以让组件利用 ASP 的固有功能。我们仅分 析了一个 A S P内置对象,其余的都以同样的方式工作。下面介绍 C + +服务器组件如何通过 C O M +与其环境交互。 18.2 与C O M +进行接口 特别应当注意:Visual C++向导仍采用术语“M T S”,Visual C++头文件和静态库名 称中仍含有“m t x”。因此,本节中我们使用术语“M T S / C O M +”,而不只是“C O M +”。 第1 8章 对C + +组件的进一步讨论计计543 下载
544AsP3高级程 Chinapub.com 下载 Visual c++在两个方面提供 MTS/COM+支持:一是在创建项目时,二是在项目中使用指 定的组件时 首先来看一下 MTS/COM+对于项目的支持。当编译和链接项目时,便转换为DLL或 在项目中使用 MTS/COM+服务时,必须链接指定的库。 Visual c++ App Wizard可帮助完成此 项任务 在你第一次创建项目时,可能已注意到了 Support mTs复选框,如图18-5所示。 ATL COM Appwizard. Step 1 of 1 Th wead Set as C Dynamic Lrk Libary DLLI C Executable EXEI gng of poy/stub code poot MFC R18-5 Visual C++ Appwizard 如果选定此复选框,不会产生附加代码,但向导改变项目设置使其“启用COM+”。特别 是,向链接线增加了mtx.ib、 mtxguid lib和 delaying.lib库。因此,如果没有对上述复选框进 行选定,仍可通过如图18-6所示的方式在链接线中添加这些文件名,使现有的组件“启用 COM+"。 地h以 m produce LB 32b od32 Ib wrspodl 图18-6添加库 另一个选择是创建启用COM+的组件。当在项目上添加一个新的ATL组件时,选择MS ransaction Server Component,如图18-7所示
Visual C++在两个方面提供 M T S / C O M +支持:一是在创建项目时,二是在项目中使用指 定的组件时。 首先来看一下M T S / C O M +对于项目的支持。当编译和链接项目时,便转换为 D L L或E X E。 在项目中使用M T S / C O M +服务时,必须链接指定的库。 Visual C++ AppWi z a r d可帮助完成此 项任务。 在你第一次创建项目时,可能已注意到了 Support MTS复选框,如图1 8 - 5所示。 图18-5 Visual C++ AppWi z a r d 如果选定此复选框,不会产生附加代码,但向导改变项目设置使其“启用 C O M+”。特别 是,向链接线增加了 m t x . l i b、m t x g u i d . l i b和d e l a y i m p . l i b库。因此,如果没有对上述复选框进 行选定,仍可通过如图 1 8 - 6所示的方式在链接线中添加这些文件名,使现有的组件“启用 C O M +”。 图18-6 添加库 另一个选择是创建启用 C O M +的组件。当在项目上添加一个新的 AT L组件时,选择 M S Transaction Server Component,如图1 8 - 7所示。 544计计ASP 3 高级编程 下载