Библиотека Рефераты Курсовые Дипломы Поиск
Библиотека Рефераты Курсовые Дипломы Поиск
сделать стартовой добавить в избранное
Кефирный гриб на сайте www.za4et.net.ru

Компьютеры, Программирование Компьютеры, Программирование

Программирование служб: подробности

Браслет светоотражающий, самофиксирующийся, желтый.
Изготовлены из влагостойкого и грязестойкого материала, сохраняющего свои свойства в любых погодных условиях. Легкость крепления позволяет
66 руб
Раздел: Прочее
Фонарь желаний бумажный, оранжевый.
В комплекте: фонарик, горелка. Оформление упаковки - 100% полностью на русском языке. Форма купола "перевёрнутая груша" как у
87 руб
Раздел: Небесные фонарики
Наклейки для поощрения "Смайлики 2".
Набор для поощрения на самоклеящейся бумаге. Формат 95х160 мм.
19 руб
Раздел: Наклейки для оценивания, поощрения

Сергей Холодилов Наша служба и опасна и трудна И на первый взгляд как будто не видна Ю. Энтин В статье описаны некоторые детали, относящиеся к программированию служб Wi dows /2000/XP. Она не претендует на полноту или уникальность. Кое-что не охвачено, многое (хотя и не всё) из охваченного вы сможете найти в MSD или другой литературе. Если вы написали свою первую службу и хотите двигаться дальше, эта статья вам поможет. Для понимания написанного ниже вы должны быть знакомы со службами. Глубоких знаний не потребуется, достаточно представлять себе архитектуру службы (с точки зрения программиста) и помнить примерное предназначение нескольких API-функций. Большая часть содержащихся в статье утверждений описывает реакцию Wi dows на какие-то действия со стороны службы. Полноценная проверка таких утверждений не представляется возможной. Тем более что некоторые из них не документированы. Я поступил так: В Wi dows 2000 Server SP1 я постарался проверить всё. В других версиях только кое-что. Возможно, некоторые полученные факты я истолковал неверно. Но пока что ошибок я не нашёл. Если утверждение есть в MSD и/или другом источнике, я проверял его два-три раза, если всё сходилось, считал его верным. Если утверждение противоречит тому, что написано в MSD и/или других источниках, продолжительность тестирования зависела от его важности (с моей точки зрения). В этом случае в статье указаны и мои результаты, и информация из MSD или других источников. Если я считаю утверждение важным, кроме этого указано, какие моменты могли быть упущены во время тестирования. Эта версия статьи не содержит важных спорных утверждений. Если утверждение не встретилось мне ни в одном источнике, я поступал аналогично предыдущему пункту. Общие особенности служб В этой части статьи разобраны вопросы, имеющие непосредственное отношение к любой службе. Разделение на «непосредственные» и «косвенные» условно и субъективно. Принцип, которого я придерживался, таков: если проблема/возможность свойственна службам из-за особенностей их архитектуры, она описана в этой части. Иначе – в следующей. Установка/удаление Работа с любой программой начинается с установки и заканчивается удалением. Службы – не исключение. Отличие состоит в том, что при установке службу необходимо зарегистрировать. Можно, конечно, возложить эту задачу на инсталлятор, но, по-моему, правильней и проще писать службы, умеющие устанавливаться/удаляться в полуавтоматическом режиме. ПРИМЕЧАНИЕ На всякий случай: некоторые умные люди, которые знают, как правильно писать инсталляторы, считают, что в этом вопросе я заблуждаюсь. Например, так: i mai (i argc, CHAR argv[]) {  // Если в командной строке что-то есть -  // предположительно, запускает пользователь.  if (argc == 2)  {  // ls ricmp - сравнение без учёта регистра.  if (ls rcmpi(argv, EX ("/i s all"))==0)  {  CmdLi e::I s all();  }  else if (ls rcmpi(argv, EX ("/u i s all"))==0)  {  CmdLi e::U i s all();  }  else  {  CmdLi e::DisplayHelp();  }  re ur 0;  } . ПРИМЕЧАНИЕ EX () и mai – для поддержки U icode (а можно сказать «для поддержки A SI»). Подробнее в разделе «U icode».

CmdLi e – пространство имён. Я их нежно люблю и часто использую. Вообще-то, то, что в командной строке «что-то есть» ничего не доказывает, см. «Мелочи». Функции, выполняющие собственно установку/удаление, выглядят примерно так: void CmdLi e::I s all() {  открываем SCM (Ope SCMa ager)  создаём службу (Crea eService)  закрываем всё, что открыли } void CmdLi e::U i s all() {  открываем SCM (Ope SCMa ager)  открываем службу (Ope Service)  удаляем службу (Dele eService)  закрываем всё, что открыли } Отсчёт пошёл На некоторых этапах выполнения служба должна выполнить определённые действия за определённый срок. В MSD с разной степенью конкретности перечислены пять требований. В книге Джеффри Рихтера и Джейсона Кларка «Программирование серверных приложений в Wi dows 2000» приведено шестое. Ниже перечислены сами требования и мои комментарии к ним. Служба должна вызвать S ar ServiceC rlDispa cher не позже, чем через 30 секунд после начала работы, иначе выполнение службы завершится. Практика подтвердила. Кроме того, в раздел Eve Log’а Sys em будет добавлена запись об ошибке (источник – «Service Co rol Ma ager»). Если служба запускается вручную из программы Services, пользователь получит сообщение (MessageBox). Функция ServiceMai должна вызвать Regis erServiceC rlHa dler немедленно. Что будет в противном случае – не указано. Несоблюдение этого правила – один из случаев «нарушений во время инициализации» (термин мой), описанных ниже в этом же разделе. Функция ServiceMai должна вызвать Se ServiceS a us первый раз «почти сразу» после Regis erServiceC rlHa dler, после чего служба должна продолжать вызывать её до тех пор, пока инициализация не закончится. Неправильное использование Se ServiceS a us – второй случай «нарушений во время инициализации». При обработке сообщения служба должна вернуть управление из функции Ha dler в течение 30 секунд, иначе SCM сгенерирует ошибку. Практика подтверждает, запись в Eve Log добавляется. Но никаких репрессивных действий по отношению к службе я не дождался. При получении сообщения SERVICE CO ROL SHU DOW служба должна закончить работу за время, не превышающее число миллисекунд, указанное в параметре Wai oKillService imeou ключа HKLMSys emCurre Co rolSe Co rol, иначе будет завершена принудительно. Практика подтвердила. После завершения работы в качестве службы (то есть после посылки службой уведомления об этом) процессу даётся 20 секунд на очистку/сохранение/ещё что-то, после этого процесс завершается. Подробнее в разделе «Корректное завершение». Если ваша служба быстро инициализируется и мгновенно обрабатывает сообщения, в результате чего автоматически удовлетворяет всем пунктам, вам повезло. Если нет, можно использовать несколько потоков. Например, так: Дополнительный поток выполняет необходимую инициализацию, а основной поток вызывает S ar ServiceC rlDispa cher. Я не смог придумать, зачем делать что-либо до вызова Regis erServiceC rlHa dler, но если надо, можно сделать так же, как в (1). Один из потоков посылает уведомления о продвижении процесса, второй выполняет инициализацию. Функция первого потока может быть такой: DWORD WI API Se dPe di g(LPVOID dwS a e) {  sS a us.d

wCheckPoi = 0;  sS a us.dwCurre S a e = (DWORD) dwS a e;  sS a us.dwWai Hi = 2000;  for (;;)  {  if (Wai ForSi gleObjec (eSe dPe di g, 1000)!=WAI IMEOU ) break;  sS a us.dwCheckPoi ;  Se ServiceS a us(ssHa dle, &sS a us);  }  sS a us.dwCheckPoi = 0;  sS a us.dwWai Hi = 0;  re ur 0; } Уведомления посылаются с помощью функции Se ServiceS a us. sS a us – глобальная переменная типа SERVICE S A US, описывающая состояние службы, в dwS a e передаётся состояние, о котором необходимо сообщать, eSe dPe di g – событие, установка которого означает окончание работы этого потока. Забавно, что при таком подходе для служб, запускаемых вручную, видимый результат не меняется (см. ниже о нарушениях во время инициализации). Идея в том, что, если обработка сообщения может затянуться, функция Ha dler инициирует её и завершается, не дожидаясь окончания. Если рабочий поток службы в цикле ожидает каких-то событий, обработку может выполнить он, Ha dler должна только проинформировать его о приходе сообщения, если рабочий поток постоянно занят, можно породить ещё один поток. При подобной реализации необходимо учесть, что следующее сообщение может прийти в течение обработки предыдущего, то есть до того, как служба пошлёт уведомление об окончании обработки. С помощью Services этого не сделать, но пользователь может использовать утилиту e .exe (синтаксис запуска: e команда имя службы) или написать свою. Ограничения, накладываемые требованиями (5) и (6) обойти не удаётся. Но, в отличие от (5), в (6) момент посылки уведомления о завершении регулируете вы. Поэтому можно выполнять всю необходимую очистку/сохранение/ещё что-то заранее. Теперь о «нарушениях в процессе инициализации». Варианты нарушений: Задержка перед вызовом Regis erServiceC rlHa dler. Задержка перед первым вызовом Se ServiceS a us. Слишком большие паузы между вызовами Se ServiceS a us. Не меняется поле dwCheckPoi структуры, передаваемой Se ServiceS a us. Во всех перечисленных случаях реакция системы будет одинаковой. А именно: A) Служба запускается автоматически. Минуты через две (если за это время «нарушение» не прекратится и служба не начнёт работать нормально) в Eve Log-е появится запись « he . service hu g o s ar i g.» Если хоть одна служба «повисла», пользователь получит сообщение «A leas o e service or driver failed duri g sys em s ar up. Use Eve Viewer o exami e he eve log for de ails.» Такое ощущение, что это сообщение появляется в тот момент, когда запускается первая «зависшая» служба (сам понимаю, что звучит нелогично, но что делать.). B) Служба запускается вручную из Services. Минуты три система подождёт. Появится сообщение об ошибке. В программе Services в столбце S a us служба будет помечена словом «S ar i g». В любом случае служба, в конце концов, запустится. Эта информация не очень важна (и, кстати, не документирована), так как даже таких нарушений лучше не допускать. Но представлять, что будет, если по каким-то причинам, ваша служба слегка притормозит, полезно. Кто будет работать? Этот вопрос возник у меня, когда я писал свою первую службу. Если чётче сформулировать, то звучит он так: который из потоков можно использовать в качестве рабочего? На первый взгляд задействовано три потока: один исполняет mai /Wi Mai , второй – ServiceMai , третий – Ha dler (не совсем так, см.

Может быть, в этом объяснение старого присловья, что об усопшем не следует говорить дурного. Если мы истинно, во всей истине и правде, сказали усопшему: "Я отпускаю тебя. Я встану перед Богом со своим прощением, пусть ничто, что было между нами, не стоит на твоем пути к полноте и вечной радости", то как можем мы вернуться назад, припомнить зло, припомнить горечь? Это не значит, что мы закрываем глаза на реальность, потому что если действительно в жизни человека было зло, если действительно было что-то неладное между нами и усопшим, то тем более должны мы молить Бога освободить обоих - и нас самих и усопшего, - чтобы быть в состоянии и услышать слова прощения "Иди с миром", и произнести эти слова со все нарастающей глубиной понимания, все нарастающим сознанием свободы. Душа и тело Теперь, говоря о проблеме реальности смерти, мы обратимся к различным связанным с ней службам Православной Церкви. Поскольку каждый может прочесть их или знает на опыте, я не буду разбирать их подробно, а выделю некоторые характерные черты

1. Организация и несение караульной службы

2. Устройство парков и внутренняя служба в них

3. Воспитательная работа с личным составом в период подготовки к воинской службе (Виховна робота з особовим складом у період підготовки до несення служби військ)

4. Организация газодымозащитной службы в гарнизонах пожарной охраны

5. Налогообложение в условиях рыночной экономики (на примере предприятия ООО "Служба быта")

6. Правовое регулирование государственной службы
7. Федеральная государственная служба в РФ
8. Государственная служба Приказной системы управления

9. Понятие государственной службы и ее виды

10. Муниципальная служба

11. Автоматизированные информационные технологии формирования, обработки и представления данных в налоговой службе

12. Вопросы обеспечения прав человека в деятельности Службы судебных приставов

13. Биография Вильяма Шекспира (Shakespeare William), подробный обзор его творчества. Сюжет и содержание произведения "Ромео и Джульетта"

14. Подробная хронология Великой Отечественной Войны

15. Internet. Службы и возможности

16. Периферийное устройство ПЭВМ, Характеристика этапов подготовки и решения задач на ПЭВМ в любой системе программирования. Электронная почта, особенности применения

Шезлонг детский "Веселый динозаврик".
В кресле-шезлонге вашему ребенку будет одинаково удобно и кушать, и спать, и бодрствовать. Что бы вы ни делали — работу по дому,
2009 руб
Раздел: Качели, кресла-качалки, шезлонги
Пазл "Животные Сибири и Дальнего Востока", 55 деталей.
Новый увлекательный пазл от Larsen Животные Сибири и Дальнего Востока обязательно понравится детям и познакомит их с обитателями разных
548 руб
Раздел: Пазлы в рамке
Точилка механическая, с механизмом автофиксации карандаша.
Большая настольная точилка для карандашей в цветном пластиковом корпусе, с удобной рукояткой и объемным прозрачным контейнером для
695 руб
Раздел: Точилки

17. Языки и технология программирования. Начальный курс /Pascal/

18. Объектно-ориентированное программирование на С с использованием библиотеки OpenGL

19. Объективное программирование

20. Обучение начальных курсов методам программирования на языке Turbo Pascal

21. Применение методов линейного программирования в военном деле. Симплекс-метод

22. Аналитический обзор книги "Программирование на языке ассемблера..."
23. Математические методы и языки программирования: симплекс метод
24. Ответы на вопросы по курсу "Системное программирование" (Шпаргалка)

25. Разработка системы по сбору информации о доходах физических лиц для формирования налоговых документов и отчетности для налоговой службы по объединению Сургутгазпром

26. Понятие, назначение и составные элементы систем программирования

27. Лекции по высокоуровневым методам информатики и программированию

28. Курсовая работа по основам программирования. Игра "Паровоз"

29. VB, MS Access, VC++, Delphi, Builder C++ принципы(технология), алгоритмы программирования

30. Помощь в обучении программированию

31. Программирование на С++

32. Сравнительный анализ языков программирования JavaScript и VBScript

Сковорода чугунная с деревянной ручкой 2505/27, 27 см.
Диаметр: 27 см. Чугунная сковорода с деревянной ручкой. Обладает высокой теплопроводностью, несравнимой износостойкостью, устойчивостью к
755 руб
Раздел: Сковороды чугунные
Магический шар 8.
Во все времена люди желали знать ответы на интересующие их вопросы, для этого они прибегали к помощи всевозможных гадалок, шаманов, и
585 руб
Раздел: Прочее
Сковорода чугунная с деревянной ручкой 2505/25, 25 см.
Диаметр: 25 см. Чугунная сковорода с деревянной ручкой. Обладает высокой теплопроводностью, несравнимой износостойкостью, устойчивостью к
648 руб
Раздел: Сковороды чугунные

33. Возможности системы программирования Delphi для создания пользовательского интерфейса

34. Программирование на Delphi

35. Программирование логической игры на visual basic

36. Учебник по программированию в среде С++ Builder

37. Учебник по технологии программирования

38. Билеты по дисциплине "Основы алгоритмизации и программированию"
39. Эволюция языков программирования
40. Программирование на языке Турбо Паскаль

41. Лабораторная работа №5 по "Основам теории систем" (Транспортные задачи линейного программирования)

42. Лабораторная работа №3 по "Основам теории систем" (Теория двойственности в задачах линейного программирования)

43. Решение оптимизационной задачи линейного программирования

44. Постановка задачи линейного программирования и двойственная задача линейного программирования.

45. Программированное обучение и контроль по физиологии

46. Деятельность государственной службы медико-социальной экспертизы в Тамбовской области

47. Проект создания системы поддержки принятия решений оперативно-дежурной службы милиции

48. Служба безопасности Украины

Набор детской складной мебели Ника "Фиксики. Азбука".
Это безопасная, удобная мебель, которая компактно складывается и экономит пространство Вашей квартиры. Углы стола и стула мягко
1451 руб
Раздел: Наборы детской мебели
Набор цветных карандашей Stilnovo, 24 цвета.
Гексагональные цветные деревянные карандаши с серебряным нанесением по ребру грани. Есть место для нанесения имени. Яркие модные цвета.
448 руб
Раздел: 13-24 цвета
Учимся читать по слогам. 40 карточек-пазлов. Митченко Ю.
В наборе 40 двухсторонних карточек-пазлов, разработанных для детей, которые уже знакомы с алфавитом. Эта развивающая игра поможет ребенку
389 руб
Раздел: Алфавит, азбука

49. Характеристика Федеральной налоговой службы РФ

50. Благородные металлы на службе у человека

51. Психология: Роль психологической службы в развитии учебной мотивации студента

52. Проект консультационной службы

53. Нейролингвистическое программирование /краткий обзор/

54. Создание Службы занятости в России
55. Отрасли хозяйства России, развёрнутая характеристика агропромышленного комплекса и подробное изучение Востично-Сибирского экономического района
56. Формирование службы маркетинга на предприятии

57. Программирование и планирование в ситуациях коллективного взаимодействия

58. Службы управления персоналом

59. Личностные и профессиональные требования к специалисту службы маркетинга

60. Государственная налоговая служба РФ

61. Задача квадратичного программирования с параметром в правых частях ограничений и ее применение при формировании портфеля ценных бумаг

62. Математическое программирование и моделирование в экономике и управлении

63. Безработица в России и задачи Государственной службы занятости

64. Часовые империи. Сибирское казачье войско на службе отечеству

Отделитель косточек вишни "Mayer & Boch", 1,5 л, механический (арт. 25985).
Когда вам захочется приготовить вишневый пирог или варенья вишневое без косточек, вы стараетесь выделить больше времени, так как оно уйдет
477 руб
Раздел: Прочее
Сковорода-сотейник алюминиевая с антипригарным покрытием "Alpenkok" AK-1007/28N "Brown Marble", 28.
Диаметр: 28 см. Высота: 7,5 см. Толщина дна: 4 мм. Сковорода-сотейник из литого алюминия. Высококачественное внутреннее антипригарное
856 руб
Раздел: Сковороды с антипригарным покрытием
Машинка "Кабриолет. Шейх".
Игрушечный кабриолет «Шейх» представляет собой уменьшенную модель настоящего роскошного автомобиля. Машинка изготовлена из гладкого
567 руб
Раздел: Пластиковые машинки

65. Новая Россия. Дипломатическая служба

66. Византия в третьей четверти V в. Германцы на службе империи

67. Развенчание романтики военной службы

68. Мерчандайзинг как программирование поведения покупателя

69. Транспортная задача линейного программирования

70. Динамическое программирование (задача о загрузке)
71. Линейное и динамическое программирование
72. Система программирования squeak smalltalk –новый этап развития языка программирования смолток

73. Организация секретарской службы

74. Организация ремонтной службы предприятия

75. Закон о налоговой службе Украины

76. Налоговое планирование и роль юридической службы в этом процессе

77. O Л. В. Канторовиче и линейном программировании

78. Дистанционное обучение программированное

79. Метод программированного обучения в преподавании математики

80. Психотерапевтическая служба Новгородской области

Настольная композиция "Сад Дзен", 16x16x2 см.
Настольная композиция "Сад Дзен" станет необычным подарком для ценителей "заморской" Японской культуры. Время
510 руб
Раздел: Антистрессы
Ящик, 50 литров, 530x370x300 мм.
Ящик для хранения сэкономит место и поможет поддерживать идеальный порядок. Ящик без колес. Материал: пластик. Цвет: прозрачный. Объем: 50
640 руб
Раздел: Более 10 литров
Кружка "Пистолет", черная, с позолоченной ручкой.
Кружка для решительных мужчин и смелых женщин. Оригинальный дизайн позолоченной ручки, имитирующей рукоять пистолета, делает эту вещицу
629 руб
Раздел: Кружки

81. Нравственные основы деятельности различных милицейских служб

82. Альтернативная гражданская служба

83. Актуальные административно-правовые аспекты правового статуса Федеральной службы России

84. О совершенствовании нормативного правового регулирования деятельности дорожно-патрульной службы ГИБДД

85. Поволжская академия государственной службы

86. Государственная служба
87. Система налоговой службы РФ
88. Военная служба и порядок ее прохождения

89. Нейролингвистическое программирование - мнение психолога

90. Нейролингвистическое программирование

91. Психотерапевтическая служба Новгородской области

92. Психология на службе у фармацевтических работников

93. Роль психопрофилактических мероприятий в подготовке офицеров к военной службе

94. Интернет на службе direct-mail, или... Как попасть в свою целевую аудиторию

95. Социология на службе управления

96. Службы социальной помощи населению

Эко-гель "Organic People" для стирки детского белья, 1,5 литра.
Бережное и безопасное, экологически чистое средство для стирки детского белья. Содержит 99,8% натуральных компонентов и обогащено
612 руб
Раздел: Для стирки детских вещей
Подставка под автомобиль регулируемая "Delta" РПМ-2,0.
Грузоподъемность: 2 тонны. Высота подъема: 345 мм. Высота подхвата: 184 мм. Подставка под машину предназначена для подъема и удержания
645 руб
Раздел: Домкраты, подставки
Письменные принадлежности "Набор первоклассника", 28 предметов.
Набор школьно-письменных принадлежностей для девочки. В наборе: акварель, альбом для рисования, блокнот, доска для лепки, 2 карандаша
551 руб
Раздел: Наборы канцелярские

97. Правовое регулирование государственной службы в таможенных органах

98. Инженерно-технические службы в гостинице

99. Испытание при замещении государственной должности государственной службы


Поиск Рефератов на сайте za4eti.ru Вы студент, и у Вас нет времени на выполнение письменных работ (рефератов, курсовых и дипломов)? Мы сможем Вам в этом помочь. Возможно, Вам подойдет что-то из ПЕРЕЧНЯ ПРЕДМЕТОВ И ДИСЦИПЛИН, ПО КОТОРЫМ ВЫПОЛНЯЮТСЯ РЕФЕРАТЫ, КУРСОВЫЕ И ДИПЛОМНЫЕ РАБОТЫ. 
Вы можете поискать нужную Вам работу в КОЛЛЕКЦИИ ГОТОВЫХ РЕФЕРАТОВ, КУРСОВЫХ И ДИПЛОМНЫХ РАБОТ, выполненных преподавателями московских ВУЗов за период более чем 10-летней работы. Эти работы Вы можете бесплатно СКАЧАТЬ.