沈 軍 朱亦鋼
摘 要:材料性能數(shù)據(jù)庫檢索系統(tǒng)的研究與開發(fā)是工業(yè)現(xiàn)代化的重要方面。介紹了一個針對金屬材料性能試驗數(shù)據(jù)的特性,綜合運用ASP.NET 2.0技術、軟件的三層框架理論和設計模式的網(wǎng)絡數(shù)據(jù)庫檢索系統(tǒng)設計。重點討論數(shù)據(jù)庫的結構,分析系統(tǒng)軟件采用的基于ASP.NET 2.0的三層(數(shù)據(jù)層、業(yè)務邏輯層、表現(xiàn)層)架構模式的特點,并對應用設計模式的實現(xiàn)過程和繪制曲線圖功能進行闡述。該系統(tǒng)在.NET平臺下采用企業(yè)級易于擴展的Web數(shù)據(jù)庫集成與實現(xiàn)模式,且具有操作簡單,運行效率高,易維護的特點。
關鍵詞:數(shù)據(jù)庫;ASP.NET 2.0;三層架構;設計模式
中圖分類號:TP393文獻標識碼:B
文章編號: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)代飛機研制中,一項優(yōu)秀的設計方案應該建立在先進的設計思想、精確的計算和雄厚的數(shù)據(jù)基礎上。結構分析、疲勞分析和計算流體動態(tài)分析等項工作必須依賴大量的材料性能數(shù)據(jù)。材料數(shù)據(jù)庫技術是以存取材料性能數(shù)據(jù)為主要內(nèi)容的數(shù)值數(shù)據(jù)庫。計算機化的材料性能數(shù)據(jù)庫具有一系列優(yōu)點:如存貯信息量大,存取速度快,查詢方便,使用靈活。此外它還具有多種功能:如圖形表達及數(shù)據(jù)分析等。目前已獲得廣泛應用,并可以與工程軟件配套使用。
1 系統(tǒng)總體方案設計
金屬材料性能數(shù)據(jù)庫檢索系統(tǒng)是為滿足材料研究和設計人員的需要而設計的。它采用B/S結構實現(xiàn)數(shù)據(jù)庫的訪問。考慮到通用性、運行效果及實現(xiàn)成本的因素,系統(tǒng)開發(fā)平臺依托建立企業(yè)級網(wǎng)絡數(shù)據(jù)庫系統(tǒng)的開發(fā)平臺,即微軟公司.NET Framework 2.0和IIS+ASP.NET 2.0的網(wǎng)絡數(shù)據(jù)庫解決方案來實現(xiàn),開發(fā)工具采用Visual Studio 2005,編程語言采用C#。數(shù)據(jù)庫管理系統(tǒng)通過SQL Server 2000構建。
ASP.NET 2.0是ASP.NET的最新版本,它在1.0的基礎上有了很大改進,主要技術特性體現(xiàn)在控件、頁面框架、服務三個部分。在控件部分新增了數(shù)據(jù)控件(數(shù)據(jù)源控件和數(shù)據(jù)綁定控件)、登錄控件、站點導航控件等,用于提高開發(fā)效率。在頁面框架部分新增了母版頁、主題和皮膚,用于統(tǒng)一Web網(wǎng)站頁面風格。在服務部分新增了成員資格管理、角色管理等,用于保障Web站點的安全[1,2]。
2 數(shù)據(jù)庫的設計
數(shù)據(jù)庫設計主要根據(jù)金屬材料性能數(shù)據(jù)的特點,針對靜力性能、疲勞/耐久性能、損傷容限性能、腐蝕環(huán)境性能和特殊載荷譜下的性能試驗數(shù)據(jù)特點,結合關系型數(shù)據(jù)庫結構的要求,采用實體關系E-R數(shù)據(jù)模型的設計方法,對數(shù)據(jù)庫進行概念設計,以減少數(shù)據(jù)冗余,以及以符合數(shù)據(jù)庫的范為目的進行物理設計,最終建立規(guī)范的關系型數(shù)據(jù)庫。對于本材料性能數(shù)據(jù)庫,主要包括的數(shù)據(jù)是材料背景及相應的試驗數(shù)據(jù)。
數(shù)據(jù)庫的實體關系(E-R模型)由材料、試驗任務、試驗數(shù)據(jù)三類實體構成。材料產(chǎn)品實體包括進行試驗的材料產(chǎn)品方面的屬性(如材料牌號、材料品種、材料批次、狀態(tài)、生產(chǎn)廠等)。試驗任務實體包括試樣屬性(如取樣方向等)和試驗條件屬性(如試驗溫度、試驗環(huán)境參數(shù)等),不同性能試驗的試驗任務實體通常具有不同的試驗條件。試驗數(shù)據(jù)實體描述通過對每個試樣個體按照試驗任務的要求進行性能試驗后得到的試驗數(shù)據(jù)信息。材料實體和試驗任務、試驗任務和試驗數(shù)據(jù)實體之間是一對多的關系。E-R模型如圖1所示。

