Симон Робинсон - 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 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Добавление регистрации событий
Если свойство AutoLog
класса ServiceBase
задано как true, то автоматически включается регистрация событий. Класс ServiceBase
регистрирует информационное событие при запросах службы для запуска, остановки, паузы и продолжения. В классе ServiceInstaller
создается экземпляр EventLogInstaller
, чтобы сконфигурировать источник журнала событий. Этот источник журнала событий имеет такое же имя, как и служба. Для записи события используем статический метод WriteEntry()
класса EventLog
. Свойство Source
было уже задано в классе ServiceBase
:
EventLog.WriteEntry("event log message");
Этот метод регистрирует информационное событие. Если должно быть создано событие предупреждения или ошибки, то для определения этого типа используется перезагруженный метод WriteEvent()
:
EventLog.WriteEntry("event log message", EventLogEntryType.Warning);
EventLog.WriteEntry("event log message", EventLogEntryType.Error);
Для служб класс ServiceBase
автоматически добавляет свойства регистрации событий. Если желательно использовать регистрацию событий в других типах приложений, это легко делается с помощью Visual Studio.NET.
□ Используйте ToolBox для добавления компонента EventLog
в конструктор.
□ Задайте свойство Log
компонента EventLog
как Application
, а свойство Source
как выбранное имя. Обычно это бывает имя приложения, которое показано в Event View.
□ Теперь можно записать журналы с помощью метода WriteEntry()
экземпляра EventLog
.
□ Можно добавить программу установки из пункта контекстного меню Add Installer компонента EventLog
. Это создает класс ProjectInstaller
, который конфигурирует источник событий в реестре.
□ С помощью команды installutil
теперь можно зафиксировать приложение, installutil
вызывает класс ProjectInstaller
и регистрирует источник событий.
Для установки типа хсору последние два шага на самом деле не нужны. Если задано свойство Source
экземпляра EventLog
, источник автоматически регистрируется, когда журнал событий заполняется в первый раз. Это действительно легко сделать, но для реального приложения предпочтительнее добавить программу установки: с помощью installutil /u
конфигурация регистрации событий отменяется. Если приложение просто удаляется, этот ключ реестра остается, если не будет вызван метод EventLog.DeleteEventSource()
.
Трассировка
Можно сделать так, чтобы все сообщения трассировки направлялись в журнал событий. На самом деле это не нужно, так как в нормально работающей системе журнал событий будет перегружен сообщениями трассировки. Системный администратор пропустит действительно важные записи, если это произойдет. Помните, что тип записи события — это ошибка, предупреждение и информационное. При этом информационные сообщения редко являются информацией об успехе. Включение трассировочных сообщений в журнал событий может быть полезным свойством для тестирования проблемных служб. Трассировка возможна как с отладочным, так и с окончательным кодом.
Чтобы послать трассировочные сообщения в журнал событий, должен быть создан объект EventLogTraceListener
и добавлен в список приемника класса Trace
:
EventLogTraceListener listener = new EventLogTraceListener(eventLog1);
Trace.Listeners.Add(listener);
Теперь все трассировочные сообщения посылаются в журнал событий:
Trace.WriteLine("trace message");
Дополнительная информация о методах трассировки находится в главе 6.
Создание приемника событий
Теперь было бы полезно создать приложение, которое получает событие, когда в службе происходит что-то плохое. Мы создадим простое оконное приложение, отслеживающее события службы Quote
:
Оконное приложение имеет только окно списка и кнопку выхода:

Компонент EventLog
добавляется в этот проект перетаскиванием его из панели инструментов. Свойство Log
задается как Application
, a Source
как источник службы QuoteService
. Класс EventLog
также имеет свойство EnableRaisingEvents
. До сих пор мы не говорили об этом свойстве. По умолчанию для него используется значение false, задание его как true означает, что событие создается каждый раз, когда происходит это событие, и можно написать обработчик событий для оконного события EntryWritten
.
В файле EventListener.cs
свойства задаются в методе InitializeComponent()
:
private void InitializeComponent() {
this.eventLogQuote = new System.Diagnostics.EventLog();
this.buttonExit = new System.Windows.Forms.Button();
this.listBoxEvents = new System.Windows.Forms.ListBox();
((System.ComponentModel.ISupportInitialize)
(this.eventLogQuote)).BeginInit();
this.SuspendLayout();
//
// eventLogQuote
//
this.eventLogQuote.EnableRaisingEvents = true;
this.eventLogQuote.Log = "Application";
this.eventLogQuote.Source = "QuoteService";
this.eventLogQuote.SynchronizingObject = this;
this.eventLogQuote.EntryWritten +=
new System.Diagnostics.EntryWrittenEventHandler(this.OnEntryWritten);
// ...
Программа обработки OnEntryWritten()
получает объект EntryWrittenEventArgs
в качестве аргумента, где можно получить всю информацию из события. С помощью свойства Entry
мы получаем объект EventLogEntry
с информацией о времени, источнике события, типе, категории и т. д.:
protected void OnEntryWritten(object sender, System.Diagnostics.EntryWrittenEventArgs e) {
DateTime time = e.Entry.TimeGenerated;
string message = e.Entry.Message;
listBoxEvents.Items.Add(time + " " + message);
}
Выполняющееся приложение показывает все события для QuoteService
:

Мониторинг производительности
Мониторинг производительности может использоваться для получения информации о нормальном выполнении службы. Это прекрасный инструмент, который помогает понять нагрузку системы и наблюдать изменения и тенденции.
Windows 2000 имеет множество объектов производительности, таких как System
, Memory
, Objects
, Process
, Processor
, Thread
, Cache
и т. д. Каждый из этих объектов имеет множество показателей для мониторинга. С помощью объекта Process для всех процессов или для определенных экземпляров процессов можно контролировать время пользователя, счетчик дескрипторов. Ошибки страниц, счетчик потоков выполнения и т. д. В некоторых приложениях также имеются специфические объекты, например SQL Server.
Для нашей службы цитат может представлять интерес получение информации о числе клиентских запросов, размере данных, посылаемых по каналам связи, и т.д.
Классы мониторинга производительности
Интервал:
Закладка: