這篇博客主要是針對asp.net mvc項目的一些常用的東東做一個講解,他們分別是監控診斷、本地化和緩存。雖然前兩者跟asp.net mvc看上去好像是沒什么關聯。 但其實如果真正需要做asp.net mvc項目的話,那就有關聯了。這篇博客對於這三個概念會分別介紹,目的是為了引導自己在開發的時候的一些design。
v1.監控診斷
1.1.概 念:
監控診斷是通過軟件或者監控服務提供商對APP進行監控以及數據的獲取從而達到APP的排錯和數據的分析。
1.2.背 景:
隨着互聯網的迅速成長,個人網站、企業網站、社區網站……越來越多,同時網站競爭也越來越強,從而衍生出來的對網站的監控,網站監控是站長、企業、社區……通過軟件或者網站監控服務提供商對網站進行監控以及數據的獲取從而達到網站的排錯和數據的分析。一個網站部署起來之后,通常會遇到各種各樣的出錯或者宕機的可能性,所以說監控和診斷一個非常重要的工作。
1.3.常見監控:
關於對asp.net mvc web site的監控有很多辦法或者工具,有官方的 healthMonitoring這樣一個綠色的監控工具、有第三方的一些監控工具、有一些用自己寫日志的方式監控的、有向站長發送警報郵件。還有一些對performance、性能、內存、CPU和磁盤讀寫等等的監控,還有一些像Munin這種開源的監控工具。
總之呢關於監控的方式有很多,當然現在一般的項目都是部在雲上,可能監控都不需要自己做太多,我們這里呢就介紹一個最常見的windows自帶的綠色監控。
1.4.實施監控:
新建一個MVC工程,就在默認的打開的Index頁面手寫一個錯誤,強制拋出,然后運行。對應的代碼和效果如下:

很顯然,這里肯定會報錯。那么現在讓我們打開Windows的event viewer(中文系統的話就win+q搜索"事件查看器")。

event viewer是根據系統的web.config設置的。這個web.config是針對本機的一個配置。

v2.本地化
2.1.概 念:
本地化是指企業在國際化過程中,為了提高市場競爭力,同時降低成本,將產品的生產、銷售等環節按特定國家/地區或語言市場的需要進行組織,使之符合特定區域市場的組織變革過程。
2.2.背 景:
在經濟全球化的時代,大型企業起初在本國生產產品,並將產品在本國銷售,隨着生產規模增大和產品聲譽遠播,產品開始在國際市場上流通。為進一步擴大國際市場的份額,將部分原料采購和加工過程移往產品需求地由當地產業工人完成的組織形式,稱之為企業本地化。企業本地化的高級形式是融入當地社會,與當地企業一起促進目的地社會的進步和發展。
2.3.常見本地化:
我們先來舉一個非常簡單的例子,這也是本地化里面一個最簡單的應用。我們來看看本地化簡單應用的具體步驟。
2.3.1.頁面代碼:
@{ ViewBag.Title = "Home Page"; var prices = 10.0m; var date = DateTime.Now; } <div>@prices.ToString("c")</div> <div>@date.ToShortDateString()</div>
上面代碼非常常見,就是在頁面中輸出貨幣信息以及顯示短日期格式。我們需要做的就是不同國家地區的語言或者是貨幣或者是時間的顯示方式都不同,我們需要讓這段代碼根據不同地區顯示對應的格式。
2.3.2.設置Web.config:
culture:為處理傳入的 Web 請求指定默認的區域性。
uiCulture:為處理依賴於區域設置的資源搜索指定默認的區域性。 若要查看有效的區域性字符串。
這兩個屬性我們都設置為auto
2.3.3.瀏覽效果:
- 英文效果

在瀏覽器的Internet選項的語言設置中我們可以看到當前默認設置的語言是英文,所以得到的貨幣和時間格式分別是:$10.00、11/1/2015
- 中文效果

在上圖中我們講默認的語言設置成中文,所以得到的貨幣和時間格式分別是:¥10.00、2015/11/1。 MADE IN CHINA
2.4.資源文件:
利用資源文件做本地化也是一種非常常見的手段,而且微軟對Resource.resx為開發者也做了很好的集成,使用起來非常方便。
2.4.1.創建資源文件:
我們先來創建兩個資源文件,分別是一個默認的資源文件Resource.resx和中文的資源文件Resource.zh.resx,這里注意將訪問修飾符設置成public的。兩個資源文件結構如下:

