Строго типизированный API для асинхронных действий ASP.NET MVC 2

Кто-нибудь пытался создать строго типизированный API для асинхронных действий ASP.NET MVC 2?

С уважением, Алексей Захаров


person Alexey Zakharov    schedule 17.05.2010    source источник


Ответы (2)


Если я правильно вас понял, я считаю, что мы недавно сделали что-то подобное. Мы использовали JsonValueProviderFactory из библиотеки ASP.NET MVC 2 Futures для достижения строго типизированного действия (подробнее об этом на 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», который я бы тоже порекомендовал.

Надеюсь это поможет.

person Chris Knight    schedule 19.07.2011

MVC вполне мог бы это сделать, но я понимаю из предоставленного вами образца кода, что вам нужен API на основе json.

Microsoft создала WebAPI именно для этой ситуации, он строго типизирован и следует шаблону MVC в своем базовом дизайне, но он также хорошо работает и может использоваться вместе с MVC в одном и том же веб-приложении.

Тем не мение:

Если вы хотите, вы можете предоставить сериализованные объекты из действия контроллера MVC, используя простой пакет сериализатора Json и просто возвращая результирующую строку, ActionResult также поддерживает этот сценарий, а для сообщений используйте встроенную инфраструктуру метаданных для проверки данных конкретного типа из пост, дающий вам желаемый тип безопасности.

Также возможно обращение с контроллером MVC как с конечной точкой отдыха, это просто вопрос создания контроллера, который будет поддерживать типичные вызовы REST.

Однако я настоятельно рекомендую использовать для этого WebAPI, поскольку он лучше подходит для сценариев API.

person War    schedule 17.05.2010
comment
Уорди, может быть, ты упустил идею вопроса? Текущий ASP.NET MVC 2 имеет асинхронный API, основанный на подходе с магической строкой. Интересно, пытался ли кто-нибудь создать строго типизированную альтернативу - person Alexey Zakharov; 20.05.2010
comment
ты все еще хочешь получить ответ на этот вопрос? - person War; 11.02.2016
comment
все равно обновил мой ответ ... что-то должно быть помечено как ответ для этого - person War; 11.02.2016