|
Главная » 2010 » Февраль » 11 » Управление опросами
00:58 Управление опросами |
Управление опросами Одно из преимуществ .NET перед предшествующими технологиями заключает- ся в том, что возможность повторного использования создаваемого программного обеспечения несколько упрощается. В этом разделе мы собираемся создать пакет web-сайта для проведения опросов, с тем чтобы иметь возможность вставлять этот сайт в любую страницу ASP.NET при помощи всего лишь пары строк кода. На данном этапе необходимо выполнить довольно значительный объем работы, для того чтобы интегрировать процедуру проведения опроса в какую-либо другую web-страницу, поскольку для этого потребуется скопировать соответствующую ин- формацию как из файла с расширением .aspx, так и из файла "с кодом поддерж- ки", который имеет расширение .aspx.cs. Мы будем создавать управляющий элемент таким образом, что в качестве дополнительной возможности он будет вы- водить страницу с опросом, и если данный пользователь уже проголосовал ранее, он сможет только ознакомиться с результа- тами опроса — страница голосования выво- диться не будет. Для того чтобы создать пакет для прове- дения голосования, нужно разработать не- стандартный управляющий элемент, который будет реализован в классе, наследуемом от класса control, описанного в .NET Framework. Для начала в Visual Studio.NET следует щелкнуть правой кнопкой мыши на проекте web-приложения (poiiw), выбрать меню Add, а в нем пункт Add New Item. В появившемся диалоговом окне нужно выбрать иконку Web Custom Control и ввести в поле Name Poiicontroi.cs, как это проиллюстрировано на рисунке слева. Хотя Visual Studio.NET генерирует несколько строк кода, для того чтобы нам было с чего начинать (при этом реализуется свойство Text создаваемого управля- ющего элемента), однако нам все это не понадобится, поэтому для начала работы нужно привести класс к еще более простому виду: using System; using System,Web.UI; using System.Web.Ul.WebControls; using System.ComponentModel; namespace PollW III <summary> /// Краткое описание класса PollControl. /// </summary> , public class PollControl : WebGontrol { ' .• . ... •• •• •• • •••. . • • • . • ' • - • • - • ; • . . .. • . , . • . , ' protected override void Render(KtmlTextWriter output) output.Write("This is my Poll Control"); : / Это управляющий элемент для проведения опросов / »J Л ck*s :ot --testae, an ASP-KET server <c*v/c* Cancel Практический пример 1 — юеЪ-сайт для проведения опросов 791 Заметьте, что все, что на самом деле необходимо выполнить,— это создать класс, который наследуется от System.web.ui.webcontrois.webcontroi. Сделав это, мы реализуем переопределение метода Render о , в котором генерируем HTML, который мы планируем выводить. Существует также возможность напи- сать такой управляющий элемент, который будет создавать себя сам посредством объединения других управляющих элементов, но в настоящем примере мы будем генерировать HTML. IS H Web Service Component •MS Web User Control Data fotm Wizard Class Data Set HTML Рг$е zi •: j defaults. a$px Попытаемся вставить в страницу простой нестандартный управляющий элемент и посмотреть, что для этого придется сделать. Во-первых, добавим к нашему проекту новую страницу, КОТОруЮ назовем default2.aspx И КО- торую мы будем использовать в ка- честве контейнера нестандартного управляющего элемента. Это дости- гается за счет использования пункта Add Web Form из меню Project, как показано на рисунке слева. Мы приведем в порядок содержи- мое default2.aspx, чтобы ничего не усложнять и четко представлять себе, что происходит: <%@ Page language="c#" Codebehind= default2.aspx.es" %> . •.-.; . < h e a d > . . * . . : •: ; < / h e a d > •,•••• . • • . : . • . ; . • • . ' : ; •/•• .:• . : • • • • . , . : • • : ' ' - ' : :-. .' • ... . . • •'• ' ; • / • : : < b o d y > '' : ' :- • ' •' •'' ; . ' . ' • ; - .•• . ••• • '' : ^ ••••;/ . . . . : : . ; . . ' < / b o d y > . •' '' •' '''.•• • • ' . . • ' • • ' . • . , • • • • ; • • . . • • • • - • • • • • : . . • </html> Для того чтобы вставить управляющий элемент для проведения опросов в стра- ницу, следует добавить всего две строки: <%@ Page language^1 с#" Codebehind= default2.aspx.es1' ......%> <%@ Register TagPref ix="Wrox" Namespace="PollWn Assembly:=tlPollW11 %> <html> <head> </head> <body> <Wrox:PollControll runat="server"></Wrox:PollControl> </body> </html> В первой из двух добавленных строк объявляется префикс тегов TagPrefix с именем Wrox. Это означает, что если ASP.NET встречает на странице любой серверный управляющий элемент, который начинается с <wrox:, то система начи- нает осуществлять поиск в пространстве имен Poiiw в модуле Poiiw управляющего элемента с таким же именем. В данном случае мы указали <wrox:Poiicontroi>, поэтому ASP.NET будет осуществлять поиск в пространстве имен Poiiw класса Poiicontroi. Вторая добавленная строка представляет собой серверный управляю- щий элемент, и именно в ней мы фактически вставляем опрос в страницу. Обратите 792 Практический пример Fife Edit View Favorites Tools Help Г Personal Bat ^Search 3j Favorites -jhttp.7/localhost/poHw/defdulK2.aspx This is my Poll Control zl внимание на то, что мы включили в нее атрибут runat. Если же теперь ОТКрЫТЬ файл def a u l t2 . aspx В Своем браузере, то можно увидеть текст, выводящийся методом Poiicontroi Render () (см. рис. слева). Мы успешно вставили в стра- ницу нестандартный управляющий элемент; теперь добавим в метод Render о , находящийся в файле Poiicontroi.cs, код, который по- зволит выводить опрос на экран. Упомянутый код оказывается практически идентичным коду для "файла поддерж- ки" default.aspx.cs. He забудьте, что в начале файла необходимо поместить опе- ратор using Polling: protected override void Render(ЯtmlTextWriter output) s t r i n g H t m l = * w ; • •'••;•••• . ' r ... .••••' y : .'.-.• • • • . ' • • : • • '• Poll aPoll = Poll.Current(); Html += aPoll,Question + *<br /xbr />"', f or (int i=l'•; i<=aPoll. AnswerCount; i++} I l o c e infc» HtmlLink += *<a href=\//vote.aspx?id="+i + ll\ HtmlLink += "Scnbsp; * + aPol 1 Answers [i] + "<br />"} } output.Write(Html); fife £dfc View Favorites Toosшl шHшeplшш :avorites .aspx jj 4^Sc i Links Если теперь построить проект заново и открыть файл defauit2. aspx, то можно увидеть то же самое, что и в случае default.aspx за исключением того, что эту версию гораздо проще использовать повторно. Все, что необходимо сделать для того чтобы использовать ее на некото- ром сайте, — это сначала убедиться в доступности файла vote.aspx, затем убедиться в доступности модулей, со- держащих классы Poll И PollControl, после чего просто добавить две строки кода к странице ASP.NET. В резуль- тате этих действий получилась некая оболочка, объемлющая отдельные функциональные возможности. Мы назвали ее управляющим web-элемен- том. Этот подход позволяет объеди- нять различные функциональные воз- можности и облегчает их повторное использование. Результат можно ви- деть на рисунке справа. What development language do you primarily use? Vote C# VoteC-H- . , Vote Java Vote JavaScript Vote Visual Bask fe] Done trarjet A Практический пример 1 — weh-caum для проведения опросов 793 Трехзвенность и приложение Poll Уровень представления Уровень бизнес-логики Уровень данных Консольное приложение Приложение Windows Forms Web-службы Класс Poll C:\Polls.xml Приложение WebForm Итоги Нами создано приложение, которое может функционировать и как консольное приложение, и как web-служба, и как приложение Windows Forms, и как Интернет- интерфейс ASP.NET. Для того чтобы наглядно представлять себе, как все эти отдельные части соотносятся друг с другом, слева приведена диаграмма, на которой изображены основные элементы приложения Poll и проил- люстрировано, каким образом это приложение вписывается в модель трехзвенной архитектуры, состоящую из уровня данных, уровня бизнес- логики и уровня представления. Заметьте, что несмотря на то, что приложение Windows Forms обычно взаимодействует с классом Poll посредством web-службы, ему не придется этого делать, если оно будет запу- щено на той же машине, что и класс Poll (другими словами, на web-сервере). Данный практический пример позволил продемонстрировать, каким образом можно применить теорию по С# и .NET, изучавшуюся нами на протяжении всей настоящей книги, в ситуации из реальной жизни, где перед нами возникла задача создать приложение, которое было бы доступно посредством различных пользова- тельских интерфейсов. В этом практическом примере воссоздается ситуация из реальной жизни в том смысле, что мы на первой итерации создаем первоначаль- ную версию приложения, а затем добавляем в него новые функциональные воз- можности. В мире коммерческих продуктов программное обеспечение не пишется — оно модифицируется, и именно это мы и попытались здесь продемонстрировать. В качестве краткого напоминания перечислим приемы и технологии, которые были использованы в этом практическом примере: • Бизнес-объекты (класс Poll) • Генерирование исключительных ситуаций Q Нестандартный управляющий элемент ASP.NET • Серверные управляющие элементы ASP.NET • Статически методы класса • Наборы данных XML и ADO.NET • Web-службы и web-методы • System.Timer (таймер) • НТТР-куки • Класс HttpContext 794 Практический пример • Уровень представления, поддерживающий множество интерфейсов • Консольное приложение • Приложение Windows Forms • Трехзвенная архитектура • Объектно-ориентированная разработка • Тестирование программного обеспечения Надеемся, что вы получили удовольствие от чтения этой главы, а информация, которую вы из нее почерпнули, вдохновит вас на создание своего собственного приложения на С#. .NET в сочетании с такими методами, как трехзвенная архи- тектура и объектно-ориентированная разработка, оказывается чрезвычайно мощ- ной платформой для разработки программных приложений, а С# — наиболее эффективным из всех языков программирования, входящих в состав .NET.
|
Категория: информатика |
Просмотров: 1598 |
Добавил: basic
| Рейтинг: 5.0/1 |
|
Статистика
Онлайн всего: 1 Гостей: 1 Пользователей: 0
|