Обновление пользовательского интерфейса после асинхронных вызовов WebMethod

Привет!

У меня есть WebService, который содержит WebMethod, который выполняет некоторую работу и возвращает логическое значение. Работа, которую он выполняет, может занять некоторое время, а может и не занять, поэтому я бы назвал ее асинхронной.

[WebService(Namespace = "http://tempuri.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class MyWebSvc : System.Web.Services.WebService
{
    [WebMethod]
    public bool DoWork()
    {
        bool succ = false;

        try
        {
            // do some work, which might take a while
        }
        catch (Exception ex)
        {
            // handle
            succ = false; 
        }

        return succ;        
    }
}

Этот веб-сервис существует на каждом сервере веб-фермы. Итак, чтобы вызвать метод DoWork () на каждом сервере, у меня есть библиотека классов для этого на основе списка URL-адресов серверов:

static public class WebSvcsMgr
{
    static public void DoAllWork(ICollection<string> servers)
    {
        MyWebSvc myWebSvc = new MyWebSvc();

        foreach (string svr_url in servers)
        {
            myWebSvc.Url = svr_url;
            myWebSvc.DoWork();
        }
    }
}

Наконец, это вызывается из веб-интерфейса в событии asp: Button click, например:

WebSvcsMgr.DoAllWork(server_list);

Для статического метода DoAllWork (), вызываемого веб-формой, я планирую сделать это асинхронным вызовом через IAsyncResult. Однако я хотел бы сообщить об успешном / неудачном выполнении DoWork () WebMethod для каждого сервера в ферме по мере возврата результатов. Что было бы лучше всего в сочетании с UpdatePanel? GridView? Этикетки? И как это может быть возвращено статическим вспомогательным классом в веб-форму?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
1 683
2

Ответы 2

Литерал в условной панели обновления подойдет.

<asp:UpdatePanel ID = "up" runat = "server" UpdateMode = "Conditional">
   <ContentTemplate>
     <asp:Literal ID = "litUpdateMe" runat = "server" />
   </ContentTemplate>
</asp:UpdatePanel>

Имеет ли смысл вызывать MyWebSvc.DoWork () асинхронно из WebSvcsMgr.DoAllWork () или, скорее, вызывать WebSvcsMgr.DoAllWork () асинхронно из веб-формы?

Bullines 30.09.2008 21:12

Вероятно, веб-форма, если пользователь не взаимодействует с ней или нет обратной связи с пользователем, необходима.

craigmoliver 01.10.2008 03:16

Я имею в виду метод, а не веб-форму

craigmoliver 01.10.2008 03:17

Асинхронные страницы полезны в сценариях, когда вам нужно асинхронно вызывать методы веб-службы.

Другие вопросы по теме