我们有一系列ASP.NET MVC控制器,它们都继承自单个基本控制器(继承自Controller类).我们现在正在考虑创建一些异步操作,并且想知道如果我们只是将基本控制器更改为继承AsyncController而不是Controller(意味着我们所有的控制器都将从AsyncController继承),我们是否会遇到任何麻烦.
杰斯,
在我看来,当你遵循以下约定时,asynch功能只会被调用,所以你不会受到伤害:
public class PortalController : AsyncController
{
public void NewsAsync(string city)
{
AsyncManager.OutstandingOperations.Increment();
NewsService newsService = new NewsService();
newsService.GetHeadlinesCompleted += (sender, e) =>
{
AsyncManager.Parameters["headlines"] = e.Value;
AsyncManager.OutstandingOperations.Decrement();
};
newsService.GetHeadlinesAsync(city);
}
public ActionResult NewsCompleted(string[] headlines)
{
return View("News", new ViewStringModel
{
NewsHeadlines = headlines
});
}
}
Run Code Online (Sandbox Code Playgroud)
惯例是在命名中添加News*Async*和News*Completed*部分.
看到:
观察控制器类现在派生自AsyncController而不是Controller.此外,新闻动作方法已被拆分为名为NewsAsync和NewsCompleted的方法,这些方法与异步页面中的Begin和End方法类似.逻辑上,控制器仍然公开名为News的单个操作方法.但在物理上,方法实现已经使用整个.NET框架中使用的异步模式的变体进行了分解.
如果您未在继承的控制器代码中更改任何内容,则不会启动异步激活.然而,正如罗伯特上述(或低于也许:-)),你可以装饰一个需要必须的基础上采取的行动,以保持意图明显,寿",我个人认为,公约应表明了明确.
当然值得辩论.
| 归档时间: |
|
| 查看次数: |
1655 次 |
| 最近记录: |