В.В. Кулямин - Технологии программирования. Компонентный подход (1133554), страница 67
Текст из файла (страница 67)
Элементы этой библиотеки находятся впространстве имен System.DirectoryServices и его подпространствах, в сборкахSystem.DirectoryServices и System.DirectoryServices.Protocols.Для работы с записями Active Directory используются объекты классаSystem.DirectoryServices.DirectoryEntry. C помощью конструкторов и методов этого классаможно создавать и изменять регистрационные записи службы каталогов.
Для поисказарегистрированных объектов по идентификаторам или свойствам используются методы классаSystem.DirectoryServices.DirectorySearcher.Active Directory поддерживает обращения к своим записям по нескольким разным протокола,включая протокол LDAP.Процессы и синхронизацияПомимо процессов и потоков, среда .NET поддерживает так называемые зоны приложений(application domains), которые служат агрегатами ресурсов, как и процессы, но, в отличие от них,управляются с помощью более эффективных механизмов. В рамках одного процесса может бытьсоздано несколько зон приложений. Передача объектов и ресурсов между зонами приложенийневозможна без использования специальных механизмов, таких как Remoting. Потоки же в .NETмогут пересекать границы зон приложений, если обладают соответствующими правами.Зоны приложений служат дополнительным элементом защиты .NET-приложений отнепреднамеренного взаимного влияния и позволяют сохранить работоспособность процесса привозникновении проблем в одном из его приложений.Помимо автоматически создаваемых потоков и зон приложений, разработчик может создаватьсвои собственные потоки и зоны приложений.
Вопросы синхронизации потоков и передачиданных между зонами приложений в Web-приложениях могут решаться при помощи стандартныхмеханизмов .NET — конструкций и библиотек синхронизационных примитивов, а такжебиблиотечного класса System.AppDomain, чьи методы позволяют выполнять различные операции сзонами приложений.ЦелостностьЦелостность данных в .NET поддерживается, как и в J2EE, в основном, за счет механизматранзакций.
Распределенные транзакции в .NET реализованы на базе сервера транзакцийMicrosoft (Microsoft Transaction Server, MTS), который появился как часть компонентной средыCOM+. Интерфейсы для работы с его функциями собраны в пространстве именSystem.EnterpriseServices, в сборке с таким же именем.Автоматические транзакции поддерживаются при помощи указания у классов транзакционныхатрибутов, имеющих тип System.EnterpriseServices.TransactionAttribute.
Такой атрибутможет принимать значения Required, RequiresNew, NotSupported, Supported и Disabled. Первые241три имеют то же значение, что и в J2EE. Атрибут Supported действует аналогично Supports вJ2EE. Атрибут Disabled обозначает, что транзакционный контекст вызвавшего метода будетпроигнорирован.Значение атрибутов по умолчанию для методов компонентов ASP.NET и методов обычныхклассов, используемых в распределенных транзакциях, различны — у первых это Disabled, увторых — Required.Чтобы определить класс, чьи методы могут участвовать в транзакциях, нужно унаследовать егоот класса System.EnterpriseServices.ServicedComponent, определить транзакционный атрибут,а также прикрепить к сборке, содержащей этот класс, сертификат и зарегистрировать сборку вреестре COM+.Для завершения или отката автоматической транзакции используются следующиеконструкции.•Атрибут System.EnterpriseServices.AutoCompleteAttribute у участвующего втранзакции метода говорит о том, что в случае нормального завершения работы метода иотсутствия проблем у других ее участников транзакция будет завершена успешно.
Если жев результате работы метода будет создано исключение, транзакция будет отменена.•Методы SetComplete() и SetAbort() класса System.EnterpriseServices.ContextUtilмогут использоваться для успешного завершения или отката автоматически созданнойтранзакции.Создание и управление транзакциями «в ручном режиме» может быть осуществлено длякомпонентов ADO.NET при помощи методов класса System.Data.Common.DbConnection и егонаследников и класса System.Data.Common.DbTransaction. Для управления транзакциями припередаче сообщений используется класс System.Messaging.MessageQueueTransaction.ОтказоустойчивостьТак же, как и для J2EE, отказоустойчивость .NET-приложений должна обеспечиваться либо засчет использования дополнительных продуктов, либо за счет специфического проектированияприложения.ЗащитаЗащищенность .NET-приложений поддерживается примерно теми же методами, что изащищенность J2EE-приложений.Здесь также имеется несколько техник аутентификации, возможность определения ролей,обеспеченных набором прав доступа к различным элементам системы, а также возможностьиспользования различных протоколов шифрования и защищенной передачи данных, управленияключами и подтверждения целостности данных.
В рамках .NET используются такжемногоуровневые политики защиты, которые определяют набор прав, предоставляемых коду изразных источников.Программные интерфейсы к различным механизмам управления защищенностью приложенийи ресурсов реализуются классами и интерфейсами пространства имен System.Security,находящимися в сборках mscorlib, System и System.Security.Работа с XMLВ целом техника работы с XML-документами в .NET опирается на реализацию объектноймодели документов XML (DOM) и на механизм разбора, аналогичный StAX, реализуемый классомSystem.Xml.XmlReader.
Классы, реализующие различные парсеры XML, различные вариантыпредставления XML-документов, а также их трансформацию на основе XSLT-описаний,находятся в пространстве имен System.Xml, разбросанному по сборкам System.Data,System.Data.SqlXml и System.Xml.242Одной из особенностей работы с XML в .NET является встроенная возможность работы сXML-данными в рамках механизмов ADO.NET (в основном предназначенных для работы среляционными СУБД) с помощью класса System.Xml.XmlDataDocument.Литература к Лекции 13[1] Web-сайт консорциума World Wide Web http://www.w3.org/.[2] http://www.xml.com/.[3] XML 1.1, 2004. Доступен через http://www.w3.org/TR/xml11/.[4] Annotated XML 1.0, 1998. Доступен через http://www.xml.com/axml/axml.html.[5] Расширяемый язык разметки (XML) 1.0 (русский перевод первой версии стандарта).Доступен через http://www.rol.ru/news/it/helpdesk/xml01.htm.[6] Материалы по XMLSchema http://www.w3.org/XML/Schema.[7] Namespaces in XML, 1999.
Доступен через http://www.w3.org/TR/REC-xml-names/.[8] Java Platform Enterprise Edition Specifications, version 1.4.http://java.sun.com/j2ee/j2ee-1_4-fr-spec.pdf.[9] Э. Таненбаум, М. ван Стеен. Распределенные системы. Принципы и парадигмы.
СПб.:Питер, 2003.[10] Документация по Java RMI http://java.sun.com/j2se/1.5.0/docs/guide/rmi/index.html[11] Документация по JMS API http://java.sun.com/products/jms/docs.html[12] Документация по JNDI http://java.sun.com/j2se/1.5.0/docs/guide/jndi/index.html[13] RFC 1766, доступен по ссылке http://rfc.net/rfc1766.html[14] http://java.sun.com/products/jndi/serviceproviders.html[15] Web-страница стандарта SAX http://www.saxproject.org/[16] Web-страница стандарта DOM http://www.w3.org/DOM/[17] Web-страница проекта JDOM http://www.jdom.org/[18] Web-страница проекта dom4j http://www.dom4j.org/[19] Стандарт XSLT. Доступен через http://www.w3.org/TR/xslt[20] Web-страница проекта Saxon http://www.saxonica.com/[21] Web-страница проекта Xalan http://xml.apache.org/xalan-j/[22] Streaming API for XML http://www.jcp.org/en/jsr/detail?id=173[23] B.
McLaughlin. Java and XML, Second Edition. O’Reilly, 2001.[24] Документация по платформе J2EE http://java.sun.com/j2ee/1.4/docs/index.html[25] Документация по платформе .NET — находится в разделе .NET Development MSDN,http://msdn.microsoft.com/library/default.asp[26] П. Аллен, Дж. Бамбара, М. Ашнаульт, Зияд Дин, Т. Гарбен, Ш. Смит. J2EE. Разработкабизнес-приложений. СПб.: ДиаСофт, 2002.243Лекция 14.
Разработка различных уровней Web-приложений в J2EEи .NETАннотацияРассматриваются используемые в рамках Java Enterprise Edition и .NET техники разработкикомпонентов Web-приложений, связывающих приложение с базой данных и представляющихсобой элементы пользовательского интерфейса.Ключевые словаКомпонент EJB, компонент данных, сеансовый компонент, компонент, управляемыйсообщениями, протокол HTTP, сервлет Java, серверная страница Java (JSP), Web-форма .NET.Текст лекцииОбщая архитектура Web-приложенийВ данной лекции мы рассмотрим техники разработки компонентов Web-приложений на основеплатформ J2EE и .NET. Общая архитектура такого приложения может быть представлена схемой,изображенной на Рис.
74. Обе платформы предоставляют специальную поддержку для разработкикомпонентов на двух уровнях: уровне интерфейса пользователя (WebUI) и уровне связи сданными.Клиент —Web-браузерHTMLстраницыWeb-серверHTTPКомпонентыWebUIКомпонентымоделиданныхХранилищеданных(СУБД)База данныхРисунок 74. Общая схема архитектуры Web-приложений J2EE и .NET.Пользовательский интерфейс Web-приложений основан на генерации динамических страницHTML, содержащих данные, которые запрашивает пользователь. Уровень модели данныхпредоставляет приложению возможность работать с данными, обычно хранящимися в виде наборатаблиц и связей между ними, как с набором связанных объектов.Основные отличия между техниками разработки компонентов этих двух уровней,используемыми в рамках J2EE и .NET, можно сформулировать следующим образом.• В J2EE компоненты EJB предназначены не только для представления данных приложения ввиде объектов, но и для реализации его бизнес-логики, т.е.
объектов предметной области иосновных способов работы с ними.В .NET нет специально выделенного вида компонентов, предназначенного для реализациибизнес-логики — она может реализовываться с помощью обычных классов, что частоудобнее. Это положение должно измениться с выходом EJB 3.0.• EJB компоненты являются согласованным с объектно-ориентированным подходомпредставлением данных приложения. Работа с ними организуется так же, как с объектамиобычных классов (с точностью до некоторых деталей).В .NET-приложениях все предлагаемые способы представления данных являютсяобъектными обертками вокруг реляционного представления — в любом случае приходитсяработать с данными как с набором таблиц. В .NET нет автоматической поддержки ихпреобразования в систему взаимосвязанных объектов и обратно.244Уровень бизнес-логики и модели данных в J2EEВ рамках приложений, построенных по технологии J2EE связь с базой данных и бизнес-логику,скрытую от пользователя, принято реализовывать с помощью компонентов Enterprise JavaBeans.На момент написания этой лекции последней версией технологии EJB является версия 2.1, впервой половине 2006 года должны появиться инструменты для работы с EJB 3.0 (в рамках J2EE5.0).Возможны и другие способы реализации этих функций.
Например, бизнес-логика может бытьреализована непосредственно в методах объектов пользовательского интерфейса, а обменданными с базой данных — через интерфейс JDBC. При этом, однако, теряется возможностьпереиспользования функций бизнес-логики в разных приложениях на основе единой базы данных,а также становится невозможным использование автоматических транзакций при работе сданными. Транзакции в этом случае нужно организовывать с помощью явных обращений к JTA(см.