ASP.NETMVC原理
html实现用户注册登录代码我出了份卷⼦做⾯试题,其中之⼀就是要求说说ASP.NET MVC的原理。感觉太空泛了,谁能说得准呢?
但是,如果站在我这个⾯试官⽴场,⾯试题好多时并不要求有标准答案,可能也没有什么标准答案,主要是通过问答,了解⼀下⾯试者的理解程度,相关知识程度什么的。其实,我⾃⼰⽔平也不⾏,但因为年纪⼤,好像不带点⼈⼤家会觉得有点怪怪的,所以过去⼀段时间也参与点招聘⼯作。
对于ASP.NET MVC,我⾃⼰的理解是酱紫的:
MVC是⼀种思想。ASP.NET MVC只不过是实现了这种思想的⼀种开发框架。利⽤Web Form项⽬,其实也可以实现MVC。以前搞WEB FORM,我就试过MVP模式。
MVC的思想要点的在于将UI和业务逻辑、数据分离。好处⼀是逻辑清晰,⼆是有利于逻辑重⽤和测试。因为UI很难⾃动化测试,但逻辑却可以。所以说,ASP.NET MVC有利于进⾏单元测试。并且UI与逻辑、数据分离以后,也容易重⽤。⽐如说,在ASP.NET MVC中,不同的action可以指向同⼀个view。
经典的MVC中,Model是个巨⽆霸,包含业务逻辑和数据。controller只是⼀个中间⼈,在View和Model之间传递点什么,打打酱油。有时候,Model和View甚⾄直接联系,绕开了controller。
⽽在ASP.NET MVC中,虽然有⼀个Model,但此Model并⾮彼巨⽆霸Model。ASP.NET MVC中的Model,是⼀个跟视图有关的Model,也就是传说中的那个VM,ViewModel,它只是经典巨⽆霸Model的⼀部分。ViewModel,顾名思义,主要⽤于View。经典巨⽆霸Model,被拆分成了数据(ViewModel、领域对象、数据库实体类)+ 业务逻辑(BLL ,各种Service)。因此,Model只不过是⼀概念的集合,并不是⼀个实实在在的对象。
值得⼀提的是,ViewModel、领域对象、数据库实体类很有可能是同⼀个对象。⽐如说,我们在View⾥直接操作的VM,其实常常就是将数据持久层的实体类直接拿过来⽤的。即便如此,但在软件设计阶段,还是要将它们的概念区分开。
ASP.NET MVC的原理,其实就是使⽤HttpModule和HttpHandler将⽤户的请求拦截,按照设定的路由规则解释到相应的控制器和Action,加以执⾏。Module是⼀个⽐较宏观⼀点的概念,像Session、Cache都由相应的Module负责;⽽Handler就是负责处理具体请求的。先有Module,再有Handler。它们的关系,有点像进程和线程。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论