前情概要:
曾是学生时代的我,初识架构是一个传说中的三层架构。这可是鼻祖啊!因为我个人认为这是第一个让我明白高内聚低耦合的一种写代码的方式。刚接触写程序统统都是把所有的东西放一起,自己找一段代码得花很长时间(哪个时候还不知道VS有F12的存在)。简单的说就是UI层(界面),BLL层(业务处理),DAL层(数据处理)。就是分工明确在不同的包里分别编译,便于管理。
今天我们从MVC基础开始穿插Knockout和Angular以及Node这些前端框架,SQL的存储结构,触发器表设计。来做一个系统的学习。鉴于水平有限,表述可能不清,我们再行商榷。(本人也是初学,还请多多包涵!)
MVC基础:
顾名思义,我们一讲到MVC就是Model View Control。数据模型,界面展示,和后台处理分而治之。这也是面向对象的核心(个人认为)。把复杂的问题模块化,细化,拆分并从根本上解决业务需求。
MVC工程创建:
首先你得有VS至少2010往上吧!SQL2008R2以上也得有后期学习存储过程可能用得上。
创建一个MVC的Solution。模板名称叫ASP.NET MVC 4 Web Application.(也可以是别的模板随个人喜好)创建完你可以选择模板类型是纯净版的还是带官方Demo的Solution.其次View的代码是采用CSHTML还是常规的HTML,他们两者是互相嵌套的。这个很基础我觉得自己研究研究,多创建几个都会了。如下图所示整个工程目录就是这样:
创建完成后的Solution是这个样子的。
目录释义:
【APP_Data】这个是用来存放数据的。
【APP_Start 】存放MVC的运行对象。
【AuthConfig】这个是建立使用外部证书,比如某讯的账号。
【BundleConfig】这个是用来存放集体加载CSS或者JS的配置文件。
【FilterConfig】这个是用来过滤的,比如授权,Action这些。
【RouteConfig】这个是设置默认首页的路由的配置文件。
【WebAPIConfig】这个很重要我们之所以能够访问一些资源都是通过这个映射找到URL并获取资源。
【BootStrap】这个是我自己粘进去的是一个第三方库,很好用。
【ckeditor】也是一样是一个第三方文本输入插件。
【Common】也是自定义的文件夹,当我们要写一些公共逻辑,我们可以这里进行调用。
【Content】这个是包含CSS资源文件。
【Controller】控制器,很重要MVC三剑客之一。
【Filters】这个是用来实现过滤的。
【Image/img】图片资源文件。
【Models】数据模型。MVC三剑客之一,我一般把数据模型单另出来放在一个Library里,三层架构的后遗症,不过没毛病,再写大型项目还是要跟项目组走切不可意气用事。
【Scripts】JS,JQuery,Knockout Angular等类库存放位置。
【Views】视图,MVC三剑客之一。
【favicon.ico】图标不解释。
【Global.aspx】这个是配置注册的信息的加载设置,比如路由,EF。ex:BundleConfig需要在这里注册。
【packages.config】包配置文件不解释。
【Web.Config】这个很重要,连接字符串,项目加载验证一些DLL配置,等等。总之很重要。
MVC的运行机制(几个关键点):
Models:
前文说道MVC三剑客之一。主要提供数据模型支持,也可通过数据模型逆向工程创建DB。这个功能叫做Entity Framework.主要有三种驱动,Model驱动(Model First):前提是有数据库设计经验根据模型去创建DB。Database驱动(Database First):这也是我们学生时代最常用的模式,先建模,创建数据库,然后根据数据库来写代码。Code驱动(Code First):根据在Models调用EF对象创建DB。
View:
讲到这里需要再啰嗦一下:网页编程的三门基础课(HTML CSS Javascript)语义,表现和行为。有很多人都对这些有股莫名的陌生感。
HTML
它的关键就在于理解盒模型,如何响应式布局,如何在复杂环境下不出现兼容问题,合理的利用人机交互设计一套骨架健壮的网页布局是任重道远啊。
CSS
拥有一套入门级的装备,仍旧不够,还要精炼啊,加成啊!CSS就是为HTML加Buff的。老版本只是能设置一些基本显示,现在加入CSS3豪华套餐简直炫酷屌炸天,比如滑入滑出,圆角边框,扁平化的样式越来越迎合人们的审美。
JS(JQ,Bootstracp,Knockout,Angular Node)
JS作为一种实现简单前台业务处理的代码,可以实现更复杂的动画,比如滑动循环显示图片并且每隔5秒切换一张。那通过JS来触发一些定时事件来实现最简单不过了。JS的问世本就是奇迹,现在加上这么多工程师夜以继日的封装出来类似Jquery这样的类库,让JS更容易上手。JQuery我强烈推荐加入你学会用原生JS获取一些DOM元