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