饒平平1 沈 益1 朱清鵝1 沈程琳
(1.上海理工大學(xué) 環(huán)境與建筑學(xué)院,上海 200093; 2.上海同筑信息科技有限公司,上海 200093)
隨著社會(huì)經(jīng)濟(jì)的發(fā)展,為了適應(yīng)高速發(fā)展經(jīng)濟(jì)需求,計(jì)算機(jī)、網(wǎng)絡(luò)等技術(shù)被越來(lái)越多的行業(yè)所應(yīng)用,并帶來(lái)了行業(yè)顛覆性的影響。例如傳統(tǒng)集市+互聯(lián)網(wǎng)→淘寶; 傳統(tǒng)銀行+互聯(lián)網(wǎng)→支付寶; 傳統(tǒng)交通+互聯(lián)網(wǎng)→滴滴快車等。通過(guò)利用云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等實(shí)現(xiàn)了資源共享與信息實(shí)時(shí)傳遞,極大地促進(jìn)電子商務(wù)和互聯(lián)網(wǎng)金融健康發(fā)展,引導(dǎo)互聯(lián)網(wǎng)企業(yè)拓展國(guó)際市場(chǎng)[1]。在建筑行業(yè),工程項(xiàng)目具有建設(shè)周期長(zhǎng)、涉及專業(yè)多、環(huán)境復(fù)雜等特點(diǎn),這使得建筑行業(yè)數(shù)據(jù)和信息多而復(fù)雜,然而這些數(shù)據(jù)因粗放式的管理,沒(méi)有產(chǎn)生數(shù)據(jù)應(yīng)有的價(jià)值[2]。隨著BIM、云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等技術(shù)的出現(xiàn),將BIM模型作為數(shù)據(jù)信息的載體,通過(guò)互聯(lián)網(wǎng)模式,實(shí)現(xiàn)建筑信息的采集和分析,形成數(shù)據(jù)庫(kù),保障信息的及時(shí)性、準(zhǔn)確性、唯一性[3-4]。
市面上多數(shù)工程的環(huán)境或安全監(jiān)管平臺(tái)解決了監(jiān)測(cè)數(shù)據(jù)散亂的問(wèn)題,如現(xiàn)場(chǎng)監(jiān)控系統(tǒng)、安全指數(shù)監(jiān)測(cè)平臺(tái)等實(shí)現(xiàn)了施工現(xiàn)場(chǎng)安全信息的收集和查看,但此類平臺(tái)往往缺乏日常流程管理功能,同時(shí)也在數(shù)據(jù)分析處理、安全預(yù)警、消息傳送等功能方面少有涉及; 而對(duì)于多數(shù)工程業(yè)務(wù)流程管理平臺(tái),往往存在日常運(yùn)行故障多、低移動(dòng)化、操作冗雜度高等問(wèn)題,這不利于工程管理平臺(tái)朝向智能化發(fā)展。
因此我們需要建立一個(gè)運(yùn)行流暢、架構(gòu)安全的精細(xì)化平臺(tái),實(shí)現(xiàn)工程建設(shè)的信息化、精細(xì)化、規(guī)范化管理,從而達(dá)到工程信息的實(shí)時(shí)共享,提高項(xiàng)目管理效率的目的。
圖1 平臺(tái)總體架構(gòu)
精細(xì)化管理平臺(tái)總體架構(gòu)由五個(gè)層次組成,分別為:由網(wǎng)絡(luò)基礎(chǔ)設(shè)施和計(jì)算機(jī)軟硬件基礎(chǔ)設(shè)施兩部分組成的基礎(chǔ)設(shè)施層; 包含BIM數(shù)據(jù)庫(kù)、GIS數(shù)據(jù)庫(kù)、管理數(shù)據(jù)庫(kù)、共享數(shù)據(jù)庫(kù)的數(shù)據(jù)層; 包含前后端分離技術(shù)、Vue前段框架技術(shù)、Springcloud等后端框架技術(shù)、移動(dòng)端技術(shù)的支撐層; 包含進(jìn)度、質(zhì)量、安全、物料、文檔、模型管理六個(gè)功能模塊的應(yīng)用層,該層即為精細(xì)化管理實(shí)際內(nèi)容的表現(xiàn); 由業(yè)主方、施工方、監(jiān)理方等項(xiàng)目參建單位組成的用戶層,為精細(xì)化管理組織成員的具體表現(xiàn)??傮w架構(gòu)圖如圖1。
精細(xì)化管理平臺(tái)采用前后端分離進(jìn)行搭建,前端負(fù)責(zé)UI交互層設(shè)計(jì)、數(shù)據(jù)的展現(xiàn)、程序應(yīng)用邏輯及邏輯渲染、優(yōu)化用戶體驗(yàn)、頁(yè)面渲染等; 后端負(fù)責(zé)服務(wù)層開發(fā)、提供數(shù)據(jù)、存儲(chǔ)數(shù)據(jù)、保障數(shù)據(jù)傳輸?shù)姆€(wěn)定性等。前后端最后通過(guò)接口實(shí)現(xiàn)數(shù)據(jù)傳遞和交互。
多數(shù)工業(yè)管理平臺(tái)存在前后端某一端業(yè)務(wù)薄弱的情況,這往往是由于平臺(tái)開發(fā)時(shí),開發(fā)人員一起開發(fā)前后端,開發(fā)存在側(cè)重點(diǎn)。而本研究構(gòu)想的平臺(tái)采用開發(fā)分離原則,前后端在分離開發(fā)模式下,前后端人員各司其職,同時(shí)進(jìn)行開發(fā),可以縮短平臺(tái)開發(fā)時(shí)間,提高開發(fā)效率。在前后端人員雙方了解業(yè)務(wù)邏輯情況下,前后端人員可以不依賴彼此進(jìn)行單獨(dú)開發(fā)和調(diào)試,從而減少前后端的溝通,有效地降低溝通成本。前端不需要編寫任何后端代碼,只需要調(diào)用后端提供的接口,就可實(shí)現(xiàn)前后端的連接,從而避免前后端代碼耦合、混雜等現(xiàn)象。
圖2 終端與后端連接
采用前后端分離,后端提供數(shù)據(jù)接口,手機(jī)、平板等不同終端只需要根據(jù)數(shù)據(jù)接口編程,就能實(shí)現(xiàn)多個(gè)終端與同一個(gè)后端的連接,避免開發(fā)者針對(duì)每一個(gè)終端都開發(fā)相同的后端服務(wù)的重復(fù)工作,提高開發(fā)者的工作效率,如圖2終端與后端的連接。
平臺(tái)前后端分離采用單頁(yè)面應(yīng)用SPA(Single-page application),單頁(yè)面應(yīng)用將前后端關(guān)注點(diǎn)進(jìn)行分離,前端負(fù)責(zé)顯示,后端負(fù)責(zé)數(shù)據(jù)的計(jì)算和存儲(chǔ),明確前后端的邏輯,加載時(shí)僅根據(jù)需求進(jìn)行局部更新,提高了加載速度和用戶體驗(yàn)感。
(1)Vue技術(shù)
Vue是當(dāng)前使用廣泛的開源的漸進(jìn)式JavaScript框架,可以自由與多種第三方庫(kù)或第三方插件進(jìn)行對(duì)接,包含多種附帶組件,如Vue-cli、Vue-router等。
1)Vue.js前端開發(fā)框架
Vue.js[5]是近年來(lái)出現(xiàn)的一款輕量級(jí)前端框架,相比于Angular JS前端框架,Vue.js更簡(jiǎn)單、更靈活、更容易優(yōu)化、性能更好,因此Vue.js運(yùn)用于前端框架被越來(lái)越多的人認(rèn)可。與Vue.js相似并被多數(shù)工程管理平臺(tái)應(yīng)用的前端開發(fā)框架React,其與Vue.js區(qū)別主要是內(nèi)部實(shí)現(xiàn)本質(zhì)不同,React通過(guò)對(duì)虛擬DOM進(jìn)行渲染,將數(shù)據(jù)保存在內(nèi)存中,當(dāng)狀態(tài)發(fā)生改變時(shí),將會(huì)重新對(duì)虛擬DOM進(jìn)行渲染,通過(guò)補(bǔ)丁的形式將變化部分加載到虛擬DOM節(jié)點(diǎn)上,并且不是每次改變都渲染整個(gè)頁(yè)面。而Vue.js則是以DOM為模板,真正操作在DOM上,將數(shù)據(jù)與真實(shí)的節(jié)點(diǎn)進(jìn)行綁定[6]。Vue.js的這種真實(shí)DOM比React的虛擬DOM性能更好,能為前端多功能模塊提供精細(xì)度高的界面顯示,更能滿足本平臺(tái)前端開發(fā)。
除此之外,Vue.js作為前端開放框架主要是因?yàn)槠渚哂心K化、組件化、響應(yīng)式數(shù)據(jù)雙向綁定、路由功能和狀態(tài)管理特點(diǎn)。
模塊化:在JavaScript剛開始運(yùn)用于前端開發(fā)時(shí),不支持程序分解,然后再自由組合。這給開發(fā)人員開發(fā)大型、復(fù)雜的Web應(yīng)用帶來(lái)很大的阻礙。因此,前端逐漸支持模塊化,保證了管理人員基于平臺(tái)對(duì)工程信息的模塊式管理。通過(guò)import(導(dǎo)入)模塊、export(導(dǎo)出)模塊,豐富Java Script語(yǔ)言的功能。2015年所處JavaScript最新版本ECMAScript6.0(簡(jiǎn)稱ES6)支持模塊化,ES6模塊的靜態(tài)化設(shè)計(jì)原則,有效提高模塊的加載[7]。Vue.js支持最新的ES6規(guī)范,因此利用Vue.js作為前端框架,能夠很好地體現(xiàn)模塊化思想。
組件化:通過(guò)組件化,Vue.js能夠?qū)S、HTML和CSS等前端開發(fā)語(yǔ)言寫在一個(gè)文件里,且各組件之間不會(huì)相互影響,組件之間的關(guān)系明確,開發(fā)人員清楚劃分各組件的功能邊界,這有效提高代碼可讀性和可維護(hù)性,有效減少定位并解決開發(fā)遇到問(wèn)題的時(shí)間,為工程信息復(fù)雜的精細(xì)化管理提供了軟硬件基礎(chǔ)上的流暢性和快捷性。
響應(yīng)式數(shù)據(jù)雙向綁定:其綁定原理如圖3。與單項(xiàng)數(shù)據(jù)綁定相比,雙向數(shù)據(jù)綁定減少了增、刪、改、查操作,在模型數(shù)據(jù)與視圖顯示數(shù)據(jù)之間,一個(gè)數(shù)據(jù)修改,另一個(gè)數(shù)據(jù)自動(dòng)隨之改變,例如在表單場(chǎng)景中,當(dāng)填寫完表單信息,數(shù)據(jù)就已經(jīng)保存到模型數(shù)據(jù)庫(kù),這就省去模型數(shù)據(jù)增、刪、改、查等工作量,節(jié)約時(shí)間,提高效率。
圖3 雙向數(shù)據(jù)綁定原理
路由功能:Vue.js+vue-router創(chuàng)建單頁(yè)面應(yīng)用,通過(guò)Vue.js的路由功能在路由中配置業(yè)務(wù)模塊,實(shí)現(xiàn)單頁(yè)面跳轉(zhuǎn)。
狀態(tài)管理:Vuex專門為解決多個(gè)組件共享狀態(tài)的問(wèn)題而設(shè)計(jì)的Vue.js框架的狀態(tài)管理模式,其狀態(tài)管理原理如圖4,Commit主動(dòng)操作Mutations,Mutations操作用來(lái)存放共享狀態(tài)的State。
圖4 Vuex狀態(tài)管理原理
2)管理平臺(tái)前端動(dòng)態(tài)頁(yè)面技術(shù)
利用HTML5和CSS3編寫靜態(tài)頁(yè)面,然后在靜態(tài)頁(yè)面插入JavaScript這種能被瀏覽器解析和運(yùn)行的腳本語(yǔ)言實(shí)現(xiàn)精細(xì)化管理平臺(tái)前端動(dòng)態(tài)頁(yè)面設(shè)計(jì)。
HTML5是2014年萬(wàn)維網(wǎng)重新修訂的超文本標(biāo)記語(yǔ)言,它在舊版本的HTML基礎(chǔ)上添加
CSS3(層疊樣式表)是2001年W3C組織在原版CSS基礎(chǔ)更新的一門為網(wǎng)頁(yè)頁(yè)面添加色彩、樣式的計(jì)算機(jī)語(yǔ)言,它的多背景圖、邊框、顏色等特性使網(wǎng)頁(yè)擁有豐富多彩的網(wǎng)頁(yè)樣式。
JavaScript[8]具有解釋性、動(dòng)態(tài)性特性,只要將JavaScript嵌入到HTML5代碼中,就能實(shí)現(xiàn)HTML5頁(yè)面動(dòng)態(tài)效果。JavaScript是一種弱類型語(yǔ)言。并且因?yàn)镴avaScript不允許訪問(wèn)本地硬盤文件和對(duì)傳輸文本的修改或刪除,防止數(shù)據(jù)丟失,因此JavaScript安全性很高。
(2)Elementui技術(shù)
Elementui技術(shù)是近年來(lái)為設(shè)計(jì)者準(zhǔn)備的基于Vue2.0的桌面端組件庫(kù)。其組件豐富,頁(yè)面簡(jiǎn)潔大方,解決了智能手機(jī)和計(jì)算機(jī)瀏覽器前端顯示效果不兼容現(xiàn)象。利用Elementui技術(shù)對(duì)前端界面元素進(jìn)行設(shè)計(jì),可以有效解決計(jì)算機(jī)能夠顯示完整的網(wǎng)頁(yè)界面而手機(jī)端出現(xiàn)網(wǎng)頁(yè)界面不全的問(wèn)題。
目前該技術(shù)多為生活購(gòu)物軟件平臺(tái)使用,尚未被工程管理平臺(tái)廣泛應(yīng)用,但對(duì)于手機(jī)端與網(wǎng)頁(yè)端通用的管理平臺(tái)是有利無(wú)害的。在利用Elementui技術(shù)對(duì)精細(xì)化管理平臺(tái)前端界面進(jìn)行設(shè)計(jì)時(shí),前端界面上圖表展示使用百度Echarts。Echarts[9]是國(guó)內(nèi)一款能夠兼容大部分瀏覽器和移動(dòng)設(shè)備的JavaScript圖表庫(kù),將其運(yùn)用到前端界面設(shè)計(jì)中,通過(guò)加載、數(shù)據(jù)轉(zhuǎn)換、定制、渲染四個(gè)步驟,可以生成直觀、生動(dòng)的計(jì)劃統(tǒng)計(jì)、產(chǎn)值統(tǒng)計(jì)等圖表,這使得平臺(tái)界面的管理內(nèi)容得到了深度的細(xì)化。
(3)Webpack技術(shù)
隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,前端頁(yè)面越來(lái)越豐富,所包含的JS代碼、依賴包等各種文件越來(lái)越多。為了方便后期前端應(yīng)用的維護(hù)和提高開發(fā)效率,在精細(xì)化管理平臺(tái)中運(yùn)用Webpack對(duì)前端資源進(jìn)行模塊化管理,并將Webpack做為打包工具[10]。Webpack能夠?qū)⑶岸私缑嬷胁荒茏R(shí)別的的語(yǔ)言打包轉(zhuǎn)換成前端界面能夠識(shí)別的格式; Webpack能夠把有依賴關(guān)系的各種文件打包成符合前端管理的靜態(tài)資源。Webpack的工作原理如圖5。
圖5 Webpach工作原理圖
本文利用Vue+Elementui+Webpack技術(shù)搭建精細(xì)化管理平臺(tái)的前端,用目前流行、輕量級(jí)的Vue.js作為該平臺(tái)前端框架,根據(jù)Vue.js框架專門設(shè)計(jì)的vuex進(jìn)行前端跨頁(yè)面系統(tǒng)的管理,使用vue-router進(jìn)行路由管理,實(shí)現(xiàn)前端單頁(yè)面的跳轉(zhuǎn),使用vue-cli腳手架進(jìn)行前端頁(yè)面搭建; 合理運(yùn)用HTML5、CSS3、JavaScript三種網(wǎng)頁(yè)編程語(yǔ)言,設(shè)計(jì)出前端動(dòng)態(tài)頁(yè)面; 運(yùn)用Elementui作為前端頁(yè)面設(shè)計(jì)的UI框架,設(shè)計(jì)出符合客服審美的計(jì)算機(jī)瀏覽的前端網(wǎng)頁(yè)界面,同時(shí)使用Echarts設(shè)計(jì)前端網(wǎng)頁(yè)界面圖表,使前端網(wǎng)頁(yè)界面的圖表更深度、更形象、更美觀; 使用Webpack完成項(xiàng)目前端代碼的壓縮、打包工作,方便后期前端應(yīng)用的維護(hù)和提高開發(fā)效率。利用Vue、Elementui、Webpack技術(shù),搭建滿足功能需求的精細(xì)化管理平臺(tái)前端,如圖6。
圖6 精細(xì)化管理平臺(tái)前端搭建
Spring[11]網(wǎng)站抽象地定義了Spring Cloud的概念:Spring希望集成一組工具,這些工具可以使軟件開發(fā)人員輕松構(gòu)建分布式通用組件,協(xié)調(diào)系統(tǒng)環(huán)境并為不同的服務(wù)提供模板。Spring Cloud提供了一組易于使用的Jaba Spring庫(kù),這些庫(kù)實(shí)現(xiàn)了分布式系統(tǒng)所需的一系列通用模式。Spring Cloud中的Cloud不是云解決方案,只是為開發(fā)提供的各種支持組件,為開發(fā)人員提供了基于云的分布式軟件系統(tǒng),提高了開發(fā)的便捷度。
Spring Cloud[12-13]集成了多個(gè)組件,這些組件使得Spring Cloud的使用變得更便捷,特別是在分布式系統(tǒng)的開發(fā)中。這些組件主要由負(fù)責(zé)打包現(xiàn)有軟件和負(fù)責(zé)分布式系統(tǒng)研發(fā)的補(bǔ)充實(shí)現(xiàn)兩部分組成。這些組件包括Spring Cloud Netflix、Spring Cloud Config、Spring Cloud Eureka、Spring Cloud Bus、Spring Cloud Zookeeper、Spring Cloud CLI等重要內(nèi)容[14]。眾多的組件豐富了Spring Cloud的功能,使其能夠滿足實(shí)際研發(fā)中的分布式配置、負(fù)載平衡、安全性、路由、分布式跟蹤、云支持等各種要求。因此利用Spring Cloud作為微服務(wù)開發(fā)套件,能夠?yàn)檎麄€(gè)系統(tǒng)的研發(fā)集成便捷、清晰的開發(fā)思路。
MariaDB[15]是2009年由Michael Widenius主導(dǎo)開發(fā)、開源社區(qū)維護(hù)、采用GPL授權(quán)的一種小型、快速的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。開發(fā)MariaDB的目的是完全兼容MySQL,讓MariaDB成為MySQL的代替品。因此MariaDB與MySQL一樣具有性能高、成本低、可靠性好的特性,除此之外,MariaDB在擴(kuò)展功能、存儲(chǔ)引擎以及一些新的功能改進(jìn)方面都比MySQL強(qiáng)。自2009年以來(lái),隨著MariaDB的不斷成熟,它逐漸從應(yīng)用在Internet上的中小型網(wǎng)站向應(yīng)用在大規(guī)模網(wǎng)站發(fā)展。MariaDB結(jié)構(gòu)如圖7。
圖7 MariaDB結(jié)構(gòu)
Logback是一個(gè)高性能的開源日志框架,通過(guò)對(duì)Logback的使用,我們可以控制日志信息傳遞的目的地是控制臺(tái)、GUI組件等,還可以控制每個(gè)日志的輸出格式,通過(guò)定義每個(gè)日志信息級(jí)別,我們可以更詳細(xì)地控制日志生成過(guò)程。這些功能可以通過(guò)一個(gè)配置文件靈活地配置,而不需要修改應(yīng)用程序代碼。對(duì)于精細(xì)化管理涉及的進(jìn)度、安全、質(zhì)量、成本等多要素,平臺(tái)運(yùn)行時(shí)需要讀寫大量的數(shù)據(jù)日志,而Logback使用內(nèi)存和本地磁盤緩存可以最大限度地傳輸具有高強(qiáng)度和大量數(shù)據(jù)的日志,為精細(xì)化管理提供了有力的后臺(tái)技術(shù)支撐。Logback本地日志緩存無(wú)法執(zhí)行內(nèi)容搜索,最終需要將日志數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中。
本文利用SpringCloud+MariaDB+Logback技術(shù)搭建精細(xì)化管理平臺(tái)后端。SpringCloud是當(dāng)前使用最廣泛的微服務(wù)開發(fā)套件,內(nèi)部組件滿足了大部分的開發(fā)需求,并且也能很好地和第三方框架結(jié)合,實(shí)現(xiàn)自定義功能。因此采用該技術(shù),發(fā)揮了開發(fā)套件通用性,保證平臺(tái)組件更新迭代的適用。
在后端設(shè)計(jì)中,SpringCloud作為基礎(chǔ)框架; SpringCloud的子項(xiàng)目Netflix Eureka作為服務(wù)注冊(cè)機(jī),保存各類Web應(yīng)用的相關(guān)信息; SpringCloud提供feign框架作為客服端請(qǐng)求具體業(yè)務(wù); SpringCloud利用Gatway分配前端發(fā)送過(guò)來(lái)的請(qǐng)求信息。MariaDB是數(shù)據(jù)庫(kù)MySQL的一個(gè)分支,完全兼容MySQL。MariaDB利用XtraDB、Aria等存儲(chǔ)引擎為基礎(chǔ),通過(guò)SQL Interface、Parser、Optimizer、Caches & Buffers對(duì)前端傳來(lái)的信息進(jìn)行接收、解析、優(yōu)化、緩存,將最后得到的信息存儲(chǔ)到MariaDB數(shù)據(jù)庫(kù)中。Logback是開源日志框架,完美兼容SpringCloud,作為SpringCloud的默認(rèn)日志系統(tǒng),可以完全零配置使用SLF4J(Simple Logging Facade For Java)的logback來(lái)輸出日志。將Logback作為后端日志框架,日志通過(guò)Logback保存在MariaDB數(shù)據(jù)庫(kù)中,有效避免日志服務(wù)直接將日志寫入MariaDB數(shù)據(jù)庫(kù)出現(xiàn)的應(yīng)用服務(wù)器線程阻塞、服務(wù)宕機(jī)現(xiàn)象。以SpringCloud作為基礎(chǔ)框架,MariaDB做為數(shù)據(jù)庫(kù)管理,Logback作為記錄日志,搭建精細(xì)化管理平臺(tái)后端,如圖8。
圖8 精細(xì)化管理平臺(tái)后端搭建
Flutter是Google在2018年推出的移動(dòng)UI框架。借助Flutter,可以在Android和IOS上快速構(gòu)建高質(zhì)量的本機(jī)用戶界面,并以每秒120幀的速度連續(xù)渲染。它允許用戶自定義設(shè)計(jì),具備許多優(yōu)點(diǎn),使得Flutter這一款移動(dòng)端UI框架迅速進(jìn)入開發(fā)者的視野,得要越來(lái)越多開發(fā)者的使用。
同樣,相較于許多平臺(tái)采用的React移動(dòng)端框架,F(xiàn)lutter不僅跨平臺(tái),而且性能好、使用流暢。相比于React Native移動(dòng)端框架,不僅跨平臺(tái),而且代碼量不大,易于初學(xué)者學(xué)習(xí),在動(dòng)畫性能方面體驗(yàn)好。此外,F(xiàn)lutter可以通過(guò)其內(nèi)置的精美質(zhì)感設(shè)計(jì),Cupertino(ios-flavor)小工具和豐富的動(dòng)畫API來(lái)構(gòu)建令人滿意的移動(dòng)終端界面; 使用Flutter的熱重載可以快速、輕松地測(cè)試、重構(gòu)UI、添加功能和修復(fù)bug。Flutter利用API,有效解決2D、動(dòng)畫、手勢(shì)、效果等難題,唯一不足的是該移動(dòng)端框架在處理多類型數(shù)據(jù)時(shí)數(shù)據(jù)吞吐量有一定限制。
Flutter使用Dart編程語(yǔ)言進(jìn)行編譯,并且在開發(fā)階段采用JIT模式[16]。如果發(fā)生更改,則無(wú)需編譯,這有助于減少Flutter的開發(fā)時(shí)間。發(fā)布時(shí),AOT用于生成有效的ARM代碼以保證Flutter應(yīng)用程序的性能。Dart虛擬機(jī)可以快速為短暫的對(duì)象分配內(nèi)存,從而提高渲染速度。
SQLite是D.Richard Hipp創(chuàng)建的、運(yùn)用C語(yǔ)言編寫的一款公共開源數(shù)據(jù)庫(kù)引擎。因其速度快、可移植性好、占用內(nèi)存少等優(yōu)點(diǎn),得到大量使用的同時(shí)受到廣泛關(guān)注。SQLite是獨(dú)立的、零配置的嵌入式數(shù)據(jù)庫(kù)引擎,與其它數(shù)據(jù)庫(kù)引擎區(qū)別在于它沒(méi)有自己獨(dú)立的服務(wù)進(jìn)程,而是直接讀寫磁盤上的數(shù)據(jù)庫(kù)文件。SQLite數(shù)據(jù)庫(kù)是包含表、索引等的獨(dú)立文件,其具有跨平臺(tái)的特性,可以將32位設(shè)備上的SQLite數(shù)據(jù)庫(kù)直接應(yīng)用到64位設(shè)備上。
SQLite是緊湊型數(shù)據(jù)庫(kù),在應(yīng)用時(shí),可以將其占用的存儲(chǔ)空間容量大小一直控制在500KB以內(nèi),也可以根據(jù)需求,將該容量值進(jìn)一步縮小到300KB以內(nèi)。在如此小的空間內(nèi),SQLite運(yùn)行速度、性能仍然能夠正常進(jìn)行,使得手機(jī)、平板等內(nèi)存有限的設(shè)備將其作為數(shù)據(jù)庫(kù)。
(1)Andriod操作系統(tǒng)
Andriod操作系統(tǒng)最初由Andy Rubin以Linux為基礎(chǔ)開發(fā)的一款開源框架。Andriod又名“安卓”,自2005年被Google收購(gòu)后,對(duì)其進(jìn)行改善和開發(fā),現(xiàn)已經(jīng)完全適用于Google的任何一款軟件產(chǎn)品。對(duì)于用戶而言,Andriod操作系統(tǒng)為生活帶來(lái)了便利,如在Andriod操作系統(tǒng)上安裝谷歌地圖,便于用戶出行; 對(duì)于開發(fā)者而言,可以根據(jù)自己的喜好和風(fēng)格設(shè)計(jì)產(chǎn)品,可以重復(fù)使用或替換應(yīng)用程序框架組件,除此之外,Andriod操作系統(tǒng)利用SQLite數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ)、利用Java進(jìn)行應(yīng)用程序語(yǔ)言編寫、基于Web引擎開發(fā)Andriod瀏覽器,這些都有助于開發(fā)者很快入門; 對(duì)于手機(jī)生產(chǎn)商而言,可以體現(xiàn)產(chǎn)品個(gè)性。因此Andriod操作系統(tǒng)受到廣大用戶、開發(fā)者、手機(jī)生產(chǎn)商的喜愛(ài)和支持。
(2)IOS
IOS(iPhone Operation System的簡(jiǎn)寫)即iPhone操作系統(tǒng),專為iPhone、iPad等蘋果公司推出的移動(dòng)設(shè)備而開發(fā)的操作系統(tǒng)。IOS是以Darwin為基礎(chǔ),利用編程語(yǔ)言O(shè)bject-C和Swift在Xcode環(huán)境下開發(fā)的iPhone操作系統(tǒng),并且必須在Mac OS X上運(yùn)行。Mac OS X是以BSD(Berkeley Software Distribution)Unix內(nèi)核開發(fā)為基礎(chǔ),利用SDK(Soft Ware Development Kit)軟件開發(fā)工具包進(jìn)行開發(fā)的一款封閉式的操作系統(tǒng)。
由于SQLite數(shù)據(jù)庫(kù)資源占用低、運(yùn)行速度快、可移植性好、能夠跟很多程序語(yǔ)言相結(jié)合,且提供零配置的運(yùn)行模式,將SQLite數(shù)據(jù)庫(kù)嵌入到Andriod、IOS系統(tǒng)中,實(shí)現(xiàn)對(duì)數(shù)據(jù)的存儲(chǔ)、管理、維護(hù)。運(yùn)用Flutter在Android和IOS系統(tǒng)上,建立滿足客服需求、滿足程序應(yīng)用功能需求的美觀手機(jī)移動(dòng)端界面。本文以Andriod、IOS系統(tǒng)做為基礎(chǔ),將SQLite數(shù)據(jù)庫(kù)嵌入Andriod、IOS系統(tǒng)作為移動(dòng)管數(shù)據(jù)庫(kù)管理系統(tǒng),F(xiàn)lutter作為移動(dòng)端界面設(shè)計(jì),搭建精細(xì)化管理平臺(tái)的移動(dòng)端,如圖9。
圖9 精細(xì)化管理平臺(tái)移動(dòng)端搭建
圖10 數(shù)據(jù)系統(tǒng)架構(gòu)圖
為了保證平臺(tái)信息的收集、存儲(chǔ)、管理和維護(hù),在平臺(tái)搭建中,數(shù)據(jù)庫(kù)管理系統(tǒng)是必不可少的部分。同時(shí),為了保證數(shù)據(jù)安全性、完整性、分布、異構(gòu)等性能,應(yīng)根據(jù)實(shí)際需求,選擇恰當(dāng)?shù)臄?shù)據(jù)庫(kù)類型。根據(jù)平臺(tái)功能的實(shí)際需求,數(shù)據(jù)庫(kù)的建立需要滿足支持各種流行的軟硬件平臺(tái)、支持Web技術(shù)并具有多媒體處理能力、支持聯(lián)機(jī)分析處理、支持異種數(shù)據(jù)庫(kù)的互連、具有比較高的安全性和可靠性、具有數(shù)據(jù)倉(cāng)庫(kù)的性能、支持商務(wù)智能和數(shù)據(jù)挖掘的基本要求。MariaDB數(shù)據(jù)庫(kù)系統(tǒng)具有支持多處理器、支持SQL的GROUP BY和ORDER BY子句、支持聚合函數(shù)、支持大型的數(shù)據(jù)庫(kù)、支持多種存儲(chǔ)引擎、沒(méi)有內(nèi)存漏洞、提供ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途徑、提供用于優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具、可以修改源代碼來(lái)開發(fā)自己的MariaDB系統(tǒng)等優(yōu)點(diǎn),尤其支持復(fù)雜信息的高速細(xì)分和處理指令的大容量發(fā)送,完全契合精細(xì)化管理平臺(tái)開發(fā)對(duì)數(shù)據(jù)庫(kù)的選型要求,所以本文數(shù)據(jù)庫(kù)建設(shè)采用MariaDB為核心的數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)主要包含BIM數(shù)據(jù)、GIS數(shù)據(jù)、管理數(shù)據(jù)、共享數(shù)據(jù)四部分,分別對(duì)標(biāo)工程精細(xì)化BIM模型、GIS信息、管理處理指令、共享文檔這四個(gè)管理數(shù)據(jù),整個(gè)數(shù)據(jù)架構(gòu)圖如圖10。
(1)BIM數(shù)據(jù)庫(kù)
此處所指信息數(shù)據(jù)包括建筑設(shè)計(jì)平面圖、剖面圖、材料表等等。模型基于3D技術(shù),是項(xiàng)目信息的詳細(xì)表達(dá)。它解決了用軟件描述建筑信息的問(wèn)題,為項(xiàng)目的協(xié)同工作和精細(xì)管理奠定了堅(jiān)實(shí)的基礎(chǔ)。
(2)GIS數(shù)據(jù)庫(kù)
該數(shù)據(jù)展示BIM項(xiàng)目工程周邊建筑、道路等環(huán)境,對(duì)建筑周邊有直觀的了解。
(3)數(shù)據(jù)集成
在數(shù)據(jù)集成中,主要采用以下幾種方法進(jìn)行數(shù)據(jù)集成:
1)對(duì)于結(jié)構(gòu)化數(shù)據(jù),采用數(shù)據(jù)整合服務(wù)進(jìn)行數(shù)據(jù)集成。
2)對(duì)于無(wú)法采用數(shù)據(jù)整合工具進(jìn)行集成的數(shù)據(jù),如GIS數(shù)據(jù)、BIM模型數(shù)據(jù),必須采用人工方式進(jìn)行整合。通過(guò)流程控制工具,對(duì)人工數(shù)據(jù)整合過(guò)程進(jìn)行流程化管理,保證人工數(shù)據(jù)處理質(zhì)量。
(4)共享數(shù)據(jù)庫(kù)
在精細(xì)化管理平臺(tái)中,各參建方能夠?qū)υO(shè)計(jì)圖紙、工程日志等數(shù)據(jù)進(jìn)行下載,對(duì)一些共享數(shù)據(jù)精細(xì)數(shù)據(jù)交換機(jī)更新。
由于工程上平臺(tái)用戶往往同用一個(gè)或幾個(gè)賬號(hào),而多數(shù)管理平臺(tái)對(duì)于賬號(hào)管理過(guò)于寬容,這使得數(shù)據(jù)庫(kù)系統(tǒng)主要面臨以下威脅:合法特權(quán)的過(guò)度濫用、特權(quán)提升、數(shù)據(jù)庫(kù)漏洞和數(shù)據(jù)泄露、數(shù)據(jù)庫(kù)通信協(xié)議漏洞、不健全的認(rèn)證和審計(jì)等。因此,為確保數(shù)據(jù)庫(kù)系統(tǒng)安全運(yùn)行,保證數(shù)據(jù)安全,數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行以下安全設(shè)計(jì):
(1)對(duì)所有數(shù)據(jù)庫(kù)用戶建立數(shù)據(jù)庫(kù)賬號(hào),并將數(shù)據(jù)庫(kù)賬號(hào)與用戶身份進(jìn)行關(guān)聯(lián);
(2)限制用戶登錄不成功次數(shù),進(jìn)行身份驗(yàn)證失敗處理;
(3)操作系統(tǒng)用戶與應(yīng)用進(jìn)程綁定,實(shí)現(xiàn)用戶級(jí)追溯;
(4)對(duì)數(shù)據(jù)庫(kù)訪問(wèn)日志進(jìn)行記錄;
(5)對(duì)數(shù)據(jù)庫(kù)訪問(wèn)進(jìn)行授權(quán)控制; 根據(jù)用戶名和用戶組對(duì)用戶權(quán)限進(jìn)行控制,控制粒度可選擇為目錄、表、記錄、字段;
(6)采用專用審計(jì)設(shè)備,對(duì)數(shù)據(jù)庫(kù)的安全日志和使用記錄進(jìn)行審計(jì)。
本平臺(tái)數(shù)據(jù)接口類型分為三種,分別為:用戶接口、外部接口、內(nèi)部接口。
用戶接口:本平臺(tái)用戶接口分為PC瀏覽器,手機(jī)端APP(Android,iOS)。數(shù)據(jù)錄入使用jsp表單,以上傳和下載的方式進(jìn)行文件導(dǎo)出和導(dǎo)入,通過(guò)客戶端控件嵌入進(jìn)行圖像顯示和更新。
外部接口:本平臺(tái)的外部接口主要是文檔接口,使用數(shù)據(jù)交換格式文件,清晰地理解及掌握各模塊功能。
內(nèi)部接口:Elementui、HTML、CSS等層次編譯為一個(gè)應(yīng)用,托管于apache,通過(guò)瀏覽器應(yīng)用運(yùn)行。
精細(xì)化管理平臺(tái)主要采用Web Service、DB、文件接口FILE、FTP(File Transfer Protocol文件傳輸協(xié)議的簡(jiǎn)稱)四種接口形式。
本文通過(guò)采用前后端分離原則,聯(lián)合多項(xiàng)平臺(tái)開發(fā)底層技術(shù),研究平臺(tái)架構(gòu)設(shè)計(jì),構(gòu)想了精細(xì)化管理平臺(tái)的開發(fā),得出以下結(jié)論:
(1)利用Vue+Elementui+Webpack技術(shù),通過(guò)發(fā)揮真實(shí)DOM性能來(lái)提升開發(fā)效率,可搭建輕量級(jí)平臺(tái)的前端。
(2)利用SpringCloud+MariaDB+Logback技術(shù)搭建平臺(tái)后端,發(fā)揮技術(shù)的模塊式優(yōu)勢(shì)來(lái)簡(jiǎn)化后臺(tái)數(shù)據(jù)處理流程,這給平臺(tái)分布式管理提供便捷性開發(fā)依據(jù)。
(3)利用Flutter、SQLite數(shù)據(jù)庫(kù)、Android和IOS系統(tǒng)對(duì)平臺(tái)移動(dòng)端的搭建進(jìn)行設(shè)計(jì),通過(guò)數(shù)據(jù)庫(kù)選型、建設(shè)、安全、接口設(shè)置,給平臺(tái)數(shù)據(jù)的穩(wěn)定傳輸提供了理論支撐。
(4)通過(guò)后端提供的接口,將前端、手機(jī)端與后端、數(shù)據(jù)庫(kù)連接,來(lái)完成精細(xì)化管理平臺(tái)的搭建,有利于實(shí)現(xiàn)工程信息的集成、傳遞、共享,便于參建各方隨時(shí)隨地查看、修改、存儲(chǔ)、傳遞工程信息,從技術(shù)角度上為提高工項(xiàng)目管理的效率和精細(xì)度提供了參考。