2009-09-29 1 views
0

У меня есть проект winfs vb.net 2.0, который заполнен всеми видами бизнес-отчетов (сгенерированными вызовами взаимодействия с Excel), которые могут запускаться «на -спрос". Некоторые из этих отчетов фильтруют множество данных и занимают много времени, особенно на наших старых машинах по всему офису.Как создать запрос отчета с клиентских компьютеров, который будет запущен на доступном сервере

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

Как я могу создать такое изменение? Все наши отчеты имеют разные параметры, и я не могу понять, как с этим бороться. Нужно ли каждый генератор наследовать от класса «RemoteReport», который работает? Нужно ли использовать сервис на одном из наших серверов для прослушивания этих запросов?

ответ

3

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

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

После этого сервер сможет запустить отчет и отправить файл по электронной почте пользователю.

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

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

+0

Хорошая конструкция решения для проблемы – NotMe

+0

Это похоже на то, что я вижу для нас. Самая большая проблема, которую я вижу, состоит в том, что у нас есть всевозможные аргументы, которые передаются в генераторы отчетов - включая аррайалистов. Как сохранить данные такого типа в столбце «аргумент» базы данных? – Jeffrey

+0

, если вы используете SQL Server, существует тип данных, называемый XML, который, если вы используете VB.NET, должен иметь возможность инкапсулировать параметры отчета в объект, а затем сериализовать его и вставлять в этот столбец –

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^