Lecture14 (Лекции по Технологии программирования. Компонентный подход), страница 4
Описание файла
Файл "Lecture14" внутри архива находится в папке "Лекции по Технологии программирования. Компонентный подход". PDF-файл из архива "Лекции по Технологии программирования. Компонентный подход", который расположен в категории "". Всё это находится в предмете "основы программной инженерии" из 6 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 4 страницы из PDF
Задает имя отношения. <ejb-relationship-role>Обязательно два. Описывает одну роль в рамах отношения. В описании ролидолжны присутствовать следующие данные.− Имя роли — во вложенном теге <ejb-relationship-role-name>.− Множественность — сколько экземпляров компонента могут играть такую рольв раках данного отношения с одним экземпляром в другой роли.
Описывается втеге <multiplicity> и может иметь значения One или Many.− Имя компонента, экземпляры которого играют данную роль в этом отношении.Определяется в теге <relationship-role-source> внутри тега <ejb-name> ввиде имени, которое присвоено компоненту в рамках данного дескриптора.− Имя поля, которое хранит ссылку или коллекцию ссылок, поддерживающие этоотношение в рамках экземпляра компонента. Определяется в теге <cmr-field>,во вложенном теге <cmr-field-name>, и для него в классе компонента должнобыть определено абстрактное свойство с тем же именем.•<assembly-descriptor>Этот обязательный тег внутри <ejb-jar> содержит дополнительные указания для сборкикомпонентов, в частности следующие.o <container-transaction>Один или более, необязателен.Содержит необязательный элемент <description>, а также приведенные ниже.Для компонента данных должно быть по одному такому элементу на каждый методудаленного интерфейсов.
Сеансовые компоненты, транзакциями которых управляетEJB-контейнер, также должны подчиняться этому правилу. <method>Один или более.Содержит тег <ejb-name>, указывающий имя компонента, и <method-name>,указывающий имя метода или знак *, который обозначает применение указанногоатрибута ко всем методам.Может также включать элементы <description>, <method-params> и <methodintf>, который может иметь значения Remote, Home, Local, Local-Home, взависимости от того, в каком интерфейсе этот метод декларирован — для поддержкивозможности декларировать методы с одним именем и набором параметром вразных интерфейсах. <trans-attribute>Ровно один.Определяет атрибут транзакции, управляющий политикой включения в транзакцииили создания новых транзакций.Для компонентов данных атрибуты транзакции должны быть определены для всехметодов удаленного интерфейса и методов, декларированных в исходноминтерфейсе, для сеансовых компонентов — для всех методов удаленногоинтерфейса.Может иметь значения NotSupported, Supports, Required, RequiresNew, Mandatory,Never.
Об их смысле рассказывалось в предыдущей лекции.o <security-role>Один или более, необязателен.Определяет роли, служащие для контроля доступа к методам компонентов. В такомэлементе должен содержаться тег <role-name>, задающий имя роли.o <method-permission>Один или более, необязателен.Указывает правила доступа ролей, определенных в тегах <security-role>, к методамкомпонентов.Содержит необязательный тег <description>, один или несколько тегов <role-name> иодин или несколько тегов <method> (см. выше), кроме того, в нем может присутствоватьтег <unchecked/>, который обозначает отсутствие проверки прав доступа во времяработы, даже если они описаны.Каждый тег <method> содержит тег <ejb-name>, указывающий имя компонента, и<method-name>, указывающий имя метода или знак *, который обозначает применениеуказанного атрибута ко всем методам.o <exclude-list>Необязателен.Содержит один или несколько тегов <method> (см.
выше), определяющих методы,которые не должны вызываться при работе приложения. Каждый вызов такого методасоздает исключительную ситуацию.Уровень модели данных в .NETВ среде .NET нет средств, полностью аналогичных тем, которые предоставляются в J2EE дляразработки компонентов EJB. Уровень бизнес-логики в .NET-приложениях предлагаетсяреализовывать с помощью обычных классов, что значительно проще, чем реализовыватьспециальные наборы классов и интерфейсов для компонентов EJB. С другой стороны, связь сбазой данных в .NET не реализуется в виде аналогичного EJB объектного интерфейса, если,конечно, не разрабатывать его целиком самостоятельно (или с использованием библиотеккомпонентов от третьих партий).
Вместо этого предлагается для связи с базой данныхиспользовать набор компонентов ADO.NET [4], представляющих собой объектные оберткиреляционной структуры данных.Классы ADO.NET располагаются в сборке System.Data (дополнительные классы можно найти вSystem.Data.OracleClient и System.Data.SqlXml) и пространстве имен System.Data, вместе свложенными в него пространствами.Основным классом, с помощью которого представляются данные из базы данных, являетсяSystem.Data.DataSet.
Он представляет набор таблиц, связанных между собой некоторымисвязями и выполняющими определенные ограничения. Каждая таблица представляется объектомкласса System.Data.DataTable, каждая связь — объектом класса System.Data.Relation, каждоеограничение — объектом класса System.Data.Constraint. Структура таблиц описывается спомощью их полей (представляемых объектами System.Data.DataColumn). Содержимое однойтаблицы представлено как набор объектов-записей, имеющих тип System.Data.DataRow.Из перечисленных классов только DataSet и DataTable являются сериализуемыми, т.е.
толькоих объекты могут быть переданы в другой процесс или на другую машину.Объект класса DataSet может представлять собой и набор данных документа XML. Получитьтакой объект можно с помощью класса System.Xml.XmlDataDocument.Само взаимодействие с источником данных происходит с помощью объектов классовDataAdapter, DataReader, DbConnection, DbTransaction, DbCommand и производных от них,специфичных для того или иного вида источников данных (в рамках поставляемых в составесреды 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.Остальные методы — 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 и их объяснение.Ответ сервера на 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-документы сзапрашиваемыми данными.