架构师是要从各种技术中找到最合适的技术用来解决需求问题。一般都是通过阅读源码来深入理解各种技术的底层原理。
ps:好多人都说阅读源码太难了,一般做项目都没必要太过于深入。其实阅读源码不仅可以学习到框架优秀的设计,还能搞懂框架原理进而更合理适、更高效去使用框架。
参考:
System.Configuration 命名空间 :包含提供用于处理配置数据的编程模型的类型
- Configuration 类 :表示适用于特定计算机、应用程序或资源的配置文件。 此类不能被继承
ASP.NET MVC工作原理:
启动入口
Global.asax ==》Startup.cs
Global.asax 下面是一个MvcApplication类集成,该类继承System.Web.HttpApplication,类下面是一个Application_Start方法
简单的流程
用户请求是通过【视图V】进入==》通过【控制器C】处理==》从【模型M】获取数据==》最后返回给【视图V】。
也知道ASP.NET MVC中的约定可以通过修改配置来修改。
疑问
当时有一个疑问困惑好久,就是数据是怎么通过控制器C中发送到视图V的?
虽然知道能根据控制器内的方法来识别对应的视图名称,但是控制器方法的return是怎么把模型数据发送到视图的@model,当时记得自己折腾好久都没整明白,百度搜索找到很少相关,最后看到《ASP.NET MVC 5框架揭秘》这本书才知道是和视图引擎ViewEngine有关,视图引擎会把控制器绑定的数据和视图关联起来
修改约定
只搜索cshtml
在Global.asax中增加:
/配置视图搜索位置、文件类型,以提高性能
ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new CustomLocationViewEngine());
然后把CustomLocationViewEngine.cs文件放到App_Start中
配置类/注册类:
Global.asax 下面类的方法内的注册信息是怎么别框架识别的?