天天看點

WF4.0實戰(二十四):WF4定制個性化的WebService

概述:

    首先說明一下這個程式的主要功能。日常生活中,我們會大量的使用webservice。比如查天氣預報、檢視火車時刻表、航班等等。這個程式是把你自己常用的webservice放在一起,共你使用。在大家的網站中可能有一樣的功能了,不過你們實作此類似的功能一般都是通過寫死去實作的。這篇文章中,我将通過WF4是實作一個可定制化的、通用的、個性化的、動态的WebService服務程式,下面先看效果。

效果:

    啟動頁面:這裡我提供三個方法供你調用,第一個是檢測QQ是否線上,第二個是根據城市查詢天氣預報,第三個是根據站名查詢火車時刻表,如下圖所示。

<a href="http://images.cnblogs.com/cnblogs_com/zhuqil/WindowsLiveWriter/WF4WebService_E602/wf3_2.jpg"></a>

    根據選擇動态的生成webserivice需要的參數表單頁面:選擇查詢火車時刻表這項服務動态生成調用頁面,如下圖。

<a href="http://images.cnblogs.com/cnblogs_com/zhuqil/WindowsLiveWriter/WF4WebService_E602/wf4_2.jpg"></a>

    調用WebService:填寫需要的參數,查詢深圳到上海的火車,點選送出。

<a href="http://images.cnblogs.com/cnblogs_com/zhuqil/WindowsLiveWriter/WF4WebService_E602/wf5_2.jpg"></a>

    查詢深圳的天氣情況:

<a href="http://images.cnblogs.com/cnblogs_com/zhuqil/WindowsLiveWriter/WF4WebService_E602/wf7_2.jpg"></a>

    查詢一個QQ号碼是否線上:

<a href="http://images.cnblogs.com/cnblogs_com/zhuqil/WindowsLiveWriter/WF4WebService_E602/wf8_2.jpg"></a>

優點:

    之是以用WF4去做,因為有2個很大的優點。

    首先:當你将WebService引入到你的Visual Studio中之後,生成一下,WebService公布的方法就變成了WF4中的活動,你可以在WF4設計器上任你設計了。例如下圖:我在WF4應用程式中引入了4個網絡上的WebService,必須先生成一下,然後在工具欄上就顯示了這4個webserivice中的所有方法:

<a href="http://images.cnblogs.com/cnblogs_com/zhuqil/WindowsLiveWriter/WF4WebService_E602/wf1_2.jpg"></a>

    在上圖中Visual Studio中引入4個webserivice。

<a href="http://images.cnblogs.com/cnblogs_com/zhuqil/WindowsLiveWriter/WF4WebService_E602/wf2_2.jpg"></a>

    上圖是圖一中引入的Webserivice中的所有方法。

    其次:通過強大的WF4流程設計器去設計業務邏輯。這裡我以簡單的QQ狀态查詢為例。

<a href="http://images.cnblogs.com/cnblogs_com/zhuqil/WindowsLiveWriter/WF4WebService_E602/wf9_2.jpg"></a>

    它需要輸入參數:QQ号碼 String,預設QQ号碼:8698053。傳回資料:String,Y = 線上;N = 離線;E = QQ号碼錯誤;A = 商業使用者驗證失敗;V = 免費使用者超過數量。

    它隻傳回Y、N、E、A、V,WF4需要實作一個簡單的業務轉換,将Y、N、E、A、V轉換成線上、離線、QQ号碼錯誤、商業使用者驗證失敗、免費使用者超過數量。下面我使用一個WF4内置的一個Switch活動實作這個轉換,如下圖。

<a href="http://images.cnblogs.com/cnblogs_com/zhuqil/WindowsLiveWriter/WF4WebService_E602/wf10_2.jpg"></a>

上面是WF4的兩個很大的優點。

關鍵點:

下面我将叙述一下實作的關鍵點:

    1、aspx的頁面時動态生成的,如果你想添天其他的webserivice,你隻要修改處理業務的WF4的流程即可。如果WF4流程存放在DB中,可以無需編譯。動态表單生成的代碼如下:

    2、WF4流上面有4個分支。

    第一個分支用于擷取所有的WebService的名字。

    第二個分支用于根據服務中的方法名字,擷取WebService中方法的參數和傳回值的類型,在aspx端根據這些資料來動态生成表單頁面。

    第三個分支用于調用QQ是否線上webservice中的方法。

    第四個分支用于調用根據城市名擷取webserivice的方法

    第五個分支用于調用火車時刻表的方法。

    如果你想增加調用檢視飛機航班的wenserivice服務,那就很簡單了,增加一個分支就差不多了。無需改動aspx頁面的代碼。

    整個處理邏輯如下圖:

<a href="http://images.cnblogs.com/cnblogs_com/zhuqil/WindowsLiveWriter/WF4WebService_E602/wf11_4.jpg"></a>

WebService調用:

    上圖的就是我們的個性化的WebService。看下我們如何去調用這個包含其他很多其他WebService的服務。

    得到QQ線上狀态:

總結:

    主要是想示範一下用WF如何去處理網站的業務邏輯。這篇文章首先教你如何在wf4中調用webserivice;還有使用WF4對調用web serivice的結果進行了處理,如果你有興趣,不寫代碼将調用天氣預報的webserivice的結果在WF4設計器中進行處理一下;還有就是簡單的動态表單個建構;還有就是這個程式将多個webserivice聚合在一起,實作了個性化的webserivice;還可以将這個處理邏輯放在wf4的wcf服務中,将其釋出成一個真正的webserivice。

本文轉自麒麟部落格園部落格,原文連結:http://www.cnblogs.com/zhuqil/archive/2010/07/04/wf-web-service.html,如需轉載請自行聯系原作者

繼續閱讀