过去两年间最流行的、基于.NET Framework和MVC模式的ASP.NET MVC框架,主要用于讲解安全、性能、架构和各种实战功能演示……
什么是“企业(enterprise)应用”? 在这本号称“企业应用开发圣经”的《企业应用架构模式》中,花了一章节的来进行解释(其实还是没怎么解释清楚,^_^,或者说懂了的人自然就能看懂,不懂的还是看不懂……)一点闲话:飞哥是怎么懂的? 代码量:比如“多”、“复杂”、“不协调”、“没有逻辑”……就得经历了这些事你才能明白 阅读/思考Martin Fowler总结出来了一些关键字:pesistent data a lot of data access data concurentlya lot of user ……
[Remote]:远程验证需要using System.Web.Mvc; 首先在需要验证的属性上添加[Remote]特性,指定action/controller等[Remote("IsNameDuplicated", "Register", ErrorMessage = "* 用户名重复", HttpMethod = "GET")]public string UserName { get; set; }然后按照上述action和controller,添加一个Action://必须返回一个JsonResul ……
消息机制很多时候,我们都需要生成消息通知相关用户。比如:飞哥的博客被老程评论,飞哥应该收到一个消息……推送(push) vs 拉取(pull)?Web项目,因为(目前)HTTP协议的单向性,且消息接收人不一定在线,所以通常不会采用“推送”机制,而是当消息接收人登录上线之后,通过主动查询,获取他的消息获取消息,又有两种方式:动态生成 vs 静态保存?动态:每次都利用现有数据(比如博客评论)生成消息,生成的消息不予以保存。静态:在消息事件发生(比如博客被评论)时,就生成的消息并予以存储,以后消息接收人只需简单 ……
Config配置文件 作用:提供一个集中的位置用于存放项目的各种配置信息特点:项目只在启动时读取一次就将其内容缓存(高性能)但在配置上面所做的更改不需要重启项目就可以立即生效machine.config和web.config(或:app.config)当.NET安装的时候,就自动的带了一个machine.config,放置在C:\WINDOWS\Microsoft.NET\Framework\[Version]\CONFIG目录下,该文件包含了所有的全局的配置该目录下同时还有一些web.config文件, ……
作用为了提高性能,MVC提供了bundle机制,可以压缩.js和.css文件,即:去除注释、空格、回车等无用符号用短变量名取代常变量名等如果bundle有已压缩的.min文件,MVC自动使用已压缩文件。合并多个上述文件成一个文件这样可以减少下载上述文件的:内容(因为压缩)个数(因为合并)因为更小/少的文件下载得更快。^_^实现以.css文件为例,我们先添加3个.css文件:里面有注释、空格和一个.b1/.b2/.b3/.bat类定义等。RegisterBundles然后在BundleConfig.Reg ……
OutputCache使用上文所述的API很灵活,但:只是缓存UI层获取数据,而且稍显累赘所以MVC推出了OutputCache,可以:直接缓存生成的Html数据可以声明方式实现[AttributeUsage(AttributeTargets.Class AttributeTargets.Method, Inherited = true, AllowMultiple = false)]public class OutputCacheAttribute : ActionFilterAttribute, IE ……
如果有一把枪指着我的头,要我在5分钟内解决项目的性能问题,我立马就会开始缓存……缓存: 关键设置Expire:什么时候过期Absolute:绝对过期时间Slide:滑动过期时间(和session失效机制非常类似)Location:缓存在哪里(服务器public/客户端private)Priority:优先级 -- 不能确保一定VaryBy:为/Problem?id=3 和 /Problem?id=4 缓存不同的版本Dependency:依赖,确保缓存数据和Dependency一致,要配合SQL Serve ……
Async报错比如我们试图在MVC项目中调用异步的方法:(复习)client.SendAsync(mail, "success");client.SendMailAsync(mail);就会收到这样一个错误:为什么呢?我们知道:IIS本身是多线程(复习)的,且一个线程对应(处理)一个Request请求,请求处理完毕发送response到客户端,over,线程回收。如果我们直接引入异步方法,就很有可能:响应request的同步方法已经执行完毕,将response返回给客户端,而异步方法还没有执行完毕等异步方 ……