專利名稱:一種嵌入式環(huán)境下的進程間通信方法
技術(shù)領(lǐng)域:
本發(fā)明屬于信息技術(shù)領(lǐng)域,尤其涉及一種嵌入式環(huán)境下的進程間通信方法。
背景技術(shù):
隨著信息終端產(chǎn)品更新越來越快,以及人們對個性化人機界面的要求越來越高, 信息產(chǎn)品終端的開發(fā)商遇到了前所未有的挑戰(zhàn)。信息終端開發(fā)商一方面想在不同技術(shù)方案的產(chǎn)品中使用一致風格的人機界面,另一方面想迅速迎合用戶對產(chǎn)品人機界面的更新需求。然而傳統(tǒng)的人機界面開發(fā)技術(shù)周期長、任務重,很難滿足開發(fā)成本和開發(fā)周期的需求。 因此,使用Flash技術(shù)實現(xiàn)人機界面被提上日程,F(xiàn)lash矢量動畫所實現(xiàn)的人機界面開發(fā)周期短、直觀且在不同設(shè)備上表現(xiàn)一致。但是,嵌入式環(huán)境下Flash的人機界面與各種技術(shù)所開發(fā)的底層中間件和操作系統(tǒng)間通信協(xié)作成為問題采用FSCommand或Socket通信過于簡單,其他通信中間件如ICE、ACE等過于復雜。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)中的問題,本發(fā)明的目的在于提供一種適合于嵌入式環(huán)境下應用程序(包括多種技術(shù)的實現(xiàn),如Java應用程序、C應用程序、C++應用程序、Flash矢量動畫等) 間的消息通信機制,通過持久性發(fā)布/訂閱(Persistent Publish/Subscribe,簡稱PPS)服務實現(xiàn)。因此,本發(fā)明提出一種嵌入式環(huán)境下的進程間通信方法,解決上述所遇到的問題。 本發(fā)明所提出的方法可具體實施為通信中間件軟件。本發(fā)明的技術(shù)方案為一種嵌入式環(huán)境下的進程間通信方法,其步驟為1)啟動發(fā)布/訂閱服務;2)發(fā)布者通過客戶端接口創(chuàng)建服務文件;3)發(fā)布者通過客戶端接口添加文件內(nèi)容;4)所發(fā)布的服務文件存儲到服務器端的內(nèi)存中,或持久化到文件系統(tǒng)中;5)訂閱者通過客戶端接口訂閱服務文件,并獲取文件內(nèi)容;6)發(fā)布者通過客戶端更新服務文件內(nèi)容;7)服務器端在文件內(nèi)容變更后通知所有訂閱者,并發(fā)送文件的變更內(nèi)容;8)訂閱者得到文件內(nèi)容的變更,根據(jù)變更內(nèi)容做后續(xù)處理。進一步的,發(fā)布/訂閱服務基于消息存儲轉(zhuǎn)發(fā)機制,包含一個服務器端和若干個客戶端。其底層通信支持多種具體形式,如Socket、文件系統(tǒng)等,客戶端以各種語言實現(xiàn),嵌入到具體應用中或由具體應用動態(tài)調(diào)用。進一步的,發(fā)布者通過客戶端接口創(chuàng)建服務文件,可以傳入文件名稱和文件標識。 如果文件名稱與其他客戶端指定的文件名稱相同,則發(fā)布者與另一個客戶端建立服務關(guān)系。文件標識可以指明該發(fā)布者是發(fā)布一個文件、訂閱一個文件,或同時發(fā)布和訂閱一個文件。
進一步的,發(fā)布者通過客戶端接口添加文件內(nèi)容,可以向服務文件中添加若干個對象,或向指定對象中添加若干個屬性。進一步的,服務器端收到發(fā)布者要求創(chuàng)建服務文件的消息后,在當前服務文件集中查找有沒有同名的文件,如果有則建立相關(guān)連接,否則創(chuàng)建新的服務文件。服務器端也可以將服務文件持久化到文件系統(tǒng)中。進一步的,訂閱者通過客戶端訂閱服務文件,會在第一次訂閱成功后得到該服務文件的所有內(nèi)容。進一步的,發(fā)布者通過客戶端更新服務文件內(nèi)容,包括向服務文件中添加、刪除對象,向指定對象添加、刪除和更改屬性等。進一步的,服務器端會在文件內(nèi)容變更后,查找該服務文件的所有訂閱者,并將服務文件的變更內(nèi)容發(fā)送給所有訂閱者。進一步的,訂閱者得會得到文件內(nèi)容的變更消息,解析獲取具體的變更內(nèi)容,之后結(jié)合開始訂閱時獲取的文件原始內(nèi)容進行后續(xù)處理。本發(fā)明提供的跨編程語言和跨平臺的進程間通信方法基于簡約的發(fā)布/訂閱機制,并可持久化到文件系統(tǒng)中,使得嵌入式環(huán)境下Flash的人機界面與操作系統(tǒng)間的通信進程能夠進行非常簡單的協(xié)作。
圖1顯示了實現(xiàn)本發(fā)明在嵌入式環(huán)境下的進程間通信的方法流程圖;圖2顯示了本發(fā)明服務文件的產(chǎn)生以及使用過程;圖3顯示了本發(fā)明基于服務文件在服務器端和客戶端之間傳遞的關(guān)系圖;圖4顯示了應用本發(fā)明在嵌入式環(huán)境下基于服務文件進行通信的其中一個例子的示意圖。
具體實施例方式本發(fā)明所描述的嵌入式環(huán)境下進程間通信方法是一種基于文件方式的異步通信機制,通過PPS服務實現(xiàn),具體實施為一種通信中間件軟件。此通信中間件軟件包括服務器端和客戶端兩部分,服務器端負責各個客戶端的鏈接維護和消息處理,客戶端實現(xiàn)通信接口并與具體的應用程序或模塊集成。其中,所描述的服務器端與客戶端不同于傳統(tǒng)網(wǎng)絡中的概念。傳統(tǒng)網(wǎng)絡中,服務器端通常指Web服務器等,部署于特定機房,具有強大的處理能力,為網(wǎng)絡用戶提供特定服務;客戶端通常指網(wǎng)絡用戶所使用的個人電腦,通過Web瀏覽器或其他客戶端軟件訪問服務器端。在本發(fā)明中,服務器端是指運行于嵌入式設(shè)備中的一個服務進程,響應客戶端的訪問;客戶端是指嵌入式設(shè)備中的一組函數(shù)接口,由使用PPS服務的應用程序調(diào)用。其中,客戶端可以通過多種語言實現(xiàn)以嵌入到不同技術(shù)實現(xiàn)的應用程序中。以下結(jié)合附圖,具體說明本發(fā)明實施方式。圖1顯示了實現(xiàn)本發(fā)明在嵌入式環(huán)境下的進程間通信的方法流程圖;此流程的一個完整周期包括業(yè)務中間件軟件311發(fā)布服務文件;HMIlll訂閱服務文件;HMIlll使用文件服務。發(fā)布/訂閱服務210是服務器端,HMIlll和業(yè)務中間件311是客戶端。HMIlll
4和業(yè)務中間件311分別通過發(fā)布/訂閱服務接口 121和發(fā)布/訂閱服務接口 321連接發(fā)布 /訂閱服務210,由發(fā)布/訂閱服務210負責雙方消息的存儲轉(zhuǎn)發(fā)。其中,發(fā)布/訂閱服務接口 121和發(fā)布/訂閱服務接口 321是本發(fā)明所描述的嵌入式環(huán)境下進程間通信方法的接口。此接口以服務文件的概念向用戶提供,更加形象和易于使用。當用戶通過此接口進行服務文件的操作時,發(fā)布/訂閱服務接口 121和發(fā)布/訂閱服務接口 321分別通過過程處理邏輯131和過程處理邏輯331進行邏輯處理,將用戶的服務文件操作轉(zhuǎn)換成符合與發(fā)布/訂閱服務210之間交互協(xié)議的消息。轉(zhuǎn)換后的消息分別通過統(tǒng)一通信接口 141和統(tǒng)一通信接口 341發(fā)送給發(fā)布/訂閱服務210,或從發(fā)布/訂閱服務210接收消息和回傳。其中,統(tǒng)一通信接口 141和統(tǒng)一通信接口 341是客戶端與服務器端各種通信手段的一致封裝,提供一致的通信鏈路打開、關(guān)閉和數(shù)據(jù)收發(fā)方法。統(tǒng)一通信接口 141和統(tǒng)一通信接口 341所封裝的具體通信手段可以是Socket、文件系統(tǒng)等。在發(fā)布/訂閱服務210端也有對應的統(tǒng)一通信接口,負責接受客戶端的連接請求和完成數(shù)據(jù)的收發(fā)任務。其中,客戶端可以是多個HMIlll或業(yè)務中間件軟件311,且不限于一對一通信。發(fā)布/訂閱服務210可以根據(jù)需要將消息轉(zhuǎn)發(fā)給一個或多個客戶端。圖2顯示了本發(fā)明服務文件的產(chǎn)生以及使用過程;服務文件件是某個發(fā)布或訂閱服務的內(nèi)容,以文件的形式描述。服務文件存在于服務器110端的內(nèi)存,或持久化到文件系統(tǒng)中,由客戶端210或客戶端220創(chuàng)建、修改和刪除。服務器110在文件內(nèi)容更新后通知該文件的所有訂閱者230。所描述的服務文件具有一個全局唯一的文件名稱,默認約定服務文件的名稱形式為“/fs/pps/XXX”,以方便的對應到文件系統(tǒng)中的某個文件。例如,一個PPS文件可以為“/ fs/pps/media/PlayCurrent服務文件的發(fā)布者可以創(chuàng)建一個服務文件,之后對其內(nèi)容進行更改。所述的每個服務文件包含若干個對象,服務的發(fā)布者可以創(chuàng)建、修改和刪除其發(fā)布文件中的對象,所有該文件的訂閱者均會得到對應的更改通知。所述的服務文件中的每個對象包含若干個屬性,每個屬性包含一個屬性名稱和對應的屬性值。服務文件發(fā)布者可以創(chuàng)建、修改和刪除所發(fā)布文件中對象的屬性,所有該服務文件的訂閱者均會得到對應的更改通知。其中,持久性發(fā)布/訂閱服務實現(xiàn)多種語言形式的客戶端,各種語言實現(xiàn)的客戶端程序,包括硬件狀態(tài)的更新都可以改變對應服務文件中對象的屬性,從而實現(xiàn)模塊間的通信。其他的客戶端也可以響應對象屬性的變化。所述的服務文件具有一定的操作規(guī)則,即發(fā)布/訂閱規(guī)則。其中,服務文件具有以下規(guī)則每個客戶端都可以發(fā)布或訂閱多個服務,即每個客戶端都可以創(chuàng)建或讀取多個服務文件;服務文件的名稱約定為“/fs/pps/XXX”的形式,可以持久化到文件系統(tǒng)中。其中,服務文件中的對象具有以下規(guī)則一個服務文件可以包含多個對象;對象在文件中的表示占一個完整行;對象在文件中的表示為“@name”,其中表示一個實體, “name”表示實體的名稱;對象緊跟著為對象的屬性,直到出現(xiàn)下一個實體,即下一個 name,,0
其中,服務文件中屬性具有以下規(guī)則一個PPS實體可以包含多個PPS屬性;一個PPS屬性在PPS文件中的表示占一個完整的行;PPS屬性的表示形式為 "attribute: value,,,如"time: 12:00”。所述的服務文件通過客戶端進行操作,每個客戶端提供操作接口給上層應用使用。其中,月艮務文件的操作接□包括pps—open、pps—remove、pps—close、pps—write、 pps—read 禾口 pps—parse。其中,pps_open包含兩個參數(shù)服務文件名稱、標志。標志可以指定操作為發(fā)布、 訂閱或同時發(fā)布和訂閱。執(zhí)行完成后返回所打開文件的描述符(大于0的整數(shù)),或返回小于0的值表示操作失敗。其中,pps_remove包含一個參數(shù)服務文件名稱。執(zhí)行完成后返回0表示操作成果,否則表示操作失敗。其中,ppS_cl0Se包含一個參數(shù)pps_open時返回的文件描述符。執(zhí)行完成后返回 0表示操作成果,否則表示操作失敗。其中,ppS_Write包含三個參數(shù)ppS_open時返回的文件描述符、寫入服務文件中的內(nèi)容、寫入內(nèi)容的長度。寫入文件的內(nèi)容為‘‘+@name”表示向文件中添加一個對象, name”表示從文件中刪除對象,“(iname”表示指定當前操作的對象,“attribute: value”表示向當前操作對象添加一個屬性或更改已存在屬性的值,“attribute:”表示刪除當前操作對象的一個屬性。返回值為成功寫入文件中的內(nèi)容長度,否則返回小于0的值表示操作失敗。其中,pps_read包含三個參數(shù)ppS_open時返回的文件描述符、讀取服務文件內(nèi)容的緩沖區(qū),緩沖區(qū)長度。所讀取到的服務文件內(nèi)容與ppS_write寫入的服務文件內(nèi)容相同。返回值為成功讀取文件內(nèi)容的長度,否則返回小于0的值表示操作失敗。其中,pps_parse包含兩個參數(shù)從pps_read讀取的文件內(nèi)容、三個元素的字符串數(shù)組。執(zhí)行成功后,將解析結(jié)果填入到字符串數(shù)組中,所解析的結(jié)果最多為三個字符串。返回值為PPS_0BJECT_ERR0R表示解析失敗、PPS_0BJECT_ADD表示添加一個對象、 PPS_0BJECT_DEL表示刪除一個對象、PPS_OBJECT_CURRENT表示指明當前操作對象、PPS_ 0BJECT_VALUE表示文件中對象屬性的變更。圖3顯示了本發(fā)明基于服務文件在服務器端和客戶端之間傳遞的關(guān)系圖;以發(fā)布 /訂閱服務器端Iio為中心,發(fā)布/訂閱客戶端212、222、232和242組成星狀網(wǎng)絡。其中,各客戶端可以是不同語言的實現(xiàn)版本,嵌入到具體的應用程序模塊中,或由具體的應用模塊動態(tài)調(diào)用。例如發(fā)布/訂閱客戶端212由Java語言實現(xiàn),可以由Java模塊211調(diào)用,實現(xiàn)Java模塊211與發(fā)布/訂閱服務器端110的交互;發(fā)布/訂閱客戶端222 由C語言實現(xiàn),可以由C語言模塊221調(diào)用,實現(xiàn)C語言模塊221與發(fā)布/訂閱服務器端 110的交互;發(fā)布/訂閱客戶端242由Flash動作腳本實現(xiàn),可以由Action Script241調(diào)用,實現(xiàn)基于Flash技術(shù)的HMI與發(fā)布/訂閱服務器端110的交互;發(fā)布/訂閱客戶端232 由其他語言實現(xiàn),可以由其他語言模塊231調(diào)用,實現(xiàn)其他語言模塊231與發(fā)布/訂閱服務器端110的交互。發(fā)布/訂閱服務器端110并不區(qū)分各個客戶端的實現(xiàn)語言,也不區(qū)分中間件、操作系統(tǒng)接口或HMI。
6
其中,發(fā)布/訂閱客戶端212、222、232和242都只能與發(fā)布/訂閱服務器端110 進行直接通信,任何兩個客戶端之間的通信消息都必須有發(fā)布/訂閱服務器端110進行轉(zhuǎn)發(fā)。圖4顯示了應用本發(fā)明在嵌入式環(huán)境下基于服務文件進行通信的其中一個例子的示意圖;基于Flash的HMIlll實現(xiàn)人機交互界面,并通過Adobe Flash Lite3播放器 112進行播放。因此,HMI可以一次開發(fā),多平臺運行,并且擁有一致的表現(xiàn)?;贔lash的 HMIlll通過調(diào)用發(fā)布/訂閱服務121操作發(fā)布/訂閱服務211中的服務文件,進而與各個中間件及操作系統(tǒng)進行協(xié)作,實現(xiàn)人機交互功能。其中,HMI與中間件進行協(xié)作的一個完整周期是業(yè)務中間件發(fā)布服務文件、HMI 訂閱服務文件、HMI使用服務文件。所述的業(yè)務中間件包括藍牙212、時間213、聲音214、GPS215等,具有相似的協(xié)作流程。本發(fā)明以HMI通過發(fā)布/訂閱服務與時間213交互為例進行協(xié)作流程的說明。以下對各個步驟進行詳細闡述,并在闡述過程中介紹模型的細節(jié)?!?、業(yè)務中間件發(fā)布服務文件所述HMI通過發(fā)布/訂閱服務與時間213交互,具體包含以下子步驟1.發(fā)布并訂閱服務文件在時間213啟動過程中,會通過內(nèi)嵌PPS客戶端或PPS客戶端動態(tài)庫中的接口向服務器端211發(fā)布服務文件。發(fā)布文件的消息中包含所發(fā)布文件的名稱和文件標識,在服務器端211收到消息后根據(jù)此名稱創(chuàng)建服務文件。其中,發(fā)布服務文件的接口為“ppS_open”,服務文件的名稱為“/fs/pps/time”。 時間213調(diào)用“ppS_open”,傳入文件名稱,并指定打開屬性為只寫,返回0即表明發(fā)布服務文件成功。所述的“ppS_open”調(diào)用之后,會產(chǎn)生客戶端消息并自動發(fā)送到服務器端211。消息中包含服務文件名、讀寫屬性(即發(fā)布或訂閱屬性)等,是服務器端211創(chuàng)建具體服務文件和轉(zhuǎn)發(fā)客戶端消息的依據(jù)。2.添加文件內(nèi)容在時間213發(fā)布服務文件之后,會向其添加文件內(nèi)容,供其他客戶端參考和使用。 服務文件內(nèi)容包括若干個對象,每個對象包含若干個屬性。同時,時間213也訂閱自己所發(fā)布的服務文件,監(jiān)聽服務文件的變更。其中,添加文件內(nèi)容的接口為“pps_Write”。時間213首先通過“pps_Write”向服務文件中添加一個對象如“system”,之后向此對象中添加一個屬性如“time”,其默認值為當前系統(tǒng)時間。3.更新服務內(nèi)容時間213每秒鐘更新一次“/fs/pps/time”文件中“system”對象的“time”屬性值,使其與當前的系統(tǒng)時間保持同步。其中,更新服務文件的內(nèi)容通過“ppS_Write”調(diào)用實現(xiàn)。二、HMI訂閱服務文件HMIlOO為在HMI上顯示當前系統(tǒng)時間,在初始化時,通過發(fā)布/訂閱服務121打開服務211上的服務文件并獲取其內(nèi)容。
其中,HMIlOO打開服務文件的接口為“ppS_open”;指定服務文件的名稱與時間 213所發(fā)布的文件名稱相同,為“/fs/pps/time” ;同時,指定打開屬性為只讀,即訂閱該文件。HMIlOO與時間214指定同一文件名打開即建立了客戶端之間的連接,發(fā)布/訂閱服務 211會根據(jù)發(fā)布/訂閱規(guī)則轉(zhuǎn)發(fā)雙方的消息。所述的發(fā)布/訂閱規(guī)則即發(fā)布一個文件的客戶端可以更改文件中對象的屬性, 訂閱一個文件的客戶端可以在文件內(nèi)容發(fā)生改變時得到通知消息。其中,訂閱服務文件成功后通過接口 “pps_read”監(jiān)聽其內(nèi)容變化,開啟一個新的線程循環(huán)調(diào)用“pps_read”,并在每次“pps_read”返回時得到服務器端211的返回消息,此返回消息即服務端文件內(nèi)容的變更通知。三、HMI使用文件服務HMIlOO在使用“ppS_open”打開“/fs/pps/time”時會得到該文件的所有內(nèi)容,包括一個“system”對象,和該對象的一個屬性“time”,且此屬性的默認值為當前的系統(tǒng)時間。之后,時間213會在每秒鐘得到一次包含系統(tǒng)時間的消息,通過“ppS_parSe”獲得系統(tǒng)時間,并將系統(tǒng)時間顯示在HMI上。至此,完成了 HMI與業(yè)務中間件軟件的一次完整交互。其中,多媒體122和數(shù)據(jù)庫123與發(fā)布/訂閱服務121 —樣,是Action kript腳本的擴展庫,用于基于Flash的HMIlll訪問220和230。多媒體122和數(shù)據(jù)庫123與220 和230的通信可以通過本發(fā)明所描述的發(fā)布/訂閱服務實現(xiàn),或另行實現(xiàn)。如果通過本發(fā)明所描述的發(fā)布/訂閱服務實現(xiàn),則可參考HMI與時間213的協(xié)作流程,在此不進行詳細闡述。其中,多媒體221組成220為基于Flash的HMIlll提供訪問本地多媒體資源的方法。不屬于本發(fā)明所描述通信方法的范圍,在圖4中給出是為了保持實施例運行環(huán)境的完整性,在此不進行詳細闡述。其中,數(shù)據(jù)接口 231和數(shù)據(jù)庫232組成230為基于Flash的HMIlll提供訪問本地數(shù)據(jù)庫的方法。不屬于本發(fā)明所描述通信方法的范圍,在圖4中給出是為了保持實施例運行環(huán)境的完整性,在此不進行詳細闡述。其中,網(wǎng)絡協(xié)議310組成300為基于Flash的HMIlll提供訪問網(wǎng)絡資源的方法。 不屬于本發(fā)明所描述通信方法的范圍,在圖4中給出是為了保持實施例運行環(huán)境的完整性,在此不進行詳細闡述。其中,Adobe Flash Lite 3播放器112用以播放基于Flash的HMI111,并執(zhí)行 Action kript腳本。所述的Adobe Flash Lite 3播放器112也可以使用其他的Flash播放器替代。因為Flash播放器不屬于本發(fā)明所描述通信方法的范圍,在圖4中給出是為了保持實施例運行環(huán)境的完整性,在此不進行詳細闡述。以上是對本發(fā)明的優(yōu)選實施例進行的詳細描述,但本領(lǐng)域的普通技術(shù)人員應該意識到,在本發(fā)明的范圍內(nèi)和精神指導下,各種改進、添加和替換都是可能的,例如調(diào)整接口調(diào)用順序、改變消息格式和內(nèi)容、使用不同的編程語言(如C、C++、Java等)實現(xiàn)等。這些都在本發(fā)明的權(quán)利要求所限定的保護范圍內(nèi)。
權(quán)利要求
1.一種嵌入式環(huán)境下的進程間通信方法,其步驟為(1)啟動發(fā)布/訂閱服務;(2)發(fā)布者通過客戶端接口創(chuàng)建服務文件;(3)發(fā)布者通過客戶端接口添加文件內(nèi)容;(4)所發(fā)布的服務文件存儲到服務器端的內(nèi)存中,或持久化到文件系統(tǒng)中;(5)訂閱者通過客戶端接口訂閱服務文件,并獲取文件內(nèi)容;(6)發(fā)布者通過客戶端更新服務文件內(nèi)容;(7)服務器端在文件內(nèi)容變更后通知所有訂閱者,并發(fā)送文件的變更內(nèi)容;(8)訂閱者得到文件內(nèi)容的變更,根據(jù)變更內(nèi)容做后續(xù)處理。
2.如權(quán)利要求1所述的方法,其特征在于所述發(fā)布/訂閱服務基于消息存儲轉(zhuǎn)發(fā)機制, 包含一個服務器端和至少一個客戶端,并且服務器端和客戶端之間支持標準通信格式。
3.如權(quán)利要求1所述的方法,其特征在于發(fā)布者通過客戶端接口創(chuàng)建服務文件時傳入文件名稱和文件標識,如果文件名稱與其他客戶端指定的文件名稱相同,則發(fā)布者與另一個客戶端建立服務關(guān)系;所述文件標識用于指明該發(fā)布者是發(fā)布一個文件、訂閱一個文件, 或同時發(fā)布和訂閱一個文件。
4.如權(quán)利要求1所述的方法,其特征在于發(fā)布者通過客戶端接口添加文件內(nèi)容時向服務文件中添加至少一個對象,或向指定對象中添加至少一個屬性。
5.如權(quán)利要求1所述的方法,其特征在于服務器端收到發(fā)布者要求創(chuàng)建服務文件的消息后,在當前服務文件集中查找有沒有同名的文件,如果有則建立相關(guān)連接,否則創(chuàng)建新的服務文件。
6.如權(quán)利要求1所述的方法,其特征在于訂閱者通過客戶端訂閱服務文件時,在第一次訂閱成功后獲得該服務文件的所有內(nèi)容。
7.如權(quán)利要求1所述的方法,其特征在于發(fā)布者通過客戶端更新服務文件內(nèi)容包括向服務文件中添加、刪除對象或?qū)χ付▽ο筇砑?、刪除和更改屬性。
8.如權(quán)利要求1所述的方法,其特征在于服務器端會在文件內(nèi)容變更后,查找該服務文件的所有訂閱者,并將服務文件的變更內(nèi)容發(fā)送給所有訂閱者。
9.如權(quán)利要求1所述的方法,其特征在于訂閱者從服務器端得到文件內(nèi)容的變更消息時,解析所獲取的變更內(nèi)容,然后結(jié)合開始訂閱時獲取的文件原始內(nèi)容進行后續(xù)處理。
10.一種嵌入式環(huán)境下執(zhí)行進程間通信的裝置,其特征在于包括如下模塊(1)用于啟動發(fā)布/訂閱服務的模塊;(2)用于使發(fā)布者通過客戶端接口創(chuàng)建服務文件的模塊;(3)用于使發(fā)布者通過客戶端接口添加文件內(nèi)容的模塊;(4)用于將所發(fā)布的服務文件存儲到服務器端的內(nèi)存中,或持久化到文件系統(tǒng)中的模塊;(5)用于使訂閱者通過客戶端接口訂閱服務文件,并獲取文件內(nèi)容的模塊;(6)用于使發(fā)布者通過客戶端更新服務文件內(nèi)容的模塊;(7)用于使得服務器端在文件內(nèi)容變更后通知所有訂閱者,并發(fā)送文件的變更內(nèi)容的內(nèi)容;(8)用于使得訂閱者得到文件內(nèi)容的變更,根據(jù)變更內(nèi)容做后續(xù)處理的模塊。
全文摘要
一種嵌入式環(huán)境下的進程間通信方法,其步驟為(1)啟動發(fā)布/訂閱服務;(2)發(fā)布者通過客戶端接口創(chuàng)建服務文件;(3)發(fā)布者通過客戶端接口添加文件內(nèi)容;(4)所發(fā)布的服務文件存儲到服務器端的內(nèi)存中,或持久化到文件系統(tǒng)中;(5)訂閱者通過客戶端接口訂閱服務文件,并獲取文件內(nèi)容;(6)發(fā)布者通過客戶端更新服務文件內(nèi)容;(7)服務器端在文件內(nèi)容變更后通知所有訂閱者,并發(fā)送文件的變更內(nèi)容;(8)訂閱者得到文件內(nèi)容的變更,根據(jù)變更內(nèi)容做后續(xù)處理。
文檔編號G06F9/54GK102508722SQ20111039447
公開日2012年6月20日 申請日期2011年12月2日 優(yōu)先權(quán)日2011年12月2日
發(fā)明者王懷英, 郭亮, 黃東 申請人:中科方德軟件有限公司