基于Web服务的SPSS与.NET系统集成开发

2017-01-20 09:28李五俊胡建华
软件 2016年4期
关键词:WEB服务统计分析

李五俊 胡建华

摘要:为了把SPSS强大的统计分析功能应用在特定应用领域的数据处理系统中,利用SPSS的可编程扩展机制与.NET进行交互集成,将所需的SPSS的统计分析功能封装为可被调用的web服务。通过客户端程序调用Web服务,向SPSS提供数据源和处理请求,并反馈SPSS处理结果。通过药物分析中的线性回归分析实例验证了该方法的可行性,能大大降低软件开发成本。

关键词:Web服务;SPSS编程扩展;.NET集成开发;统计分析

中图分类号:TP31;TP39 文献标识码:A DOI:10.3969/j.issn.1003-6970.2016.04.005

0 引言

随着信息技术的发展成熟,无论是科学研究领域还是生产服务领域对数据分析的重要性越来越重视,通过对业务数据的分析挖掘,可以为科学研究人员或企业组织的领导者提供更好的决策支持。如何把现有的数据分析处理软件功能集成到待开发的领域软件或系统中,降低软件开发成本,缩短开发周期,提高软件开发效率是近年来软件技术人员关注的焦点,已有相关的一些成果。SPSS不但提供了丰富的算法来帮助用户完成各种各样的统计分析任务,还支持多种语言的集成接口,使第三方软件系统开发商能够以高性能、低成本的方式,把SPSS集成到其软件产品中,从而可以根据需要调用SPSS强大的统计分析功能。由于不同的异构系统在集成过程中的强耦合性会带来系统开发、维护和升级的困难。因此,在不同系统的集成过程中必须考虑降低耦合性的问题。Web服务能够实现不同系统之间良好的互操作,并且具有即时装配、松散耦合、自动集成的能力。它的平台和语言中立性使得跨平台的互操作、系统的整合更加容易。

因此本文通过NET平台将SPSS的部分统计分析功能设计成Web服务,通过访问Web服务的形式完成SPSS功能的集成。将SPSS集成开发成Web服务,在用户操作界面可以将功能操作和结果展现做的更加简单、直观、容易理解,即使非专业的统计分析人员也可以很容易的使用。同时WEB服务的共享性,还可以降低SPSS投资和使用费用。

1 相关技术介绍

1.1 SPSS的可编程性扩展及.NET插件

SPSS(statistical Analysis System)是目前应用广泛、功能强大的通用统计分析软件,提供了大量的统计分析方法。但SPSS学习掌握困难,需要用户要求较高数理知识和编程能力。为了方便SPSS与其他应用系统的集成,SPSS提供了灵活的外部编程技术支持。外部编程语言和SPSS的交互是通过SPSS提供的SDK(Software Development Kit),该SDK主要由两个动态链接库文件SPSSXD API和SPSSDXAPI构成。SPSS通过SPSSDX API,即spssdx.dll动态链接库程序来把其他外部编程语言集成在其系统内部,这不是本文讨论的主题。

SPSS通过SPSSXD API来实现外部语言程序访问SPSS功能。SPSS提供了一系列的插件(plug-in)程序,如python plug-in,R plug-in,.Net plug-in。通过这些支持不同语言或平台的插件,经过SPSSXD API在后台激活和控制SPSS。

SPSS的.NET插件提供了两个.NET程序集(Assemblies)。SPSS.BackendAPI.dll是用来启动SPSS内部接口的动态库(spssxd.dll),使得在基于.NET平台的应用程序语言中可以使用SPSSXD API。而SPSS.BackendAPI.Controller.dll包装了底层的SPSS功能接口并且暴露给SPSS.BackendAPI.dll,它提供的功能包括启动SPSS,执行SPSS语法命令,读取和写人数据,创建SPSS输出等。SPSS使用自身的命令语言Syntax驱动SPSS做各种统计分析工作,可以读取数据,进行数据处理以及进行统计分析。Syntax语句类似SQL语句,语句灵活,执行效率高,可以嵌入到SPSS所支持的外部通用语言中。

1.2 Web Service技术

软件系统构建过程中,特别是在Internet环境的软件系统下,模块之间的强耦合会给软件的维护与升级带来不利的影响。因此,软件行业内提出了面向服务的体系结构(SOA),把软件功能模块以服务形式进行封装,按照业务逻辑组合服务完成软件功能。Web服务(Web Services)是目前在Internet环境下实现面向服务的体系结构(SOA)的主要技术,通过跨平台、松散耦合的Web Services之间进行相互调用和集成来实现软件功能目标。XML是Web Service的核心技术,XML为Web Service提供了统一的数据格式,从而帮助消除使用不同组件模型、操作系统和编程语言的系统之间存在的差异,可以满足Web客户端、桌面客户端以及移动客户端软件的开发。

根据不同领域对数据分析处理的需要,编写相关的SPSS统计应用程序。然后将这些特定SPSS的统计应用在.NET平台下封装成为Web服务,就可以在Internet或Intranet环境中进行Web服务的发布、发现、动态绑定等,从而实现SPSS统计应用功能的组件化。通过绑定和共享这些服务可以方便快捷的实现SPSS的跨平台集成。从而使SPSS的强大的统计分析功能可以借助Web服务实现网络化,不再局限于点对点的服务模式。

2 基于Web服务的SPSS与.NET系统集成

2.1 SPSS与.NET的集成原理

SPSS与.NET的集成原理如图l所示。

安装SPSS提供的SPSS Statistics NetPlugln插件程序后,在.NET应用程序中就可以加载和引用SPSS.BackendAPI.dll和SPSS.BackendAPI.Controlller.dll类库文件中所提供的访问SPSS的各种类。在SPSS.BackendAPI.Controlller类库中的Processor类是十分关键的一个类。通过Processor类可以创建一个控制SPSS的控制器(processor)实例对象,利用控制器(processor)实例对象的submit方法向SPSS提交Syntax命令以及需要处理的数据。

Processor类的实例对象必须通过SPSS后台库文件spssxd.dll驱动SPSS来处理提交的命令。SPSS根据Syntax命令来完成数据的统计分析后,把图、转轴表等统计分析结果以OXML(Output XML)形式输出。提取分析结果首先要通过OMS(Output Man-agement System)命令将生成的分析结果以OXML的形式存储到XML工作空间。通过Processor类的EvaluateXPath(Xpath)方法可以从XML工作空间将所需的结果提取出来,其中Xpath表达式指定了所需结果的具体位置,提取出来的结果以一维字符串数组的形式保存。最后通过Processor类的StopSPSS方法结束SPSS的一次调用。

2.2 SPSS Service服务的建立

为了更好的利用SPSS资源,在SPSS与.NET集成的基础上,进一步把集成的程序模块按照一定的逻辑功能封装为具有特定任务的Web服务。这些Web服务可以发布在Internet或Intranet上,供其他软件或系统调用访问。从而实现SPSS计算资源的共享,同时也解决了系统集成和软件架构的耦合性问题,对系统或软件的维护、升级或重用有着积极的意义。参见图2。

.NET集成开发环境提供了快速方便的Web服务创建过程。开发人员只要编写核心的业务逻辑程序代码,.NET系统可以直接完成服务的封装和发布等操作。

3 实例应用

3.1 Web服务建立

在药学领域经常用到对药物的某成分的含量及和其有关的效应进行相关及回归分析,从而来对药物进行分析预测。下面以一元线性回归模型的计算分析为例创建Web服务,该服务的一个接口方法名为regressionAnalyze,通过输入数据文件路径(filepath),因变量(dependent)和自变量(indepentent),获得DataTable类型的分析结果数据。

[WebMethod]

public DataTable

regressionAnalyze(stringfilepath,string dependent,string indepentent)

{

private SpssPlugln p=new SpssPlugln();

//创建SPSS插件对象

p.Plugln();

//载入插件程序,启动SPSS通信

p.SpssProcessor.Submit("GET FILE'"+filepath+…"'.");//通过SpssProcessor提交数据集

string[] cmds=getSyntaxString(dependent,inde-pendent);//构建SPSS Syntax命令

p.SpssProcessor.Submit(cmds);//提交命令

string[] XpathString=getXpathString();

//构建XPath表达式

//通过Processor类的EvaluateXPath方法提取分析结果

sting[][] analysisValue=new string[XpathString.Length][];

for(int i=0;i

{analysis Value[]=(string[])p.spssProcessor.EvaluateXPath("desctable","/outputTree",XpathString[i]);}

return coefftable;

//并将分析结果以DataTable的形式返回

p.SpssProcessor.StopSPSS();//关闭SPSS

通过ASENET设计Web客户端程序。Web客户端向Web服务器发送Web服务请求,Web服务器接受请求后,载入.NET插件程序创建SPSS控制器对象。通过SPSS控制器启动SPSS通信并上传源数据集、提交Syntax命令,SPSS执行命令完成统计分析后将分析结果输出到XML工作空间。SPSS控制器从XML工作空间提取分析结果并将结果返回给客户端程序。见图3。

3.2 结果分析

为了验证本方法所获结果的正确性,本文采用文献中所提供的数据,实现对药学数据的线性回归分析功能。程序运行的界面和运行结果如图4所示。页面上部是数据的输入部分,选择数据文件和确定因变量和自变量后提交。页面下部是由SPPS计算并返回的结果和图形。与文献中的结果对比表明计算结果准确,证实了该方法的可行性。

4 结束语

本文介绍了以.NET为开发运行平台对SPSS软件进行集成的二次开发技术,并且提出以Web服务调用的方式访问SPSS强大的分析处理功能,最后用Web客户端上访问Web服务实例验证了本文方法的可行性。实验结果证明可以将SPAA强大的统计分析功能和web服务的跨平台性结合起来,发挥这两个方面的优势,构建更强大的应用系统,以更大程度地发挥SPSS的分析处理和数据挖掘功能。

猜你喜欢
WEB服务统计分析
如何发挥新时期统计工作的作用之我见
以统计分析为基础的房地产税收优化分析
基于Proteus的嵌入式以太网Web服务虚拟实验的设计与实现