• 沒有找到結果。

系統實作工具與技術

第五章 系統實作與展示

5.1 系統實作工具與技術

本節主要介紹 BIMFeeD 在系統實作階段所採用的工具和技術。有關物件導向 的軟體架構設計,三層架構(three-layer or three-tier architecture)是常見的軟體分層 方式,目的為將不同屬性的軟體功能或構成要素區分開來,這三層架構包含:

 展示層(presentation layer):前端(front-end)使用者之操作介面。

 商業邏輯層(business logic layer):軟體作業流程控制及相關資料處理。

 資料存取層(data access layer):透過通訊管道或資料庫存取資料。

(Mishra, 2011)

基本上,這和 4.5 節所提及之 MVC 模式相當類似,惟三層架構主要闡述軟體 功能取向的分層概念,MVC 則是軟體運作的設計模式。本研究考量 BIMFeeD 具 有不同的使用者平台和資訊管理模式,特別將客戶端層(client layer)和資料層(data layer)也一併考慮進來,並將 BIMFeeD 之軟體分層技術架構圖繪製如圖 17,雙向 箭頭代表技術之間的資訊傳輸或程式互動,單向箭頭代表檔案格式的轉換步驟,

接著逐層介紹其中的工具、技術或操作環境:

 客戶端層

客戶端層主要顯示使用者之操作工具或環境,對於資訊請求端的使用者而 言,主要操作工具即為建模工具 Revit,再透過 Revit 啟動 BIMFeeD 之建模 工具外掛程式,而資訊回饋端的使用者則使用網頁瀏覽器來連接 BIMFeeD 之網頁伺服器,若欲執行 4.6 節所述之 IFC 模型線上瀏覽功能,則網頁瀏覽 器必須支援 WebGL,目前較新版本的幾個主流網頁瀏覽器皆已廣泛支援 WebGL,甚至部份行動裝置的瀏覽器亦可支援 WebGL。

83

圖 17:BIMFeeD 之軟體分層技術架構圖

 展示層(網頁伺服器部分)

網頁伺服器的展示層主要對應到 MVC 模式的檢視,網頁的內容呈現主要以 HTML 為基礎,搭配 CSS (Cascading Style Sheets)作為樣式表,而前端的設 計樣板(design template)和使用者介面則採用支援響應式設計的 Twitter Bootstrap 框架,可節省自行設計網頁元件和編排頁面的時間。此外,IFC 模型線上瀏覽功能採用 WebGL 技術,即使用 HTML5 的 Canvas 元素來進 行圖像渲染(render)。

 展示層(外掛程式部分)

外掛程式的展示層主要分為兩部分:其一為 BIMFeeD 外掛程式在 Revit 使 用者介面中的功能區,即藉由 Revit Ribbon API 來設計 BIMFeeD 在 Revit

84

使用者介面中之頁籤(tab)、面板(panel)和按鈕(button)等;其二為透過按鈕來 啟動 BIMFeeD 不同功能之使用者介面(如:建立任務、檢視任務清單等),

此部分採用 WPF (Windows Presentation Foundation)技術來進行使用者介面 的開發,WPF 係 Mircrosoft .NET Framework 之展示層開發框架。

 商業邏輯層(網頁伺服器部分)

網頁伺服器的商業邏輯層主要對應到 MVC 模式的控制器,由於 BIMFeeD 的網頁伺服器採用 Play Framework 來開發,故伺服器端(server-side)的程式 邏輯主要由 Java 的控制器類別來處理,而客戶端(client-side)的程式腳本則 採用 jQuery,係一套跨瀏覽器的 JavaScript 函式庫。此外,由於 WebGL 僅 提供底層(low-level)的渲染和計算函式,故本研究另外採用 Three.js,係一套 解析 3D 檔案格式和處理 3D 互動行為的 JavaScript 函式庫。

 商業邏輯層(外掛程式部分)

外掛程式的商業邏輯層主要使用兩種類別庫:有關 Revit 模型的資訊擷取和 物件修改必須基於 Revit API 來設計程式邏輯;而資料結構封裝和其他公用 程式部分則使用.NET Framework 之類別庫。

 資料存取層(網頁伺服器部分)

網頁伺服器的資料存取層主要對應到 MVC 模式的模型,可分為三個部分:

其一為資訊回饋資料庫系統的資料交換,由於 Redis 資料庫和網頁伺服器處 於同一個內部網路環境,故直接採用 Redis 的 Java 客戶端 Jedis 較為方便,

且 Play Framework 亦有 Jedis 的外掛程式可用;其二為檔案的上傳與後續處 理,即包含各式模型檔案和圖片檔案等,由於伺服器為 Linux 作業系統,故 採用 Apache Commons IO 類別庫來處理檔案的 IO (Input/Output);其三為 IFC 模型線上瀏覽功能的檔案格式解析,由於 Three.js 無法直接解析 IFC 格式,

故可先轉為 OBJ 格式,再由 Three.js 之 OBJ loader 來解析 OBJ 格式。

85

 資料存取層(外掛程式部分)

外掛程式的資料存取層主要包含兩部分:其一為與資訊回饋資料庫系統進 行資料交換的 web 服務;其二為將 IFC 模型轉為 OBJ 格式,係採用 IfcOpenShell 的 IfcObj 模組。

 資料層

資料層即包含資料庫管理系統和各式檔案,前者為 Redis 資料庫,後者則包 含 Revit 模型檔案、IFC 模型檔案、OBJ 模型檔案、模型截圖檔案以及其他 必要檔案等。