Исходники.Ру - Программирование
Исходники
Статьи
Книги и учебники
Скрипты
Новости RSS
Магазин программиста

Главная » Статьи по программированию » .NET - Все статьи »

Обсудить на форуме Обсудить на форуме

Отладка веб-приложения без использования Visual Studio.NET
Прежде чем приступать к изложению основной темы данной статьи вспомним об одной из главных проблем разработки веб-приложений, с которыми сталкиваются разработчики ASP. Полагаю каждый веб-разработчик может вспомнить бесчисленные часы, в течение которых он вместо того, чтобы заниматься совершенствованием логики своего решения, тратил своё время на совершенствование пользовательского интерфейса, которое в конечном итоге как правило сводится к отслеживанию, того чтобы переменные в ASP коде соответствовали тому, что было получено в объект Request...
Прежде чем приступать к изложению основной темы данной статьи вспомним об одной из главных проблем разработки веб-приложений, с которыми сталкиваются разработчики ASP. Полагаю каждый веб-разработчик может вспомнить бесчисленные часы, в течение которых он вместо того, чтобы заниматься совершенствованием логики своего решения, тратил своё время на совершенствование пользовательского интерфейса, которое в конечном итоге как правило сводится к отслеживанию, того чтобы переменные в ASP коде соответствовали тому, что было получено в объект Request. Постоянные изменения HTML содержания исходной страницы влекли за собой бесчисленные изменения кода обработчика.

После нескольких месяцев работы в Notepad или Far разработчика начинает тошнить от тегов < form >. Следует также обратить внимание, что в профессиональной среде разработчиков Visual InterDev используется не так широко, как хотелось бы и веб-разработчики продолжают активно использовать в разработке веб-приложений Notepad, а в качестве дебаггера используют веб-браузер, постепенно отлавливая ошибки приложения приблизительно таким образом: предположим девелопер хочет узнать состояние переменной X на каком-либо этапе выполнения программы. Он просто использует функцию < % Response.Write (X)% >, вставив её в определённый учасок кода, и использует веб-браузер в качестве отладчика, видя на экране значение переменной. Я называю такой подход: «горячая отладка» (возможно существует более правильное определение такому подходу). Надо отменить, что на на практике выясняется, что приложения отлаженные такмим способом, работают надёжнее, чем отлаженные с использованием Visual InterDev. Природа этого феномена мне не известна, полагаю фирма Microsoft занимается его изучением.

Ситуация изменилась в лучшую сторону после появления технологии .NET и средства визуальной разработки Visual Studio.NET. В отличие от прежних версий, Visual Studio.NET обладает значительным количеством средств, для эффективной разработки и отладки веб-приложений, с минимальным использованием горячей отладки ala < %Response.Write (X)% >. Стоит так же отметить, что технология .NET сама по себе склоняет пользователя к тому, чтобы отказаться от использования горячей отладки, т.е. делает её не целесообразной, однако это предмет для следующих статей.

Сейчас разрабатывается много веб-приложений, с использованием .NET. и представим себе ситуацию, что вам необходимо отладить проблемное веб-приложение, которое установлено у хостинг провайдера, и вам жизненно необходим дебаггер, для того, чтобы отследить ошибку. Вспомним о том, что дебаггер есть в Visual Studio.NET, которая на машине хостинг провайдера наверняка не установлена. Как отлаживать приложение в этом случае? В этой статье я хотел бы затронуть тему, посвященную созданию и отладке веб-приложения без использования Visual Studio.NET, т.е. используя .NET Framework SDK и, как это не банально, Notepad. Надо отдавать отчёт тому, что разработка приложения при таком усложняется, однако моя цель показать, что у разработчика есть возможность провеcти полноценную отладку приложения с использованием штатных средств .NET Framework SDK, который во-первых бесплатный, и его всегда можно свободно скачать с сайта Microsoft, во-вторых, он не так много весит.

В качестве примера разработаем простейший вариант веб-приложения(рис. 1), в котором по нажатию на кнопку “Calculate”, программа считывала данные из двух элементов TextBox, вычисляла их сумму, а затем выводила результат. Затем отладим это приложение с использованием Microsoft CLR Debugger. Для примера создадим виртуальную директорию /test, в ней создадим директорию bin/ (в которой будем сохранять сборки) и напишем в Notepad файлы: default.aspx, default.aspx.cs и конечно же Web.config. Я не буду в своём примере обращать внимание на обработку введённых пользователем данных, хотя рекомендую ВСЕГДА не доверять введённым пользователем данным и проверять их. Почему не надо доверять данным, введённым пользователем вы можете прочитать в сентябрьском номере MSDN Magazine: http://msdn.microsoft.com/msdnmag/issues/02/09/SecurityTips/default.aspx.

