基于Web服务的SAS与.NET系统集成开发研究
2014-08-23胡建华
胡 双,陆 涛,胡建华
(1.中国药科大学理学院,江苏 南京 211198;2.中国药科大学天然药物活性组分与药效国家重点实验室,江苏 南京 211198)
0 引言
数据分析系统是目前热门的商业智能、大数据等技术和应用的关键[1-2],在推广这些应用中首先必须面对的往往是对大量数据的分析处理,传统的数据处理分析系统,如SAS(Statistical Analysis System)、SPSS(Statistical Product and Service Solutions)、MATLAB(Matrix Laboratory)等主要面对的是专业人员使用,采用编程方式操作为主,用户界面不友好。因此在原有数据分析软件的基础上进行软件集成成为大家关注的焦点[3]。大多数数据分析系统为了提供更广泛的数据分析支持,提供为其他语言系统进行访问调用的机制,为开发各种基于数据分析的应用系统提供了良好的支持,提高了开发效率。
由于不同的异构系统进行组合时强耦合性会带来系统开发、维护和升级的困难,因此,在不同系统的集成过程中必须考虑降低耦合性的问题。SOA(Service-Oriented Architecture,面向服务的体系结构)架构是目前解决该类问题的一个良好的方案[4]。在该架构中,用Web服务(Web Service)对业务应用进行包装,然后通过一个网络平台提供核心服务[5]。由于Web服务的平台无关性,给系统的集成带来很大的方便,基于这样的目的,本文利用.NET系统和SAS/IT技术建立Web服务,然后通过ASP.NET客户端来访问Web服务,以Web服务接口的形式实现SAS的联机分析处理功能和在线数据挖掘功能。
1 相关技术介绍
1.1 SAS系统与IOM集成对象模型
SAS系统是在国际上被广泛使用的大型统计分析系统,被誉为统计分析的标准软件,SAS与微软Windows操作系统下的程序语言交互主要通过SAS Integration Technology(SAS/IT)模块实现[6]。SAS/IT为用户提供访问SAS系统的数据接口,该接口是符合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等。用户能够使用行业标准语言、编程工具和通讯协议来开发程序访问lOM服务器上的服务。
IOM集成对象模型最上层对象是SAS.workspace,每个这样的对象都有它自己的WORK临时库,并且SAS.workspace对象提供了一些可用的对象,这些对象包括:dataservice对象、fileservice对象、languageservice 对象等[8]。
SAS是通过集成对象模型服务器(lOM Servers)来完成用户客户端对SAS核心程序的访问。集成对象模型服务器主要包括2类服务器[9]:(1)SAS工作区服务器(SAS Workspace Server),可通过其使用SAS软件基础功能,如使用SAS语言,访问SAS library等,使客户端应用程序能够通过应用程序编程接口提交SAS代码;(2)SAS存储过程服务器(SAS Stored Process Server),可以在客户端环境中执行“SAS存储过程”的请求,并返回执行的结果。“SAS存储过程”是可通过SAS存储过程服务器调用的SAS程序。通过SAS存储过程服务器,客户端即可执行参数化的SAS程序而无需了解SAS编程语言。
1.2 Web Service技术
从表面上看,Web服务就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的接口,用户可以用编程的方法通过Web调用来实现某个功能的应用程序。应用程序层面上,可以认为Web服务是一种新的Web应用程序,是自包含、自描述、模块化的应用,可以通过互联网特别是Web中被描述、发布、查找以及调用。
Web Services关键技术包括 XML(eXtensible Markup Language,可扩展标记语言)、SOAP(Simple Object Access Protocol,简单对象访问协议)、WSDL(Web Services Description Language)、UDDI(Universal Description Discovery and Integration)等[10]。XML 是一种元语言,可以用来定义和描述结构化数据,它是Web服务得以实现的语言基础。Web服务使用基于XML的消息处理作为基本的数据通讯方式,以帮助消除使用不同组件模型、操作系统和编程语言的系统之间存在的差异。绑定HTTP(Hypertext Transfer Protocol,超文本转移协议)之上的SOAP协议,是一种基于XML的、不依赖传输协议的、用于在应用程序之间以对象的形式交换数据的表示层通信协议。SOAP协议可以跨语言、跨操作系统进行远程过程调用,实现了编程语言和系统平台的无关性,从而大大简化了不同系统之间的交互问题。WSDL采用XML格式描述Web服务,其中包括Web服务做什么、位于哪里、怎样调用等信息。UDDI是Web服务的信息注册规范,以便被需要该服务的用户发现和使用它。故Web服务便是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web服务实现了跨平台整合。
SAS可以解决许多实际问题,用它进行数据分析可以大大提高运算效率,但由于SAS系统是针对专业用户进行设计,其操作以编程为主,在编程操作时需要用户对所使用的统计方法有较清楚的了解,非统计专业人员掌握起来较为困难。因此,Web Service技术与SAS结合的优势在于可以模块化并跨平台使用SAS的数据分析功能,而无需了解SAS的编程技术,简化了SAS软件的使用,并削减了购买SAS软件的费用。
2 基于Web服务的SAS与.NET系统集成
2.1 Web服务与SAS集成的原理
Web服务与SAS集成的原理如图1所示[11]:首先,客户端向Web服务器发送SOAP消息请求,Web服务器接受这一SOAP请求后随即创建服务对象,并利用IOM编程接口使请求的存储过程在SAS存储过程服务器上执行;执行完毕后在SAS存储过程服务器上取出结果,从而完成对SAS功能的一次调用。
图1 Web服务与SAS集成的原理
2.2 SAS_Service服务的建立
利用SAS的IOM编程接口与.NET进行交互[12],可以在.NET系统中建立SAS工作空间,读取SAS数据源,并获取SAS分析结果,最后关闭SAS工作空间[13],从而完成Web服务与SAS之间的数据传递。建立SAS_Service服务的过程如图2所示。
图2 SAS_Service服务建立的过程
2.3 SAS与.NET系统集成的主要方法
2.3.1 上传源数据集
调用SendData方法上传SAS源数据集到工作空间,分配WEBSVC逻辑库引用名给上传源数据集。其原理是ADO.NET可以把数据集(DataSet)转换成XML格式;SAS使用XML LIBNAME工具读取XML文件[14]。此方法使用这2项功能,将数据集从Web服务写入到SAS服务器,然后创建一个指向数据集的逻辑库引用名。
2.3.2 获取结果数据集
基于ADO.NET和SAS的IOM数据提供程序,GetData方法可以获取工作空间中的结果数据集。此方法也需要2个参数:SAS.Workspace对象和待获取的SAS结果数据集名称。在此方法中,首先创建OleDbDataAdapter对象,然后使用SQL查询字符串来获取传入SAS结果数据集中的全部数据[15]。最后,创建ADO.NET Dataset对象并用于填充OleDbData-Adapter对象中的数据。
3 实例应用
在考察药物生物等效的研究中,通常要对同一药物不同剂型的生物利用度进行方差分析,由于方差分析运算复杂,如用手工计算,工作量大,费时费力,而且容易出错。如果采用SAS软件系统进行数据处理,编写程序简单,运算快速准确[16]。以下是利用SAS中ANOVA(Analysis of Variance,方差分析)过程对药物制剂生物利用度进行方差分析的实例[17]。
3.1 存储过程的建立
当SAS运行proc anova过程时,ODS(Output Delivery System,输出传输对象)输出对象包括OverallANOVA和 ModelANOVA,其中 OverallANOVA输出总体模型的统计量和P值,ModelANOVA输出因子效应的检验结果。存储过程ProcAnova.sas的代码如下:
3.2 访问Web服务
在ASP.NET框架中调用Web服务非常简便,向程序中添加Web引用,就可以引用这个Web服务中的方法,就像引用类中的任何其他方法一样[18]。首先创建Web Service类的一个实例SAS_Service,然后调用RunStoredProcedure方法,返回结果数据集。运行结果如图3所示,实现了在线分析药物制剂生物利用度的功能。与文献[17]中的结果相对比,表明计算结果准确,证实了该方法的可行性。
图3 方差分析运行结果
4 结束语
本文介绍了SAS/IT模块与IOM编程接口,并说明了使用SAS/IT模块和.NET系统建立Web服务的方法,最后通过实例在ASP.NET客户端上访问Web服务。利用上述方法,可以将SAS强大的数据分析功能和Web服务的跨平台性结合起来,发挥这2个方面的优势,构建更强大的应用系统,以更大程度地发挥SAS的联机分析处理功能和在线数据挖掘功能。
:
[1]李国杰.大数据研究的科学价值[J].中国计算机学会通讯,2012,8(9):8-15.
[2]谢邦昌,李扬.数据挖掘与商业智能的现况及未来发展[J].统计与信息论坛,2008(5):94-96.
[3]李相育,钱宇.基于Web服务的Matlab功能封装模型[J].计算机工程与设计,2007,28(20):5021-5038.
[4]刘立恒.基于SOA的商业智能平台的研究与设计[J].计算机工程,2008,34(3):75-76.
[5]吴良清,黄黎,陈建明.基于Web Services的商务智能研究[J].计算机与现代化,2008(1):32-35.
[6]谢肇祥.创建一套用于可视化作图的应用程序[D].上海:复旦大学,2012.
[7]蔡昭权.数据挖掘中SAS和.NET系统的集成[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]王楠.临床试验中高级统计方法图形用户界面的设计和实现[D].上海:复旦大学,2012.
[10]徐少平,孙骏,徐少文,等.Web服务核心协议及其实现[J].计算机与现代化,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的集成开发方法[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软件实现交叉设计定量资料的统计分析[J].药学服务与研究,2012,12(3):172-174.
[17]毛玮,胡良平.如何用SAS软件正确分析生物医学科研资料IX.用SAS软件实现交叉设计定量资料的统计分析[J].中国医药生物技术,2010(3):234-237.
[18]佘名高,贾秀峰,林坤江,等.基于Web服务的企业应用集成[J].计算机技术与发展,2007(5):55-58.