php 解析mib文件,Mib库解析
MibAnalyser
介紹
MibAnalyser可以解析MIB文件,并轉化為對應的實體,持久化到本地。MibAnalyser分為三個模塊:解析模塊、持久化模塊、工具庫模塊。
解析模塊
解析模塊用于解析MIB文件的語法,并最終生成實體列表。
管理模塊
由于對MIB文件解析時需要依賴到其他的MIB文件,該子模塊用于讀取其他MIB的節點數據。
該模塊的接口是IMIBManager,系統實現類是MIBManager。
節點解析模塊
節點解析模塊會解析MIB文件的語法,把里面的節點提取出來并轉化為對應的實體類型。當前生成的節點類型并不完整,需要通過節點連接模塊加功后才能生成完整的節點信息。
該模塊的接口是IMIBSyntaxAnalyzer,系統實現類MIBSyntaxAnalyzer。
節點連接模塊
對半完成的節點列表進行關聯操作,生成完整節點的節點列表。
該模塊的接口是INodeLinker,系統實現類是NodeLinker。
持久化模塊
持久化模塊是mib文件與底層數據直接訪問的模塊,用于存儲和讀取OID節點。
數據訪問組件
數據訪問組件由多個數據訪問接口構成,主要職責是與底層數據存儲進行交互,讀取持久化的數據并生成對應的實體。
本系統的數據訪問模塊主要包括兩個接口:IMIBModuleDao, IMIBNodeDao。這兩個接口定義了解析模塊所需要用到的訪問數據的方法。
IMIBModuleDao:判斷指定MIB庫是否存在。
IMIBNodeDao:根據指定MIB庫獲取其定義的節點集合。
本系統為兩個數據訪問接口提供了實現類MIBFileDao,該實現類主要把數據持久化到本地文件系統。
實體序列化組件
實體序列化組件是MIBFileDao使用到的組件之一,該組件把各種類型的節點實體序列化成json格式,以及從Json逆序列化成對應的節點,十分靈活。
實體轉化器
實體轉化器可以實現解析實體和其他實體之間的映射,通常使用者自行定義了用于持久化的實體,則可以通過轉換器進行解析實體和自定義實體的互相轉換。
該模塊的接口是IConverter。系統實現了抽象類Converter,Converter實現了IConverter接口,并實現了一個默認轉換方法:根據屬性名進行轉化,獲取待轉化對象相同屬性名屬性,并進行賦值操作。
自定義持久化實體
系統提供的默認持久化實體就是解析實體,且保存到本地本件夾。如果使用者希望存儲到其他位置如數據庫,則需要自定義持久化實體。
自定義持久化需要使用者重新定義三樣東西:
自定義的數據訪問組件:由于解析模塊中需要對底層的數據進行訪問,因此在自定義持久化時候,需要實現數據訪問模塊中的接口并組裝成數據訪問組件傳入解析模塊,確保解析模塊的正常執行。
自定義實體:由于持久化本質是底層數據與實體的映射,因此自定義的持久化方式通常會有對應匹配的實體。如果默認的解析實體能夠匹配上自定義的持久化方式,這里則可以不需要定義新的實體。
實體轉化接口:假如使用者定義了自定義實體,則需要實現實體轉化接口,實現對默認解析實體和自定義實體的映射。為了方便使用者的使用,接口自身實現了一個默認的轉化方法:發現轉化實體和待轉化實體相同的屬性名,并把轉化實體該屬性的值賦給待轉化實體的屬性中。
工具庫模塊
工具庫提供了一些常用的方法,簡化使用這使用的難度。
核心工具庫:OID列表轉化為樹狀結構的功能,在OID樹中尋找指定OID節點。
格式化工具庫:對OID樹進行剪枝等操作,對文本字符串進行處理等方法。
展示工具庫:提供了把OID樹轉化為zTree數據格式。
工具庫處理的對象都是解析實體,自定義持久化實體的使用者需要先把持久化實體轉化為解析實體再使用。
MibAnalyserDemo
一個展示MibAnalyser的demo。
環境
springboot + hibernate + MibAnalyser
MibAnalyser
使用了默認的解析框架和邏輯
自定義了持久化實體,存于數據庫。并定義了相關的接口層和轉化器。
前端
jquery + bootstrap + angularjs
使用了zTree用于展示樹狀結構。
總結
以上是生活随笔為你收集整理的php 解析mib文件,Mib库解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax post参数长度限制,Ajax
- 下一篇: fpdisp5a.exe是什么进程 有什