沈 軍 朱亦鋼
摘 要:材料性能數(shù)據(jù)庫(kù)檢索系統(tǒng)的研究與開(kāi)發(fā)是工業(yè)現(xiàn)代化的重要方面。介紹了一個(gè)針對(duì)金屬材料性能試驗(yàn)數(shù)據(jù)的特性,綜合運(yùn)用ASP.NET 2.0技術(shù)、軟件的三層框架理論和設(shè)計(jì)模式的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)檢索系統(tǒng)設(shè)計(jì)。重點(diǎn)討論數(shù)據(jù)庫(kù)的結(jié)構(gòu),分析系統(tǒng)軟件采用的基于ASP.NET 2.0的三層(數(shù)據(jù)層、業(yè)務(wù)邏輯層、表現(xiàn)層)架構(gòu)模式的特點(diǎn),并對(duì)應(yīng)用設(shè)計(jì)模式的實(shí)現(xiàn)過(guò)程和繪制曲線圖功能進(jìn)行闡述。該系統(tǒng)在.NET平臺(tái)下采用企業(yè)級(jí)易于擴(kuò)展的Web數(shù)據(jù)庫(kù)集成與實(shí)現(xiàn)模式,且具有操作簡(jiǎn)單,運(yùn)行效率高,易維護(hù)的特點(diǎn)。
關(guān)鍵詞:數(shù)據(jù)庫(kù);ASP.NET 2.0;三層架構(gòu);設(shè)計(jì)模式
中圖分類(lèi)號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004-373X(2009)10-005-03
Design of Query System of Material Property Database Based on ASP.NET 2.0
SHEN Jun,ZHU Yigang
(Institute of Aeronautical Materials,Beijing,100095,China)
Abstract:Scientific researchers worked on the mechanical properties of materials always need to work with data.According to the characteristics of the metal material performance test data,a network database system has been developed based on APS.NET 2.0,design patterns in multiplayer architecture.The database logical relations and the physical structure design thoroughly are analyzed firstly.Multiplayer architecture have been investigated.The application of design patterns in data layer and curve diagram drawing functions is discussed in detail.Using the model,a web database publishing model is proposed,which is oriented for corporations and enterprises.This system has very flexible and exerciables.
Keywords:database;ASP.NET 2.0;multiplayer architecture;design pattern
0 引 言
在現(xiàn)代飛機(jī)研制中,一項(xiàng)優(yōu)秀的設(shè)計(jì)方案應(yīng)該建立在先進(jìn)的設(shè)計(jì)思想、精確的計(jì)算和雄厚的數(shù)據(jù)基礎(chǔ)上。結(jié)構(gòu)分析、疲勞分析和計(jì)算流體動(dòng)態(tài)分析等項(xiàng)工作必須依賴大量的材料性能數(shù)據(jù)。材料數(shù)據(jù)庫(kù)技術(shù)是以存取材料性能數(shù)據(jù)為主要內(nèi)容的數(shù)值數(shù)據(jù)庫(kù)。計(jì)算機(jī)化的材料性能數(shù)據(jù)庫(kù)具有一系列優(yōu)點(diǎn):如存貯信息量大,存取速度快,查詢方便,使用靈活。此外它還具有多種功能:如圖形表達(dá)及數(shù)據(jù)分析等。目前已獲得廣泛應(yīng)用,并可以與工程軟件配套使用。
1 系統(tǒng)總體方案設(shè)計(jì)
金屬材料性能數(shù)據(jù)庫(kù)檢索系統(tǒng)是為滿足材料研究和設(shè)計(jì)人員的需要而設(shè)計(jì)的。它采用B/S結(jié)構(gòu)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的訪問(wèn)??紤]到通用性、運(yùn)行效果及實(shí)現(xiàn)成本的因素,系統(tǒng)開(kāi)發(fā)平臺(tái)依托建立企業(yè)級(jí)網(wǎng)絡(luò)數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)平臺(tái),即微軟公司.NET Framework 2.0和IIS+ASP.NET 2.0的網(wǎng)絡(luò)數(shù)據(jù)庫(kù)解決方案來(lái)實(shí)現(xiàn),開(kāi)發(fā)工具采用Visual Studio 2005,編程語(yǔ)言采用C#。數(shù)據(jù)庫(kù)管理系統(tǒng)通過(guò)SQL Server 2000構(gòu)建。
ASP.NET 2.0是ASP.NET的最新版本,它在1.0的基礎(chǔ)上有了很大改進(jìn),主要技術(shù)特性體現(xiàn)在控件、頁(yè)面框架、服務(wù)三個(gè)部分。在控件部分新增了數(shù)據(jù)控件(數(shù)據(jù)源控件和數(shù)據(jù)綁定控件)、登錄控件、站點(diǎn)導(dǎo)航控件等,用于提高開(kāi)發(fā)效率。在頁(yè)面框架部分新增了母版頁(yè)、主題和皮膚,用于統(tǒng)一Web網(wǎng)站頁(yè)面風(fēng)格。在服務(wù)部分新增了成員資格管理、角色管理等,用于保障Web站點(diǎn)的安全[1,2]。
2 數(shù)據(jù)庫(kù)的設(shè)計(jì)
數(shù)據(jù)庫(kù)設(shè)計(jì)主要根據(jù)金屬材料性能數(shù)據(jù)的特點(diǎn),針對(duì)靜力性能、疲勞/耐久性能、損傷容限性能、腐蝕環(huán)境性能和特殊載荷譜下的性能試驗(yàn)數(shù)據(jù)特點(diǎn),結(jié)合關(guān)系型數(shù)據(jù)庫(kù)結(jié)構(gòu)的要求,采用實(shí)體關(guān)系E-R數(shù)據(jù)模型的設(shè)計(jì)方法,對(duì)數(shù)據(jù)庫(kù)進(jìn)行概念設(shè)計(jì),以減少數(shù)據(jù)冗余,以及以符合數(shù)據(jù)庫(kù)的范為目的進(jìn)行物理設(shè)計(jì),最終建立規(guī)范的關(guān)系型數(shù)據(jù)庫(kù)。對(duì)于本材料性能數(shù)據(jù)庫(kù),主要包括的數(shù)據(jù)是材料背景及相應(yīng)的試驗(yàn)數(shù)據(jù)。
數(shù)據(jù)庫(kù)的實(shí)體關(guān)系(E-R模型)由材料、試驗(yàn)任務(wù)、試驗(yàn)數(shù)據(jù)三類(lèi)實(shí)體構(gòu)成。材料產(chǎn)品實(shí)體包括進(jìn)行試驗(yàn)的材料產(chǎn)品方面的屬性(如材料牌號(hào)、材料品種、材料批次、狀態(tài)、生產(chǎn)廠等)。試驗(yàn)任務(wù)實(shí)體包括試樣屬性(如取樣方向等)和試驗(yàn)條件屬性(如試驗(yàn)溫度、試驗(yàn)環(huán)境參數(shù)等),不同性能試驗(yàn)的試驗(yàn)任務(wù)實(shí)體通常具有不同的試驗(yàn)條件。試驗(yàn)數(shù)據(jù)實(shí)體描述通過(guò)對(duì)每個(gè)試樣個(gè)體按照試驗(yàn)任務(wù)的要求進(jìn)行性能試驗(yàn)后得到的試驗(yàn)數(shù)據(jù)信息。材料實(shí)體和試驗(yàn)任務(wù)、試驗(yàn)任務(wù)和試驗(yàn)數(shù)據(jù)實(shí)體之間是一對(duì)多的關(guān)系。E-R模型如圖1所示。
表結(jié)構(gòu)設(shè)計(jì)主要是根據(jù)E-R模型,把數(shù)據(jù)切分成邏輯上相互關(guān)聯(lián)、結(jié)構(gòu)上相互獨(dú)立的表結(jié)構(gòu)[3]。為保證數(shù)據(jù)庫(kù)各表間,數(shù)據(jù)的完整性和一致性,還設(shè)定了實(shí)體完整性約束、域完整性和參考完整性。根據(jù)表結(jié)構(gòu)編寫(xiě)了相應(yīng)的SQL數(shù)據(jù)庫(kù)腳本,在SQL Server 2000中實(shí)現(xiàn)了計(jì)算機(jī)數(shù)據(jù)庫(kù)的物理設(shè)計(jì)[4,5]。表結(jié)構(gòu)由材料信息表、力學(xué)性能的試驗(yàn)任務(wù)表和試驗(yàn)數(shù)據(jù)表組成。在設(shè)計(jì)時(shí)把整個(gè)試驗(yàn)任務(wù)實(shí)體按15種性能種類(lèi)進(jìn)行分解,包括拉伸、壓縮、沖擊、剪切、扭轉(zhuǎn)、硬度、疲勞、裂紋擴(kuò)展、斷裂韌度、持久、蠕變、應(yīng)力腐蝕、譜載疲勞、譜載裂紋擴(kuò)展、細(xì)節(jié)疲勞額定強(qiáng)度。材料信息表的材料序號(hào)字段為主鍵,各個(gè)性能試驗(yàn)任務(wù)表的試驗(yàn)序號(hào)字段為主鍵、外鍵是材料序號(hào)字段,試驗(yàn)數(shù)據(jù)表的試樣序號(hào)字段為主鍵、外鍵是試驗(yàn)序號(hào)字段。
3 應(yīng)用軟件的設(shè)計(jì)
3.1 體系結(jié)構(gòu)設(shè)計(jì)
采用ASP.NET 2.0技術(shù)在.NET平臺(tái)可以快速方便地實(shí)現(xiàn)系統(tǒng)三層架構(gòu),其中表現(xiàn)層放在ASP頁(yè)面中,數(shù)據(jù)庫(kù)操作和邏輯層用組件來(lái)實(shí)現(xiàn)。在ASP.NET 2.0中典型的三層架構(gòu)包括:Web 表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)訪問(wèn)層[6-8]。
數(shù)據(jù)訪問(wèn)層是訪問(wèn)數(shù)據(jù)庫(kù)可重用的接口,由數(shù)據(jù)訪問(wèn)邏輯組件和業(yè)務(wù)實(shí)體組成。其中,數(shù)據(jù)訪問(wèn)邏輯組件包括業(yè)務(wù)實(shí)體方法和數(shù)據(jù)訪問(wèn)助手;業(yè)務(wù)實(shí)體方法處理實(shí)體數(shù)據(jù),數(shù)據(jù)訪問(wèn)助手處理與數(shù)據(jù)庫(kù)的相關(guān)操作。業(yè)務(wù)實(shí)體用于映射關(guān)系型數(shù)據(jù)庫(kù)中的數(shù)據(jù),即使用對(duì)象的形式表現(xiàn)數(shù)據(jù)庫(kù)中的表,實(shí)現(xiàn)了將數(shù)據(jù)轉(zhuǎn)化為對(duì)象的功能。數(shù)據(jù)訪問(wèn)層從業(yè)務(wù)邏輯層接收請(qǐng)求,并執(zhí)行從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)或向數(shù)據(jù)庫(kù)發(fā)送數(shù)據(jù)的功能。
業(yè)務(wù)邏輯層把數(shù)據(jù)轉(zhuǎn)換成了符合業(yè)務(wù)規(guī)則的有意義信息,即數(shù)據(jù)檢索的規(guī)則放在這一層。系統(tǒng)的業(yè)務(wù)規(guī)則從表現(xiàn)層接受請(qǐng)求,根據(jù)編碼的業(yè)務(wù)規(guī)則處理請(qǐng)求,從數(shù)據(jù)訪問(wèn)層獲取數(shù)據(jù)或?qū)?shù)據(jù)發(fā)送到數(shù)據(jù)訪問(wèn)層,將處理結(jié)果傳遞回表現(xiàn)層。
表現(xiàn)層把信息轉(zhuǎn)換成對(duì)用戶有意義的內(nèi)容,它是指在應(yīng)用程序中實(shí)現(xiàn)的客戶端。顯示層放在ASP.NET頁(yè)面中,管理Web頁(yè)的呈現(xiàn)和行為,向業(yè)務(wù)邏輯層發(fā)送用戶輸入,從業(yè)務(wù)邏輯層接收結(jié)果等。該系統(tǒng)采用了三層結(jié)構(gòu),提供了清晰的分離結(jié)構(gòu)和代碼封裝,使程序內(nèi)聚程度高,耦合低,易于擴(kuò)展、維護(hù)和重用[9-11]。三層架構(gòu)如圖2所示。
3.2 功能設(shè)計(jì)
系統(tǒng)流程分為三個(gè)階段,即材料篩選導(dǎo)航、選擇性能、定位相應(yīng)試驗(yàn)數(shù)據(jù),最終獲得查詢結(jié)果。相應(yīng)的性能數(shù)據(jù)檢索主要由條件選擇和試驗(yàn)數(shù)據(jù)呈現(xiàn)兩大模塊構(gòu)成。在條件模塊選擇部分,用戶按材料牌號(hào)、品種、狀態(tài)、規(guī)格的順序依次選擇檢索條件。系統(tǒng)根據(jù)用戶選定的條件顯示材料信息表,用戶選定相應(yīng)的材料信息,系統(tǒng)顯示該材料信息涵蓋的性能種類(lèi)信息表,用戶選定要檢索的性能種類(lèi)。在試驗(yàn)數(shù)據(jù)呈現(xiàn)部分,顯示該性能種類(lèi)下試驗(yàn)信息表,用戶選定相應(yīng)的試驗(yàn)條件,系統(tǒng)顯示相應(yīng)的試驗(yàn)結(jié)果表,并具備導(dǎo)出到Excel的功能,另外高周疲勞顯示應(yīng)力(Y值)與循環(huán)周數(shù)(X值)的散點(diǎn)圖,裂紋擴(kuò)展顯示da/dn與ΔK的散點(diǎn)圖,拉伸顯示平均應(yīng)力應(yīng)變曲線,應(yīng)變疲勞顯示(Δε/2)-2Nf曲線。
3.3 代碼的設(shè)計(jì)
3.3.1 三層架構(gòu)應(yīng)用設(shè)計(jì)模式
(1) 設(shè)計(jì)模式。
設(shè)計(jì)模式是一套被反復(fù)使用、經(jīng)過(guò)分類(lèi)編目、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼,讓代碼更容易被他人理解,保證代碼可靠性[12]。根據(jù)完成工作的不同設(shè)計(jì)模式,可以分為創(chuàng)建型模式、結(jié)構(gòu)型模式、行為型模式三大類(lèi)。這些模式刻畫(huà)了在運(yùn)行時(shí)刻難以跟蹤的復(fù)雜控制流。其中,創(chuàng)建型模式與對(duì)象的創(chuàng)建有關(guān),即描述怎樣創(chuàng)建一個(gè)對(duì)象,它隱藏對(duì)象創(chuàng)建的具體細(xì)節(jié),使程序代碼不依賴具體的對(duì)象。
(2) 簡(jiǎn)單工廠模式在數(shù)據(jù)訪問(wèn)層的應(yīng)用。
抽象工廠模式是一種創(chuàng)建型的模式,用于當(dāng)需要返回一系列相關(guān)類(lèi)中的某一個(gè),而每個(gè)類(lèi)都能根據(jù)需要返回不同的對(duì)象。簡(jiǎn)單工廠模式是其簡(jiǎn)化版,只需調(diào)用工廠類(lèi)中的方法,就可以創(chuàng)建相關(guān)的產(chǎn)品類(lèi)實(shí)例。這種面向接口的編程技術(shù),為創(chuàng)建不同產(chǎn)品實(shí)例提供很大方便。
該系統(tǒng)軟件的數(shù)據(jù)訪問(wèn)層應(yīng)用簡(jiǎn)單工廠模式,包括工廠類(lèi)、抽象產(chǎn)品接口、具體產(chǎn)品類(lèi)、實(shí)體類(lèi)、數(shù)據(jù)訪問(wèn)輔助項(xiàng)目。業(yè)務(wù)邏輯層調(diào)用工廠類(lèi),創(chuàng)建抽象產(chǎn)品接口,然后調(diào)用這個(gè)接口的方法返回業(yè)務(wù)實(shí)體類(lèi)的實(shí)例。具體過(guò)程如下:
工廠類(lèi)采用依賴注入,根據(jù)數(shù)據(jù)存儲(chǔ)來(lái)配置應(yīng)用程序,使用配置文件結(jié)合反射技術(shù)。將應(yīng)用程序依賴的組件在運(yùn)行時(shí)注入給應(yīng)用中,針對(duì)SQL Server數(shù)據(jù)庫(kù),并可以擴(kuò)展加載Oracle數(shù)據(jù)庫(kù)。抽象產(chǎn)品接口將對(duì)象的定義與實(shí)現(xiàn)分離,在接口中聲明了成員方法,但不包括具體實(shí)現(xiàn)內(nèi)容。具體產(chǎn)品類(lèi)調(diào)用數(shù)據(jù)訪問(wèn)輔助類(lèi)(微軟公司提供的公共模塊),實(shí)現(xiàn)抽象產(chǎn)品接口中定義的方法。業(yè)務(wù)實(shí)體就是把數(shù)據(jù)表結(jié)合業(yè)務(wù)規(guī)則抽象為類(lèi),數(shù)據(jù)表中的字段都抽象為類(lèi)的屬性。工廠類(lèi)代碼舉例如下:
namespace DALFactory
{ public sealed class DataAccess
{ private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
public static IDAL.IDALChartInfo CreateChartInfo()
{ string className = path + ".DALChartXYInfo";
return(IDAL.IDALChartInfo)Assembly.Load(path).CreateInstance(className);}
3.3.2 曲線作圖模塊的設(shè)計(jì)
ASP.NET有一個(gè)內(nèi)建的圖形工具庫(kù),即system.drawing名稱(chēng)空間的gdi+,不過(guò)它屬于低級(jí)的api,算不上繪制圖表的引擎。因此采用優(yōu)秀的服務(wù)器端圖表引擎Office 2003 Web 組件,即OWC 11作為曲線繪制模塊的基礎(chǔ),它具有與Excel同樣強(qiáng)大的圖表繪制能力,能在服務(wù)器上動(dòng)態(tài)創(chuàng)建圖表。
曲線作圖模塊的具體設(shè)計(jì)方案是將曲線圖所需的數(shù)據(jù)表的數(shù)據(jù)填充到基于Office 2003 自建的曲線作圖類(lèi),然后將曲線圖以gif圖形的形式保存在服務(wù)器上,用Image控件顯示該圖。這種圖形實(shí)現(xiàn)技術(shù)對(duì)客戶端沒(méi)有特殊的要求,只要能夠顯示gif圖形就可以顯示曲線圖。
在自建的曲線作圖類(lèi)中,主要是創(chuàng)建一個(gè)圖形容器對(duì)象,在圖形容器中增加圖形對(duì)象。以散點(diǎn)圖為例,將圖形的類(lèi)型設(shè)置為散點(diǎn)圖,添加一個(gè)series,給定x,y值,設(shè)置刻度,使用Microsoft.Office.Interop.Owc11.ChartSpace類(lèi)ExportPicture方法輸出圖形文件。核心代碼如下:
using Microsoft.Office.Interop.Owc11;
ChartSpace ThisChart = new ChartSpaceClass();
ChChart ThisChChart=ThisChart.Charts.Add(0);
ChSeries ThisChSeries = ThisChChart.SeriesCollection.Add(0);
//指定為散點(diǎn)圖
ThisChChart.Type=ChartChartTypeEnum.chChartTypeScatterMarkers
//給定series的名字
ThisChSeries.SetData(ChartDimensionsEnum.chDimSeriesNames,ChartSpecialDataSourcesEnum.chDataLiteral.GetHashCode(),m_SeriesName);
{ //數(shù)據(jù)表的第0列即屬性m_Category為y,第1列即屬性m_Value為x
ThisChSeries.SetData(ChartDimensionsEnum.chDimXValues,(int)ChartSpecialDataSourcesEnum.chDataLiteral,m_Value);
ThisChSeries.SetData(ChartDimensionsEnum.chDimYValues,(int)ChartSpecialDataSourcesEnum.chDataLiteral,m_Category);
//刻度設(shè)置,x軸設(shè)為對(duì)數(shù)刻度。
ThisChChart.Axes[1].Scaling.Type =
ChartScaleTypeEnum.chScaleTypeLogarithmic;
//對(duì)數(shù)主刻度的主單位
ThisChChart.Axes[1].Scaling.LogBase = 10;}
4 結(jié) 語(yǔ)
基于ASP.NET 2.0技術(shù),采用三層架構(gòu)和B/S體系,建立的金屬材料性能數(shù)據(jù)庫(kù)檢索系統(tǒng)是一個(gè)操作簡(jiǎn)單,運(yùn)行效率高,易維護(hù)的系統(tǒng)。它是按材料性能的特點(diǎn)建立的,將材料研究工程中產(chǎn)生的科學(xué)數(shù)據(jù)通過(guò)電子化數(shù)據(jù)庫(kù)方式有效保存,實(shí)現(xiàn)資源的共享,并為相關(guān)的材料研究單位、飛機(jī)設(shè)計(jì)單位提供檢索最新材料性能試驗(yàn)數(shù)據(jù)的途徑,提高了性能數(shù)據(jù)的利用效能。
參考文獻(xiàn)
[1]郝剛.ASP.NET 2.0開(kāi)發(fā)指南[M].北京:人民郵電出版社,2006.
[2]陳冠軍.精通ASP.NET 2.0企業(yè)級(jí)項(xiàng)目開(kāi)發(fā)[M].北京:人民郵電出版社,2007.
[3]羊海棠,楊瑞成,袁曉波,等.耐磨料磨損材料數(shù)據(jù)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)[J].材料科學(xué)與工藝,2006,14(4):345-348.
[4]易當(dāng)祥,呂國(guó)志,姚磊江,等.陶瓷基復(fù)合材料數(shù)據(jù)庫(kù)系統(tǒng)的實(shí)現(xiàn)與應(yīng)用[J].機(jī)械工程材料,2005,29(7):68-70.
[5]姚磊江,童小燕,呂勝利,等.C/SiC復(fù)合材料數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)[J].西北工業(yè)大學(xué)學(xué)報(bào),2005,23(4):426-429.
[6]曾廣平,宋中山.數(shù)據(jù)庫(kù)進(jìn)化設(shè)計(jì)的敏捷實(shí)施[J].微計(jì)算機(jī)信息,2006,22(11):201-203.
[7]王敏麗.用C/S與B/S技術(shù)進(jìn)行N層體系架構(gòu)的實(shí)現(xiàn)方法研究[J].浙江理工大學(xué)學(xué)報(bào),2006,23(3):331-335.
[8]張慧翔,張新家.一種業(yè)務(wù)邏輯可重構(gòu)的三層應(yīng)用服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2006,26(4):853-856.
[9]易寶林,譚支鵬,馮丹.數(shù)據(jù)庫(kù)訪問(wèn)柔性中間件的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2006,23(11):166-169.
[10]胡順.三層結(jié)構(gòu)在.NET中的應(yīng)用[J].中國(guó)科技信息,2005,23(4):426-429.
[11]徐繪宏,潘懋,宋揚(yáng),等.一種構(gòu)建3D GIS應(yīng)用的三層結(jié)構(gòu)方法探討[J].計(jì)算機(jī)工程與應(yīng)用,2005(8):196-200.
[12]肖統(tǒng)民.基于設(shè)計(jì)模式的可重用Web數(shù)據(jù)庫(kù)應(yīng)用軟件的研究[J].計(jì)算機(jī)與現(xiàn)代化,2006(7):100-103.