1. Создадим файл default.aspx:

 

<%@ Page language="c#" Codebehind="default.aspx.cs" 
AutoEventWireup="false" 
Inherits="DefaultForm" %>
<HTML>
<HEAD>
</HEAD>
<body>
<form id="cardetails" method="post" 
runat="server">
	X=<asp:TextBox id="txtboxX" 
runat="server"></asp:TextBox><BR>
	Y=<asp:TextBox id="txtboxY" 
runat="server"></asp:TextBox><BR>
	<BR>
	Sum X+Y=<asp:Label 
id="lblResult" runat="server">?
</asp:Label><BR>
	<BR>
	<asp:Button id="btnCalc" 
runat="server" 
Text="Calculate"></asp:Button>
</form>
</body>
</html>

Следует обратить внимание на первую строку и быть внимательнее к атрибуту Inherits.

2. Далее: default.aspx.cs

 

using System;
public class DefaultForm: System.Web.UI.Page
{
	protected System.Web.UI.WebControls.Label lblResult;
	protected System.Web.UI.WebControls.TextBox txtboxX;
	protected System.Web.UI.WebControls.TextBox txtboxY;
	protected System.Web.UI.WebControls.Button btnCalc;

		override protected void OnInit(EventArgs e)
		{
			InitializeComponent();
			base.OnInit(e);
		}
		private void InitializeComponent()
		{    
this.btnCalc.Click += new System.EventHandler(this.btnCalc_Click);

		}
private void btnCalc_Click(object sender, System.EventArgs e)
		{
			double x=0;
			double y=0;
			try
			{
				x=System.Double.Parse(txtboxX.Text);
				y=System.Double.Parse(txtboxY.Text);
			}
				catch (Exception ex)
			{
			string errstr=ex.StackTrace;
			// Обработка
			};

			double Result=x+y;
			lblResult.Text=Result.ToString();
		}
} 

3. Web.config

 

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>  
    <compilation 
         defaultLanguage="c#"
         debug="true"
    />
 </system.web>
</configuration>

Следует обратить внимание на атрибут debug. Если мы собираемся проводить отладку приложения, то его необходимо установить в true.

Теперь соберём наши сборки. Для этого нужно перейти в директорию с файлами .aspx,.cs. Собирать сборку нужно в режиме подготовки к отладке, т.е. необходимо включить режим /debug+ компилятора C# csc.exe. Таким образом строка запуска будет выглядеть таким образом: csc /target:library default.aspx.cs /debug+ (убедитесь, что путь к csc.exe указан в переменной %PATH%) После удачной отработки, в директории будут созданы два файла default.aspx.dll – собственно сама сборка и default.aspx.pdb (PDB - program database), файл, который содержит отладочную информацию. Эти файлы нужно поместить в директорию bin/ виртуальной директории /test. Затем запускаем Internet Explorer и открываем первую страницу веб-приложения.

Рис. 1

Отладка веб-приложения.

Для отладки веб-приложения нужно запустить программу Microsoft CLR Debugger – DbgCLR.exe, эта программа находится в директории FrameWorkSDK\GuiDebug\ DbgCLR.exe.

Теперь открываем файл, который собираемся отлаживать, в нашем случае default.asp.cs.

Рис. 2

Далее запускаем Tools\DebugProcesses в меню дебаггера.

Рис. 3

Выбираем из списка процесс asnet_wp.exe (ASP.NET Working Process) и нажимаем Attach.

Рис. 4

Закрываем окно Processes и устанавливаем Breakpoint на нужную строку кода. Мне, например, интереснее всего остановится перед строкой вычисления результата.

Далее возвращаемся в Internet Explorer и нажимаем кнопку Calculate.

Рис. 5

Происходит останов программы на заданной Breakpoint, и всплывет окно дебаггера (рис.5)

Далее разработчик может использовать привычные инструменты дебаггера: Add Watch, чтобы посмотреть значения интересующих его переменных, и другие возможности.

Таким образом, я показал возможность отладки веб-приложений без использования Visual Studio.NET, что позволяет утверждать, что .NET Framework SDK обладает достаточным количеством средств для работы профессионального разработчика, который по финансовым, амбициозным или по каким-либо другим причинам решил отказаться от использования Visual Studio.NET.


Может пригодится:


Автор: aspid
Прочитано: 5789
Рейтинг:
Оценить: 1 2 3 4 5

Комментарии: (0)

Добавить комментарий
Ваше имя*:
Ваш email:
URL Вашего сайта:
Ваш комментарий*:
Код безопастности*:

Рассылка новостей
Рейтинги
© 2007, Программирование Исходники.Ру