吳孟春 周捷 朱忠勇

摘 要
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在
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