![](/stc/img/evkova.png)
"Порядок работы ASP.Net web-приложения."
Содержание:
ВВЕДЕНИЕ
World Wide Web – глобальная сеть – в настоящий период охватывает несметное число страниц, на которых расположена разнообразный материал. Люди приобретают доступ к данной сведениям через применение технологии Интернет. Для навигации в WWW применяются особые программы – интернет-браузеры, которые значительно упрощают путешествие по безграничным просторам WWW. Весь материал в интернет-браузере отражается в виде интернет-страниц, которые считаются главным компонентом байтов WWW.
Можно отметить следующие систематизации интернет-документов: по способности конфигурации нахождения и текстуры – неподвижные (сложное и неудобное обновление) и динамические (наиболее простое и стремительное обновление); по присутствию обратной взаимосвязи – инертные (пользователь иметь в своем распоряжении возможность только смотреть данные) и функциональные (пользователь иметь в распоряжении возможность перекидываться информацией с сервером, принимать участие в диалоговом разговоре). В данной работе интерес для нас предполагают функциональные динамические интернет-документы.
Цель курсовой работы – изучить порядок работы ASP.Net web-приложения. В рамках курсовой работы предполагается разработка программного комплекса для ведения базы данных товаров и предприятий.
Объект работы – ASP.Net.
Предмет работы – порядок работы ASP.Net web-приложения.
Цель, объект и предмет определяют следующие задачи:
- обзор и изучение литературы по исследуемой проблеме;
- ознакомление с технологией ASP;
- выделение критериев сравнения технологий;
- применение разработанной методики при решении конкретных прикладных задач.
До появления технологии ASP.NET процесс разработки Web-приложений довольно сильно отличался от разработки настольных приложений. Последние поддержаны множеством API-функций, классов и инструментов студии. Web-программирование требует преодоления множества особых барьеров, например:
- протокол HTTP не позволяет сохранять состояние страницы, то есть, как правило, на событие (клик по ссылке или нажатие на кнопку) браузер реагирует отправкой запроса серверу. Когда с сервера приходит ответ, всё содержимое страницы полностью заменяется и замедляет работу;
- необходимо знание языков гипертекста;
- умение писать скрипт на одном или нескольких языках;
- знание деталей процесса обмена информацией между клиентом и сервером;
- учет особенностей платформы клиента и типа его браузера. [8]
Инновационная технология ASP.NET призвана покончить с таким положением вещей. С помощью этой технологии современные браузеры, поддерживающие стандарты W3C DOM, позволяют вывести web-приложение на новый уровень. Теперь эти приложения стали распределенными, т.е. часть логики находится на стороне клиента, а часть – на стороне сервера. Таким образом, после отправки запроса и получения ответа страница не заменятся полностью, а обновляется только ее часть, с теми данными, в которых клиент заинтересован в конкретный момент. [7]
Microsoft.NET Framework – это платформа для создания, развертывания и запуска web-сервисов и приложений, состоящая из трех основных частей – общеязыковой среды выполнения (common language runtime), иерархического множества унифицированных библиотек классов и компонентной версии Active Server Pages (ASP). Основная идея ASP заключается в создании Web-страниц с внедренными в них фрагментами кода на скриптовых языках.
Новейшей версией технологии ASP является ASP.NET, ключевая в архитектуре Microsoft .NET Framework. Основное отличие этой технологии от ASP с точки зрения архитектуры приложений заключается в том, что код, присутствующий на web-странице, не интерпретируется, а компилируется и кэшируется, что, естественно, способствует повышению производительности приложений. В основу ASP.NET положена работа в среде CLR, что позволяет создавать Web-приложения на любом языке, поддерживаемом платформой .NET, например, таких как Visual Basic, JavaScript или С#. Это немаловажное преимущество, так как теперь возможности одного языка могут использоваться в другом языке без необходимости написания дополнительного кода. Таким образом, достигается высокая степень повторного использования кода. [3]
Независимо от языка программирования, использованного при создании приложения ASP, его код компилируется в код на промежуточном языке IL. Во время компиляции проверяется синтаксическая корректность исходного текста. Скомпилированный в промежуточный язык код выполняется быстрее, и он будет таким же независимо от языка, который мы используем. Компиляция происходит на сервере в момент первого обращения пользователя к странице. Если программист изменил текст страницы, программа перекомпилируется автоматически. [5]
Технология ASP.NET работает на сервере, для построения динамических приложений на клиенте используется JavaScript.
ASP.NET является объектно-ориентированной моделью разработки Web-приложений. Сами ASP.NET-страницы являются объектами классов. Можно создавать программный код с возможностью его повторного использования классами. Эти классы можно использовать для создания экземпляров объектов. [3]
Объектная модель — это иерархия объектов, предоставляющих разработчикам определенные возможности. В ASP.NET используется новая структура Web-страниц, которая отличается от структуры ASP-страниц и обеспечивает поддержку объектной модели для сохранения содержимого ASP.NET-страницы. Добавлен новый класс элементов управления — серверные элементы управления. Можно добавлять собственные комментарии и связывать эти данные с серверными элементами управления. Для оформления Web-страниц имеются наборы директив, которые предназначены для установки параметров. Например, параметры TraceContext и isEnabled позволяют, соответственно, включить и отключить механизм отслеживания Web-запросов.
Механизм ASP можно рассматривать как виртуальное устройство для генерации HTML-страниц. Оно работает на стороне сервера и создает клиентский HTML-код, опираясь на заданную вами (в файле типа .asp) смесь HTML-кода и скриптовых вставок. [1]
Главной заслугой технологии ASP была простота реализации динамически изменяющегося содержимого. Еще более ранние технологии разработки: CGI (Common Gateway Interface) и ISAPI (Internet Server Application Pro-gramming Interface) делали это путем больших затрат.
Код скриптовых вставок ASP написан на языке Microsoft Visual Basic Scripting Edition (VBScript), но в принципе он может быть написан и на Microsoft JScript. ASP тесно связана с технологией ActiveX Data Objects (ADO), которая еще недавно считалась прогрессивной для работы с источниками данных. [14]
Текст ASP-документа — это причудливая смесь кода, расположенного в блоках <% %>, и тегов HTML. Если в коде ASP-файла отсутствуют скриптовые вставки (блоки вида <% %>), то ядро ASP просто посылает клиенту HTML-текст, существующий в файле. Если они есть, то интерпретатор ASP создает и добавляет в указанные места HTML-документа HTML-текст, суть которого определяется логикой скрипта. В свое время такое решение было прогрессивным, но теперь оно выглядит неуклюжим. Вот пример самой простой скриптовой вставки на языке VBScript:
<html> <h3>Now is <%=Now%></h3> </html>[15]
Документ ASP обрабатывается на сервере в режиме интерпретатора линейно (сверху вниз). Код скриптовых вставок выполняется (интерпретируется) во время обработки документа на сервере и забывается после генерации выходного HTML-документа. В приведенном примере вставка будет заменена на строку текста и клиент увидит в окне браузера нечто вроде:
Now is 01.02.2008 9:27:46
Вставки содержат код, исполняемый на стороне сервера. Он реализует некоторую логику, заложенную разработчиком сайта. Например, код скрипта может обратиться к базе данных и вставить результат запроса в текст выходного HTML-документа, отправляемого клиенту.
Набор встроенных элементов управления ASP.NET достаточно обширен и разнообразен, чтобы с его помощью можно было реализовать любую необходимую функциональность Web-приложения. В их основе лежит компонентная модель ASP.NET, существенно упрощающая применение общих принципов объектно-ориентированного программирования. [13]
Функции существующих элементов управления можно расширять. Можно также создавать новые элементы управления путем объединения нескольких существующих элементов — такие составные элементы управления называются пользовательскими (user). Кроме того, в ASP.NET определен небольшой набор базовых классов, на основе которых можно создавать совершенно новые, так называемые специализированные (custom) элементы управления. [1]
Для отображения нестандартных элементов, входящих в состав web-страниц, браузеры используют специальные встроенные приложения. При этом для браузера Netscape эти приложения реализуются в виде динамических библиотек (.DLL), а в программе Internet Explorer, Mozila и Opera — в виде элементов управления ActiveX.
Нестандартные элементы управления расширяют инструментарий Web-разработчика. Они инкапсулируют ключевые элементы интерфейса и программной логики, благодаря чему их можно многократно использовать не только в одном приложении, но и в других проектах.
Рассмотрим 3 типа нестандартных элементов управления:
- пользовательские элементы управления (user controls) — создаются с помощью графического интерфейса дизайнера Visual Studio .NET путем комбинирования существующих серверных и HTML-элементов управления; представляют собой функциональные блоки, инкапсулирующие некоторые возможности пользовательского интерфейса.
- Пользовательский элемент управления хранится в файле, копию которого необходимо включать в каждый проект, использующий этот элемент управления;
- составные элементы управления (composite или custom controls) — создаются из существующих серверных и HTML-элементов управления. Похожи на пользовательские, но в отличие от них создаются программно, поэтому могут быть скомпилированы в сборки (dll-файлы). Последние допустимо применять одновременно в нескольких приложениях и добавлять на панель Toolbox в Visual Studio .NET;
- генерируемые элементы управления (rendered controls) — генерируются кодом в виде HTML-тэгов «с нуля», а не компонуются из существующих элементов управления. Подобно составным элементам управления, генерируемые элементы управления компилируются и их можно добавлять на панель Toolbox. Однако, создавая генерируемые элементы управления, приходится самостоятельно писать код для решения задач, которые в составных элементах управления автоматизированы.
Таблица 1
Синтаксис включения файлов с атрибутом SRC
Тип пути |
Синтаксис |
Пример |
Относительный |
SRC="путь\имя_файла" |
SRC="Utilities\Test.asp" |
Виртуальный |
SRC="/путь/имя_файла" |
SRC="/MyScripts/Digital.asp" |
Виртуальный |
SRC="\путь\имя_файла" |
SRC="\RegApps\Process.asp" |
Пример.
<!DOCTYPE HTML>
<html xmlns="http://schemas.microsoft.com/intellisense/html5">
<head><title>Покупка футболки</title>
<link href="../StyleSheet.css" rel="Stylesheet" type="text/css" />
<script type="text/jscript">
moveTo(0, 0);
// resizeTo(1000, 750);
var
count = 0, // Счетчик покупок
size =0 ,
//======== Перечень предлагаемых товаров
names = ["SpanchBob",
"Cheburashka",
"Dino",
"Smail",
"Tarakan",
"Blue",
"Matrica"
],
images = ["1.gif",
"2.png",
"3.png",
"4.png",
"5.png",
"6.jpg",
"7.jpg"
],
tsh = null,
products = {},
cr = null,
boughtItems = 0,
tshirts = [
{ name: "Black t-shirt", url: "black-tshirt.jpg" },
{ name: "White t-shirt", url: "white-tshirt.jpg" }
];
function product( name, price, url, xPos, yPos)
{
this.name = name
this.price = price
this.url = url
this.x = xPos
this.y = yPos
this.img = null
this.dragged = null
this.inrect = null
this.xOld = 0
this.yOld = 0
this.Draw = function ()
{
document.body.insertAdjacentHTML("beforeEnd",
"<img width=100 height=100 onmousedown=products[this.alt].SelectItem() onmousemove=products[this.alt].Move() onmouseup=products[this.alt].Stop() style='position:absolute; left:"
+ this.x + "px; top:" + this.y + "px;' src=../Images/Misc/" + this.url + " id=c" + ++count + " alt='" + this.name + "' />");
this.img = document.body.lastChild;
}
this.SelectItem = function()
{
this.xOld = event.x;
this.yOld = event.y;
this.dragged = event.srcElement; //объект, вызвавший событие
}
this.Move = function ()
{
var
x = event.x,
y = event.y;
if (this.dragged != null)
{
this.dragged.style.posLeft += x - this.xOld;
this.dragged.style.posTop += y - this.yOld;
};
this.xOld = x; this.yOld = y;
event.returnValue = false;
}
this.Stop = function ()
{
this.dragged = null;
if (this.xOld > 50 && this.xOld < 350 && this.yOld > 80 && this.yOld < 380)
{
this.inrect = true;
}
else { this.inrect = null; }
}
}
function tshirt(name, url)
{
this.name = name;
this.url = url;
this.img = null;
this.x = 50;
this.y = 80;
this.Draw = function ()
{
document.body.insertAdjacentHTML("beforeEnd",
"<img width=300 height=300 onmousedown=tsh.ChangeTshirt() style='position:absolute; left:"
+ this.x + "px; top:" + this.y + "px;' src=../Images/Misc/" + this.url + " id=c" + ++count + " alt='" + this.name + "' />");
this.img = document.body.lastChild;
}
this.ChangeTshirt = function ()
{
if (tsh.name == "White t-shirt")
{
tsh.name = tshirts[0].name;
tsh.img.src = "../Images/Misc/" + tshirts[0].url;
}
else
{
tsh.name = tshirts[1].name;
tsh.img.src = "../Images/Misc/" + tshirts[1].url;
}
}
}
function crate()
{
this.name = 'Basket';
this.url = 'Basket.gif';
this.img = null;
this.x = 900;
this.y = 150;
this.Draw = function ()
{
document.body.insertAdjacentHTML("beforeEnd",
"<img width=150 height=150 style='position:absolute; left:"
+ this.x + "px; top:" + this.y + "px;' src=../Images/Misc/" + this.url + " id=c" + ++count + " alt='" + this.name + "' />");
this.img = document.body.lastChild;
}
}
function Init()
{
tsh = new tshirt(tshirts[1].name, tshirts[1].url);
tsh.Draw();
cr = new crate;
cr.Draw();
var xPos = 20, yPos = 410,
width = document.body.clientWidth,
height = document.body.clientHeght,
bNewLine = false;
Image.prototype.price = 0;
for (var i = 0; i < names.length; i++)
{
var g = names[i];
if (xPos > width - 120)
{
xPos = 20;
yPos += 160;
}
test = new product(g, 100 + i * 10, images[i], xPos, yPos);
products[g] = test;
products[g].Draw();
xPos += 120;
}
for (e in products)
{
if (products.hasOwnProperty(e))
size++;
};
}
function Remove()
{
var o = event.srcElement;
if (o.parentNode.tagName != "TD")
return true;
var row = o.parentNode.parentNode;
var total = document.getElementById("itog");
total.innerText = parseInt(total.innerText) - parseInt(row.cells[2].innerHTML);
row.removeNode(true);
return false;
}
function buy()
{
var
tbl = document.getElementById("buying"),
row = tbl.insertRow();
var price = 0, name;
for (var n = 0; n < size; n++)
{
var thisprod = products[names[n]];
if (thisprod.inrect)
{
price += thisprod.price;
name = thisprod.name;
}
}
boughtItems += 1;
var cell = row.insertCell();
cell.innerHTML = boughtItems;
cell = row.insertCell();
cell.innerHTML = name;
cell = row.insertCell();
cell.innerHTML = price + "$";
var total = document.getElementById("itog");
var itog = total.innerText;
total.innerText = parseInt(itog) + price;
cell = row.insertCell();
cell.innerHTML = '<input type="submit" value="X" onclick="Remove()"/>';
}
</script>
</head>
<body onload="Init()">
<div>
<h3>Покупаем футболку!</h3>
<span id="spanPos"></span><br />
<input type="submit" value="Купить" style="position: absolute; top:250px; left:490px; height:70px; width:100px;" onclick="buy()"/>
<div id="divCrate" style="position: absolute; top:310px; left:910px; padding:5px;
border-color:Red; border-style:groove; border-width:medium;">
<table id="buying">
<tr><th>#</th><th>Наименование</th><th>Цена</th><th>Удалить</th></tr>
</table>
Итого: <span id="itog">0</span>
</div><br />
</div>
</body></html>
Результат представлен на рисунке:
Пример интернет-магазина на ASP.Net.
2. Порядок работы ASP.Net web-приложения
Разработка программы состоит из 2-х частей:
- Клиентская часть
- Серверная часть
Разрабатываемый программный комплекс непосредственно выполнен в виде Web-сайта. Поэтому для доступа к системе, клиенту достаточно обычного браузера. В данном разделе будет описан процесс, создания страниц, дизайна этих страниц, а так же отчетов. На стороне клиента формируются только управляющие команды, в то время как обработка данных ведется целиком на стороне сервера. [17] Серверная часть содержит код, который связывается с базой данных MS SQL Server и передает данные в клиентскую часть программы для их обработки в привычном, для пользователя, виде.
2.1 Особенности создания страниц на языке APS.NET
Любая страница непосредственно состоит из двух частей. Первая часть – Design, представляет собой пустое пространство, на котором можно разместить элементы управления. Вторая часть – Source, представляет собой код языка ASP.NET. Добавление нового кода, происходит при добавлении нового объекта в окне Design, либо при ручном заполнении. Для того чтобы добавить новый элемент в окно Design, его необходимо выбрать из вкладки Toolbox, и перетащить на форму. [5]По аналогии с C#, имеется окно Properties, в котором можно задать те или иные параметры для элементов управления, или задать те или иные события.
Каждая страница непосредственно начинается со следующего кода: « <% Page Language=”текущий язык программирования” %> ». Где тег “<%” всегда предназначен для интерпретации ASP – кода. Атрибут Language – это указание, что в скриптах данной страницы будет использоваться определенный язык программирования. В данной работе – это язык C#. Затем идет код вида: « <form runat=”server”> ». Этот тег дает указание компилятору обрабатывать элементы управления страницы. Данный тег имеет свойство runat, для которого установлено значение “server” (других значений не бывает). При использовании этого свойства элемент управления обрабатывается компилятором, а не передается браузеру «как есть». [3]
При двойном щелчке на объекте в окне Design непосредственно откроется файл, с названием аналогичным названию страницы, но отличающийся от нее тем, что добавляется выражение типа «.cs» в конце расширения файла. Также появится код, который соответствует событию по умолчанию для данного элемента. В данном файле ведется разработка кода уже не на языке ASP.NET, а на том языке, который вы выбрали, для данной работы – это язык C#. Задание и обращение к свойствам, методам ничем не отличается от обращения к ним же при написании любой другой программы на конкретно выбранном языке. [7]
2.2 Создание серверной части
Подключение баз данных к проекту ASP.NET непосредственно осуществлялось по технологии ADO.NET.
ADO.NET (ActiveX Data Object.NET) – набор классов, используемый для доступа к источникам данных в платформе .NET. Название ADO.NET означает, что данный набор классов – это логическое развитие предыдущей объектной модели доступа к данным – ADO. [9]
Но ADO.NET не просто следующая версия ADO. ADO.NET представляет собой новую объектную модель, которая использует стандарт XML для передачи данных. [10]
ADO.Net развивает идею использования отсоединенных массивов данных, непосредственно переводя ее из разряда дополнительных возможностей в разряд реально используемых, более того – основных способов работы. По сравнению с ADO, ADO.NET обещает более легкое программирование, лучшую производительность и масштабирование, меньшую зависимость от особенностей источников данных и большую способность взаимодействовать с другими платформами.
Ключевой объект, который хранит данные в ADO.NET – DataSet. Это экземпляр CLR-класса System.Data.DataSet, представляющий моментальный снимок части базы данных, размещенный в памяти.
DataSet – независимый от источника данных объект, который не имеет собственных средств для работы с источниками данных.
Связующую роль между DataSet и источником данных в ADO.NET выполняют управляемые провайдеры. [11]
Каждый управляемый провайдер представляет набор объектов, с помощью которых можно подключиться к источнику данных, считать данные и заполнить ими DataSet.
Это позволяет DataSet не знать ничего про соединения с источниками данных. В данном случае провайдером является Microsoft SQL Server 2008 R2.
Так как ADO.NET использует XML как стандартный формат передачи данных, программа, которой необходимо получить данные из компонента ADO.NET, не обязана сама быть компонентом ADO.NET.
Единственное требование – эта программа непосредственно должна понимать XML.
И это позволяет ADO.NET-компонентам при использовании других компонентов и сервисов, входящих в ASP.NET и язык высокого уровня C#, легко взаимодействовать с любой программой на любой платформе. [13]
Как уже было сказано выше все запросы непосредственно создаются через DataSet. Преимущество создания таких запросов в том, что Visual Studio предоставляет удобный конструктор запросов любой сложности; Запросы с дополнительными данными являются параметризированными, что дает дополнительный уровень защиты; [14]
Листинг 1 – Добавление, удаление и редактирование данных в таблице «Предприятия»:
<%@ Page Title="Домашняя страница" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<style type="text/css">
.style1
{
text-align: center;
font-size: x-large;
color: #000000;
}
</style>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<h2>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:CatalogueConnectionString %>"
SelectCommand="SELECT * FROM [Firms]"
DeleteCommand="DELETE FROM [Firms] WHERE [FirmID] = @FirmID"
InsertCommand="INSERT INTO [Firms] ([Name], [Address], [Phone], [HTTP]) VALUES (@Name, @Address, @Phone, @HTTP)"
UpdateCommand="UPDATE [Firms] SET [Name] = @Name, [Address] = @Address, [Phone] = @Phone, [HTTP] = @HTTP WHERE [FirmID] = @FirmID">
<DeleteParameters>
<asp:Parameter Name="FirmID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="HTTP" Type="String" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="HTTP" Type="String" />
<asp:Parameter Name="FirmID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
</h2>
<p class="style1">
<strong>Предприятия</strong></p>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" DataKeyNames="FirmID"
DataSourceID="SqlDataSource1" style="margin-left: 15px" Width="890px"
CellPadding="4" ForeColor="#333333" GridLines="None">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:CommandField ShowSelectButton="True" ButtonType="Image"
SelectText="Выбрать" />
<asp:BoundField DataField="FirmID" HeaderText="№ п/п" InsertVisible="False"
ReadOnly="True" SortExpression="FirmID" />
<asp:BoundField DataField="Name" HeaderText="Название" SortExpression="Name" />
<asp:BoundField DataField="Address" HeaderText="Адрес"
SortExpression="Address" />
<asp:BoundField DataField="Phone" HeaderText="Телефон" SortExpression="Phone" />
<asp:BoundField DataField="HTTP" HeaderText="Сайт" SortExpression="HTTP" />
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
<br />
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:CatalogueConnectionString %>"
DeleteCommand="DELETE FROM [Firms] WHERE [FirmID] = @FirmID"
InsertCommand="INSERT INTO [Firms] ([Name], [Address], [Phone], [HTTP]) VALUES (@Name, @Address, @Phone, @HTTP)"
SelectCommand="SELECT * FROM [Firms] WHERE ([FirmID] = @FirmID)"
UpdateCommand="UPDATE [Firms] SET [Name] = @Name, [Address] = @Address, [Phone] = @Phone, [HTTP] = @HTTP WHERE [FirmID] = @FirmID">
<DeleteParameters>
<asp:Parameter Name="FirmID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="HTTP" Type="String" />
</InsertParameters>
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="FirmID"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Address" Type="String" />
<asp:Parameter Name="Phone" Type="String" />
<asp:Parameter Name="HTTP" Type="String" />
<asp:Parameter Name="FirmID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<br />
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
CellPadding="4" DataKeyNames="FirmID" DataSourceID="SqlDataSource2"
ForeColor="#333333" GridLines="None" Height="92px"
onitemdeleted="DetailsView1_ItemDeleted"
oniteminserted="DetailsView1_ItemInserted"
onitemupdated="DetailsView1_ItemUpdated" style="margin-left: 15px"
Width="890px">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<CommandRowStyle BackColor="#E2DED6" Font-Bold="True" />
<EditRowStyle BackColor="#999999" />
<FieldHeaderStyle BackColor="#E9ECF1" Font-Bold="True" />
<Fields>
<asp:BoundField DataField="FirmID" HeaderText="№ п/п" InsertVisible="False"
ReadOnly="True" SortExpression="FirmID" />
<asp:BoundField DataField="Name" HeaderText="Название" SortExpression="Name" />
<asp:BoundField DataField="Address" HeaderText="Адрес"
SortExpression="Address" />
<asp:BoundField DataField="Phone" HeaderText="Телефон" SortExpression="Phone" />
<asp:BoundField DataField="HTTP" HeaderText="Сайт" SortExpression="HTTP" />
<asp:CommandField ButtonType="Button" ShowDeleteButton="True"
ShowEditButton="True" ShowInsertButton="True" />
</Fields>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
</asp:DetailsView>
<br />
</asp:Content>
Листинг 2 – Добавление, удаление и редактирование данных в таблице «Товары»:
<%@ Page Title="О нас" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="Default2.aspx.cs" Inherits="About" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
<style type="text/css">
.style1
{
text-align: center;
font-size: x-large;
color: #000000;
}
</style>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:CatalogueConnectionString %>"
SelectCommand="SELECT * FROM [Goods]"></asp:SqlDataSource>
<p class="style1">
<strong>Товары</strong></p>
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AllowSorting="True" AutoGenerateColumns="False" CellPadding="4"
DataKeyNames="ProductID" DataSourceID="SqlDataSource1" ForeColor="#333333"
GridLines="None" style="margin-left: 15px" Width="890px">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:CommandField ButtonType="Image" ShowSelectButton="True" />
<asp:BoundField DataField="ProductID" HeaderText="№ п/п" InsertVisible="False"
ReadOnly="True" SortExpression="ProductID" />
<asp:BoundField DataField="Name" HeaderText="Название" SortExpression="Name" />
<asp:BoundField DataField="Price" HeaderText="Цена" SortExpression="Price" />
<asp:BoundField DataField="FirmID" HeaderText="Поставщик"
SortExpression="FirmID" />
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server"
ConnectionString="<%$ ConnectionStrings:CatalogueConnectionString %>"
DeleteCommand="DELETE FROM [Goods] WHERE [ProductID] = @ProductID"
InsertCommand="INSERT INTO [Goods] ([Name], [Price], [FirmID]) VALUES (@Name, @Price, @FirmID)"
SelectCommand="SELECT * FROM [Goods] WHERE ([ProductID] = @ProductID)"
UpdateCommand="UPDATE [Goods] SET [Name] = @Name, [Price] = @Price, [FirmID] = @FirmID WHERE [ProductID] = @ProductID">
<DeleteParameters>
<asp:Parameter Name="ProductID" Type="Int32" />
</DeleteParameters>
<InsertParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Price" Type="String" />
<asp:Parameter Name="FirmID" Type="String" />
</InsertParameters>
<SelectParameters>
<asp:ControlParameter ControlID="GridView1" Name="ProductID"
PropertyName="SelectedValue" Type="Int32" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="Name" Type="String" />
<asp:Parameter Name="Price" Type="String" />
<asp:Parameter Name="FirmID" Type="String" />
<asp:Parameter Name="ProductID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
<br />
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False"
CellPadding="4" DataKeyNames="ProductID" DataSourceID="SqlDataSource2"
ForeColor="#333333" GridLines="None" Height="50px"
onitemdeleted="DetailsView1_ItemDeleted"
oniteminserted="DetailsView1_ItemInserted"
onitemupdated="DetailsView1_ItemUpdated" style="margin-left: 15px"
Width="890px">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<CommandRowStyle BackColor="#E2DED6" Font-Bold="True" />
<EditRowStyle BackColor="#999999" />
<FieldHeaderStyle BackColor="#E9ECF1" Font-Bold="True" />
<Fields>
<asp:BoundField DataField="ProductID" HeaderText="№ п/п" InsertVisible="False"
ReadOnly="True" SortExpression="ProductID" />
<asp:BoundField DataField="Name" HeaderText="Название" SortExpression="Name" />
<asp:BoundField DataField="Price" HeaderText="Цена" SortExpression="Price" />
<asp:BoundField DataField="FirmID" HeaderText="Поставщик"
SortExpression="FirmID" />
<asp:CommandField ButtonType="Button" ShowDeleteButton="True"
ShowEditButton="True" ShowInsertButton="True" />
</Fields>
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
</asp:DetailsView>
<br />
</asp:Content>
2.3 Создание клиентской части
Разрабатываемый программный комплекс выполнен в виде Web-сайта. Поэтому для доступа к системе, клиенту достаточно обычного браузера.
На стороне клиента формируются непосредственно только управляющие команды, в то время как обработка данных ведется целиком на стороне сервера.
Программный комплекс содержит две шаблонную страницу так называемую Главную страницу или MasterPage. [12]
Главные страницы ASP.NET позволяют создавать последовательную структуру страниц в приложении.
Главная страница определяет вид, непосредственно наполнение и стандартное поведение для всех страниц (или группы страниц) приложения. Затем можно создавать отдельные страницы содержимого, включающие содержимое, которое необходимо отобразить. [11]
Когда пользователи запрашивают страницу содержимого, выходная страница представляет собой сочетание структуры главной страницы и содержимого со страницы содержимого.
Главные страницы предоставляют функции, которые ранее были доступны разработчикам путем повторного копирования непосредственно существующего кода, текста и элементов управления, использования наборов фреймов, включаемых файлов для общих элементов, пользовательских элементов управления ASP.NET и т. д. [10]
Что-бы создать главную страницу для этого следует в меню выбрать пункт Проект далее нажать на пункт в меню Добавить новый элемент, в открывшемся диалоговом окне выбрать Master Page (рисунок 3).
Рисунок 1 – Форма добавления новых элементов
Добавление страниц к созданной главной странице происходит практически, так же как и создание главной страницы, только в диалоговом окне Add new item выбирается пункт Web Form using Master Page (рисунок 4). После нажатия кнопки Ok появляется непосредственно диалоговое окно выбора главной страницы (рисунок 5), после выбора создается новая страница, привязанная к главной странице, с уже подписанными CSS стилями. [6]
Рисунок 2 – Выбор существующей главной страницы.
Поля с данными на такие страницы добавляются обычным перетягиванием элементов из ToolBox. [8]
Листинг 3 – Исходный код «Master Page»:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="SiteMaster" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
<asp:ContentPlaceHolder ID="HeadContent" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form runat="server">
<div class="page">
<div class="header">
<div class="title">
<h1>
КАТАЛОГ ПРЕДПРИЯТИЙ И ТОВАРОВ
</h1>
</div>
<div class="loginDisplay">
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/About.aspx">Помощь</asp:HyperLink>
</div>
<div class="clear hideSkiplink">
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Предприятия"/>
<asp:MenuItem NavigateUrl="~/Default2.aspx" Text="Товары"/>
</Items>
</asp:Menu>
</div>
</div>
<div class="main">
<asp:ContentPlaceHolder ID="MainContent" runat="server"/>
</div>
<div class="clear">
</div>
</div>
<div class="footer">
</div>
</form>
</body>
</html>
Рисунок 3 – Форма Maser Page
Шаблон дизайна сайта разрабатывался по схеме представленной ниже.
CSS стили (Cascading Style Sheets) — технология оформления веб-страниц, элемент концепции DHTML. Таблицы (точнее — списки) CSS служат для оформления преимущественно HTML- и XHTML-документов, но иногда используются и для других документов непосредственно, структурированных с помощью XML (например, в браузере «Mozilla» для оформления элементов графического интерфейса, XUL). [9]
CSS используется для задания цветов, шрифтов, расположения и других аспектов представления документа. Основное назначение, для которого технология css была разработана, это разделение содержимого (написанного на HTML или другом языке разметки) и представления документа (написанного на CSS). Это разделение может увеличить непосредственно доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом. Кроме того, CSS позволяет представлять один и тот же документ в различных стилях или методах вывода, таких как экранное представление, печать. [14]
Главная форма содержит непосредственно название приложения, пункты меню для вызова формы товаров и формы предприятий, таблицу с отображением данных о предприятиях и кнопки помощи. На главной панели таблица имеет возможность группировать данные по указанным критериям и сортировать их по любой колонке таблицы.
Рисунок 4 – Главная форма приложения
Формы для работы с данными о предприятии и товарах содержит интерфейс для Добавления/Редактирования/Удаления/Просмотр данных о предприятии или товаре. Определённый режим можно получить непосредственно после нажатия на соответствующую кнопку на главной панели после выбора строки в таблице. [11]
Рисунок 5 – Форма для работы с данными о товарах
Форма «Помощь» необходима непосредственно для помощи пользователю в работе и содержит всю необходимую для этого информацию.
2.4 Руководство для пользователя
Пользователь программного приложения «Каталог предприятий и товаров», имеет возможность управлять данными MS SQL Server в удобном для него виде через WEB интерфейс в любом браузере. Пользователю сначала непосредственно представлена главная панель (рис. 6). Главная форма содержит название приложения, пункты меню для вызова формы товаров и формы предприятий, таблицу с отображением данных о предприятиях и кнопки помощи. На главной панели таблица имеет возможность группировать данные по указанным критериям и сортировать их по любой колонке таблицы. [15]
При вызове формы товара или предприятия, пользователю представлен интерфейс для Добавления/Редактирования/Удаления данных о названии, цене, поставщике или о названии, адресу, телефону и сайту. Данная форма содержит соответствующие списки и кнопки для управления.
Рисунок 6 – Форма для работы с данными о предприятиях.
При вызове формы про службы с информацией о фирмах, пользователю видется интерфейс для Добавления/Редактирования/Удаления/Просмотр информации о компании. Установленный распорядок разрешено заполучить после нажатия в подобающую клавишу в основной панели после подбора компании в таблице. Форма охватывает поля, в каких поэтому размещены составляющие про службы с информацией о компании (рис. 6). [15]
Рисунок 7 – Форма для работы редактирования данных о предприятии
При вызове формы для работы с данными о товарах, пользователю непосредственно представляется интерфейс для Добавления/Редактирования/Удаления/Просмотр данных о товаре. Определённый режим можно получить после нажатия на соответствующую кнопку на главной панели после выбора предприятия в таблице. Форма содержит поля, в которых соответственно расположены компоненты для работы с данными о предприятии. [15]
ЗАКЛЮЧЕНИЕ
Основным результатом курсовой работы является разработка программного комплекса для ведения базы данных товаров и предприятий. В этом был раскрыт порядок работы ASP.Net web-приложения.
Программный комплекс может предоставить доступ к информации о товарах для производителей и потребителей, ускорить поиск требуемой продукции в каталоге и тем самым уменьшить время на подбор требуемого товара, а так же время клиентов и поставщиков.
Каталог предоставляет информацию в виде Web-страницы с возможностью добавления, удаления и редактирования информации.
Данная курсовая научная работа показывает возможности языка ASP.NET 2015. Данный язык на данный момент является самым современным и самым функциональным по сравнению с другими языками. Некоторые моменты автоматизированы, что облегчает разработку приложений.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Бардзелл Д. Macromedia Dreamweaver MX 2008 с ASP, ColdFusion и PHP. С первых рук. – М.: ЭКОМ, 2009. – 235 с.
2. Бумфрей Ф., Диренцо О. XML. Новейшие виды. – М.: ДМК-Пресс, 2000. – 272 с.
3. Веллинг Л., Томсон Л. Исследование Web-дополнений с поддержкой PHP и MySQL. – М.: Вильямс, 2005. – 429 с.
4. Дунаев В.В. Руководство PHP. – СПб.: Санкт-петербург, 2007. – 160 с.
5. Дунаев В.В. Руководство. Сценарии для веб-сайта. PHP и JavaScript. – СПб.: Питер, 2006. – 279 с.
6. Зольников Д.С. PHP 5. Как без помощи других создать интернет-сайт какой угодно сложности. – М.: НТ Пресс, 2005. – 109 с.
7. Ковалей М.В., Симдянов И.В. PHP 5. Деятельность создания web-сайта. – СПб., 2005. – 401 с.
8. Куссуль Н.Н., Шелестов А.Ю. Внедрение PHP. Руководство. – М.: Вильямс, 2006. – 117 с.
9. Кэгл К. XML. – М.: Примат, 2006. – 425 с.
10. Леонтьев Б.К. PHP 5.0 для начинающих, или как создать активный Web-сайт. – М.: Новый издательский дом, 2006. – 109 с.
11. Мазуркевич А., Елевой Д. PHP: настольная книга программиста. – М.: Свежее знание, 2006. – 242 с.
12. Макки Т., Ветер Р. Dreamweaver MX 2008. Шаг за шагом. Руководство. – М.: ЭКОМ, 2009. – 312 с.
13. Молер Дж., Боуэн К. Dreamweaver MX 2008. Управление Web-дизайнера. – М.: ЭКСМО, 2009. – 67 с.
14. Старыгин А. XML Исследование WEB-приложений. – СПб.: Питер, 2003. – 199 с.
15. Фландерс Й. ASP - взгляд изнутри. Для разработчиков программного обеспечения. – М.: ДМК-Пресс, 2001. – 135 с.
16. Хабибуллин И.Ш. Руководство XML. – СПб.: BHV-Санкт-Петербург, 2003. – 111 с.
17. Хестер Н. Создание Web-страниц в Dreamweaver. – М.: НТ Машина, 2005. – 104 с.
18. Шкрыль А.А. PHP - это элементарно. Программируем для Web-сайта. – СПб.: BHV-Санкт-Петербург, 2006. – 161 с.
19. Гаряка А.А. Базы ASP.NET 2.0: Учебное пособие / А.А. Гаряка. – М.: Веб-Институт Информативных Технологий; БИНОМ. Лаборатория познаний, 2007. – 296 с.: ил.- (Базы информативных технологий)
- Формы правления в прошлом и настоящем ( ПОНЯТИЕ И СОДЕРЖАНИЕ ФОРМЫ ПРАВЛЕНИЯ КАК ЭЛЕМЕНТА СТРУКТУРЫ ФОРМЫ ГОСУДАРСТВА)
- Сущность принципа разделения властей и особенности его реализации в России
- Исключительные права на товарный знак «Домик в деревне»
- Оценка рыночной стоимости объекта интеллектуальной собственности: Исключительные (имущественные) права на товарный знак ОАО "Газпром нефть"
- Оценка рыночной стоимости объекта интеллектуальной собственности: Исключительные (имущественные) права на товарный знак ПАО «Горно-металлургическая компания «Норильский никель»
- Оценка стоимости права собственности на обыкновенные акции, представленных в виде бездокументарных именных ценных бумаг в количестве 200 000 штук Акционерного общества «Регент»
- Коммерческая деятельность оптового торгового предприятия и ее совершенствования ( на примере конкретной организации )
- Функции менеджмента
- Организация коммерческой деятельности розничного торгового предприятия
- Понятие и виды наследования ( ПРАВОВАЯ ХАРАКТЕРИСТИКА НАСЛЕДОВАНИЯ )
- Понятие и виды наследования ( Составление завещания )
- Методы выбора проектов ( Оптимальный проект )