ASP.NET MVC 监控诊断、本地化和缓存
这篇博客主要是针对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=)]
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/
关于作者:专注于基础平台的项目开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
ASP.NET MVC 监控诊断、本地化和缓存的更多相关文章
- 在ASP.NET MVC中实现本地化和全球化
在开发多语言网站时,我们可以为某种语言创建一个资源文件,根据浏览器所设置的不同语言偏好,让运行时选择具体使用哪个资源文件.资源文件在生成程序集的时候被嵌入到程序集. 本篇体验,在ASP.NET MVC ...
- Asp.net mvc+EF+Sql Server2008数据库缓存依赖
1.开启数据库缓存依赖功能(开启对数据库中表Article和ArticleType的缓存) (注:)如果要配置SqlCacheDependency,则需要以命令行的方式执行. aspnet_regsq ...
- 如何在C#Asp.Net MVC使用Redis缓存
为什么要在Asp.Net MVC项目中使用Redis缓存呢?系统是按照高负载高并发来设计的,这就涉及服务器集群带来的问题,Session存储验证码或登录信息,在系统登录的时候,可能展示登录界面和存储验 ...
- ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(下篇)
上一篇<ASP.NET没有魔法——ASP.NET MVC 模型绑定解析(上篇)>文章介绍了ASP.NET MVC模型绑定的相关组件和概念,本章将介绍Controller在执行时是如何通过这 ...
- 基于C#和Asp.NET MVC开发GPS部标监控平台
基于交通部796标准开发部标监控平台,选择开发语言和技术也是团队要思考的因素,其实这由团队自己擅长的技术来决定,如果擅长C#和Asp.NET, 当然开发效率就高很多.当然了技术选型一定要选用当前主流的 ...
- ASP.NET MVC 数据库依赖缓存的实现
当数据库中的信息发生变化的时候,应用程序能够获取变化的通知是缓存依赖得以实现的基础.应用程序可以通过轮询获取数据变化的信息,使用轮询的话也不可能重新查一次后再和以前的数据做比较,如果这样的话如果我一个 ...
- 基于C#和Asp.NET MVC开发GPS部标视频监控平台
基于C#和Asp.NET MVC开发GPS部标监控平台 目前整理了基于.NET技术的部标平台开发文章,可以参考: 1.部标Jt808协议模拟终端的设计和开发 2.C#版的808GPS服务器开发-> ...
- 反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) C#中缓存的使用 C#操作redis WPF 控件库——可拖动选项卡的TabControl 【Bootstrap系列】详解Bootstrap-table AutoFac event 和delegate的分别 常见的异步方式async 和 await C# Task用法 c#源码的执行过程
反爬虫:利用ASP.NET MVC的Filter和缓存(入坑出坑) 背景介绍: 为了平衡社区成员的贡献和索取,一起帮引入了帮帮币.当用户积分(帮帮点)达到一定数额之后,就会“掉落”一定数量的“帮帮 ...
- ASP.NET MVC深入浅出(被替换) 第一节: 结合EF的本地缓存属性来介绍【EF增删改操作】的几种形式 第三节: EF调用普通SQL语句的两类封装(ExecuteSqlCommand和SqlQuery ) 第四节: EF调用存储过程的通用写法和DBFirst模式子类调用的特有写法 第六节: EF高级属性(二) 之延迟加载、立即加载、显示加载(含导航属性) 第十节: EF的三种追踪
ASP.NET MVC深入浅出(被替换) 一. 谈情怀-ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态 ...
随机推荐
- NYOJ 746---整数划分(四)(区间DP)
题目链接 描述 暑假来了,hrdv 又要留学校在参加ACM集训了,集训的生活非常Happy(ps:你懂得),可是他最近遇到了一个难题,让他百思不得其解,他非常郁闷..亲爱的你能帮帮他吗? 问题是我们经 ...
- 标签栏使用Demo二
// // PHTagViewFrame.m // 标签的使用二 // // Created by 123 on 16/9/6. // Copyright © 2016年 彭洪. All ri ...
- C语言的关键字,运算符,标识符
关键字 数据类型修饰相关 auto按照自动的方式进行变量的存储 const定义常量或常参数 extern声明外部变量或函数 register指定变量的存储类型是寄存器变量 static指定变量的存储类 ...
- CI框架源码阅读笔记8 控制器Controller.php
最近时间有些紧,源码阅读系列更新有些慢.鉴于Controller中代码比较少,本次Blog先更新该文件的源码分析. 在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数 ...
- Monkey测试3——Monkey测试结果分析
Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...
- java注释规范
前言: 现在java的出产地sun公司并没有定义一个java注释规范,注释规范目前是每个公司自己有自己的一套规范,主要是为了团队之间的协作. 1.基本规则 1.注释应该使代码更加清 ...
- Lisp学习--Windows下面的开发环境搭建
很久以前,就准备学习Lisp,但是遇到不少困难,社区太凌乱,也一直很犹豫,直到看了<Common Lisp - 想说爱你不容易>,想看看Common Lisp怎么样,之前都是拿Lisp的方 ...
- ENVI数据显示操作【Tools菜单操作1】
---恢复内容开始--- 一.Tools菜单命令及其功能 主图像窗口中Tool菜单多对应的下拉菜单共17项命令. 二.窗口链接/覆盖显示 窗口链接和叠加显示(Link和Overlay)是对多幅图像某一 ...
- Select-or-Die:灵活的 jQuery 下拉列表插件
Select-or-Die 是一个 jQuery 插件,用来自定义下拉列表(Select)元素.原生的下拉选择元素在各个浏览器的默认样式差异很多,而且自定义样式很困难,因此 Web 开发人员喜欢使用插 ...
- Web 开发人员不能错过的 jQuery 教程和案例
jQuery 把惊喜延续到设计领域,处处带来极大的灵活性,创造了许多体验良好的设计,而且拥有不错的性能.这里分享一组 Web 开发人员不能错过的 jQuery 教程和案例,帮助你更好的掌握 jQuer ...