| 域名空间 下载中心 社区论坛 信息公告 MY小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
从ASP迁移至ASP+http://www.iyit.net 日期:2006-6-12 2:01:33 来源: 点击: |
作 者 : 雨晨
自从微软在2000年7月的专业开发人员会议上宣布了ASP+以来, 一个相同的问题一直困扰着许多新闻组及讨论论坛:“我需要怎样做以使现有的web应用程序从ASP转换成asp+?” 专业开发人员会议的发言人称:代码方面无须作较大改动,整个转换过程也并不太难。真是这样吗?在本文中,我们将一探究竟。 要运行ASP+的alpha版本,你需要: Windows 2000 Professional server, 或者Advanced Server IIS5.0 Internet Explorer5.5 ..Net框架运行时(.Net Framwork Runtime) (未来发行的ASP+将可以在windows NT及9x上运行) 如果你是一位ASP开发者,你当前使用的技巧如VBScript将轻松转换到Visual Basic .Net来为你的ASP+页面 编写代码。你也可能使用其他的语言如:C#,Managed C++甚至Cobol。 在本文中,我会介绍将一个小型web应用程序从ASP升级到ASP+所需的详细步骤。示例代码使用Visual Basic .Net。 尽管ASP与ASP+可以彼此交互共存,我们还是选择将整个站点迁移至ASP+。被迁移的是一个示例站点,该站点被用来演示入门级的web开发 。我们觉得该站点代表了当前互联网上相当一部分典型的中,小型站点。该站点网址是: http://www.codejunkies.net/eVille/, 它是一个虚拟招生网站, 招收的学生们将学习IT相关课程。该站点架设于Windows2000 Server上,由Access2000数据库驱动,使用VBScript, 客户端JavaScript以及ASP3.0,没有使用COM。 在同一台运行IIS5.0的WEB服务器上,ASP与ASP+被设计成为支持并行运行(最终发行版本将支持IIS其它版本)。这意味着我们可以一次一页地来迁移整个站点。最初的页面仍然可以在ASP3.0下继续运行,而新的页面将被转换成为使用ASP+服务器控件与函数。 我们要做的第一步就是要使IIS能够将default.aspx作为一个有效的缺省文件。这一步相当简单,在Internet Service Manager中: * 打开IIS虚拟目录中的‘属性’对话框 * 点击‘文件’标签中的‘添加’按钮 * 输入Default.aspx * 点击‘确定’两次 做示例用的eVille站点没有使用COM,因此所有的数据访问都是通过ASP或者include文件中的ADO来完成的。我们初始的目标之一就是要将ADO转换成ADO+以获得由ADO+ Managed Provider带来的更好执行效果。ASP+支持传统ADO的使用,然而迁移到ADO+将受益更多。比方说:从单个DataSet中获取多个表(table),更快的执行速度,将数据绑定到服务器控件。ASP+页面中的数据访问可以通过ADO,ADO+或是SQL Managed Provider来完成。由于示例站点没有使用SQL Server,而我们又想对执行进行优化,所以ADO+成了我们最好的选择。 本站的每个页面都涉及到数据访问,所以它将在转换工程中占最大的比例。基本上,每一页都必须作一些代码修改以获取并显示该页所需的数据。在eVille的结构中有一个connect.inc文件,该文件包含ADO连接代码,并且每个页面中都有该文件。连接已经建好并且可以使用了。由于在ASP+中,连接到数据库和绑定到ASP+数据控件的过程由新的Page_Load事件来完成,现在我们得采取一种稍微不同的方法。
< %@ Import Namespace="System.Data" %> < %@ Import Namespace="System.Data.ADO" %> < script language="VB" runat="server"> Public Function ConnectToDB() As ADOConnection ConnectToDB = New ADOConnection("DSN=evilleDSN") End Function < /script> 你会注意到我们导入了两个Namespaces,即System.Data和System.Data.ADO。为了使用ADO+ Managed Provider这些Namespaces是必须的。许多人就此问了我许多问题,因为目前多数示例都使用基于Microsoft SQL Server 2000数据库的SQL Managed Provider。对于非SQL Server 数据库,ASP+可以使用ADO+ Managed Provider,这和目前你在程序中使用ADO的方式大致相同。导入Namespaces和在VB程序中创建参考(Reference)有异曲同工之妙。 Pagelet的运用使我可以维护当前的站点计划,一旦在模块中创建了连接,我们就可在任何需要的地方重用模块。这意味着我们需要用Pagelet的一个实例来替代Include文件指令,然后当我们需要数据库连接时调用ConnectToDB方法。在需要使用Pagelet的页面中,我们首先必须使用ASP+指令将之与该页面注册(register)。在指令中,我们定义TagPrefix,TagName,以及Source(src)。与ASP中的include文件类似,在我们放置Pagelet的地方要用到TagPrefix和TagName。 < %@ Register TagPrefix="seven" TagName="Connect" src="_includes/connect.aspc" %> 放置我们刚注册的Pagelet的方法与ASP+服务器控件类似: < [TagPrefix]:[TagName] id=myPagelet runat=server /> 比如: < seven:Connect id=Connect runat=server /> 在ADO+中,记录集(Recordset)的概念被DataSets和DataViews的组合所取代。一会儿我们将讨论这两个概念。首先让我们看看在default.asp页面迁移至default.aspx(ASP+页面的后缀)后代码都有了哪些改变。先看default.asp: < !-- #include file="_includes/connect.inc" --> < % Dim cnEville_DB, rsUpcoming, strSqlUpcoming Set rsUpcoming = Server.CreateObject("ADODB.Recordset") strSqlUpcoming = " SELECT TOP 2 " & _ "Classes.Title, Sessions.Session_ID, " & _ "Sessions.Special, Classes.Description " & _ "FROM Classes INNER JOIN Sessions ON " & _ "Classes.Class_ID = Sessions.ClassID " & _ "WHERE (((Sessions.Date)>Date())) " & _ "ORDER BY Sessions.Date" rsUpcoming.Open strSqlUpcoming,cnEville_DB %> 在ASP+中成了default.aspx: < %@ Import Namespace="System.Data" %> < %@ Import Namespace="System.Data.ADO" %> < %@ Register TagPrefix="seven" TagName="Connect" &_ src="_includes/connect.aspc" %> < script language="vb" runat=server> Sub Page_Load(Source As Object, E As EventArgs) Dim dscUpcoming As ADODataSetCommand Dim dsUpcoming As New DataSet Dim strSQL As String strSQL = "SELECT TOP 2 Classes.Title," & _ "Sessions.Session_ID, Classes.Description " & _ "FROM Classes INNER JOIN Sessions ON " & _ "Classes.Class_ID = Sessions.ClassID " & _ "WHERE (((Sessions.Date)>Date())) " & _ "ORDER BY Sessions.Date" dscUpcoming = New ADODataSetCommand(strSQL, Connect.ConnectToDB()) dscUpcoming.FillDataSet(dsUpcoming, "Upcoming") End Sub < /script> 数据访问的核心,ANSI-SQL语句在转换后没有什么改变。然而正如你所看到的,创建记录集的结构发生了改变,我们使用的是ADODataSetCommand和DataSet。 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:从ASP迁移至ASP+ ----------进入DataSet 下一篇:[ASP.NET] Session 详解 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 最新更新 | 热点排行 | 推荐新闻 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||