999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

使用元數據和反射的Web服務系統重配置設計與實現

2017-03-31 20:32:46孫承愛杜巧林于璇璇
軟件導刊 2016年8期

孫承愛+杜巧林+于璇璇

摘 要:軟件系統需要不斷演化以適應外界需求或環境的變化,如何實現軟件演化是軟件工程研究領域的一個熱點問題。提出一種基于元數據和反射的軟件動態重配置方法,利用存儲在關系數據庫中的元數據描述系統的結構特征,采用存儲過程表示系統的行為,并建立存儲過程和功能的對應關系。使用元對象操作類實現元層和基層對象的反射關系,當軟件的功能或顯示界面發生變化時,通過配置元數據和存儲過程,在運行時動態改變基層程序結構或功能,實現了軟件的演化,并通過實例證明了該方法的可行性。

關鍵詞關鍵詞:需求變化;元數據;反射;重配置

DOIDOI:10.11907/rjdk.161650

中圖分類號:TP319

文獻標識碼:A 文章編號:1672-7800(2016)008-0049-04

0 引言

隨著用戶需求的改變和軟件運行環境的變化,軟件系統需要不斷演化以適應這種新的變化,如何實現軟件演化是軟件工程研究領域的一個熱點問題[1,2]。軟件工程從許多方面,例如OOP、OOA/OOD、各種軟件過程(RUP、XP)和方法等對此進行了研究。這些技術運用得當可以構建出可用、可靠、穩定的系統。但是,當需求發生變化時,現代軟件存在著如下不足:傳統軟件主要采取了“黑箱”的實現機制,即對外部應用屏蔽了內部具體實現細節,這種機制使得外部應用無法獲取系統的內部結構和狀態行為,從而無法根據相關需求來動態調整系統應用級的結構行為,這樣使得相關應用缺乏對變化環境的適應性[3-5]。

要解決上述問題,軟件系統應具有如下特點:系統應具有較為開放的結構,使得外界能獲悉系統內部相關成分,從而能根據外部環境變化對系統相應部分的結構行為作一定調整與改變;系統應具有動態重配置的能力,即能在運行過程中進行動態調整、定制和改變自身相關的結構行為,且不影響系統整體的運行[4]。

本文將元數據和反射引入基于關系數據庫的Web系統設計中,通過對系統業務信息的具體化(reification),使得外部能獲取系統自身結構、行為的自描述(self-representation)元數據,從而實現系統內部的開放;系統的自描述與系統結構行為是因果相連(causally connected)的,通過對元數據的調整與改變,可實現對系統特定部分和功能的反射,使得系統具有動態重配置的能力[6]。

1 相關研究

20世紀80年代后期,隨著對反射式程序設計語言、反射式操作系統研究的深入,對反射系統也形成了一個較為一致的認識:反射系統可被認為是一種可通過因果相連的方式來反演自身的計算系統,反射則是反射系統的行為表示[7,8]。反射系統可以形式化地表示成二元組S=〈PL,TL〉,其中S為計算系統,L為系統S用以表示問題域所用的語言,PL為語言L的處理器,TL為PL的狀態,RS為S在TL中基于L語言的表示,S與RS的關系為:S包含RS,且S和RS之間是因果相連的[9]。

在反射系統實現中,一般采用“關注分離”的原則,即系統分為基層(Base Level)和元層(Meta Level)。基層用于對具體問題域的抽象,元層則是對基層及系統內部的表示。元對象封裝基層對象的元數據,描述基層對象的結構和行為,并動態地管理基層對象。反射是指通過獲取元數據來觀察和調整系統內部及基層相關部分結構行為的過程。

在利用元數據和反射技術實現軟件系統的研究中,文獻[10]介紹了在面向對象編程語言中使用反射和元編程需要遵循的3個重要原則。給出了使用元數據和反射的基本原理和設計規則,文獻[11]通過使用基于XML描述的元數據和某些語言的自省機制來連接構件和基本框架,目的是構建可擴展的系統,其元數據描述重點在系統功能,實現功能的靈活擴展。文獻[12]提出了一種基于構件的系統運行時變化和恢復的軟件架構。通過完整描述系統運行時的狀態和行為,使用構件框架的反射能力實現系統的運行時恢復。本文使用元數據描述系統的結構信息,利用存儲過程來表達系統行為。元數據存儲在關系數據庫中,存儲過程作為一個命名的獨立模塊可以被動態配置和調用。元數據和存儲過程可以通過一個單獨的配置系統動態管理,通過運行時反射機制實現系統的動態重配置。與文獻[10]相比,本文方法不僅能實現功能擴展,還能管理系統的結構;與文獻[11]相比,本文側重點在于系統的動態重配置。

