Принципы объектно-ориентированного программирования



   structured settlement companies | seo оптимизация услуги seo оптимизации seo оптимизация    сумка производитель |        Смотреть порно видео трансы на e-batsa.com | check my site is.gd/23MDme  Элитные блатные гос номера

Architecture Net или что такое Microsoft.NET?

Новая технология .NET, предложенная компанией Microsoft, отражает видение этой компанией приложений в эпоху Internet. Технология .NET обладает улучшенной функциональной совместимостью, в основе которой лежит использование открытых стандартов Internet. Кроме того, она повышает устойчивость классического пользовательского интерфейса операционной системы Windows — рабочего стола. Разработчикам программного обеспечения технология .NET предоставляет новую программную платформу и великолепные инструментальные средства разработки, в которых основную роль играет язык XML (extensible Markup Language — расширяемый язык разметки).
Microsoft .NET — платформа, построенная на верхнем слое операционной системы. Технология .NET явилась главным объектом инвестиций компании Microsoft. С момента начала работ над этой технологией и до момента ее публичного анонсирования прошло три года. Несомненно, на развитие технологии .NET оказали влияние другие технологические достижения, в частности расширяемый язык разметки XML, платформа Java™, a также модель компонентных объектов Microsoft (Component Object Model — COM).
Платформа Microsoft .NET предоставляет:
  • устойчивую общеязыковую среду выполнения CLR (Common Language Runtime), которая входит в состав данной платформы;
  • средства разработки приложений на любом из многих языков программирования, поддерживаемых платформой .NET;
  • лежащую в основе открытой модели программирования огромную библиотеку классов .NET Framework. Эти классы содержат многократно используемый код. Они доступны в любом языке программирования, поддерживаемом платформой .NET;
  • поддержку сетевой инфраструктуры, построенной на верхнем слое стандартов Internet, вследствие чего обеспечивается высокий уровень взаимодействия между приложениями;
  • поддержку нового промышленного стандарта, а именно технологии Web-служб. Технология Web-служб предоставляет новый механизм создания распределенных приложений. По сути, она является распространением технологии создания приложений на базе компонентов и на сферу Internet;
  • модель безопасности, которую программисты могут легко использовать в своих приложениях;
  • мощные инструментальные средства разработки.


Что такое Microsoft.NET?
Новая технология .NET, предложенная компанией Microsoft, отражает видение этой компанией приложений в эпоху Internet. Технология .NET обладает улучшенной функциональной совместимостью, в основе которой лежит использование открытых стандартов Internet. Кроме того, она повышает устойчивость классического пользовательского интерфейса операционной системы Windows — рабочего стола. Разработчикам программного обеспечения технология .NET предоставляет новую программную платформу и великолепные инструментальные средства разработки, в которых основную роль играет язык XML (extensible Markup Language — расширяемый язык разметки). Microsoft .NET — платформа, построенная на верхнем слое операционной системы.

Что такое Microsoft .NET?
Microsoft и Web
Приложения в эпоху Internet
Web-службы
ASP.NET
Протоколы обмена
Windows на рабочем столе
Проблемы с Windows
Стеклянный дом и тонкие клиенты
Устойчивая Windows

Основы технологии .NET
Платформа .NET решает многие проблемы, которые досаждали программистам в прошлом. К их числу относятся проблемы, связанные с развертыванием приложений, управлением версиями, утечкой памяти, а также проблемы безопасности. Платформа .NET позволяет разрабатывать мощные, независимые от языка программирования, настольные приложения и масштабируемые (расширяемые) Web-службы, построенные на базе новой мощной полнофункциональной библиотеки классов .NET Framework.

Основы технологии .NET
Проблемы разработки Windows-приложений
Приложения будущего
Обзор платформы .NET
Волшебство метаданных
Библиотека классов .NET Framework
Программирование на основе интерфейсов
Объектом является все
Общая система типов
Управляемый код

Программирование на управляемом C++
В каждой новой версии Visual C++ компания Microsoft расширяет возможности языка во многих направлениях. Visual C++.NET не является исключением, поддерживая множество новых возможностей, для использования которых введены новые ключевые слова и атрибуты. В частности, появилась поддержка разработки кода на управляемом C++ для платформы .NET. В этой главе представлены несколько примеров, которые помогут читателю познакомиться с основными классами .NET Framework и приступить к самостоятельному написанию кода на управляемом C++. На примере использования класса Console (Консоль) продемонстрированы стандартные ввод и вывод, а кроме того, рассмотрены необычайно полезные классы String (Строка) и Array (Массив). Далее представлена программа управления системой бронирования гостиничных номеров, к которой мы еще не раз вернемся в следующих главах.

Программирование на управляемом C++
Место C++ в мире .NET
Использование расширений управляемого C++
Ваша первая программа на управляемом C++.NET
Программа HelloWorld (Привет, мир)
Директива #using и оператор using
Стандартный ввод-вывод
Класс System:: string (Система::Строка)
Класс System: :Array (Система::МAССИВ)
Программа Hotel (Гостиница)

Объектно-ориентированное программирование на управляемом C++
В предыдущеи главе были наложены основы программирования на управляемом C++. Учитывая ваш богатый опыт работы с C++ бьпо охвачено много материала В этой паве мы изменим темп вместо того, чтобы осваивать новый мат ерши потратим ботьше времени на углубление понимания объектно ориентированной стороны управляемого С++ в частности, абстракции и наследования Сначала мы повторим основы объектно-ориентированного программирования, потом рассмотрим пример Бюро путешествии Acme. Этот пример будет разрабатываться в последующих павах по мере изучения татформы NET Мы рассмотрим, какие абстракции подходят для того чтобы реализовать систему резервирования ресурсов, и реализуем систему резервирования (бронирования) гостиничных номеров В абстрактные базовые классы мы поместим повторно иелользхемыи код с помощью которого можно легко реализовать и другие системы резервирования Вы увидите что правильное использование абстракции — ключ к такой реализации.

Объекты
Классы
Полиморфизм
Проект: "Бюро путешествий Acme"
Проектирование абстракций
Логика базовых классов
Проектирование инкапсуляции
Наследование в управляемом C++
Основные принципы наследования
Реализация примера "Бюро путешествий Acme"

Управляемый C++ в .NET Framework
Язык C++ — мощный инструмент разработки программ, оказавший огромное влияние на развитие вычислительной науки. Управляемые (managed) расширения от Microsoft добавили в язык C++ целый новый мир — мир .NET. Для того чтобы полностью использовать возможности Visual C++ .NET, необходимо понимать, как он работает с .NET Framework. Мы начнем рассмотрение с базового класса Object (Объект) из пространства имен System. Затем рассмотрим коллекции, а также методы класса Object (Объект), которые следует перегрузить для использования возможностей, предоставляемых .NET Framework. Далее познакомимся с интерфейсами, позволяющими строго определить свойства реализуемых классов.

Управляемый C++ в .NET Framework
Объект системы: System::Object
Методы экземпляров класса Object (Объект)
Защищенные методы класса object (Объект)
Родовые интерфейсы и обычное поведение
Коллекции
Пример класса ArrayList (Список массивов)
Интерфейсы
Основные сведения об интерфейсах
Программирование интерфейсов

Создание графических пользовательских интерфейсов
К сожалению, конструктор форм (Forms Designer) не поддерживается в C++ Тем не менее, вы можете использовать конструктор форм (Forms Designer) в С#, и потом перенести полученный с помощью С# код графического интерфейса пользователя в программу на C++ Для переноса графического интерфейса пользователя в программу на C++ необходимы дополнительные усилия, и, в большинстве случаев, такой перенос особой пользы не дает Как правило, C++ не используют для разработки пользовательских графических интерфейсов, вместо этого применяется подход смешения языков, в котором для создания почьзовательского интерфейса используется С#, а в других аспектах разработки проекта из разных соображений используется C++

Шаг 0: Создание простой формы
Шаг 1: Отображение текста на форме
Обработка событий в Windows Forms
Документация по обработке событий
Событие MouseDown (Кнопка мыши нажата)
Шаг 2: Обработка событий мыши
Шаг 2М: Несколько обработчиков для события
Шаг 3: События MouseDown и Keypress
Меню
Шаг 4: Меню для выхода из программы

Сборки и развертывание
Эта глава начинается с обсуждения понятий сборки, которая является основной единицей развертывания при частном развертывании сборки в .NET. Затем описано и общедоступное развертывание сборки. Управление версиями и цифровое подписание сборок обсуждаются в контексте общедоступного развертывания. После этого на примере программы Hotel (Гостиница) демонстрируется инсталляция и приемы развертывания сборок. Наконец, представлены развертывание Visual Studio.NET и мастера установки. По ходу обсуждения мы иллюстрируем множество полезных инструментальных средств, которые являются частью комплекса инструментальных средств разработки программ .NET Framework SDK.

Сборки и развертывание
Сборки
Содержимое сборки
Частное развертывание сборки
Общедоступное развертывание сборки
Строгие имена
Цифровые сигнатуры (подписи)
Развертывание общедоступной сборки
Управление версиями компонентов
Подписание в цифровой форме после компиляции

Классы каркаса .NET Framework
Невозможно описать в одной главе, или даже в одной книге, все классы каркаса .NET Framework. Хотя и не полностью, классы .NET охватывают большую часть интерфейса 32-разрядных Windows-приложений (Win32 API), так же как и много чего другого. Несмотря на то, что основное внимание было уделено функциональным возможностям, связанным с Internet, однако изменилась и модель разработки приложений в среде Windows. В этой главе мы сосредоточим наше внимание на классах, которые иллюстрируют ключевые концепции и модели, проявляющиеся повсюду в каркасе .NET Framework. Такой подход представляется нам более плодотворным, чем просто попытаться немного рассказать о каждом классе, который когда-либо мог бы понадобиться, без того, чтобы дать читателю общее представление о классах .NET.

Классы каркаса .NET Framework
Метаданные и отражение
Класс туре (Тип)
Динамическое связывание
Ввод и вывод в .NЕТ
Потоковые классы
Примитивные типы данных и потоки
TextReader И TextWriter
Обработка файлов
Преобразование в последовательную форму

Программирование в ADO.NET
Классы каркаса, предназначенного для работы с базами данных, собраны в ADO.NET. Класс DataSet (Набор данных) позволяет работать с реляционными данными реляционным же способом, независимо от того, есть ли в текущий момент соединение с источником данных. Разъединенный (disconnected) доступ к данным становится все более значимым в многоярусном и Internet-ориентированном мире данных. При использовании такого типа доступа к данным необходимо установить соединение с базой данных только для изменения или получения ее содержимого. Конечно, при желании, можно работать и обычным соединенным (connected) способом.

Программирование в ADO.NET
Источники данных
Проводник Visual Studio.NET
Установление соединения
Устройства считывания данных
Работа с базой данных в соединенном режиме
Выполнение операторов SQL
DataReader
Множественное результирующее множество
Коллекция параметров

ASP.NET и Web-формы
Технология ASP.NET, предназначенная для создания Web-приложении, является важной частью платформы .NET. По сравнению с очередной усовершенствованной версией ASP (Active Server Pages — Активные страницы сервера), эта новая технология представляет собой более унифицированную платформу, которая значительно упрощает реализацию сложных Web-приложений В данной главе мы ознакомимся с основами технологии ASP.NET, а также рассмотрим Web-формы, облегчающие создание интерактивных Web-страниц. В главе 11 "Web-службы" мы изучим построение Web-служб на основе технологии ASP.NET.

ASP.NET и Web-формы
Что такое ASP.NET?
Основные принципы создания Web-приложения
Программа на С#: Echo (Эхо)
Возможности ASP.NET
Архитектура Web-форм
Класс Page (Страница)
Время существования страниц с Web-формами
Состояние представления (вида)
Модель событий Web-форм

Web-службы
Распределение функций приложений и возможность использования данных за пределами предприятия, на котором они хранятся, — следующий шаг в развитии компонентной технологии. Количество служб, которые разработчики могут интегрировать в свои приложения, настолько велико, что не приходится даже мечтать о том, чтобы создать их все самостоятельно. Рассмотренный нами конкретный пример, — система бронирования Acme (Acme Reservation System), — представляет собой простую службу. Бюро путешествий Acme (Acme Travel Agency), в состав которого входит система бронирования билетов на авиарейсы и система бронирования мест в гостинице, предоставляет клиентам более широкий спектр услуг.

Web-службы
Протоколы
Язык XML
Пространства имен XML (XML Namespeces)
Схема XML (XML schema)
Протокол SOAP
Язык описания Web-служб WSDL
Архитектура Web-службы
Пример Web-службы Add (Сложение)
Просмотр Web-службы Add (Сложение)

Web-узлы и Web-службы,работающие на основе ATL Server
Создавать Web-приложения и Web-службы можно несколькими способами Один из них — это использовать технологию ASP NET Такой подход поддерживается в разной степени большинством языков платформы NET Есть и другой подход, поддерживаемый только языком Visual C++ Он состоит в применении сервера ATL Server [ATL Server реализован с помощью неуправляемого C++ и поэтому не относится к основной предметной области NET Впрочем, для некоторых программистов, работающих на Visual C++ ATL является достаточно важной темой]. Остальные, традиционные подходы заключаются в использовании общего шлюзового интерфейса CGI (Common Gateway Interface), и интерфейса прикладного программирования Internet-сервера ISAPI

Web-узлы на основе ATL Server
Технологии с динамическим содержимым Web
Приложения на основе ATL Server
ATL Server на интерфейсе ISAPI
Архитектура приложения с ATL Server
Создание проекта ATL Server Project
Динамически подключаемая библиотека DLL
DLL Web-приложения
Создание и запуск проекта на основе ATL Server
Добавление в сервер еще одного обработчика

Защита
Защита, или безопасность — это одно из основных требований к приложениям и при разработке ее следует учитывать не в последнюю очередь Однако из педагогических соображений говорить о защите легче тогда, когда уже состоялось знакомство с прикладной моделью NET, а также с ASP NET и Web-службами Эта глава должна познакомить вас с основными концепциями защиты NET. Защита не дает пользователю или коду делать то, что им не позволено Традиционно основная задача защиты состояла в том, чтобы ограничивать действия пользователей

Защита
Защита на основе пользователей
Защита доступа к коду
Политика безопасности
Разрешения
Защита .NET на основе ролей
Принципалы и личности
Роли .NET в Windows
Другие классы личностей
Разрешения коду на доступ

