Пример приложения Acme Travel Agency (Туристическое агентство Acme). Доступ к данным XML. Схема и данные XML.
К этому моменту мы изложили более чем достаточно материала, необходимого для понимания классов Customer (Клиент) и HotelBroker (Посредник, бронирующий места в гостинице) из версии приложения Acme Travel Agency (Туристическое агентство Acme), ориентированной на работу с базами данных. Как обычно, файлы с исходным кодом для этой версии находятся в папке CaseStudy. Если вы использовали программы, изменяющие содержимое базы данных HotelBroker (Посредник, бронирующий места в гостинице), не забудьте запустить макрос SQL, приводящий эту базу в исходное состояние.
В связи с тем, что у нас не было необходимости хранить какое-либо состояние объекта Customer (Клиент), в нем для доступа к базе данных и получения данных используется объект SqlDataReader Любое состояние, которое может понадобиться программе (например, список клиентов), легко может быть получено у программы-клиента, а не у объекта среднего яруса. Объекты HotelBroker (Посредник, бронирующий места в гостинице) и HotelBookings немного более сложны. Как уже было сказано, из педагогических побуждении эти объекты были реализованы с использованием объекта Data-Set (Набор данных). Так сделано для того, чтобы продемонстрировать использование этой технологии в приложениях. Тем не менее, мы увидим, что при разработке Web-ориентированых приложении есть причины сохранять некоторые состояния в среднем ярусе. В этом случае объект DataSet (Набор данных) служит интеллектуальным кэшем.
А теперь отвлечемся от примера и рассмотрим интеграцию ХМL с базой данных.
Доступ к данным XML
Как будет показано в главе 11 "Web-службы", XML имеет много преимуществ при описании данных, которые нужно перемещать между разнородными системами и источниками данных. Поскольку вы можете обеспечить данные XML описанием схемы данных XML, во многих случаях имеет смысл передавать именно такие данные, а не DataSet (Набор данных). Так как данные ХМL являются текстом, они могут проходить через порты брандмауэров, которые обычно открыты, в отличие от протокола распределенной модели компонентных объектов DCOM (Distributed COM – Distributed Component Object Model) или протокола RMI, используемого в JAVA, которые требуют открытия особых портов.
Мы не ставим себе цель обсудить в следующих разделах все детали языка XML. Мы хотим только продемонстрировать, как можно использовать концепции данных, принятые в ХМL и в DataSet (Набор данных).
Схема и данные XML
Язык XML не навязывает принцип организации данных или суть документа XML. Он лишь определяет правила сопоставления документов. С другой стороны, схема XML описывает метаданные, т.е. способ организации данных внутри документа XML. Схемы XML пишутся на XML.
Например, сам по себе XML можно использовать для описания данных реляционной базы данных, а схема XML может использоваться для описания связей между данными, такими, как первичные или внешние ключи. Гораздо проще использовать схему XML и данные в одном документе или текстовом потоке, чем загружать каждую таблицу в набор данных, а затем программно устанавливать связи между таблицами.