2 基于元數據和反射的動態重配置

基于關系數據庫的Web系統是本文動態重配置方法研究的對象。很多關系數據庫中都提供命名的批處理代碼段,例如SQL Server數據庫中的存儲過程(Stored Procedure)、Oracle中的過程(Procedure)。這種命名的批處理代碼段編寫完成以后注冊到服務器,通過名字可以反復調用多次,而且每個代碼段可以有上百條SQL代碼,這上百條代碼在調用時只需要一條執行語句即可,不需要向網絡發送上百條代碼,能有效降低系統網絡開銷。批處理代碼段可以包含若干代碼,因此可以把系統的業務邏輯封裝其中,使用時按名稱調用即可。本文設計方法基于SQL Server數據庫,把系統的業務邏輯封裝到存儲過程中。

當需求變化時,用戶可以通過配置元數據和存儲過程,動態修改基層對象,實現軟件運行時動態重配置。

本文方法使用關系數據庫存放元數據,所以要考慮元數據的完整性約束處理。

2.1 元層設計

2.1.1 元對象

元對象主要包括:數據表對象、視圖對象、數據集對象、字段對象。具體如下:

(1)數據表對象描述關系數據庫表,其定義包含名稱、類別(所屬的業務領域)。

(2)字段對象描述字段的詳細信息和該字段基層的結構信息,例如基層程序的顯示名稱、顯示長度、使用控件類型等。其定義主要包括字段名稱、所屬表、字段中文名稱、約束類型、字段長度、顯示次序、顯示控件、計算方式、最小值、最大值。字段屬于基本表,所以在圖1中,表與字段關系為組合關系,并且每個數據表至少有1個字段。

(3)視圖對象描述關系數據庫中的視圖。在關系數據庫中,視圖的字段分成兩類:一類是構成視圖的基表字段,另一類是由基表字段推導出的附加字段。因此視圖對象在圖1的設計中涉及到3個類:視圖類、視圖父表字段類、視圖附加字段類。每個視圖至少包括1個父表字段,有0到多個附加字段,其關系如圖1所示。視圖對象定義主要包括視圖名稱、視圖中文名稱、視圖所屬業務領域;視圖附加字段定義包括字段名稱,顯示順序、中文標題、類型;父表視圖字段定義包括父表名稱、字段名稱、顯示順序。

(4)數據集對象是一種特殊的元對象。它和數據庫中的存儲過程一一對應,系統通過存儲過程封裝業務邏輯。例如在界面中顯示個人所得稅頁面時,個人所得稅的計算方法就可以通過存儲過程存放到數據庫中,當計算方法改變時,只需要修改存儲過程即可實現業務規則修改。每個返回結果集存儲過程包含的字段分為兩類:一類是來自于基本表的字段,另一類為由基本表推導得到的字段。這兩類字段分別用數據集附加字段和父表數據集字段表示。其中父表數據集字段的字段定義來自于父表定義。數據集對象在圖1中主要包括3個類:數據集、數據集附加字段、父表數據集字段。數據集定義包括:數據集名稱、數據集中文名稱、數據集分類(所屬業務領域);數據集附加字段定義包括:字段名稱、中文名稱、顯示順序、類型;數據集父表字段定義包括:字段名稱和顯示順序。

2.1.2 三種元對象操作類和數據獲取方法

對基層對象和元對象的操縱控制,主要是由反射模式的內省和調節功能來保證[6]。本文對表和視圖的管理通過類TableDescription完成;字段管理通過類FieldDescription和類FieldDescriptionList來處理;數據集的管理通過類DatasetDescription來處理。其主要屬性和方法如圖2~圖5所示。

為了更簡明清楚定義操作過程,作如下規定:①對象T屬于TableDescription;②對象F屬于FieldDescription;③對象V屬于TableDescription;④對象D屬于DatasetDescription;⑤對象FL屬于FieldDescriptionList。

(1) 過程1:根據表名或視圖名取得數據。

①將表名或視圖名傳遞給T.TableName,取得表描述信息;

②使用FL.GetFieldList(表名稱),取得字段列表;

③foreach(F in FL.GetFieldList(表名稱))

組合F成物理字段列表;

轉到字段處理子程序;

④檢索出業務數據,并綁定到頁面對象。

(2)過程2:字段處理子程序。

①if 字段為自增(F.IsIdentity) then

字段設置為只讀;

②if 字段有外鍵引用(F.FkField != null)then

將本字段呈現為外鍵關聯出的值(例如主表中性別編碼,在基層將呈現為外鍵表中數據男或者女);

③if 字段允許為空(F.IsNull==true)then

對字段不作非空驗證;

④if 字段有最大或最小值(F.Min != null or F.Max != null) then 對字段作范圍驗證;

⑤轉數據完整性處理。

(3)過程3:根據存儲過程名稱和參數取得數據的過程。

①將存儲過程名和存儲過程參數傳遞給D.ProName和D.ProParams,取得數據集描述信息;

②使用FL.GetFieldList(存儲過程名稱),取得字段列表;

③foreach(F in FL.GetFieldList(存儲過程名稱))

組合F成物理字段列表;

轉到字段處理子程序;

④檢索出業務數據,并綁定到頁面對象。

字段元數據存放在關系數據庫當中,須考慮數據實體完整性和參照完整性。對于實體完整性,主要考慮主鍵約束;參照完整性在本文中分成3類:標識關系、非標識強制關系、非標識非強制關系。

(4) 過程4:完整性控制。

①if F.ConstraintsType ==主鍵 then

加入基層類主鍵列表 (加入主鍵列表后,基層類在數據更新、刪除等操作的過程中,會按照主鍵列表構造where字句進行更新、刪除操作) ;

② if F.ConstraintsType ==標識約束 then

Case 增加 then 基層對象檢測字段非空和外鍵約束;

Case 修改 then 基層對象檢測字段非空和外鍵約束;

Case 刪除 then 基層對象直接刪除記錄。

③if F.ConstraintsType ==非標識強制約束 then

Case 增加 then 基層對象檢測字段非空和外鍵約束;

Case 修改 then 基層對象檢測字段非空和外鍵約束;

Case 刪除 then 基層對象直接刪除記錄。

④if F.ConstraintsType ==非標識非強制約束 then

Case 增加 then 基層對象檢測外鍵約束;

Case 修改 then 基層對象檢測外鍵約束;

Case 刪除 then 基層對象直接刪除記錄。

2.2 軟件運行和重配置過程

軟件運行和軟件動態配置過程如圖6所示。配置好元數據后,軟件會按照用戶需求顯示和按業務規則運行(圖中步驟1)。基層控件接受用戶操作要求并把需求具體化為對應的元數據提交給元對象(圖中步驟2、3),元對象操作元數據并接收操作返回的信息(圖中步驟4、5)。元對象會將數據庫中的數據按照規則組織業務數據反饋給基層對象(圖中步驟6),基層對象把信息反饋給用戶(圖中步驟7、8),這是一次完整的交互。當需求發生變化時,如果用戶期望軟件適應新需求,則可以打開元數據配置頁面(圖中步驟9),執行元數據配置操作,通過該操作修改元數據信息(圖中步驟10、11、12)。當用戶修改元數據后,重新進入功能界面就可以使用演化后符合新需求的系統(圖中步驟13)。

3 運行時反射過程與實例

圖7為一個運行時反射實例,其開發環境為VS2005和Sqlserver2005。兩條虛線之間為元數據操作,虛線之外為基層界面。

在軟件的基層界面中第一列名稱顯示為“教師名稱”,根據前文過程1,顯示其過程為:

①將表名“ Teacher”傳遞給T.TableName,取得表描述信息;

②使用FL.GetFieldList(“ Teacher”),取得字段列表;

③foreach(F in FL.GetFieldList(“ Teacher”))

組合F成物理字段列表;此時F中教師名稱的物理字段為“tchrName”,即F.FieldName=“tchrName”),F.FieldCTitle為“教師名稱”。

轉過程2:對于F.FieldName=“tchrName”,為普通字段,因此自增、外鍵、非空、范圍、數據完整性約束等驗證都為false。

④檢索出業務數據,并綁定到頁面對象。

在運行過程中用戶可以在3.2節第2步的元數據配置頁面修改該列的元數據,例如修改成圖中的“教師姓名”,按照上文所述的反射流程,修改元數據后,對應的基層對象的軟件界面也會隨之變化,如圖3中第3步所示結果。

4 結語

本文提出了基于元數據和反射的Web系統重配置設計方法,詳細描述了元對象的結構和操作元對象的方法,介紹了應對需求變化的動態重配置過程,并給出了一個簡單示例。本文使用的方法能夠部分解決需求變化的問題,但是本方法只適用于基于關系數據庫的Web程序,其適用范圍的局限性限制了應用價值,下一步應將其擴展到互聯網軟件上。例如,當利用Web服務作為構成系統的功能單元時,如何描述系統的結構,采用什么方式描述系統行為,從而使系統具有動態演化的能力。

參考文獻:

[1]TOM MENS,JEFF MAGEE,BERNHARD RUMPE.Evolving software architecture descriptions of critical systems[J]. IEEE Computer, 2010,43(5):42-48.

