基于Web API的气象业务数据接口的开发和实现

2017-03-06 20:20吴孟春周捷朱忠勇
电子技术与软件工程 2016年23期

吴孟春 周捷 朱忠勇

摘 要

Web API是核心ASP.NET平台的一部分,让你能够快速而方便地创建Web服务,以便为HTTP客户端提供API。本文简单的介绍了Asp.net Web API 相关的概念,及它的优点和应用环境,并通过Web API接口开发的实例和方法,阐述如何在asp.net MVC中使用Web API实现气象数据接口的开发,并以详细的步骤和代码展示了应用Web API接口框架的开发过程。

【關键词】Web API WCF API控制器 气象业务数据

本文简单介绍了如何在asp.net MVC中使用Web API实现气象数据接口的开发,并以完整步骤和代码展示了应用Web API接口框架的开发过程。

1 前言

在气象局域网中的业务数据应用可通过数据库和文件直接调用,但为外部门提供数据共享和服务时通常采用数据接口,这样扩展性好,便于维护,而且有利于数据源的安全。如通常应用的Web service和WCF数据接口。而如今互联网和无线网络的快速发展,为气象应用和服务提供了更多的平台,如手机终端、平板电脑以及多媒体预警信息发布终端,网站、手机APP、微信等。面对越来越多的基于互联网模式的应用,Web API便是一种快捷的提供数据服务的接口方式。

2 Web API

2.1 Web API简介

Web API是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端如浏览器,手机和平板电脑等移动设备终端以及传统的桌面应用程序等框架,如图1所示。Web API是一种用于在.NET Framework上构建RESTful应用程序的理想平台,构建HTTP服务提供强大的数据服务。

2.2 Web API和WCF的比较

WCF和Web Service都是基于SOAP的,主要的数据格式是XML,支持HTTP协议,主要部署在IIS上,且配置比较复杂;而Web API则是一个轻量级的HTTP服务的新框架。如果所部署的服务是基于TCP的,需支持更多的传输机制,可选择WCF;如果平台不支持SOAP和WS-*协议的时候,则可选择Web API。也就是说,构建一个跨平台的服务,使用WCF,如通过专线构建与水利局、环保局的数据服务;构建基于因特网的服务,那么就使用Web API,如通过互联网的微信、手机终端等。

3 气象数据接口设计

由于气象业务的不断扩展,气象微信、手机和平板电脑的移动APP,安装在乡镇、社区和公共场所的气象预警信息发布终端;安装公共场所的多媒体信息机等等这些通过互联网的气象应用和服务终端都需要实时的气象数据,那么构建Web API,可解决远程的数据实时传输和交互,就可为各应用提供实时的数据接口服务。

3.1 业务数据服务

常用于数据应用服务的气象业务数据主要有实况数据、天气预报、台风信息、预警信息及各种气象分析数据,这些数据主要用于WEB网站、微信、各移动终端、桌面应用平台等。图2为气象业务数据流程图。

在应用服务流程图中,构建Web API层作为一个气象数据的公共的接口层,可以保证接口提供的应用层的数据一致性。再通过业务逻辑层整合数据存储和数据访问层,调用数据库所存储的各类数据。这样构建的Web API的接口层就能为所有接入的客户端提供丰富的数据接口,从而实现快捷灵活的接入。

3.2 Web API的开发

Vs2012以后的版本都已引入了ASP.NET Web API技术。Web API用于提供REST风格的WebService,新建立的WebAPI项目,包含主要的Models、Views、Controllers等文件夹和Global.asax文件,和MVC项目一样。Models目录项主要用于保存Service和Client交互的对象,这些对象会被转换为Json数据格式进行数据传输;Controllers目录中所对应的Controller继承API的ApiController,用于添加方法,用于提供各种数据服务;Global.asax用于配置路由规则。

3.2.1 建立Web API项目

运行Vs2012,新建项目,选择ASP.net MVC4 Web应用程序,再选择Web API

3.2.2 建立控制器文件,添加action

在建立的项目里面有自动生成的webapi模版,其中App_Start文件夹下WebApiConfig.cs和RouteConfig.cs文件主要配置api的路由信息。Controllers文件夹下的文件为api的实现文件。在Controllers文件夹下新建控件器文件QxDataApiController.cs,我们可以在Controller目录上创建更多的应用API控制器,其中的QxDataApi是Controller在路由中使用的名称。在文件中新加入两个Get方法的api为例,一个不带参数的方法,一个带参数的方法。

※不带参数的方法

//返回当天市区天气预报

[System.Web.Http.HttpGet]

public tqyb wztqybdata()

{

tqyb tq=null;

SqlConnection sqlconn= new SqlConnection();

sqlconn.ConnectionString = configuration.AppSettings.Settings["sqlconn"].Value.ToString().Trim();

SqlCommand sqlCmd = new SqlCommand();

sqlCmd.CommandType = CommandType.Text;

sqlCmd.CommandText = "SELECT TOP(1) station,Forecasttime,forecastdata FROM TqybData ORDER BY ID DESC";

sqlCmd.Connection = sqlconn;

sqlconn.Open();

SqlDataReader sr=sqlCmd.ExecuteReader();

while (sr.Read())

{

tq = new tqyb();

tq.station= sr.GetValue(0).ToString();

tq.Forecasttime =DateTime.Parse(sr.GetValue(1).ToString());

tq.forecastdata= sr.GetValue(2).ToString();

}

sqlconn.Close();

}

※帶参数的方法

//以站点做为参数,返回站点所对应最新时次的雨量,气温,湿度。

// http://localhost:31087/api/QxDataApi/zdzdata/?station=58659

[System.Web.Http.HttpGet]

public zdzinfo zdzdata(string station)

{

zdzinfo zdz= null;

SqlConnection sqlconn = new SqlConnection();

……….

sqlconn.Close();

return zdz;

}

3.2.3 修改WebApiConfig.cs文件

默认的路由路径是routeTemplate:"api/{controller}/{id}",当要写多个方法时,就需要修改配置,加入Action。在WebApiConfig.cs文件中配置路由路径:routeTemplate: "api/{controller}/{Action}/{id}",其中,controller:QxDataApi,action:写的方法名,id:传入的参数。

3.3 IIS下部署WebAPI

在服务器上安装了IIS服务,并且安装了.net4.5。打开IIS信息服务管理器

右击网站,点击添加网站(转化成应用程序),配置好后确保应用程序池的.net版本是.net 4.5(在IIS里面显示为4.0);然后点击高级设置,确定我们的应用程序池是我们的4.0,然后打开Web.Config在下面增加一行 然后重启网站,这样WebAPI就部署完成了。部署后调用http://服务器IP/api/QxDataApi/{应用方法}。

4 结语

数据是一个业务部门的核心,数据共享也是各部门加强合作的一个重要途径,而开发和开放数据接口则是解决通过网络传输数据和数据访问的一个重要方法。当前,随着互联网和智能终端应用的不断增多,应用Web API技术开发轻量级的数据接口是一种基于HTTP服务、开放性强、数据集成高的数据共享应用方法。

参考文献

[1]http://www.cnblogs.com/r01cn/p/3772990.html.

[2]https://msdn.microsoft.com/zh-cn/library/hh833994(v%3Dvs.108).aspx.

[3][美]内格尔等著,李铭译.C#高级编程(第9版)[M].北京:清华大学出版社,2014:1416-1443.

作者单位

温州市气象局 浙江省温州市 325027