表結構設計主要是根據(jù)E-R模型,把數(shù)據(jù)切分成邏輯上相互關聯(lián)、結構上相互獨立的表結構[3]。為保證數(shù)據(jù)庫各表間,數(shù)據(jù)的完整性和一致性,還設定了實體完整性約束、域完整性和參考完整性。根據(jù)表結構編寫了相應的SQL數(shù)據(jù)庫腳本,在SQL Server 2000中實現(xiàn)了計算機數(shù)據(jù)庫的物理設計[4,5]。表結構由材料信息表、力學性能的試驗任務表和試驗數(shù)據(jù)表組成。在設計時把整個試驗任務實體按15種性能種類進行分解,包括拉伸、壓縮、沖擊、剪切、扭轉、硬度、疲勞、裂紋擴展、斷裂韌度、持久、蠕變、應力腐蝕、譜載疲勞、譜載裂紋擴展、細節(jié)疲勞額定強度。材料信息表的材料序號字段為主鍵,各個性能試驗任務表的試驗序號字段為主鍵、外鍵是材料序號字段,試驗數(shù)據(jù)表的試樣序號字段為主鍵、外鍵是試驗序號字段。
3 應用軟件的設計
3.1 體系結構設計
采用ASP.NET 2.0技術在.NET平臺可以快速方便地實現(xiàn)系統(tǒng)三層架構,其中表現(xiàn)層放在ASP頁面中,數(shù)據(jù)庫操作和邏輯層用組件來實現(xiàn)。在ASP.NET 2.0中典型的三層架構包括:Web 表示層、業(yè)務邏輯層、數(shù)據(jù)訪問層[6-8]。
數(shù)據(jù)訪問層是訪問數(shù)據(jù)庫可重用的接口,由數(shù)據(jù)訪問邏輯組件和業(yè)務實體組成。其中,數(shù)據(jù)訪問邏輯組件包括業(yè)務實體方法和數(shù)據(jù)訪問助手;業(yè)務實體方法處理實體數(shù)據(jù),數(shù)據(jù)訪問助手處理與數(shù)據(jù)庫的相關操作。業(yè)務實體用于映射關系型數(shù)據(jù)庫中的數(shù)據(jù),即使用對象的形式表現(xiàn)數(shù)據(jù)庫中的表,實現(xiàn)了將數(shù)據(jù)轉化為對象的功能。數(shù)據(jù)訪問層從業(yè)務邏輯層接收請求,并執(zhí)行從數(shù)據(jù)庫獲取數(shù)據(jù)或向數(shù)據(jù)庫發(fā)送數(shù)據(jù)的功能。
業(yè)務邏輯層把數(shù)據(jù)轉換成了符合業(yè)務規(guī)則的有意義信息,即數(shù)據(jù)檢索的規(guī)則放在這一層。系統(tǒng)的業(yè)務規(guī)則從表現(xiàn)層接受請求,根據(jù)編碼的業(yè)務規(guī)則處理請求,從數(shù)據(jù)訪問層獲取數(shù)據(jù)或?qū)?shù)據(jù)發(fā)送到數(shù)據(jù)訪問層,將處理結果傳遞回表現(xiàn)層。
表現(xiàn)層把信息轉換成對用戶有意義的內(nèi)容,它是指在應用程序中實現(xiàn)的客戶端。顯示層放在ASP.NET頁面中,管理Web頁的呈現(xiàn)和行為,向業(yè)務邏輯層發(fā)送用戶輸入,從業(yè)務邏輯層接收結果等。該系統(tǒng)采用了三層結構,提供了清晰的分離結構和代碼封裝,使程序內(nèi)聚程度高,耦合低,易于擴展、維護和重用[9-11]。三層架構如圖2所示。

