sdt-book-2006 (1133574), страница 72
Текст из файла (страница 72)
Ниже приведен пример использования компонента System.Web.UI.WebControls.Button вкоде Web-формы.<%@ Page Language="C#" AutoEventWireup="True" %><html><head><script language="C#" runat=server>void OnButtonClick(object sender, EventArgs e){Message.Text="Hello World!!";}</script></head><body><form runat="server"><h3>Button Example</h3>Click on the submit button.<br><br><asp:Button id="MyButton"Text="Submit"OnClick="OnButtonClick"runat="server"/><p><asp:label id="Message" runat="server"/></form></body></html>267Аналогом сервлетов в .NET являются объекты, реализующие интерфейсыSystem.Web.IHttpHandler и System.Web.IHttpAsyncHandler.
Оба они являются частьюпрограммного интерфейса Web-сервера Microsoft (Internet Server Application Program Interface,ISAPI). Первый интерфейс предназначен для синхронной обработки запросов, с блокированием навремя обработки вызвавшего ее потока Web-сервера.
Второй интерфейс позволяет реализовыватьтакую обработку в отдельном потоке.Единственный метод первого интерфейса — void ProcessRequest (System.Web.HttpContextcontext). Все данные, связанные с запросом, ответом на него, приложением и контекстом, вкотором работает данный обработчик, можно получить, используя различные свойства параметраэтого метода.Интерфейс IHttpAsyncHandler имеет два метода — IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData) и void EndProcessRequest(IAsyncResult result). Первый вызывается при передаче запроса данному обработчику, второй— для прекращения обработки.Web-формы .NET являются аналогом серверных страниц Java. Они так же оформляются в видедокументов, содержащих конструкции как HTML, так и одного из языков программирования,используемых в рамках .NET, и специальные конструкции, аналогичные директивам, тегам искриптовым элементам JSP.Специальные конструкции Web-форм включают директивы, имеющие тот же самый смысл,что и для серверных страниц Java, объявления, аналогичные JSP-объявлениям, конструкциивстроенного кода (code render) и конструкции привязки к данным (data binding expressions).Директивы Web-форм имеют в целом точно такой же синтаксис, как и директивы JSP: <%@directive attribute1="value1" ...
attributeN="valueN" %>. Список директив шире, чем вJSP: имеется директива Page, аналог page в JSP, но с несколько отличающимся спискоматрибутов, директива Import, аналог include, директива Control для описания пользовательскихэлементов управления, директива Register для определения синонимов (алиасов), и пр.Объявления полей данных и методов в Web-формах обрамляются в тег <script> … </script>.Такой тег должен иметь атрибут runat со значением server и атрибут language, которыйопределяет язык кода, написанного внутри тега. Он может также иметь атрибут src для указанияURL файла, код из которого должен быть вставлен перед содержимым тега.Конструкции встроенного кода обрамляются в тег <% … %>. Как и в JSP, могут использоватьсявыражения в виде <%=… %>.
Комментарии тоже оформляются, как и в JSP, в виде тегов <%-- … -%>.Конструкции привязки к данным имеют синтаксис <%# expression %> и работают примернотак же, как и выражения встроенного кода. Они могут использоваться и в значениях атрибутовэлементов управления.Конфигурационные файлы компонентов .NET, являющиеся аналогами дескрипторовразвертывания в J2EE, оформляются в виде XML-документов специального вида и размещаются вразличных директориях Web-приложения. В качестве корневого тега таких документов всегдавыступает тег configuration. Он может содержать теги location, которые определяютконфигурацию для ресурсов, путь к которым указывается в атрибуте path таких тегов. Тегиlocation для компонентов ASP.NET содержат тег system.web, который, в свою очередь, можетсодержать следующие теги (перечислены не все возможные, более полную информацию см.в [11]).•authenticationОпределяет используемый вид аутентификации — атрибут mode задает используемыймеханизм (Windows, Forms, Passport или None), вложенные теги forms описывают свойстваотдельных форм, используемых для аутентификации.•authorizationОпределяет права доступа для пользователей, ролей и отдельных методов HTTP-запросов.268Разрешения на доступ указываются в атрибутах вложенного теги allow, запреты — ватрибутах вложенного тега deny.•compilationОпределяет параметры компиляции компонента ASP.NET.•customErrorsОпределяет специфические для данного приложения ошибки и URL, на которые переходитуправление при возникновении этих ошибок.•globalizationОпределяет кодировки и локализацию запросов и ответов.•httpHandlersОпределяет отображение адресов и методов запросов на обрабатывающие их объекты типаIHttpHandelr или IHttpHandlerFactory.•pagesОпределяет настройки для отдельных страниц.•sessionStateОписывает настройки для поддержки состояния сеансов работы с данным приложением.Литература к Лекции 14[1] Р.
Монсон-Хейфел. Enterprise JavaBeans. СПб.: Символ-Плюс, 2002.[2] Enterprise JavaBeans Specification, version 2.1.Доступны по ссылке http://java.sun.com/products/ejb/docs.html.[3] Сайт проекта NetBeans http://www.netbeans.org/.[4] Документация MSDN по ADO.NEThttp://msdn.microsoft.com/library/default.asp?url=/library/enus/cpguide/html/cpconaccessingdatawithadonet.asp.[5] Hypertext Transfer Protocol — HTTP/1.1. RFC 2616.Доступно по ссылке http://www.w3.org/Protocols/rfc2616/rfc2616.html.[6] http://www.opennet.ru/docs/RUS/http/index.html[7] Документация по JSP http://java.sun.com/products/jsp/docs.html.[8] Б.
У. Перри. Java сервлеты и JSP: сборник рецептов. М.: Кудиц-Образ, 2005.[9] Документация MSDN по ASP.NEThttp://msdn.microsoft.com/library/default.asp?url=/library/enus/cpguide/html/cpconintroductiontoasp.asp.[10] Р. Андерсон, Б. Френсис, А. Хомер, Р. Хоуорд, Д. Сассмэн, К. Уотсон. ASP.NET 1.0 дляпрофессионалов. М.: Лори, 2004.[11] Схема конфигурационных файлов ASP.NEThttp://msdn.microsoft.com/library/default.asp?url=/library/enus/cpgenref/html/gngrfASPNETConfigurationSectionSchema.asp.[12] П.
Аллен, Дж. Бамбара, М. Ашнаульт, Зияд Дин, Т. Гарбен, Ш. Смит. J2EE. Разработкабизнес-приложений. СПб.: ДиаСофт, 2002.[13] Д. Просиз. Программирование для Microsoft.NET. М.: Русская редакция, 2003.269Лекция 15. Развитие компонентных технологийАннотацияРассказывается о некоторых компонентных средах и технологиях, обрисовывающих направлениядальнейшего развития стандартных платформ разработки Web-приложений. Такжерассматриваются Web-службы, представляющие собой компонентную технологию другогоуровня.Ключевые словаStruts, JSF, объектно-реляционный преобразователь, Hibernate, JDO, аспектно-ориентированноепрограммирование, Spring, Web-службы, SOA, WSDL, SOAP, UDDI.Текст лекцииПрограммисты, которые долгое время работают с технологиями разработки Web-приложений,представленными в последних двух лекциях, отмечают ряд неудобств, связанных с разработкойотдельных компонентов, построением приложения в целом и настройкой отдельных аспектов егоработы.
В данной лекции рассказывается о развитии компонентных технологий разработки Webприложений, нацеленном на повышение их гибкости, удобства их создания и поддержки, а такжена снижение трудоемкости внесения изменений в приложения такого рода.В ряде аспектов разработка отдельных компонентов в рамках .NET несколько проще, темразработка компонентов с той же функциональностью в рамках J2EE версии 1.4. В то же времяразработка приложений в целом в рамках J2EE проще для начинающих разработчиков, посколькуимеющаяся по этой платформе документация четче определяет общую структуру приложений ираспределение ответственности между разными типами компонентов в нем.Большим достоинством J2EE является прозрачность и предсказуемость ее развития, посколькувсе его шаги открыты в рамках четко определенного процесса компании Sun для внесенияизменений в спецификации платформы и на каждом из этих шагов учитываются интересымножества участников. Развитие платформы J2EE определяется большим количеством открытыхпроектов отдельных разработчиков и организаций, предлагающих свои решения по построениюсред функционирования Web-приложений (Web application frameworks).Развитие же платформы .NET находится целиком в руках компании Microsoft и пока неявляется прозрачным для тех, кто не работает в ней или в одной из близких к ней компанийпартнеров.
На основании выступлений отдельных представителей компании можно делатьвыводы, касающиеся лишь общих планов развития платформы, без каких-либо техническихдеталей. Поэтому в данной лекции рассматриваются, в основном, направления развитиятехнологий J2EE.Развитие технологий J2EEРяд разработчиков выделяет следующие проблемы удобства разработки и поддержкиприложений J2EE версии 1.4.• Громоздкость разработки компонентов EJB и неудобство их использования для описанияструктуры предметной области.Для разработки простейшего такого компонента необходимо определить два интерфейса,класс компонента и написать дескриптор развертывания.Полученные классы и интерфейсы достаточно сильно отличаются от обычных классов Java,с помощью которых разработчики описывали бы предметную область в рамках обычногоприложения на платформе J2SE.