Оглавление
Об авторе
О техническом редакторе
Благодарности
Введение
Автор и читатели — одна команда
Краткий обзор книги
Часть II. Основы программирования на C#
Часть III. Объектно-ориентированное программирование на C#
Часть IV. Дополнительные конструкции программирования на C#
Часть V. Программирование с использованием сборок .NET
Часть VI. Введение в библиотеки базовых классов .NET
Часть VII. Windows Presentation Foundation
Часть VIII. ASP.NET Web Forms
Загружаемые приложения
Исходный код примеров
От издательства
Часть I. Введение в C# и платформу .NET
Роль библиотек базовых классов
Что привносит язык C#
Сравнение управляемого и неуправляемого кода
Другие языки программирования, ориентированные на .NET
Обзор сборок .NET
Роль метаданных типов .NET
Роль манифеста сборки
Типы классов CTS
Типы интерфейсов CTS
Типы структур CTS
Типы перечислений CTS
Типы делегатов CTS
Члены типов CTS
Встроенные типы данных CTS
Обеспечение совместимости с CLS
Различия между сборками, пространствами имен и типами
Доступ к пространству имен программным образом
Ссылка на внешние сборки
Исследование сборки с помощью утилиты ildasm.exe
Просмотр метаданных типов
Независимая от платформы природа .NET
Несколько слов по поводу приложений Windows 8
Роль .NET в среде Windows 8
Резюме
Глава 2. Создание приложений на языке C#
Построение приложений C# с использованием csc.exe
Ссылка на внешние сборки
Ссылка на несколько внешних сборок
Компиляция нескольких файлов исходного кода
Работа с ответными файлами в C#
Построение приложений .NET с использованием Notepad++
Построение приложений .NET с помощью SharpDevelop
Построение приложений .NET с помощью Visual C# Express
Построение приложений .NET с помощью Visual Studio
Выбор целевой версии .NET Framework в диалоговом окне New Project
Использование утилиты Solution Explorer
Утилита Class View
Утилита Object Browser
Встроенная поддержка рефакторинга кода
Фрагменты кода и технология Surround With
Утилита Class Designer
Интегрированная система документации . NET Framework 4.5 SDK
Резюме
Часть II. Основы программирования на C#
Указание кода ошибки приложения
Обработка аргументов командной строки
Указание аргументов командной строки в Visual Studio
Интересное отступление от темы: некоторые дополнительные члены класса System.Environment
Knacc System.Console
Форматирование консольного вывода
Форматирование числовых данных
Форматирование числовых данных в приложениях, отличных от консольных
Системные типы данных и соответствующие ключевые слова C#
Внутренние типы данных и операция new
Иерархия классов для типов данных
Члены числовых типов данных
Члeны System.Boolean
Члeны System.Char
Синтаксический разбор значений из строковых данных
Типы System.DateTime и System.TimeSpan
Сборка System.Numerics.dll
Работа со строковыми данными
Конкатенация строк
Управляющие последовательности
Определение дословных строк
Строки и равенство
Строки являются неизменяемыми
Тип System.Text.StringBuilder
Сужающие и расширяющие преобразования типов данных
Настройка проверки переполнения на уровне всего проекта
Ключевое слово unchecked
Понятие неявно типизированных локальных переменных
Неявно типизированные данные являются строго типизированными
Польза от неявно типизированных локальных переменных
Итерационные конструкции С#
Цикл foreach
Циклы while и do/while
Конструкции принятия решений и операции равенства/сравнения
Операции равенства и сравнения
Условные операции
Оператор switch
Резюме
Глава 4. Главные конструкции программирования на C#: часть II
Модификатор out
Модификатор ref
Модификатор params
Определение необязательных параметров
Вызов методов с использованием именованных параметров
Понятие перегрузки методов
Массивы в C#
Неявно типизированные локальные массивы
Определение массива объектов
Работа с многомерными массивами
Использование массивов в качестве аргументов и возвращаемых значений
Базовый класс System.Array
Тип enum
Объявление переменных типа перечисления
Тип System.Enum
Динамическое извлечение пар “имя/значение” перечисления
Типы структур
Типы значений и ссылочные типы
Типы значений, содержащие ссылочные типы
Передача ссылочных типов по значению
Передача ссылочных типов по ссылке
Заключительные детали относительно типов значений и ссылочных типов
Понятие типов, допускающих null, в C#
Операция ??
Резюме
Часть III. Объектно-ориентированное программирование на C#
Понятие конструкторов
Определение специальных конструкторов
Еще раз о стандартном конструкторе
Роль ключевого слова thi s
Обзор потока конструктора
Еще раз о необязательных аргументах
Понятие ключевого слова stаtiс
Определение статических методов
Определение статических конструкторов
Определение статических классов
Основные принципы объектно-ориентированного программирования
Роль наследования
Роль полиморфизма
Модификаторы доступа C#
Модификаторы доступа и вложенные типы
Первый принцип: службы инкапсуляции C#
Использование свойств внутри определения класса
Свойства, доступные только для чтения и только для записи
Еще раз о ключевом слове stаtiс: определение статических свойств
Понятие автоматических свойств
Замечания относительно автоматических свойств и стандартных значений
Понятие синтаксиса инициализации объектов
Инициализация вложенных типов
Работа с данными константных полей
Статические поля, допускающие только чтение
Понятие частичных типов
Резюме
Глава 6. Понятие наследования и полиморфизма
Замечание относительно множества базовых классов
Ключевое слово seаled
Изменение диаграмм классов Visual Studio
Второй принцип ООП: подробности о наследовании
Хранение секретов семейства: ключевое слово protected
Добавление запечатанного класса
Реализация модели включения/делегации
Третий принцип ООП: поддержка полиморфизма в C#
Переопределение виртуальных членов в IDE-среде Visual Studio
Запечатывание виртуальных членов
Абстрактные классы
Понятие полиморфного интерфейса
Сокрытие членов
Правила приведения к базовому и производному классу
Ключевое слово is
Главный родительский класс System.Object
Тестирование модифицированного класса Person
Статические члены Sуstem.0bjeсt
Резюме
Глава 7. Структурированная обработка исключений
Роль обработки исключений .NET
Базовый класс System. Exception
Простейший пример
Перехват исключений
Конфигурирование состояния исключения
Свойство StackTrace
Свойство HelpLink
Свойство Data
Построение специальных исключений, способ первый
Построение специальных исключений, способ второй
Построение специальных исключений, способ третий
Обработка нескольких исключений
Повторная генерация исключений
Внутренние исключения
Блок finally
Какие исключения могут генерировать методы?
Результат наличия необработанных исключений
Отладка необработанных исключений с использованием Visual Studio
Резюме
Глава 8. Работа с интерфейсами
Определение специальных интерфейсов
Реализация интерфейса
Вызов членов интерфейса на уровне объектов
Получение ссьшок на интерфейсы: ключевое слово is
Использование интерфейсов в качестве параметров
Использование интерфейсов в качестве возвращаемых значений
Массивы интерфейсных типов
Реализация интерфейсов с использованием Visual Studio
Явная реализация интерфейсов
Проектирование иерархий интерфейсов
Интерфейсы IEnumerable и IEnumerator
Построение именованного итератора
Интерфейс ICloneable
Интерфейс IComparable
Специальные свойства и специальные типы сортировки
Резюме
Часть IV. Дополнительные конструкции программирования на C#
Обзор пространстваимен System.Collections.Specialized
Проблемы, связанные с необобщенными коллекциями
Проблемы с безопасностью типов
Первый взгляд на обобщенные коллекции
Роль параметров обобщенных типов
Указание параметров типа для обобщенных членов
Указание параметров типов для обобщенных интерфейсов
Пространство имен System.Collections.Generic
Работа с классом List<T>
Работа с классом Stасk<T>
Работа с классом Queue<T>
Работа с классом SortedSet<T>
Пространство имен System.Collections.ObjectModel
Создание специальных обобщенных методов
Создание специальных обобщенных структур и классов
Ограничение параметров типа
Недостаток ограничений операций
Резюме
Глава 10. Делегаты, события и лямбда-выражения
Определение типа делегата в C#
Базовые классы System.MulticastDelegate и System.Delegate
Пример простейшего делегата
Отправка уведомлений о состоянии объекта с использованием делегатов
Удаление целей из списка вызовов делегата
Синтаксис групповых преобразований методов
Понятие обобщенных делегатов
Понятие событий C#
“За кулисами” событий
Прослушивание входящих событий
Упрощенная регистрация событий с использованием Visual Studio
Создание специальных аргументов событий
Обобщенный делегат EventHandler<T>
Понятие анонимных методов C#
Понятие лямбда-выражений
Обработка аргументов внутри множества операторов
Лямбда-выражения с несколькими параметрами и без параметров
Усовершенствование примера PrimAndProperCarEvents за счет использования лямбда-выражений
Резюме
Глава 11. Расширенные средства языка C#
Перегрузка методов-индексаторов
Многомерные индексаторы
Определения индексаторов в интерфейсных типах
Понятие перегрузки операций
А как насчет операций += и -=?
Перегрузка унарных операций
Перегрузка операций эквивалентности
Перегрузка операций сравнения
Финальные соображения относительно перегрузки операций
Понятие специальных преобразований типов
Преобразования между связанными типами классов
Создание специальных процедур преобразования
Дополнительные явные преобразования для типа Square
Определение процедур неявного преобразования
Понятие расширяющих методов
Понятие анонимных типов
Определение анонимного типа
Анонимные типы, содержащие другие анонимные типы
Работа с типами указателей
Работа с операциями * и &
Ключевое слово stасkallос
Закрепление типа с помощью ключевого слова fixed
Ключевое слово sizeоf
Резюме
Глава 12. LINQ to Objects
Синтаксис инициализации объектов и коллекций
Лямбда-выражения
Расширяющие методы
Анонимные типы
Роль LINQ
Основные сборки LINQ
Применение запросов LINQ к элементарным массивам
Рефлексия результирующего набора LINQ
LINQ и неявно типизированные локальные переменные
LINQ и расширяющие методы
Роль отложенного выполнения
Роль немедленного выполнения
Возврат результата запроса LINQ
Применение запросов LINQ к объектам коллекций
Применение запросов LINQ к необобщенным коллекциям
Исследование операций запросов LINQ
Получение подмножества данных
Проецирование новых типов данных
Получение счетчиков посредством Enumerable
Обращение результирующих наборов
Выражения сортировки
LINQ как лучшее средство построения диаграмм
Исключение дубликатов
Агрегатные операции LINQ
Внутреннее представление операторов запросов LINQ
Построение выражений запросов с использованием типа Enumerable и лямбда-выражений
Построение выражений запросов с использованием типа Enumerable и анонимных методов
Построение выражений запросов с использованием типа Enumerable и низкоуровневых делегатов
Резюме
Глава 13. Время жизни объектов
Базовые сведения о времени жизни объектов
Установка объектных ссылок в null
Роль корневых элементов приложения
Понятие поколений объектов
Параллельная сборка мусора в .NET 1.0 — .NET 3.5
Тип System.GC
Построение финализируемых объектов
Описание процесса финализации
Создание освобождаемых объектов
Создание финализируемых и освобождаемых типов
Ленивое создание объектов
Резюме
Часть V. Программирование с использованием сборок .NET
Создание вложенных пространств имен
Стандартное пространство имен Visual Studio
Роль сборок .NET
Сборки определяют границы типов
Сборки являются единицами, поддерживающими версии
Сборки являются самоописательными
Сборки являются конфигурируемыми
Формат сборки .NET
Заголовок файла CLR
CIL-код, метаданные типов и манифест сборки
Необязательные ресурсы сборки
Построение и использование специальной библиотеки классов
Исследование CIL-кода
Исследование метаданных типов
Построение клиентского приложения на C#
Построение клиентского приложения на Visual Basic
Межъязыковое наследование в действии
Понятие закрытых сборок
Понятие процесса зондирования
Конфигурирование закрытых сборок
Роль файла Арр.Config
Понятие разделяемых сборок
Понятие строгих имен
Генерация строгих имен в командной строке
Гёнерация строгих имен в Visual Studio
Установка строго именованных сборок в GAC
Использование разделяемой сборки
Конфигурирование разделяемых сборок
Построение разделяемой сборки версии 2.0.0.0
Динамическое перенаправление на специфичные версии разделяемой сборки
Понятие сборок политик издателя
Элeмeнт <codeBase>
Пространствоимен System.Configuration
Документация по схеме конфигурационного файла
Резюме
Глава 15. Рефлексия типов, позднее связывание и программирование с использованием атрибутов
Исследование блока TypeRef
Документирование определяемой сборки
Документирование ссылаемых сборок
Документирование строковых литералов
Понятие рефлексии
Построение специального средства для просмотра метаданных
Рефлексия полей и свойств
Рефлексия реализованных интерфейсов
Отображение различных дополнительных деталей
Рефлексия обобщенных типов
Рефлексия параметров и возвращаемых значений методов
Динамически загружаемые сборки
Рефлексия разделяемых сборок
Позднее связывание
Вызов методов без параметров
Вызов методов с параметрами
Роль атрибутов .NET
Применение атрибутов в C#
Сокращенная нотация атрибутов C#
Указание параметров конструктора для атрибутов
Атрибут [Obsolete] вдействии
Построение специальных атрибутов
Синтаксис именованных свойств
Ограничение использования атрибутов
Атрибуты уровня сборки
Рефлексия атрибутов с использованием раннего связывания
Рефлексия атрибутов с использованием позднего связывания
Возможное применение на практике рефлексии, позднего связывания и специальных атрибутов
Построение расширяемого приложения
Построение оснастки на C#
Построение оснастки на Visual Basic
Построение расширяемого приложения Windows Forms
Резюме
Глава 16. Динамические типы и среда DLR
Роль сборки Microsoft.CSharp.dll
Область применения ключевого слова dynamic
Ограничения ключевого слова dynamic
Практическое применение ключевого слова dynamiс
Роль деревьев выражений
Роль пространства имен System. Dynamic
Динамический поиск в деревьях выражений во время выполнения
Упрощение вызовов с поздним связыванием посредством динамических типов
Упрощение взаимодействия с СОМ посредством динамических данных
Роль основных сборок взаимодействия
Встраивание метаданных взаимодействия
Общие сложности взаимодействия с СОМ
Взаимодействие с СОМ с использованием динамических данных C#
Резюме
Глава 17. Процессы, домены приложений и объектные контексты
Взаимодействие с процессами на платформе .NET
Исследование конкретного процесса
Исследование набора потоков процесса
Исследование набора модулей процесса
Запуск и останов процессов программным образом
Управление запуском процесса с использованием класса ProcessStartInfo
Домены приложений .NET
Взаимодействие со стандартным доменом приложения
Получение уведомлений о загрузке сборок
Создание новых доменов приложений
Выгрузка доменов приложений программным образом
Контекстные границы объектов
Определение контекстно-связанного объекта
Исследование контекста объекта
Итоговые сведения о процессах, доменах приложений и контекстах
Резюме
Глава 18. Язык СИ и роль динамических сборок
Директивы, атрибуты и коды операций CIL
Роль атрибутов CIL
Роль кодов операций CIL
Разница между кодами операций и их мнемоническими эквивалентами в CIL
Основанная на стеке природа CIL
Возвратноепроектирование
Взаимодействие с CIL: модификация файла *.il
Компиляция CIL-кода с помощью ilasm.exe
Poль инcтpyмeнтa peverify.exe
Директивы и атрибуты CIL
Определение текущей сборки в CIL
Определение пространств имен в CIL
Определение типов классов в CIL
Определение и реализация интерфейсов в CIL
Определение структур в CIL
Определение перечислений в CIL
Определение обобщений в CIL
Компиляция файла CILTypes . il
Соответствия между базовыми классами .NET, C# и CIL
Определение членов типов в CIL
Определение конструкторов типа в CIL
Определение свойств в CIL
Определение параметров членов
Исследование кодов операций CIL
Объявление локальных переменных в CIL
Отображение параметров на локальные переменные в CIL
Скрытая ссылка this
Представление итерационных конструкций в CIL
Создание сборки .NET на CIL
Построение сборки CILCarClient.exe
Динамические сборки
Роль типа System.Reflection.Emit.ILGenerator
Выдача динамической сборки
Выдача сборки и набора модулей
Роль типа ModuleBuilder
Выдача типа HelloClass и строковой переменной-члена
Выдача конструкторов
Использование динамически сгенерированной сборки
Резюме
Часть VI. Введение в библиотеки базовых классов .NET
Роль синхронизации потоков
Краткий обзор делегатов .NET
Асинхронная природа делегатов

Интерфейс System.IAsyncResult
Асинхронный вызов метода
Роль делегата AsyncCallback
Роль класса AsyncResult
Передача и получение специальных данных состояния
Пространство имен System.Threading
Класс System.Threading.Thread
Свойство Name
Свойство Priority
Ручное создание вторичных потоков
Работа с делегатом ParametrizedThreadStart
Класс AutoResetEvent
Потоки переднего плана и фоновые потоки
Проблемы параллелизма
Синхронизация с использованием типа System.Threading.Monitor
Синхронизация с использованием типа System.Threading.Interlocked
Синхронизация с использованием атрибута [Synchronization]
Программирование с использованием обратных вызовов Timer
Пул потоков CLR
Параллельное программирование с использованием TPL
Роль класса Parallel
Обеспечение параллелизма данных с помощью класса Parallel
Доступ к элементам пользовательского интерфейса во вторичных потоках
Класс Task
Обработка запроса на отмену
Обеспечение параллелизма задач с помощью класса Parallel
Выполнение запроса PLINQ
Отмена запроса PLINQ
Асинхронные вызовы в версии .NET 4.5
Соглашения об именовании асинхронных методов
Асинхронные методы, возвращающие void
Асинхронные методы с множеством контекстов await
Модернизация примера AddWithThreads с использованием asycn/await
Резюме
Глава 20. Файловый ввод-вывод и сериализация объектов
Абстрактный базовый класс FileSystemInfo
Работа с типом DirectoryInfo
Создание подкаталогов с помощью типа DirectoryInfo
Работа с типом Directory
Работа с типом DriveInfo
Работа с классом FileInfo
Работа с типом F i 1 e
Абстрактный класс Stream
Работа с классами StreamWriter и StreamReader
Чтение из текстового файла
Прямое создание экземпляров классов StreamWriter/StreamReader
Работа с классами StringWriter и StringReader
Работа с классами BinaryWriter и BinaryReader
Программное отслеживание файлов
Понятие сериализации объектов
Конфигурирование объектов для сериализации
Открытые поля, закрытые поля и открытые свойства
Выбор форматера сериализации
Точность типов среди форматеров
Сериализация объектов с использованием BinaryFormatter
Сериализация объектов с использованием SoapFormatter
Сериализация объектов с использованием XmlSerializer
Сериализация коллекций объектов
Настройка процессов сериализации SOAP и двоичной сериализации
Настройка сериализации с использованием ISeriаlizable
Настройка сериализации с использованием атрибутов
Резюме
Глава 21. ADO.NET, часть I: подключенный уровень
Поставщики данных ADO.NET
О сборке System.Data.0racleClient.dll
Получение сторонних поставщиков данных ADO.NET
Дополнительные пространства имен ADO.NET
Типы из пространства имен System.Data
Роль интерфейса IDbTransaction
Роль интерфейса IDbCommand
Роль интерфейсов IDbDataParameter и IDataParameter
Роль интерфейсов IDbDataAdapter и IDataAdapter
Роль интерфейсов IDataReader и IDataRecord
Абстрагирование поставщиков данных с помощью интерфейсов
Создание базы данных AutoLot
Занесение тестовых записей в таблицу Inventory
Создание таблиц Customers и Orders
Визуальное создание отношений между таблицами
Модель фабрик поставщиков данных ADO.NET
Потенциальный недостаток модели фабрик поставщиков данных
Элемент <connectionStrings>
Понятие подключенного уровня ADO.NET
Работа с объектами ConnectionStringBuilder
Работа с объектами команд
Работа с объектами чтения данных
Создание многократно используемой библиотеки доступа к данным
Добавление логики вставки
Добавление логики удаления
Добавление логики обновления
Добавление логики выборки
Работа с параметризированными объектами команд
Выполнение хранимой процедуры
Создание приложения с консольным пользовательским интерфейсом
Понятие транзакций базы данных
Добавление таблицы CreditRisks в базу данных AutoLot
Добавление метода транзакции в InventoryDAL
Тестирование транзакции базы данных
Резюме
Глава 22. AD0.NET, часть II: автономный уровень
Роль объектов DataSet
Основные методы класса DatаSet
Создание DataSet
Работа с объектами DataColumn
Включение автоинкрементных полей
Добавление объектов DataColumn в DataTable
Работа с объектами DataRow
Свойство DataRowVersion
Работа с объектами DatаTable
Получение данных из объекта DataSet
Обработка данных из DataTable с использованием объектов DataTableReader 807 Сериализация объектов DataTable и DataSet в формате XML
Сериализация объектов DataTable и DataSet в двоичном формате
Привязка объектов DataTable к графическим пользовательским интерфейсам Windows Forms
Удаление строк из DataTable
Выборка строк на основе критерия фильтрации
Обновление строк в DataTable
Работа с типом DataView
Работа с адаптерами данных
Отображение имен из базы данных на дружественные к пользователю имена
Добавление в AutoLotDAL.dll функциональности автономного уровня
Конфигурирование адаптера данных с использованием SqlCommandBuilder
Установка номера версии
Тестирование функциональности автономного уровня
Объекты DatаSet с несколькими таблицами и отношения между данными
Построение отношений между таблицами
Обновление таблиц базы данных
Навигация между связанными таблицами
Инструменты визуального конструирования баз данных Windows Forms
Сгенерированный файл Арр.config
Исследование строго типизированного класса DatаSet
Исследование строго типизированного класса DataTable
Исследование строго типизированного класса DataRow
Исследование строго типизированного адаптера данных
Завершение приложения Windows Forms
Изоляция строго типизированного кода работы с базой данных в библиотеке классов
Выборка данных с помощью сгенерированного кода
Вставка данных с помощью сгенерированного кода
Удаление данных с помощью сгенерированного кода
Вызов хранимой процедуры с помощью сгенерированного кода
Программирование с помощью LINQ to DataSet
Получение объекта DataTable, совместимого с LINQ
Заполнение новых объектов DataTable из запросов LINQ
Резюме
Глава 23. AD0.NET, часть III: Entity Framework
Строительные блоки Entity Framework
Роль служб объектов
Роль клиента сущности
Роль файла *.edmx
Роль классов 0bjectContext и 0bjectSet<T>
Собираем все вместе
Построение и анализ первой модели EDM
Изменение формы сущностных данных
Просмотр отображений
Просмотр сгенерированного файла *.edmx
Просмотр сгенерированного исходного кода
Улучшение сгенерированного исходного кода
Программирование с использованием концептуальной модели
Обновление записи
Запросы с помощью LINQ to Entities
Запросы с помощью Entity SQL
Работа с объектом EntityDataReader
Проект AutoLotDAL версии 4, теперь с сущностями
Использование навигационных свойств внутри запросов LINQ to Entity
Вызов хранимой процедуры
Привязка данных сущностей к графическим пользовательским интерфейсам Windows Forms
Продолжение изучения API-интерфейсов доступа к данным в .NET
Резюме
Глава 24. Введение в LINQ to XML
Синтаксис литералов Visual Basic как наилучший интерфейс LINQ to XML
Члены пространства имен System.Xml.Linq
Работа с XElement и XDocument
Загрузка и разбор XML-содержимого
Манипулирование XML-документом в памяти
Импорт файла Inventory.xml
Определение вспомогательного класса LINQ to XML
Связывание пользовательского интерфейса и вспомогательного класса
Резюме
Глава 25. Введение в Windows Communication Foundation
Роль служб COM+/Enterprise Services
Роль MSMQ
Роль .NET Remoting
Роль веб-служб XML
Роль WCF
Обзор архитектуры, ориентированной на службы
WCF заключение
Исследование основных сборок WCF
Шаблоны проектов WCF в Visual Studio
Базовая структура приложения WCF
Адрес, привязка и контракт в WCF
Понятие привязок WCF
Понятие адресов WCF
Построение службы WCF
Атрибут [OperationContract]
Служебные типы как контракты операций
Хостинг службы WCF
Кодирование с использованием типа ServiceHost
Указание базовых адресов
Подробный анализ типа ServiceHost
Подробный анализ элемента <system.serviceModel>
Включение обмена метаданными
Построение клиентского приложения WCF
Генерация кода прокси с использованием Visual Studio
Конфигурирование привязки на основе TCP
Упрощение конфигурационных настроек
Открытие одной службы WCF, использующей множество привязок
Изменение параметров привязки WCF
Использование конфигурации стандартного поведения МЕХ
Обновление клиентского прокси и выбор привязки
Использование шаблона проекта WCF Service Library
Тестирование службы WCF с помощью WcfTestClient.exe
Изменение конфигурационных файлов с помощью SvcConfigEditor.exe
Хостинг службы WCF внутри Windows-службы
Включение МЕХ
Создание программы установки для Windows-службы
Установка Windows-службы
Асинхронный вызов службы из клиента
Проектирование контрактов данных WCF
Реализация контракта службы
Роль файла *.svc
Содержимое файла Web.config
Тестирование службы
Резюме
Глава 26. Введение в Windows Workflow Foundation
Построение простого рабочего потока
Хостинг рабочего потока с использованием класса WorkflowInvoker
Хостинг рабочего потока с использованием класса WorkflowApplication
Итоги по первому рабочему потоку
Знакомство с действиями рабочих потоков
Действия блок-схемы
Действия обмена сообщениями
Действия конечного автомата
Действия исполняющей среды и действия-примитивы
Действия транзакций
Действия над коллекциями и действия обработки ошибок
Построение рабочего потока в виде блок-схемы
Работа с действием InvokeMethod
Определение переменных уровня рабочего потока
Работа с действием FlowDecision
Работа с действием TerminateWorkflow
Построение условия True
Работа с действием ForEach<T>
Завершение приложения
Промежуточные итоги
Определение начального проекта
Импорт сборок и пространств имен
Определение аргументов рабочего потока
Определение переменных рабочего потока
Работа с действием Assign
Работа с действиями If и Switch
Построение специального действия кода
Использование библиотеки рабочего потока
Резюме
Часть VII. Windows Presentation Foundation
Обеспечение разделения ответственности через XAML 4
Обеспечение оптимизированной модели визуализации
Упрощение программирования сложных пользовательских интерфейсов
Различные варианты приложений WPF
WPF-приложения на основе навигации
Приложения XBAP
Отношения между WPF и SilverLight
Исследование сборок WPF
Роль класса Window
Роль класса System.Windows.Controls.ContentControl
Роль класса System.Windows.Controls.Control
Роль класса System.Windows.FrameworkElement
Роль класса System.Windows.UIElement
Роль класса System.Windows.Media.Visual
Роль класса System.Windows.DependencyObject
Роль класса System.Windows.Threading.DispatcherObject
Построение приложения WPF без XAML
Создание простого пользовательского интерфейса
Взаимодействие с данными уровня приложения
Обработка закрытия объекта Window
Перехват событий мыши
Перехват клавиатурных событий
Построение приложения WPF с использованием только XAML
Определение oбъeктa Application в XAML
Обработка файлов XAML с помощью msbuild.exe
Трансформация разметки в сборку .NET
Роль BAML
Отображение XAML-разметки приложения на код C#
Итоговые замечания о процессе трансформирования XAML в сборку
Синтаксис XAML для WPF
Пространства имен XAML XML и “ключевые слова” XAML
Управление видимостью классов и переменных-членов
Элементы XAML, атрибуты XAML и преобразователи типов
Понятие синтаксиса “свойство-элемент” B XAML
Понятие присоединяемых свойств XAML
Понятие расширений разметки XAML
Построение приложений WPF с использованием файлов отделенного кода
Добавление файла кода для класса MyApp
Обработка файлов кода с помощью msbuild.exe
Построение приложений WPF с использованием Visual Studio
Панель инструментов и визуальный конструктор/редактор XAML
Установка свойств с использованием окна Properties
Обработка событий с использованием окна Properties
Обработка событий в редакторе XAML
Окно Document Outline
Просмотр автоматически сгенерированных файлов кода
Построение специального редактора XAML с помощью Visual Studio
Реализация события Loaded
Реализация события Сliсk объекта Buttоn
Реализация события Сlоsed
Тестированиеприложения
Изучение документации WPF
Резюме
Глава 28. Программирование с использованием элементов управления WPF
Элементы управления документов WPF
Общие диалоговые окна WPF
Подробные сведения находятся в документации
Краткий обзор визуального конструктора WPF в Visual Studio
Работа с редактором Document Outline
Управление компоновкой содержимого с использованием панелей
Позиционирование содержимого внутри панелей WrарPаnel
Позиционирование содержимого внутри панелей StackPanel
Позиционирование содержимого внутри панелей Grid
Позиционирование содержимого внутри панелей DockPanel
Включение прокрутки в типах панелей
Конфигурирование панелей с использованием визуальных конструкторов VisuadStudio
Построение окна с использованием вложенных панелей
Построениепанелиинструментов
Построение строки состояния
Завершение проектирования пользовательского интерфейса
Реализация обработчиков событий MouseEnter/MouseLeave
Реализация логики проверки правописания
Понятие команд WPF
Подключение команд к свойству Command
Подключение команд к произвольным действиям
Работа с командами Open и Save
Более глубокий взгляд на API-интерфейсы и элементы управления WPF
Построение вкладки Ink API
Элeмeнт yпpaвлeния RadioButton
Обработка событий для вкладки InkАРI
Элeмeнт yпpaвлeния InkCanvas
Элемент управления ComboBox
Сохранение, загрузка и очистка данных InkCanvas
Введение в интерфейс Documents API
Диспетчеры компоновки документа
Построение вкладки Documents
Включение аннотаций и “клейких” заметок
Сохранение и загрузка потокового документа
Введение в модель привязки данных WPF
Установка привязки данных с использованием Visual Studio
Свойство DataContext
Преобразование данных с использованием IValueConverter
Установка привязок данных в коде
Построение вкладки DataGrid
Резюме
Глава 29. Службы визуализации графики WPF
Визуализация графических данных с использованием фигур
Удаление прямоугольников, эллипсов и линий с поверхности Canvas
Работа с элементами Polyline и Polygon
Работа с элементом Path
Кисти и перья WPF
Конфигурирование кистей в коде
Конфигурированйеперьев
Применение графических трансформаций
Трансформация данных Canvas
Работа с редактором трансформаций Visual Studio
Применение трансформаций на этапе проектирования
Трансформация холста в коде
Визуализация графических данных с использованием рисунков и геометрий
Рисование с помощью DrawingBrush
Включение типов Drawing в DrawingImage
Роль инструмента Expression Design
Импорт графических данных в проект WPF
Взаимодействие с объектами изображения
Визуализация графических данных с использованием визуального уровня
Первый взгляднакласс DrawingVisual
Визуализация графических данных в специальном диспетчере компоновки
Реагирование на операции проверки попадания
Резюме
Глава 30. Ресурсы, анимация и стили WPF
Программная загрузка изображения
Роль свойства Resources
Определение ресурсов уровня окна
Расширение разметки {StaticResource}
Расширение разметки {DynamicResource}
Ресурсы уровня приложения
Определение объединенных словарей ресурсов
Определение сборки, включающей только ресурсы
Службы анимации WPF
Свойства To, From и By
Роль базового класса Timeline
Реализация анимации в коде C#
Управление темпом анимации
Запуск в обратном порядке и циклическое выполнение анимации
Реализация анимации в разметке XAML
Роль триггеров событий
Анимация с использованием дискретных ключевых кадров
Роль стилей WPF
Переопределение настроек стиля
Автоматическое применение стиля с помощью TargetType
Создание подклассов существующих стилей
Роль неименованных стилей
Определение стилей с триггерами
Определение стилей с несколькими триггерами
Анимированные стили
Применениестилейвкоде
Резюме
Глава 31. Свойства зависимости, маршрутизируемые события и шаблоны
Важные замечания относительно оболочек свойств CLR
Построение специального свойства зависимости
Реагирование на изменение свойства
Маршрутизируемые события
Продолжение или прекращение пузырькового распространения
Роль маршрутизируемых туннельных событий
Логические деревья, визуальные деревья и стандартные шаблоны
Программный просмотр визуального дерева
Программный просмотр стандартного шаблона элемента управления
Построение специального шаблона элемента управления с помощью инфраструктуры триггеров
Встраивание визуальных подсказок с использованием триггеров
Роль расширения разметки {TemplateBinding}
Роль класса ContentPresenter
Включение шаблонов в стили
Резюме
Часть VIII. ASP.NET Web Forms
HTTP — протокол без хранения состояния
Веб-приложенияивеб-серверы
Веб-сервер разработки ASP.NET
Роль языка HTML
Роль форм HTML
Инструменты визуального конструктора HTML в Visual Studio
Построение HTML-формы
Роль сценариев клиентской стороны
Обратная отправка веб-серверу
Обзор API-интерфейса ASP.NET
Основные функциональные возможности ASP.NET 4.0 и 4.5
Построение однофайловой веб-страницы ASP. NET
Проектирование пользовательского интерфейса
Добавление логики доступа к данным
Роль директив ASP.NET
Aнaлиз блoкa script
Анализ объявлений элементов управления ASP. NET
Построение веб-страницы ASP NET с использованием файлов кода
Изменение файла кода
Отладка и трассировка страниц ASP.NET
Сравнение веб-сайтов и веб-приложений ASP.NET
Структура каталогов веб-сайта ASP.NET
Роль папки App_Cоde
Цепочка наследования для типа Page
Взаимодействие с входящим HTTP-запросом
Доступ к входным данным формы
Свойство IsPostBack
Взаимодействие с исходящим НТТР-ответом
Перенаправление пользователей
Жизненный цикл веб-страницы ASP.NET
Событие Errоr
Poльфaйлaweb.config
Резюме
Глава 33. Веб-элементы управления, мастер-страницы и темы ASP.NET
Свойство AutoPostBack
Базовые классы Control и WebControl
Динамическое добавление и удаление элементов управления
Взаимодействие с динамически созданными элементами управления
Функциональность базового класса WebControl
Основные категории веб-элементов управления ASP.NET
Документация по веб-элементам управления
Построение примера веб-сайта ASP. NET
Определение стандартной страницы содержимого Default.aspx
Проектирование страницы содержимого Inventory.aspx
Проектирование страницы содержимого BuildCar.aspx
Роль элементов управления проверкой достоверности
Элемент управления RequiredFieldValidator
Элемент управления RegularExpressionValidator
Элемент управления RangeValidator
Элемент управления CompareValidator
Создание итоговой панели проверки достоверности
Определение групп проверки достоверности
Работа с темами
Применение тем ко всему сайту
Применение тем на уровне страницы
Свойство SkinID
Программное назначение тем
Резюме
Глава 34. Управление состоянием в ASP.NET
Проблема поддержки состояния
Приемы управления состоянием ASP.NET
Роль состояния представления ASP.NET
Добавление специальных данных в состояние представления
Рольфайла Global.asax
Базовый класс HttpApplication
Различие между состоянием приложения и состоянием сеанса
Модификация данных приложения
Обработка останова веб-приложения
Работа с кешем приложения
Модификация файла *.aspx
Поддержка данных сеанса
Cookie-наборы
Чтение входящих cookie-данных
Poль элeмeнтa <sessionState>
Хранение информации о сеансах в выделенной базе данных
Введение в API-интерфейс ASP. NET Profile
Определение пользовательского профиля в web.config
Программный доступ к данным профиля
Группирование данных профиля и сохранение специальных объектов
Резюме
Предметный указатель