本發(fā)明的實施例總體上涉及Web技術,并且更具體地,涉及用于在運行時支持微件的跨容器移動的方法和系統(tǒng)。
背景技術:隨著Web技術的不斷發(fā)展,微件(widget)已經(jīng)在Web應用中得到了日益廣泛的使用。在此使用的術語“微件”是指可以由用戶或者過程(在具有授權的情況下)嵌入到第三方Web界面中的獨立應用。這里所稱的“Web界面”包括但不限于網(wǎng)頁或者任何基于Web的應用的交互界面。微件允許用戶向網(wǎng)頁或者Web應用添加個性化的和/或可定制的動態(tài)內(nèi)容。作為一個示例,用戶可以在Web界面上添加與天氣信息有關的微件“天氣預報”,以用于從相應的天氣信息提供方訪問與天氣情況有關的數(shù)據(jù)并將其動態(tài)顯示在Web界面上。微件通常使用諸如JavaScript、Flash、HTML、CSS等Web技術實現(xiàn),并且可以基于Web瀏覽器或者微件引擎所提供的API來執(zhí)行各種操作。一般而言,微件包括定義文件和資源文件等組成。微件的定義文件例如是可擴展標記語言(XML)文件,描述widget的屬性、事件以及視圖等;而資源文件例如可以包括JS文件、層疊樣式表(CSS)文件等。在Web界面上,微件通常被布置在稱為“容器”(container)的對象中?!叭萜鳌碧峁┯糜诶L制和管理微件的功能以及相關聯(lián)的類(例如,JavaScript類)。例如,一個微件容器可以管理一個Web界面內(nèi)的一組微件,解析每個微件的定義并且創(chuàng)建相應的封裝以便將微件繪制在Web界面中。微件容器還可以管理微件的生命周期以及處理共享對象,等等。以Web瀏覽器應用為例,Web瀏覽器應用 所顯示的每個網(wǎng)頁可以與一個微件容器相關聯(lián),該微件容器用于管理和控制駐留于該實例或標簽所顯示的頁面內(nèi)的微件。在本文中,微件容器對微件的管理和控制可稱為“托管”。在使用過程中,用戶往往期望在運行時(runtime)用戶界面內(nèi)移動已經(jīng)被繪制的微件。在此上下文中使用的術語“運行時”是指在微件被開發(fā)完成之后投入使用的狀態(tài),例如被部署和繪制之后。例如,實現(xiàn)這種微件運行時移動的一種常見手段是拖放(Drag-and-Drop,DnD)操作。用戶例如可以利用鼠標之類的指點設備選擇要移動的微件(例如,通過按下鼠標左鍵)。此后,用戶可以利用指點設備拖動被選中的微件(例如,通過在鼠標左鍵保持按下的情況下移動鼠標的光標)直到達到目標位置。響應于拖放完成指示(例如,通過釋放鼠標左鍵),微件被移動到目標位置。然而,目前微件的運行時移動只能在相同的容器內(nèi)進行,而無法跨容器實現(xiàn)。仍以Web瀏覽器應用為例,如上所述,Web瀏覽器應用的一個實例或者標簽通常與一個微件容器相關聯(lián)。由此,在現(xiàn)有技術中用戶無法將Web瀏覽器應用的一個實例或標簽中已經(jīng)部署和繪制的微件移動到Web瀏覽器應用的另一實例或標簽中??梢岳斫?,微件的開發(fā)者可以在開發(fā)期間通過例如在不同容器和應用之間拷貝微件代碼而將微件部署在不同的容器中。然而,這種方式對于終端用戶而言是不適用的,因為終端用戶無法獲得微件的源代碼。換言之,在現(xiàn)有技術中,微件在不同容器之間的移動只能由開發(fā)者在開發(fā)和/或維護期間實現(xiàn),而終端用戶無法在運行時通過交互的方式在不同的容器之間移動微件。上述問題給用戶的使用和操作帶來了不便。例如,用戶可能在一個Web瀏覽器實例所顯示的頁面中添加了一個“天氣預報”微件,并且進行了特定的個性化設置。在這種情況下,如果用戶希望在另一Web瀏覽器實例所顯示的頁面中使用同樣的微件,則他必須重新執(zhí)行整個添加和設置過程,而不能通過移動來復用已經(jīng)部署和設置好的微件。
技術實現(xiàn)要素:鑒于現(xiàn)有技術中存在的上述問題,本領域中需要一種在運行時支持微件的跨容器移動的解決方案。為此,本發(fā)明的實施例提供一種在運行時控制微件的方法和系統(tǒng)。在本發(fā)明的第一方面,提供一種用于在運行時控制微件的方法,該微件由第一微件容器托管。該方法包括:在運行時在該第一微件容器處檢測將該微件移動到第二微件容器的指示,該第二微件容器不同于該第一微件容器;以及響應于檢測到該指示而向該第二微件容器移動該微件以便使得該微件在運行時變?yōu)橛稍摰诙⒓萜魍泄?。在本發(fā)明的第二方面,提供一種用于在運行時控制微件的方法,該微件由第一微件容器托管。該方法包括:在運行時在不同于該第一微件容器的第二微件容器處檢測將該微件移動到第二微件容器的指示;以及響應于檢測到該指示而從該第一微件容器接收該微件以便在運行時由該第二微件容器托管該微件。在本發(fā)明的第三方面,提供一種用于在運行時控制微件的系統(tǒng),該微件由第一微件容器托管。該系統(tǒng)包括:第一指示檢測裝置,配置用于在運行時在該第一微件容器處檢測將該微件移動到第二微件容器的指示,該第二微件容器不同于該第一微件容器;以及微件移動裝置,配置用于響應于檢測到該指示而向該第二微件容器移動該微件以便使得該微件在運行時變?yōu)橛稍摰诙⒓萜魍泄?。在本發(fā)明的第四方面,提供一種用于在運行時控制微件的系統(tǒng),該微件由第一微件容器托管。該系統(tǒng)包括:第二指示檢測裝置,配置用于在運行時在不同于該第一微件容器的第二微件容器處檢測將該微件移動到第二微件容器的指示;以及微件托管裝置,配置用于響應于該指示而從該第一微件容器接收該微件以便在運行時由該第二微件容器托管該微件。通過下文描述將會理解,利用本發(fā)明的實施例,允許用戶在運 行時跨容器移動微件,即,將已經(jīng)部署和運行在一個微件容器中的微件移動到另一微件容器,即使目的地微件容器原本并不支持該微件。從應用的角度考慮,用戶例如可以通過拖放操作將一個Web界面中的微件移動到另一Web界面中。特別地,根據(jù)本發(fā)明的某些實施例,在運行時被移動的微件可以在移動前后在不同的微件容器中保持數(shù)據(jù)和狀態(tài)的一致性。以此方式,與現(xiàn)有技術相比,本發(fā)明的實施例能夠為Web應用的微件操作提供更大的便捷性和靈活性。附圖說明通過參考附圖閱讀下文的詳細描述,本發(fā)明實施例的上述以及其他目的、特征和優(yōu)點將變得易于理解。在附圖中,以示例性而非限制性的方式示出了本發(fā)明的若干實施例,其中:圖1示出了根據(jù)本發(fā)明一個示例性實施例的用于在運行時在第一微件容器處將目前由其托管的微件移動到第二微件容器的方法100的示意性流程圖;圖2示出了根據(jù)本發(fā)明另一示例性實施例的用于在運行時在第一微件容器處將目前由其托管的微件移動到第二微件容器的方法200的示意性流程圖;圖3示出了根據(jù)本發(fā)明一個示例性實施例的用于在運行時在第二微件容器處從第一微件容器接收目前由第一微件容器托管的微件的方法300的示意性流程圖;圖4示出了根據(jù)本發(fā)明另一示例性實施例的用于在運行時在第二微件容器處從第一微件容器接收目前由第一微件容器托管的微件的方法400的示意性流程圖;圖5示出了根據(jù)本發(fā)明一個示例性實施例的用于在運行時在第一微件容器處將目前由其托管的微件移動到第二微件容器的系統(tǒng)500的示意性框圖;圖6示出了根據(jù)本發(fā)明一個示例性實施例的用于在運行時在第二微件容器處從第一微件容器接收目前由第一微件容器托管的微件 的系統(tǒng)600的示意性框圖;以及圖7示出了適于用來實現(xiàn)本發(fā)明實施例的示例性計算系統(tǒng)700的示意性框圖。具體實施方式下面將參考附圖中示出的若干示例性實施例來描述本發(fā)明的原理和精神。應當理解,給出這些實施例僅僅是為了使本領域技術人員能夠更好地理解進而實現(xiàn)本發(fā)明的思想,并非以任何方式限制本發(fā)明的范圍。首先參考圖1,其示出了根據(jù)本發(fā)明一個示例性實施例的用于在第一微件容器處將目前由第一微件容器托管的微件移動到第二微件容器的方法100的流程圖。可以理解,方法100例如可由當前托管微件的第一微件容器或其關聯(lián)方/過程來執(zhí)行。方法100開始之后,在步驟S102,在當前托管微件的第一微件容器處,在運行時檢測將微件移動到第二微件容器的指示,其中第二微件容器不同于第一微件容器。根據(jù)本發(fā)明的實施例,微件可以是任何目前已知或者將來開發(fā)的、可以被部署和繪制在Web界面(例如,網(wǎng)頁)上以用于呈現(xiàn)數(shù)據(jù)和/或與用戶交互的應用。微件可以采用任何適當?shù)恼Z言和Web技術來開發(fā)。本發(fā)明的范圍在這些方面均不受限制。在執(zhí)行步驟S102之前,微件由第一微件容器來托管。這里使用的術語“托管”是指對微件的創(chuàng)建、設置、繪制、交互、銷毀等各個階段的操作進行管理和控制。根據(jù)本發(fā)明的實施例,負責托管微件的容器可以駐留在Web應用客戶端(例如,Web瀏覽器)一側,也可以駐留在提供Web服務的服務器一側。一個Web界面或者Web應用例如與一個微件容器相關聯(lián),并且每個微件容器例如可以托管一個或多個微件。特別地,根據(jù)本發(fā)明的實施例,步驟S102處檢測的指示是運行時指示。換言之,這種指示是在微件被部署和繪制之后由終端用戶 在使用期間提供的。這與開發(fā)者在開發(fā)和/或維護期間通過訪問和修改源代碼來控制微件具有實質(zhì)性區(qū)別。在步驟S102,將微件從第一微件容器移動到第二微件容器的運行時指示例如可以是針對該微件的跨容器拖動操作。作為示例,用戶可以通過鼠標之類的左鍵指點工具點擊第一微件容器內(nèi)的一個微件,并且在左鍵保持按下狀態(tài)的同時開始拖動操作。一旦指點設備的光標移動出了當前微件容器的范圍,則認為發(fā)生了微件的跨容器移動。如本領域技術人員知道的,在Web應用中,拖動操作是一個得到普遍支持的常見操作。在本發(fā)明的實施例中,通過利用拖動事件充當微件的跨容器移動的觸發(fā)事件,能夠實現(xiàn)與現(xiàn)有Web應用和微件的兼容。而且,在這樣的實施例中,方法100的步驟可由負責拖動事件的處理機(handler)來執(zhí)行,這還將在下文詳述。注意,以拖動事件作為微件的跨容器移動的觸發(fā)事件僅僅是示例性的。備選地或附加地,例如可以在Web界面上提供相應的控件(例如,下拉列表、復選框、文本輸入框,等等),以供用戶選擇將要移動的微件以及移動的目的地容器。其他實現(xiàn)方式同樣是可行的,本發(fā)明的范圍在此方面不受限制。作為移動操作的目的地,第二微件容器是不同于第一微件容器的另一微件容器。例如,二者可以與Web瀏覽器應用(相同類型或者不同類型)的不同實例相關聯(lián),或者同一Web瀏覽器應用實例的不同標簽相關聯(lián)。接下來,方法100進行到步驟S104,在此響應于在步驟S102檢測到的指示,將微件從第一微件容器移動到第二微件容器,以便使得該微件在運行時變?yōu)橛傻诙⒓萜魍泄?。換言之,通過執(zhí)行步驟S104,先前在第一微件容器內(nèi)被繪制和操作的微件被添加到了第二微件容器內(nèi),并且由第二微件容器來控制和管理其繪制、設置、交互等各種操作。在步驟S104,為了將微件的托管方從第一微件容器在運行時變更為第二微件容器,一種簡單可行的方式是將該微件的HTML代碼 在運行時從第一微件容器遞送給第二微件容器。作為示例,例如可以基于超文本鏈接語言(HTML)第5版(HTML5)在運行時在微件容器之間遞送HTML代碼。具體而言,在HTML5中存在稱為DataTransfer(數(shù)據(jù)傳送)的對象和相應的方法調(diào)用,可以用于跨容器(例如,跨瀏覽器)來遞送數(shù)據(jù)。在現(xiàn)有技術中,終端用戶無法在運行時跨容器移動微件主要是因為:微件的信息(例如,代碼、定義,等等)是由托管該微件的微件容器來管理和維護的,而現(xiàn)有技術中不支持跨容器遞送微件的這些信息。根據(jù)本發(fā)明的實施例,借助于HTML5之類的運行時跨容器數(shù)據(jù)遞送機制,克服和解決了這一問題。注意,基于HTML5的實現(xiàn)僅僅示例性的,任何目前已知或者將來開發(fā)的支持跨容器或者跨瀏覽器遞送數(shù)據(jù)的技術手段均可與本發(fā)明的實施例結合使用。例如,可以預想到的是,在HTML5之后的各個HTML語言后續(xù)版本中,也將會具有類似的功能,因此也可以用來實踐本發(fā)明。另外,在本發(fā)明的可選實施例中,可以從第一微件容器向第二微件容器遞送與該微件有關的附加和/或備選信息。例如,微件的詳細定義(包括布局信息和腳本定義的事件,等等)以及該微件在被移動時刻的狀態(tài)和即時數(shù)據(jù)可以從第一微件容器被遞送個第二微件容器。這還將在下文參考圖2詳述。方法100在步驟S104之后結束。通過執(zhí)行方法100,可以允許用戶跨容器移動微件。從應用層面考慮,微件可以跨網(wǎng)頁、跨Web應用、跨Web瀏覽器的實例和/或跨Web瀏覽器的標簽而被移動。特別應當注意,方法100的每個步驟均可在運行時以即時方式執(zhí)行。考慮一個具體示例,用戶登錄到一個財經(jīng)類網(wǎng)站并且在網(wǎng)頁中添加并配置了關于股票動態(tài)的微件。當用戶登錄到另一個科技類網(wǎng)站時,他希望在該網(wǎng)站的頁面上也嵌入一個股票動態(tài)的微件,以便能夠實時查看他/她感興趣的高科技公司的股價動向。此時,用戶利 用現(xiàn)有技術必須在該科技類網(wǎng)站的頁面上重新添加和配置股票微件。而且,如果該科技類網(wǎng)站不支持該股票微件,則用戶根本無法實現(xiàn)其意圖。然而,通過利用本發(fā)明的實施例,用戶可以在運行時跨網(wǎng)頁將微件從財經(jīng)網(wǎng)頁拖放到科技類網(wǎng)站,并且該微件仍然能夠正常運行。下面參考圖2,其示出了圖2示出了根據(jù)本發(fā)明另一示例性實施例的用于在運行時在第一微件容器處將目前由第一微件容器托管的微件移動到第二微件容器的方法200的流程圖。圖2中描述的方法200可以被認為是上文參考圖1描述的方法100的一種特定實現(xiàn)。類似于方法100,方法200也可由當前托管微件的第一微件容器或其關聯(lián)方/過程來執(zhí)行。方法200開始之后,在步驟S202,在運行時檢測把由第一微件容器托管的微件移動到第二微件容器的跨容器拖放事件。換言之,在步驟S202中,上文描述的方法100的步驟S102中的運行時微件跨容器移動指示被實現(xiàn)為針對微件的跨容器拖放事件。在這樣的實施例中,跨容器移動微件所需的處理例如可以由拖放操作的事件處理機來實現(xiàn)。這樣的事件處理機例如可以通過JavaScript之類的腳本語言來編寫。這是本領域的普通技術人員所知道的,在此不再贅述的。接下來,在步驟S204,響應于針對微件的跨容器拖放事件,獲取指示該微件的定義的信息,并且將其遞送給作為目的地的第二微件容器。可以理解,由于微件目前由第一微件容器托管,因此在步驟S204,該微件的定義信息是第一微件容器可獲得的。例如,這種定義信息可以從與第一微件容器相關聯(lián)的服務器獲取。備選地或附加地,此類定義信息也可以保存在第一微件容器的客戶端本地。根據(jù)本發(fā)明的實施例,在步驟S204獲取的定義信息可以是微件的定義文件,也可以是針對該定義文件的參考(例如,以統(tǒng)一資源定位符URL的形式)。微件的定義文件,通常由XML來描述,可 以包含與該微件有關的任何信息,包括但不限于以下一個或多個:該微件的顯示部分的HTML代碼、繪制布局信息(例如,層疊樣式表單CSS)、能夠發(fā)送和接受的事件,以及事件響應的代碼(例如,由JavaScript之類的腳本語言定義),等等。與僅僅遞送微件的HTML代碼相比,通過獲取和遞送微件的定義信息能夠更加完整地在跨容器移動之后保持微件的屬性(例如,外觀,事件以及事件響應機制)。作為示例,在步驟S204,由第一微件容器獲取的關于微件定義信息可以基于諸如HTML5之類的數(shù)據(jù)遞送機制而被遞送給第二微件容器技術手段實現(xiàn)這種遞送。當然,其他任何適當?shù)臄?shù)據(jù)遞送手段均與本發(fā)明的實施例結合使用,本發(fā)明的范圍在此方面不受限制。接下來,方法200進行到步驟S206,在此響應于跨容器移動微件的指示(在此例中是跨容器拖放事件),獲取所要移動的微件在第一微件容器內(nèi)的即時數(shù)據(jù)和狀態(tài)信息,并將其遞送給第二微件容器。根據(jù)本發(fā)明的某些實施例,這種即時數(shù)據(jù)和狀態(tài)信息例如可以通過調(diào)用第一微件容器和/或Web瀏覽器/應用所提供的應用編程接口(API)來獲取。備選地或附加地,也可以通過解析與微件相關聯(lián)的可擴展標記語言(XML)文件來獲取微件的某些狀態(tài)和數(shù)據(jù)。這樣獲取的即時數(shù)據(jù)和狀態(tài)同樣可以利用例如HTML5中的DataTransfcr機制來實現(xiàn)跨容器遞送,即,從第一微件容器被遞送給第二微件容器。然而,本領域技術人員可以理解的是,微件的某些瞬態(tài)數(shù)據(jù)可能無法通過調(diào)用API或者解析XML獲取。這樣的數(shù)據(jù)例如針對微件的用戶操作信息、編輯信息、用戶保存/未保存的狀態(tài)、AJAX(異步JavaScript和XML)調(diào)用狀態(tài),等等。為了解決這一問題,可以允許微件的開發(fā)者在開發(fā)期間編寫用于保存此類瞬態(tài)數(shù)據(jù)和狀態(tài)的接口,例如串行化函數(shù)。這樣,在步驟S206,可以通過調(diào)用微件中定義的這種串行化函數(shù)來獲取和保存相應的即時數(shù)據(jù)和狀態(tài)。相應地,第二微件容器可以通過調(diào)用對應的解串行化函數(shù)來獲取所保存的數(shù) 據(jù)和狀態(tài),這將在下文詳述。方法200在步驟S206之后結束。與方法100相比,通過執(zhí)行方法200,不僅可以將微件的HTML代碼從第一微件容器遞送到第二微件容器,而且還可以在運行時遞送該微件的準確定義(包括布局等高級別信息)以及移動時刻的即時數(shù)據(jù)和狀態(tài)。利用這些信息,第二微件容器可以更為有效地實現(xiàn)對該微件的托管。具體而言,第二微件容器不僅可以繪制微件,而且可以確保該微件的外觀、狀態(tài)、數(shù)據(jù)、屬性等各種有關信息均與在第一微件容器中被移動的時刻保持一致。這樣做是有益的。用戶可以將已經(jīng)部署和運行在一個Web界面中的任意給定微件移動到另一Web界面中(例如,通過拖放操作),同時保持該微件的數(shù)據(jù)和運行狀態(tài)的完整性和一致性。以此方式,用戶無需在另一Web界面中重新設置該微件??紤]一個具體示例,如果所移動的微件是用于提供游戲功能的微件,則用戶可在游戲進行過程中跨容器移動該微件,并且能夠在移動之后保持游戲的進度和狀態(tài),從而可以繼續(xù)該游戲。特別應當注意,類似于方法100,方法200的每個步驟均可在運行時以即時方式執(zhí)行?,F(xiàn)在參考圖3,其示出了根據(jù)本發(fā)明一個示例性實施例的用于在運行時在第二微件容器處從第一微件容器接收目前由第一微件容器托管的微件的方法300的流程圖。可以理解,方法300例如可以由作為移動目的地的第二微件容器或其關聯(lián)方/過程來執(zhí)行。方法300開始之后,在步驟S302,在運行時檢測將目前由不同于第二微件容器的第一微件容器托管的微件移動到第二微件容器的指示??梢岳斫?,步驟S302對應于上文參照圖1描述的步驟S102,因而上文結合步驟S102描述的特征在此同樣適用。特別地,在某些示例性實施例中,步驟S302處的指示可以是用戶利用諸如鼠標之類的指點設備而發(fā)起的拖放事件。接下來,方法300進行到步驟S304,在此從第一微件容器接收 被移動的微件,以便該微件在運行時變?yōu)橛傻诙⒓萜魍泄???梢岳斫?,步驟S304對應于上文參照圖1描述的步驟S104,因而上文結合步驟S104描述的特征在此同樣適用。特別地,在本發(fā)明的某些實施例中,在步驟S304處可以利用諸如HTML5中的DataTransfer對象和機制來實現(xiàn)跨容器的數(shù)據(jù)遞送。當然其他目前已知或者將來開發(fā)的數(shù)據(jù)遞送機制也是可行的,本發(fā)明的范圍在此方面不受限制。根據(jù)本發(fā)明的某些實施例,在步驟S304處,第二微件容器至少可以接收所移動的微件的HTML代碼,并且在與第二微件容器相關聯(lián)的Web界面上繪制該第二微件。由此,用戶可以在與第二微件容器相關聯(lián)的Web界面上瀏覽和操作該微件。除此之外,第二微件容器還可以從第一微件容器接收與該微件有關的附加和/或備選信息,這將在下文參照圖4描述。方法300在步驟S304之后結束。通過執(zhí)行方法300,用戶可以將已經(jīng)部署和運行在第一微件容器中的微件在運行時移動到第二微件容器中(例如,通過拖放操作),即使第二微件的服務提供方原本并不支持該微件。特別應當注意,方法300的每個步驟均可在運行時以即時方式執(zhí)行。接下來參考圖4,其示出了根據(jù)本發(fā)明另一示例性實施例的用于在運行時在第二微件容器處從第一微件容器接收目前由第一微件容器托管的微件的方法400的流程圖。圖4中描述的方法400可以被認為是上文參考圖3描述的方法300的一種特定實現(xiàn)。類似于方法300,方法400也可由作為移動目的地的第二微件容器或其關聯(lián)方/過程來執(zhí)行。方法400開始之后,在步驟S402,在運行時在第二微件容器處檢測將目前由第一微件容器托管的微件移動到第二微件容器的指示。在圖4所述的實施例中,該運行時指示被實現(xiàn)為用戶通過鼠標之類的指點設備發(fā)起的針對微件的跨容器拖放操作。類似地,如上文所述,在這樣的實施例中,后續(xù)針對微件的處理可以由拖放事件 處理機來實現(xiàn)。接下來,方法400進行到步驟S404,在此從第一微件容器接收指示所移動的微件的定義的信息。步驟S404與方法200中的步驟S204對應。相應地,在步驟S404可以接收的定義信息可以是微件的定義文件本身,也可以是去往該定義文件的URL。微件的定義可以包括但不限于以下一個或多個:該微件的HTML代碼、繪制布局信息(例如,CSS)、能夠響應和處理的事件,等等。通過從第一微件容器接收這樣的定義信息,能夠更加完整地跨容器移動微件。根據(jù)本發(fā)明的某些實施例,在步驟S404處,可以利用諸如HTML5的DataTransfer機制之類的運行時跨容器數(shù)據(jù)遞送機制來接收微件的定義信息。接下來,方法400進行到步驟S406,在此接收在檢測到移動指示的時刻所移動的微件在第一微件容器內(nèi)的即時數(shù)據(jù)和狀態(tài)信息。步驟S406對應于方法200中的步驟S206。相應地,微件的某些即時數(shù)據(jù)和狀態(tài)可能是通過由第一微件容器調(diào)用適當?shù)腁PI或者解析XML獲取的。作為示例,可以利用HTML5等跨容器數(shù)據(jù)遞送機制來接收微件的此類即時數(shù)據(jù)和狀態(tài)。除此之外,另一些數(shù)據(jù)和狀態(tài)則可能是通過第一微件容器調(diào)用微件內(nèi)定義的例如串行化函數(shù)來保存的。相應地,在步驟S406處,第二微件容器可以通過調(diào)用對應的解串行化函數(shù)來獲得所保存的即時數(shù)據(jù)和狀態(tài)。微件中的解串行化函數(shù)例如也可以由微件的開發(fā)者來定義和提供。方法400繼而進行到步驟S408,在此可選地,可以根據(jù)作為移動指示的拖放事件來確定在第二微件容器內(nèi)繪制微件的位置。具體而言,當用戶通過拖放操作將微件拖動到第二微件容器內(nèi)的期望位置時,他/她例如可以通過釋放鼠標左鍵來指示拖放操作完成。此時,可以獲取鼠標光標所指示的、與第二微件容器相關聯(lián)的Web界面的位置(例如,坐標信息)。此后,可以采用任何適當?shù)牟呗詠泶_定微件在第二微件容器內(nèi)的繪制位置。作為一種可行方案,可以強行將微件嚴格繪制在光標指定的位置,其中光標在容器中的位置可以利用與標準HTML事件相關聯(lián)的坐標信息獲得。如果該位置已經(jīng)存在呈現(xiàn)有其他信息,可以修改這些信息的呈現(xiàn)位置,以此方式來解決繪制位置的潛在沖突。換言之,按照這種方式,將光標位置的已有信息移動到第二微件容器內(nèi)的其他位置顯示,而將所移動的微件繪制在第二微件容器內(nèi)的光標位置。作為解決繪制位置的潛在沖突的一種備選方案,也可以選擇距離光標位置最近的可用位置來繪制微件。例如,微件容器通常將與之關聯(lián)的Web界面內(nèi)劃分為稱為微件盒(box)的多個區(qū)域,每個區(qū)域中用于繪制一個微件。如果拖放操作在第二微件容器內(nèi)指示的位置所在的微件盒為空,則可以將所移動的微件繪制在該盒內(nèi)。另一方方面,如果該盒已被用于繪制另一微件,則可以選擇與光標指示的位置最靠近的可用空盒來繪制被移動的微件。上述示例僅僅是出于說明目的,其他任何適當?shù)臋C制均可被用于在第二微件容器內(nèi)繪制所移動的微件,例如基于Web界面的預定布局,等等。接下來,方法400進行到步驟S410,在此利用在步驟S404接收的定義信息,將移動到第二微件容器中的微件繪制在步驟S408所確定的位置。給出一個微件的定義信息(例如,定義文件或者去往該定義文件的鏈接),第二微件容器能夠將該微件繪制在指定的位置。這是本領域的普通技術人員已知的,故在此不再贅述。繼而在步驟S412,利用在步驟S406接收的微件的即時數(shù)據(jù)和狀態(tài),在第二微件容器中配置所繪制的微件。以此方式,第二微件容器不僅可以繪制該微件,而且能夠確保該微件的外觀、狀態(tài)、屬性、數(shù)據(jù)等各種信息的完整性和一致性。方法400可以繼續(xù)執(zhí)行可選的步驟S414,在此響應于在運行時由第二微件容器托管微件而保存該微件在第二微件容器內(nèi)的信息,以用于該微件在第二微件容器內(nèi)的重繪??梢岳斫猓谀承¦eb應用中,用于Web界面的微件容器可能由后端服務器來管理和控制。 在這種情況下,雖然通過執(zhí)行方法400實現(xiàn)了微件向第二微件容器的成功移動,但是一旦發(fā)生界面刷新之類的事件,所移動的微件將會在第二微件容器中丟失。為避免這種現(xiàn)象,執(zhí)行可選的步驟S414是有益的。具體而言,在步驟S414,可以將所移動的微件在第二微件容器內(nèi)的信息通過第二微件容器提供的API而存儲在第二微件容器中,或者將該信息存儲在第二微件容器可訪問的任何其他存儲位置。存儲的信息可以包括但不限于以下一個或多個:微件的項目集合(itemSet)、事件關聯(lián)(wire)、任何即時數(shù)據(jù)和狀態(tài)以及與第二微件容器相關聯(lián)的界面信息,等等。通過保存這些信息,在將來與第二微件容器相關聯(lián)的界面發(fā)生例如刷新之類可能導致微件重繪的事件時,第二微件容器可以訪問先前存儲的信息,并且在刷新之后的界面中重繪被移動到第二微件容器中的微件。方法400在步驟S414之后結束。通過執(zhí)行方法400,第二微件容器可以在運行時接收和托管原本由不同的第一微件容器托管的微件,即使第二微件容器的服務提供方原本不支持該微件。特別應當注意,類似于方法300,方法400的每個步驟均可在運行時以即時方式執(zhí)行。上文已經(jīng)參考圖1到圖4描述了根據(jù)本發(fā)明實施例的用于在運行時跨容器移動和接收微件的方法100-400。下面將參考圖5和圖6描述可用于執(zhí)行上述方法的系統(tǒng)。首先參見圖5,其示出了根據(jù)本發(fā)明一個示例性實施例的用于在運行時在第一微件容器處將目前由第一微件容器托管的微件移動到第二微件容器的系統(tǒng)500的框圖。如圖5所示,根據(jù)本發(fā)明的實施例,系統(tǒng)500包括:第一指示檢測裝置502,配置用于在運行時在該第一微件容器處檢測將該微件移動到第二微件容器的指示,該第二微件容器不同于該第一微件容器;以及微件移動裝置504,配置用于響應于檢測到該指示而向該第二微件容器移動該微件以便使得該微件在運行時變?yōu)橛稍摰诙⒓? 容器托管。根據(jù)本發(fā)明的某些可選實施例,第一指示檢測裝置502可以包括:拖放事件檢測裝置,配置用于檢測針對該微件的拖放事件以作為該將該微件移動到第二微件容器的指示。根據(jù)本發(fā)明的某些可選實施例,微件移動裝置504可以包括:定義獲取裝置,配置用于獲取指示該微件的定義的信息;以及定義遞送裝置,配置用于將該指示該微件的定義的信息從該第一微件容器遞送給該第二微件容器。根據(jù)本發(fā)明的某些可選實施例,微件移動裝置504可以包括:狀態(tài)獲取裝置,配置用于響應于該指示而獲取該微件在該第一微件容器內(nèi)的即時數(shù)據(jù)和狀態(tài);以及狀態(tài)遞送裝置,配置用于將獲取的該即時數(shù)據(jù)和狀態(tài)遞送給該第二微件容器。參見圖6,其示出了根據(jù)本發(fā)明一個示例性實施例的用于在運行時在第二微件容器處從第一微件容器接收目前由第一微件容器托管的微件的系統(tǒng)600的框圖。如圖6所示,根據(jù)本發(fā)明的實施例,系統(tǒng)600包括:第二指示檢測裝置602,配置用于在運行時在不同于該第一微件容器的第二微件容器處檢測將該微件移動到第二微件容器的指示;以及微件托管裝置604,配置用于響應于該指示而從該第一微件容器接收該微件以便在運行時由該第二微件容器托管該微件。根據(jù)本發(fā)明的某些可選實施例,第二指示檢測裝置602可以包括:拖放事件檢測裝置,配置用于在該第二微件容器處檢測針對該微件的拖放事件,以作為將該微件移動到第二微件容器的該指示。根據(jù)本發(fā)明的某些可選實施例,微件托管裝置604可以包括:定義接收裝置,配置用于從該第一微件容器接收指示該微件的定義的信息;以及微件繪制裝置,配置用于基于該微件的該定義在該第二微件容器內(nèi)繪制該微件。根據(jù)本發(fā)明的某些可選實施例,微件托管裝置604可以包括:狀態(tài)接收裝置,配置用于從該第一微件容器接收在檢測到該指示時 該微件在該第一微件容器內(nèi)的即時數(shù)據(jù)和狀態(tài);微件配置裝置,配置用于利用獲取的該即時數(shù)據(jù)和狀態(tài)在該第二微件容器中配置該微件。根據(jù)本發(fā)明的某些可選實施例,系統(tǒng)600還可以包括:位置確定裝置(未示出),配置用于根據(jù)該指示而確定在該第二微件容器中繪制該微件的位置。根據(jù)本發(fā)明的某些可選實施例,系統(tǒng)600還可以包括:狀態(tài)保存裝置(未示出),配置用于響應于在運行時由該第二微件容器托管該微件而保存該微件在該第二微件容器內(nèi)的信息,以用于該微件在該第二微件容器內(nèi)的重繪。應當理解,上文參考圖5和圖6描述的系統(tǒng)500和系統(tǒng)600包含的各個裝置及其包含的可選子裝置分別對應于上文參考圖1-圖2描述的方法100和200以及參考圖3-圖4描述的方法300和400的各個步驟。由此,上文針對方法100-400描述的所有特征和操作同樣分別適用于系統(tǒng)500和600,故在此不再贅述。特別地,系統(tǒng)500和600中裝置和可選子裝置的劃分不是限制性的而是示例性的。例如,在圖5和圖6中所示的單個裝置的功能可以由多個裝置來實現(xiàn)。反之,在圖5和圖6中所示的多個裝置亦可由單個裝置來實現(xiàn)。本發(fā)明的范圍在此方面不受限制。還應當理解,系統(tǒng)500和600中包含的各裝置和子裝置可以利用各種方式來實現(xiàn),包括軟件、硬件、固件或其任意組合。例如,在某些實施例中,系統(tǒng)500和600的各裝置可以利用軟件和/或固件模塊來實現(xiàn)。備選地或附加地,系統(tǒng)500和600的各裝置也可以利用硬件模塊來實現(xiàn)。例如,系統(tǒng)500和600的各裝置可以實現(xiàn)為集成電路(IC)芯片或專用集成電路(ASIC)。系統(tǒng)500和600的各裝置也可以實現(xiàn)為片上系統(tǒng)(SOC)?,F(xiàn)在已知或者將來開發(fā)的其他方式也是可行的,本發(fā)明的范圍在此方面不受限制。參考圖7,其示出了適于用來實踐本發(fā)明實施例的計算系統(tǒng)700的示意性框圖。如圖7所示,計算機系統(tǒng)可以包括:CPU(中央處 理單元)701、RAM(隨機存取存儲器)702、ROM(只讀存儲器)703、系統(tǒng)總線704、硬盤控制器705、鍵盤控制器706、串行接口控制器707、并行接口控制器708、顯示控制器709、硬盤710、鍵盤711、串行外部設備712、并行外部設備713和顯示器714。在這些設備中,與系統(tǒng)總線704耦合的有CPU701、RAM702、ROM703、硬盤控制器705、鍵盤控制器706、串行控制器707、并行控制器708和顯示控制器709。硬盤710與硬盤控制器705耦合,鍵盤711與鍵盤控制器706耦合,串行外部設備712與串行接口控制器707耦合,并行外部設備713與并行接口控制器708耦合,以及顯示器714與顯示控制器709耦合。應當理解,圖7所述的結構框圖僅僅為了示例的目的而示出的,而不是對本發(fā)明范圍的限制。在某些情況下,可以根據(jù)具體情況而增加或者減少某些設備。所屬技術領域的技術人員知道,本發(fā)明可以實現(xiàn)為系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本公開可以具體實現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實施例中,本發(fā)明還可以實現(xiàn)為在一個或多個計算機可讀介質(zhì)中的計算機程序產(chǎn)品的形式,該計算機可讀介質(zhì)中包合計算機可讀的程序代碼??梢圆捎靡粋€或多個計算機可讀的介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或者計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)例如可以是——但不限于——電、磁、光、電磁、紅外線、或半導體的系統(tǒng)、裝置或器件,或者任意以上的組合。計算機可讀存儲介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、光纖、便攜式緊湊磁盤只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質(zhì)可以是任何包含或存儲程序的有形介質(zhì),該程 序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用。計算機可讀的信號介質(zhì)可以包括在基帶中或者作為載波一部分傳播的數(shù)據(jù)信號,其中承載了計算機可讀的程序代碼。這種傳播的數(shù)據(jù)信號可以采用多種形式,包括但不限于電磁信號、光信號或上述的任意合適的組合。計算機可讀的信號介質(zhì)還可以是計算機可讀存儲介質(zhì)以外的任何計算機可讀介質(zhì),該計算機可讀介質(zhì)可以發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結合使用的程序。計算機可讀介質(zhì)上包含的程序代碼可以用任何適當?shù)慕橘|(zhì)傳輸,包括—但不限于—無線、電線、光纜、RF等等,或者上述的任意合適的組合。可以以一種或多種程序設計語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計算機程序代碼,所述程序設計語言包括面向對象的程序設計語言—諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設計語言—諸如“C”語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠程計算機上執(zhí)行、或者完全在遠程計算機或服務器上執(zhí)行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網(wǎng)絡—包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務提供商來通過因特網(wǎng)連接)。此外,應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,這些計算機程序指令通過計算機或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。也可以把這些計算機程序指令存儲在能使得計算機或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計算機可讀介質(zhì)中,這樣,存 儲在計算機可讀介質(zhì)中的指令就產(chǎn)生出一個包括實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。也可以把計算機程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機或其它可編程裝置上執(zhí)行的指令能夠提供實現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。而且,附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個連續(xù)的方框實際上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。以上已經(jīng)描述了本發(fā)明的各實施例,上述說明是示例性的,并非窮盡性的,并且也不限于所披露的各實施例。在不偏離所說明的各實施例的范圍和精神的情況下,對于本技術領域的普通技術人員來說許多修改和變更都是顯而易見的。本文中所用術語的選擇,旨在最好地解釋各實施例的原理、實際應用或對市場中的技術的技術改進,或者使本技術領域的其它普通技術人員能理解本文披露的各實施例。