Архитектура Web-форм
Web-форма состоит из двух частей:
- отображаемого содержимого, или
презентации формы. Как правило,
отображаемое содержимое описывается на
языке HTML;
- программного кода, который описывает
логику взаимодействия с визуальными
элементами.
Физически Web-форма представлена
файлом с расширением . aspx. Расширение любой
HTML-страницы можно изменить на .aspx. При этом
представление страницы с новым расширением
будет тождественно представлению исходной
страницы. Иными словами, Web-формы совместимы
снизу вверх с обычными HTML-страницами.
Особенность Web-форм состоит в
способе, при помощи которого программный
код отделяется от самой формы. Исходный код
(написанный не на C++) может храниться в
отдельном не скомпилированном файле. Или же
программный код (снова таки, не на C++) может
быть вложен в . aspx-файл. И, наконец, код (написанный
на С#, VB или C++) может храниться в
предварительно скомпилированной сборке,
содержащей динамически подключаемую
библиотеку (DLL). Когда страницы загружаются
Web-сервером, выполняется код, описывающий
пользовательский интерфейс. Этот код
динамически формирует отображаемую
клиентом страницу.
Чтобы четче представить
архитектуру Web-форм, написанных на C++, мы
рассмотрим пример HelloCodebehind. Эта программа
отображает информацию, введенную
пользователем. Чтобы запустить приложение,
введите в адресной строке броузера
унифицированный указатель информационного
ресурса (URL) http: //localhost/NetCpp/HeiloCodebehind. aspx. Код,
написанный на C++, содержится в файле
HelloCodebehind.aspx.h. Обратите внимание, что данный
проект создает динамически подключаемую
библиотеку (DLL) — файл HelloCcdebehind.dl]. Эта
динамически подключаемая библиотека (DLL)
затем копируется в подкаталог bin
виртуального каталога. (Виртуальный
каталог мы создали раньше для хранения
примеров программ, которые рассматриваются
в главе 10 "ASP.NET и Web-формы". Так было
сделано потому, что информационный сервер
Internet (US) ищет загружаемые динамически
подключаемые библиотеки (DLL) в этом
подкаталоге.) Код, который описывает
видимые эпементы страницы (презентацию
страницы), приведен ниже. Он содержится в
файле HelloCodebehind.aspx:
<!-- KelloCoaebehind.aspx -->
<%@ Assembly Name=" HelloCodebehind" °>
<!-- Имя сборки -->
<%@ Page Inherits= MyWebPage ">
<HTML>
<HEAD>
</HEAD>
<BODY> <!-- ТЕЛО -->
<FORM RUNAT="SERVER">YOUR NAME:
<asp:textbox id=txtName Runat="server"></asp:textbox>
<p>asp:button id=cmdEcho onclick=cmdEcho__Click Text="Echo"
runat="server" tooltip="Click to echo your name">
</asp :buttonx/p>
<asp:lacel id=lblGreeting runat="server">
</asp:label>
<P></P>
</FORM>
</BODY>
<!-- тело -->
</HTML>
Код, который создает интерфейс
пользователя, содержится в файле HelloCodebehind. h:
//HelloCodebehind.h
fusing <System.dll>
fusing <System.Web.dll>
using namespace System;
// использование пространства имен
Система;
using namespace System::Web;
// использование пространства имен
Система::Сеть;
using namespace System::Web::UI;
// использование пространства имен
// Система::Сеть:пользовательский
интерфейс;
using namespace System::Web::UI::WebControls;
// использование пространства имен
// Система::Сеть::Пользовательский
интерфейс::WebControls;
public _gc class MyWebPage : public System::Web::UI::Page
// класс сборщика мусора MyWebPage :
общедоступная Система::
// Сеть:: Пользовательский
интерфейс:: Страница
{
protected: // защищенный
TextBox *txtName;
Button *cmdEcho; // Кнопка
Label *lblGreeting; // Метка
public:
void cmdEcho_Click(Object *Source, EventArgs *e)
{
IblGreeting-XText = // Текст
String::Format( // Строка:: Формат "Hello, (0).
Welcome to Managed C++ ASP.", // "Привет, {О}.
Добро пожаловать
// в Управляемый C++ ASP. ",
txtName->Text); // Текст
}
};
Этот код нужно скомпилировать
отдельно и развернуть полученную сборку
HelloCodebehind. dll в каталоге \OI\NetCpp\ChaplO\bin.
Информационный сервер Internet (US)
автоматически ищет загружаемые файлы в
подкаталоге bin виртуального каталога.
|