基于ASP.
NET与AJAX的天气预报
系统的
设计与实现
邹锋
(广州康大职业技术广东广州511363)
摘要:本系统介绍在
Asp.net中使用WebService与Ajax技术实现天气预报的
查询,本系统由于采用WebService与Ajax技术,因而可以实现实时无刷新的访问某个城市最近三天的天气状况。关键词:天气预报;Asp.net;Ajax;WebService中图分类号:TP311.52文献标识码:A文章编号:1671-7597(2011)1210114-01
随着生产技术的不断发展,准确可靠的气象预报预测产品将对社会
经济发展、国家安全和可持续发展提供重要的保障。重大气象灾害的预警、气象相关灾害和突发公共事件的预警和应急、农业生产和粮食安全、航天飞行与航空、气候变化影响预估、地面交通、重点工程建设、旅游等涉及人们生产生活的重要领域无不需要天气预报系统准确可靠的预报预测结论和建议。传统获得天气预报的信息主要偏向于看电视,听广播,但这样对于不在电视旁边或者不听广播的人们来说要想获得天气预的信息,非常的不方便,随着Web技术的发展,采用B/S架构开发基于Asp.net与Ajax的天气预报系统成为相关应用的首选。1系统架构本系统以B/S为架构、以MicrosoftVisualStudio2005作为开发平台、以C#作为开发语言、以Ajax技术实现无刷新页面技术、以WebService实时获取中国气象局天气状况数据,从而实现天气的预报,本系统结构图如图1所示。
3系统实现3.1省/洲查询的实现省/洲查询主要是通过getSupportDataSet来调用asmx文件中相关省/洲信息,并且设置了默认为广东省(代号为:24),默认城市为广州市(代号为:59287),具体实现如下:usingcn.com.
webxml.www;//引入命名空间Cn.com.webxml.www.WeatherWebServicemyobj=newcn.com.webxml.Www.WeatherWebService();//实例化protectedvoidPage_L
oad(objectsender,EventArgse){try{DataSetds=myobj.getSupportDataSet();if(!Page.IsPostBack){DataTableprovinceTable=ds.Tables[0];DataViewprovinceView=newDataView(ds.Tables[0]);Province.DataSource=provinceView;……Province.DataBind();……CityDataBind("24");//默认为省Weather("59287");//默认为广州市}}catch(Exceptionex){Title.Text="城市数据有错误!";}}3.2城市查询的实现城市查询主要是经过省/洲相关设置,再通过getSupportDataSet来调用asmx文件中相关省/洲对应的城市信息,具体实现如下:protectedvoidCityDataBind(stringzoneID){DataSetds=myobj.getSupportDataSet();DataViewcityView=newDataView(ds.Tables[1]);cityView.RowFilter="[ZoneID]="+zoneID;City.DataSource=cityView;……City.DataBind();City.Items.Insert(0,newListItem("选择城市","0"));(下转第58页)
图1基于ASP.NET与AJAX的天气预报系统的结构图2系统分析与设计2.1系统功能需求分析本系统分为省/洲查询模块与城市查询模块。其中省/洲查询查询模块主要包括中国各个省、直辖市以及世界其他的几大洲;城市查询模块主要构据所选的省/洲后自动生成相对应的各个城市,当选择相应的城市后会自动显示相关城市的天气信息。2.2XML设计可扩展的标记语言XML是WebService平台中表示数据的基本格式。除了易于建立和易于分析外,XML主要的优点在于它既与平台无关,又与厂商无关。WebService平台是用XSD来作为数据类型系统的,如想让它使用在不同平台和不同
软件的不同组织间传递,可以利用SOAP在HTTP上实现实时远程调用数据,比如省洲与城市的相关信息。2.3界面设计本系统用到的控件有DropDownList控件、Image控件、Label控件、ScriptManager与UpdatePanel控件。其中DropDownList控件是产生省与城市的下拉
列表选择、Image控件是显示相关天气状况的图片、Label控件是显示相关的文字信息、ScriptManager主要管理Web窗体页上的脚本,以及基于ASP.NETAjax的服务器端和客户的控件;UpdatePanel控件在本系统中作为一个容器使用,主要实现局部更新功能,而不需要刷新整个Web窗体页。