2.4.2.頁面代碼:
<div>@Resource.Hello @Resource.Name</div> <div>@prices.ToString("c")</div> <div>@date.ToShortDateString()</div>
2.4.3.瀏覽效果:
- 英文效果

當前瀏覽器默認的語言是英文的,所以得到的結果是:Hello CNBlogs
- 中文效果

早瀏覽器的Internet選項的語言設置中我們可以設置當前的語言是中文,所以得到的結果是:你好 博客園
v3.緩存
3.1.概 念:
緩存就是數據交換的緩沖區(稱作Cache),當某一硬件要讀取數據時,會首先從緩存中查找需要的數據,如果找到了則直接執行,找不到的話則從內存中找。由於緩存的運行速度比內存快得多,故緩存的作用就是幫助硬件更快地運行。
3.2.特 點:
緩存是指可以進行高速數據交換的存儲器,它先於內存與CPU交換數據,因此速率很快。L1 Cache(一級緩存)是CPU第一層高速緩存。內置的L1高速緩存的容量和結構對CPU的性能影響較大,不過高速緩沖存儲器均由靜態RAM組成,結構較復雜,在CPU管芯面積不能太大的情況下,L1級高速緩存的容量不可能做得太大。一般L1緩存的容量通常在32—256KB。L2 Cache(二級緩存)是CPU的第二層高速緩存,分內部和外部兩種芯片。內部的芯片二級緩存運行速率與主頻相同,而外部的二級緩存則只有主頻的一半。L2高速緩存容量也會影響CPU的性能,原則是越大越好,普通台式機CPU的L2緩存一般為128KB到2MB或者更高,筆記本、服務器和工作站上用CPU的L2高速緩存最高可達1MB-3MB。
3.3.OutputCacheAttribute:
3.3.1.介紹:
使用輸出緩存,可以在 Web 服務器上的內存中存儲操作方法的輸出。 例如,如果操作方法將呈現一個視圖,則將緩存視圖頁。 然后,已緩存的此頁面將可供應用程序用於后續請求。 輸出緩存可以節省應用程序重新創建操作方法的結果所需的時間和資源。在 ASP.NET MVC 中,可以使用 OutputCacheAttribute 特性標記要緩存其輸出的操作方法。 如果使用 OutputCacheAttribute 特性標記某個控制器,則該控制器中的所有操作方法的輸出都將進行緩存。
3.3.2.實例:
3.3.2.1.代碼演示:
public class HomeController : Controller { [OutputCache (Duration=60)] public ActionResult Index() { return View(); } }
3.3.2.2.代碼講解:

這里我們給/Home/Index的action加了一個[OutputCache (Duration=60)]這樣的Attribute,在/Home/Index的Action里打一個斷點,按F5執行,你會發現只有第一次執行會進入斷點,而在此60秒之內,你再怎么刷新執行,是不會進入這個斷點的。這就是一個簡單的60秒緩存。
在上面的代碼中主要是通過參數Duration實現緩存,如果我們希望緩存的時間可以自己配置的話,我們還可以使用CacheProfile參數,具體實現方法代碼如下:
C#代碼
public class HomeController : Controller { [OutputCache (CacheProfile="long")] public ActionResult Index() { return View(); } }
修改web.config

3.3.3.更多介紹:
關於OutputCacheAttribute呢還有很多好玩的參數,可以幫助我們實現各種你想要的緩存方式。


OutputCacheAttribute可以設置的參數有很多,根據不同的需求和業務使用的時候也不盡相同。關於更多OutputCacheAttribute的參數大家有興趣可以看這里。
v博客總結
關於監控診斷、本地化和緩存的介紹就到這里了,如果大家對這三個方向有興趣或者延伸可以拿出來一起討論研究。
以上部分信息來自MSDN/百度百科,在此非常感謝MSDN/百科對本篇博文的幫助,以及對博主學習/工作以及生活上的幫助。
作 者:請叫我頭頭哥
出 處:http://www.cnblogs.com/toutou/
關於作者:專注於基礎平台的項目開發。如有問題或建議,請多多賜教!
版權聲明:本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。
特此聲明:所有評論和私信都會在第一時間回復。也歡迎園子的大大們指正錯誤,共同進步。或者直接私信我
聲援博主:如果您覺得文章對您有幫助,可以點擊文章右下角【推薦】一下。您的鼓勵是作者堅持原創和持續寫作的最大動力!
