веб-приложение для консольного приложения? - PullRequest
3 голосов
/ 06 октября 2011

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

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

Каков наилучший способ сделать это, сводя к минимуму изменения, внесенные в код?

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

Или, может быть, конвертировать веб-приложение в консольное, если это действительно возможно?

Есть ли прямой способ сделать это?

Спасибо

Ответы [ 2 ]

1 голос
/ 06 октября 2011

Во-первых, убедитесь, что «конкретная задача» исключена из веб-приложения, поэтому она находится в своем собственном .NET-проекте.Даже если этот проект содержит только один класс, который вы «разделяете» между веб-интерфейсом пользователя и самой задачей.

Затем вы можете создать еще один «проект-обертку», который будет вызывать этот новый проект по вашему желанию.Консольное приложение вполне может выполнить эту работу - вы можете запустить ее с помощью запланированной задачи - или вы можете предпочесть использовать службу Windows.

0 голосов
/ 06 октября 2011

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

Если это сделано так, вам просто нужно обратиться к проекту библиотеки классов.Если, с другой стороны, у вас есть вся логика в проекте веб-приложения, возможно, нет быстрого способа сделать это, поскольку вы не должны создавать экземпляры классов Page вручную (ну, вы можете сделать это также, но этонеуклюже и не рекомендуется).Так что в этом случае вы должны создать проект библиотеки классов и переместить туда всю логику, которую вам нужно использовать в консольном приложении.Я предполагаю, что для этого потребуется немало рефакторинга.

...