[2]WANG YING,WANG LIFU.Research about model and ripple effect analysis of software architecture evolution[J].Acta Electronica Sinica,2005,33(8):1381-1386.

[3]HU HAI-YANG,MA XIAO-XING,TAO XIAN-PING,et al.Research and advance of reflective middleware[J].Chinese Journal of Computers, 2005,28(9):91-96.

[4]COULSON G,BLAIR G S,CLARKE M,et al.The design of a highly configurable and reconfigurable middleware platform[J].Journal of ACM Distributed Computing, 2002, 1(2): 109-126.

[5]SCHMIDT DC,CLEELAND C.Applying a pattern language develop extensible ORB middleware[M]. New York: Cambridge University Press,2001:393-438.

[6]National Information Standards Organization.Understanding metadata[EB/OL]. http://www. niso. org/publications/press/ Underst -andingMetadata.pdf.

[7]YASUHIKO Y.The apertos reflective operating system:the concept and its implementation[C]. Proceedings of the ACMOOPSLA'92,1992:414-434.

[8]PATTIE M.Concepts and experiments in computational reflection[J].ACM SIGPLAN Notices, 1987, 22(12): 147-155.

[9]HIDEAKI O.A study on multi-model reflection framework in distributed environments[D]. Department of Computer Science, Keio University, 1995.

[10]GILAD BRACHA, DAVID UNGAR.Mirrors:design principles for meta-level facilities of object-oriented programming languages[C]. In: Proceedings of the OOPSLA'04, Vancouver, British Columbia, Canada, 2004,331-344.

[11]OU JIN-LIANG,JIN MAO-ZHONG.A method of metadata modeling to construct extensible and flexible system[J]. Journal of Computer Science,2005,32(7:)214-217.

[12]GANG HUANG,HONG MEI,FU-QINGYANG.Runtime recovery and manipulation of software architecture of component-based systems[J].Automatic Software Engineering,2006(13): 257-281.

(責任編輯:陳福時)

主站蜘蛛池模板: 亚洲永久色| 亚洲一区二区三区在线视频| 久久精品女人天堂aaa| 波多野结衣无码中文字幕在线观看一区二区 | 99在线观看精品视频| 久久香蕉国产线| 四虎亚洲精品| 国产国语一级毛片| 成人久久18免费网站| 日韩无码视频网站| 久久大香香蕉国产免费网站| 亚洲中文字幕国产av| 青草91视频免费观看| 色丁丁毛片在线观看| 亚洲成人www| 中文字幕 欧美日韩| 在线欧美a| 国产精品网址在线观看你懂的| 久久亚洲精少妇毛片午夜无码| 国产中文在线亚洲精品官网| 午夜毛片福利| 成人中文在线| 国产精品吹潮在线观看中文| 中文字幕va| 国产95在线 | 欧美精品1区2区| 久草国产在线观看| 日韩欧美综合在线制服| 男女精品视频| 激情影院内射美女| 日韩AV手机在线观看蜜芽| 国产91丝袜在线观看| 国产日韩精品一区在线不卡| 国产成人精品一区二区免费看京| 日韩在线1| 欧美 亚洲 日韩 国产| 久久77777| 91蜜芽尤物福利在线观看| 免费jizz在线播放| 欧美午夜网| 国产真实乱子伦视频播放| 狠狠五月天中文字幕| 日本日韩欧美| 国产区91| 国产拍在线| 欧美视频在线第一页| 最新国产精品鲁鲁免费视频| 亚洲AV无码精品无码久久蜜桃| 黄色网在线| 国产精品网址在线观看你懂的| 无码免费的亚洲视频| www精品久久| 国产精品区网红主播在线观看| 亚洲国产精品无码AV| 国产精品香蕉在线| 91视频首页| av一区二区无码在线| 日本妇乱子伦视频| 又爽又大又光又色的午夜视频| 午夜老司机永久免费看片| 中国一级特黄视频| 国产区人妖精品人妖精品视频| 亚洲国产天堂久久综合226114| 亚洲综合18p| 久久国产精品夜色| 欧美一级夜夜爽www| 中国特黄美女一级视频| 欧美性猛交一区二区三区| 久久久久久久97| 国产91色| 国产不卡网| 成人年鲁鲁在线观看视频| 伊人福利视频| 亚洲无线国产观看| 精品久久国产综合精麻豆| 国产三级毛片| 日本一区二区三区精品AⅤ| 国产精品手机在线观看你懂的 | 茄子视频毛片免费观看| 国产精品人成在线播放| 色九九视频| 国产成人禁片在线观看|