Orchard路由隨記(一)

2022-03-21 11:57:54 字數 1236 閱讀 5273

對於orchard來說,個人以為要真正理解orchard,必須理解其路由工作方式。

一、orchard的自定義路由由三種型別組成

1、分發類:

hubroute:其功能是按租戶篩選出當前訪問租戶的路由

2、容器類:

shellroute:其功能是按當前租戶路由,如果此時沒有其它路由,路由資料處理後,交由mvc的路由處理

3、外掛程式類:

主要是: aliasroute ,其主要功能是處理別名路由,當然其功能不僅如此。別名路由(如將:locahost/thisisolditem,變成locahost/i)通過儲存在資料庫中對照表aliasrecord來工作,此類由orchard.alias.routes加入到路由描述中,在orchard_alias_aliasrecord表中查詢是否有別名路由存在。

不論如何路由,最後都會交由標準的mvc路由管理

二、orchard通過對irouteprovider介面掃瞄,獲取了一組關於routedescriptor的列表,並通過routepublisher類publish方法將所有描述轉換為租戶路由

1、按 routedescriptor 的先級排列路由;

2、加入合理的域;

3、根據描述生成shellroute型別的路由;

4、第3步中,如果有外掛程式路由,則shellroute類路由將其包裝(圖2);

5、將shellroute類路由包裝在hubroute類路由中,即除原如路由(mvc原生路由),其它路由均包裝進了 hubroute;

6、是後形成的可能是(外掛程式類不一定啟用)如下:

hubroute(shellroute(aliasroute(mvcroutehandler)));

三、由第二條及多租戶執行時不難理解,orchard訪問情形

1、使用者訪問;

2、建立host如果還沒有的話;

3、形成租戶設定列表;

4、通過url來判斷應該使用哪乙個租戶設定;

5、根據當前租戶,使用hubroute路由,篩選出當前租戶路由,進行匹配;

6、找到合適的控制器執行操作;

四、以下是執行期,真實的資料截圖

1、路由集合(可見所有路由均被hubroute包裹)

threejs學習隨記(一)

在three.js中,要渲染物體到網頁中,我們必須構建場景 scene 相機 camera 和渲染器 renderer 有了這三樣東西,才能將物體渲染到網頁中去。threejs繪圖的核心 設定渲染器renderer 設定場景 scene 設定相機 camera 設定光源 light 設定物體 obj...

Linux學習隨記(一)

1.硬體裝置 1 各裝置在linux中的檔名 裝置檔名 ide硬碟 dev hd a d scsi sata usb 硬碟 dev sd a p u盤 dev sd a p 與sata相同 軟碟機 dev fd 0 1 印表機25針 dev lp 0 2 usb dev usb lp 0 15 滑鼠...

C語言隨記(一) 函式

int argc 該引數必須是整型變數,引數argc中儲存了引數的個數。const char argv 該引數必須是乙個指向組數的陣列指標。argv中argc 0 為自身執行目錄路徑和程式名,argc 1 指向第乙個引數,argc 2 指向第二個引數 main函式是c語言的入口函式,如果需要給mai...