3.2 功能設計
系統(tǒng)流程分為三個階段,即材料篩選導航、選擇性能、定位相應試驗數(shù)據(jù),最終獲得查詢結果。相應的性能數(shù)據(jù)檢索主要由條件選擇和試驗數(shù)據(jù)呈現(xiàn)兩大模塊構成。在條件模塊選擇部分,用戶按材料牌號、品種、狀態(tài)、規(guī)格的順序依次選擇檢索條件。系統(tǒng)根據(jù)用戶選定的條件顯示材料信息表,用戶選定相應的材料信息,系統(tǒng)顯示該材料信息涵蓋的性能種類信息表,用戶選定要檢索的性能種類。在試驗數(shù)據(jù)呈現(xiàn)部分,顯示該性能種類下試驗信息表,用戶選定相應的試驗條件,系統(tǒng)顯示相應的試驗結果表,并具備導出到Excel的功能,另外高周疲勞顯示應力(Y值)與循環(huán)周數(shù)(X值)的散點圖,裂紋擴展顯示da/dn與ΔK的散點圖,拉伸顯示平均應力應變曲線,應變疲勞顯示(Δε/2)-2Nf曲線。
3.3 代碼的設計
3.3.1 三層架構應用設計模式
(1) 設計模式。
設計模式是一套被反復使用、經(jīng)過分類編目、代碼設計經(jīng)驗的總結。使用設計模式是為了可重用代碼,讓代碼更容易被他人理解,保證代碼可靠性[12]。根據(jù)完成工作的不同設計模式,可以分為創(chuàng)建型模式、結構型模式、行為型模式三大類。這些模式刻畫了在運行時刻難以跟蹤的復雜控制流。其中,創(chuàng)建型模式與對象的創(chuàng)建有關,即描述怎樣創(chuàng)建一個對象,它隱藏對象創(chuàng)建的具體細節(jié),使程序代碼不依賴具體的對象。
(2) 簡單工廠模式在數(shù)據(jù)訪問層的應用。
抽象工廠模式是一種創(chuàng)建型的模式,用于當需要返回一系列相關類中的某一個,而每個類都能根據(jù)需要返回不同的對象。簡單工廠模式是其簡化版,只需調(diào)用工廠類中的方法,就可以創(chuàng)建相關的產(chǎn)品類實例。這種面向接口的編程技術,為創(chuàng)建不同產(chǎn)品實例提供很大方便。
該系統(tǒng)軟件的數(shù)據(jù)訪問層應用簡單工廠模式,包括工廠類、抽象產(chǎn)品接口、具體產(chǎn)品類、實體類、數(shù)據(jù)訪問輔助項目。業(yè)務邏輯層調(diào)用工廠類,創(chuàng)建抽象產(chǎn)品接口,然后調(diào)用這個接口的方法返回業(yè)務實體類的實例。具體過程如下:
工廠類采用依賴注入,根據(jù)數(shù)據(jù)存儲來配置應用程序,使用配置文件結合反射技術。將應用程序依賴的組件在運行時注入給應用中,針對SQL Server數(shù)據(jù)庫,并可以擴展加載Oracle數(shù)據(jù)庫。抽象產(chǎn)品接口將對象的定義與實現(xiàn)分離,在接口中聲明了成員方法,但不包括具體實現(xiàn)內(nèi)容。具體產(chǎn)品類調(diào)用數(shù)據(jù)訪問輔助類(微軟公司提供的公共模塊),實現(xiàn)抽象產(chǎn)品接口中定義的方法。業(yè)務實體就是把數(shù)據(jù)表結合業(yè)務規(guī)則抽象為類,數(shù)據(jù)表中的字段都抽象為類的屬性。工廠類代碼舉例如下:
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 曲線作圖模塊的設計
ASP.NET有一個內(nèi)建的圖形工具庫,即system.drawing名稱空間的gdi+,不過它屬于低級的api,算不上繪制圖表的引擎。因此采用優(yōu)秀的服務器端圖表引擎Office 2003 Web 組件,即OWC 11作為曲線繪制模塊的基礎,它具有與Excel同樣強大的圖表繪制能力,能在服務器上動態(tài)創(chuàng)建圖表。
曲線作圖模塊的具體設計方案是將曲線圖所需的數(shù)據(jù)表的數(shù)據(jù)填充到基于Office 2003 自建的曲線作圖類,然后將曲線圖以gif圖形的形式保存在服務器上,用Image控件顯示該圖。這種圖形實現(xiàn)技術對客戶端沒有特殊的要求,只要能夠顯示gif圖形就可以顯示曲線圖。
在自建的曲線作圖類中,主要是創(chuàng)建一個圖形容器對象,在圖形容器中增加圖形對象。以散點圖為例,將圖形的類型設置為散點圖,添加一個series,給定x,y值,設置刻度,使用Microsoft.Office.Interop.Owc11.ChartSpace類ExportPicture方法輸出圖形文件。核心代碼如下:
using Microsoft.Office.Interop.Owc11;
ChartSpace ThisChart = new ChartSpaceClass();
ChChart ThisChChart=ThisChart.Charts.Add(0);
ChSeries ThisChSeries = ThisChChart.SeriesCollection.Add(0);
//指定為散點圖
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);
//刻度設置,x軸設為對數(shù)刻度。
ThisChChart.Axes[1].Scaling.Type =
ChartScaleTypeEnum.chScaleTypeLogarithmic;
//對數(shù)主刻度的主單位
ThisChChart.Axes[1].Scaling.LogBase = 10;}
4 結 語
基于ASP.NET 2.0技術,采用三層架構和B/S體系,建立的金屬材料性能數(shù)據(jù)庫檢索系統(tǒng)是一個操作簡單,運行效率高,易維護的系統(tǒng)。它是按材料性能的特點建立的,將材料研究工程中產(chǎn)生的科學數(shù)據(jù)通過電子化數(shù)據(jù)庫方式有效保存,實現(xiàn)資源的共享,并為相關的材料研究單位、飛機設計單位提供檢索最新材料性能試驗數(shù)據(jù)的途徑,提高了性能數(shù)據(jù)的利用效能。
參考文獻
[1]郝剛.ASP.NET 2.0開發(fā)指南[M].北京:人民郵電出版社,2006.
[2]陳冠軍.精通ASP.NET 2.0企業(yè)級項目開發(fā)[M].北京:人民郵電出版社,2007.
[3]羊海棠,楊瑞成,袁曉波,等.耐磨料磨損材料數(shù)據(jù)庫的設計與實現(xiàn)[J].材料科學與工藝,2006,14(4):345-348.
[4]易當祥,呂國志,姚磊江,等.陶瓷基復合材料數(shù)據(jù)庫系統(tǒng)的實現(xiàn)與應用[J].機械工程材料,2005,29(7):68-70.
[5]姚磊江,童小燕,呂勝利,等.C/SiC復合材料數(shù)據(jù)庫的邏輯結構設計[J].西北工業(yè)大學學報,2005,23(4):426-429.
[6]曾廣平,宋中山.數(shù)據(jù)庫進化設計的敏捷實施[J].微計算機信息,2006,22(11):201-203.
[7]王敏麗.用C/S與B/S技術進行N層體系架構的實現(xiàn)方法研究[J].浙江理工大學學報,2006,23(3):331-335.
[8]張慧翔,張新家.一種業(yè)務邏輯可重構的三層應用服務器設計與實現(xiàn)[J].計算機應用,2006,26(4):853-856.
[9]易寶林,譚支鵬,馮丹.數(shù)據(jù)庫訪問柔性中間件的設計與實現(xiàn)[J].微電子學與計算機,2006,23(11):166-169.
[10]胡順.三層結構在.NET中的應用[J].中國科技信息,2005,23(4):426-429.
[11]徐繪宏,潘懋,宋揚,等.一種構建3D GIS應用的三層結構方法探討[J].計算機工程與應用,2005(8):196-200.
[12]肖統(tǒng)民.基于設計模式的可重用Web數(shù)據(jù)庫應用軟件的研究[J].計算機與現(xiàn)代化,2006(7):100-103.