ADO.NET. Управление базами данных. Связь по схеме OLE DB провайдера. Коррекция стилей DataGridView, страница 42

·  Сколько строк в таблице? Сколько угодно. Правилом для образования строк является choice.

·  Сколько столбцов в таблице? Ровно столько, сколько определено ее схемой. Правилом для образования столбцов является sequence.

Тип данных каждого поля строки таблицы определен атрибутом type. Например,

   <xs:element name="Mark" type="xs:unsignedByte" minOccurs="0" />

Значение атрибута minOccurs="0" говорит о том, что данное поле может отсутствовать в XML-документе (а в БД иметь значение DBNull.

Вслед за схемой документа в файле Students.xml идут сами данные таблицы. Они имеют вид XML-документа, в котором данные помечены тегами, а их вложенность соответствует схеме.

Мы убедились, что XML-файл — это сочетание схемы на языке XSD и самого документа в формате XML. Мы также убедились в том, что сериализованный в двоичном формате DataSet, кроме данных содержит свою схему.

Хранение данных в формате SOAP

Чтобы познакомиться с еще одним чудом от W3C — протоколом SOAP (Simple Object Access Protocol), вставьте в форму кнопку: Text = Serialize SOAP, (Name) = btnSoap и введите в класс ветвь для обработки ее нажатия. Для того, чтобы эта попытка удалась, надо добавить ссылку на DLL. Поставьте фокус в узел References дерева файлов окна Solution Explorer и дайте команду Add Reference. В диалоге Add Reference (на вкладке .NET) найдите строку с именем System.Runtime.Serialization.Formatters.Soap.dll, нажмите кнопки Select, OK и добавьте директиву:

using System.Runtime.Serialization.Formatters.Soap;

Создайте ветвь обработки нажатия кнопки и метод введите следующий код:

void SerializeSoap()

{

  Stream stream = new FileStream(@"..\..\Data\Students.soap", FileMode.Create);

  IFormatter fmt = new SoapFormatter();

  fmt.Serialize(stream, ds);

  stream.Close();

}

Как видите, он полностью повторяет логику предыдущей команды Serialize и пользуется услугами двух классов: Stream и SoapFormatter. После выполнения команды откройте файл Students.soap в рамках студии и убедитесь, что SOAP-файл также содержит схему DataSet.

Его форматирование сходно с тем, что было использовано при выводе в двоичным формате, но имеет отличия, которые помогают оптимизировать общение между объектами распределенных приложений. Именно для этой цели создан протокол SOAP, который "использует технологию XML для создания расширяемого окружения, независящего от платформ программирования и протоколов обмена. Окружения, в котором происходит обмен XML документами и Web-сервисами." Приведу цитату, которую нашел в MSDN.

SOAP is a lightweight protocol intended for exchanging structured information in a decentralized, distributed environment. SOAP uses XML technologies to define an extensible messaging framework, which provides a message construct that can be exchanged over a variety of underlying protocols. The framework has been designed to be independent of any particular programming model and other implementation specific semantics.

Она напомнила мне науки типа: "История КПСС", "Экономика Социализма" и вызвала сильное желание окунуться в краткие и строгие определения высшей алгебры или функционального анализа. Но, приходится жить в этом мире, а в нем протокол SOAP действительно упрощает жизнь разработчиков распределенных приложений.

Логика использования схемы механизмом IntelliSense

Понять логику построения XML-документов проще всего на примере, поэтому мы используем XML-документ, который выведен нашим приложением и исследуем приемы работы с ним.

·  Откройте документ Student.xml, который был создан методом WriteXml класса DataSet в папке Data.

·  Поставьте фокус перед любым из тегом <Studs . . ./> и введите символ открытия тега. Механизм IntelliSense отзовется подсказкой.

·  Выберите тег Studs и нажмите пробел. Механизм IntelliSense предложит выбрать один из атрибутов.

·  Завершите ввод новой строки таблицы студентов.