|
|
|
Книги: [Классика] [Базы данных] [Internet/WWW] [Сети] [Программирование] [UNIX] [Windows] [Безопасность] [Графика] [Software Engineering] [ERP-системы] [Hardware]
Полное содержание
Предисловие
Благодарности
Глава 1. Философия .NET
- Современное состояние дел
- Как живут программисты, использующие Win32/C
- Как живут программисты, использующие C++/MFC
- Как живут программисты, использующие Visual Basic
- Как живут программисты, использующие Java
- Как живут COM-программисты
- Как живут программисты, использующие Windows DNA
- Решение .NET
Строительные блоки .NET (CLR, CTS и CLS)
- Библиотека базовых классов .NET
- Преимущества C#
Языки программирования .NET
Обзор двоичных файлов .NET ("сборки")
- Сборки из одного и нескольких файлов
- Роль Microsoft Intermediate Language
- Преимущества IL
- Роль метаданных
- Простой пример метаданных
- Компиляция IL в платформенно-зависимые инструкции
Типы .NET и пространства имен .NET
Основы Common Language Runtime - среды выполнения .NET
Стандартная система типов CTS
- Классы CTS
- Структуры CTS
- Интерфейсы CTS
- Члены типов CTS
- Перечисления CTS
- Делегаты CTS
- Встроенные типы данных CTS
- Основы CLS
Работа с пространствами имен
Важнейшие пространства имен .NET
- Использование пространств имен в коде приложения
- Обращения к внешним сборкам
Как получить дополнительную информацию о пространствах имен и типах
- ILDasm.exe
- Выгрузка в файл иерархии типов и членов сборки
- Выгрузка в файл вместе с инструкциями IL
- Просмотр метаданных типов
- Web-приложение ClassViewer
- Графическое приложение WinCV
- Создание приложений C# с использованием компилятора командной строки
- Ссылки на внешние сборки
- Компиляция нескольких исходных файлов
- Создание приложений C# с использованием интегрированной среды разработки Visual Studio.NET
- Начало работы со средой Visual Studio.NET
- Окно Solution Explorer
- Окно Properties
- Экономное размещение кода на экране
- Ссылки на внешние сборки
- Отладка в Visual Studio.NET
- Работа с окном Server Explorer
- Средства для работы с XML
- Поддержка диаграмм UML
- Утилита Object Browser
- Средства для работы с базами данных
- Встроенная справка
- Подведение итогов
Глава 2. Основы языка C#
- Анатомия класса C#
- Как еще можно объявить метод Main()
- Обработка параметров командной строки
- Создание объектов: конструкторы
- Будет ли происходить утечка памяти?
- Композиция приложения C#
- Инициализация членов
- Ввод и вывод с использованием класса Console
- Средства форматирования строк в C#
Структурные и ссылочные типы
- Структурные и ссылочные типы: исследуем дальше
- Точка отсчета для любых типов: System.Object
- Замещение методов System.Object
- Статические члены System.Object
- Системные типы данных и псевдонимы C#
- Избранные заметки о некоторых типах данных
- От структурного типа к ссылочному типу и наоборот: упаковка и распаковка
Значения по умолчанию для встроенных типов данных
Константы
Циклы в C#
- Выражение for
- Выражение foreach/in
- Выражения while и do/while
- Средства управления логикой работы программ
в C#
Дополнительные операторы C#
Определение пользовательских методов класса
- Модификаторы уровня доступа к методам
- Статические методы и методы экземпляров
- Статические данные
- Интересное рядом: некоторые статические члены класса Environment
- Модификаторы для параметров методов
- Работа с массивами
- Многомерные массивы
- Базовый класс System.Array
- Работа со строками
- Управляющие последовательности и вывод служебных символов
- Применение System.Text.StringBuilder
- Перечисления C#
- Базовый класс System.Enum
- Определение структур в C#
Еще раз об упаковке и распаковке
Определяем пользовательские пространства имен
- Применение пространств имен для разрешения конфликтов между именами классов
- Использование псевдонимов для имен классов
- Вложенные пространства имен
- Подведение итогов
Глава 3. C# и объектно-ориентированное программирование
- Формальное определение класса в C#
- Ссылки на самого себя
- Определение открытого интерфейса по умолчанию
- Указание области видимости на уровне типа: открытые и внутренние типы
- Столпы объектно-ориентированного программирования
- Инкапсуляция
- Наследование: отношения "быть" и "иметь"
- Полиморфизм: классический и для конкретного случая
- Средства инкапсуляции в C#
- Реализация инкапсуляции при помощи традиционных методов доступа и изменения
- Второй способ инкапсуляции: применение свойств класса
- Внутреннее представление свойств C#
- Свойства только для чтения, только для записи и статические
- Псевдоинкапсуляция: создание полей "только для чтения"
- Статические поля "только для чтения"
- Поддержка наследования в C#
- Работа с конструктором базового класса
- Можно ли производить наследование от нескольких базовых классов
- Хранение "семейных тайн": ключевое слово protected
- Запрет наследования: классы, объявленные как sealed
- Применение модели включения-делегирования
- Определение вложенных типов
Поддержка полиморфизма в C#
- Абстрактные классы
- Принудительный полиморфизм: абстрактные методы
- Контроль версий членов класса
- Приведение типов в C#
- Приведение числовых типов
- Обработка исключений
- Генерация исключения
- Перехват исключений
- Создание пользовательских исключений, первый этап
- Создание пользовательских исключений, второй этап
- Обработка нескольких исключений
- Блок finally
- Последние замечания о работе с исключениями
- Жизненный цикл объектов
Завершение ссылки на объект
- Завершение в подробностях
- Создание метода удаления для конкретного случая
- Интерфейс IDisposable
- Взаимодействие со сборщиком мусора
- Оптимизация сборки мусора
- Подведение итогов
Глава 4. Интерфейсы и коллекции
- Программирование с использованием интерфейсов
- Реализация интерфейса
- Получение ссылки на интерфейс
- Интерфейсы как параметры
- Явная реализация интерфейса
- Создание иерархий интерфейсов
- Наследование от нескольких базовых интерфейсов
- Создание пользовательского нумератора (интерфейсы IEnumerable и IEnumerator)
Создание клонируемых объектов (интерфейс ICloneable)
Создание сравниваемых объектов (интерфейс IComparable)
- Сортировка по нескольким идентификаторам (IComparer)
- Как с помощью специальных свойств сделать сортировку более удобной
- Пространство имен System.Collections
- Пространство имен System.Collections.Specialized
- Применение ArrayList
- Подведение итогов
Глава 5. Дополнительные возможности классов C#
- Создание пользовательского индексатора
Перегрузка операторов
- Перегрузка операторов равенства
- Перегрузка операторов сравнения
- Последние замечания о перегрузке операторов
- Делегаты
- Пример делегата
- Делегаты как вложенные типы
- Члены System.MulticastDelegate
- Применение CarDelegate
- Анализ работы делегата
- Многоадресность
- Делегаты, указывающие на обычные функции
- События
- Как работают события
- Прием событий
- Объекты как приемники событий
- Реализация обработки событий с использованием интерфейсов
- Документирование в формате XML
Просмотр файла документации в формате XML
Создание документации в формате HTML
Подведение итогов
Глава 6. Сборки, потоки и домены приложений
- Проблемы с классическими двоичными файлами
COM
- Проблема: работа с версиями COM
- Проблема: развертывание приложений COM
- Обзор сборок .NET
- Сборки из одного и нескольких файлов
- Логическое и физическое представление сборки
- Сборки обеспечивают повторное использование кода
- Сборки - контейнеры для типов
- В сборках предусмотрены встроенные средства самоописания и контроля версий
- Сборки определяют контекст безопасности
- Разные версии сборок могут выполняться параллельно
- Создание тестовой однофайловой сборки
Клиентское приложение C#
Клиентское приложение Visual Basic.NET
Межъязыковое наследование
Подробности манифеста CarLibrary
Метаданные и код IL для типов CarLibrary
Частные сборки
Технология "зондирования"
- Идентификация частной сборки
- Частные сборки и файлы конфигурации приложений
- Процесс загрузки частной сборки в целом
- Сборки для общего доступа
- Проблемы с GAC?
- Общие ("сильные") имена сборок
- Создание сборки для общего пользования
- Установка сборки в глобальный кэш сборок (GAC)
- Применение сборки для общего пользования в приложении
Политика версий .NET
Запись информации о версии
- Работа с разными версиями SharedAssembly
- Создаем SharedAssembly версии 2.0
- Политика версий .NET по умолчанию
- Управление загрузкой разных версий сборок
Администраторский файл конфигурации
Работа с потоками в традиционных приложениях Win32
- Проблемы одновременности и синхронизации потоков
- Что такое домен приложения
- Работаем с доменами приложений
- Пространство имен System.Threading
- Работа с классом Thread
- Запуск вторичных потоков
- Именованные потоки
- Параллельная работа потоков
- Как "усыпить" поток
- Одновременный доступ к данным из разных потоков
- Ключевое слово lock
- Использование System.Threading.Monitor
- Применение System.Threading.Interlocked
Подведение итогов
Глава 7. Рефлексия типов и программирование с использованием атрибутов
- Что такое рефлексия типов
Класс Type
- Получение объекта класса Type
- Возможности класса Type
- Типы пространства имен System.Reflection
Загрузка сборки
- Вывод информации о типах в сборке
- Вывод информации о членах класса
- Вывод информации о параметрах метода
- Применение позднего связывания
- Класс System.Activator
- Применение динамических сборок
- Знакомство с пространством имен System.Reflection.Emit
- Создаем динамическую сборку
- Как использовать динамическую сборку
- Программирование с использованием атрибутов
- Работа с существующими атрибутами
- Создание пользовательских атрибутов
- Как ограничить использование атрибута определенными типами
- Атрибуты уровня сборки и модуля
- Файл AssemblyInfo.cs
Как работать с атрибутами в процессе выполнения программы
Подведение итогов
Глава 8. Окна становятся лучше: введение в Windows.Forms
- Два главных пространства имен для организации графического интерфейса
Обзор пространства имен Windows.Forms
Взаимодействие с типами Windows.Forms
- Создание нового проекта
- Создание главного окна приложения (вручную)
- Создание проекта Windows Forms
- Класс System.Windows.Forms.Application
- Работаем с классом Application
- Реагируем на событие ApplicationExit
- Препроцессинг сообщений при помощи класса Application
- Анатомия формы
- Классы System.Object и MarshalByRefObject
- Класс Component
Класс Control
- Настройка стиля формы
- События класса Control
- Работаем с классом Control
- Реагируем на события мыши: часть первая
- Реагируем на события мыши: часть вторая
- Реагируем на события клавиатуры
Еще немного о классе Control
- Painting Basics
- Класс ScrollableControl
Класс ContainerControl
Класс Form
- Используем возможности класса Form
- Создаем меню
- Вложенный класс Menu$MenuItemCollection
- Создание системы меню в приложении
- Добавляем еще одно меню верхнего уровня
- Создаем контекстное меню
- Дополнительные возможности меню
- Создаем меню при помощи IDE Visual Sudio.NET
Что такое строка состояния
- Создаем строку состояния
- Работаем с классом Timer
- Отображение в строке состояния подсказок к пунктам меню
- Создаем панель инструментов
Создаем панели инструментов при помощи Visual Studio IDE
- Создаем набор изображений (объект ImageList) при помощи
- Visual Studio
- Пример приложения Windows Forms для работы с реестром и журналом событий Windows 2000
- Взаимодействие с системным реестром
- Взаимодействие с журналом событий Windows 2000
- Как считать информацию из журнала событий
- Подведение итогов
Глава 9. Графика становится лучше (GDI+)
- Обзор пространств имен GDI+
Пространство имен System.Drawing
Служебные типы System.Drawing
- Тип Point(F)
- Тип Rectangle(F)
- Тип Size(F)
- Класс Region
- Сеансы вывода графики
- Как сделать клиентскую область вашего приложения "недействительной"
- Выводим графические объекты без события Paint
- Возможности класса Graphics
Система координат по умолчанию в GDI+
- Применение альтернативных единиц измерения
- Применение альтернативных точек отсчета
- Работа с цветом
- Возможности класса ColorDialog
- Работа со шрифтами
- Семейства шрифтов
- Единицы измерения для шрифта
- Создаем приложение с возможностью выбора шрифта
- Выводим информацию об установленных шрифтах (System.Drawing.Text)
- Класс FontDialog
- Обзор пространства имен System.Drawing.Drawing2D
- Определение качества вывода графического объекта
- Работа с перьями
- Работаем с "наконечниками" перьев
- Работаем с кистью
- Работаем со штриховыми кистями
- Работаем с текстурными кистями
- Работаем с градиентными кистями
- Вывод изображений
Перетаскивание, проверка попадания в область, занимаемую изображением,и элемент управления PictureBox
- Еще о проверке попадания
- Проверка попадания в непрямоугольные области
- Работа с форматами реcурсов .NET
Пространство имен System.Resources
- Создание файлов *.resx программным образом
- Чтение из файлов *.resx программным образом
- Создание файлов *.resources
- Работаем с типом ResourceWriter
Работаем с типом ResourceManager
Работа с ресурсами при помощи IDE Visual Studio.NET
Подведение итогов
Глава 10. Элементы управления
- Иерархия классов элементов управления
Как вручную добавить элементы управления на форму
- Класс Control$ControlCollection
- Как добавить элементы управления на форму при помощи Visual Studio
Элемент управления TextBox
- Некоторые возможности TextBox
- Великая и могучая кнопка (а также родительский класс ButtonBase)
- Выравнивание текста и изображений относительно краев кнопки
- Некоторые возможности работы с кнопками
- Работаем с флажками
Работаем с переключателями и группирующими рамками
- Элемент управления CheckedListBox
- Списки
- Комбинированные списки
- Настраиваем порядок перехода по Tab
- Tab Order Wizard
- Элемент управления TrackBar
Элемент управления MonthCalendar
Еще немного о типе DateTime
Элементы управления UpDown
Элемент управления Panel
Всплывающие подсказки (ToolTips) для элементов управления
- Добавление всплывающей подсказки при помощи графических средств Visual Studio
- Элемент управления ErrorProvider
Закрепление элемента управления в определенном месте формы
Стыковка элемента управления с краем формы
Создание пользовательских диалоговых окон
- Пример использования диалогового окна в приложении
- Как получить данные из диалогового окна
- Наследование форм
Подведение итогов
Глава 11. Ввод, вывод и сериализация объектов
- Знакомство с пространством имен System.IO
Типы Directory(Info) и File(Info)
- Абстрактный класс FileSystemInfo
- Работа с типом DirectoryInfo
- Перечисление FileAttributes
- Получение доступа к файлам через объект DirectoryInfo
Создаем подкаталоги при помощи класса DirectoryInfo
Статические члены класса Directory
Класс FileInfo
- Использование метода FileInfo.Open()
- Методы FileInfo.OpenRead() и FileInfo.OpenWrite()
- Методы FileInfo.OpenText(), FileInfo.CreateText() и FileInfo.AppendText()
- Абстрактный класс Stream
- Работа с объектом FileStream
- Класс MemoryStream
- Класс BufferedStream
- Классы StreamWriter и StreamReader
- Запись в текстовый файл
- Считывание информации из текстового файла
- Класс StringWriter
Класс StringReader
Работа с двоичными данными (классы BinaryReader и BinaryWriter)
- Заметки на полях
- Сохранение объектов в .NET
Графы для отношений объектов
Настройка объектов для сериализации
- Выбираем объект Formatter
- Пространство имен System.Runtime.Serialization
- Сериализация в двоичном формате
Сериализация в формате SOAP
Сериализация в пользовательском формате и интерфейс ISerializable
- Простой пример пользовательской сериализации
- Приложение для регистрации автомобилей с графическим интерфейсом
- Реализация добавления новых объектов Car
- Код сериализации
- Подведение итогов
Глава 12. Взаимодействие с унаследованным программным кодом
- Главные вопросы совместимости
Пространство имен System.Runtime.InteropServices
Взаимодействие с модулями DLL, созданными на C
- Поле ExactSpelling
- Поле CharSet
- Поля CallingConvention и EntryPoint
- Взаимодействие .NET и COM
- Представление типов COM как типов .NET
- Управление ссылками на объекты сокласса
- Сокрытие низкоуровневых интерфейсов COM
- Создание простого COM-сервера в Visual Basic 6.0
- Что находится в IDL нашего COM-сервера
- Создаем простой клиент COM в Visual Basic 6.0
Импорт библиотеки типов
Добавление ссылки на сборку
- Раннее связывание с COM-классом CoCalc
- Позднее связывание с соклассом CoCalc
- Особенности созданной нами сборки
Создаем COM-сервер при помощи ATL
- Добавление методов в интерфейс по умолчанию
- Генерация события COM
- Генерация ошибки COM
- Представление внутренних подобъектов и применение SAFEARRAY
- Последний штрих: создаем перечисление IDL
- Клиент COM-сервера в Visual Basic 6.0
- Создаем сборку и анализируем процесс преобразования
- Преобразование библиотеки типов
- Преобразование интерфейсов COM
- Преобразование атрибутов параметров в коде IDL
- Преобразование иерархии интерфейсов
- Преобразование соклассов и свойств COM
- Преобразование перечислений COM
- Преобразование COM SAFEARRAY
- Перехват событий COM
- Обработка ошибки COM
- Полный код клиента C#
Обращение клиента COM к сборке .NET
Роль CCW
Понятие интерфейса класса
- Определяем интерфейс класса
- Создание типа .NET
Генерация библиотеки типов и регистрация типов .NET
Анализ созданной библиотеки типов
- Интерфейс _Object
- Сгенерированное выражение библиотеки
- Просмотр типов .NET в OLE/COM Object Viewer
Просмотр записей в реестре
Создаем клиента в Visual Basic 6.0
Некоторые особенности отображения типов .NET в COM
- Анализ кода COM, сгенерированного для базового класса
- Анализ кода COM, сгенерированного для производного класса
- Управление процессом генерации кода IDL (как повлиять на то, что делает утилита tlbexp.exe)
- Что у нас получилось
- Управление регистрацией промежуточного модуля CCW
Взаимодействие со службами COM+
- Пространство имен System.EnterpriseServices
- Особенности создания типов .NET для работы
под COM+
Пример класса C# для работы под COM+
- Добавление атрибутов уровня сборки для COM+
- Помещаем сборку в каталог COM+
- Проверяем установку при помощи Component Services Explorer
Подведение итогов
Глава 13. Доступ к данным при помощи ADO.NET
- Почему потребовалось создавать ADO.NET
- ADO.NET: общая картина
- Знакомство с пространствами имен ADO.NET
Типы пространства имен System.Data
Тип DataColumn
- Создаем объект DataColumn
- Добавляем объект DataColumn в DataTable
- Делаем столбец первичным ключом таблицы
- Настройка автоматического увеличения значений для столбцов
- Настраиваем представление столбца в формате XML
- Тип DataRow
- Работа со свойством DataRow.RowState
- Работа со свойством ItemArray
- Тип DataTable
Создаем объект DataTable
- Удаляем строки из таблицы
- Применение фильтров и порядка сортировки для DataTable
- Внесение изменений в строки
- Тип DataView
Возможности класса DataSet
- Члены класса DataSet
- Создание объекта DataSet
- Моделируем отношения между таблицами при помощи класса DataRelation
- Переход между таблицами, участвующими в отношении
Чтение и запись объектов DataSet в формате XML
Создание примера простой базы данных
Управляемые провайдеры ADO.NET
Управляемый провайдер OLE DB
- Установление соединения при помощи типа OleDbConnection
- Построение команды SQL
- Работа с OleDbDataReader
- Подключение к базе данных Access
- Выполнение хранимых процедур
- Тип OleDbDataAdapter
- Заполнение данными объекта DataSet при помощи OleDbDataAdapter
- Работа с управляемым провайдером SQL
- Пространство имен System.Data.SqlTypes
- Вставка новых записей при помощи SqlDataAdapter
- Изменение записей в таблице при помощи SqlDataAdapter
- Автоматическое создание команд SQL
Заполнение объекта DataSet с несколькими таблицами и добавление объектов DataRelations
Подведение итогов
Глава 14. Разработка web-приложений и ASP.NET
- Web-приложения и web-серверы
- Что такое виртуальные каталоги
- Структура документа HTML
- Форматирование текста средствами HTML
- Заголовки HTML
- HTML-редактор Visual Studio.NET
- Разработка форм HTML
- Создаем пользовательский интерфейс
- Добавление изображений
- Клиентские скрипты
- Пример клиентского скрипта
- Реализация проверки введенных пользователем данных
- Передаем данные формы (методы GET и POST)
- Синтаксис строки запроса HTTP
- Создание классической страницы ASP
- Принимаем данные, переданные методом POST
- Первое приложение ASP.NET
Некоторые проблемы классических ASP
- Некоторые преимущества ASP.NET
- Пространства имен ASP.NET
- Наиболее важные типы пространства имен System.Web
- Приложение и сеанс подключения пользователя
Создание простого web-приложения на C#
- Исходный файл *.aspx
- Файл web.config
- Исходный файл Global.asax
- Простой код ASP.NET на C#
- Архитектура web-приложения ASP.NET
- Тип System.Web.UI.Page
- Связка *.aspx/Codebehind
- Свойство Page.Request
- Свойство Page.Response
- Свойство Page.Application
- Отладка и трассировка приложений ASP.NET
Элементы управления WebForm
Создание элементов управления WebForm
- Иерархия классов элементов управления WebForm
- Виды элементов управления WebForm
- Базовые элементы управления WebForm
- Элементы управления с дополнительными возможностями
- Элементы управления для работы с источниками данных
- Элементы управления для проверки вводимых пользователем данных
- Обработка событий элементов управления WebForm
- Подведение итогов
Глава 15. Web-службы
- Роль web-служб
Инфраструктура web-службы
- Протокол подключения
- Служба описания
- Служба обнаружения
- Обзор пространств имен web-служб
Пространство имен System.Web.Services
Пример элементарной web-службы
- Исходный файл C# для web-службы (*.asmx.cs)
- Реализуем методы web-службы
- Работа клиента с web-службой
- Тип WebMethodAttribute
- Базовый класс System.Web.Services.WebService
- Web Service Description Language (WSDL)
Протоколы подключения к web-службам
- Обмен данными при помощи HTTP-GET и HTTP-POST
- Обмен данными при помощи SOAP
- Прокси-сборки для web-служб
- Создание прокси-сборки при помощи утилиты wsdl.exe
- Компилируем прокси-сборку
Создание клиента для работы через прокси-сборку
Создание прокси-сборки в Visual Studio.NET
Пример более сложной web-службы (и ее клиентов)
- Сериализация пользовательских типов
- Настраиваем клиента web-службы
- Создание типов для сериализации (некоторые уточнения)
Протокол обнаружения web-службы
- Добавление новой web-службы
- Подведение итогов
Алфавитный указатель
Начало
Cодержание
Отрывок
[Заказать книгу в магазине "Мистраль"]
|
|
|
|
|
|
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее... |
|