close

使用PB11.2以上的版本去開發.NET Web Forms應用,PB程式設計師無須花費任何額外的程式撰寫功夫,產出的Web應用就自動包含有AJAX(Asynchronous JavaScript and XML)機制,所謂的AJAX簡單的說就是一種可以提高網頁效能的技術,具體的作法就是限制網頁更新時的區域。傳統的網頁進行頁面更新時,哪怕是僅有局部更新的需求,但實際上網頁伺服器還是會將整個網頁重送到客戶端,可以想像當更新操作的需求非常頻繁時,就會導致許多不必要的網路傳輸負荷以及使用者必須花費許多時間等待新頁面產生等問題。
因此AJAX技術聰明之處就是將整個網頁頁面切割為數個小塊區域,每次更新時僅針對某個小區域進行更新,其他區域則保持不變,如此一來就能減少每次更新時資料的傳輸量,再者AJAX機制是非同步運作的,與傳統網頁差異就在於,使用者不用等整個頁面重新下載完成才能操作頁面中的功能,AJAX重載時,使用者還是可以繼續操作其他沒有被更新的區塊,這使得我們可以不用再頻頻看著整頁空白的瀏覽器發呆。
AJAX詳細的技術網路上資料非常豐富,本文就不詳述了,筆者這裡想要分享的是PB11.2以上版本中如何開發出內建AJAX機制的ASP .NET網頁,SYBASE官方宣稱PB11.2以上能夠開發具有AJAX機制的ASP .NET應用,但是找來找去又沒有什麼文件說明要怎麼開發,導致PB程式設計師開發時摸不著頭緒,不知道該如何去運用這個內建的機制去增加他們網站的效能。筆者也面臨相同的情況,不過幸好找到了一份文件,大致上把它翻譯了一下,放上來供大家參考。
這一篇文章您可以在SYBASE官網的Support & Services →Product Manuals→PB11.2→Deploying Applications and Components to .NET→Overview and Configuration of .NET Targets→Configuring ASP .NET for a .NET Project→Installing AJAX Extension下找到(如下圖所示)。 

20090720_pb_01.jpg 

原則上,使用PB11.2開發ASP .NET頁面,程式設計師根本無須做任何額外的事,開發出來的Web應用本身就會自動嵌入AJAX機制,這樣的方式有利有弊,好處是程式設計師不必急忙投入學習AJAX技術就可以開發相關應用,但糟糕的部份是你沒辦法對針對特殊的需求進行任何的客制化,筆者看過PB11.5版本的說明,我們甚至無法設定回歸為傳統的同步處理網頁,簡單的說,在PB11.5的版本裡,開發ASP.NET頁面一定會內含AJAX技術,且整個頁面的特性是非同步處理的。
在PB11.2中,唯一能夠控制AJAX表現的地方就在.NET Web Forms Project中的Configuaration屬性頁,程式設計師僅僅能在AJAX訊息視窗是否呈現以及呈現的樣式作文章,如果您不想讓AJAX update等待訊息出現的話,把PBAjaxWaitingMessage屬性清空便可達到目的。

20090720_pb_02.jpg 

其他關於PB內建的AJAX觀念,原文翻譯如下:
AJAX如何運作:
UpdatePanels:
所有的容器控制項(Container Controller;如:Windows、Tabs和UserObjects)和DataWindow控制項之中都包含有UpdatePanels,筆者補充一下UpdatePanels是Visual Studio 2008新增的控制項,目的在讓VS2008能夠開發出AJAX的網頁應用,UpdatePanels在VS2008中的圖示如下。下圖中左圖所示為ScriptManager,雖然在PB之中完全沒有必要觸及這一個控制項,但它必須與UpdatePanel一起使用,因此在這裡順便介紹,這個控制項負責控制客戶端頁面的AJAX資源,例如下載AJAX Library到客戶端瀏覽器,以及局部資料更新的控制等。

20090720_pb_03.jpg 

在PB中去開發內涵AJAX機制的ASP.NET應用,其基本觀念與在VS2008中開發AJAX網頁應用是一樣的,因此我們可以透過下圖中VS2008的AJAX頁面開發流程去想像一下,在VS2008中如果有某個資料表需要套用AJAX機制,則我們必須將該控制項拖曳到UpdatePanels之中。

20090720_pb_04.jpg 

因此,PB中那些內含UpdatePanel的控制項,它們基本上都具有一個相同的特性,當它們之中若有任何的使用者介面被改動,則該容器控制項或DataWindow控制項區域就會進行局部的更新。而當UpdatePanel以巢狀式的結構存在時(例如tab控制項中擺放DataWindow控制項),則外層的UpdatePanel更新,內層的UpdatePanel也會連動更新,但反過來的話,內層的UpdatePanel更新則不會影響到外層UpdatePanel。
在設計上,為了增進效能,PB程式設計師可以將物件及控制項放到Tabs控制項及使用者自訂的可視物件(User Objects)之中,以減少頁面中必須更新的區域大小,另一方面,盡量減少容器控制項的中擺放的Objects和Controls數目,則當包裹這些物件的外層UpdatePanel進行更新時,因需要被提交更新的項目少,也能增進效能。
DataWindows:
在PB中,最小單位的UpdatePanel其實就是單一存在的容器控制項或DataWindow,但因為無論是DataWindow Object或DataWindow Control,它們都不是繼承自PowerObject類別,因此就定義上PB並沒有將他們歸之為同一類,但他們運作的特性基本上是一樣的。
以Master/detail類型的DataWindows為例,因他們是被包裹在不同的UpdatePanels中,則當Master報表被更新時,並不會影響到Detail報表,而當Detail報表被更新時,同樣的Master報表的內容也不受影響,它們彼此間是相互獨立的。
筆者在這裡做一簡單的結論,基本上,PB11.2以上版本開發ASP.NET不需學習額外的程式轉寫方法,一切開發方式都照舊,唯一需要注意的是程式設計師必須理解UpdatePanel如何嵌入在PB容器控制項、DataWindow以及它們更新運作的相互關係,這樣才能開發出有更好效能的頁面。

 


f
arrow
arrow
    全站熱搜

    mpuser 發表在 痞客邦 留言(1) 人氣()