Nile 基准测试的两种实现方法提供了同样的功能,并依赖于同一个底层 SQL Server 存储过程。但是,由于 Visual Basic 6/ASP 和 Visual Basic .NET/.NET Framework 的主要体系结构/API 之间存在较大差异,因此应用程序的中间层完全不同。下表列出了它们之间的共同点和不同点。
表 2:Visual Basic 6.0 实现方案与 Visual Basic .NET 实现方案的比较
范围 Visual Basic .NET Visual Basic 6/ASP UI - 显示 HTML 4.0 HTML 4.0 UI - 处理 ASP.NET (Visual Basic .NET) 和内含代码的 Web 窗体 HTML 中的 ASP 和内联 ASP 脚本 中间层 Visual Basic .NET 程序集和作为可编程组件提供的对象 Visual Basic 6 COM 组件和作为可编程组件提供的对象 数据层 SQL Server 存储过程 SQL Server 存储过程(与 Visual Basic .NET 的存储过程相同) 会话状态 ASP.NET 会话对象(群集安全) 数据库(只有 ASP 存在群集安全机制) 数据访问/驱动程序 ADO.NET 通过本机 .NET SQL Server 提供程序 ADO 通过 OLE DB SQL Server 提供程序 HTTP 服务器 IIS 6.0/IIS 5.0 IIS 6.0/IIS 5.0 数据库服务器/操作系统 SQL Server 2000/Windows 2000 SQL Server 2000/Windows 2000Visual Basic .NET 实现方案和 Visual Basic 6/ASP 实现方案的体系结构比较
性能数据本身说明了明显的差异,但这些数据并未说明使用 ASP 在 Visual Basic 6 中构建 Nile 应用程序和使用 Visual Basic .NET 构建 Nile 应用程序的区别。就所用的工具或技术来说,两种实现方案都可以认为是“最佳方法”,但它们在实现上有着本质的区别,因为 Visual Basic 6 和 ASP 并不具备某些 .NET 核心功能。以下是主要的不同之处:
- 面向对象。Visual Basic 6 是基于对象的,但与 Visual Basic .NET 不同,它不是真正的面向对象。尽管围绕面向对象编程这一话题还有很多不实之辞,但 Nile 实现方案确实证明,正确地使用面向对象可以简化使用 Visual Basic .NET 编写代码的过程。例如,在 Visual Basic 6 中,Nile 应用程序使用 COM 对象从数据库中检索数据,然后 ASP 页面通过 Active Server Page 将数据逐字“分”到 HTML 中。而 Visual Basic .NET 不仅使用明确定义的对象(封装在 .NET 程序集中)从数据库中获取数据,还使用对象清晰地表示检索到的数据。例如,用 ProductInfo 类来表示数据库中的一行数据(对象关系映射)。ASP.NET 不需要在 HTML 页面中嵌入任何内置脚本,就可以简单地将表示搜索结果(或购物车中的东西)的对象数组绑定到 ASPX 页面的 databound 服务器控件。这样编写出来的代码简洁易懂。使用丰富的 .NET Windows 窗体还可以方便地重复使用中间层,而且对象中的 ADO.NET 记录集抽象意味着当数据库改变时(例如从 SQL Server 2000 转换为 Oracle),不需要改变 UI 层。
- Web 窗体及内含代码。在 ASP.NET 中,UI 处理代码独立于 HTML 页面,位于单独的内含代码文件中,而 ASP 要求内联代码直接与 HTML 页面混合。另外,Web 窗体的事件驱动模型使得 .NET 代码的编写和理解更加容易。例如,当用户单击按钮时,ASP.NET 页面中的服务器端事件处理程序将自动进行处理。在 ASP 中,开发人员必须编写代码来处理提交表单或检索查询字符串变量,这样才能理解用户所请求的操作。
- 在群集中使用 Session 对象的功能。由于购物车必须是群集安全的,因此在 ASP 中无法使用 Session 对象来实现购物车。在 ASP 中,Session 对象始终处于 Web Server 进程内,多个 Web 服务器无法将用户映射回各自的购物车(尽管可以使用客户相似性,但无法实现故障转移,因为服务器是从群集中移去或添加上去的,可能会丢失一些用户的会话状态)。但在 ASP.NET 中则不再有此限制。Session 对象可以很容易地从进程内映射到中央专用状态服务器或中央 RDBMS 数据库。因此,ASP.NET 版本使用 Session 对象来存储各用户的购物车对象。购物车类被标记为可序列化,以便可以通过网络传递或写入到数据库。ASP 版本必须在自定义的数据库处理例程中实现购物车,这样才能实现群集安全。
- 使用一种集成工具来构建应用程序。Visual Studio.NET 为应用程序的各个方面提供了一个集成开发环境,包括带 HTML 的 Web 窗体、中间层程序集,甚至是数据库存储过程。而 Visual Studio 6.0 要求在用于 HTML/ASP 逻辑的 Visual InterDev 6.0 IDE 和用于中间层 COM 组件的 Visual Basic 6.0 IDE 之间进行转换。
与 Visual Basic 6/ASP 实现方案相比,这些只是 Visual Basic .NET 实现方案的关键体系结构优势。您可以下载代码并安装这两种应用程序,仔细比较它们之间的相同和不同之处。




