Windows Service в сравнении с Winforms / WPF настольное приложение - PullRequest
1 голос
/ 22 октября 2010

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

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

Ответы [ 4 ]

5 голосов
/ 22 октября 2010

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

1 голос
/ 22 октября 2010

Чтобы отладить службу Windows непосредственно в Visual Studio, добавьте этот фрагмент кода в свой класс конструктора служб в разделе Main ().

Shared Sub Main()
    #If DEBUG Then
        Dim service As New YourServiceClass
        service.Execute()
        System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite)
    #Else
        Dim ServicesToRun() As System.ServiceProcess.ServiceBase

        'More than one NT Service may run within the same process. To add
        'another service to this process, change the following line to
        'create a second service object. For example,

        ServicesToRun = New System.ServiceProcess.ServiceBase() {New YourServiceClass}

        System.ServiceProcess.ServiceBase.Run(ServicesToRun)

    #End If
End Sub

Это код vb.net, но C # должен сделать то же самое.Я управлял несколькими службами Windows, как это без каких-либо проблем.Если отладка должна предшествовать хеш.

1 голос
/ 22 октября 2010

Я только что сделал свой первый сервис и заметил, что их не так просто отлаживать или тестировать.Вы можете установить и запустить службу, а затем подключить отладчик к процессу.Или вы можете запустить службу как консольное приложение, просто чтобы проверить функциональность.Примерно так http://tech.einaregilsson.com/2007/08/15/run-windows-service-as-a-console-program/

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

0 голосов
/ 22 октября 2010

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

Я признаю, что это не такраспространенный сценарий, но я работал над проектом, в котором служба предоставляла элементы управления WPF.

Причиной этого является изоляция Session0 , описанная здесь .

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