[Software Architecture]從Silverlight run 在Mac OS談中介程式重要性
今天在查Silverlight資料時,想要看看Silverlight內建的CoreCLR與.net framework完整的CLR之間有什麼不同時,剛好看到這一篇,使用 CoreCLR 進行 Silverlight 的程式設計,裡頭有提到Silverlight可以Run在Mac OS上,而它的做法並不是去修改CLR或者Mac OS的底層,而是透過了一個平台配接層(Platform Adaptation Layer,PAL)來達成。
這樣的應用在系統設計、系統整合時會常常被我們使用,我們舉個積木的例子來說,假設我們有兩個大型,且運行了一段時間的系統,我們希望將這兩個產品進行整合,但兩個系統所開放的API或者技術底層會導致兩者無法直接整合,如以下的積木般,系統A顯然無法直接嵌入系統B中。
這時候你會怎麼做?砍掉重練應該不是一個好方法,修改其中一個去遷就另一個呢?老闆問你風險有多大,你可能也不敢隨便回答,因為系統當初也不是你設計的,這時候我們就開始思考這樣的解法;
組合後:
可不可以寫一個能符合系統A與系統B標準的服務來將兩者串接在一起,這樣就可以不動到兩個系統了,而這個中介的配接器我們習慣都稱他為Adapter,其實這種概念四處都有的,舉個生活化的例子,那就是萬用插頭了,我們出國去大概都會用的到,上次我去峇里島也買了一個,因為印尼的電源插座不像台灣這邊是兩孔或者三孔式的,所以我們會需要一個轉接頭來讓我們的相機、手機充電器可以使用。
其實這種做法很常被使用,跟design-in最大的差別在於執行效率上會有一些些差別,但如果你在一開始設計時就沒有幫系統劉好標準的服務接口,那之後免不了會使用到一些折衷的解法,而其中的Adapter solution就是你的好夥伴了。
參考資料:
使用 CoreCLR 進行 Silverlight 的程式設計
游舒帆 (gipi) 探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。 |