- •1. Язык программирования c# 3
- •2. Базовые элементы .Net Framework 67
- •3. ТЕхнология .Net Remoting 144
- •Введение
- •1. Язык программирования c#
- •1.1. Платформа .Net – обзор архитектуры
- •1.2. Язык c# - общие концепции синтаксиса
- •1.3. Система типов языка c#
- •1.4. Преобразования типов
- •1.5. Идентификаторы, ключевые слова и литералы
- •1.6. Объявление переменных, полей и констант
- •1.7. Выражения и операции
- •1.8. Операторы языка c#
- •1.9. Объявление и вызов методов
- •1.10. Массивы в c#
- •1.11. Работа с символами и строками в c#
- •1.12. Синтаксис объявления класса, Поля и методы класса
- •1.13. Свойства и индексаторы
- •1.14. Конструкторы класса и Жизненный цикл объекта
- •1.15. Наследование классов
- •1.16. Перегрузка операЦий
- •1.17. Делегаты
- •1.18. События
- •1.19. Интерфейсы
- •1.20. Структуры и перечисления
- •1.21. Пространства имен
- •1.22. Генерация и обработка исключительных ситуаций
- •1.23. Нововведения в языке c# 2.0
- •1.24. Обобщенные типы (generics)
- •2. Базовые элементы .Net Framework
- •2.1. Метаданные и механизм отражения
- •2.2. Пользовательские и встроенные атрибуты
- •2.3. Пространство имен system.Collections
- •2.4. Работа с файлами и директориями
- •2.5. Использование потоков данных
- •2.6. Сериализация
- •2.7. Сериализация объектов в нестандартном формате
- •2.8. Введение в xml
- •2.9. Работа с xml-документами в .Net framework
- •2.10. МНогопоточное программирование
- •2.11. Синхронизация потоков
- •2.12. Асинхронный вызов методов
- •2.13. Состав и взаимодействие сборок
- •2.14. Конфигурирование сборок
- •3. ТЕхнология .Net Remoting
- •3.1. Домены приложений
- •3.2. Архитектура .Net Remoting
- •3.3. Активация удаленных объектов и их время жизни
- •3.4. Программная настройка Remoting
- •3.5. Удаленные Объекты с клиентской активацией
- •3.6. Настройка Remoting при помощи конфигурационных файлов
- •3.7. Хостинг распределенных приложений
- •3.8. Объекты-сообщения
- •3.9. Пользовательские канальные приемники
- •4.1. Архитектура ado.Net
- •4.2. Учебная база cd Rent
- •4.3. Соединение с базой данных
- •4.4. Выполнение команд и запросов к базе данных
- •4.5. Чтение данных и объект DataReader
- •4.6. Параметризированные запросы
- •4.7. Рассоединенный набор данных
- •4.8. Заполнение Рассоединенного набора данных
- •4.9. Объект класса DataColumn – колонка таблицы
- •4.10. Объекты класса DataRow – строки таблицы
- •4.11. Работа с объектом класса DataTable
- •4.12. DataSet и схема рассоединенного набора данных
- •4.13. Типизированные DataSet
- •4.14. Поиск и фильтрация данных в DataSet
- •4.15. Класс DataView
- •4.16. СиНхронизация набора данных и базы
- •5.1. Архитектура и общие концепции asp.Net
- •5.2. Пример aspx-страницы. Структура страницы
- •5.3. Директивы страницы
- •5.4. Класс System.Web.Ui.Page. События страницы
- •5.5. Серверные элементы управления
- •5.6. Элементы управления Web Controls
- •5.7. Проверочные элементы управления
- •5.8. Списковые элементы управления
- •5.9. Связывание данных
- •5.11. Управление состояниями в web-приложениях
- •5.12. Кэширование
- •5.13. Безопасность в web-приложениях
- •5.14. Создание пользовательских элементов управления
- •Литература
2.8. Введение в xml
XML – это способ записи структурированных данных. Под «структурированными данными» обычно подразумевают такие объекты, как электронные таблицы, адресные книги, конфигурационные параметры. XML-данные содержатся в документе, в роли которого может выступать файл, поток или другое хранилище информации, способное поддерживать текстовый формат.
Любой XML-документ строится по определенным правилам. XML-данные состоят из набора элементов. Каждый элемент определяется при помощи имени и открывающего и закрывающего тэга. Открывающий тэг элемента записывается в форме <имя_элемента>, закрывающий тэг – в форме </имя_элемента>. Между открывающим и закрывающим тэгами размещается содержимое элемента. Приведем пример простейшего элемента:
<name>This is a text</name>
Элемент может содержать вложенные элементы с другими именами, но в XML-документе всегда должен быть единственный элемент, называемый корневым, никакая часть которого не входит в содержимое любого другого элемента.
<Group>
<student>
<name>
Ivanov
</name>
</student>
<student>
<name>
Petrov
</name>
<ball>
4.0
</ball>
</student>
</Group>
В приведенном примере XML-документ содержит корневой элемент с именем Group, который, в свою очередь, содержит два элемента с именем student. Обратите внимание на разное количество вложенных элементов у первого и второго «студентов» (это допустимо).
Имена тегов элементов чувствительны к регистру! Элементы, задаваемые открывающим и закрывающим тегами, должны быть правильно вложены друг в друга. Следующий пример не является правильным:
<text>
<bold><italic>XML</bold></italic>
</text>
Элемент без содержимого может быть записан в специальной форме: <name/>.
Имена элементов могут содержать буквы, цифры, дефисы (-), символы подчеркивания (_), двоеточия (:) и точки (.), однако начинаться они могут только с буквы или символа подчеркивания. Двоеточие может быть использовано только в специальных случаях, когда оно разделяет так называемое пространство имен. Имена элементов, начинающиеся с xml, вне зависимости от комбинации регистров букв в этом выражении зарезервированы для нужд стандарта.
Элемент может иметь ни одного, один или несколько атрибутов. Правила на имена атрибутов накладываются такие же, как и на имена элементов. Имена атрибутов отделяются от их значений знаком =. Значение атрибута заключается в апострофы или в двойные кавычки. Если апостроф или двойные кавычки присутствуют в значении атрибута, то используются те из них, которые не встречаются в этом значении. Приведем пример элементов с атрибутами:
<elements-with-attributes>
<el _ok = "yes"/>
<one attr = "a value"/>
<several first = "1" second = "2" third = "333"/>
<apos_quote case1 = "John's"
case2 = 'He said: "Hello, world!" '/>
</elements-with-attributes>
Символы < и & не могут быть использованы в тексте, так как они используются в разметке XML-документа. Если эти символы необходимы, следует использовать < вместо < и & вместо &. Символы >, ", и ' также могут быть заменены >, " и ', соответственно.
XML-документ может содержать комментарии, записываемые в обрамлении <!-- и -->. В тексте комментариев не должна содержаться последовательность из двух знаков дефиса:
<!-- Group 252001 list -->
<Group>
<student>
<name>
Ivanov
</name>
</student>
</Group>
Документ может содержать инструкции по обработке (PI), несущие информацию для приложений. Инструкции по обработке записываются в обрамлении <? и ?>.
<example>
<?perl lower-to-upper-case ?>
<?web-server add-header = "university" ?>
<text>Some text</text>
</example>
Секция CDATA используется для того, чтобы обозначить части документа, которые не должны восприниматься как разметка. Секция CDATA начинается со строки <![CDATA[ и заканчивается строкой ]]>. Внутри самой секции не должна присутствовать строка ]]>.
<example>
<![CDATA[ <aaa>bb&cc<<<]]>
</example>
XML-документ может, но не обязан начинаться с XML-декларации, определяющей используемую версию XML:
<?xml version="1.0"?>
Декларация может содержать необязательный атрибут, указывающий кодировку XML-документа:
<?xml version="1.0" encoding="UTF-16"?>
Если XML-документ оформлен по описанным выше правилам, то он называется хорошо оформленным XML-документом. Если хорошо оформленный документ удовлетворяет некой схеме, задающей структуру и содержание, то документ называется правильно оформленным. Существует несколько способов для описания приемлемых схем документов. Один из способов – использование блоков определения типа документа (document type definitions, DTD). Современным способом считается использование языка XML Schema Definitions (XSD), который сам основан на XML.
Описание XSD может потребовать нескольких лекций, поэтому просто приведем пример файла students.xsd на этом языке:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs=http://www.w3.org/2001/XMLSchema
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:element name="Students">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="student">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="year" type="xs:gYear"/>
<xs:element name="ball" type="xs:double"
minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Department" type="xs:string"
use="optional"/>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
<xs:attribute name="Department"/>
</xs:schema>
Данная схема описывает правильные документы, которые должны содержать корневой элемент Students, элемент Students должен содержать один или несколько элементов student, а элемент student должен содержать один элемент name, один элемент year и может содержать элемент ball. Также определен порядок и тип элементов, и наличие необязательного атрибута Department у элемента student.
Существует большое количество разнообразного программного обеспечения для работы с XML-схемами, в частности, для создания схем и проверки соответствия XML-документа некоторой схеме. Упомянем такие программы как XMLSPY и утилиту Xsd.exe, которая входит в состав .NET SDK.