Лучшая практика для большого количества математики за запрос ASP.NET - PullRequest
0 голосов
/ 06 июня 2018

Я планирую создавать объекты (классы) для выполнения математических вычислений, основанных на вводе пользователя.У меня такое ощущение, что я могу загрузить анимированный GIF-файл ожидания на выходной URL-адрес (страницу), затем определить новый класс, задать параметры, запустить поток и затем перезагрузить пустую страницу, когда закончите.Разве в ASP.NET уже не было таких вещей, как анимированные GIF-файлы ожидания?Кроме того, по умолчанию, не будет ли GC (сборка мусора) закрытым объектом (классом) после этого?Таким образом, сервер ASP будет просто иметь несколько потоков, если будет несколько пользователей.Просто несколько вопросов, так как большая часть моего опыта - это WinForms.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Да, это правильно.Сделайте всю обработку внутри button_click.Класс создается для вас на странице.Asp.net будет обрабатывать все потоки для одновременных пользователей.

0 голосов
/ 06 июня 2018

Хотя вы еще не упомянули, какой веб-фреймворк вы используете, лично я бы выполнил этот тип расчета за запросом AJAX.Используйте элементы управления и для обеспечения обратной связи с пользователем (анимация wait-GIF) до завершения запроса.Это функции, которые уже включены в стандартный сайт ASP.NET.НЕ создавайте свои собственные потоки в приложении ASP.NET.ASP.NET уже многопоточный и способен обрабатывать одновременные запросы к вашему приложению.Ваш пример HTML-кода может выглядеть примерно так:

 <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
             html code goes here.  somewhere you might have a button which triggers a postback that will trigger the start of your math computations...
             <asp:LinkButton ID="Button1" runat="server" OnClick="Button1_Click">Start Computations</asp:LinkButton>
        </ContentTemplate>
    </asp:UpdatePanel>    

где-то еще на странице, где вы включаете свой тег updateprogress.Вы можете видеть, что я связал этот тег с идентификатором панели обновления, который запускает обратную передачу.

<asp:UpdateProgress DisplayAfter="100" runat="server" ID="udp" AssociatedUpdatePanelID="UpdatePanel1">
    <ProgressTemplate>
        put your animated gif here using an <img /> tag
    </ProgressTemplate>    
</asp:UpdateProgress>

Используйте серверный элемент управления для повторного отображения вычисленного текста на странице после его вычисления.

     <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional">
            <ContentTemplate>
                 <asp:Label id="lblResults" runat="server" />
            </ContentTemplate>
        </asp:UpdatePanel>    

и код для нажатия кнопки

protected void Button1_Click(object sender, EventArgs e)
{
   //do your computations here
   lblResults.Text = "the answer";
   UpdatePanel2.Update();
}

Удачи!

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