澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

澳门新浦京娱乐场网站MVC种类学习,MVC深入显出

2017工作学习总结

一. ASP.NET体系

注:本文章从伯乐那盗了两张图,和一些文字:

    其实早在很多年前我就一直有一个梦想,那就是那个网站当个站长,和各位有共同爱好的人成为朋友,很多年了虽然有了这个能力却没有了这个心情,成为了程序员却天天被程序玩。
    最近几年一直从事C#方面的软件开发,基本上C#方面开发技术都有用过,MVC、WPF、Asp.Net、Xamarin等。从我多年的开发经验来看,还 是前端相对来说比较辛苦点,客户的问题永远解决不完,首当其冲的就是前端开发者,虽然我尽量的想转后端,奈何后端早已被JAVA承包。
    最近心血来潮又想玩玩网站了,自己抽空也写了个简单的博客软件,虽然看起来简单,但需要完善地方太多了,于是乎也闲置了,于是我终于明白了一个做程序的道理,何必重新造轮子,最终却发现,其实更本就没有轮子。
    在网上寻找了很久,真心觉得网站开发又基本全是PHP的天下。在互联网行业,C#的市场很低。博客系统虽然很多,但真正能用的,也就只有几个其中BlogEngine算是最好的了,是采用WebForm的方式开发的,现在最流行的不是MVC吗。我只想找个MVC Mysql的网站软件就这么难。.Net和MSSQL太紧密了,大多C#都是采用这样的开发架构。

来源:

  2017年最大的一件事当然是结婚了,正式步入婚姻生活后,才真正意识到了人生已经进入到了下一个阶段了,即从“天生”的三口之家,变成了独立的新家。对于这个新的开始,我无比的激动,并充满幻想,我希望将来能和我的妻子,共同分享我们努力换来的幸福生活。

   从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模式,ViewState功不可没,通过的控件的拖拽和绑定,很快就可以搭建出来一个Web项目,其开发速度远胜Java、PHP,当年Web项目并不很重视体验,没有今天响应式,没有各种前端js框架,所以在当年的WebForm,微软是以引以为豪的。

1.MVC设计模式 与 Asp.Net Mvc框架

    也下载过各类开源CMS来试用,发现均很坑爹,要么源码无法编译,要么各种bug。

在经过对.Net平台深入的学习以后,我发现很多语言开发动态网站时,它的后台逻辑都差不多是相同的,今天在这里我给大家来聊聊在.Net平台下网站的开发!

  2017年,另一件事情是我开始了对编程的正式学习。由于高中时就接触到了VB,大学时学了C语言,对编程来说,我是很感兴趣的。我想其中的一个原因可能跟我的思维习惯有关系,我认为很多事情都是有规律可循的,而计算机编程为我们提供了一个很好的平台,供我们去用人的意识去操纵机器,从而让机器代替人类,去做一些有规律可循的事情,我相信对于这些事情,让计算机去做,比人去做效率更高,效果更好。当然,计算机在逻辑设计之初(图灵机)就定义计算机的功能限制:计算机只能用于计算可计算的问题(人的感情属于不可计算的问题)。但是在我们的生活中,大部分问题仍是可计算的,因此学习计算机编程无疑是未来长远发展的必修课。在3月份底,我再三犹豫后,在腾讯课堂上购买了常老师的C#编程课程,用了很短的时间(大概一个月),就把CS架构的课程都学习完了,对于后面的BS内容,由于当时的使用需求所限,因为没有仔细的学习,只是大概的看了一遍。

  该框架毕竟有时代局限性,随着前端的崛起,随着人们对项目体验的提高,随着项目的体量的增大,WebForm在当下强调松耦合、模块化、组件化的时代,略显落后,故微软于2009年推出第一个开源框架,即MVC框架,俗称ASP.Net MVC1,后面又陆续的推出 MVC2、3、4、5。现在最新的跨平台Web开发框架 Core MVC,它隶属于.Net Core框架,而非 .Net FrameWork下。

a.MVC设计模式

    发现Orchard时我就被震惊了这就相当于是PHP界的wordpress啊,要好牛逼有好牛逼,最重要的简单实用,直接上手,源码一次编译即过,微软官方项目,绝对质量,更没有任何留一手的说法。使用MVC5并支持任意数据库。示例:http://yjx.in/

目前,ASP.NET中两种主流的开发方式是:ASP.NET Webform和ASP.NET MVC。从下图可以看到ASP.NET WebForms和ASP.NET MVC是并行的,也就是说MVC不会取代WebForms(至少目前是这样)而是多了一个选择,Webform在短期之内不会消亡,尽管存在许多缺点,但过去许多老项目依旧是使用的WebForms进行开发的,虽然许多公司已经在积极的将WebForms项目迁移或升级到MVC项目,但WebFoms项目依然会存在很长一段时间。
澳门新浦京娱乐场网站 1

  在系统地学习了编程后,学会了基本的面向对象设计方式,和简单的设计模式,以及C#的一些高级特性。但学习后,我又在腾讯课堂上看到了软谋的视频,里面详细介绍了泛型,反射,多线程等一系列我认为很有用,但在常老师的课程中没有具体讲的内容,因此于5月底,我购买了软谋高级班的课程,跟着Eleven老师,进入.Net的高级开发,开始学习架构思维。在高级班,我学习了泛型,反射,Lambda,多线程,序列化,面向服务编程的概念,WebService,WCF,WebApi,AOP面向切面,依赖注入DI,EF,MVC框架,学到的内容基本都是Net开发中使用的高级特性,这些特性,满足了我对之前学习常老师课程中留下的很多问题,“原来问题还可以这样解决”,是我最大的感受。

  下面用一张图表示一下在Core出现之前,.Net在Web开发即ASP.NET中包含的内容。

MVC设计模式 是一种 软件设计模式,将业务逻辑 与 界面显示 分离,并通过某种方式 灵活改变代码设计方式。

它的优点是,降低了 页面呈现 和 后台业务的 耦合度。

    Orchard 不仅仅是内容管理系统!Orchard 更是一个功能强大的 Web 开发框架,其热拔插模块架构让你可以开发任意 Web 应用。不用从零开始!Orchard 丰富的内置及第三方模块将大大减少你的工作量。Orchard 采用 MVC 架构,完全实现了后台逻辑与前台展示之间的分离。Razor 模版能够非常容易地将设计师或前台工程师创作的 HTML 模版转化成网站主题,并且能够实现一键切换主题。Orchard 安全稳定且性能出色,后台管理界面直观易用。Orchard 是首屈一指的免费开源建站平台,内置的工作流、定时任务、多级缓存、多租户、多用户角色权限等功能使其既可以用于创作简单的个人博客,也适合开发新闻门户 等大型高流量网站。

WebForm的开发方式

  1. 服务器端控件
  2. 一般处理程序 Html静态页 Ajax
  3. 一般处理程序 Html模板

  由于高级的内容较多,有很多需要理解的部分只有实践才能真正掌握其中的精华,而我目前的工作中没有一个具体的实践机会,因此很多学到的知识,也只是停留在了解的程度。

澳门新浦京娱乐场网站 2

b.Asp.Net Mvc框架

    本站也就是使用Orchard直接搭建而成,无需修改任何代码,首次自动安装指导,本程序使用Mysql作数据库,MSSQL太重了。

WebForm模型

澳门新浦京娱乐场网站 3

  9月中旬,第一次学完了高级班的所有课程,我目测大概学会了40%的内容。

   简单分析一下:WebPages(没用过哎)、WebForms、MVC均为ASP.NET下的Web开发框架,WebAPI负责构建HTTP常规服务,SignalR负责构建实时服务。

它是微软 基于 MVC设计模式开发的一套 新的 Web机制。

传统的MVC设计模式,通过配置文件的方式,来决定 控制器访问哪个Model 和 执行哪个视图 。

微软采用了一种“约定大于配置”的理念:

1.控制器放在Controllers文件夹中,并命名方式以Controller结尾

2.每个Controller都对应View中一个文件夹,文件夹名称跟Controller名相同

3.控制器中的Action方法都对应一个的View

4.控制器必须是非静态类,并且实现IController接口

5.Controller类型可以放到其他项目中

    下篇文章为您介绍BBX,一个开源的.Net论坛。

MVC请求模型

澳门新浦京娱乐场网站 4
DomainModel – 领域模型: 不仅仅是一个实体类,而是整个业务才处理流程的一个规则.

  10月份结婚,蜜月很是幸福,从泰国回来后,感觉好像喜欢上游泳了,即原来在游泳的时候都是手脚同时发力,因此在两次划水动作的交替时,都会感到非常的紧张,就怕自己划水动作慢了,就会沉下去。但在泰国酒店的泳池里,我终于明白其实手脚不应该同时发力,应该交替发力,这样在手不发力的时候,脚发力,脚不发力的时候,手发力,这样手脚循环发力就可以轻松的游下去了,其实结婚后,两个人组成的新家庭也是这个道理,“手脚”呼应,交替前行。

   MVC和WebAPI简单对比一下:MVC用来构建网站既关心页面又关心数据,WebAPI只关心数据;MVC通过可以通过Action的名字来接受CURD操作,而WebAPI通过HTTP的访问方式(GET、PUT、POST、DELETE)来表达不同的CURD操作。

2.ASP.Net WebForm开发模式 与 ASP.Net MVC开发方式

WebForm 优点

  1. 支持事件模型开发。得益于丰富的服务器端组件,webfrom开发可以迅速的搭建web应用
  2. 使用方便,入门容易
  3. 控件丰富

  11月第二次开始了高级班的学习,在学习的过程中,突然想到了真实的业务需求。为我们工作中所写的帮助手册做一个搜索服务,以支持手册的查询和更新功能。于是我在网络上搜索了一些网站的源码(前端aspx 后端dll),然后用ILSpy反编译学习了一下基本的思路,最后自己重新写了一个Lucene的帮助类库,然后又新建了一个WebForm的网站成功,真正实现了想要的功能。但在实践的过程中,我对网站编程的兴趣越来越浓,总是在想,这么简单的一个网站,我用WebForm已经完成了,但我在高级班学的MVC框架是不是还需要在重新用MVC在写一遍,后来又下载一些MVC后台管理的网站后台源码,Jucheap这个框架为我打开了一个网站设计的大门,从框架的源码中,我看到了很多自己在学完了高级班之后仍然很不了解的地方,后来通过对框架中用到的知识一点一点的百度,学到了更多的MVC框架的知识,并且也有了自己的一些想法,例如一个很简单的需求,能不能我在后台动态添加(配置)一个页面,用于用户录入一些我规定的字段信息。从这里面我又想起了一个我一直以来想的一件事情:用户界面UI能不能通过后台直接生产,这样风格即统一,也减少了前台页面的设计,但这里面存在一个问题必须解决,那就要模型信息验证,通过学习MVC,发现Model实体上添加特性,利用HTMLHelper即可在前台生成基于JQuery的前台模型验证(必须使用BeginForm和TextBoxFor等方法)。看到这种方法后,我又产生了一种新想法,我能不能通过扩展HtmlHelper,去实现一个BeginFormForModel的方法,将模型自动转换为前台界面,这个方法无疑是可行的,于是我就去看了HemlHelper的源码,里面确实并不是我想象的那么简单(ViewContext等),但我知道,我的这个想法一定可以实现

  (WebService、WCF、WebAPI、SignalR在后面会有单独的章节详细介绍)

a.ASP.Net WebForm开发模式

WebForm 缺点

  1. 封装太强,很多底层东西让我们初学者不是很明白
  2. 入门容易,提升很难
  3. 复杂的生命周期模型学习起来并不容易
  4. 控制不灵活
  5. ViewState处理

  后来在博客园里面接触到了更多的程序设计等其他方面的内容,越来越有兴趣,到现在2018年2月,刚刚接触到NetCore就有了非常高的兴趣。感觉现在学习编程的感觉正如一开始学习时,常老师所说的,老师只是教最基础的知识,等你学会了这些基础知识后,再看其他内容就会非常轻松了。我现在学习的感觉就是:头脑中已经有了一定的知识储备,但目前急需要扩展自己的视野,跟上互联网技术发展的前沿,而NetCore是2014年微软推出的跨平台的Net平台,NetCore平台上仍然使用C#语言,并且对NetFramework进行了库的迁移,在NetCore中使用的方式和Net中是一样的,但是NetCore平台使用了很多先进的设计理念,如NetCore中的MVCCore和EFCore都更加的轻量级,高性能,可扩展。这两天在看了博客园大神腾飞Jesse的一些文章,并且看了他录制的NetCore快速入门教程,真的感觉到了之前从Jucheap框架中看到的很多不懂的东西,这NetCore的快速入门教程中都有体现,感觉这种前后呼应的感觉真是棒棒哒。

 

澳门新浦京娱乐场网站 5

ASP.Net MVC的开发方式

  1. 2009年第一个开源项目版本发布
  2. 更加简洁,更加接近原始的“请求-处理-响应”
  3. 不会取代WebForm
  4. 底层跟WebForm都是一样的。管道上不同的处理而已
  5. MVC只是表示层的一种新的方式
  6. MVC是微软2009对外公布的第一个开源的表示层框架,这是微软的第一个开源项目
  7. MVC目的不是取代WebFrom开发,只是web开发的另外一种选择

  至此总结了我2017年的学习和生活的一些感谢。希望以后再看的时候,能够回忆起当时的美好。

二. WebForm和MVC对比

当我们请求Index.aspx时,服务器中找到index.aspx文件,

为什么要学习ASP.Net MVC?

MVC架构模式诞生30年后,因为其提供的良好的松耦合、易于扩展、高可维护性等优点,重新在开发社区火起来。作为微软全新的Web网站开发框架,ASP.NET MVC提供了全新的开发模式,完美支持经典的MVC架构模式。为.NET工程师提供了完全不同的开发体验。

越来越多的公司和开发者开始加入到MVC开发模式中来,使他进入了一个高速发展的状态,而现在MVC已经变成了ASP.NET下的一种常见的开发模式,它能让你学习一种完全不同的架构,所以这是我们有理由也有必要掌握的一项开发技能。

  最后对上述本文中提到的喜课堂教育的常老师,软谋教育的Eleven老师表示衷心的感谢。希望你们的课程越办越好。

  1. WebForm

然后由 前台页面 找到它的后台文件 中的继承类index.aspx.cs,

ASP.Net MVC学习路线

要有C#、ADO.Net、html、javascript、ASP.Net WebForm的基础

而我的梦想也是成为一名教书育人的老师(IT),目前正在努力的学习过程中,感谢你们的帮助。

   做过WebForm开发的朋友们应该很清楚,WebForm开发形式主要分为三种:

然后进行业务逻辑处理,修改前台的数据,并在PR方法中,渲染 前台展示页面。

MVC简介

MVC 模式两种理解:一种是表现模式,另外一种是架构模式。这里我主要将其理解为表现模式。

它将应用程序分成三个主要组件即:视图(View)控制器(Controller)模型(Model)

M:Model 主要是存储或者是处理数据的组件Model其实是实现业务逻辑层对实体类相应 数据库操作,如:

CRUD(C:Create/R:Read/U:Update/D:Delete)。它包括数据、验证规则、数据访问和业务逻辑等应用程序信息。ViewModel:视图模型

V:View 是用户接口层组件。主要是将Model中的数据展示给用户。ASPX和ASCX文件被用来处理视图的职责。

C:Controller 处理用户交互,从model中获取数据并将数据传给指定的view
澳门新浦京娱乐场网站 6
表现模式(UI/Presentation Pattern)三个角色

Model:用于存储数据的组件

View:根据Model数据进行,内容展示的组件

Controller:接受并处理用户指令(操作Model),选择一个View并输出内容

MVC是 模型(Model),视图(View)和控制(Controller)的缩写,其目的实现Web系统的职能分工。其中Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现; View层用于与用户的交互,通常用JSP来实现; Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。

  同时感谢腾飞Jesse和Jucheap框架的作者。

  ①:服务器端控件,即拖拽控件(aspx)

b.ASP.Net MVC开发方式

MVC请求模型

澳门新浦京娱乐场网站 7
控制器(Controller)- 负责转发请求,对请求进行处理。
视图 (View) – 界面设计人员进行图形界面设计。
模型 (Model)-业务逻辑、数据、验证规则、数据访问等等
模型是一个概念,不要对应到多架构的某个层

View 和 Controller都可以直接请求Model,但是Model不依赖View和controller

Controller可以直接请求View来显示具体页面,View不依赖Controller

真正和用户打交道的是 控制器,视图/模型 只是被控制器调用并产生html代码而已。

  由于本人排版水平有限,第一次写博客,希望大家多提意见。

  ②:一般处理程序(ashx) html模板

澳门新浦京娱乐场网站 8

MVC优点

  1. 很容易将复杂的应用分成M、V、C三个组件模型。通过model、view和controller有效的简化了复杂的架构,体现了很好的隔离原则
  2. 因为没有使用server-based forms 。所以我们程序员控 制的更加灵活,页面加干净
  3. 可以控制生成自定义的url。对于seo友好的url更是不在话下
  4. 强类型View实现,更安全、更可靠、更高效。
  5. 让web开发可以专注于某一层,有利于开发中的分工,更利于分工配合适用于大型架构开发
  6. 很多企业已经使用MVC作为项目开发框架,招聘明确要求熟悉MVC开发模式,我现在做的项目架构就是mvc ef wcf
  7. 松耦合、易于扩展和维护
  8. 有利于组件的重用
  9. ASP.NET MVC更好的支持单元测试(Unit Test)
  10. 在团队开发模式下表现更出众

MVC 代码和页面彻底分离,WebForm:codebehind技术没有完全对代码和前台页面进行分离

                                                                                                                                                                                               2018年2月7日星期三

  ③:html静态页 ajax 一般处理程序(ashx)

当我们请求/blog/index时,会在服务器中找到与blog同名的控制器(Controller),

控制器的约定大于配置

  1. Controller放到controllers文件夹中,并且命名方式以Controller结尾
  2. 每个Controller都对应View中的一个文件夹,文件夹的名称跟Controller名相同Controller中的方法名都对应一个View视图(非必须,但是建议这么做)而且View的名字跟Action的名字相同
  3. 控制器必须是非静态类,并且要实现IController接口
  4. Controller类型可以放到其他项目中。

  请求模型:

然后控制器 将业务处理交给Model来处理,处理后的数据返回给控制器,

视图的相关约定

  1. 所有的视图必须放到Views目录下
  2. 不同控制器的视图用文件夹进行分割,每个控制器都对应一个视图目录
  3. 一般视图名字跟控制器的Action相对应(非必须)
  4. 多个控制器公共的视图放到Shared

总体来说,MVC是一个很强大的东西,你对他有多了解,你就能做出来多好的网站!

0

 

 

  澳门新浦京娱乐场网站 9

再有控制器 来决定由 哪个视图来展示界面(此次请求是Index这个Action)

澳门新浦京娱乐场网站MVC种类学习,MVC深入显出连串。  WebForm的几个臭名昭著的缺点:封装太强,导致开发不灵活;ViewState的无状态;声明周期模型复杂,对于初学者不易于理解。

  1. MVC

  我们经常从各种开发工程师(JAVA 、.NET、PHP)口中听到MVC,但不同人说的MVC貌似类似,但又有区别,那么MVC到底是什么呢?(类似的还有MVP和MVVM)

  1. 从宏观上来说:MVC是框架分层的一种搭建思想,在最原始的项目中,没有什么框架分层之说,所有的项目代码都在一个层里,这样会导致代码冗杂,耦合性强,项目迭代升级困难,MVC是一种分层思想,将一个项目代码分为几类,分别放到不同的层里,Model层存储一些数据和业务逻辑,View层处理页面问题,Controller层用来接收人机交互指令。MVC分层思想和传统的三层(数据库访问层、业务逻辑层、表现层)还是有区别的。

  MVC的核心是分离了View和Model(即页面和数据),Controller负责接收和发送指令,交给Model层处理。

  2. 从.Net的角度来说,MVC是微软提供一个Web开发框架,全称ASP.NET MVC,它是传统三层中View层的一种功能细分,一种表现形式而已,与三层没有直接关系。ASP.NET MVC框架中的开发流程围绕:

  ① Model:存储实体类,实现系统中的业务逻辑。

  ② View:页面展示(Razor模板),展现给用户。

  ③ Controller:页面的逻辑处理,用来与用户的交互,处理接受的Http请求。然后从Model中获取相应的数据,转发给View进行页面展示。

 补充:通过Controller中的Action,可以充当APP的服务端接口的作用,和WebAPI达到的效果一致,但访问方式是有区别的。

  请求模型:

澳门新浦京娱乐场网站 10

  下面列举MVC框架的几个典型的优点:

  ①:松耦合,M-V-C分工明确,有利于代码的维护。

  ②:便于Seo优化,能自定义url的生成规则。

  ③:ASP.NET MVC5是个出色的表现层框架。

  ④:对单元测试支持友好。

三. ASP.Net MVC 框架

  1. 包含的技术

  ASP.NET MVC框架,这里以MVC5为例,涉及到的知识有:Model-View-Controller的使用、Area和Global的理解、路由配置、数据传递的方式、AOP思想的体现(4大过滤器),各种Result、Razor语法、HttpContext相关的五大对象、分布视图、特性的补充、Html扩展控件、Bundles压缩js和css的原理、Owin约束、管道模型及MVC的工作原理。

   以及最新的Core MVC框架的相关知识。

  1. 常见的约定

  ①:控制器命名通常以Controller结尾。

  ②:一个控制器对应一个View视图文件夹,常用页面都存放在里面。

 

四. 系列章节

       第一节:走进MVC的世界(未完成)

       第二节:各种路由约束(动态路由、静态路由、组合路由、正则约束、命名空间约束、区域内路由)

       第三节:Action向View传值的四种方式(ViewData、ViewBag、TempData、Model)

       第四节:MVC中AOP思想的体现(四种过滤器)并结合项目案例说明过滤器的实际用法

       第五节:从源码的角度理解MVC中各种Result(ActionResult、JsonResult、JavaScriptResult等)---待补充

       第六节:Razor引擎及相关语法(未完成)

       第七节:HtmlHelper及其扩展(未完成)

       第八节:layout和partialView、RenderPartial和Partial、 action和RenderAction(未完成)

       第九节:从源码的角度分析MVC中的一些特性及其用法

       第十节:数据批注(DataAnnotationModel)和自定义验证(包括Model级别的验证)

       第十一节:Bundles压缩合并js和css及原理分析

       澳门新浦京娱乐场网站MVC种类学习,MVC深入显出连串。第十二节:MVC中的一些特殊优化

       第十二节:管道模型(未完成)

       第十三节:HttpHander扩展及应用(自定义扩展名、图片防盗链)

       第十四节:再探MVC中路由的奥秘

       第十五节:HttpContext五大核心对象的使用(Request、Response、Application、Server、Session)

       第十六节:利用MVC的扩展完成“一个后台,多套前端页面”的解决方案(未完成)

       第十七节:XXX

       第十八节:XXX

 

 

 

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 本人才疏学浅,用郭德纲的话说“我是一个小学生”,如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,如需代码请留言,加我QQ:604649488 (备注:评论的博客名)

 

本文由澳门新浦京娱乐场网站发布于www.146.net,转载请注明出处:澳门新浦京娱乐场网站MVC种类学习,MVC深入显出