国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于.NET Web Service的動態(tài)接口設(shè)計(jì)與實(shí)現(xiàn) 

2016-11-07 21:21:21丁易難
軟件導(dǎo)刊 2016年9期

摘要:由于智能手機(jī)的普及和社會信息化的不斷發(fā)展,人們希望能通過手機(jī)或者平板的APP對原有B/S架構(gòu)的信息化系統(tǒng)進(jìn)行操作,因此這些系統(tǒng)就需要為移動端的APP提供訪問系統(tǒng)內(nèi)部業(yè)務(wù)邏輯的接口,而如何為APP快速高效地提供這些接口一直是個(gè)難題。如果服務(wù)器只向外界暴露一個(gè)接口,而外部應(yīng)用只需通過調(diào)用該接口就可以完成服務(wù)器中所有的業(yè)務(wù)邏輯,則會大大降低接口的開發(fā)時(shí)間和成本。該類接口被稱為“動態(tài)接口”,設(shè)計(jì)并實(shí)現(xiàn)了基于Web Service的動態(tài)接口,以提高接口開發(fā)效率。

關(guān)鍵詞:APP;Web Service;動態(tài)接口

DOIDOI:10.11907/rjdk.161484

中圖分類號:TP319

文獻(xiàn)標(biāo)識碼:A文章編號文

章編號:16727800(2016)009008203

基金項(xiàng)目基金項(xiàng)目:

作者簡介作者簡介:丁易難(1991-),男,安徽安慶人,西安工程大學(xué)計(jì)算機(jī)科學(xué)學(xué)院碩士研究生,研究方向?yàn)橛?jì)算機(jī)應(yīng)用開發(fā)。

0引言

目前,大部分企業(yè)都搭建有自己的信息化平臺,B/S架構(gòu)的跨平臺性和易用性,使得B/S架構(gòu)被廣泛應(yīng)用。然而,隨著移動網(wǎng)絡(luò)技術(shù)及移動設(shè)備性能的快速發(fā)展,“移動辦公”越來越受到企業(yè)青睞。很多企業(yè)都紛紛希望能擁有一個(gè)手機(jī)APP版的企業(yè)信息化平臺,該平臺向外界提供一個(gè)訪問系統(tǒng)內(nèi)部的BLL層(Business Logic Layer)的接口,以便其它形式的用戶終端調(diào)用。在.NET平臺下,一般都是采用微軟提供的Web Service技術(shù),向外界暴露接口。一般情況下,系統(tǒng)開發(fā)者會在Web Service層里,將系統(tǒng)中BLL層的每個(gè)類中的每個(gè)方法寫一個(gè)同樣的Web Method為外界終端提供訪問內(nèi)部BLL層的接口。但是,一個(gè)系統(tǒng)的業(yè)務(wù)邏輯眾多,會有大量的業(yè)務(wù)邏輯的對象和方法。使用上述方法,會導(dǎo)致開發(fā)人員的工作量巨大。如果能在Web Service里,只寫一個(gè)Web Method,即在本系統(tǒng)的Web Service層中只向外界提供一個(gè)接口,通過外部終端向服務(wù)器調(diào)用此接口,并傳遞相關(guān)參數(shù),進(jìn)而“動態(tài)地”調(diào)用系統(tǒng)內(nèi)部已實(shí)現(xiàn)的各種業(yè)務(wù)邏輯方法,就會節(jié)省開發(fā)人員為系統(tǒng)開發(fā)接口而耗費(fèi)的大量的工作時(shí)間。鑒于此,本文主要闡述了如何在基于.NET平臺的Web Service技術(shù)下,完成上述“動態(tài)接口”設(shè)計(jì)與實(shí)現(xiàn)。

1相關(guān)技術(shù)

1.1Web Service

Web Service是一種跨編程語言和跨操作系統(tǒng)平臺的遠(yuǎn)程調(diào)用技術(shù)[1]。Web Service技術(shù)能使得運(yùn)行在不同機(jī)器上的不同應(yīng)用無須借助附加的、專門的第三方軟件或硬件, 就可相互交換數(shù)據(jù)或集成。依據(jù)Web Service規(guī)范的實(shí)施應(yīng)用, 無論它們所使用的語言、 平臺或內(nèi)部協(xié)議是什么, 都可以相互交換數(shù)據(jù)[2]。Service是自描述、 自包含的可用網(wǎng)絡(luò)模塊, 可以執(zhí)行具體的業(yè)務(wù)功能。Web Service也很容易部署, 因?yàn)樗鼈兓谝恍┏R?guī)的產(chǎn)業(yè)標(biāo)準(zhǔn)以及已有的一些技術(shù),諸如標(biāo)準(zhǔn)通用標(biāo)記語言下的子集XML、HTTP。Web Service減少了應(yīng)用接口的花費(fèi),為整個(gè)企業(yè)甚至多個(gè)組織之間業(yè)務(wù)流程的集成提供了一個(gè)通用機(jī)制。

1.2JSON

JSON是一個(gè)輕量級的數(shù)據(jù)交換負(fù)載格式[3]。它是基于JavaScript編程語言ECMA-262 3rd Edition-December 1999標(biāo)準(zhǔn)的一種輕量級數(shù)據(jù)交換格式,主要用于跟服務(wù)器進(jìn)行數(shù)據(jù)交換。與XML相比,JSON更加簡單和靈活[4]。JSON還具有可讀性、可擴(kuò)展性和編碼解碼難度低等特點(diǎn)。因此,本文設(shè)計(jì)的基于Web Service的動態(tài)接口所傳遞的參數(shù)中,或者返回的結(jié)果中若有系統(tǒng)的對象實(shí)體Model,則需要將其轉(zhuǎn)成JSON格式的字符串,以方便客戶端和服務(wù)端解析。

1.3.NET反射技術(shù)

反射是C#.Net中獲取運(yùn)行時(shí)類型信息的方式[5],它也是.NET中的重要機(jī)制,提供了封裝程序集、模塊和類型的對象(Type類型)??梢允褂梅瓷鋭討B(tài)創(chuàng)建類型的實(shí)例,將類型綁定到現(xiàn)有對象,或從現(xiàn)有對象獲取類型并調(diào)用其方法或訪問其字段和屬性。

2基于Web Service的動態(tài)接口實(shí)現(xiàn)原理

如圖1所示,“動態(tài)接口”的基本實(shí)現(xiàn)原理是,客戶端在調(diào)用Web Service提供的接口時(shí),客戶端的代理類會把調(diào)用的相關(guān)數(shù)據(jù)封裝成SOAP協(xié)議(簡單對象訪問協(xié)議)的XML格式,通過HTTP協(xié)議向服務(wù)器端傳遞相關(guān)參數(shù)(例如調(diào)用業(yè)務(wù)邏輯層的名稱、方法以及方法參數(shù)),服務(wù)器端接收到這些參數(shù)并解析后,通過使用反射技術(shù),動態(tài)地創(chuàng)建要調(diào)用業(yè)務(wù)邏輯的方法所在類的實(shí)例,再通過該類的實(shí)例調(diào)用其方法,最后通過網(wǎng)絡(luò)將方法的執(zhí)行結(jié)果返回給調(diào)用方,從而實(shí)現(xiàn)后臺業(yè)務(wù)邏輯的“動態(tài)”調(diào)用。

3動態(tài)接口具體實(shí)現(xiàn)

(1)創(chuàng)建Web Service。首先在Visual Stdio中新建一個(gè)Web項(xiàng)目,然后新建一個(gè)Web Service類(后綴名為.asmx),取名為DyInterface.asmx。

(2)定義WebMethod。實(shí)現(xiàn)“動態(tài)接口”需要用到.NET的反射機(jī)制,而在使用反射技術(shù)時(shí),程序需要知道反射調(diào)用的是哪個(gè)類的哪一個(gè)方法,并且調(diào)用的方法可能需要傳遞參數(shù),因此需要在Web Service類中定義這個(gè)動態(tài)接口的WebMethod時(shí)需要定義3個(gè)形參:bllName(業(yè)務(wù)邏輯的類名稱)、methodName(要動態(tài)調(diào)用的業(yè)務(wù)邏輯類中的方法名稱)、param(方法的參數(shù))。具體定義動態(tài)接口方法的C#代碼如下:

[WebMethod]

public string InVoke(string bllName,string methodName,string param)

{

//ToDo...

}

(3)創(chuàng)建外部客戶端需要調(diào)用的業(yè)務(wù)邏輯類的實(shí)例。要調(diào)用類中的方法,就要獲得這個(gè)類的實(shí)例。傳統(tǒng)實(shí)例的方法一般是通過關(guān)鍵字new來獲得,然而通過new獲得類的實(shí)例需在程序中事先寫好,但是動態(tài)接口并不會提前知道客戶端需要調(diào)用的是哪個(gè)業(yè)務(wù)邏輯類,所以通過傳統(tǒng)new的方式獲得類實(shí)例不能滿足本次接口設(shè)計(jì)需求。因此只有通過形參bllName的值才能知道需要調(diào)用是哪一個(gè)業(yè)務(wù)邏輯的類,再利用反射技術(shù),載入業(yè)務(wù)邏輯層的程序集(BLL),再通過CreateInstance的方法,動態(tài)地生成該業(yè)務(wù)邏輯類的實(shí)例。代碼如下:

dynamic bll = Assembly.Load("BLL").CreateInstance("BLL" + bllName)

這里利用了C#的動態(tài)類型的關(guān)鍵字“dynamic”,來接受創(chuàng)建的業(yè)務(wù)層的實(shí)例。該動態(tài)類型是在程序運(yùn)行期間,動態(tài)獲取示實(shí)例的具體類型,從而避免了類型強(qiáng)制轉(zhuǎn)換的步驟。

(4)解析所調(diào)用方法中的具體參數(shù)。由于是基于Web Service的動態(tài)接口設(shè)計(jì),且面向的是不同平臺的客戶端,因此為了屏蔽不同平臺差異性,本次動態(tài)接口的param參數(shù)定義為string類型。由于本次設(shè)計(jì)的動態(tài)接口只提供了一個(gè)調(diào)用方法參數(shù)的形參(param),這樣,當(dāng)調(diào)用業(yè)務(wù)邏輯層的方法時(shí),需要傳遞的參數(shù)有多個(gè),或者傳遞的是系統(tǒng)中的對象實(shí)體(Model)時(shí),就需要預(yù)先約定好參數(shù)傳遞的格式,以便在Web Service中解析它們。因此,參數(shù)(param)格式可以這樣約定:如果要調(diào)用的業(yè)務(wù)邏輯方法有N個(gè)參數(shù),則依次按原方法參數(shù)的順序參數(shù)排放好,并以“*”隔開;如果有些參數(shù)是系統(tǒng)中的對象實(shí)體,則將其轉(zhuǎn)成JSON形式的字符串,并在JSON串前面加一個(gè)"@"符號,以區(qū)分普通參數(shù)與實(shí)體對象參數(shù)。若要調(diào)用的方法沒有參數(shù),則傳空值。依照上述約定,就可以解析這些參數(shù)了,具體代碼如下:

List list = new List();

if (!string.IsNullOrEmpty(param)){//判斷參數(shù)是否為空

string[] pars = param.Split(*);//將參數(shù)分開

foreach (string s in pars){//遍歷參數(shù)

if (s.StartsWith("@")){查詢是否有Json格式的model字符串

switch (bllName){ //如果發(fā)現(xiàn)有json串,則把json串轉(zhuǎn)成相對應(yīng)的mode case"業(yè)務(wù)邏輯類1":

//把處理好的參數(shù)加入到list集合中

list.Add(JSONHelper.GetModelFromJSON<業(yè)務(wù)邏輯類名1.Model>(s.Remove(0, 1)));

case"業(yè)務(wù)邏輯類2":

//把處理好的參數(shù)加入到list集合中

list.Add(JSONHelper.GetModelFromJSON<業(yè)務(wù)邏輯類名2.Model>(s.Remove(0, 1))); break;

//....Todo(根據(jù)系統(tǒng)中具體業(yè)務(wù)邏輯類的數(shù)量自行調(diào)整)

default:

list.Add(JSONHelper.GetModelFromJSON(s.Remove(0, 1)));

break;

}

}

else{

list.Add(s);//把處理好的參數(shù)加入到list集合中,以便后面調(diào)用方法的時(shí)候用

}

}

}

這里需要說明的是,程序中在JSON轉(zhuǎn)成實(shí)體類中需要傳入實(shí)體類的泛型,由于泛型不確定,需要在程序中使用switch語句通過判斷參數(shù)BllName來確定泛型,根據(jù)系統(tǒng)業(yè)務(wù)的具體情況,可添加多個(gè)case關(guān)鍵字來判斷。上述代碼case后面的業(yè)務(wù)邏輯類和JSON轉(zhuǎn)Model的泛型可以根據(jù)不同的系統(tǒng)替換成不同業(yè)務(wù)邏輯層的名稱及其對應(yīng)的實(shí)體類型的泛型。

(5)調(diào)用客戶端需要調(diào)用的業(yè)務(wù)邏輯方法。利用反射技術(shù),將經(jīng)過處理后的參數(shù)集合list轉(zhuǎn)成Array型,再傳入業(yè)務(wù)邏輯對象實(shí)例(bll)中,進(jìn)而通過methodName的值,動態(tài)地反射調(diào)用外部客戶端想要調(diào)用的業(yè)務(wù)邏輯方法,最后將執(zhí)行結(jié)果以json串的形式返回給系統(tǒng)外部客戶端。具體代碼如下:

Return JSONHelper.ReturnStringToJSON(bll.GetType().GetMethod(methodName).Invoke(bll, list.ToArray()).ToString(), true, 200)

將上述代碼放入第二步所定義的WebMethod的方法體中,最終將該Web Service發(fā)布到服務(wù)器上,供系統(tǒng)外部終端調(diào)用。由第一步命名可知,本次接口的地址為:http://(服務(wù)器地址)/DyInterface.asmx。由于各種移動平臺都實(shí)現(xiàn)了對Web Service進(jìn)行訪問的功能,因而只要客戶端拿到該接口的地址,即可按照文中描述的規(guī)則對該動態(tài)接口進(jìn)行遠(yuǎn)程調(diào)用。

由以上實(shí)現(xiàn)過程可以看到,在本次創(chuàng)建的Web Service中只有一個(gè)WebMethod方法,而外部終端只需通過對該WebMethod進(jìn)行遠(yuǎn)程調(diào)用,然后傳遞不同的業(yè)務(wù)邏輯層的類名稱(bllName)和類中的方法名稱(methodName)以及約定好的格式參數(shù)(param),即可完成系統(tǒng)中各種不同的業(yè)務(wù)邏輯,從而完成本文預(yù)期的動態(tài)接口設(shè)計(jì)。

4結(jié)語

隨著智能手機(jī)與網(wǎng)絡(luò)通信技術(shù)的普及,以及社會信息化建設(shè)進(jìn)程的加快,越來越多的已經(jīng)搭建完成的信息化系統(tǒng),需要從單一的Web端擴(kuò)展到各式各樣的移動設(shè)備APP端,以便用戶方便快捷地使用信息化系統(tǒng)的功能。因此,服務(wù)器基于Web Service技術(shù)向移動設(shè)備APP端提供的信息化系統(tǒng)業(yè)務(wù)接口,這項(xiàng)需求將會越來越多。例如,在已投入使用的西安市畢業(yè)生就業(yè)服務(wù)綜合管理系統(tǒng)已經(jīng)利用此項(xiàng)技術(shù),向正在研發(fā)該系統(tǒng)對應(yīng)的學(xué)生模塊APP的研發(fā)方,提供了這種動態(tài)接口?;赪eb Service的動態(tài)接口設(shè)計(jì),系統(tǒng)研發(fā)方不再需要對每個(gè)業(yè)務(wù)邏輯提供單獨(dú)的業(yè)務(wù)接口,節(jié)省了大量時(shí)間,極大提高了接口的開發(fā)效率。因此,本文設(shè)計(jì)的基于.NET Web Service技術(shù)的動態(tài)接口具有較高應(yīng)用價(jià)值。

參考文獻(xiàn):

[1]魏小林,張鐵軍,曹晶,等.利用Web Service技術(shù)構(gòu)建醫(yī)院信息系統(tǒng)接口[J].中國數(shù)字醫(yī)學(xué),2014,9(6):2729.

[2]王向方,武偉,唐偉媛.WebService技術(shù)在企業(yè)中的應(yīng)用[J].電腦編程技巧與維護(hù),2015(2):9194.

[3]屈展,李嬋.JSON在Ajax數(shù)據(jù)交換中的應(yīng)用研究[J].西安石油大學(xué)學(xué)報(bào):自然科學(xué)版,2011,26(1):9598.

[4]谷方舟,沈波.JSON數(shù)據(jù)交換格式在異構(gòu)系統(tǒng)集成中的應(yīng)用研究[J].鐵路計(jì)算機(jī)應(yīng)用,2012,21(2):14.

[5]郭慶華,朱戰(zhàn)立.利用C#.Net反射技術(shù)實(shí)現(xiàn)軟件界面動態(tài)存儲[J].電腦知識與技術(shù),2010(3):634635.

責(zé)任編輯(責(zé)任編輯:孫娟)

軟件開發(fā)與應(yīng)用
BP神經(jīng)網(wǎng)絡(luò)在軟件質(zhì)量評價(jià)中的應(yīng)用研究 
基于句子多種特征的相似度計(jì)算模型
基于結(jié)構(gòu)方程模型改進(jìn)ARMA模型參數(shù)估計(jì)
基于改進(jìn)遺傳算法的軟件測試用例自動生成
一種改進(jìn)的風(fēng)光互補(bǔ)發(fā)電系統(tǒng)MPPT控制方法
發(fā)動機(jī)內(nèi)部EGR建模與仿真分析
無線傳感器網(wǎng)絡(luò)定位技術(shù)可靠性分析
應(yīng)用于公司輿情分析的改進(jìn)概念圖算法 
算法與語言
基于興趣預(yù)測和熱點(diǎn)分析的聯(lián)合推薦算法研究 
基于分塊DWT和SVD的魯棒性數(shù)字水印算法
基于噴泉碼的機(jī)會多播調(diào)度算法研究
基于矩陣分解的興趣點(diǎn)推薦算法研究
一種改進(jìn)的基于位置的推薦算法
八數(shù)碼問題解法效率比較及改進(jìn)研究 
一種改進(jìn)粒子群算法的測試數(shù)據(jù)自動生成方法
多數(shù)據(jù)庫中的間接關(guān)聯(lián)規(guī)則挖掘算法
基于Spark平臺的熱點(diǎn)話題發(fā)現(xiàn)算法并行化研究
LSort字符排序算法研究
軟件設(shè)計(jì)與開發(fā)
基于增強(qiáng)現(xiàn)實(shí)技術(shù)的導(dǎo)航系統(tǒng)研究
風(fēng)三地面應(yīng)用系統(tǒng)運(yùn)維輔助系統(tǒng)設(shè)計(jì) 
基于VMWARE的市縣地震通云平臺設(shè)計(jì)與實(shí)現(xiàn)
基于Android—x86的windows恢復(fù)系統(tǒng)研究與設(shè)計(jì)
基于GPS和iBeacon的智能校園信息發(fā)布平臺設(shè)計(jì)與實(shí)現(xiàn)
Android手機(jī)主題設(shè)計(jì) 
基于ASP.NET的就業(yè)見習(xí)管理信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于Android的一鍵智能報(bào)警系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 
基于.NET Web Service的動態(tài)接口設(shè)計(jì)與實(shí)現(xiàn) 
基于社交可視化的高校民族預(yù)科學(xué)生管理評價(jià)系統(tǒng)研究
基于設(shè)計(jì)模板的鍋筒參數(shù)化設(shè)計(jì)系統(tǒng)開發(fā)
基于工作流的水運(yùn)應(yīng)急信息管理平臺設(shè)計(jì) 
基于無線安全的智能鎖具及其軟件控制系統(tǒng) 
基于物聯(lián)網(wǎng)ZigBee技術(shù)的智能家居監(jiān)控系統(tǒng) 
基于WebGIS的“多規(guī)合一”輔助決策支持系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
基于ASP.NET標(biāo)準(zhǔn)的采購管理系統(tǒng)研究
基于Android的青少年監(jiān)護(hù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 
基于Android的招生報(bào)名系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 
一種基于CRM理念的雙向推薦就業(yè)平臺設(shè)計(jì)
計(jì)算機(jī)輔助教學(xué)網(wǎng)站設(shè)計(jì)與實(shí)現(xiàn)
基于云服務(wù)的加密式門禁系統(tǒng)設(shè)計(jì)
鋁材B2B電子商務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) 
基于物聯(lián)網(wǎng)的無線測溫模塊設(shè)計(jì)
應(yīng)用技術(shù)與研究
CMMI在智慧校園人事系統(tǒng)開發(fā)中的應(yīng)用 
水下機(jī)器人深度控制研究
基于UWB的自主跟隨機(jī)器人定位方法 
軟件項(xiàng)目管理中工期問題研究 
大數(shù)據(jù)時(shí)代網(wǎng)絡(luò)信息資源開發(fā)利用策略研究
國外開放獲取平臺對我國科技期刊OA發(fā)展的啟示
基于MapReduce的城市道路旅行時(shí)間短時(shí)預(yù)測 
數(shù)據(jù)庫與信息處理
數(shù)據(jù)中心服務(wù)器運(yùn)行狀態(tài)監(jiān)控系統(tǒng)研究 
語音情感識別綜述
基于離散型Hopfield神經(jīng)網(wǎng)絡(luò)的聯(lián)想記憶能力研究 
學(xué)生成績管理系統(tǒng)數(shù)據(jù)查詢優(yōu)化方法研究 
信息安全
石化工控信息網(wǎng)絡(luò)安全區(qū)域識別與防護(hù)
基于Hermite插值的多密鑰共享協(xié)議 
基于色域差分與伽馬校正的交通燈識別 
圖像學(xué)與輔助設(shè)計(jì)
一種基于引導(dǎo)濾波和MNF的高光譜遙感圖像分類方法
深度學(xué)習(xí)算法應(yīng)用于巖石圖像處理的可行性研究
一種基于局部直方圖匹配的深度編碼濾波算法
水下大壩裂縫圖像分割方法研究 
計(jì)算機(jī)與網(wǎng)絡(luò)教學(xué)
基于信息安全等級保護(hù)的信息安全綜合實(shí)訓(xùn)教學(xué)研究
國際化高校聯(lián)盟體系下結(jié)構(gòu)化MOOC框架 
智能手機(jī)在大學(xué)生移動學(xué)習(xí)中的應(yīng)用研究
高校計(jì)算機(jī)軟件專業(yè)資格考試輔導(dǎo)教學(xué)探討 
基于工程教育認(rèn)證的《軟件工程》課程教學(xué)質(zhì)量建設(shè)研究 
數(shù)據(jù)庫課程微課設(shè)計(jì)及應(yīng)用
《Oracle數(shù)據(jù)庫》課程教學(xué)模式探究 
Node.js與Express技術(shù)在計(jì)算機(jī)課程教學(xué)中的應(yīng)用 
基于網(wǎng)絡(luò)資源的《物聯(lián)網(wǎng)工程導(dǎo)論》課程教學(xué)改革
混合學(xué)習(xí)模式及其實(shí)施要點(diǎn) 
Scratch教學(xué)研究綜述 
《算法設(shè)計(jì)與分析》課程翻轉(zhuǎn)課堂教學(xué)模式探究 
公司地址: 北京市西城區(qū)德外大街83號德勝國際中心B-11

客服熱線:400-656-5456??客服專線:010-56265043??電子郵箱:longyuankf@126.com

電信與信息服務(wù)業(yè)務(wù)經(jīng)營許可證:京icp證060024號

Dragonsource.com Inc. All Rights Reserved

icp

伊春市| 明星| 大新县| 元朗区| 青河县| 毕节市| 枞阳县| 罗城| 大渡口区| 额尔古纳市| 霸州市| 台北市| 清水河县| 桃江县| 昌吉市| 宁安市| 封丘县| 老河口市| 那曲县| 威宁| 南丹县| 海晏县| 江城| 南漳县| 泰顺县| 西吉县| 东山县| 顺平县| 松潘县| 绥中县| 武隆县| 定兴县| 屯昌县| 太仆寺旗| 荔波县| 桦南县| 德安县| 柞水县| 靖远县| 西青区| 哈尔滨市|