余楊奎
(湛江市廣播電視大學(xué),廣東 湛江 524003)
基于ASP.NET“一網(wǎng)+多庫(kù)”平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)*
余楊奎
(湛江市廣播電視大學(xué),廣東 湛江 524003)
“一網(wǎng)+多庫(kù)”是指一個(gè)平臺(tái)連接不同服務(wù)器上的數(shù)據(jù)庫(kù)。以ASP.NET和C#為技術(shù)手段,實(shí)現(xiàn)一個(gè)平臺(tái)連接不同服務(wù)器上的SQL SERVER和MySQL數(shù)據(jù)庫(kù),重點(diǎn)提出.NET三層架構(gòu)。在數(shù)據(jù)層、業(yè)務(wù)層和表示層使用示例代碼分別操作SQL SERVER和MySQL兩種數(shù)據(jù)庫(kù),完成Repeater控件和Pager自定義控件進(jìn)行存儲(chǔ)過(guò)程分頁(yè)。在構(gòu)建Web平臺(tái)實(shí)現(xiàn)資源共享具有一定的指導(dǎo)意義。
開(kāi)發(fā)技術(shù);一網(wǎng)+多庫(kù);存儲(chǔ)過(guò)程;分頁(yè)
“互聯(lián)網(wǎng)+”時(shí)代,現(xiàn)代信息技術(shù)在現(xiàn)實(shí)生活中的應(yīng)用越來(lái)越廣泛,對(duì)Web開(kāi)發(fā)技術(shù)提出更高的要求?!癗網(wǎng)+一庫(kù)”是指一個(gè)數(shù)據(jù)庫(kù)通過(guò)結(jié)構(gòu)化設(shè)計(jì),滿足多個(gè)平臺(tái)連接。“一網(wǎng)+多庫(kù)”是指一個(gè)平臺(tái)連接不同服務(wù)器上的數(shù)據(jù)庫(kù)。本文以一個(gè)平臺(tái)連接不同服務(wù)器上的SQL SERVER和MySQL數(shù)據(jù)庫(kù)開(kāi)發(fā)為例。
筆者在廣播電視大學(xué)從事技術(shù)開(kāi)發(fā)多年,參與湛江終身學(xué)習(xí)網(wǎng)構(gòu)建工作中,接觸Nginx框架反向代理模型構(gòu)建網(wǎng)站群集技術(shù),實(shí)現(xiàn)“N網(wǎng)+一庫(kù)”構(gòu)建學(xué)習(xí)型平臺(tái)?!癗網(wǎng)+一庫(kù)”對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)提出很高的要求,在開(kāi)發(fā)實(shí)踐中我們發(fā)現(xiàn),數(shù)據(jù)庫(kù)的設(shè)計(jì)往往不能滿足需求。廣播電視大學(xué)經(jīng)過(guò)三十多年的沉淀,深度融合信息技術(shù)的教育教學(xué)手段[1]?;鶎与姶蠼Y(jié)合自身特色開(kāi)發(fā)了一系列實(shí)用性平臺(tái),由于缺少?gòu)?qiáng)大的數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)理念,使得平臺(tái)之間沒(méi)有耦合,各自獨(dú)立,從而出現(xiàn)“信息孤島”問(wèn)題。特別是在廣播電視大學(xué)轉(zhuǎn)型升級(jí)為開(kāi)放大學(xué)時(shí)期,不能摒棄過(guò)去優(yōu)質(zhì)的學(xué)習(xí)資源。同時(shí),筆者在開(kāi)發(fā)信融天下P2P網(wǎng)貸系統(tǒng)過(guò)程中發(fā)現(xiàn)網(wǎng)貸系統(tǒng)功能單一,會(huì)出現(xiàn)很多壁壘,阻礙在行業(yè)內(nèi)發(fā)展,P2P平臺(tái)發(fā)展需要更多的功能為平臺(tái)提供支撐,例如:積分功能。網(wǎng)貸系統(tǒng)強(qiáng)調(diào)安全,將這些支撐的子系統(tǒng)數(shù)據(jù)共享到網(wǎng)貸系統(tǒng)數(shù)據(jù)庫(kù)中,可能會(huì)導(dǎo)致數(shù)據(jù)混亂,帶來(lái)不必要的損失。
ASP.NET支持Web應(yīng)用程序開(kāi)發(fā),運(yùn)用了.netframework提供的功能,與PHP、JSP構(gòu)成目前三大主流Web開(kāi)發(fā)技術(shù)。與其他Web開(kāi)發(fā)技術(shù)相比,它打破了不能支持強(qiáng)類型語(yǔ)言編寫的局限,并且支持面向?qū)ο缶幊?。采用ASP.NET技術(shù)進(jìn)行開(kāi)發(fā)的所有Web程序都可以無(wú)限制的支持異??刂?、類型安全、繼承和動(dòng)態(tài)編譯[2]。它使用Visual Studio.NET開(kāi)發(fā),界面友好,支持多種語(yǔ)言,集頁(yè)面、控件、代碼和服務(wù)于一體,技術(shù)成熟,成為眾多Web開(kāi)發(fā)者的首選[3]。JSP和PHP雖然開(kāi)放源代碼,由于英文資料多,對(duì)開(kāi)發(fā)者要求比較高,不容易上手[4]。
筆者采用Browser/Web Server[5]模式,這種結(jié)構(gòu)以HTTP為傳輸協(xié)議,用戶通過(guò)瀏覽器訪問(wèn)數(shù)據(jù),它具有良好的跨平臺(tái)性、可擴(kuò)展性和易更新升級(jí)等優(yōu)點(diǎn)[6]。由IE瀏覽器、服務(wù)器和數(shù)據(jù)庫(kù)組成。平臺(tái)采用ASP.NET三層架構(gòu)開(kāi)發(fā)技術(shù),分別是數(shù)據(jù)層、業(yè)務(wù)層(數(shù)據(jù)訪問(wèn)層DAL層和業(yè)務(wù)邏輯層BLL層)和表示層。在開(kāi)發(fā)過(guò)程中,在業(yè)務(wù)層還會(huì)用到一些輔助類和方法,采用繼承的方式進(jìn)行調(diào)用。如圖1所示。
圖1 架構(gòu)設(shè)計(jì)圖
本文創(chuàng)新點(diǎn)在于,使用ASP.NET技術(shù)連接不同服務(wù)器上的SQL SERVER和MySQL數(shù)據(jù)庫(kù),使用自定義控件pager在表示層進(jìn)行分頁(yè)顯示,解決了業(yè)務(wù)層采用相同方法連接不同數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程完成數(shù)據(jù)調(diào)用的過(guò)程。
數(shù)據(jù)層是最底層,主要負(fù)責(zé)數(shù)據(jù)庫(kù)的連接。本文利用ADO.NET連接不同服務(wù)器上的SQL SERVER和MySQL數(shù)據(jù)庫(kù),完成對(duì)數(shù)據(jù)的操作,在Web.config文件完成對(duì)數(shù)據(jù)連接的配置。關(guān)鍵代碼如下:
業(yè)務(wù)層使用C#語(yǔ)言編寫類,它主要用來(lái)封裝業(yè)務(wù)邏輯和數(shù)據(jù)訪問(wèn)邏輯,因此除了業(yè)務(wù)邏輯層(BLL層)和數(shù)據(jù)訪問(wèn)層(DAL層)以外,還會(huì)有一些具體的實(shí)體類和公用及通用類。為避免過(guò)多出現(xiàn)sqlconnection,mysqlconnection等類和方法,便于維護(hù),微軟提供一些靜態(tài)類sqlHelper.cs和SqlDataProvider.cs來(lái)處理Sql server數(shù)據(jù)庫(kù)的連接。筆者基于這種方式,對(duì)靜態(tài)類進(jìn)行分析,在業(yè)務(wù)層增加MySqlHelper.cs和MySql-DataProvider.cs來(lái)處理Mysql數(shù)據(jù)庫(kù)的連接。
在BLL層用于數(shù)據(jù)業(yè)務(wù)流程,實(shí)現(xiàn)與數(shù)據(jù)訪問(wèn)層數(shù)據(jù)(DAL層)的對(duì)接,用于上下層交互的邏輯處理。在業(yè)務(wù)層設(shè)計(jì)中,業(yè)務(wù)邏輯層(BLL層)本身沒(méi)有太大的意義,可以在BLL層對(duì)相關(guān)類進(jìn)行繼承,然后重載相關(guān)操作。在平臺(tái)架構(gòu)中,筆者選擇分頁(yè)作為代碼示例,在實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)層數(shù)據(jù)對(duì)接后,將查詢結(jié)果存儲(chǔ)在Repeater控件中進(jìn)行分頁(yè)。
在DAL層真正實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的操作,包括對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的查詢、增加、修改、更新和刪除操作。筆者按照BLL層的代碼示例,將DAL層對(duì)應(yīng)代碼展示。
表示層顯示業(yè)務(wù)處理結(jié)果,為用戶實(shí)現(xiàn)人機(jī)交互和平臺(tái)展示,負(fù)責(zé)提供業(yè)務(wù)界面展示,并根據(jù)用戶請(qǐng)求調(diào)用不同的業(yè)務(wù)邏輯[7-9]。在表示層設(shè)計(jì)時(shí)可以根據(jù)用戶所選的控件,通過(guò)GET和SET方法來(lái)完成實(shí)體類屬性的操作,以完成數(shù)據(jù)的獲得與顯示[10]。筆者在本文采用自定義控件pager完成分頁(yè)。
筆者為方便分頁(yè)調(diào)用,將分頁(yè)設(shè)置為自定義控件,一方面可以在各頁(yè)面進(jìn)行調(diào)用,另一方面可以設(shè)置不同的顯示樣式。分頁(yè)自定義控件HTML編碼如下:
本文提出在業(yè)務(wù)層采用相同方法連接不同數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程完成數(shù)據(jù)調(diào)用的過(guò)程,在這里首先要解決存儲(chǔ)過(guò)程分頁(yè)的程序,一方面保證傳輸?shù)膮?shù)一致,另一方面符合相應(yīng)數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程編寫的語(yǔ)法。
傳遞參數(shù)有:in pagesize int,in pageindex int。
本文在Nginx框架反向代理模型構(gòu)建網(wǎng)站群集技術(shù)基礎(chǔ)上,逆向發(fā)散“N網(wǎng)+一庫(kù)”開(kāi)發(fā)平臺(tái)思維,提出“一網(wǎng)+多庫(kù)”技術(shù)方案?;贏SP.NET“一網(wǎng)多庫(kù)”平臺(tái)的設(shè)計(jì),從ASP.NET三層架構(gòu)出發(fā),對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接,通過(guò)sql Server和MySql數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程完成分頁(yè),增加自定義控件來(lái)進(jìn)行分頁(yè)顯示。存儲(chǔ)過(guò)程分頁(yè)優(yōu)勢(shì)在于提高了數(shù)據(jù)讀取的速度,不同于傳統(tǒng)分頁(yè)遍歷整個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù),增加數(shù)據(jù)庫(kù)讀取負(fù)擔(dān)。這項(xiàng)技術(shù)提出的優(yōu)勢(shì)包括:第一,可以為構(gòu)建各種社會(huì)資源的協(xié)同學(xué)習(xí)型平臺(tái)提供有力的技術(shù)保障;第二,在網(wǎng)貸系統(tǒng)開(kāi)發(fā)上,將業(yè)務(wù)邏輯和功能支撐數(shù)據(jù)剝離開(kāi)來(lái),有效提高了網(wǎng)貸系統(tǒng)的安全等級(jí);第三,對(duì)企事業(yè)單位都有內(nèi)網(wǎng)、外網(wǎng)構(gòu)建,在信息顯示方面,提供技術(shù)支持。
在技術(shù)實(shí)踐過(guò)程中筆者發(fā)現(xiàn),“一網(wǎng)+多庫(kù)”技術(shù)單純解決數(shù)據(jù)顯示分頁(yè)是不夠的,大部分?jǐn)?shù)據(jù)信息包含圖片、視頻或音頻資源,還需要進(jìn)行服務(wù)器資源同步。另外,“一網(wǎng)+多庫(kù)”技術(shù)只能將Sql server和MySql數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行歸類顯示,還無(wú)法做到穿插顯示。
[1]李光先.廣東開(kāi)放大學(xué)辦學(xué)特色研究[J].廣東開(kāi)放大學(xué)學(xué)報(bào),2016(6):2-5.
[2]謝振華.基于Asp.net技術(shù)的網(wǎng)站開(kāi)發(fā)架構(gòu)設(shè)計(jì)[J].電腦知識(shí)與技術(shù),2017.2:94-95
[3]李萍,王得燕,楊文珺.ASP(C#)動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)案例教程[M].機(jī)械工業(yè)出版社,2011.
[4]馮菁.ASP.NET中DES算法加密與解密的應(yīng)用[J].陜西理工學(xué)院學(xué)報(bào)(自然科學(xué)版),2017.2:64-68
[5]閆秀婧,鞏文.基于Web的林業(yè)科技信息管理系統(tǒng)的研究與開(kāi)發(fā)[J].北京林業(yè)大學(xué)學(xué)報(bào),2005.S2:195-199
[6]李蘭友,楊曉光編著.ASP.NET實(shí)用程序設(shè)計(jì)[M].清華大學(xué)出版社,2005.
[7]李樹金,羅宏偉.基于.NET的工資查詢系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].軟件導(dǎo)刊,2017100(2):102
[8]王孝明,胡健,陸坤等.基于.NET平臺(tái)可復(fù)用軟件框架的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2004.30(22):76-78
[9]李園,陳世平.MVC設(shè)計(jì)模式在ASP.NET平臺(tái)中的應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),2009.30(7):3180-3184
[10]高楊.基于.NET平臺(tái)的三層架構(gòu)軟件框架的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2017.2:77-80,85
Design and implementation of“one network and multiple databases”platform
Yu Yangkui
(Zhanjiang Radio&TV Univsity,Zhanjiang,Guangdong 524003,China)
"One network and multiple databases"refers to that one platform connects multiple databases which are on different servers.Using ASP.NET and C#as technical means,a platform to connect SQL SERVER and MySQL databases on different servers is realized,and.NET three layer architecture is the emphasis.In the data layer,business layer and presentation layer,the sample codes are used to operate SQL SERVER and MySQL two kinds of databases respectively,to realize the storage procedure paging with the Repeater control and the Pager custom control.It has some guiding significance,in the construction of Web platform to realize the resource sharing.
development technology;one network and multiple databases;storage procedure;paging
TP311.1
A
1006-8228(2017)10-20-05
2017-08-11
2015年度湛江市科學(xué)技術(shù)局重大科技專項(xiàng)“信融天下互聯(lián)網(wǎng)金融P2P網(wǎng)貸系統(tǒng)研發(fā)及平臺(tái)運(yùn)營(yíng)”(15A102)
余楊奎(1983-),男,安徽安慶人,碩士,計(jì)算機(jī)講師,主要研究方向:Web程序開(kāi)發(fā)。
10.16644/j.cnki.cn33-1094/tp.2017.10.007