Служба Windows или Запланированная задача, который мы предпочитаем?

Вам удалось создать таблицу с именами столбцов в нижнем регистре. Как вы уже знаете, это вызывает проблемы, поскольку Oracle по умолчанию преобразует все имена (для таблиц, столбцов и т. Д.) В верхний регистр.

У вас есть два варианта:

  1. Бросить таблицу и воссоздать ее с заглавными именами.

  2. Используйте двойные кавычки вокруг имен столбцов, чтобы Oracle не мог преобразовать их в верхний регистр:

select * from jashan.student where "name1"=? and "password"=?

Или когда вы помещаете его в Java :

PreparedStatement stmt = con.prepareStatement("select * from jashan.student where \"name1\"=? and \"password\"=?");

В любом случае, одинарные кавычки вокруг имен столбцов неверны.

19
задан Jon Seigel 6 March 2010 в 04:49
поделиться

10 ответов

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

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

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

21
ответ дан 30 November 2019 в 02:34
поделиться

Зависит от того, насколько регулярно он вам нужен.

Если его что-то, что должно выполняться каждые 60 секунд в течение всего дня, я бы пошел со службой Windows.

Если это то, что нужно запускать только один раз в день, я бы пошел с запланированной задачей

Что-нибудь посередине. .. Используй свое суждение :)

13
ответ дан 30 November 2019 в 02:34
поделиться

Начните с консольного приложения. Отделите логику, которая будет находиться внутри вашего цикла loop-process-sleep, тогда вы сможете легко переключаться между ними - даже в одном и том же EXE-файле.

Я сделал это. Мы могли бы вызвать:

ourservice.exe -console

, и он просто запустится. Или

ourservice.exe -install

, и он будет установлен как служба:)

Я бы пошел по расписанию в 99% случаев. Если вам нужно все время запускать, прослушивать порты, смотреть папку (возможно - можно делать каждые 10 секунд без проблем), а затем делать это в службе. Если все, что вы делаете, это просыпаетесь, выполняете некоторую обработку (или нет), а затем возвращаетесь в спящий режим: используйте планировщик. Это проще, чище (управление памятью, особенно если вы используете COM-объекты, и действительно, если вы используете MAPI), а также варианты (еженедельно,

7
ответ дан 30 November 2019 в 02:34
поделиться

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

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

2
ответ дан 30 November 2019 в 02:34
поделиться

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

2
ответ дан 30 November 2019 в 02:34
поделиться

Избегайте службы, если только вы не должны ее использовать.

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

Лично я нахожу оскорбительным то, что другие люди выполняют свои процессы 24/7 на МОЕМ компьютере, когда это совершенно не нужно. Это МОЯ работа, которую они используют. Я отключаю все ненужные фоновые службы.

2
ответ дан 30 November 2019 в 02:34
поделиться

Это зависит от того, что вы имеете в виду периодически? Каждую секунду, каждую минуту, каждый час, каждый день?

Я бы сказал, что чем чаще выполняется задача, тем больше предпочтение отдается службе Windows.

1
ответ дан 30 November 2019 в 02:34
поделиться

«Зависит», но я обычно предпочитаю запланированные задания, для простоты:

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

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

Что-то, что должно выглядеть как готовый продукт, а клиент должен установить себя, я бы пошел с Служба Windows.

И расписание также является проблемой. Минимальное расписание для запланированного задания составляет одну минуту. Что-нибудь ниже этого, вам либо нужно использовать службу Windows, либо встроить цикл в вашу работу.

1
ответ дан 30 November 2019 в 02:34
поделиться

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

1
ответ дан 30 November 2019 в 02:34
поделиться

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

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

2
ответ дан 30 November 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: