摘要:本文以網(wǎng)站新聞系統(tǒng)的功能設計為例,詳細介紹了ASP.NET技術的先進性,代碼更易于編寫,結構更清晰,程序的可靠性和穩(wěn)定性有了很大的改善和提高,降低了系統(tǒng)的開發(fā)與維護的復雜度。
關鍵詞:ASP.Net;網(wǎng)站;新聞系統(tǒng)
中圖分類號:TP311文獻標識碼:A 文章編號:1009-3044(2008)16-21313-02
Based on ASP.Net technology News Site System
LI Qian
(Lianyungang Technical College,Information Engineering College, Lianyungang 222006,China)
Abstract: The site features information systems designed for example, introduced the advanced nature of ASP.NET technology, code is easier to prepare, structural clarity, reliability and stability of the procedures have greatly improve and enhance and reduce the System development and maintenance of the complexity.
Key words: ASP.Net; Site; news system
1 概述
傳統(tǒng)的網(wǎng)站新聞管理方式有兩種,一是靜態(tài)HTML頁面,此方式因效率太低已不多用。二是基于ASP和腳本語言,將動態(tài)網(wǎng)頁和數(shù)據(jù)庫結合,通過應用程序來處理新聞,這是目前較為流行的做法。但由于ASP本身的局限性使得系統(tǒng)有一些不可克服的缺陷,而采取ASP.NET技術的系統(tǒng)性能上將有很大的改善,其主要表現(xiàn)在以下幾方面:
(1)ASP.NET頁面只需要一次編譯后不需要重新編譯,直到該頁面被修改或Web應用程序重新啟動,這使得在多次訪問時速度有了極大的提升;(2)ASP.NET通過ADO.NET提供的DataGrid等數(shù)據(jù)庫元件可以直接和數(shù)據(jù)庫聯(lián)系;(3)ASP.NET支持應用程序的實時更新。管理員不必關掉網(wǎng)絡服務器或者甚至不用停止應用程序的運行就可以更新應用文件;(4)ASP.NET采取\"code-behind\"方式編寫代碼使得代碼更易于編寫,結構更清晰,降低了系統(tǒng)的開發(fā)與維護的復雜度和費用。
2 系統(tǒng)開發(fā)原理
2.1 基于ASP.NET技術的系統(tǒng)結構模型
ASP.NET結構是一個三層系統(tǒng):UI層、業(yè)務邏輯層和數(shù)據(jù)層。UI層負責與用戶交互,接收用戶的輸入并將服務器端傳來的數(shù)據(jù)呈現(xiàn)給客戶;業(yè)務邏輯層負責接收瀏覽器傳來的請求并將請求傳給數(shù)據(jù)層,同時將請求處理結果發(fā)給瀏覽器。它由Web表單、XMLWeb服務和組件服務組成;數(shù)據(jù)層是通過ADO.NET操縱數(shù)據(jù)為事務邏輯層提供數(shù)據(jù)服務,如存儲數(shù)據(jù)操作結果、返回數(shù)據(jù)檢索結果等。
2.2 ADO.NET訪問數(shù)據(jù)庫的原理
與數(shù)據(jù)庫相連,ADO.NET提供了3種方式:通過ODBC相連;通過OLEDB相連;直接與SQLServer相連。ASP.NET采取了斷開連接方式的數(shù)據(jù)結構。當瀏覽器向Web服務器請求網(wǎng)頁時,服務器處理這個請求,并將所請求的網(wǎng)頁發(fā)送給瀏覽器,然后連接就被斷開,直到瀏覽器發(fā)出下一個請求。ADO.NET的另一個創(chuàng)新是引入了數(shù)據(jù)集(Dataset)。
3 系統(tǒng)功能設計
工作流程為:用戶登錄通過權限判斷,普通用戶只能瀏覽、閱讀和查詢新聞,注冊用戶除了可以完成普通用戶的操作外,還可以進入新聞管理模塊進行新聞錄入、修改和刪除的操作。開發(fā)工具采用MicrosoftVisualStudio.NET和DreamWeaver。
4 系統(tǒng)詳細設計
系統(tǒng)的主要功能是通過幾個功能模塊來實現(xiàn)的。具體的設計過程如下:
(1)系統(tǒng)登錄:該模塊負責將用戶分為普通用戶和注冊用戶來實現(xiàn)用戶權限的管理。
(2)新聞瀏覽:該模塊負責分頁列出網(wǎng)站所有新聞的信息,包括標題、類型、來源部門字段及發(fā)布日期,每條新聞的標題被做成一個超鏈接,點擊即可跳轉頁面進行新聞閱讀。
(3)新聞閱讀:在其他頁面中點擊標題鏈接即進入新聞閱讀頁面。另外,頁面其它位置可以動態(tài)放置如網(wǎng)站標志logo、頁面廣告banner等鏈接圖片,實現(xiàn)圖文并茂的閱讀效果。
(4)新聞查詢:該模塊提供了新聞查詢功能,輸入待查找的內(nèi)容及選定分類信息可以快速地找到符合條件的新聞,并輸出查詢結果。
(5)新聞管理:該模塊負責分頁羅列登錄的注冊用戶曾發(fā)布過且未刪除的新聞信息,用戶可以對該條新聞進行刪除、修改。
(6)新聞錄入和修改:注冊用戶錄入一條新聞所需要的內(nèi)容,包含標題、關鍵字、類型、來源部門、發(fā)布日期等,同時從登錄模塊得到用戶名,這些信息將被寫入數(shù)據(jù)庫中保存。
5 開發(fā)模塊及程序實現(xiàn)
5.1 構建數(shù)據(jù)庫、表結構
使用SQL server 2000建立以下數(shù)據(jù)庫jxdb,含以下兩個數(shù)據(jù)表:
(1)數(shù)據(jù)表News:字段說明如下:(用戶可以根據(jù)需要增減)
(2)數(shù)據(jù)表Reg:用于記錄\"注冊用戶\"信息。字段說明如下:
5.2 程序實現(xiàn)
(1)登錄頁面(Login.aspx),系統(tǒng)將所有用戶分為注冊用戶和訪客兩種:
i.注冊用戶,有新聞錄入權限、管理新聞權限; ii.過客用戶,能夠進入新聞錄入也面,但不具有錄入和管理權限。
(2)錄入頁面(Write.aspx):
\"注冊用戶\"錄入一條新聞所需要的內(nèi)容,包含標題、關鍵字、類型、來源部門、發(fā)布日期等,同時從登錄頁面Login.aspx得到用戶名,這些信息將被寫入數(shù)據(jù)庫中保存。此頁面也被用作編輯狀態(tài)下的\"更新\"頁面,它將根據(jù)取得的Title字段值對頁面控件初始化。
(3)瀏覽頁面(View.aspx)
分頁列出網(wǎng)站所有新聞的信息,包括標題Title字段、類型Type字段、來源部門Fromwhere字段及發(fā)布日期Datetime字段,每條新聞的標題被做成了一個超鏈接,點擊它們將跳轉到新聞閱讀頁面(Read.aspx);此頁面還提供了新聞查詢功能,輸入待查找的內(nèi)容及選定分類信息可以快速地找到符合條件的新聞,并使用此頁面輸出查詢結果。
(4)管理中心頁面(Manage.aspx):分頁羅列登錄用戶曾發(fā)布過且未刪除的新聞信息,用戶可以對該條新聞進行刪除、修改。非新聞發(fā)布者不具有對該條新聞的處理權限,所以不同用戶進入此頁面將顯示不同的內(nèi)容。
5.3 下面以系統(tǒng)登錄頁面的編寫為例給出主要事件和函數(shù),說明該系統(tǒng)的開發(fā)過程。
//IsRegUserOk函數(shù):判斷用戶是否已經(jīng)注冊+密碼是否正確
//建立/打開數(shù)據(jù)庫連接
SqlConnection conn=new SqlConnection();
conn.ConnectionString=\"server=(local);uid=sa;pwd=;database=jxdb\";
conn.Open();
//建立sql字符串
string sql=\"select * from reg where name='\"+name+\"'\";
SqlDataReader dr;
SqlCommand cmd=new SqlCommand(sql,conn);
dr=cmd.ExecuteReader();
//保留用戶注冊與否信息
bool isRegUserExist=dr.Read();
//關閉DataReader
dr.Close();
//取得用戶名的密碼
//保留用戶名+密碼同時存在信息
bool isBothExist=drBoth.Read();
//關閉DataReader
drBoth.Close();
conn.Close();
//判斷用戶是否注冊
//判斷用戶名與密碼是否一致
//IsExistNews函數(shù):判斷新聞表中是否仍存有此用戶發(fā)布過的新聞(下轉第1355頁)
(上接第1314頁)
public bool IsExistNews()
{
SqlConnection conn=new SqlConnection();
conn.ConnectionString=\"server=(local);uid=sa;pwd=;database=jxdb\";
conn.Open();
name=TextBoxName.Text.Trim();
//新聞表中是否存在此用戶
string sql=\"select * from news where Name='\"+name+\"'\";
DataSet ds=new DataSet();
SqlDataAdapter da=new SqlDataAdapter(sql,conn);
da.Fill(ds,\"list\");
//取得新聞行數(shù)
int count=ds.Tables[\"list\"].Rows.Count;
//該用戶是否發(fā)布過新聞
if(count==0)
return 1;
else
return true;
conn.Close();
}
最后給出系統(tǒng)后端數(shù)據(jù)存儲方案:兩個必需的數(shù)據(jù)表,一是數(shù)據(jù)表News包含的字段有:編號、姓名、標題、關鍵字、內(nèi)容、類型、來源部門和日期。二是數(shù)據(jù)表Reg包含的字段有:編號、姓名、密碼、所屬部門、電子郵箱和電話。利用MicrosoftSQLServer2000建立數(shù)據(jù)庫及其存儲過程。
參考文獻:
[1] 天極網(wǎng)新技術研究室.ASP.NET完全入門[M].重慶出版社,2001.
[2] ScottWorley著.ASP.NET技術內(nèi)幕[M].王文龍劉湘寧譯.人民郵電出版社,2002.
[3] 丁晟春,王曰芬.網(wǎng)站新聞發(fā)布管理系統(tǒng)的設計與應用[M].現(xiàn)代圖書情報技術.2002.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文。