Об авторе
О техническом редакторе
Благодарности
Введение
Автор и читатели — одна команда
Краткий обзор содержания
Исходный код примеров
От издательства
Часть I. Общие сведения о языке С# и платформе .NET
Глава 1. Философия .NET
Подход с применением языка C++ и платформы MFC
Подход с применением Visual Basic 6.0
Подход с применением Java
Подход с применением СОМ
Сложность представления типов данных СОМ
Решение .NET
Роль библиотек базовых классов
Что привносит язык С#
Другие языки программирования с поддержкой .NET
Что собой представляют сборки в .NET
Роль CIL
Преимущества CIL
Компиляция CIL-кода в инструкции, ориентированные на конкретную платформу
Роль метаданных типов в .NET
Роль манифеста сборки
Типы классов
Типы интерфейсов
Типы структур
Типы перечислений
Типы делегатов
Члены типов
Встроенные типы данных
Забота о соответствии правилам CLS
Различия между сборками, пространствами имен и типами
Получение доступа к пространствам имен программным образом
Добавление ссылок на внешние сборки
Изучение сборки с помощью утилиты ildasm. exe
Просмотр метаданных типов
Изучение сборки с помощью утилиты Reflector
Развертывание исполняющей среды .NET
Не зависящая от платформы природа .NET
Резюме
Глава 2. Создание приложений на языке С#
Создание приложений на С# с использованием csc.exe
Добавление ссылок на внешние сборки
Добавление ссылок на несколько внешних сборок
Компиляция нескольких файлов исходного кода
Работа с ответными файлами в С#
Создание приложений .NET с использованием Notepad++
Создание приложений.NET с помощью SharpDevelop
Создание приложений .NET с использованием Visual С# 2010 Express
Создание приложений .NET с использованием Visual Studio 2010
Некоторые уникальные функциональные возможности Visual Studio 2010
Ориентирование на .NET Framework в диалоговом окне New Project
Использование утилиты Solution Explorer
Утилита Class View
Утилита Object Browser
Встроенная поддержка рефакторинга программного кода
Возможности для расширения и окружения кода
Утилита Class Designer
Интегрируемая система документации . NET Framework 4.0
Резюме
Часть II. Главные конструкции программирования на С#
Глава 3. Главные конструкции программирования на С#: часть I
Спецификация кода ошибки в приложении
Обработка аргументов командной строки
Указание аргументов командной строки в Visual Studio 2010
Интересное отклонение от темы: некоторые дополнительные члены класса System.Environment
Класс System.Console
Форматирование вывода, отображаемого в окне консоли
Форматирование числовых данных г
Форматирование числовых данных в приложениях, отличных от консольных
Системные типы данных и их сокращенное обозначение в С#
Внутренние типы данных и операция new
Иерархия классов типов данных
Члены числовых типов данных
Члены System.Boolean
Члены System.Char
Синтаксический разбор значений из строковых данных
Типы System.DateTimeи System.TimeSpan
Пространство имен System.Numerics в .NET4.0
Работа со строковыми данными
Конкатенация строк
Управляющие последовательности символов
Определение дословных строк
Строки и равенство
Неизменная природа строк
Тип System.Text.StringBuilder
Сужающие и расширяющие преобразования типов данных
Настройка проверки на предмет возникновения условий переполнения в масштабах проекта
Ключевое слово unchecked
Роль класса System. Convert
Неявно типизированные локальные переменные
Неявно типизированные данные являются строго типизированными
Польза от неявно типизированных локальных переменных
Итерационные конструкции в С#
Цикл foreach
Использование var в конструкциях foreach
Конструкции whilendo/while
Конструкции принятия решений и операции сравнения
Оператор switch
Резюме
Глава 4. Главные конструкции программирования на С#: часть II
Модификатор out
Модификатор геf
Модификатор params
Определение необязательных параметров
Вызов методов с использованием именованных параметров
Перегрузка методов
Массивы в С#
Неявно типизированные локальные массивы
Определение массива объектов
Работа с многомерными массивами
Использование массивов в качестве аргументов и возвращаемых значений
Базовый класс System. Array
Тип enum
Объявление переменных типа перечислений
Тип System.Enum
Динамическое обнаружение пар \
Типы структур
Создание переменных типа структур
Типы значения, ссылочные типы и операция присваивания
Типы значения, содержащие ссылочные типы
Передача ссылочных типов по значению
Передача ссылочных типов по ссылке
Заключительные детали относительно типов значения и ссылочных типов
Нулевые типы в С #
Операция ??
Резюме
Глава 5. Определение инкапсулированных типов классов
Понятие конструктора
Определение специальных конструкторов
Еще раз о конструкторе по умолчанию
Роль ключевого слова this
Обзор потока конструктора
Еще раз об необязательных аргументах
Понятие ключевого слова static
Определение статических полей данных
Определение статических конструкторов
Определение статических классов
Основы объектно-ориентированного программирования
Роль наследования
Роль полиморфизма
Модификаторы доступа С#
Модификаторы доступа и вложенные типы
Первый принцип: службы инкапсуляции С#
Инкапсуляция с использованием свойств .NET
Использование свойств внутри определения класса
Внутреннее представление свойств
Управление уровнями видимости операторов get/set свойств
Свойства, доступные только для чтения и только для записи
Статические свойства
Понятие автоматических свойств
Замечания относительно автоматических свойств и значений по умолчанию
Понятие синтаксиса инициализации объектов
Инициализация вложенных типов
Работа с данными константных полей
Статические поля только для чтения
Понятие частичных типов
Резюме
Глава 6. Понятия наследования и полиморфизма
О множественном наследовании
Ключевое слово sealed
Изменение диаграмм классов Visual Studio
Второй принцип ООП: подробности о наследовании
Хранение фамильных тайн: ключевое слово protected
Добавление запечатанного класса
Реализация модели включения/делегации
Третий принцип ООП: поддержка полиморфизма в С#
Переопределение виртуальных членов в Visual Studio 2010
Запечатывание виртуальных членов
Абстрактные классы
Полиморфный интерфейс
Сокрытие членов
Правила приведения к базовому и производному классу
Ключевое слово is
Родительский главный класс System.Object
Тестирование модифицированного класса Регson
Статические члены System.Object
Резюме
Глава 7. Структурированная обработка исключений
Роль обработки исключений в .NET
Базовый класс System. Exception
Простейший пример
Перехват исключений
Конфигурирование состояния исключения
Свойство StackTrace
Свойство НеlpLink
Свойство Data
Создание специальных исключений, способ первый
Создание специальных исключений, способ второй
Создание специальных исключений, способ третий
Обработка многочисленных исключений
Передача исключений
Внутренние исключения
Блок finally
Какие исключения могут выдавать методы
К чему приводят необрабатываемые исключения
Отладка необработанных исключений с помощью Visual Studio
Несколько слов об исключениях, связанных с поврежденным состоянием
Резюме
Глава 8. Время жизни объектов
Базовые сведения о времени жизни объектов
Установка объектных ссылок в пи 11
Роль корневых элементов приложения
Поколения объектов
Параллельная сборка мусора в версиях .NET 1.0 — .NET 3.5
Тип System. GC
Создание финализируемых объектов
Описание процесса финализации
Создание высвобождаемых объектов
Создание финализируемых и высвобождаемых типов
Отложенная инициализация объектов
Резюме
Часть III. Дополнительные конструкции программирования на С#
Глава 9. Работа с интерфейсами
Определение специальных интерфейсов
Реализация интерфейса
Вызов членов интерфейса на уровне объектов
Получение ссылок на интерфейсы с помощью ключевого слова i s
Использование интерфейсов в качестве параметров
Использование интерфейсов в качестве возвращаемых значений
Массивы типов интерфейсов
Реализация интерфейсов с помощью Visual Studio 2010
Устранение конфликтов на уровне имен за счет реализации интерфейсов явным образом
Проектирование иерархий интерфейсов
Создание методов итератора с помощью ключевого слова yield
Создание именованного итератора
Внутреннее представление метода итератора
Более сложный пример клонирования
Использование специальных свойств и специальных типов для сортировки
Резюме
Глава 10. Обобщения
Проблемы с безопасностью типов
Роль параметров обобщенных типов
Указание параметров типа для обобщенных членов
Указание параметров типов для обобщенных интерфейсов
Пространство имен System.Collections.Generic
Работа с классом List<T>
Работа с классом Stack<T>
Работа с классом Queue<T>
Работа с классом SortedSet<T>
Создание специальных обобщенных методов
Создание специальных обобщенных структур и классов
Обобщенные базовые классы
Ограничение параметров типа
Недостаток ограничений операций
Резюме
Глава 11. Делегаты, события и лямбда-выражения
Определение типа делегата в С#
Базовые классы System.MulticastDelegate и System.Delegate
Простейший пример делегата
Отправка уведомлений о состоянии объекта с использованием делегатов
Удаление целей из списка вызовов делегата
Синтаксис групповых преобразований методов
Понятие ковариантности делегатов
Понятие обобщенных делегатов
Понятие событий С#
\
Прослушивание входящих событий
Упрощенная регистрация событий с использованием Visual Studio 2010
Создание специальных аргументов событий
Обобщенный делегат Event Handle r<T>
Понятие анонимных методов С#
Понятие лямбда-выражений
Обработка аргументов внутри множества операторов
Лямбда-выражения с несколькими параметрами и без параметров
Усовершенствование примера PrimAndProperCarEvents за счет использования лямбда-выражений
Резюме
Глава 12. Расширенные средства языка С#
Перегрузка методов-индексаторов
Многомерные индексаторы
Определения индексаторов в интерфейсных типах
Понятие перегрузки операций
А как насчет операций += и -=?
Перегрузка унарных операций
Перегрузка операций эквивалентности
Перегрузка операций сравнения
Внутреннее представление перегруженных операций
Финальные соображения относительно перегрузки операций
Понятие преобразований пользовательских типов
Преобразования между связанными типами классов
Создание специальных процедур преобразования
Дополнительные явные преобразования типа Square
Определение процедур неявного преобразования
Внутреннее представление процедур пользовательских преобразований
Понятие расширяющих методов
Понятие частичных методов
Понятие анонимных типов
Анонимные типы, содержащие другие анонимные типы
Работа с типами указателей
Работа с операциями * и &
Небезопасная и безопасная функция обмена значений
Ключевое слово stackalloc
Закрепление типа ключевым словом fixed
Ключевое слово sizeof
Резюме
Глава 13. LINQ to Objects
Синтаксис инициализации объектов и коллекций
Лямбда-выражения
Расширяющие методы
Анонимные типы
Роль LINQ
Основные сборки LINQ
Применение запросов LINQ к элементарным массивам
Рефлексия результирующего набора LINQ
LINQ и неявно типизированные локальные переменные
LINQ и расширяющие методы
Роль отложенного выполнения
Роль немедленного выполнения
Возврат результата запроса LINQ
Применение запросов LINQ к объектам коллекций
Применение запросов LINQ к необобщенным коллекциям
Исследование операций запросов LINQ
Получение подмножества данных
Проекция новых типов данных
Получение счетчиков посредством Enumerable •
Обращение результирующих наборов
Выражения сортировки
LINQ как лучшее средство построения диаграмм
Исключение дубликатов
Агрегатные операции LINQ
Внутреннее представление операторов запросов LINQ
Построение выражений запросов с использованием типа Enumerable и лямбда-выражений
Построение выражений запросов с использованием типа Enumerable и анонимных методов
Построение выражений запросов с использованием типа Enumerable и низкоуровневых делегатов
Резюме
Часть IV. Программирование с использованием сборок .NET
Глава 14. Конфигурирование сборок .NET
Устранение конфликтов на уровне имен за счет использования псевдонимов
Создание вложенных пространств имен
Пространство имен, используемое по умолчанию в Visual Studio 2010
Роль сборок .NET
Сборки определяют границы типов
Сборки являются единицами, поддерживающими версии
Сборки являются самоописываемыми
Сборки поддаются конфигурированию
Формат сборки .NET
Заголовок файла CLR
CIL-код, метаданные типов и манифест сборки
Необязательные ресурсы сборки
Однофайловые и многофайловые сборки
Создание и использование однофайловой сборки
Исследование CIL-кода
Исследование метаданных типов
Создание клиентского приложения на С#
Создание клиентского приложения на Visual Basic
Межъязыковое наследование в действии
Создание и использование многофайловой сборки
Исследование файла airvehiсles .dll
Использование многофайловой сборки
Приватные сборки
Процесс зондирования
Конфигурирование приватных сборок
Конфигурационные файлы и Visual Studio 2010
Разделяемые сборки
Генерирование строгих имен в командной строке
Генерирование строгих имен с помощью Visual Studio 2010
Установка сборок со строгими именами в GAC
Просмотр содержимого GAC с помощью проводника Windows
Использование разделяемой сборки
Конфигурирование разделяемых сборок
Создание разделяемой сборки версии 2.0.0.0
Динамическое перенаправление на конкретную версию разделяемой сборки
Сборки политик издателя
Элемент <codeBase>
Пространство имен System. Configuration
Резюме
Глава 15. Рефлексия типов, позднее связывание и программирование с использованием атрибутов
Изучение блока TypeRef
Просмотр метаданных самой сборки
Просмотр метаданных внешних сборок, на которые имеются ссылки в текущей сборке
Просмотр метаданных строковых литералов
Рефлексия
Создание специальной программы для просмотра метаданных
Рефлексия полей и свойств
Рефлексия реализуемых интерфейсов
Отображение различных дополнительных деталей
Рефлексия обобщенных типов
Рефлексия параметров и возвращаемых значений методов
Динамически загружаемые сборки
Рефлексия разделяемых сборок
Позднее связывание
Вызов методов без параметров
Вызов методов с параметрами
Роль атрибутов .NET
Применение предопределенных атрибутов в С#
Сокращенное обозначение атрибутов в С#
Указание параметров конструктора для атрибутов
Атрибут [Obsolete] в действии
Создание специальных атрибутов
Синтаксис именованных свойств
Ограничение использования атрибутов
Атрибуты уровня сборки и модуля
Рефлексия атрибутов с использованием раннего связывания
Рефлексия атрибутов с использованием позднего связывания
Возможное применение на практике рефлексии, позднего связывания и специальных атрибутов
Создание расширяемого приложения
Создание оснастки на С#
Создание оснастки на Visual Basic
Создание расширяемого приложения Windows Fbrms
Резюме
Глава 16. Процессы, домены приложений и контексты объектов
Взаимодействие с процессами в рамках платформы .NET
Изучение конкретного процесса
Изучение набора потоков процесса
Изучение набора модулей процесса
Запуск и останов процессов программным образом
Управление запуском процесса с использованием класса ProcessStartlnfo
Домены приложений .NET
Взаимодействие с используемым по умолчанию доменом приложения
Получение уведомлений о загрузке сборок
Создание новых доменов приложений
Выгрузка доменов приложений программным образом
Границы контекстов объектов
Определение контекстно-зависимого объекта
Инспектирование контекста объекта
Итоговые сведения о процессах, доменах приложений и контекстах
Резюме
Глава 17. Язык CIL и роль динамических сборок
Директивы, атрибуты и коды операций в CIL
Роль атрибутов CIL
Роль кодов операций CIL
Разница между кодами операций и их мнемоническими эквивалентами в CIL
Помещение и извлечение данных из стека в CIL
Двунаправленное проектирование
Взаимодействие с CIL: модификация файла * . i 1
Компиляция CIL-кодас помощью ilasm.exe
Создание CIL-кода с помощью SharpDevelop
Роль 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
Создание динамической сборки
Генерация сборки и набора модулей
Роль типа Module Builder
Генерация типа HelloClassn принадлежащей ему строковой переменной
Генерация конструкторов
Использование динамически сгенерированной сборки
Резюме
Глава 18. Динамические типы и исполняющая среда динамического языка
Роль сборки Microsoft.CSharp.dll
Область применения ключевого слова dynamic
Ограничения ключевого слова dynamic
Практическое применение ключевого слова dynamic
Роль деревьев выражений
Роль пространства имен System. Dynamic
Динамический поиск в деревьях выражений во время выполнения
Упрощение вызовов позднего связывания с использованием динамических типов
Упрощение взаимодействия с СОМ посредством динамических данных
Роль первичных сборок взаимодействия
Встраивание метаданных взаимодействия
Общие сложности взаимодействия с СОМ
Взаимодействие с СОМ с использованием средств языка С# 4.0
Резюме
Часть V. Введение в библиотеки базовых классов .NET
Глава 19. Многопоточность и параллельное программирование
Роль синхронизации потоков
Краткий обзор делегатов .NET
Асинхронная природа делегатов
Интерфейс System.IAsyncResult
Асинхронный вызов метода
Роль делегата AsyncCallback
Роль класса AsyncResult
Передача и прием специальных данных состояния
Пространство имен System.Threading
Класс System.Threading.Thread
Свойство Name
Свойство Priority
Программное создание вторичных потоков
Работа с делегатом ParametrizedThreadStart
Класс AutoResetEvent
Потоки переднего плана и фоновые потоки
Пример проблемы, связанной с параллелизмом
Синхронизация с использованием типа System.Threading.Monitor
Синхронизация с использованием типа System.Threading. Interlocked
Синхронизация с использованием атрибута [Synchronization]
Программирование с использованием обратных вызовов Timer
Пул потоков CLR
Параллельное программирование на платформе .NET
Роль класса Parallel
Понятие параллелизма данных
Класс Task
Обработка запроса на отмену
Понятие параллелизма задач
Выполнение запроса PLINQ
Отмена запроса PLINQ
Резюме
Глава 20. Файловый ввод-вывод и сериализация объектов
Абстрактный базовый класс FileSystemlnfo
Работа с типом Directorylnfo
Создание подкаталогов с помощью типа Directorylnfo
Работа с типом Directory
Работа с типом Drive Info
Работа с классом File Info

Работа с типом File
Абстрактный класс Stream
Работа с классами StreamWriter и StreamReader
Чтение из текстового файла
Прямое создание экземпляров классов StreamWriter/StreamReader
Работа с классами StringWriter и StringReader
Работа с классами BinaryWriter и BinaryReader
Программное отслеживание файлов
Понятие сериализации объектов
Конфигурирование объектов для сериализации
Общедоступные поля, приватные поля и общедоступные свойства
Выбор форматера сериализации
Точность типов среди форматеров
Сериализация объектов с использованием BinaryFormatter
Сериализация объектов с использованием SoapFormatter
Сериализация объектов с использованием XmlSerializer
Сериализация коллекций объектов
Настройка процессов сериализации SOAP и двоичной сериализации
Настройка сериализации с использованием интерфейса ISerializable
Настройка сериализации с использованием атрибутов
Резюме
Глава 21. AD0.NET, часть I: подключенный уровень
Поставщики данных ADO.NET
О сборке System.Data.OracleClient.dll
Получение сторонних поставщиков данных ADO.NET
Дополнительные пространства имен ADO.NET
Типы из пространства имен System.Data
Роль интерфейса I DbTrans act ion
Роль интерфейса IDbCommand
Роль интерфейсов IDbDataParameter и IDataParameter
Роль интерфейсов IDbDataAdapter и IDataAdapter
Роль интерфейсов IDataReader и IDataRecord
Абстрагирование поставщиков данных с помощью интерфейсов
Создание базы данных AutoLot
Создание таблиц Customers и Orders
Визуальное создание отношений между таблицами
Модель генератора поставщиков данных ADO. NET
Возможные трудности с моделью генератора поставщиков
Элемент<connectionStrings>
Подключенный уровень ADO.NET
Работа с объектами ConnectionStringBuilder
Работа с объектами команд
Работа с объектами чтения данных
Создание повторно используемой библиотеки доступа к данным
Добавление логики вставки
Добавление логики удаления
Добавление логики изменения
Добавление логики выборки
Работа с параметризованными объектами команд
Выполнение хранимой процедуры
Создание консольного пользовательского интерфейса
Транзакции баз данных
Добавление таблицы CreditRisksB базу данных AutoLot
Добавление метода транзакции в InventoryDAL
Тестирование транзакции в нашей базе данных
Резюме
Глава 22. AD0.NET, часть II: автономный уровень
Роль объектов Data Set
Основные методы класса Data Set
Создание DataSet
Работа с объектами DataColumn
Включение автоинкрементных полей
Добавление объектов DataColumn в DataTable
Работа с объектами DataRow
Свойство DataRowVersion
Работа с объектами DataTable
Получение данных из объекта DataSet
Обработка данных из DataTable с помощью объектов DataTableReader
Сериализация объектов DataTable и DataSet в формате XML
Сериализация объектов DataTable и DataSet в двоичном формате
Привязка объектов DataTable к графическим интерфейсам Windows Forms
Удаление строк из DataTable
Выборка строк с помощью фильтра
Изменение строк в DataTable
Работа с типом DataView
Работа с адаптерами данных
Замена имен из базы данных более понятными названиями
Добавление в AutoLotDAL. dl 1 возможности отключения
Настройка адаптера данных с помощью SqlCommandBuilder
Установка номера версии
Тестирование автономной функциональности
Объекты DataSet для нескольких таблиц и взаимосвязь данных
Создание отношений между таблицами
Изменение таблиц базы данных
Переходы между взаимосвязанными таблицами
Средства конструктора баз данных в Windows Forms
Сгенерированный файл арр. conf ig
Анализ строго типизированного DataSet
Анализ строго типизированного DataTable
Анализ строго типизированного DataRow
Анализ строго типизированного адаптера данных
Завершение приложения Windows Forms
Выделение строго типизированного кода работы с базами данных в библиотеку классов
Выборка данных с помощью сгенерированного кода
Вставка данных с помощью сгенерированного кода
Удаление данных с помощью сгенерированного кода
Вызов хранимой процедуры с помощью сгенерированного кода
Программирование с помощью LINQ to DataSet
Получение DataTable, совместимого с LINQ
Заполнение новых объектов DataTable с помощью LINQ-запросов
Резюме
Глава 23. ADO.NET, часть III: Entity Framework
Строительные блоки Entity Framework
Роль служб объектов
Роль клиента сущности
Роль файла *.edmx
Роль классов ObjectContext и ObjectSet<T>
Собираем все вместе
Построение и анализ первой модели EDM
Изменение формы сущностных данных
Просмотр отображений
Просмотр данных сгенерированного файла *. еdmx
Просмотр сгенерированного исходного кода
Улучшение сгенерированного исходного кода
Программирование с использованием концептуальной модели
Обновление записи
Запросы с помощью LINQ to Entities
Запросы с помощью Entity SQL
Работа с объектом EntityDataReader
Проект AutoLotDAL версии 4.0, теперь с сущностями
Роль навигационных свойств
Использование навигационных свойств внутри запросов LINQ to Entity
Вызов хранимой процедуры
Привязка данных сущностей к графическим пользовательским интерфейсам Windows Fbrms
Резюме
Глава 24. Введение в LINQ to XML
Синтаксис литералов Visual Basic как наилучший интерфейс LINQ to XML
Члены пространства имен System.Xml.Linq
Работа с XElement HXDocument
Загрузка и разбор XML-содержимого
Манипулирование XML-документом в памяти
Импорт файла Inventory, xml
Определение вспомогательного класса LINQ to XML
Оснащение пользовательского интерфейса вспомогательными методами
Резюме
Глава 25. Введение в Windows Communication Foundation
Роль служб СОМ+/Enterprise Services
Роль MSMQ
Роль .NET Remotlng
Роль веб-служб XML
Именованные каналы, сокеты и Р2Р
Роль WCF
Обзор архитектуры, ориентированной на службы
WCF: итоги
Исследование основных сборок WCF
Шаблоны проектов WCF в Visual Studio
Базовая композиция приложения WCF
Понятие ABC в WCF
Понятие привязок WCF
Понятие адресов WCF
Построение службы WCF
Атрибут [OperationContract]
Служебные типы как контракты операций
Хостинг службы WCF
Кодирование с использованием типа ServiceHost
Указание базового адреса
Подробный анализ типа ServiceHost
Подробный анализ элемента <system.serviceModel>
Включение обмена метаданными
Построение клиентского приложения WCF
Генерация кода прокси с использованием Visual Studio 2010
Конфигурирование привязки на основе TCP
Упрощение конфигурационных настроек в WCF 4.0
Предоставление одной службы WCF с использованием множества привязок
Изменение установок для привязки WCF
Конфигурация поведения МЕХ по умолчанию в WCF 4.0
Обновление клиентского прокси и выбор привязки
Использование шаблона проекта WCF Service Library
Тестирование службы WCFс помощью WcfTestClient.exe
Изменение конфигурационных файлов с помощью SvcConfigEditor.exe
Хостинг службы WCF в виде службы Windows
Включение МЕХ
Создание программы установки для службы Windows
Установка службы Windows
Асинхронный вызов службы на стороне клиента
Проектирование контрактов данных WCF
Реализация контракта службы
Роль файла *.svc
Содержимое файла Web. с on fig
Тестирование службы
Резюме
Глава 26. Введение в Windows Workflow Foundation 4.0
Построение простого рабочего потока
Исполняющая среда WF 4.0
Хостинг рабочего потока с использованием класса Workf lowlnvoker
Хостинг рабочего потока с использованием класса Workf lowApplication
Переделка первого рабочего потока
Знакомство с действиями Windows Workflow 4.0
Действия блок-схемы
Действия обмена сообщениями
Действия исполняющей среды и действия-примитивы
Действия транзакций
Действия над коллекциями и действия обработки ошибок
Построение рабочего потока в виде блок-схемы
Работа с действием InvokeMethod
Определение переменных уровня рабочего потока
Работа с действием FlowDecision
Работа с действием TerminateWorkf low
Построение условия \
Работа с действием ForEach<T>
Завершение приложения
Промежуточные итоги
Изоляция рабочих потоков в выделенных библиотеках
Импорт сборок и пространств имен
Определение аргументов рабочего потока
Определение переменных рабочего потока
Работа с действием Assign
Работа с действиями IfnSwitch
Построение специального действия кода
Использование библиотеки рабочего потока
Резюме
Часть VI. Построение настольных пользовательских приложений с помощью WPF
Глава 27. Введение в Windows Presentation Foundation и XAML
Обеспечение разделения ответственности через XAML
Обеспечение оптимизированной модели визуализации
Упрощение программирования сложных пользовательских интерфейсов
Различные варианты приложений WPF
WPF-приложения на основе навигации
Приложения ХВАР
Отношения между WPF и Silverlight
Исследование сборок WPF
Роль класса Wi ndow
Роль класса 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
Определение объекта Application в XAML
Обработка файлов XAML с помощью msbuild.exe
Трансформация разметки в сборку .NET
Poль BAML
Отображение XAML-данных приложения на код С#
Итоговые замечания о процессе трансформирования XAML в сборку
Синтаксис XAML для WPF
Пространства имен XAML XML и \
Управление объявлениями классов и переменных-членов
Элементы XAML, атрибуты XAML и преобразователи типов
Понятие синтаксиса XAML \
Понятие присоединяемых свойств XAML
Понятие расширений разметки XAML
Построение приложений WPF с использованием файлов отделенного кода
Добавление файла кода для класса МуАрр
Обработка файлов кода с помощью msbuild.exe
Построение приложений WPF с использованием Visual Studio 2010
Знакомство с инструментами визуального конструктора WPF
Проектирование графического интерфейса окна
Реализация события Loaded
Реализация события Click объекта Button
Реализация события Closed
Тестирование приложения
Резюме
Глава 28. Программирование с использованием элементов управления WPF
Элементы управления Ink API
Элементы управления документами WPF
Общие диалоговые окна WPF
Подробные сведения находятся в документации
Управление компоновкой содержимого с использованием панелей
Позиционирование содержимого внутри панелей WrapPanel
Позиционирование содержимого внутри панелей StackPanel
Позиционирование содержимого внутри панелей Grid
Позиционирование содержимого внутри панелей DockPanel
Включение прокрутки в типах панелей
Построение главного окна с использованием вложенных панелей
Построение панели инструментов
Построение строки состояния
Завершение дизайна пользовательского интерфейса
Реализация обработчиков событий MouseEnter/MouseLeave
Реализация логики проверки правописания
Понятие управляющих команд WPF
Подключение команд к свойству Command
Подключение команд к произвольным действиям
Работа с командами Open и Save
Построение пользовательского интерфейса WPF с помощью Expression Blend
Использование элемента TabControl
Построение вкладки Ink API
Элемент управления RadioButton
Элемент управления InkCanvas
Элемент управления С оmboB ox
Сохранение, загрузка и очистка данных InkCanvas
Введение в интерфейс Documents API
Диспетчеры компоновки документа
Построение вкладки Documents
Наполнение FlowDocument с помощью кода
Включение аннотаций и \
Сохранение и загрузка потокового документа
Введение в модель привязки данных WPF
Установка привязки данных с использованием Blend
Свойство DataContext
Преобразование данных с использованием IValueConverter
Установка привязок данных в коде
Построение вкладки DataGrid
Резюме
Глава 29. Службы визуализации графики WPF
Визуализация графических данных с использованием фигур
Удаление прямоугольников, эллипсов и линий с поверхности Canvas
Работа с элементами Polyline и Polygon
Работа с элементом Path
Кисти и перья WPF
Конфигурирование кистей в коде
Конфигурирование перьев
Применение графических трансформаций
Трансформация данных Canvas
Работа с фигурами в Expression Blend
Преобразование фигур в пути
Комбинирование фигур
Редакторы кистей и трансформаций
Визуализация графических данных с использованием рисунков и геометрий
Рисование с помощью DrawingBrush
Включение типов Drawing в Drawinglmage
Генерация сложной векторной графики с использованием Expression Design
Визуализация графических данных с использованием визуального уровня
Первый взгляд на класс DrawingVisual
Визуализация графических данных в специальном диспетчере компоновки
Реагирование на операции проверки попадания
Резюме
Глава 30. Ресурсы, анимация и стили WPF
Программная загрузка изображения
Роль свойства Resources
Определение ресурсов уровня окна
Расширение разметки {StaticResource}
Изменение ресурса после извлечения
Расширение разметки {DynamicResource}
Ресурсы уровня приложения
Определение объединенных словарей ресурсов
Определение сборки из одних ресурсов
Извлечение ресурсов в Expression Blend
Службы анимации WPF
Свойства То, From и By
Роль базового класса Timeline
Написание анимации в коде С#
Управление темпом анимации
Запуск в обратном порядке и циклическое выполнение анимации
Описание анимации в XAML
Роль триггеров событий
Анимация с использованием дискретных ключевых кадров s
Роль стилей WPF
Переопределение настроек стиля
Автоматическое применение стиля с помощью TargetType
Создание подклассов существующих стилей
Роль безымянных стилей
Определение стилей с триггерами
Определение стилей с множеством триггеров
Анимированные стили
Программное применение стилей
Генерация стилей с помощью Expression Blend
Резюме
Глава 31. Шаблоны элементов управления WPF и пользовательские элементы управления
Важные замечания относительно оболочек свойств CLR
Построение специального свойства зависимости
Реакция на изменение свойства
Маршрутизируемые события
Продолжение или прекращение пузырькового распространения
Роль маршрутизируемых туннелируемых событий
Логические деревья, визуальные деревья и шаблоны по умолчанию
Программный просмотр визуального дерева
Программный просмотр шаблона по умолчанию для элемента управления
Построение специального шаблона элемента управления в Visual Studio 2010
Включение визуальных подсказок с использованием триггеров
Роль расширения разметки {TemplateBinding}
Роль класса ContentPresenter
Включение шаблонов в стили
Построение специальных элементов UserControl с помощью Expression Blend
Создание WPF-приложения JackpotDeluxe
Роль визуальных состояний .NET 4.0
Завершение приложения JackpotDeluxe
Резюме
Часть VII. Построение веб-приложений с использованием ASP.NET
Глава 32. Построение веб-страниц ASP.NET
HTTP — протокол без поддержки состояния
Веб-приложения и веб-серверы
Веб-сервер разработки ASP NET
Роль языка HTML
Роль формы HTML
Инструменты визуального конструктора HTML в Visual Studio 2010
Построение формы HTML
Роль сценариев клиентской стороны
Обратная отправка веб-серверу
Набор средств API-интерфейса ASP NET
Основные средства ASP.NET 2.0
Основные средства ASP.NET 4.0
Построение однофайловой веб-страницы ASP.NET
Проектирование пользовательского интерфейса
Добавление логики доступа к данным
Роль директив ASP NET
Анализ блока script
Анализ объявлений элементов управления ASP NET
Цикл компиляции для однофайловых страниц
Построение веб-страницы ASP.NET с использованием файлов кода
Обновление файла кода
Цикл компиляции многофайловых страниц
Отладка и трассировка страниц ASP NET
Веб-сайты и веб-приложения ASP.NET
Структура каталогов веб-сайта ASP.NET
Роль папки App_Code
Цепочка наследования типа Page
Взаимодействие с входящим запросом HTTP
Доступ к входным данным формы
Свойство IsPostBack
Взаимодействие с исходящим ответом HTTP
Перенаправление пользователей
Жизненный цикл веб-страницы ASP.NET
Событие Error
Роль файла Web.config
Резюме
Глава 33. Веб-элементы управления, мастер-страницы и темы ASP.NET
Свойство AutoPostBack
Базовые классы Control и WebControl
Динамическое добавление и удаление элементов управления
Взаимодействие с динамически созданными элементами управления
Функциональность базового класса WebControl
Основные категории веб-элементов управления ASP NET
Документация по веб-элементам управления
Построение веб-сайта ASPNET Cars
Определение страницы содержимого Default.aspx
Проектирование страницы содержимого Inventory, aspx
Проектирование страницы содержимого BuildCar. aspx
Роль элементов управления проверкой достоверности
Класс RegularExpressionValidator
Класс RangeValidator
Класс CompareValidator
Создание итоговой панели проверки достоверности
Определение групп проверки достоверности
Работа с темами
Применение тем ко всему сайту
Применение тем на уровне страницы
Свойство SkinID
Программное назначение тем
Резюме
Глава 34. Управление состоянием в ASP.NET
Приемы управления состоянием ASP. NET
Роль состояния представления ASP NET
Добавление специальных данных в состояние представления
Роль файла Global.asax
Базовый класс HttpApplication
Различие между свойствами Application и Session
Модификация данных приложения
Обработка останова веб-приложения
Работа с кэшем приложения
Модификация файла *.asрх
Поддержка данных сеанса
Cookie-наборы
Чтение входящих cookie-данных
Роль элемента <sessionState>
Хранение информации о сеансах в выделенной базе данных
Интерфейс ASP.NET Profile API
Определение пользовательского профиля BWeb.config
Программный доступ к данным профиля
Группирование данных профиля и сохранение специальных объектов
Резюме
Часть VIII. Приложения
Приложение Б. Независимая от платформы разработка .NET-приложений с помощью Mono
Предметный указатель