Трассировка и отладка в .NET
Cложные приложения не всегда удается эффективно отлаживать под управлением отладчика, чтобы узнать, что пошло не так, как надо Дублирование, а также написание условий, необходимых для отладки, становится зачастую сложной задачей В пространстве имен System: : Diagnostics (Система Диагностика) есть определенные классы, которые помогают оснастить ваше приложение инструментальными средствами Оснастив приложение необходимыми инструментальными средствами, в процессе отладки и трассировки вы сможете сделать его более устойчивым При этом также проясняется общий шаблон того, как каркас разбивает классы на отдельные задачи (запись вывода, управление выводом, назначение вывода) так, чтобы можно было настроить эти отдельные части, и в остальном полностью полагаться на классы Framework Механика оснащения приложения имеет три аспекта

Трассировка и отладка в .NET
Пример TraceDemo
Разворачивание TraceDemo.exe.config
Использование классов Debug и Trace
Использование переключателей для активизации
Активация и деактивация переключателей
Установка переключателей в файле конфигурации
Установка переключателей программным путем
Переключатели для управления выводом
Класс TraceListener

Смешивание управляемого и неуправляемого кода
Архитектура .NET поддерживает многочисленные языки программирования. В основном язык C++ выбирают из-за того, что в интерфейс 32-разрядных Windows-приложений (Win32 API), в программирование на основе модели компонентных объектов Microsoft (Component Object Model, COM) и в существующие программы были вложены большие средства. Таким образом, взаимодействие между управляемыми программами .NET общеязыковой среды выполнения CLR (Common Language Runtime) и неуправляемыми решениями и компонентами, написанными на C++, будет представлять интерес для многих программистов, во всяком случае, в обозримом будущем.

Смешивание управляемого и неуправляемого кода
Сравнение управляемого и неуправляемого кода
Причины смешивания кодов
Неуправляемый или опасный?
Управляемые и неуправляемые ссылки
Ограничения на использование типов в C++
Вызов управляемого кода из неуправляемого
Сравнение программирования на C++ и .NET
Доступ из управляемого кода к компонентам
Сервисная программа Tibinp.ехе

Visual Studio.NET
Хотя в .NET можно программировать, используя лишь компилятор командной строки, намного легче и приятнее использовать Visual Studio.NET. В этом приложении мы рассмотрим основы использования среды Visual Studio для редактирования, компиляции, запуска и отладки программ. Ознакомившись с ним, вы будете готовы использовать Visual Studio при знакомстве с остальными частями книги. В приложении рассмотрены основы, достаточные для того, чтобы вы смогли начать самостоятельно использовать Visual Studio. Дополнительная информация о возможностях Visual Studio излагается в главах книги по мере необходимости. При написании этой книги использовались бета-версии программного обеспечения, так что коммерческие его версии могут немного отличаться от описанных здесь. Кроме того, Visual Studio — сложное приложение для Windows, с широкими возможностями конфигурирования, поэтому могут отличаться также конфигурации окон и т.д.

Visual Studio.NET
Обзор Visual Studio.NET
Панели инструментов
Создание консольного приложения
Создание проекта C++
Добавление файла на C++
Использование текстового редактора Visual Studio
Компиляция проекта
Запуск программы
Запуск программы в отладчике

Интегрированные сети ISDN

Сети Token Ring были разработаны фирмой IBM в 1970-х годах и рассчитана на скорость обмена 4.16 Мбит/c при числе сегментов до 250. По своей популярности она уступает лишь Ethernet/IEEE 802.3. Спецификация IEEE 802.5 практически идентична ей и полностью совместима (см. [13], или, например, bbs.uniinc.msk.ru/product/bay/routers/interf/toking.htm. Сеть Token Ring имеет топологию звезды, все оконечные станции которой подключаются к общему устройству (MSAU - MultiStation Access Unit). В IEEE 802.5 топология не оговаривается, не регламентирована здесь и сетевая среда. В Token Ring сеть базируется на скрученных парах. Обе эти разновидности сети используют схему передачи маркера (небольшой пакет - token).
В отличие от сетей с csma/cd доступом (например, Ethernet) в IEEE 802.5 гарантируется стабильность пропускной способности (нет столкновений). Сети Token Ring имеют встроенные средства диагностики, они более приспособлены для решения задач реального времени, но в то же время более дороги.

IEEE (Token Ring)


AppleTalk
Сеть APPLETALK разработана компанией apple computer inc. (ЭВМ Macintosh, 1987 г) Эти сети могут работать в среде Ethernet, Token Ring, FDDI и localtalk (собственная сеть apple, использующая скрученные пары). В AppleTalk специфицирован собственный стек протоколов, которые управляют потоком данных в сети. Для целей маршрутизации AppleTalk использует модифицированную версию внутреннего протокола маршрутизации IGRP.

AppleTalk
Диаграмма стека протоколов appletalk
Формат пакетов в сети Apple Talk Phase II
Таблица содержит в себе расстояние
Таблица просматривается всякий
Таблица содержит по одной записи
Приложения
Наложенные сети
Локальные сети ArcNet
Топологическая схема сети Arcnet

Разводка разъемов
Кабельные каналы для целей телекоммуникаций исторически использовались первыми. Да и сегодня по суммарной длине они превосходят даже спутниковые каналы. Основную долю этих каналов, насчитывающих многие сотни тысяч километров, составляют телефонные медные кабели. Эти кабели содержат десятки или даже сотни скрученных пар проводов. Полоса пропускания таких кабелей обычно составляет 3-3,5 кГц при длине 2-10 км.

Разводка разъемов
Разводка разъема интерфейса RS-2
Кабельные каналы связи
Центральный проводник; – изолятор;
Таблица 1
Зависимость ослабления сигнала в кабеле
Сопротивление кабеля по постоянному току
Новые европейские стандарты
Обзор классов соединений ISO/IEC EN
Новые европейские стандарты CENELEC

Алгоритм DES
Если скорость нарастания входного сигнала велика, то уровень на выходе ЦАП будет отставать и сможет нагнать In(t) только, когда входной сигнал начнет уменьшаться. Данный метод не является разумной альтернативой PCM. Для улучшения характеристик дельта-преобразователя реверсивный счетчик можно заменить цифровым процессором, при этом шаг S становится переменным, но кратным некоторому базовому значению.

Схема устройства линейной дельта-модуляции
Алгоритм DES
Алгоритм работы функции f
Структурная схема реализации алгоритма DEA
Алгоритм последовательности ключей Kn
Алгоритм Диффи-Хелмана
Cтруктура, обработка запросов
Структура взаимодействия с серверами имен
Стандартизованные суффиксы имен
Формат dns-сообщений

Электронная торговля в Интернет
Бурное развитие Интернет во всем мире и в РФ открыло ряд направлений бизнеса: предоставление услуг Интернет, электронная почта, IP-телефония и т.д. На подходе сфера сетевых развлечений и виртуальной реальности, этому способствует впечатляющий прогресс в разработке мультимедиа стандартов и протоколов MPEG-4 и MPEG-7. Банки давно использовали специализированные сети для расчетов, в последнее время они стали осваивать возможности общедоступных сетей. Реклама через Интернет стала высокодоходной деятельностью даже в России. Особое положение в этом ряду занимает электронная коммерция через Интернет.

Последовательность активации контактов ICC
Диаграмма реализации “холодного” сброса
Временная диаграмма “теплого” сброса
Диаграмма дезактивации контактов ICC
Диаграмма передачи символов по шине I/O
Таблица Базовый ATR для T=0
Таблица Базовый ATR для T=1
Кодирование командного байта
Кодирование статусных байтов SW SW2
Сводные данные по командам/откликам

Канальный протокол Fibre Channel
Известно, что производительность микропроцессоров рабочих станций удваивается каждые 18 месяцев. Каждому миллиону операций в секунду процессора должна соответствовать пропускная способность ввода/вывода, равная мегабиту в секунду (закон Amdahl). По этой причине требования к широкополосности телекоммуникационных каналов уже сегодня лежит в диапазоне от 100 до 1000 Мбит/с. Наиболее популярные скоростные сети Fast Ethernet, FDDI и ATM соответствуют этим требованиям на пределе.

Формат пакета Fibre Channel
Типы топологии FC
Протокол Frame Relay
Формат пакетов Frame Relay
Байтовый заголовок пакета Frame Relay
Байтовый заголовок пакета Frame Relay
Байтовый заголовок пакета Frame Relay
Формат маршрутизуемого кадра Frame Relay
Таблица Коды поля NLPID
Формат маршрутизируемой IP-дейтограммы

Протокол G3
Интерфейс G.703 (ITU-T Recommendation G.703.Physical/Electrical Characteristics of Hierarchical Digital Interfaces. 1972 last amended in 1991) был разработан в 1972 году и базируется на стандартах G.702, G.704 и I.430 и обслуживает сети с иерархией PDH и SDH. Первоначально он разрабатывался для систем с импульсно-кодовой модуляцией. G.703 может работать на скоростях передачи данных 64 Кбит/с, 1544, 6312, 32064 и 44736 Кбит/с (PDH, американская версия), 2048, 8448, 34368, 139264 Кбит/с (европейская версия).

Протокол G3
Однонаправленная передача информации
Разнонаправленная передача информации
Интерфейс с центральным тактовым генератором
Таблица
Gopher

Статический алгоритм Хафмана
При использовании кодирования по схеме Хафмана надо вместе с закодированным текстом передать соответствующий алфавит. При передаче больших фрагментов избыточность, сопряженная с этим не может быть значительной.
Возможно применение стандартных алфавитов (кодовых таблиц) для пересылки английского, русского, французского и т.д. текстов, программных текстов на С++, Паскале и т.д. Кодирование при этом не будет оптимальным, но исключается статистическая обработка пересылаемых фрагментов и отпадает необходимость пересылки кодовых таблиц.

Статический алгоритм Хафмана
Пример реализации алгоритма Хафмана
Параллельный сетевой интерфейс HIPPI
Пример топологии сети hippi
Структура передаваемой информации
Формат i-поля пакета HIPPI
Блок-схема канала HIPPI
Символьный набор HTML
Язык HTML
Таблица сдвинута к левому краю

Гипертекстный протокол HTTP
Протокол передачи гипертекста HTTP является протоколом прикладного уровня для распределенных мультимедийных информационных систем. Это объектно-ориентированный протокол, пригодный для решения многих задач, таких как создание серверов имен, распределенных объектно-ориентированных управляющих систем и др.. Структура HTTP позволяет создавать системы, независящие от передаваемой информации.

Отклик устарел
Перепроверка пригодности неудачна
Работа в отключенном от сети состоянии
Эвристическое завершение периода пригодности
Transformation applied
Разные предупреждения

Схема беспроводной локальной сети
В 1992 году страны члены ЕС выделили диапазон частот 1,89-1,9 ГГц для целей построения сетей, базирующихся на применение радиосигналов (стандарт DECT - Digital European Cordless Telecommunications). Этот стандарт был разработан для целей передачи данных и голоса в системах сотовой связи. В США для этих же целей используются широкополосные системы с шумоподобным сигналом (SST - ШПС). Для подобных же целей выделены также частотные диапазоны 18 и 60ГГц (диапазон 2,4 ГГц сильно перегружен и “засорен” шумами). Существуют уже системы базирующиеся на Ethernet и Token Ring.

Схема беспроводной локальной сети
Схема взаимодействия узлов в сети
Диагностика на базе ICMP
Диагностика на базе ICMP - 2
Диагностические возможности протокола ICMP
Схема зондирования
Пример круглосуточного мониторинга активности
Протокол передачи сообщений об ошибках
Схема вложения ICMP-пакетов в Ethernet-кадр
Таблица этих кодов приведена ниже

Таблица локальных дескрипторов
Протокол PPP [RFC1661] определяет механизм инкапсуляции для транспортировки мультипротокольных пакетов для соединений точка-точка сетевого уровня L2. Обычно, пользователь получает соединение L2 с сервером доступа NAS (Network Access Server) посредством одной из следующих технологий: посредством модема через коммутируемую телефонную сеть, ISDN, ADSL, и т.д. Далее через это соединение реализуется протокол PPP. В такой конфигурации терминальная точка L2 и сессии PPP находится в одном и том же физическом устройстве (NAS). Разрабатывается версия протокола для безопасного удаленногго доступа через L2TP (RFC-2888).

Топология
Схема работы протокола LP
Обзор протокола
Структура протокола LP
Формат заголовка LP
Формат заголовка LP - часть 2
Пары атрибутов управляющих сообщений
Формат поля значения атрибута AVP
Формат поля значения атрибута AVP - 2
Поле AVP управления контрольным соединением

Маршрутная политика
Содержанием политики маршрутизации являются правила обмена маршрутной информацией между автономными системами (RIPE-181.txt). Не следует путать "маршрутную политику" и просто "политику", между ними такое же различие, как между "милостивым государем" и "государем". Способы их описания разнятся столь же значительно. При описании обычной политики одной из главных задач является сокрытие истинных намерений, а одним из средств - многословие. При описании же маршрутной политики важна лаконичность и четкость. В Интернет для решения этой задачи выработан стандарт, краткое изложение которого на конкретных примерах будет приведено ниже. Объектами маршрутной политики являются автономные системы (AUT-NUM) и маршруты (route).

Маршрутная политика
Схема связи автономных систем
Стандартные мультикастинг-адреса Интернет
Стандартные мультикастинг-адреса Интернет - 2
Список откликов на почтовые команды
Список откликов на почтовые сообщения
Электронная почта
Пересылка электронных почтовых сообщений
Коды Base Код символа
Типы и субтипы почтовых

Стандарт MPEG
MPEG-7 будет стандартом для описания мультимедийных данных, которые поддерживают определенные операционные требования. MPEG не стандартизует приложения. MPEG может, однако использовать приложения для понимания требований и развития технологий. Должно быть ясно, что требования, сформулированные в данном документе, получены из анализа широкого диапазона потенциальных приложений, которые могут использовать описания MPEG-7. MPEG-7 не ориентирован на какое-то конкретное приложение; скорее, элементы, которые стандартизует MPEG-7, будут поддерживать максимально широкий диапазон приложений.

Примеры характеристик для описания сегмента
Изображения с стационарными областями
Пример видео-сегмента и областей для графа
Пример графа сегмента
Пример графа сегмента - часть 2
Средства для описания концептуальных аспектов
Пример концептуальных аспектов описания
Пример иерархического
Пример иерархического - часть 2
Пространственно-частотный

Синтетические объекты
Средства для естественного видео в визуальном стандарте MPEG-4 предоставляют стандартные технологии, позволяющие эффективно запоминать, передавать и манипулировать текстурами, изображениями и видео данными для мультимедийной среды. Эти средства позволяют декодировать и представлять атомные блоки изображений и видео, называемые "видео объектами" (VO). Примером VO может быть говорящий человек (без фона), который может быть также создан из других AVO (аудио-визуальный объект) в процессе формирования сцены. Обычные прямоугольные изображения образуют специальный случай таких объектов.

Положение интерфейсов в архитектуре MPEG-J
Описание визуальной секции MPEG-4
Приложения видео-стандарта MPEG-4
Натуральные текстуры, изображения и видео
Синтетические объекты
Масштабируемое кодирование видео-объектов
Устойчивость в среде с ошибками
Разрешение с низкой задержкой буферизации
Кодирование текстур и статические изображения
Кодирование нескольких видов компонентов

Протокол аутентификации Нидхэма-Шредера
Безопасная передача данных по сети, которая сама не является безопасной, предполагает шифрование передаваемой информации. Будем предполагать, что каждая из сторон, участвующих в обмене, способна шифровать и дешифровать данные. Протокол Нидхэма-Шрёдера может работать как для симметричной, так и несимметричной схем шифрования (с общим секретным ключом и с двумя парами ключей, соответственно). Будем также считать, что злоумышленник может подключить свою ЭВМ в любую точку пути, по которому происходит обмен и, таким образом, способен перехватить, воспроизвести или исказить любое сообщение. ЭВМ же субъектов обмена и сервер аутентификации предполагаются защищенными от вторжения.

Формат кадра NBFCP
Таблица возможных значений поля
Таблица Коды класса партнера
Формат запроса WINS
Формат отклика WINS
Таблица операций NCP
Таблица субопераций NCP
Протокол ядра NetWare (NCP)
Формат заголовка пакета NCP
Таблица Значения кодов поля тип запроса

Оптоволоконные каналы
А.Г.Белл в 1880 году запатентовал фотофон – прибор для передачи голоса посредством светового сигнала с селеновым фотодетектором. Первые коммерческие телефонные системы были созданы лишь в 1977 году и работали со скоростью 44,7 Мбит/с. Одномодовые волоконные кабели начали производиться в 1983 году. В 1990 году Линн Моллинер (Bellcore) продемонстрировал передачу данных со скоростью 2,5Гбит/c на расстояние 7500 км (без промежуточных усилителей сигнала) В 1990 году в США суммарная протяженность оптических волокон составляла около 9000000 км. В 2000 году обшая длина оптоволокон только в США превысила 30 миллионов километров.

Сечение оптоволоконного кабеля
Характеристики светодиодо
Характеристики оптических приемников
Зависимость поглощения света в волокне
Зависимость дисперсии от длины волны
Зависимость полосы пропускания волокна
Типовые характеристики оптических волокон
Схема оптического разъема

Таблица программируемого драйва
Не трудно видеть, что в смешанном протоколе ARP нескольким IP-адресам ставится в соответствие один и тот же физический адрес. Поэтому системы, где предусмотрен контроль за соответствием физических и IP-адресов, не могут работать со смешанным протоколом ARP. Главным преимуществом этого протокола является то, что он позволяет путем добавления одного маршрутизатора (Gateway) подключить к Интернет еще одну сеть, не изменяя таблиц маршрутизации в других узлах. Этот протокол удобен для сети, где есть ЭВМ, не способная работать с субсетями. Протокол используется при построении сетей Интранет.

Таблица Размеры кадров MPEG-и MPEG-2
Мультиплексирование аудио и видео данных
Схема реализации интерактивного телевидения
Протокол PIM
Протокол PIM - 2
Протокол мультикастинг маршрутизации PIM
Формат заголовка сообщения PIM
Таблица Коды типа сообщений
Формат закодированного группового адреса
Формат кодированного адреса отправителя

Квантовая криптография
Базовой задачей криптографии является шифрование данных и аутентификация отправителя. Это легко выполнить, если как отправитель, так и получатель имеют псевдослучайные последовательности бит, называемые ключами. Перед началом обмена каждый из участников должен получить ключ, причем эту процедуру следует выполнить с наивысшим уровнем конфиденциальности, так чтобы никакая третья сторона не могла получить доступ даже к части этой информации. Задача безопасной пересылки ключей может быть решена с помощью квантовой рассылки ключей QKD (Quantum Key Distribution). Надежность метода зиждется на нерушимости законов квантовой механики. Злоумышленник не может отвести часть сигнала с передающей линии, так как нельзя поделить электромагнитный квант на части.

Реализация идеи квантовой криптографии
Реализация алгоритма B
Интерферометр с одним транспортным волокном
Вопросы по данному курсу

Беспроводные (радио) каналы и сети
Если не используется направленная антенна и на пути нет препятствий, радиоволны распространяются по всем направлениям равномерно и сигнал падает пропорционально квадрату расстояния между передатчиком и приемником (удвоение расстояния приводит к потерям 6дБ). Радио каналы для целей передачи информации используют частотные диапазоны 902-928 МГц (расстояния до 10 км, пропускная способность до 64кбит/с), 2,4 ГГц и 12 ГГц (до 50 км, до 8 Мбит/с). Они используются там, где не существует кабельных или оптоволоконных каналов или их создание по каким-то причинам невозможно или слишком дорого.

Беспроводные (радио) каналы и сети
Таблица
Диапазоны телекоммуникационных каналов
Поглощающая способности атмосферы
Поглощение радиоволн в тумане и дожде
Оборудование радиоканала передачи данных
Схема подключения радио-модемов
Радио-бриджи с всенаправленной антенной
Диаграмма излучения параболической антенны
Диапазоны для спутниковых телекоммуникаций

Расширение RPSL
Практика работы с языками описания маршрутной политики (PRDB [2], RIPE-81 [8], and RIPE-181 [7]) показывает, что язык описания должен быть расширяемым. Новые маршрутные протоколы или новые особенности существующих протоколов могут быть легко описаны, с помощью класса dictionary RPSL. Могут быть добавлены новые классы или новые атрибуты существующих классов. Класс dictionary является первичным механизмом расширения RPSL. Объекты словаря определяют атрибуты маршрутной политики, типы и протоколы маршрутизации.

Расширение RPSL
Ссылки
B Грамматические правила
Алгоритм шифрования RSA
Протокол резервирования ресурсов RSVP
Протокол резервирования ресурсов RSVP - 2
RSVP в ЭВМ и маршрутизаторе
Конфигурация маршрутизатора
Демонстрация стиля WF
Пример резервирования WF (Wildcard-Filter)

Модель машины конечных состояний
Базовой концепцией построения многих современных протоколов является машина конечных состояний (FSM - Finite State Machine). При этом подходе каждый протокол характеризуется машиной, которая в любой момент времени находится в каком-то конкретном состоянии. Каждому состоянию соответствует определнный набор значений системных переменных. Такой подход требует определенного уровня абстрагирования. Например, для того чтобы ЭВМ перешла из состояния ожидания в состояние, когда получено некоторое сообщение, реализуется достаточно много промежуточных операций (проверка качества сигнала, контроль целостности сообщения, проверка отсутствия переполнения буфера и многие другие).

Обработка сообщений
Таблица Отправление сообщения
Таблица Прием и обработка входного сообщения
Таблица Верификация сертификатов
Таблица Посылка оттиска
Обработка оттисков получателем
Процедура асимметричного шифрования
Асимметричное шифрование с гарантией
Процедура симметричного шифрования
Процедура формирования цифровой подписи

Таблица Структура BatchStatus
Структура TransactionDetail служит для предоставления детальной информации о платежной линии между расчетным центром и продавцом

Таблица Структура BatchStatus
Таблица Структура TransactionDetail
AmtExp - Значение
Поток платежных сообщений
Диаграмма обмена для протокола покупки
Опции обмена сообщениями при покупке
Обработка запросов инициализации платежа
Таблица Структура PInitReq
Таблица Структура PInitRes
Обработка заказа-покупки

Таблица Базовые SPI процедуры передачи данных Winsock 2
Программирование - искусство индивидуальное, но сетевое программирование имеет много специфических особенностей, требующих выполнения определенных правил. Оно в значительной мере напоминает написание программ реального времени, так как здесь также приходится иметь дело с постоянно изменяющимися обстоятельствами. Заметные отличия возникают из-за работы в разных операционных системах (DOS, UNIX, Windows, OS/2). Существуют задачи, которые даже сегодня лучше реализовать в ОС DOS. К таким задачам следует отнести хронометраж некоторых сетевых операций (к сожалению многозадачные и многопользовательские системы довольно часто вносят ошибки в результаты временных измерений с использованием внутренних машинных часов).

Программирование для сетей
Методы преобразования звуковых сигналов
Иллюстрация функций преобразования
Адаптивный преобразователь голоса в код
ADPCM-преобразователь голоса в код для кбит/с
Скорости передачи данных по цифровым каналам
Скорости передачи по оптическим каналам
SPX-протокол
Формат заголовка SPX-пакета
Формат заголовка SPX-пакета - 2

Цифровые каналы Tи Е1
Системы (каналы) T1 имеют пропускную способность, соответствующую 24 аналоговым каналам с полосой 0-3.3 кГц (американская версия стандарта). Частота стробирования равна 8 кГц, что соответствует передаче 8000 кадров в сек. После каждых 6000 футов коаксиального кабеля ставятся системы регенерации сигналов. Все 24 канала мультиплексируются на общий коаксиальный кабель, предварительно производится PCM-преобразование сигналов. 24 канала по 8 бит (при 8-битном АЦП) дает 192 бита на кадр. Один дополнительный (193-ий) бит используется для целей синхронизации (F). Таким образом частота бит в канале Т1 составляет 193*8000=1,554 Мбит/с (это стандарт США, его европейский аналог - Е1 имеет 30 каналов и пропускную способность 2048 кбит/c). Это соответствует частоте кадров 667/с.

Цифровые каналы Tи Е1
Структура кадров для стандартов передачи
Протокол TCP
Протокол TCP - 2
Таблица Значения бит поля флаги
Формат TCP-сегмента
Формат опций для TCP-сегментов
Алгоритм установления связи В
Схема подключения UPS
Протокол TFTP

Протокол обмена UUCP
Этот протокол сыграл немалую роль в становлении современных телекоммуникационных технологий. Первые системы электронной почты использовали протокол UUCP (Unix-to-Unix Copy Program). Основополагающие идеи ОС UNIX расширили область взаимодействия вычислительных и управляющих процессов за рамки центрального процессора ЭВМ. Хотя большинство современных почтовых серверов базируется на протоколе SMTP, протокол UUCP продолжает применяться во многих приложениях, использующих ОС UNIX

Протокол обмена UUCP
Формат пакетов g-протокола
Формат пакетов g-протокола - 2
Формат пакета i –протокола
Формат пакета i –протокола - 2
Формат заголовка j-пакета
Формат заголовка для y-пакетов
Протокол UDP
Формат UDP-дейтограмм Длина сообщения
Таблица номеров UDP-портов приведена

Видеоконференции по каналам Интернет и ISDN
Расширение международных контактов и реализация проектов с "удаленными" отечественными партнерами делает актуальной проблему экономии командировочных расходов особенно в случае коротких поездок (1-7 дней). Одним из средств решения проблемы является использование видеоконференций. Видеоконференции по каналам Интернет могут быть привлекательны для дистанционного обучения и медицинской диагностики. В отличие от телевизионных программ обучение с использованием Интернет предполагает диалог между преподавателем и обучаемым, что делает процесс более эффективным (эта техника может успешно дополнить WWW-методику, широко используемую в университетах США и Европы).

Видеоконференции по каналам Интернет и ISDN
Оборудование для видеоконференций
Оборудование для видеоконференций - 2
Структура системы Hи основных ее компонентов
Структура терминала H3
Схема шлюза IP/GSTN
Схема шлюза IP/GSTN - 2
Кодирование/декодирование голоса (Vocoder)
Виртуальные локальные сети VLAN, Интранет
Формат пакета IEEE

Таблица Команды WAIS Основные
WAIS (Wide Area Information Server) распределенная система поиска информации. Поиск производится по базам данных, содержащим текстовые документы (но допустимы также графические, звуковые или видео документы). Тематика баз данных и поиска произвольны. Базы данных могут иметь любую структуру, но пользователю не нужно знать языка управления этими базами. WAIS использует естественный управляющий язык. WAIS доступен в Интернет.

WAIS
Таблица Команды WAIS Основные
Таблица Команды WAIS Основные - 2
Региональные сети
Безопасность WEB-серверов
Whois

Протоколы сетей X
В 1976 году был принят стандарт X.25, который стал основой всемирной системы PSPDN (Packet-Switched Public Data Networks), базирующейся на 7-уровневой модели ISO OSI. Стандарт X.25 был усовершенствован в 1984. X.25 - протокол (ISO 8208:1989; RFC-887, -1381, -1382, -1461, -1598, -1613), который определяет синхронный интерфейс между терминальным оборудованием (DTE - Data Terminal Equipment) и оборудованием передачи данных (DCE - Data Communication Equipment) для терминалов, работающих в пакетном режиме. По существу это протокол связи оборудования с сетью. Главный недостаток протокола X.25 - большие задержки отклика (типовое значение 0.6 сек). Терминалом может служить ЭВМ или любая другая система, удовлетворяющая требованиям X.25. Соединение DTE - DTE осуществляется через DCE.

Возможная топология сети X
Таблица Коды причины ошибки
Три уровня X
Формат кадра X
Значения кодов идентификатора общего формата
Значения кодов тип пакета
Формат кадра запроса на соединение
Формат пакетов запроса завершения
Коды причин повторного пуска
Формат пакетов подтверждения завершения

Алгоритм Зива-Лемпеля
Большинство алгоритмов сжатия базируется на последовательной схеме сжатия Лемпеля-Зива (Lempel-Ziv, 1977). Этот алгоритм используется, в частности, стандартной процедурой UNIX Compress. Методики со статистическим моделированием могут обеспечить лучшее сжатие, но они заметно медленнее. Но существует алгоритм, который совмещает в себе лучшие из черт названных выше. Этот алгоритм не предусматривает последовательной обработки входных данных, а обрабатывает текст по-блочно. Здесь используется обратимое преобразование блока данных к виду, который позволяет эффективно сжать данные с помощью простых алгоритмов. Преобразование имеет целью сгруппировать символы так, чтобы вероятность появления последовательностей идентичных символов значительно возросла.

Принципы объектно-ориентированного программирования

Вы познакомитесь с терминологией объектно-ориентированного программирования (ООП) и убедитесь в важности применения в программировании объектно-ориентированных концепций. Бытует мнение, что во многих языках, таких как C++ и Microsoft Visual Basic, есть "поддержка объектов", однако на самом деле лишь немногие из них следуют всем принципам, составляющим основу ООП, и язык С# — один из них. Он изначально разрабатывался как настоящий объектно-ориентированный язык, в основе которого лежит технология компонентов. Поэтому, чтобы чтение этой книги принесло максимальную пользу, вам следует очень хорошо усвоить представленные здесь понятия.

Принципы объектно-ориентированного программирования
Сразу хочу предупредить новичков в ООП: опыт, полученный при работе с не объектно-ориентированными языками, вам не пригодится. Объектно-ориентированное программирование — это иной способ осмысления, формулирования и решения задач по созданию программ. Практика показывает, что начинающие программисты намного быстрее овладевают объектно-ориентированными языками, чем те, кто начинал с процедурных языков вроде BASIC, COBOL и С. Им не нужно "забывать" навыки работы с процедурами, которые лишь мешают в освоении ООП. Тут лучше всего начинать "с чистого листа".

Любая сущность — объект
Не объектно-ориентированный подход
Объектно-ориентированный подход
Примечание
Объекты и классы
Реализация
Три основных принципа языков ООП
Инкапсуляция
Абстрагирование
Примечание

Введение в Microsoft .NET
Не имея четкого представления о Microsoft .NET и роли, которую играет в этой новой инициативе Microsoft язык С#, вам будет трудно разобраться в ключевых элементах С#, поддерживаемых платформой Microsoft .NET. Представленный в этой главе обзор технологии Microsoft .NET поможет вам усвоить терминологию, применяемую в этой книге, и понять, почему некоторые элементы языка С# ведут себя так, а не иначе. Если просмотреть в Интернете материалы по Microsoft .NET, можно заметить разнобой в трактовке и употреблении терминов этой технологии. Двусмысленные, а порой и просто противоречивые высказывания мешают уловить суть излагаемого материала.

Платформа Microsoft .NET
.NET Framework
Windows DMA и. NET
Common Language Runtime
Библиотеки классов .NET Framework
Примечание
Intermediate Language и компиляторы JITter
Генератор кода при установке
EconoJIT
Унифицированная система типов

Hello, C#
Прежде чем приняться за главное в нашей теме — части II "Основы классов С#" и III "Написание программ", я предлагаю вам поучаствовать в разработке небольшого С#-приложения. В начале этой главы вы узнаете о достоинствах и недостатках редакторов, в которых можно писать программы на С#. Выбрав подходящий редактор, мы создадим каноническое приложение "Hello, World" и попутно познакомимся с основным синтаксисом и схемой создания С#-приложений.

Ваше первое приложение на С#
Выбор редактора
Notepad
Visual Studio 6
Подсветка синтаксиса в Visual Studio
Visual Studio.NET
Прочие редакторы
Чем я пользовался в этой книге
"Hello, World"
Запуск компилятора из командной строки

Система типов
Эта глава посвящена универсальной системе типов .NET Common Type System (CTS), которая находится в центре Microsoft .NET Framework. CTS определяет не только все типы, но и правила, которым Common Language Runtime (CLR) следует в отношении объявления и использования этих типов приложениями. Вы познакомитесь с типами, доступными разработчикам на С#, и узнаете об особенностях их применения в программах на С#.

Любая сущность — объект
Размерные и ссылочные типы
Размерные типы
Ссылочные типы
Упаковка и распаковка
Корень всех типов: System.Object
Открытые методы типа System.Object
Защищенные методы типа System.Object
Типы и псевдонимы
Типы, определенные в CTS, и их псевдонимы

Классы
Классы — сердце каждого объектно-ориентированного языка. Как вы помните, класс представляет собой инкапсуляцию данных и методов их обработки (см. главу 1). Это справедливо для любого объектно-ориентированного языка и отличаются они в этом плане лишь типами тех данных, которые можно хранить в виде членов, а также возможностями классов. В том, что касается классов и многих функций языка, С# кое-что заимствует из C++ и Java, и привносит немного изобретательности, помогающей найти элегантные решения старых проблем.

Определение классов
Члены класса
Поле.
Метод.
Свойства.
Константы.
Индексаторы.
События.
Операторы.
Модификаторы доступа

Методы
Как вы узнали из главы 1, классы — это инкапсулированные наборы данных и методов, обрабатывающих эти данные. Иначе говоря, методы определяют поведение классов. Мы называем методы в соответствии с действиями, выполняемыми классами по нашему желанию в наших интересах. До сих пор я не вдавался в подробности определения и вызова методов на С#. Вот этому и будет посвящена данная глава: здесь вы узнаете о ключевых словах параметров методов re/и out, а также как с их помощью определяются методы, которые возвращают вызывающему коду больше одного значения. Вы также научитесь определять перегруженные методы — когда несколько методов с одинаковым именем могут по-разному функционировать в зависимости от типов и/или числа переданных им аргументов.

Параметры ref и out
Перегрузка методов
Переменное число параметров метода
Виртуальные методы
Подмена методов
Полиморфизм
Примечание
Статические методы
Набор остальных обычных членов
Доступ к членам класса

Свойства, массивы и индексаторы
Я уже описал основные поддерживаемые С# типы, способы их объявления и использования в классах и приложениях. А теперь мы нарушим порядок изложения, при котором каждая глава посвящена описанию какой-либо одной из важных функций языка, — в этой главе вы узнаете о свойствах, массивах и индексаторах, так как у этих функций языка много общего. Они позволяют разработчику классов на С# расширять возможности базовых структур классов (полей и методов), чтобы члены классов предоставляли более понятный и естественный интерфейс.

Свойства как "умные" поля
Определение и использование свойств
Чем занимается компилятор на самом деле
Ошибка - компилироваться не будет
Сверить почтовый индекс с базой данных.
Обновить город на основе проверенного zipCode
Конец метода Address
Неизменяемые свойства
Наследование свойств
Дополнительные возможности свойств.

Атрибуты
Большинство языков программирования разрабатываются с учетом набора необходимых возможностей. Так, в начале создания компилятора вы думаете, какова будет структура приложений на новом языке, как один фрагмент кода будет вызывать другой, как распределить функциональность и о многих других проблемах, решение которых сделает язык продуктивным средством создания ПО. Обычно разработчикам компиляторов приходится иметь дело со статическими сущностями. Например, вы определяете класс на С#, помещая перед его именем ключевое слово class. После этого вы определяете производный класс, вставляя двоеточие после его имени, за которым следует имя базового класса. Это может служить примером решения, которое принимается разработчиком языка однажды и после этого не может быть изменено.

Что такое атрибуты
Определение атрибутов
HKEY_CURRENT_CONFIG
Примечание
Запрос атрибутов
Атрибуты класса
Атрибуты метода
Атрибуты поля
Параметры атрибута
Позиционные и именованные параметры

Интерфейсы
Ключ к пониманию интерфейсов лежит в их сравнении с классами. Классы — это объекты, обладающие свойствами и методами, которые на эти свойства воздействуют. Хотя классы проявляют некоторые характеристики, связанные с поведением (методы), они представляют собой предметы, а не действия, присущие интерфейсам. Интерфейсы позволяют определять характеристики или возможности действий и применять их к классам независимо от иерархии последних. Допустим, у вас есть дистрибьюторское приложение, сущности которого можно упорядочить. Среди них могут быть классы Customer, Supplier и Invoice.

Примечание
Применение интерфейсов
Примечание
Объявление интерфейсов
Реализация интерфейсов
Запрос о реализации интерфейса с помощью is
Запрос о реализации интерфейса с помощью as
Явная квалификация имени члена интерфейса
Сокрытие имени с помощью интерфейсов
Теперь этот пример выдаст следующее

Выражения и операторы
В этой главе мы рассмотрим основу любого языка программирования — его способность выполнять присваивания и сравнения с помощью операторов. Мы увидим, какие операторы есть в С# и каково их старшинство, а затем углубимся в отдельные категории выражений для выполнения арифметических операций, присваивания значений и сравнения операндов.

Операторы
Старшинство операторов
Как старшинство определяется в С#
Старшинство операторов в С#
Левая и правая ассоциативность
Практическое применение
Операторы С#
Простые операторы
Отражение
Оператор sizeof

Управление ходом программы
Операторы, позволяющие управлять ходом выполнения программы, в приложениях С# разбиты на три категории: операторы выбора, итерационные операторы и операторы перехода. Во всех выполняется проверка вычисленного булевского значения, и на основе этой проверки изменяется выполнение приложения. В этой главе вы узнаете, как с помощью операторов каждого из этих типов управлять ходом программы.

Операторы выбора
Оператор if
Несколько конструкций else
Как if выполняется в С#
Оператор switch
Объединение case-меток
Оператор switch без передачи управления вниз
Итерационные операторы
Оператор while
Оператор do/while

Обработка ошибок с помощью исключений
Одно из основных назначений .NET Common Language Runtime (CLR) — недопущение ошибок (что достигается такими средствами, как автоматическое управление памятью и ресурсами в управляемом коде) или хотя бы их обнаружение во время компиляции (благодаря строго типизированной системе). Однако некоторые ошибки можно обнаружить только в период выполнения, а значит, для всех языков, соответствующих спецификации Common Language Specification (CLS), должен быть предусмотрен единый метод реакции на ошибки. Эта глава посвящена системе обработки ошибок, реализованной в CLR, — обработке исключений. Сначала мы изучим общий механизм и основы синтаксиса обработки исключений. Вы увидите, как обработка исключений соотносится с наиболее распространенными на сегодняшний день методами обработки ошибок, и поймете преимущества обработки исключений над другими методиками.

Обзор обработки исключений
Основной синтаксис обработки исключений
Передача исключения
Улавливание исключения
Повторная передача исключения
Освобождение ресурсов с помощью finally
Сравнение методов обработки ошибок
Преимущества обработки исключений
Обработка ошибок в правильном контексте
Улучшение читабельности кода

Перегрузка операторов и нестандартные преобразования
Из главы 7 вы узнали о применении оператора [] для индексации объектов, как если бы они были массивами. В этой главе мы рассмотрим две тесно связанные функции С# для создания интерфейсов структур и классов, упрощающих их понимание и применение: перегрузку операторов (operator overloading) и нестандартные, определенные пользователем преобразования. Я начну с общего обзора перегрузки операторов, чтобы были ясны ее преимущества, затем рассмотрю конкретный синтаксис переопределения поведения операторов по умолчанию, а также реальный пример приложения, в котором оператор + перегружается для объединения нескольких объектов Invoice. Потом вы увидите листинг с перегружаемыми бинарными и унарными операторами и применением некоторых ограничений.

Перегрузка операторов
Синтаксис и пример
Перегружаемые операторы
Примечание
Ограничения на перегрузку операторов
Правила разработки
Нестандартные преобразования
Синтаксис и пример

Делегаты и обработчики событий
Одно из полезных нововведений в С# — делегаты (delegates). Их назначение по сути совпадает с указателями функций в C++, но делегаты являются управляемыми объектами и привязаны к типам. Это значит, что исполняющая среда (runtime) гарантирует, что делегат указывает на допустимый объект, а это в свою очередь означает получение всех достоинств указателей функций без связанных с этим опасностей, таких как применение недопустимых адресов или разрушение памяти других объектов. В этой главе мы рассмотрим делегаты в сравнении с интерфейсами, их синтаксис и проблемы их применения. Мы также увидим несколько примеров использования делегатов с функциями обратного вызова и асинхронными обработчиками событий.

Использование делегатов в обратном вызове
Асинхронная обработка
Введение дополнительного кода в код класса
Определение делегатов статических членов
Примечание
Создавайте делегаты только при необходимости
Составные делегаты
Определение событий с помощью делегатов

Программирование многопоточности
С формальной точки зрения потоки не являются чем-то характерным для С#; поэтому многие книги по С# стремятся обойти этот вопрос. Хотя я старался не отклоняться от рассмотрения С#, многопоточность — это один из общих предметов, который должен быть хорошо знаком программисту при изучении этого нового языка. Конечно, в одной главе я не смогу раскрыть все вопросы, связанные с организацией потоков, но дам основы и даже расскажу о несколько более продвинутых вещах, касающихся аварийного завершения, планирования и управления временем жизни потоков. Мы также обсудим синхронизацию потоков с помощью классов System. Monitor и System.Mutex и оператор lock.

Основы организации потоков
Потоки и многозадачность
Переключение контекста
Многопоточное приложение на С#
Работа с потоками
AppDomain
Класс Thread
Создание потоков и объектов Thread
Управление временем существования потоков
Уничтожение потоков

Получение метаданных с помощью отражения
В главе 2 я говорил, что компилятор генерирует переносимый в Win32 исполняемый модуль (portable executable, РЕ), состоящий главным образом из MSIL-кода и метаданных. Одна из очень мощных возможностей .NET позволяет вам писать код, чтобы обращаться к метаданным приложения посредством отражения (reflection). Если просто, то отражение — это способность получать информацию о типе в период выполнения. В этой главе будет описан API отражения и способы его использования при обработке модулей и типов, входящих в сборки для получения различных характеристик типа, определенных в период разработки.

Иерархия API отражения
Часть иерархии классов .NET System.Reflection.
Класс Type
Получение информации о типе экземпляра
Получение информации о типе из имени
Опрос типов
Работа со сборками и модулями
Просмотр типов сборки
Примечание
Вывод списка модулей сборки

Взаимодействие с неуправляемым кодом
Продолжительность жизни нового языка или среды разработки сильно ограничена, если он или она игнорируют унаследованные системы и программы, предоставляя лишь средства для написания новых систем. Независимо от привлекательности новой технологии ее создатели должны учесть, что какое-то время ей придется сосуществовать со старой технологией. Поэтому команды разработчиков .NET и С# решили облегчить программистам взаимодействие с существующим кодом посредством неуправляемого (unmanaged) кода, т. е. кода, которым нельзя управлять (контролировать) средствами поддержки периода выполнения .NET.

Platform Invocation Services
небезопасный код (unsafe code)
взаимодействие с COM (COM interoperability)
Platform Invocation Services
Примечание
Объявление экспортированной функции DLL
Использование функций обратного вызова на С#
Преобразование и Plnvoke
Написание небезопасного кода
Использование указателей в С#

Работа со сборками
В этой главе описаны наиболее важные преимущества сборок (assemblies), включая упаковку компонентов .NET и управление их версиями. Вы также узнаете, как создавать однофайловые и многофайловые сборки с помощью утилиты Assembly Generation (al.exe), создавать совместно используемые сборки, применяя утилиту Strong Name (sn.exe), просматривать глобальный кэш сборки с помощью Assembly Cache Viewer (shfu-sion.dll) и как утилита Global Assembly Cache (gacutil.exe) помогает манипулировать кэшем сборки.

Обзор сборок
Данные в декларации
Преимущества сборок
Упаковка сборки
Развертывание сборки
Управление версиями сборки
Создание сборок
Создание сборок из нескольких модулей
Совместно используемые сборки
Работа с глобальным кэшем сборок