2016-11-23 9 views
0

Я разработчик .net, работающий в веб-приложениях, и за последние несколько месяцев начал работать над приложениями Windows, и одно приложение нужно запускать каждый день в 12 часов, чтобы я написал веб-сервис с помощью Google, и он отлично работает ,Как окна службы работают по сравнению с планировщиком задач или диспетчером задач?

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

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

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

Теперь мои вопросы:

  1. Что касается использования оперативной памяти?

    Я знаю, что службы используют ОЗУ. Но учитывая, что мой код тяжелый, пусть рассмотрим 10 Мб. Файл fore .exe составляет около 10 МБ или более. Таким образом, при запуске службы он использует 10 мб оперативной памяти всего 24 часа или он просто создаст только планировщик в сервисе, который будет довольно небольшим, а затем загрузит код обслуживания, когда будет достигнуто время?

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

Я прав? Планировщик также работает все 24 часа проверки времени?

  1. Если у меня есть 2 услуги с одним установщиком. Теперь будет установлено 2 сервиса. Но я хотел бы знать, имеет ли обе службы 10 МБ каждый, размер которого составляет 20 мб .exe, и когда обе службы запускаются, размер каждого из них составляет 10 мб каждый (учитывая, что он будет относить относительный служебный код) или 20 мб каждый (учитывая это будут облагать оба служебных кода, потому что они находятся в одном и том же exe).

Надеясь на некоторые ценные ответы.

Заранее спасибо.

+0

Если вам нужен какой-то код для запуска всего один раз в день - вам вообще не нужна услуга, просто используйте планировщик задач Windows для запуска вашего .exe (консольного приложения). – Evk

+0

Да. Я это понимаю. Но это не мой вопрос. Мой вопрос не тот, который я должен выбрать. Мой вопрос в том, как они работают по-разному в терминах памяти, ОЗУ и логики выполнения кода. –

ответ

0

Все зависит от вашей реализации.

Это, как работает служба окон:

  1. Установщик регистрирует объект службы Windows
  2. Объект службы начинает yourservice.exe
  3. В yourservice.exe вы должны выполнять служебные команды (например..: OnStart, OnStop)
  4. Теперь это зависит от вас, что делать в этих методах
  5. yourservice.exe работает до тех пор, как служба работает

Мои рекомендации:

  1. Упаковать существующую логику в библиотеку
  2. Запустите таймер в сервисе OnStart (таймер почти не нуждается в ресурсах)
  3. В обратном вызове таймера создается ваша логика с использованием библиотеки (теперь выделены ваши 10 мегабайт)
  4. Очистите все после завершения работы (10 мегабайт освобождаются, если вы ничего не используете)

На шаге 3 вы можете запрограммировать свою логику дважды, которая будет использовать 2x 10 мегабайт, тогда, конечно.

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

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