对于asp.net mvc 2.0 异步控制器中hard code的一点不满
2010-08-07 22:07
357 查看
微软的.net类库里面好多对象的名字为了统一都有个基本的约定,比如接口名称以I开头,事件信息类型以EventArgs结尾等等。为了代码的可读性,作为程序员最好去遵守这些约定,这些约定我认为仅仅是为了代码的可读性,而不是必须的,而有一天你一觉醒来却发现:如果接口名称不以I开头,接口就会报错。事件信息类型不以EventArgs结尾也会报错。。。。。。。。。
我想肯定会豪迈的喊出fuck ms。当然上面的事情没有发生,但是我今天在翻阅微软的新框架asp.net mvc 2.0的时候。类似的事情却出现了。
asp.net mvc 2.0版本中新增了异步的控制器(asynchronous controllers);异步控制器的实现方式如下:
一般控制器继承自Controller而异步控制器继承自AsyncController。这个没什么问题,继续看一部Action。
继承自AsyncController的控制器既可以当作异步控制器来使用,也可以当作同步控制器来使用,这个主要取决于UI所申请的Action的签名。这就是我今天要说的问题:
如果Action的名称以Async结尾则按照异步执行
如果Action的名称不以Async结尾则按照同步执行
例子:
代码
上面的这些种种现象,作为一名程序员是完全可以理解的,我也做过通过某个字符和特征来识别不同请求的事情,但是个人认为微软作为一个软件帝国,作为asp.net mvc的发布方,以hard code的形式来区分异步和非异步实在是让人有点难以接受(但是还是接受了)。asp.net mvc 3.0 preview1版本已经发布了,不知道有什么改进。
我想肯定会豪迈的喊出fuck ms。当然上面的事情没有发生,但是我今天在翻阅微软的新框架asp.net mvc 2.0的时候。类似的事情却出现了。
asp.net mvc 2.0版本中新增了异步的控制器(asynchronous controllers);异步控制器的实现方式如下:
namespace MvcApplication1.Areas.Store.Controllers { public class HomeController : AsyncController { } }
一般控制器继承自Controller而异步控制器继承自AsyncController。这个没什么问题,继续看一部Action。
继承自AsyncController的控制器既可以当作异步控制器来使用,也可以当作同步控制器来使用,这个主要取决于UI所申请的Action的签名。这就是我今天要说的问题:
如果Action的名称以Async结尾则按照异步执行
如果Action的名称不以Async结尾则按照同步执行
例子:
代码
-------------------------------------------------------------------------------- 对控制器类型“HomeController”的操作“index”的当前请求在下列操作方法之间不明确: 类型 MvcApplication1.Areas.Store.Controllers.HomeController 的 Void IndexAsync() 类型 MvcApplication1.Areas.Store.Controllers.HomeController 的 Void Index()
上面的这些种种现象,作为一名程序员是完全可以理解的,我也做过通过某个字符和特征来识别不同请求的事情,但是个人认为微软作为一个软件帝国,作为asp.net mvc的发布方,以hard code的形式来区分异步和非异步实在是让人有点难以接受(但是还是接受了)。asp.net mvc 3.0 preview1版本已经发布了,不知道有什么改进。
相关文章推荐
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
- c#异步编程(三)—ASP.NET MVC 异步控制器及EF异步操作
- ASP.NET MVC中使用异步控制器
- asp.net mvc 2.0 异步获取服务器时间
- ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则
- ASP.NET MVC 4 异步加载控制器
- ASP.NET Mvc 2.0 - 2. 异步Controller执行流程时序图
- 在 ASP.NET MVC 中使用异步控制器
- 在 ASP.NET MVC 中使用异步控制器
- c#异步编程(三)—ASP.NET MVC 异步控制器及EF异步操作
- ASP.NET MVC中使用异步控制器
- asp.net mvc中异步控制器的诡异
- 异步控制器, 从ASP.NET MVC 2到4
- asp.net mvc 异步控制器的诡异问题
- ASP.NET MVC EF 中使用异步控制器
- ASP.NET MVC 学习笔记-6.异步控制器
- 在 ASP.NET MVC 中使用异步控制器
- 异步控制器, 从ASP.NET MVC 2到4
- 详解ASP.NET MVC下的异步Action的定义和执行原理
- asp.net mvc Razor一点小注意点