持久發(fā)布/訂閱消息傳送模式,緩解醫療器械的開(kāi)發(fā)之
在決定以什么樣的最佳方式,利用軟件來(lái)使其產(chǎn)品實(shí)現智能化時(shí),除考慮當前的要求之外,醫療器械設計者的目光應當放得更遠。對人機界面(HMI)、無(wú)線(xiàn)網(wǎng)絡(luò )連接、數據存儲以及其他功能的需求發(fā)展迅速,設計者必須創(chuàng )建靈活的系統,以適應技術(shù)和組件的推陳出新,同時(shí)最大限度地減少相關(guān)開(kāi)發(fā)工作量或者對初始設計的影響。
本文引用地址:http://dyxdggzs.com/article/199579.htm是否為醫療器械選擇了適當的消息傳送模式,意味著(zhù)是按預算如期開(kāi)發(fā)出高效、靈活的系統并獲得認證,還是所開(kāi)發(fā)的系統效率低下而又脆弱,并且開(kāi)發(fā)過(guò)程伴隨著(zhù)無(wú)數麻煩的天壤之別。相比于其他消息傳送模式,持久發(fā)布/訂閱(PPS)消息傳送模式具有諸多優(yōu)勢,特別是在采用了眾多完全不同的組件和技術(shù)的醫療器械中(圖1)。
圖1 這臺用于可行性論證的醫療器械模型匯合并顯示了從血壓計、肺活量計、脈搏氧飽和度儀、心電圖設備和胰島素泵獲得的數據。這些設備連接至康體佳互通性管理器,并利用PPS消息傳送來(lái)與Qt HMI通信。PPS也為一個(gè)遠程管理器提供了消息傳送服務(wù),以確保與基于云計算系統的數據庫和便攜式平板電腦之間的互聯(lián)網(wǎng)通信。
另外兩種常用的消息傳送系統——異步消息傳送和同步消息傳送——則對設計復雜的系統提出了挑戰。眾所周知、應用廣泛的異步消息傳送系統(圖2)是許多系統的首選解決方案,但它將錯誤處理、端到端語(yǔ)義和緩沖管理等負擔,推高至應用層。
圖2 采用異步消息傳送,一個(gè)進(jìn)程發(fā)送其消息并繼續執行,當且僅當回復到達時(shí),接收回復。
因此,架構師在設計采用異步消息傳送模式的系統時(shí),必須開(kāi)發(fā)相應的消息協(xié)議,以確保所有應用的消息傳送行為都是正確的,還必須確保這些應用在高負載條件下,分配充足的存儲空間用于消息緩沖。雖然在簡(jiǎn)單的系統中,完成這些設計任務(wù)可能不太費勁,但對于設計或升級復雜的系統,這些任務(wù)可能構成令人生畏的艱巨挑戰。
同步消息傳送系統,或者說(shuō)發(fā)送/接收/回復消息傳送系統(圖3)不如異步消息傳送系統那么常用。對于有許多進(jìn)程要求在其開(kāi)始執行之前響應其消息的實(shí)時(shí)環(huán)境,同步消息傳送特別有用。
圖3 采用同步消息傳送,一個(gè)進(jìn)程阻塞直至其收到從目標接收進(jìn)程發(fā)出的回復。
對于必須輕松地集成完全不同的應用的復雜系統,同步消息傳送可能不是最優(yōu)選擇。同步消息傳送將發(fā)送方與接收方緊密地結合起來(lái)。每一臺服務(wù)器都直接與其客戶(hù)端通信,并且必須知道如何響應所有客戶(hù)端消息,因此,對一個(gè)軟件組件做出的改變,可能要求改變其他軟件組件。
持久發(fā)布/訂閱
發(fā)布/訂閱消息傳送模式問(wèn)世已久。1987年,K. P. Birman和T. A. Joseph描述了一種類(lèi)似的消息傳送模式——虛擬同步。二十年前,北電網(wǎng)絡(luò )實(shí)現了一個(gè)用于在電話(huà)交換機上執行故障監視的發(fā)布/訂閱消息傳送模型,如今,快速互聯(lián)網(wǎng)搜索提供了許多發(fā)布/訂閱消息傳送實(shí)現的例子。持久發(fā)布/訂閱在這些模式的基礎上進(jìn)一步發(fā)展,確保了重新啟動(dòng)后的數據持久性,并且可以支持必須集成許多設備和組件,采用尖端的人機界面的應用。
PPS是一項基于對象的服務(wù),其發(fā)布方和訂閱方是在一個(gè)松散結合的消息傳送架構中。任何PPS客戶(hù)端都可以是發(fā)布方、訂閱方或兼為二者。發(fā)布方修改對象及其屬性,并將之寫(xiě)入文件系統。當發(fā)布方改變一個(gè)對象時(shí),PPS服務(wù)將通知所有訂閱了該對象的客戶(hù)端??蛻?hù)端可以訂閱多個(gè)對象,并且對象可以具備多個(gè)發(fā)布方和訂閱方。因此,多個(gè)發(fā)布方可以使用同一個(gè)對象及其屬性,來(lái)向所有訂閱了該對象的客戶(hù)端傳遞信息。
PPS客戶(hù)端必須知道感興趣的是哪些PPS對象。如果是發(fā)布方,它們需要知道在什么時(shí)候發(fā)布什么消息;如果是訂閱方,它們需要知道必須訂閱哪些對象以及對哪些對象屬性感興趣。
然而,PPS客戶(hù)端不必管理錯誤,并且與它們有關(guān)的唯一緩沖是那些用于open()(打開(kāi))、read() (讀?。┖蛍rite()(寫(xiě)入)POSIX API調用的緩沖。由于PPS訂閱方使用read()調用來(lái)檢索數據,因此,它們不需要為這些對象管理緩沖。它們僅需決定其讀取是阻塞方式,還是非阻塞方式,以及確認它們能夠解析所讀取的數據。PPS服務(wù)將處理其余事項。
持久性
PPS服務(wù)可在重新啟動(dòng)后更新數據。運行時(shí),它將其對象存放在內存中,但在收到指令或在關(guān)閉時(shí),則將之保存在永久性存儲器中。啟動(dòng)時(shí),它可立即或在首次訪(fǎng)問(wèn)時(shí),恢復其對象。當然,永久性存儲器依賴(lài)于可靠的文件系統和存儲介質(zhì)。
PPS消息傳送模式也可簡(jiǎn)化系統啟動(dòng)。例如,在采用常規消息傳送模式的系統中,如果某個(gè)客戶(hù)端在服務(wù)器之后啟動(dòng),那么,該客戶(hù)端必須向服務(wù)器請求新的數據,以防在從服務(wù)器啟動(dòng)到客戶(hù)端啟動(dòng)的這段時(shí)間內發(fā)生了任何改變。對于系統中的每一個(gè)客戶(hù)端,如果客戶(hù)端與服務(wù)器之間的連接中斷,也必須滿(mǎn)足這個(gè)要求。然而,利用PPS服務(wù),發(fā)布和訂閱服務(wù)可在啟動(dòng)時(shí)恢復其對象,并在對象有所變化時(shí)更新對象。任何客戶(hù)端——不論其在任何時(shí)候啟動(dòng)或重新連接——僅需讀取這些對象,即可獲得當前數據。
利用PPS服務(wù),發(fā)布方與訂閱方相互之間并不認識;它們之間的唯一聯(lián)系是對它們具有意義和目的的對象。這種模式賦予了系統設計者極大的靈活性。如有必要,他們可以將關(guān)于模塊連接點(diǎn)和數據流的決策,推遲到運行時(shí)間再做出。開(kāi)發(fā)人員可以在創(chuàng )建系統的過(guò)程中調整連接點(diǎn),甚或將之設置為隨著(zhù)系統的運行而動(dòng)態(tài)改變,因為這些點(diǎn)既不是硬編碼的,也沒(méi)有直接聯(lián)系。
PPS消息傳送模式也簡(jiǎn)化了新組件的集成。由于發(fā)布方與訂閱方無(wú)需相互認識,因此,添加組件的開(kāi)發(fā)人員僅需決定該新組件應當發(fā)布什么數據,以及這些組件需要其他PPS客戶(hù)端發(fā)布什么數據。例如,他們可以在醫療器械聚合器中添加ECG或EEG組件,而不必微調API,并且不會(huì )加劇系統復雜度(圖4)。
圖4 通過(guò)PPS進(jìn)行通信的系統組件不需要相互認識,因此,系統設計者可以添加新的測量設備或者改變HMI,而不必修改整個(gè)系統。
可行性論證
作為QNX軟件系統公司開(kāi)展的醫療器械開(kāi)發(fā)計劃的一部分,我們設計并打造了一個(gè)用于可行性論證的模型,以在便攜式醫療器械提供的有限的計算資源上運行。該應用利用基于康體佳(Continua)標準的互通性管理器、PPS和利用跨平臺應用和用戶(hù)界面框架Qt(發(fā)音“cute”)創(chuàng )建的尖端的HMI,將一系列典型設備組合起來(lái)。
我們之所以選擇Qt用戶(hù)界面和基于康體佳聯(lián)盟提供的康體佳使能軟件庫(CESL)的互通性管理器是因為,這兩種技術(shù)都在醫療器械行業(yè)享有盛譽(yù)。Qt在C++開(kāi)發(fā)環(huán)境中提供了一套明確定義的UI組件,并且有著(zhù)在獲得了FDA及其他規定認證的醫療器械上成功實(shí)現的悠久歷史。
Qt提供了打造符合嚴格的設計要求的清晰、高效的用戶(hù)界面所需的所有組件,包括布局、分層和多媒體支持。類(lèi)似地,康體佳軟件庫中的通信協(xié)議不僅提供了與完全不同的醫療器械進(jìn)行通信的簡(jiǎn)單方法,而且是一個(gè)早已在醫療器械中成功部署的標準化協(xié)議。
簡(jiǎn)化的架構
可以將PPS服務(wù)專(zhuān)門(mén)設計為使用二進(jìn)制對象或人可讀的對象。二進(jìn)制對象很小,但是,除最具約束性的環(huán)境之外,在所有環(huán)境中,人可讀的對象更可取。它們允許開(kāi)發(fā)人員利用標準文件系統實(shí)用程序,從命令行進(jìn)行調試,如cat命令用于訂閱,echo命令用于發(fā)布,或者編寫(xiě)一個(gè)簡(jiǎn)單的程序,用于訂閱某個(gè)對象并打印調試信息,包括PPS對象及其屬性的列表。
PPS消息傳送為應用提供了一個(gè)靈活的架構。例如,要用其他庫來(lái)替代康體佳庫,或者用其他HMI技術(shù)來(lái)替代Qt,所需工作量極少。同樣地,改變HMI技術(shù)不會(huì )要求改變互通性管理器或者遠程管理器,就像改變這些管理器,不會(huì )要求改變HMI。
PPS消息傳送也便于添加新的設備——利用標準康體佳協(xié)議,通過(guò)USB、藍牙甚或TCP,即可將新的設備連接至系統。例如,我們僅需利用康體佳協(xié)議將一個(gè)EEG連接至互通性管理器,創(chuàng )建適當的PPS對象用于通信,并且在HMI中添加相關(guān)顯示和控制功能,即可將該EEG添加到我們的可行性論證模型中。此外,PPS消息傳送簡(jiǎn)化了測試和功能安全驗證,因為添加新的組件不要求修改和重新驗證所有其他組件之間的消息傳送。
最后,PPS消息傳送簡(jiǎn)化了品牌重樹(shù)、本地化和用戶(hù)界面更新等。因為HMI通過(guò)PPS對象與系統的其余組件進(jìn)行通信,所以設計者不必改變HMI之下的任何一行代碼。他們僅需確保新的HIMI所訂閱和發(fā)布的PPS對象與先前的HMI相同。在完全相同的基礎系統上,僅需實(shí)現不同的特性,或者不同的HMI設計,例如,支持不同的字母表和寫(xiě)入系統,即可打造出各種產(chǎn)品系列。
評論