文/范澤華
海量數(shù)字文獻(xiàn)資源的出現(xiàn),要求圖書館采用先進(jìn)技術(shù)構(gòu)建一種全新的文獻(xiàn)信息服務(wù)環(huán)境來滿足不斷擴(kuò)張的用戶需求。如果用戶對資源缺乏足夠的認(rèn)識(shí),對資源的搜索系統(tǒng)不熟悉,且他們在使用各個(gè)系統(tǒng)時(shí)每次都要進(jìn)行登錄和認(rèn)證,那么這就給用戶檢索和利用數(shù)字資源帶來極大的不便。
華中科技大學(xué)圖書館依托豐富的電子資源,開發(fā)出統(tǒng)一檢索平臺(tái)(HUSTLIBURP,HUSTLIB-UNION RETRIEVAL PLATFORM)。
軟件的開發(fā)是在DotNet框架平臺(tái)上進(jìn)行的。架構(gòu)(Architecture)是軟件設(shè)計(jì)中非常重要的一個(gè)環(huán)節(jié)。在軟件開發(fā)的過程中只要確定了需求和架構(gòu),那么這個(gè)軟件基本上可以定型。
架構(gòu)設(shè)計(jì)是一種權(quán)衡。一個(gè)問題總是有多種解決方案,而要確定唯一的架構(gòu)設(shè)計(jì)的解決方案,就意味著要在不同的矛盾體之間做出一個(gè)權(quán)衡。在設(shè)計(jì)的過程中總可以看到很多矛盾體:開放和整合、一致性和特殊化、穩(wěn)定性和延展性等。任何一對矛盾體都源于對軟件的不同期望。滿足軟件穩(wěn)定運(yùn)行的要求,就必然會(huì)影響對軟件易于擴(kuò)展的期望。如果要求軟件簡單明了,那么就會(huì)增加設(shè)計(jì)的復(fù)雜度。沒有一個(gè)軟件能夠滿足所有的要求,因?yàn)檫@些要求之間帶有天生的互斥性。而評(píng)價(jià)架構(gòu)設(shè)計(jì)的好壞的依據(jù),只能是在其間做出權(quán)衡的合理性。
我們認(rèn)為,良好的架構(gòu)應(yīng)能實(shí)現(xiàn)重用、透明、延展、簡明、高效、安全等目標(biāo)。構(gòu)造三層應(yīng)用程序
我們從抽象的體系結(jié)構(gòu)級(jí)別開發(fā)面向?qū)ο蟮膽?yīng)用程序。它在邏輯上構(gòu)造成三層服務(wù)應(yīng)用程序。應(yīng)用程序是基于OLTP處理模型的。硬件和網(wǎng)絡(luò)體系結(jié)構(gòu)是基于四級(jí)分布的,這要求Web服務(wù)器功能和應(yīng)用程序服務(wù)器功能具有不同的物理級(jí),并基于復(fù)雜的Web應(yīng)用程序創(chuàng)建一個(gè)部署規(guī)劃,以便將組件映射到服務(wù)器。
解決方案是使用 Microsoft.NET 技術(shù)構(gòu)建的。表示層基于 ASP.NET 中內(nèi)置的 Web表示框架。ASP.NET 使用內(nèi)置的代碼隱藏頁功能來簡化 Model-View-Controller 的實(shí)現(xiàn)。使用 ASP.NET 內(nèi)置的 Page Controller 機(jī)制來實(shí)現(xiàn)表示邏輯。業(yè)務(wù)層中的域?qū)ο笫?.NET托管對象。因?yàn)楸硎緦雍蜆I(yè)務(wù)層部署在不同的級(jí)上,所以使用服務(wù)器激活,使對象通過.NET Remoting實(shí)現(xiàn)代理。最后,數(shù)據(jù)層基于Microsoft.NET Framework中的ADO.NET類來提供數(shù)據(jù)庫訪問。表模塊和業(yè)務(wù)實(shí)體是使用ADO.NET的數(shù)據(jù)集組件構(gòu)造的。數(shù)據(jù)訪問組件的其余部分由.NET構(gòu)建塊提供。
由于在構(gòu)建企業(yè)級(jí)解決方案時(shí)會(huì)涉及到大量模式,這些模式被組織成更小、更緊密相關(guān)的模式集。在瀏覽模式的機(jī)制方面,我們利用了關(guān)系、抽象級(jí)別、群集和視點(diǎn)。實(shí)際上,當(dāng)用戶在角色、主題范圍和詳細(xì)程度之間切換時(shí),將自然而然地在這些機(jī)制之間進(jìn)行了切換。
海量數(shù)字文獻(xiàn)資源的出現(xiàn),要求圖書館采用先進(jìn)技術(shù)構(gòu)建一種全新的文獻(xiàn)信息服務(wù)環(huán)境來滿足不斷擴(kuò)張的用戶需求。
用戶界面功能模塊化
用戶界面邏輯的更改往往比業(yè)務(wù)邏輯頻繁,尤其是在基于Web的應(yīng)用程序中。例如,可能添加新的用戶界面頁或者可能完全打亂現(xiàn)有的頁面布局。畢竟,基于Web 的瘦客戶端應(yīng)用程序的優(yōu)點(diǎn)之一是可以隨時(shí)更改用戶界面,而不必重新分發(fā)應(yīng)用程序。如果將顯示代碼和業(yè)務(wù)邏輯組合并放在單個(gè)對象中,則每次更改用戶界面時(shí),都必須修改包含業(yè)務(wù)邏輯的對象,這很有可能引入錯(cuò)誤,而且在對用戶界面進(jìn)行極小更改之后都要重新測試所有的業(yè)務(wù)邏輯。
在某些情況下,應(yīng)用程序以不同的方式顯示同一數(shù)據(jù)。在一些胖客戶端用戶界面中,常常用多個(gè)視圖同時(shí)顯示相同數(shù)據(jù)。如果用戶在一個(gè)視圖中更改了數(shù)據(jù),則系統(tǒng)必須自動(dòng)更新該數(shù)據(jù)的其他所有視圖。
簡單有效的HTML頁通常要求采用一套與開發(fā)復(fù)雜業(yè)務(wù)邏輯不同的技能。用戶界面活動(dòng)由以下兩部分組成:顯示和更新。顯示部分負(fù)責(zé)從數(shù)據(jù)源檢索數(shù)據(jù),并格式化數(shù)據(jù)以便進(jìn)行顯示。當(dāng)用戶基于該數(shù)據(jù)執(zhí)行操作時(shí),更新部分將控制權(quán)返回給業(yè)務(wù)邏輯,以便更新數(shù)據(jù)。
在 Web 應(yīng)用程序中,單個(gè)頁面請求將這兩方面的工作組合在一起:與用戶所選鏈接相關(guān)聯(lián)的操作進(jìn)行的處理,以及目標(biāo)頁面的顯示。在許多情況下,目標(biāo)頁可能不與操作直接相關(guān)。例如,假設(shè)有一個(gè)用于顯示項(xiàng)目列表的簡單 Web 應(yīng)用程序,在將項(xiàng)目添加到列表或從列表中刪除項(xiàng)目之后,用戶將返回主列表頁,因此,應(yīng)用程序必須在執(zhí)行兩個(gè)有很大差異的命令(添加或刪除)之后顯示相同頁面(列表),而所有這些操作均在同一個(gè) HTTP 請求內(nèi)進(jìn)行。
HUSTLIB-URP結(jié)構(gòu)分析采用的是模式分析方法。模式描述能給定上下文中反復(fù)出現(xiàn)的問題,并基于一組指導(dǎo)性影響因素來建議解決方案。解決方案通常是一種簡單的機(jī)制,是為了解決模式中所標(biāo)示出的問題而一起工作的兩個(gè)或多個(gè)類、對象、服務(wù)、進(jìn)程、線程、組件或節(jié)點(diǎn)之間的協(xié)作。而OLTP 系統(tǒng)是用來管理事務(wù)處理的數(shù)據(jù)庫子系統(tǒng)。這些子系統(tǒng)確保每個(gè)事務(wù)的原子性、一致性、獨(dú)立性及持久性。
HUSTLIB-URP是一個(gè)典型的N層架構(gòu),其結(jié)構(gòu)分為四個(gè)邏輯層。Web層
Web層為客戶端提供對應(yīng)用程序的訪問。這一層是作為HUSTLIB-URP.sln解決方案文件中的Web項(xiàng)目實(shí)現(xiàn)的。Web層由ASP.NET Web窗體和代碼隱藏文件組成。Web窗體只是使用HTML提供用戶操作,而代碼隱藏文件則實(shí)現(xiàn)各種控件的事件處理。
Web層還使用Java Script頁面處理技術(shù),實(shí)現(xiàn)選擇數(shù)據(jù)庫個(gè)數(shù)計(jì)數(shù)、內(nèi)容介紹顯示、流量計(jì)算等功能。
業(yè)務(wù)外觀層
業(yè)務(wù)外觀層為 Web 層提供處理合法用戶驗(yàn)證、服務(wù)器選擇、日期處理結(jié)果及程序異常結(jié)果顯示的界面。業(yè)務(wù)外觀層作為隔離層,將用戶界面與各種業(yè)務(wù)功能的實(shí)現(xiàn)隔離。除了低級(jí)系統(tǒng)和支持功能之外,對數(shù)據(jù)庫服務(wù)器的所有調(diào)用都是通過此程序集進(jìn)行的。
業(yè)務(wù)規(guī)則層
業(yè)務(wù)規(guī)則層是作為HUSTLIB-URP解決方案文件中的商務(wù)規(guī)則項(xiàng)目實(shí)現(xiàn)的,它包含各種業(yè)務(wù)規(guī)則和邏輯的實(shí)現(xiàn)。業(yè)務(wù)規(guī)則完成合法數(shù)據(jù)的驗(yàn)證、實(shí)現(xiàn)各個(gè)檢索數(shù)據(jù)庫的接口數(shù)據(jù)傳輸這樣的任務(wù)。
數(shù)據(jù)訪問層
數(shù)據(jù)訪問層為業(yè)務(wù)規(guī)則層提供數(shù)據(jù)服務(wù)。這一層是作為HUSTLIB-URP解決方案文件中的檢索項(xiàng)目來實(shí)現(xiàn)的。
業(yè)務(wù)外觀層和業(yè)務(wù)規(guī)則層比較有特點(diǎn),在Web應(yīng)用的N層結(jié)構(gòu)開發(fā)中使用最多的是三層結(jié)構(gòu),分別為表示層、中間層和數(shù)據(jù)層。HUSTLIB-URP的Web層和數(shù)據(jù)訪問層較好理解,也就是傳統(tǒng)意義上的表示層和數(shù)據(jù)層,其業(yè)務(wù)外觀層和業(yè)務(wù)規(guī)則層則是其獨(dú)有的。
異構(gòu)數(shù)據(jù)庫統(tǒng)一檢索平臺(tái)必須具有較好的互操作性?;ゲ僮髟诋悩?gòu)倉儲(chǔ)間使用采集的方式。
采集方法將關(guān)于這些資源的元數(shù)據(jù)從各個(gè)倉儲(chǔ)中收集并提供服務(wù),原始資料還需要到它所在的倉儲(chǔ)中去提取。
由于大多數(shù)圖書館只擁有對電子資源的使用權(quán),而電子資源中的大多數(shù)的數(shù)據(jù)庫接口一般不向用戶開放接口,因此,在異構(gòu)倉儲(chǔ)間的互操作方法中,常用的是采集方法。
系統(tǒng)可檢索中文和外文數(shù)據(jù)庫,兼容所有可檢數(shù)據(jù)庫。真正的原始結(jié)果在原有界面中提供全文結(jié)果,保留所有原有功能。本系統(tǒng)還可兼容所有主要OpenURL鏈接解析器,OpenURL鏈接可嵌入結(jié)果引文,方便用戶通過鼠標(biāo)點(diǎn)擊找到電子文章。
解決方案必須確保滿足不可預(yù)知數(shù)量的用戶的要求,關(guān)注如何組合服務(wù)任意數(shù)量的應(yīng)用程序或用戶的多個(gè)系統(tǒng),以提高可伸縮性和可用性。在本系統(tǒng)中分別應(yīng)用服務(wù)器群集、負(fù)載平衡群集和故障轉(zhuǎn)移群集方案,以提高系統(tǒng)的性能和可靠性模式。
本系統(tǒng)具有如下優(yōu)勢:1.并發(fā)統(tǒng)一檢索;2.快速響應(yīng)及結(jié)果緩存;3.通用性好;4. 結(jié)果頁面可以繼續(xù)瀏覽,支持文件下載;5.支持簡單檢索和高級(jí)檢索;6.異構(gòu)數(shù)據(jù)庫統(tǒng)一檢索平臺(tái)IP認(rèn)證;7.主頁面數(shù)據(jù)庫導(dǎo)航功能。
華中科技大學(xué)圖書館已經(jīng)與武漢的8所全國重點(diǎn)大學(xué)圖書館合作,為他們量身定做應(yīng)用系統(tǒng),并且對湖北省圖書館和中國地質(zhì)大學(xué)進(jìn)行定制開發(fā),向合作用戶提供部分源代碼。