Симон Робинсон - C# для профессионалов. Том II
- Название:C# для профессионалов. Том II
- Автор:
- Жанр:
- Издательство:Лори
- Год:2003
- Город:Москва
- ISBN:5-85582-187-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Симон Робинсон - C# для профессионалов. Том II краткое содержание
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Для кого предназначена эта книгаЭта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
Основные темы книги• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
}
protected void buttonExit_Click(object sender, System.EventArgs e) {
Application.Exit();
}
protected void buttonRefresh_Click(object sender, System.EventArgs e) {
RefreshServiceList();
}
Это действие может потребовать некоторого времени, поэтому курсор в первой инструкции переключается в курсор ожидания. С помощью метода WaitForStatus()
мы ожидаем максимум только 10 с, пока служба изменит статус на запрошенное значение. После этого времени информация в окне списка обновляется, и выбирается та же служба, чтобы выводился новый статус этой службы.
Выполняющееся приложение выглядит так:

Поиск неисправностей
Поиск неисправностей работает для служб иначе, чем для обычных приложений. Лучший способ образовать службу — создание сначала требуемой функциональности и тестового клиента. В этом случае выполняется нормальная отладка и обработка ошибок. Как только приложение запустится, можно начинать создавать службу, используя эту сборку. Конечно, со службой по-прежнему возможны проблемы:
□ В службе не выводите ошибки в окне сообщений (за исключением интерактивных служб, которые выполняются на системе клиента). Вместо этого для записи ошибок используйте службу регистрации событий. Конечно, можно вывести окно сообщений для информирования пользователя об ошибках в клиентском приложении, использующем службу.
□ Службу нельзя запустить из отладчика, но отладчик можно присоединить к выполняющемуся процессу службы. Откройте исходный код службы и задайте точки прерывания. В меню Visual Studio.NET Debug выберите Processes и присоедините выполняющийся процесс службы.
□ Для мониторинга активности служб можно использовать монитор производительности. Добавьте к службе свои собственные объекты производительности, это даст некоторую полезную информацию для отладки. Можно задать объект для указания общего числа отправленных цитат, время, которое необходимо для инициализации и т.д.
Интерактивные службы
Если служба предназначена для выполнения на клиентской системе, полезно выводить окна сообщений пользователю. Если служба должна выполняться на сервере, который будет заперт в компьютерном зале, служба никогда не должна выводить окно сообщений. Когда открытое окно сообщений ожидает некоторого ввода пользователя, то такой ввод, возможно, не произойдет в течение нескольких дней, так как никто не проверяет сервер в компьютерном зале; но все может оказаться даже хуже — если служба не сконфигурирована как интерактивная служба, окно сообщений открывается на другой, скрытой, оконной станции. В таком случае никто не сможет ответить на это окно сообщений, и служба будет заблокирована.
Никогда не открывайте диалоговые окна для служб, выполняющихся на серверной системе. Никто не ответит на это диалоговое окно.
В тех случаях, где действительно желательно взаимодействие с пользователем, можно сконфигурировать интерактивную службу. Некоторыми примерами таких интерактивных служи являются Print Spooler, который выводит для пользователя сообщения на бумаге, и служба NetMeeting Remote Desktop Sharing.
Чтобы сконфигурировать интерактивную службу, необходимо задать функцию Allow service to interact with desktop (Разрешить службе взаимодействовать с рабочим столом) в Computer Management. Это изменяет тип службы, добавляя к типу флажок SERVICE_INTERACTIVE_PROCESS
.

Регистрация событий
Службы могут сообщать об ошибках и другую информацию, отмечая ее в журнале событий. Служебный класс, производный из ServiceBase
, автоматически регистрирует события, когда свойство AutoLog
задано как true. Класс ServiceBase
проверяет это свойство и заносит запись в журнал при событиях запуска, остановки, паузы и продолжения. Вот пример журнальной записи, сделанной службой.

Для регистрации специальных событий можно использовать классы из пространства имен System.Diagnostics
.
Архитектура регистрации событий
По умолчанию Event Log (Журнал событий) хранится в трех файлах журналов: Application, Security и System. Просматривая конфигурацию реестра службы регистрации событий, можно увидеть три записи в HKLM\System\CurrentControlSet\Services\EventLog
с конфигурациями, указывающими на определенные файлы. Файл журнала System используется из драйверов системы и устройств, приложения и службы записывают в журнал Application. Security является журналом только для чтения приложений. Свойство аудита операционной системы использует журнал Security.
Можно прочитать эти события с помощью административной утилиты Event Viewer. Event Viewer запускается непосредственно из Server Explorer, входящего в Visual Studio.NET. Сделайте щелчок правой кнопкой мыши на пункте Event Logs и выберите запись Launch Event Viewer из контекстного меню:

В журнале событий будет помещена следующая информация:
□ Type может быть Information, Warning и Error. Information — это редкая успешная операция, Warning — проблема, которая не является немедленно значимой, и Error — основная проблема. Дополнительными типами являются FailureAudit и SuccessAudit, но эти типы используются только для журнала Security.
□ Date и Time показывают время, когда происходит событие.
□ Source — имя программного обеспечения, регистрирующего событие. Source для журнала Application конфигурируется в HKLM\System\CurrentControlSet\Services\EventLog\Application
. Под этим ключом конфигурируется значение EventMessageFile
для указания на DLL ресурса, который содержит сообщения об ошибках.
□ Category можно определить так, чтобы журналы событий фильтровались при использовании Event View.
□ Идентификатор события определяет сообщение об определенном событии.
Классы регистрации событий
Пространство имен System.Diagnostics
имеет несколько классов для регистрации событий:
□ С помощью класса EventLog
можно прочитать и внести записи в журнал событий, а также определить приложения как источники событий.
□ EventLogEntry
является единственным входом в журнал событий. С помощью EventLogEntryCollection
можно просмотреть EventLogEntry
.
□ Класс EventLogInstaller
предназначен для установки компонента EventLog
. EventLogInstaller
вызывает EventLog.CreateEventSource()
для создания источника событий.
□С помощью EventLogTraceListener
можно записать в журнал событий трассировки. Этот класс реализует абстрактный класс TraceListener
.
Интервал:
Закладка: