sunil kumar meena Ответов: 1

Как мы можем преобразовать приложение winform в веб-приложение, сохраняя при этом ту же производительность?


Мы работаем над приложением windows form, и все работает хорошо. Ни одно руководство не решило перенести это приложение в веб-приложение (одностраничное с использованием MVC framework). В приложении windows у нас есть процесс, называемый генерацией, этот процесс требует около 40 входных наборов и генерации данных для выбранного диапазона дат.

В настоящее время для генерации данных за 1 месяц требуется около 12-15 секунд. Только из-за этого процесса мы не уверены, сможем ли мы на самом деле перенести его или нет. Потому что как мы можем получить ту же производительность в интернете, что и в Windows?

Подробнее о процессе генерации:
Этот процесс запускается на avrage 20 раз в день одним пользователем, и у нас есть aorund 400 пользователей (так как это внутренний проект для разных команд).

Когда пользователь нажимает кнопку генерации, мы получаем данные из базы данных (мы не можем кэшировать их, потому что в каждую минуту данные меняются) и передаем их в процесс генерации. Затем этот цикл процесса oved выбранных диапазонов дат и генерировать один день данных и добавить этот набор в окончательный выходной набор. Этот процесс генерации, если он полон концепций ООП.

Проблема:
То есть, скажем, 100 пользователей запускают процесс генерации сразу, в том числе winform applictaion каждый запрос будет выполняться на компьютере пользователя, но в webapplictaion все 100 запросов будут выполняться на одном сервере, так что это ухудшит производительность приложения.

Есть ли какой-нибудь способ, чтобы мы могли получить такую же производительность, как и в приложении winform? Можем ли мы написать этот процесс генерации в любом JS, который поддерживает такого рода концепции ООП, или мы можем непосредственно использовать существующий код?

Что я уже пробовал:

Я попытался написать простой код в Angular с существующим входным набором (40). Кроме того, все время, пока браузер зависает, оригинальный процесс не может быть написан в angular, так как оригинальный процесс полон ссылок между наборами.

Garth J Lancaster

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

sunil kumar meena

Спасибо за ответ, значит, вы хотите сказать, что в Интернете этого сделать невозможно?

Garth J Lancaster

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

sunil kumar meena

спасибо за предложение, я постараюсь найти способ сохранить процесс генерации отдельно.

1 Ответов

Рейтинг:
7

Dave Kreskowiak

Как сказал Гарт, это тот случай, когда ваш механизм обработки данных полностью отделен от ваших веб-приложений и приложений Windows Forms. Я бы, вероятно, отправил задания со всеми необходимыми входными данными в очередь сообщений и имел бы несколько серверов на задней стороне, вытягивающих задания из этой очереди для обработки. Результаты будут отправлены в очередь сообщений специально для получения результатов.

С помощью этой настройки вы можете иметь любое количество различных типов приложений, Windows Forms, WPF, Web, mobile,..., отправляя задания без какого-либо из них беспокоиться о реализации обработки. Вы получаете один и тот же механизм обработки последовательно во всех приложениях, не записывая один и тот же код снова и снова.

Поместите механизм обработки в облако, например Azure, и вы сможете запускать машины механизма обработки по требованию по мере необходимости, чтобы обрабатывать увеличивающуюся нагрузку на задания и завершать работу, когда нагрузка на задания уменьшается.


sunil kumar meena

то есть вы хотите сказать, что если я помещу этот процесс генерации в облако и несколько пользователей будут получать от них данные, я все равно смогу получить хорошую производительность?

Dave Kreskowiak

Это не обязательно должно быть в облаке. Вам просто нужно где-то поставить достаточно серверных лошадиных сил. Если это происходит в облаке, код, который вы пишете, будет отличаться от того, как если бы у вас просто были серверы в режиме ожидания в локальной среде.