胡 雙,陸 濤,胡建華
(1.中國藥科大學理學院,江蘇 南京 211198;2.中國藥科大學天然藥物活性組分與藥效國家重點實驗室,江蘇 南京 211198)
數(shù)據(jù)分析系統(tǒng)是目前熱門的商業(yè)智能、大數(shù)據(jù)等技術和應用的關鍵[1-2],在推廣這些應用中首先必須面對的往往是對大量數(shù)據(jù)的分析處理,傳統(tǒng)的數(shù)據(jù)處理分析系統(tǒng),如SAS(Statistical Analysis System)、SPSS(Statistical Product and Service Solutions)、MATLAB(Matrix Laboratory)等主要面對的是專業(yè)人員使用,采用編程方式操作為主,用戶界面不友好。因此在原有數(shù)據(jù)分析軟件的基礎上進行軟件集成成為大家關注的焦點[3]。大多數(shù)數(shù)據(jù)分析系統(tǒng)為了提供更廣泛的數(shù)據(jù)分析支持,提供為其他語言系統(tǒng)進行訪問調(diào)用的機制,為開發(fā)各種基于數(shù)據(jù)分析的應用系統(tǒng)提供了良好的支持,提高了開發(fā)效率。
由于不同的異構(gòu)系統(tǒng)進行組合時強耦合性會帶來系統(tǒng)開發(fā)、維護和升級的困難,因此,在不同系統(tǒng)的集成過程中必須考慮降低耦合性的問題。SOA(Service-Oriented Architecture,面向服務的體系結(jié)構(gòu))架構(gòu)是目前解決該類問題的一個良好的方案[4]。在該架構(gòu)中,用Web服務(Web Service)對業(yè)務應用進行包裝,然后通過一個網(wǎng)絡平臺提供核心服務[5]。由于Web服務的平臺無關性,給系統(tǒng)的集成帶來很大的方便,基于這樣的目的,本文利用.NET系統(tǒng)和SAS/IT技術建立Web服務,然后通過ASP.NET客戶端來訪問Web服務,以Web服務接口的形式實現(xiàn)SAS的聯(lián)機分析處理功能和在線數(shù)據(jù)挖掘功能。
SAS系統(tǒng)是在國際上被廣泛使用的大型統(tǒng)計分析系統(tǒng),被譽為統(tǒng)計分析的標準軟件,SAS與微軟Windows操作系統(tǒng)下的程序語言交互主要通過SAS Integration Technology(SAS/IT)模塊實現(xiàn)[6]。SAS/IT為用戶提供訪問SAS系統(tǒng)的數(shù)據(jù)接口,該接口是符合COM(Microsoft Component Object Model,組件對象模型)標準的組件模型IOM(Integrated Object Model,集成對象模型),包含 SASIOMCommon、SASObject-Manager、SASWorkSpace 等對象[7]。通過 IOM,SAS可以和多種編程語言進行交互,如Visual Basic(包括VBA 和 VBScript)、VB.NET、Visual C++、Perl、Visual C#.NET等。用戶能夠使用行業(yè)標準語言、編程工具和通訊協(xié)議來開發(fā)程序訪問lOM服務器上的服務。
IOM集成對象模型最上層對象是SAS.workspace,每個這樣的對象都有它自己的WORK臨時庫,并且SAS.workspace對象提供了一些可用的對象,這些對象包括:dataservice對象、fileservice對象、languageservice 對象等[8]。
SAS是通過集成對象模型服務器(lOM Servers)來完成用戶客戶端對SAS核心程序的訪問。集成對象模型服務器主要包括2類服務器[9]:(1)SAS工作區(qū)服務器(SAS Workspace Server),可通過其使用SAS軟件基礎功能,如使用SAS語言,訪問SAS library等,使客戶端應用程序能夠通過應用程序編程接口提交SAS代碼;(2)SAS存儲過程服務器(SAS Stored Process Server),可以在客戶端環(huán)境中執(zhí)行“SAS存儲過程”的請求,并返回執(zhí)行的結(jié)果?!癝AS存儲過程”是可通過SAS存儲過程服務器調(diào)用的SAS程序。通過SAS存儲過程服務器,客戶端即可執(zhí)行參數(shù)化的SAS程序而無需了解SAS編程語言。
從表面上看,Web服務就是一個應用程序,它向外界暴露出一個能夠通過Web進行調(diào)用的接口,用戶可以用編程的方法通過Web調(diào)用來實現(xiàn)某個功能的應用程序。應用程序?qū)用嫔?,可以認為Web服務是一種新的Web應用程序,是自包含、自描述、模塊化的應用,可以通過互聯(lián)網(wǎng)特別是Web中被描述、發(fā)布、查找以及調(diào)用。
Web Services關鍵技術包括 XML(eXtensible Markup Language,可擴展標記語言)、SOAP(Simple Object Access Protocol,簡單對象訪問協(xié)議)、WSDL(Web Services Description Language)、UDDI(Universal Description Discovery and Integration)等[10]。XML 是一種元語言,可以用來定義和描述結(jié)構(gòu)化數(shù)據(jù),它是Web服務得以實現(xiàn)的語言基礎。Web服務使用基于XML的消息處理作為基本的數(shù)據(jù)通訊方式,以幫助消除使用不同組件模型、操作系統(tǒng)和編程語言的系統(tǒng)之間存在的差異。綁定HTTP(Hypertext Transfer Protocol,超文本轉(zhuǎn)移協(xié)議)之上的SOAP協(xié)議,是一種基于XML的、不依賴傳輸協(xié)議的、用于在應用程序之間以對象的形式交換數(shù)據(jù)的表示層通信協(xié)議。SOAP協(xié)議可以跨語言、跨操作系統(tǒng)進行遠程過程調(diào)用,實現(xiàn)了編程語言和系統(tǒng)平臺的無關性,從而大大簡化了不同系統(tǒng)之間的交互問題。WSDL采用XML格式描述Web服務,其中包括Web服務做什么、位于哪里、怎樣調(diào)用等信息。UDDI是Web服務的信息注冊規(guī)范,以便被需要該服務的用戶發(fā)現(xiàn)和使用它。故Web服務便是基于網(wǎng)絡的、分布式的模塊化組件,它執(zhí)行特定的任務,遵守具體的技術規(guī)范,這些規(guī)范使得Web服務實現(xiàn)了跨平臺整合。
SAS可以解決許多實際問題,用它進行數(shù)據(jù)分析可以大大提高運算效率,但由于SAS系統(tǒng)是針對專業(yè)用戶進行設計,其操作以編程為主,在編程操作時需要用戶對所使用的統(tǒng)計方法有較清楚的了解,非統(tǒng)計專業(yè)人員掌握起來較為困難。因此,Web Service技術與SAS結(jié)合的優(yōu)勢在于可以模塊化并跨平臺使用SAS的數(shù)據(jù)分析功能,而無需了解SAS的編程技術,簡化了SAS軟件的使用,并削減了購買SAS軟件的費用。
Web服務與SAS集成的原理如圖1所示[11]:首先,客戶端向Web服務器發(fā)送SOAP消息請求,Web服務器接受這一SOAP請求后隨即創(chuàng)建服務對象,并利用IOM編程接口使請求的存儲過程在SAS存儲過程服務器上執(zhí)行;執(zhí)行完畢后在SAS存儲過程服務器上取出結(jié)果,從而完成對SAS功能的一次調(diào)用。
圖1 Web服務與SAS集成的原理
利用SAS的IOM編程接口與.NET進行交互[12],可以在.NET系統(tǒng)中建立SAS工作空間,讀取SAS數(shù)據(jù)源,并獲取SAS分析結(jié)果,最后關閉SAS工作空間[13],從而完成Web服務與SAS之間的數(shù)據(jù)傳遞。建立SAS_Service服務的過程如圖2所示。
圖2 SAS_Service服務建立的過程
2.3.1 上傳源數(shù)據(jù)集
調(diào)用SendData方法上傳SAS源數(shù)據(jù)集到工作空間,分配WEBSVC邏輯庫引用名給上傳源數(shù)據(jù)集。其原理是ADO.NET可以把數(shù)據(jù)集(DataSet)轉(zhuǎn)換成XML格式;SAS使用XML LIBNAME工具讀取XML文件[14]。此方法使用這2項功能,將數(shù)據(jù)集從Web服務寫入到SAS服務器,然后創(chuàng)建一個指向數(shù)據(jù)集的邏輯庫引用名。
2.3.2 獲取結(jié)果數(shù)據(jù)集
基于ADO.NET和SAS的IOM數(shù)據(jù)提供程序,GetData方法可以獲取工作空間中的結(jié)果數(shù)據(jù)集。此方法也需要2個參數(shù):SAS.Workspace對象和待獲取的SAS結(jié)果數(shù)據(jù)集名稱。在此方法中,首先創(chuàng)建OleDbDataAdapter對象,然后使用SQL查詢字符串來獲取傳入SAS結(jié)果數(shù)據(jù)集中的全部數(shù)據(jù)[15]。最后,創(chuàng)建ADO.NET Dataset對象并用于填充OleDbData-Adapter對象中的數(shù)據(jù)。
在考察藥物生物等效的研究中,通常要對同一藥物不同劑型的生物利用度進行方差分析,由于方差分析運算復雜,如用手工計算,工作量大,費時費力,而且容易出錯。如果采用SAS軟件系統(tǒng)進行數(shù)據(jù)處理,編寫程序簡單,運算快速準確[16]。以下是利用SAS中ANOVA(Analysis of Variance,方差分析)過程對藥物制劑生物利用度進行方差分析的實例[17]。
當SAS運行proc anova過程時,ODS(Output Delivery System,輸出傳輸對象)輸出對象包括OverallANOVA和 ModelANOVA,其中 OverallANOVA輸出總體模型的統(tǒng)計量和P值,ModelANOVA輸出因子效應的檢驗結(jié)果。存儲過程ProcAnova.sas的代碼如下:
在ASP.NET框架中調(diào)用Web服務非常簡便,向程序中添加Web引用,就可以引用這個Web服務中的方法,就像引用類中的任何其他方法一樣[18]。首先創(chuàng)建Web Service類的一個實例SAS_Service,然后調(diào)用RunStoredProcedure方法,返回結(jié)果數(shù)據(jù)集。運行結(jié)果如圖3所示,實現(xiàn)了在線分析藥物制劑生物利用度的功能。與文獻[17]中的結(jié)果相對比,表明計算結(jié)果準確,證實了該方法的可行性。
圖3 方差分析運行結(jié)果
本文介紹了SAS/IT模塊與IOM編程接口,并說明了使用SAS/IT模塊和.NET系統(tǒng)建立Web服務的方法,最后通過實例在ASP.NET客戶端上訪問Web服務。利用上述方法,可以將SAS強大的數(shù)據(jù)分析功能和Web服務的跨平臺性結(jié)合起來,發(fā)揮這2個方面的優(yōu)勢,構(gòu)建更強大的應用系統(tǒng),以更大程度地發(fā)揮SAS的聯(lián)機分析處理功能和在線數(shù)據(jù)挖掘功能。
:
[1]李國杰.大數(shù)據(jù)研究的科學價值[J].中國計算機學會通訊,2012,8(9):8-15.
[2]謝邦昌,李揚.數(shù)據(jù)挖掘與商業(yè)智能的現(xiàn)況及未來發(fā)展[J].統(tǒng)計與信息論壇,2008(5):94-96.
[3]李相育,錢宇.基于Web服務的Matlab功能封裝模型[J].計算機工程與設計,2007,28(20):5021-5038.
[4]劉立恒.基于SOA的商業(yè)智能平臺的研究與設計[J].計算機工程,2008,34(3):75-76.
[5]吳良清,黃黎,陳建明.基于Web Services的商務智能研究[J].計算機與現(xiàn)代化,2008(1):32-35.
[6]謝肇祥.創(chuàng)建一套用于可視化作圖的應用程序[D].上海:復旦大學,2012.
[7]蔡昭權.數(shù)據(jù)挖掘中SAS和.NET系統(tǒng)的集成[J].計算機工程與設計,2007,28(22):5356-5358.
[8]Peter Eberhardt.Through the Looking Glass:Two Windows into SAS[EB/OL].http://www2.sas.com/proceedings/sugi30/003-30.pdf,2005-04-13.
[9]王楠.臨床試驗中高級統(tǒng)計方法圖形用戶界面的設計和實現(xiàn)[D].上海:復旦大學,2012.
[10]徐少平,孫駿,徐少文,等.Web服務核心協(xié)議及其實現(xiàn)[J].計算機與現(xiàn)代化,2004(5):32-34.
[11]Truls Andersen.“Min Logistikk”Using SAS BI Web Services in a Service Oriented Architecture at Norway Post Delivering Information Securely to Customers on Extranet[EB/OL].http://support.sas.com/resources/papers/proceedings09/265-2009.pdf,2009-03-25.
[12]Graham Murray.ASP.Net and SAS –A New Model for Developing Web-based SAS System Applications[EB/OL].http://www2.sas.com/proceedings/sugi30/234-30.pdf,2005-04-13.
[13]徐顯海,曹鳴.SAS與VB的集成開發(fā)方法[C]//全國自動化新技術學術交流會會議論文集(一).2005:141-145.
[14]Karine Désilets.SAS IOM and your.NET application made easy[EB/OL].http://support.sas.com/resources/papers/proceedings12/017-2012.pdf,2012-04-25.
[15]Greg Silva.Using IOM and Visual Basic in SAS Program Development[EB/OL].http://www2.sas.com/proceedings/sugi28/032-28.pdf,2003-04-02.
[16]賈元杰,胡良平,程德和.用SAS軟件實現(xiàn)交叉設計定量資料的統(tǒng)計分析[J].藥學服務與研究,2012,12(3):172-174.
[17]毛瑋,胡良平.如何用SAS軟件正確分析生物醫(yī)學科研資料IX.用SAS軟件實現(xiàn)交叉設計定量資料的統(tǒng)計分析[J].中國醫(yī)藥生物技術,2010(3):234-237.
[18]佘名高,賈秀峰,林坤江,等.基于Web服務的企業(yè)應用集成[J].計算機技術與發(fā)展,2007(5):55-58.