介绍 Active Server Page +

---摘自《ASP中华网》(文/飞刀)
尽管ASP3.0的墨记还没有干，微软便忙着他们的下一个服务器核心编程技术。在被邀请的所写的三篇文章中，我们将介绍这个新产品，让我们看看它倒底是什么。现在这个新技术的名字是ASP+ Next Generation Web Services (八成微软会改这个名字，微软就喜欢这样，我们先叫着吧），我们将看到我们为什么需要这个新ASP技术，并且探索一下在这个设计和实施概念后的一些东东。这几篇文章主要是写给那些还在用ASP开发的人，如果你准备移植到ASP+中来，我们先举例看看一些核心文章。

ASP+设计时是与先前ASP是兼容的，开发环境只需要一点点小的改变。但是，你能够安装在一个存在的windows 2000(包含 ASP 3.0）安装ASP+。这就允许你调试程序时不需要一个测试用的服务器。在这个上面，你照样能够使用ASP，当你认为适当时再移植到ASP+中来，这样你的ASP投资就不会被浪费。

但是只是简单地将你的ASP应用程序转为ASP+，不会给你带来多少好处。ASP+拥有很多新的属性，这些属性将会使你的程序更简单，更强大，更有效率（你们后面就会看到，很像JSP），但是为了利用这些优点，你得了解很多ASP+工作的方式。

在专业开发会议2000中，微软已经发布了一个预览版本的AS“+，让大家知道它能做什么，并且让我们感觉这个令人兴奋的新的能让我们开发动态WEB应用时使用更少的代码的可能。

## Active Server Pages 的发展

尽管ASP很有前途，但是其不过才3岁而已，它诞生在1996年末，但是其巨大的发展速度使其成为了Windows平台上主要的WEB服务器开发技术（使用一些软件也能在其它的平台下使用，如ChiliASP).但是它并不是无处不在的。

### 动态WEB服务开发程序

传统地，动态网页是使用服务器端程序开发的。一个标准的WEB服务器接口规范叫做Common Gateway Interface（CGI），它允一个执行程序访问所有客户的请求信息。这个程序能产生输出生成一个页面（HTML，脚本代码，文本等）以回应用户的请求，并把它发送回客户。

为了让程序员的日子好过，同时也节约生成的程序，Perl此类语言便使用能够接收文本脚本的文件的应用。程序员只需简单地写下脚本，服务器使用Perl解释器执行它。

#### 微软 ISAPI 技术

微软公司在他们的服务器Internet Information Server(IIS)中使用了一种新的技术，名叫Internet Server Application Programming Interfac（ISAPI),和CGI不同的是它允许已经编译过的动态链接库（DLL）在WEB服务器上直接执行。和CGI一样，它也能处理用户信息。

大多数微软WEB技术的进步都是以ISAPI接口为基础的。一个早期的但是短命的产品是dbWeb,一种数据库访问技术，提供一定范围的搜索。

稍后的一种技术叫做Internet Database Connector(IDC).它对开发者来说是一个巨大的转变，不仅因为它速度快，效率高（比dbWeb不知道好到哪儿去了），而且它更简单，更大众化。IDC提出了模块（templates）概念.允许程序员使用其属性快度地开变一个存在的HTML，从而以最快的速度建立一个新的应用程序。

IDC为每个"页面"配上了个文本文件。第一个文件只是简单地定义一些方法说明我们将要联接的数据库服务器。说白了就是一个SQL语句再加上一配制信息。

    {this is the query file named getuserlist.idc}
    Datasource: GlobalExampleData
    Username: examples
    Password: secret
    Template: getuserlist.htx
    SQLStatement:
    + SELECT DISTINCT UserName
    + FROM Person ORDER BY UserName;

服务器执行上面的文件来获取recordset结果，然后调用下面的模块文件：

    {this is an extract from the template file named getuserlist.htx}
    ...
    User name:
    ...

这个模块只不过是一个普通的WEB页面，包含HTML，文本和其它的对象,但是有一些统一的占位符在里面。它有些像ASP，哈哈ASP就是这里发展过来的。

### ASP出现

