Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Сервис


Автор: Afrodiziac 23.3.2008, 10:11
Задача такова, нужно написать "нечто", что брало бы сообщения с сервера (собственный формат), а также контактную информацию о пользователях и отправляло бы ее им на почту или мобильный телефон (пейджер и т.п.).

Существуют ли готовые решения? 

Для начала решил что писать буду сервис, отправляющий по smtp письма на почту, а с мобильником разберусь позже smile, (там через шлюзы надо отправлять, как я понял).

Работа с сервисом оказалась не проста, во первых нет возможности отлаживать. Во-вторых непонятные сообщения выходят, если пытаюсь его запустить...
user posted image
Не ясно каков "критерий" использования данного сервиса... :(

И вообще, может быть я велосипед придумываю?

Автор: Afrodiziac 23.3.2008, 11:16
Цитата(Afrodiziac @  23.3.2008,  10:11 Найти цитируемый пост)
нет возможности отлаживать


Оказывается можно smile

To debug a service
  • Install your service. For more information, see How to: Install and Uninstall Services.
  • Start your service, either from Services Control Manager, Server Explorer, or from code. For more information, see How to: Start Services.
  • In Visual Studio, choose Processes from the Debug menu. The Processes dialog box appears. 
  • Click Show system processes.
  • In the Available Processes section, click the process for your service, and then click Attach.

Добавлено через 14 минут и 20 секунд
Допустим служба умеет отправлять письма и брать сообщения с сервера. Но нужно сделать так чтобы рассылку можно было настраивать, то есть человеку могли бы приходить только некоторые сообщения (error, warning), а также неотправленные сообщения сохранялись в БД. Понятно что служба должна знать об этих настройках, но проблема в том что в сервисе нет возможности создавать интерфейс взаимодействия с пользователем :(

msdn
"The Windows service classes supported by the .NET Framework do not support interaction with interactive stations, that is, the logged-on user. The .NET Framework also does not include classes that represent stations and desktops. If your Windows service must interact with other stations, you will need to access the unmanaged Windows API."

Можно решить эту проблему, путем создания отдельного приложения, которое бы взаимодействовало с сервисом. Тогда возникает вопрос каким образом будут взаимодействовать сервис и это приложение? Сокеты? или общая БД? Может как то на прямую можно?

Автор: Afrodiziac 23.3.2008, 11:52
Нашел немного статей...
http://www.codeproject.com/KB/WCF/AppWatcher.aspx
http://www.codeproject.com/KB/install/csharpsvclesson1.aspx
http://www.codeproject.com/KB/dotnet/simplewindowsservice.aspx

Оказывается
"With Windows Vista on board the picture has slightly changed and in an unsafe manner written services running with the Flag "Allow service to interact with desktop" will not work at all."

http://www.microsoft.com/whdc/system/vista/Vista_Services.mspx

Почитаю выложу решение.
Но вопос о велосипеде еще актуален smile

Автор: Afrodiziac 23.3.2008, 12:30
Цитата(Afrodiziac @  23.3.2008,  11:16 Найти цитируемый пост)
Оказывается можно 

И все таки нельзя :(

user posted image

нельзя сделать Attach

Автор: Afrodiziac 24.3.2008, 14:55
Почему в сервисе нет возможности создавать UI окна?

Автор: Kamil 3.4.2008, 10:33
Отлаживать сервис можно. Вам не удается аттачиться к процессу, потому что сервис не запущен. Сперва вам надо разобраться с проблемой, почему ваш сервис сразу останавливается.

Автор: mr.DUDA 3.4.2008, 12:16
Останавливается либо потому что ему нечего делать (ни одного потока не создано в OnStart), либо ошибка при старте (см. системный event log тогда).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)