天天看點

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

Nancy中關于Diagnostics的使用

在Nancy中有個十分不錯的功能-Diagnostics,可以說這個功能讓人又愛又恨。

或許我們都做過下面這樣的一些嘗試:

記錄某一個功能用到的相關技術資訊

記錄下網站的通路記錄

全局配置某些架構内部功能的開關

.....

當然,對于上面提到的這些東西,現在都有非常成熟的解決方案可以用。

不過,Nancy在内部也實作了這樣的一個機制,可以讓我們比較友善的處理這些問題。

下面我們先來看看具體是如何使用的!本文也是着重于如何使用。

由于在Nancy1.x與2.x中的差别,在使用Diagnostics的用法上也有了略微較大的差别。

截至在本文編寫之前(2017-06-26),Nancy在GITHUB上面的相關介紹還是基于1.x的。而本文是用2.0作為例子示範的,當然也有與1.x的簡單對比。

在2.0中,Diagnostics的啟用是通過在Bootstrapper中的Configure方法啟用,而在1.x中是通過重寫一個DiagnosticsConfiguration類型的屬性來啟用。

下面是兩個大版本之間的使用方法:

2.0的使用如下:

1.x的使用如下:

其中,2.0中的寫法是通過INancyEnvironment的一個擴充方法來實作的。

當我們隻指定密碼的時候,就表示我們要開啟這個功能了。其本質就是在目前的environment中添加Diagnostics的相關配置。

需要注意的是,我們指定的密碼不能為空!如果為空就會提示Diagnostics的配置不正确。

相比1.x,個人覺得2.0的寫法應該是更推薦的寫法,因為 Diagnostics在Nancy中是一個功能子產品,并且是由使用者去決定是否去啟用的,是以在Bootstrapper這樣一個啟動器中為一個功能子產品單獨設計一個屬性來辨別是否啟用,感覺有那麼一點累贅,如果這樣的屬性一多,就會造成Bootstrapper比較臃腫,而在配置方法中去統一管理這些配置項會簡潔許多。這樣的做法就有點類似ASP.NET Core中Startup類的Configure方法。比較符合按需加載的特性。

在啟用這個功能之後,我們可以通過通路預設位址 http://yourdomain.com/_Nancy 去通路相關的功能。當第一次打開的時候會進入一個登入頁面。

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

在文本框中輸入我們設定的密碼後就可以進入到Diagnostics的主面闆了。

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

通過主面闆上面的資訊,我們可以看到有下面4個主要内容:Information、Interactive Diagnostics、Request Tracing和Settings

下面分别來看看這些内容:

Information主要是記錄了目前站點使用Nancy的相關配置資訊:

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

這裡主要包含兩個部分的資訊,第一部分是Nancy的相關資訊,第二部分是配置的相關資訊。

在第一部分中,可以看到目前用的Nancy版本是2.0,根路徑、視圖引擎等資訊。我們這裡用的Hosting是Kestrel

這裡沒有正确的加載出來,裡面應該是有些問題細節還沒有處理好的。

在第二部分中,就是目前站點使用的一些配置資訊,由于并沒有重寫相關的配置,是以可以看到清一色的Default.

這裡在預設的情況下也是有兩個子產品,一個是緩存的路由資訊,一個是測試相關的Provider。

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

這裡主要看一下路由的資訊。

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

如果看過我下面這篇部落格,對怎麼取到這些路由資訊的,就會比較清楚。

淺析如何在Nancy中生成API文檔

下面還有Finalize和MemberwiseClone這兩個方法,可以按照字面上的意思去了解,不過似乎并沒有發現什麼實際性的作用,是以這裡就不深入說明了。

預設情況下,Request Tracing 是沒有開啟的,是以這個時候打開這個部分隻能看到<code>No Sessions found</code>。

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

想要開啟Tracing,同樣是在Bootstrapper的Configure方法中開啟。

當開啟之後,再打開這個頁面時,

就可以看到Trace了一個會話

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

點進去可以看到這個session更多詳細的資訊:

左邊列出了每一個請求的精簡資訊,右邊是詳細的資訊。

談談Nancy中讓人又愛又恨的Diagnostics【上篇】
注:對于Request Tracing,Nancy限制了最多隻能存儲500個會話,每個會話隻能存儲50個請求。内部是通過維護一個線程安全的隊列來處理的,每當其超過上限時,就會進行出隊操作,将最先記錄的移出隊列。是以在這裡,我們能看到的永遠是最新的會話和最新的請求。

Setting這裡讀取的是StaticConfiguration的内容。就2.0來說,個人暫時沒有發現 這一個闆塊的内容有太大的作用。

在2.0中,預設情況下我們能看到的東西就一個!原因很簡單,2.0中的大部配置設定置項已經沒有使用StaticConfiguration這個靜态類來設定了。

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

同時也回顧對比一下1.x中的setting頁面,對比一下兩者的預設配置項:

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

可以看到1.x配置項比2.0多了不少!在1.x中設定可以直接影響站點的相關配置。例如:選中Disable Error Traces,那麼站點就會禁用掉Error Traces。

這裡可以說是功能開關。

上面的示例中,我們是通過預設位址 http://yourdomain.com/_Nancy 去通路的,

如果說,我們開啟了這個功能,但是什麼配置都沒有改,就會有可能讓其他人看到我們站點的大部分資訊。是以正常情況下,都是不會用這個預設位址的,畢竟這是在Nancy内部設定的一個預設位址。我們通過上面提到的Diagnostics這個擴充方法來替換我們的預設路徑。

此時再一次通路 http://yourdomain.com/_Nancy 就會提示404了(前提是沒有其他的請求指向這個位址)。

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

隻有輸入我們設定的位址才能正常通路!後續的操作就和上面介紹的一樣了。

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

另外,我們能配置的除了密碼,和通路位址外,還可以設定控制台的過期時間以及相關的加密配置。

更多使用方法可以參考下面的連結:

https://github.com/NancyFx/Nancy/wiki/Diagnostics

本文簡單的介紹了如何使用Nancy的Diagnostics功能,如果真的使用這個功能,可能下面的2個情況需要注意一下:

密碼盡可能要設定的複雜一點

最好能修改預設的通路路徑

為什麼說這個Diagnostics讓人又愛又恨呢?這個功能可以說是十分強大,也可以說是并沒有什麼作用。當然這也主要是取決于怎麼用。

對于一個Web架構來說,考慮到的東西比較齊全、比較深入,對我們開發者來說是十分值得借鑒的。在此同時,給我們的日常維護也帶來了便利之處。

這裡的一系列功能是沒有持久化的,我們可以在這裡的基礎上對他進行持久化,這樣就可以強化這一個功能。

如果說一個公司有強大的伺服器團隊,那麼這個功能就可能會變得沒有太大的展示空間。畢竟人家會有一套更專業的東西去管理,監控網站的相關資訊,而且記錄的内容,資訊也會比Diagnostics多上N個等級。

在下一篇将會詳細介紹這個功能的實作。

本文已經同步到Nancy之大雜燴

談談Nancy中讓人又愛又恨的Diagnostics【上篇】

如果您認為這篇文章還不錯或者有所收獲,可以點選右下角的【推薦】按鈕,因為你的支援是我繼續寫作,分享的最大動力!

作者:Catcher Wong ( 黃文清 )

來源:http://catcher1994.cnblogs.com/

聲明:

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果您發現部落格中出現了錯誤,或者有更好的建議、想法,請及時與我聯系!!如果想找我私下交流,可以私信或者加我微信。

繼續閱讀