ASP.NET MVC Асинхронный контроллер - PullRequest
1 голос
/ 09 декабря 2011

Я пытаюсь следовать примеру на MSDN.com для контроллеров Async. У меня есть несколько вопросов. Вот ссылка на запись: http://msdn.microsoft.com/en-us/library/ee728598%28VS.100%29.aspx

А вот код, на который я ссылаюсь:

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
    });
}
}

Мой первый вопрос таков: должен ли я иметь несколько методов в своем сервисе? Например, я взял свой метод с именем abc в контроллере и создал из него два новых метода с именами abcAsync и abcCompleted. Должен ли я сделать что-то подобное в моем сервисе? Это выглядит так в соответствии с примером, но пример MSDN ничего не говорит об изменении моего сервиса.

Следующий вопрос, как выглядит этот синтаксис, если мой сервис принимает несколько параметров?

Спасибо за помощь.

1 Ответ

0 голосов
/ 10 декабря 2011

Должен ли я также использовать несколько методов в моем сервисе?

Это будет зависеть от того, что вы подразумеваете под сервисом .Например, если у вас есть веб-служба, которую вы импортировали с использованием svcutil.exe , вы можете указать переключатель /async, который будет генерировать как синхронные, так и асинхронные сигнатуры методов для всех методов при создании прокси.На стороне службы вам не нужно иметь несколько методов.

как выглядит этот синтаксис, если мой сервис принимает несколько параметров?

Если вы использовалиsvcutil.exe для создания клиентского прокси с переключателем /async, в сгенерированном клиентском прокси подпись метода будет соответствовать подписи на сервере.Поэтому, если у вас есть несколько аргументов для метода сервера, у вас также будет несколько аргументов для метода клиента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...