winform集成第三方應用引起災難性崩潰處理


  猶記得當年的喜悅。故事有些長,就長話短說了。

背景

  2017年,由個人主導的《xx門診電子病歷系統》在北京xxx第一次正式上線,這個系統集成了n家院內系統,如LIS、HIS、PACS等。涉及的交互,復雜無比。當時通過各個廠商討論后,采用了進程間通信、api/webservice數據交互的方式,改造程序,完美的將程序集成在一起,讓用戶在一個系統中能夠快速的工作,替代以往多客戶端來回切換的工作方式。

  而想要快速推廣這種方式,需要厚實的功底。很可惜,我們的團隊,並沒有這種大牛。在開發之初,我就想到了以后可能需要和不同的醫院作對接。因此,早期在搭建時,就設計了接口加反射的方式來實現不同醫院的集成開發,實質是只要繼承接口,實現接口即可

  問題就在這兒,並不是所有第三方提供的集成方式都穩定無比,也不是說我們的程序也能夠穩定無比。

  有些災難性錯誤壓根就不能捕捉。

  隨着系統逐步的推廣上線了20多家時,我們研發越來越感到厚重。所有的問題,會越來越明確,越來越有統一性。

  這個當中就有今天所說的災難性崩潰處理。

處理過程

  1.全局異常捕捉日志細化,然並卵,如delphi程序、c++程序並不能捕捉到

  2.嘗試反射出崩潰轉存的文件,然並卵,我們這隊伍並沒有通用懂得匯編語言的人員。

  3.要求第三方提供穩定的版本,依然,不是所有的人都能控制的。

  4.折中方案,成功。

成功處理方案

  我們都知道,通常一個exe程序就是一個進程。而我們程序因集成了很多第三方程序,進程中含有與第三方交互的地方很多。因此,引起崩潰,不能控制。

  對此,我想到的就是將一個進程拆成多個進程的方式。不穩定的集成統統拆到子exe程序中,主程序與子程序間交互,崩潰的永遠是子進程,主進程依然穩定運行。此方案,經過多現場改造后,很大的解決了現場壓力。

意外收獲

  今天,看到博客園推薦的一篇文章,其實思想與我的想法一致。但是,他的做法更顯功底,更有魅力。感謝博客園,感謝大家的奉獻!

  大家可以看看:https://www.cnblogs.com/cwsheng/p/14616685.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM