一起谈.NET技术,浅谈ASP.NET MVC

简介: 在正式的工作中使用ASP.NET MVC也有一阵子了,也看了听了很多关于ASP.NET MVC别人的想法和代码,我认为很多人对于它的理解是错误的。在这里我只谈谈对ASP.NET MVC我的一些想法,希望大家多多讨论。

在正式的工作中使用ASP.NET MVC也有一阵子了,也看了听了很多关于ASP.NET MVC别人的想法和代码,我认为很多人对于它的理解是错误的。

在这里我只谈谈对ASP.NET MVC我的一些想法,希望大家多多讨论。

1. ASP.NET MVC区别于ASP.NET在于设计理念

我听过的关于ASP.NET  MVC的第一个看法是ASP.NET MVC最大的特点在于Controller和View的分离,当时我还不懂ASP.NET MVC是什么东西,但是当我第一眼看到这个框架时,我就认为这个观点是错误的,我认为ASP.NET MVC最大的特点,也是最大的优点是由Controller来驱动整个项目的开发进展

我们知道,在一个项目的面向对象分析与设计过程中,我们一直都在围绕着人,可能是角色,也可能是涉众来分析和设计整个项目。人,全都是人!站在整个类设计结构最上层的就应该是人,然后我们接下来应该去分析这个人有什么特征,我们这个人要做什么(记住,而不是这个人可以做什么)。也就是说,除了人之外,接下来的层次就应该是这个人的行为,也就是整个系统中的Action

好,接下来我们可以回想一下我们最初的ASP.NET Webform时代,我们是如何开发一个系统的,我们写出一堆设计文档,然后美工给我们页面,然后就是我们常说的“套页面”。对于这个做法,也就是我在之前文章中调侃的“PDD”(页面驱动开发)。缺点我就不说了,在前文中我想我已经说得很清楚了。

那么我们想想,其实我们会觉得Webform是个天然为了PDD而生的产物。当提及三层架构时,很多人都有一种看法是ASP.NET本身就是三层的,我们暂且不管这个说法对不对,至少可以说明,很多人都天然地把.aspx.cs当成了其中的一层,这就造成了aspx和aspx.cs这两层的完全耦合性。

但是ASP.NET MVC好在哪里?一个用户访问,并不是在访问某一个页面,而是在访问某一个功能(Action)。这就是面向对象分析的最基础方法。

那么我们在开发ASP.NET MVC时就应该先考虑我们需要哪些功能块,这就是我们的Controller,然后在这个功能块下,我们都需要哪些功能,这就是我们的Action。至于页面,应该是应该由功能来驱动我们的页面开发,这才是Controller驱动整个项目开发的核心!

但是我想仍然有很多公司在用开发ASP.NET时的那一套PDD来开发整个项目,我想,这就是没有掌握到ASP.NET MVC的精髓之所在吧。

ASP.NET MVC要点一:先开发Controller,页面完全可是先束之高阁,由Controller而不是Page来驱动整个项目开发。

2. Controller的代码组织

在整体的架构中,个人认为Controller更像一个Facade,他提供给用户一个访问接口,在这个接口背后是复杂的业务逻辑

但是我看到很多公司的代码都在Controller掺杂进了复杂的业务逻辑,甚至会出现了几百行,几千行的Controller,这是我没办法理解的。

让我们想想Facade,他的目的是这样的:定义一个高层接口,这个接口使这一子系统更加容易使用

在我看来应该注意这样几点:

A. Controller中不应该包含任何private和protected方法,一个Facade类只应该由对外暴露的方法,他只是对其他类方法的整合

B. Action不应该处理任何细节方面的逻辑。个人认为,每个方法之中仅应包含他下一抽象层次的方法,而不应该出现抽象层次的杂糅以及抽象的层次跳跃

C. Action本身其实就是一个方法,正如代码规范上所说的,方法应该只是动词或者动宾短语,而不应该出现名词作为方法名的情况。因为用户是希望做某一项动作,而不是得到某一种东西

3. 最后

本来感觉有好多话想说,可是写着写着却发现不知道该写什么了,下次再说吧。

最后,个人建议,学习ASP.NET MVC可以参考一下Java界的一些成熟思路,有些其实和ASP.NET MVC非常像,比如Struts,还有Spring MVC。

打算接下来的时间看一下。欢迎大家共同讨论学习。

目录
相关文章
|
25天前
|
开发框架 算法 .NET
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
C#/.NET/.NET Core技术前沿周刊 | 第 15 期(2024年11.25-11.30)
|
25天前
|
开发框架 Cloud Native .NET
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
C#/.NET/.NET Core技术前沿周刊 | 第 16 期(2024年12.01-12.08)
|
25天前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
|
2月前
|
自然语言处理 物联网 图形学
.NET 技术凭借其独特的优势和特性,为开发者们提供了一种高效、可靠且富有创造力的开发体验
本文深入探讨了.NET技术的独特优势及其在多个领域的应用,包括企业级应用、Web应用、桌面应用、移动应用和游戏开发。通过强大的工具集、高效的代码管理、跨平台支持及稳定的性能,.NET为开发者提供了高效、可靠的开发体验,并面对技术更新和竞争压力,不断创新发展。
110 7
|
2月前
|
开发框架 安全 .NET
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱
在数字化时代,.NET 技术凭借跨平台兼容性、丰富的开发工具和框架、高效的性能及强大的安全稳定性,成为软件开发的重要支柱。它不仅加速了应用开发进程,提升了开发质量和可靠性,还促进了创新和业务发展,培养了专业人才和技术社区,为软件开发和数字化转型做出了重要贡献。
47 5
|
2月前
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
51 4
|
2月前
|
开发框架 .NET C#
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位
.NET 技术凭借高效开发环境、强大框架支持及跨平台特性,在软件开发中占据重要地位。从企业应用到电子商务,再到移动开发,.NET 均展现出卓越性能,助力开发者提升效率与项目质量,推动行业持续发展。
45 4
|
2月前
|
机器学习/深度学习 人工智能 物联网
.NET 技术:引领未来开发潮流
.NET 技术以其跨平台兼容性、高效的开发体验、强大的性能表现和安全可靠的架构,成为引领未来开发潮流的重要力量。本文深入探讨了 .NET 的核心优势与特点,及其在企业级应用、移动开发、云计算、人工智能等领域的广泛应用,展示了其卓越的应用价值和未来发展前景。
73 5
|
2月前
|
机器学习/深度学习 人工智能 Cloud Native
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台
在数字化时代,.NET 技术凭借其跨平台兼容性、丰富的类库和工具集以及卓越的性能与效率,成为软件开发的重要平台。本文深入解析 .NET 的核心优势,探讨其在企业级应用、Web 开发及移动应用等领域的应用案例,并展望未来在人工智能、云原生等方面的发展趋势。
49 3
|
2月前
|
敏捷开发 缓存 中间件
.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素
本文深入探讨了.NET技术的高效开发模式,涵盖面向对象编程、良好架构设计及高效代码编写与管理三大关键要素,并通过企业级应用和Web应用开发的实践案例,展示了如何在实际项目中应用这些模式,旨在为开发者提供有益的参考和指导。
50 3