В.В. Кулямин - Технологии программирования. Компонентный подход (1133554), страница 71
Текст из файла (страница 71)
Содержимое однойтаблицы представлено как набор объектов-записей, имеющих тип System.Data.DataRow.Из перечисленных классов только DataSet и DataTable являются сериализуемыми, т.е. толькоих объекты могут быть переданы в другой процесс или на другую машину.Объект класса DataSet может представлять собой и набор данных документа XML. Получитьтакой объект можно с помощью класса System.Xml.XmlDataDocument.Само взаимодействие с источником данных происходит с помощью объектов классовDataAdapter, DataReader, DbConnection, DbTransaction, DbCommand и производных от них,специфичных для того или иного вида источников данных (в рамках поставляемых в составе257среды Visual Studio .NET библиотек имеются специфичные классы для работы с источникамиODBC, OleDB, MS SQL Server, Oracle).
Все перечисленные классы находятся в пространстве именSystem.Data.Common, а их производные для данного вида источников данных — всоответствующем этому виду источников подпространстве System.Data.Объекты классов DataAdapter и DataReader служат для чтения и записи данных в видеобъектов DataSet. Остальные классы используются для определения соединений, организациитранзакций, определения и выполнения SQL-команд по чтению или изменению данных.Ниже приводится простой пример работы с данными с помощью библиотек ADO.NET.DbConnection connection = new SqlConnection("Data Source=localhost;" +"Integrated Security=SSPI;Initial Catalog=DBCatalog");DbCommand command = new SqlCommand("SELECT ID, Title, ISBN FROM Book",connection);DataAdapter adapter = new SqlDataAdapter();Adapter.SelectCommand = command;connection.Open();DataSet dataset = new DataSet();adapter.Fill(dataset, "Book");connection.Close();Протокол HTTPПрежде, чем перейти к построению интерфейса пользователя в Web-приложениях на основеJ2EE и .NET, стоит рассмотреть основные элементы протокола HTTP, используемого для передачиданных между серверами и клиентами в таких приложениях.
Поскольку основнаяфункциональность компонентов интерфейса Web-приложений связана с обработкой и созданиемсообщений HTTP, знание элементов этого протокола необходимо для понимания технологийразработки приложений такого рода.HTTP (Hypertext Transfer Protocol, протокол передачи гипертекста) представляет собойпротокол прикладного уровня, использующий для пересылки данных протокол транспортногоуровня. Достаточно подробное описание его можно найти в [5,6].Сообщения HTTP бывают двух видов: запросы клиента и ответы сервера.Запрос HTTP состоит из идентификации метода запроса, универсального идентификаторазапрашиваемого ресурса (Universal Resource Identifier, URI), указания версии протокола и,возможно, набора заголовков с дополнительной информацией, а также поля данных общего вида.<Request> ::= GET <URI> CrLf| <Method> <URI> <HTTP-Version> CrLf<Req-Header>* ( <Data> )?<Req-Header> ::= <Field> : <Value> CrLfCrLf::= '\r''\n'Основные методы протокола HTTP следующие.•GETСлужит для получения любой информации по URI запроса, обычно — документа,хранящегося по указанному адресу или генерируемого по запросу с таким URI.
Можетиметь заголовок If-Modified-Since, который предписывает не посылать телозапрашиваемого ресурса, если он не изменялся с указанной даты.•POSTСлужит для создания нового ресурса, связанного с указанным по URI. Чаще всегоиспользуется для аннотации ресурсов, добавления сообщений в группы новостей,дистанционной работы с базами данных. Реальная обработка такого запроса зависит отсодержащегося в нем URI.258Остальные методы — HEAD, PUT, DELETE, LINK, UNLINK — используются гораздо реже.Заголовки запроса служат для передачи дополнительной информации об этом запросе или оклиенте. Заголовок состоит из идентификатора поля и его значения, разделенных двоеточием, ибывает одного из следующих типов.•FromСодержит e-mail адрес пользователя, под чьим именем работает клиент.Пример: From: webmaster@yandex.ru•Accept, Accept-Encoding, Accept-Charset и Accept-LanguageВ таком заголовке через запятую перечисляются возможные форматы (соответственно,кодировки, используемые таблицы символов и языки) ответов на данный запрос.Пример: Accept: text/plain, text/html, text/x-dvi; q=.8; mxb=100000; mxt=5.0•User-AgentСодержит название используемой клиентской программы.•RefererИспользуется для указания адреса ресурса, с которого был получен данный запрос.•If-Modified-SinceИспользуется для отмены ответной пересылки документов, модифицированных не позднееуказанной даты, с целью снижения нагрузки на сеть.•AuthorizationСодержит авторизационную информацию, специфичную для используемых серверомпротоколов авторизации.•ChargeToСодержит информацию о том, куда выставить счет за обработку запроса.•PragmaСодержит дополнительные директивы для промежуточных серверов, например, проксисерверов.Пример запроса.GET /locate?keywords=HTTP+description HTTP/1.1Date: Mon, 15 Dec 2004 12:18:15 GMTAccept: image/gif, image/jpg, */*Accept-Charset: iso-8859-1, *, utf-8Accept-Language: enConnection: keep-AliveUser-Agent: Mozilla/4.7 [en] (Win98; u)Группакодов1xx2xxКодФраза-объяснение,следующая за кодом200201OKCreated301302Moved PermanentlyMoved Temporarily400401403404Bad RequestUnauthorizedForbiddenNot Found500Internal Server Error3xx4xx5xxЗначение кодаИнформационное сообщениеУспешная обработкаВcе нормальноДокумент созданПеренаправление запросаРесурс перемещенРесурс перемещен временноОшибка клиентаНекорректно составленный запросНужна аутентификация клиентаДоступ к ресурсу запрещенЗапрашиваемый ресурс отсутствуетОшибка сервераВнутренняя ошибка сервераТаблица 12.
Некоторые коды статуса ответа HTTP и их объяснение.259Ответ сервера на HTTP-запрос состоит либо только из запрашиваемого клиентом документа,либо в дополнение к нему содержит код статуса ответа и, возможно, несколько заголовков ответа.<Response>::= ( <Content> )?| <HTTP-Version> <Code> <Explanation> CrLf<Resp-Header>* ( <Content> )?<Resp-Header> ::= <Field> : <Value> CrLfCrLf::= '\r''\n'Некоторые коды статуса ответа поясняются в Таблице 12.Возможны следующие заголовки ответа.•AllowedПеречисляются через пробел доступные для пользователя методы запросов по данномуURI.•PublicПеречисляет доступные всем методы запросов.•Content-Length, Content-Type, Content-Encoding и Content-LanguageЗадают размер содержимого в байтах (подразумевается, что содержимое имеет бинарныйформат и не должно разбиваться на строки при чтении), его формат или MIME-тип,кодировку и язык.•DateДата создания содержащегося документа или объекта.•Last-ModifiedДата последнего изменения содержащегося объекта.•ExpiresДата, послед которой содержащийся объект считается устаревшим.•URIURI содержащегося объекта.•TitleЗаголовок содержащегося документа.•ServerОписывает серверную программу.•Retry-AfterОпределяет промежуток времени на обработку запроса, до прохождения которого не надонаправлять запрос повторно, если ответа на него еще нет.Пример HTTP-ответа.HTTP/1.0 200 OKContent-Length: 2109Content-Type: text/htmlExpires: 0Last-Modified: Thu, 08 Feb 2001 09:23:17 GMTServer: Apache/1.3.12<HTML> <HEAD> <TITLE> … </TITLE> </HEAD><BODY> …</BODY></HTML>Уровень пользовательского интерфейса в J2EEКомпоненты пользовательского интерфейса в Web-приложениях, построенных как потехнологии J2EE, так и по .NET, реализуют обработку HTTP-запросов, приходящих от браузера, ивыдают в качестве результатов HTTP-ответы, содержащие сгенерированные HTML-документы сзапрашиваемыми данными.
Сами запросы автоматически строятся браузером на основе действийпользователя — в основном, переходов по ссылкам и действий с элементами управления в HTMLформах.260Если стандартных элементов управления HTML не хватает для реализации функцийприложения или они становятся неудобными, используются специальные библиотеки элементовуправления WebUI, предоставляющие более широкие возможности для пользователя и болееудобные с точки зрения интеграции с остальными компонентами приложения.В рамках J2EE версии 1.4 два основных вида компонентов WebUI — сервлеты (servlets) исерверные страницы Java (Java Server Pages, JSP) — отвечают, соответственно, за обработкудействий пользователя и представление данных в ответе на его запросы. В следующей версииJ2EE 5.0 будут также использоваться компоненты серверного интерфейса Java (Java ServerFaces, JSF) — библиотека элементов управления WebUI.Сервлеты представляют собой классы Java, реализующие обработку запросов HTTP игенерацию ответных сообщений в формате этого протокола.