Симон Робинсон - 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 - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Установка службы
Служба должна конфигурироваться в реестре. Все службы можно найти в HKEY_LOCAL_MACHINE\System\CurrentControlSetServices
. Записи реестра можно увидеть с помощью regedit
. Там находятся тип службы, выводимое имя, путь доступа к исполняемому файлу, конфигурация запуска и т.д.

Эту конфигурацию можно сделать с помощью классов установки из пространства имен System.ServiceProcess
.
Программы установки
Можно добавить программу установки в службу, переключаясь в представление конструктора в Visual Studio.NET и выбирая параметр Add Installer из контекстного меню. С помощью этого параметра создается новый класс ProjectInstaller
и экземпляры ServiceProcessInstaller
и ServiceInstaller
:

Диаграмма классов установки для служб должна помочь пониманию созданного мастером кода:

Помня об этой диаграмме, пройдем через исходный код в файле ProjectInstaller.cs
, созданный с помощью параметра Add Installer.
Класс Installer
Класс ProjectInstaller
выводится из класса System.Configuration.Install.Installer
. Класс Installer
является базовым классом для всех специальных классов установки. С его помощью создается установка на основе транзакций, при которой можно вернуться в предыдущее состояние, если установка отказывает. При откате все изменения, сделанные при установке, будут отменены. Как можно видеть на диаграмме, класс Installer
имеет методы Install()
, Commit()
, Rollback()
и Uninstall()
, вызываемые из программ установки.
Атрибут RunInstaller(true)
означает, что при установке сборки должен вызываться класс ProjectInstaller
. Специальные программы установки действий, а также утилита installutil.exe
(которая будет использоваться позднее) проверяют атрибут:
using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration.Install;
namespace Wrox.ProfessionalCSharp {
///
/// Краткое описание ProjectInstaller
///
[RunInstaller(true)]
public class ProjectInstaller : System.Configuration.Install.Installer {
Классы ServiceProcessInstaller и ServiceInstaller
Аналогично приложениям Windows Forms метод InitializeComponent()
вызывается внутри конструктора класса ProjectInstaller
. В методе InitializeComponent()
создается экземпляр класса ServiceProcessInstaller
и класса ServiceInstaller
. Оба эти класса выводятся из класса ComponentInstaller
, который сам является Installer
.
Классы, производные из ComponentInstaller
, используются как части процесса установки. Помните, что служебный процесс может включать более одной службы. Класс ServiceProcessInstaller
применяется для части процесса установки, а класс ServiceInstaller
для части службы, поэтому один экземпляр ServiceInstaller
требуется для каждой службы. Если в процессе имеется три службы, то необходимо добавить дополнительные объекты ServiceInstaller
, в таком случае понадобятся три экземпляра ServiceInstaller
.
private System.ServiceProcess.ServiceProcessInstaller serviceProcessInstaller1;
private System.ServiceProcess.ServiceInstaller serviceInstaller1;
///
/// требуемые переменные конструктора.
///
private System.ComponentModel.Container components;
public ProjectInstaller() {
// Этот вызов затребован конструктором.
InitializeComponent();
// TODO: добавить инициализацию после вызова InitComponent
}
///
/// Требуемый метод для поддержки конструктора — не изменяйте
/// содержимое этого метода с помощью редактора кода.
///
private void InitializeComponent() {
this.serviceProcessInstaller1 =
new System.ServiceProcess.ServiceProcessInstaller();
this.serviceInstaller1 =
new System.ServiceProcess.ServiceInstaller();
//
// serviceProcessInstaller1
//
this.serviceProcessInstaller1.Password = null;
this.serviceProcessInstaller1.UserName = null;
//
// serviceInstaller1
//
this.serviceInstaller1.ServiceName = "QuoteService";
//
// ProjectInstaller
//
this.Installers.AddRange(
new System.Configuration.Install.Installer[] {
this.serviceProcessInstaller1, this.serviceInstaller1});
}
}
}
ServiceProcessInstaller
устанавливает исполняемый файл, который реализует класс ServiceBase
. ServiceProcessInstaller
имеет свойства для всего процесса и для всех служб внутри процесса:
Свойства ServiceProcessInstaller |
|
---|---|
Username , Password |
Указывают учетную запись пользователя, с которой выполняется служба, если свойство RunUnderSystemAccount задано как false. |
Account |
С помощью этого свойства можно определить, будет ли служба выполняться с системной учетной записью. |
HelpText |
Свойство только для чтения, которое возвращает справочный текст для задания имени пользователя и пароля. |
ServiceInstaller
является классом, необходимым для каждой службы. Он имеет свойства, уникальные для каждой службы внутри процесса: StartType
, DisplayName
, ServiceName
и ServiceDependedOn
:
Свойства ServiceInstaller |
|
---|---|
StartType |
Указывает, запускается ли служба автоматически или вручную. Возможные значения: ServiceStartMode.Automatic , ServiceStartMode.Manual , ServiceStartMode.Disabled . |
DisplayName |
Является именем службы, которое выводится пользователю. Это имя используется также многими утилитами управления для контроля и мониторинга службы. |
ServiceName |
Является именем службы. Это значение должно быть идентично свойству ServiceName класса ServiceBase в программе службы. |
ServicesDependentOn |
Определяет массив служб, которые должны запускаться, прежде чем можно будет запустить эту службу. Когда служба запускается, все подчиненные службы запускаются автоматически. |
Заметьте, что если изменяется имя службы в классе, производном от ServiceBase
, то также необходимо изменить свойство ServiceName
в объекта ServiceInstaller
.
Во время тестирования задавайте StartType
как Manual (вручную). Если остановка службы откажет, этот процесс нельзя уничтожить, так как он будет сконфигурирован для выполнения в контексте учетной записи System. Эту конфигурацию можно будет изменить позднее, когда все будет работать правильно.
ServiceInstallerDialog
Другим классом установки в пространстве имен System.ServiceProcess.Design
является ServiceInstallerDialog
. Если желательно, чтобы системный администратор вводил имя пользователя и пароль во время установки, может использоваться этот класс.
Интервал:
Закладка: