【问题标题】:Strongly typed API for ASP.NET MVC 2 async actions用于 ASP.NET MVC 2 异步操作的强类型 API
【发布时间】:2011-02-20 06:39:15
【问题描述】:

是否有人尝试为 ASP.NET MVC 2 异步操作创建强类型 API?

最好的问候, 阿列克谢·扎哈罗夫

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-2 lambda strong-typing


    【解决方案1】:

    如果我对您的理解正确的话,我相信我们最近做了类似的事情。我们使用 ASP.NET MVC 2 Futures 库中的 JsonValueProviderFactory 来实现强类型操作(更多信息请参见 haaked.com)。

    对于异步操作,我们有类似这样的内容:

    [HandleError]
    public class HomeController : AsyncController
    {
        [HttpPost]
        public void IndexAsync(Person person)
        {
            DoSomething();
        }
    
        public ActionResult IndexCompleted()
        {
            return View();
        }
    }
    
    public class Person
    {
        public string Forename { get; set; }
        public string Surname { get; set; }
    }
    

    只需对操作进行 POST 操作:

    {"Forename": "Cheesy", "Surname": "Goat"}
    

    有一个很棒的 Firefox 插件可以帮助测试这个称为“REST 客户端”的插件,我也会推荐它。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      MVC 可以很好地做到这一点,但根据您提供的代码示例,我的理解是您需要一个基于 json 的 API。

      Microsoft 正是针对这种情况创建了 WebAPI,它既是强类型的,并且在其底层设计中遵循 MVC 模式,但它也可以很好地工作,并且可以在同一个 Web 应用程序中与 MVC 一起使用。

      但是:

      如果您愿意,您可以使用简单的 Json 序列化程序包从 MVC 控制器操作提供序列化对象并简单地返回结果字符串,ActionResult 也支持这种情况,并且对于帖子使用内置的元数据基础结构来验证您​​的特定类型帖子中的数据为您提供所需的类型安全性。

      将 MVC 控制器视为一个 REST 端点也是可能的,只需以正确的方式构造控制器以支持典型的 REST 调用。

      不过,我强烈建议为此使用 WebAPI,因为它更适合 API 场景。

      【讨论】:

      • Wardy 可能你错过了这个问题的想法?当前的 ASP.NET MVC 2 具有基于魔术字符串方法的异步 api。我想知道是否有人试图创建强类型替代
      • 你还想知道这个问题的答案吗?
      • 无论如何更新了我的答案......应该将某些内容标记为这个答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多