Иллюстрированный самоучитель по Architecture .NET

Архитектура 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.dll.

Эта динамически подключаемая библиотека (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:&nbsp;
<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.", // "Привет, {0}. Добро пожаловать
// в Управляемый C++ ASP. ",
txtName › Text); // Текст
}
};

Этот код нужно скомпилировать отдельно и развернуть полученную сборку HelloCodebehind.dll в каталоге \OI\NetCpp\ChaplO\bin. Информационный сервер Internet (US) автоматически ищет загружаемые файлы в подкаталоге bin виртуального каталога.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.