從ASP遷移至ASP+

來源:互聯網
上載者:User
asp+ 原作者: 雨晨
最初的考慮(一)

它包括運行平台的配置,pagelet的建立,新的ADO+的使用,如何使用新的DataSet進行資料訪問,HTML表格到DataList的轉變,以及其他多種新的伺服器端控制項的提示……還等什嗎?現在就來感受一下ASP+的全新魅力吧!)

   自從微軟在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事件來完成,現在我們得採取一種稍微不同的方法。


最初的考慮(二)


   運用和在一個單獨模組中建立一個普遍性的串連相同的構想,我們建立了一個Pagelet。Pagelet使開發人員可以建立偽控制項,偽控制項和對象一樣可以用來顯示內容,方法以及事件。我們的方案是:建立一個顯示ConnectToDB方法的Pagelet,該方法返回一個ADOConnection對象(與ADO的文法稍有不同)。我們用下面的代碼建立Pagelet,將它存為connect.aspc(副檔名表明它是一個Pagelet)

   < %@ 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"



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.