Где я могу найти подробное представление жизненного цикла службы Windows, как разработано в.NET?

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

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

Вместо того, чтобы использовать Сервер. HtmlEncode необходимо посмотреть на более новое, больше завершенное библиотека Anti-XSS от команды Microsoft ACE.

5
задан Community 23 May 2017 в 12:15
поделиться

1 ответ

Служба Windows фактически представляет собой приложение с несколькими дополнительными методами, доступными диспетчеру служб для управления им, а именно Stop () , Start () , Pause () , Continue () (или эквиваленты).

Когда вызывается Start, создается домен приложения, инициализируется класс обслуживания и Start ( ) метод вызван. При остановке вызывается метод Stop () до того, как домен приложения выгружается из памяти.

Вы можете увидеть это с помощью диспетчера задач. Приложение не существует в памяти до вызова start и исчезает после завершения Stop.

Поэтому я считаю, что ответ на ваш вопрос о жизненном цикле лежит в жизненном цикле стандартного приложения .NET, будь то командная строка , winforms или asp.net.

Я бы также посоветовал, если вы зависите от метода Dispose, то, вероятно, где-то в вашем проекте есть недостаток, в большинстве случаев ресурсы, очищенные с помощью Dispose, должны удаляться чаще, чем когда узел службы вызывает ваш компонент в Dispose. Большинство служб - это практически механизм для реагирования на какое-либо системное событие, в тех случаях, когда это событие исходит от неуправляемого ресурса, вы, вероятно, захотите только захватить ресурс OnStart и освободить его OnStop в ситуациях, когда событие происходит не из неуправляемого space, то вы, вероятно, захотите захватить и освободить неуправляемые ресурсы более типичным способом JustInTime, когда вы захватываете их как ресурс только тогда, когда они вам нужны, и выпускаете их (с помощью их метода Dispose), как только сможете. Для дальнейшего чтения ознакомьтесь с Когда и как использовать dispose и .Net dispose pattern

8
ответ дан 14 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

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