接着就是到了1996年，Denali(ASP的代码名）发布了，它的第一个版本是0.9测试版。它给WEB开发带来一阵暴风，它能够将代码直接嵌入HTML，使得设计WEB页面变得更简单，更强大，并且通过内置的组件能够实现强大功能，最明显的就是ActiveX Data Objects （ADO），它使得建立一个动态页面如小孩子玩游戏一样简单。

最终出场的是Active Server Page 1.0,它做为IIS的附属产品免费发送。并且不久就在Windows平台上广泛使用。ASP与ADO的结合使用开发者很容易地在一个数据库中建立和打开一个记录集。这不无疑是它如此快就被大众接受的因素，因为你现在能使用这些脚本建立和打开一个记录集，处理和输出任何数据，以任何顺序，几乎只要你能想到的，它就能完成。

1998年，微软公司又发布了ASP 2.0 。ASP 1.0和ASP 2.0主要区别外部的组件需要实例化。有了ASP 2.0 和IIS 4.0,我们就有可能建立ASP应用了，而且每个组件就有了自已单独的内存空间。内置的Microsoft Transaction Server(MTS)也使用制做组件便得简单。

#### Windows 2000, COM+ 以及 ASP 3.0

今年初，Windows 2000也来了。 这个Windows版本给我们带上了IIS 5.0 以及 ASP 3.0。此次并不是简单对ASP进行补充，核心的不同实际上是把很多的事情交给了COM来做。在windows 2000中，微软结合了MTS与COM核心环境做出了COM+,这就让主机有了一种新的方法来使用组件，同样给主机带来了更多的稳定性，成了一个可以升级的效率高的工作平台。

IIS 5.0在表面上似乎没有改什么，但是在接口上动的手术比较大。在内部，它使用COM+ 组件服务来对组件提供一个更好的执行的环境。

#### ASP+ 和 the Next Generation Web Services Framework

ASP+中上面所说的一切得到继承。ASP+的内部结构与以前的版本有很大的不同，虽然我们在表面上看不出什么（至少对开发者来说），它的确看起来使用了非常相似的接口。ASP+几乎完全做到了"以组件为基础"，模块化。每个页面，对象以及HTML元素都是一个运行组件对象.

正是因为这样完成有效率，同时提供了升级的方法，管理这些对象是一个必须的重要任务。这个新的运行环境实现了管理自动化（嘿嘿，飞刀学管理的，这个听起来很顺耳），让ASP+"面向对象"更自然。这就使得开发者能够通过访问这些组件建立一个强大的应用程序，就像搭房子一样。

如上，ASP+的面象对象为整个环境提供了可延展性。开发者能够能过新建一个新的组件或继承一个基础类来添加以及延展环境。而在这一切表面的下面，COM运行时就在自动管理这些组件的安装，控制，以及定位。

## Next Generation Web Services Framework

因此，COM+提供了一个操作系统服务的构架。但这还不是全部，ASP+实际上是一个崭新的运行结构的一部分，这个结构提供对所有windows应用程序的支持。这个结构是Microsoft's Next Generation Web Services （ NGWS）关建部分。当你安装了这个结构，你就获得了ASP+。这个结构同样支持所有其它服务器程序技术。

NGWS 结构通过对可升级分布式应用添加 [新的和增强的服务] 来扩展COM的结构，此种结构常用做编写可重复调用的可共同使用的软件组件，这些新的和增强的服务有：

- 一套统一的丰富的程序库
- 一个支持多语言的运行引擎
- 简单地应用建立，调试，以及维护
- 对分布式应用加强了可升级性
- 保护现已存在的软件和投资

我们下面来看看，它是怎样工作的。

### 什么是NGWS Framework?

ASP的综合性能明显的要好于以前的版本。到目前为至，ASP是通过一个名叫asp.dll 的ISAPI DLL来执行的，另外还加上一些系统文件和ASP用户组件。

这个新的NGWS结构反映了行业信息技术观点对于建立，调试以及维护各种WEB服务的需要的转变，这些服务包括简单的客户应用到复杂的分布式结构。上面所有的概念和策略只是 Windows Distributed Internet Applications (DIA)部分结构.

在这里我们最重要需要认识的问题是这里所说的结构（framework)不是我们所说ASP+。它只是做为windows系统中所有应用的基础。下面的图表给我们演示了framework是如何支持ASP+应用的。

NGWS 结构提供一个执行引擎来执行代码，同时对象定向的类和组件组成的族被用做建立应用。它同样扮演着应用程序与核心操作系统之间的接口。你可能会问当应用程序可以很容易地与核心系统对话时为什么还需要这一层呢。原因就是，这一层能够使用应用程序在操作系统得到更好的利用，通过一标准的方法使应用程序更加快速和更利于发展，更加有利于我们现在这个高速发展的商业竞争社会。

为了实现这些目标，这个结构执行许多程序属性或者是指定的程序语言环境（这个自个加）。这些包括碎片的自动收集，丰富的可重复使用的对象库，以及安全的应用。最后一点就这些能在internet上运行 。

#### 通用的 Intermediate Language（IL）

NGWS结构给我们带来的一大好处就是提供了一种不确定语言执行环境（这一段真的不知道怎么说才好英文是anguage-neutral execution environment，大家自已体会吧）。所有的代码（不管是用什么语言写的）统统都编译成标准的intermediate language ( IL) 。结构则生成最终的二进制代码，整理、执行这些应用。这个被编译的IL代码将会一直被用于处理每个用户，直到这个的源文件被改变。

这样无论你是使用VB,C#,JScript,Perl或者是其它能够支持的语言，但是这个IL代码是（也是必须是）唯一的。这种保存在cache中的二进制对象能够提升运行时的效率和伸缩性。

[注意：C＃是微软公司为 Next Generation Web Services framework和ASP+而设计的。它结合了C++的强大、效率高和VB、JScript简单的优点。]

另外一个很有用的东东就是能在一种语言中调用另外一种语言，甚至是可以用一种语言修改使用另一种语言编写的程序。例如，我们能在VB中使用用C＃编写成的对象，我们能够添加它的属性以及方法。事实上，现在，部分framework和全部的ASP+对象模型，内部调用的实现都是采用了C＃，而非C++。

这种新的结构给我们引入了一个真正的多语言开发各种应用程序的平台。

#### 网络应用的基础结构

下面三个部分突出反映了前个图表演示的ASP+执行方法,这些是我们很感兴趣的：

#### 用户接口支持

做为ASP+库的一部分，主机提供了一套丰富的智能控制，它能生成Web-based用户接口便得很加简单。它在利用通用的运行库提高多个高版本（比如IE 4,IE 5)用户的互交性，也能同时生成HTML3.2以向下兼容。同时多个服务控制能够联合起来组成一个新的控制，继承所有控制的属性。

#### 数据访问支持

这种通用运行环境提供了一种新的ADO版本，名叫ADO+，它提供了对数据访问的完整服务,而不无需考虑这种数据的格式。ADO+对相联系的数据引入了一种面向对象的观点，使得开发者更加讯速和方便的访问数据。

ADO+改进了对XML的支持，ADO能够自动把RecordSets(或者DataSets,它现在的名字）与XML自由转换。正如我们看到的，这个对我们使用ASP+开发WEB服务十分的有用。

#### 分布性应用的伸展性

上面的两个用途能使服务器变得强大，伸展性则能保证服务器能在同一时间处理大量的请求。通过随时侦测应用程序和组件的错误，来判断他们是否在使用。这就防止不定错误以及内存溢出的发生，导致服务死机。

这里同样还有许多新的现代化的系统和结构服务，包括内存的自动管理以及垃圾的自动收集，还有自动优化以及明显的安全性。这些属性保证了多个资源的定位和应用程序的执行。

#### 对于现有资源的影响

虽然对于操作系统的内核改动了这么多，但由于维持了原有的Window,COM,ASP.所以在大多数情况下，COM，COM+组件，ASP，以及其它程序都能在NGWS正常工作。你能在你商业需要时，将他们升级。

推荐一本新书，不过是英文的《 A Preview of Active Server Pages +》详细情况请点击此处.

!!!!!!????????时间为凌晨2点46分45秒了，不行了，飞刀熬不下去了，有什么问题，下一次再讲，现在放飞刀我一把吧。