在講解源碼之前,這里先簡(jiǎn)單說(shuō)說(shuō)系統(tǒng)運(yùn)行的幾個(gè)事項(xiàng)。雖然下載的壓縮包中已經(jīng)包含了簡(jiǎn)單的說(shuō)明,但有一個(gè)重點(diǎn)沒(méi)有強(qiáng)調(diào),也就是雖然這個(gè)系統(tǒng)會(huì)在啟動(dòng)的時(shí)候自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)表結(jié)構(gòu),但他是不能自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)的,因此在啟動(dòng)之前需要自己手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù),比如VifirBlog。
數(shù)據(jù)庫(kù)的配置是在Web.config文件中,在啟動(dòng)應(yīng)用程序時(shí),需要修改Web.config文件中的數(shù)據(jù)庫(kù)配置,把用戶(hù)名及密碼根據(jù)你的情況進(jìn)行修改,數(shù)據(jù)庫(kù)的配置內(nèi)容如下:
<databaseSettings>
<add key="db.datasource" value="(local);Integrated Security=true"/>
<add key="db.user" value="sa"/>
<add key="db.password" value="sa"/>
<add key="db.database" value="vifirblog"/>
<add key="db.generateDdl" value="true"/>
</databaseSettings>
<appSettings>
db.datasource表示數(shù)據(jù)源,默認(rèn)是SQL Server的,當(dāng)然你可以選擇使用MySQL、Oracle等各種數(shù)據(jù)源,其中db.user表示用戶(hù)名,db.password表示密碼,db.database表示數(shù)據(jù)庫(kù)名,db.generateDdl表示是否讓程序啟動(dòng)的時(shí)候自動(dòng)生成表系統(tǒng)所需要的表結(jié)構(gòu)。db.generateDdl默認(rèn)為true,第一次運(yùn)行成功后會(huì)自動(dòng)建表結(jié)構(gòu),然后請(qǐng)手動(dòng)修改成false這樣下次再啟動(dòng)就不會(huì)再建表結(jié)構(gòu)了。
壓縮后的文件結(jié)構(gòu)是一個(gè)VS項(xiàng)目文件,如下圖所示:

如果你機(jī)器上安裝了VS2005(SP1)以上的版本,那么理論上應(yīng)該可以直接雙擊Vifir.Web.sln這個(gè)文件來(lái)實(shí)現(xiàn)在VS中打開(kāi)項(xiàng)目(如果裝的VS版本打不開(kāi)的話(huà),那么你就得好好想辦法了,因?yàn)楸救瞬皇歉?Net的,所以不太清楚為什么,也許其中原因你們比我都專(zhuān)業(yè)),如下圖所示:
項(xiàng)目打開(kāi)后,大家可以直接打開(kāi)Web.config文件,重點(diǎn)看看databaseSettings一節(jié)的配置,確認(rèn)沒(méi)問(wèn)題后,可以直接點(diǎn)擊上面的運(yùn)行按鈕來(lái)運(yùn)行項(xiàng)目。
啟動(dòng)后即可進(jìn)行Blog后臺(tái)管理頁(yè)面的登錄頁(yè)面,演示系統(tǒng)的用戶(hù)名及密碼均為admin,直接輸入后按登錄即可進(jìn)入系統(tǒng)。如下圖所示:
進(jìn)入后可以先進(jìn)入日志目錄管理,程序主區(qū)域會(huì)出現(xiàn)一個(gè)還算漂亮的可編輯表格,可以點(diǎn)擊上面的按鈕添加日志分類(lèi)等,并在右邊的表格中直接編輯各表格薦的內(nèi)容。如下圖所示:
到這里,這個(gè).Net版的程序就算成功跑起來(lái)了。至于系統(tǒng)其它的功能,你就得慢慢體驗(yàn)了,其實(shí)也就是三四天做出來(lái)的一個(gè)小東西,大家可以簡(jiǎn)單看看即可,用Ext做的更多實(shí)用功能(像在線聊天、在線課堂等),可以直接到
http://www.vifir.com/my.html中進(jìn)行實(shí)地體驗(yàn)。下面我們重點(diǎn)對(duì)本項(xiàng)目的代碼作簡(jiǎn)單的解析。
在manage/Default.aspx中,我們沒(méi)有引入任何特殊的服務(wù)器端控件,基本上就是普通的html,注意包含了很多的js文件。其中../plugins/extjs/ext-2.0/adapter/ext/ext-base.js及../plugins/extjs/ext-2.0/ext-all.js是Ext的庫(kù)文,而manage.js、core.js、topic.js、album.js等是我們本系統(tǒng)中編寫(xiě)的ExtJS應(yīng)用文件,那些艷麗的界面都是直接在這些js文件中調(diào)用ExtJS的組件生成的。對(duì)于不熟悉Ext的朋友們來(lái)說(shuō),我推薦直接通過(guò)
《ExtJS實(shí)用開(kāi)發(fā)指南》來(lái)進(jìn)行一個(gè)系統(tǒng)的學(xué)習(xí)、并且可以把《指南》作為日常的參考書(shū)籍。而對(duì)于熟悉Ext并且希望進(jìn)一步提升的朋友們來(lái)說(shuō),我建議你直接看
《Wlr單用戶(hù)Blog系統(tǒng)源碼詳細(xì)開(kāi)發(fā)文檔》,該文檔中包含了對(duì)我們這里用到的manage.js、core.js、topic.js、album.js等文件作了較為詳盡的講解及分析。
由于這里是一個(gè)基于DotNet平臺(tái)的應(yīng)用,因此我們重點(diǎn)來(lái)看看后臺(tái)管理部分。后臺(tái)管理的程序在manage目錄中,包含Album.aspx、AlbumCategory.aspx、Topic.aspx、TopicCategory.aspx、Blog.aspx、Link.aspx、User.aspx、Comment.aspx等等。經(jīng)常搞Asp.Net開(kāi)發(fā)的朋友一定會(huì)迫不急待的點(diǎn)開(kāi)這些擴(kuò)展名為.aspx的文件想看過(guò)究竟,看看這些文件是如何與客戶(hù)端交付、使用了哪些控件、如何產(chǎn)生JSON、如何訪問(wèn)數(shù)據(jù)庫(kù)、SQL語(yǔ)句如何寫(xiě)等。但我想點(diǎn)開(kāi)后你一定會(huì)有所失望了,因?yàn)辄c(diǎn)開(kāi)這些文件后你會(huì)發(fā)現(xiàn)里面幾乎什么東西都沒(méi)有。比如Topic.aspx文件中只包含下面一句大家平時(shí)瞟都不會(huì)瞟一眼的代碼:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Topic.aspx.cs" Inherits="manage_Topic" %>
當(dāng)然,你一定猜到我們一定把處理這些內(nèi)容的東西都放下面的Topic.aspx.cs文件中了,恭喜你,完全正確!我們重點(diǎn)應(yīng)該是看aspx下面的C#類(lèi)文件,比如Topic.aspx.cs,如下圖所示:
Topic.aspx用來(lái)實(shí)現(xiàn)日志的添加、修改、刪除、分頁(yè)查詢(xún)、排序等一系列的功能,我們可以理解為日志管理模塊。
前面的一大堆using我想不用多說(shuō),你應(yīng)該知道就是引入需要用到的包package(或命名空間),其中的System.XX的我想你是見(jiàn)多了,不會(huì)有什么疑問(wèn),而Vifir.XX是本系統(tǒng)的域模型、業(yè)務(wù)邏輯層接口等,另外還包含Vifir的核心類(lèi)庫(kù),你直接像System.XX里面的東西一樣在該用的時(shí)候使用是了。(備注:Vifir.Model是本系統(tǒng)的后臺(tái)業(yè)務(wù)邏輯,如果你是Vifir的VIP用戶(hù),則應(yīng)該還能夠直接下載他的源代碼,我也會(huì)在后面的文章中對(duì)Vifir.Model中的源碼進(jìn)行具體的分析,Vifir.Core是Vifir提供的一個(gè)簡(jiǎn)單Ajax、Ext支持及企業(yè)應(yīng)用快速開(kāi)發(fā)的開(kāi)發(fā)庫(kù),不是開(kāi)源項(xiàng)目,但可以免費(fèi)使用,所以想看他源代碼的就只有加入到Vifir團(tuán)隊(duì)中才有可能了。當(dāng)然,看不到也沒(méi)關(guān)系,想想我們雖然沒(méi)看到System.XX里面的一句代碼,還不是照樣屁顛屁顛地用著!)。
下面我們來(lái)看看類(lèi)的聲明,代碼如下: