KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET

Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн "Джеффри Мак-Манус - Обработка баз данных на Visual Basic®.NET". Жанр: Программирование издательство -, год -.
Перейти на страницу:

Вопросы и ответы

К каким базам данных можно осуществлять доступ с помощью технологии ASP.NET?

Технология ASP.NET обладает той же совместимостью с другими базами данных, что и технология ADO.NET, т.е. для любого источника данных, совместимого с ADO.NET, в ASP.NET предлагаются те же функции.

Почему для извлечения данных не используется XML-анализатор?

XML-анализатор предназначен для извлечения данных из элементов структуры, а в технологии ADO.NET предусмотрены функции анализа данных, которые имеют как формат XML, так и собственный формат базы данных. Кроме того, XML-анализатор не используется для повышения производительности.

ГЛАВА 12

Web-службы и технологии промежуточного уровня

Вероятно, многие читатели или еще не работали с компонентами промежуточного уровня, или имеют опыт работы с приложениями, которые включают только Web-сервер и сервер баз данных, где большая часть прикладной логики содержится в ASP-страницах, а в базе данных хранится только используемая информация. Организацию системы, при которой прикладная логика находится на промежуточном уровне или распределена среди нескольких уровней, принято было называть канализацией (plumbing). В такой системе прикладная логика предоставляет пользователю все необходимые данные и службы, но полностью скрыта от него.

В течение многих лет такая "канализация" реализовывалась с помощью DLL-файлов на языке Visual Basic или Visual C++. Используемый код имел вид откомпилированного объекта, который можно было применять совместно, повторно или удаленно. Наиболее распространенным примером частого повторного использования кода являются объявления объектов ADODB.Connection и ADODB.Recordset, которые принимают строку подключения и запрос и возвращают результирующий набор записей. Эту логику можно упаковать в виде функции, принимающей в качестве параметров строку подключения и запрос, а возвращающей результирующий набор записей. Теоретически этот способ просто прекрасен, но в реальной ситуации возникают проблемы с контролем версий, удаленным доступом и общим недопониманием в среде разработчиков.

Компанией Microsoft достигнут невероятный прогресс в развитии промежуточного уровня в рамках платформы .NET Framework. Она открыла низкоуровневые библиотеки для всех языков программирования в среде VS.NET. В результате разработчики на языке Visual Basic получили гораздо более удобный и простой способ доступа к потокам и маршалингу для более эффективного управления производительностью. Следующим крупным шагом вперед было введение контроля версий на стороне сервера. Это позволяет хранить на одном компьютере проектируемую и рабочую версии кода без конфликтов между ними. Серверный контроль версий происходит благодаря тому, что на платформе .NET для их хранения используются разные каталоги, а не параметры системного реестра. Нельзя не упомянуть здесь и Web-службы. Хотя в эпоху интенсивного развития Internet эту технологию нельзя назвать совершенно новой, все же Web-службы, вероятно, являются наиболее перспективным путем развития идеологии распределенных вычислений. В данной главе рассматриваются механизмы работы промежуточного уровня и описываются способы его реализации.

Применение промежуточного уровня для презентационной логики

Данные, вводимые пользователем в Web-форму (например, дата), часто нуждаются в проверке на соответствие заданным требованиям. Большинству разработчиков известно, что эта простая задача может быть выполнена несколькими разными способами в клиентской части или на презентационном уровне. Однако это требование ограничивает клиентский код только языком HTML. В этом контексте становится ясным значение промежуточного уровня: именно на этом уровне происходит взаимодействие клиента с обрабатываемыми им данными.

В Visual Basic .NET предусмотрена удобная встроенная функция IsDate для управления процессами проверки правильности формата введенной даты. Она возвращает логическое значение, которое определяет успешное или неудачное преобразование переданной ей информации в корректный формат даты. Рассмотрим подробнее эту функцию на более высоком уровне.

Создадим Web-форму datecheck.aspx с помощью шаблона ASP.NET Web Application среды Visual Studio .NET. В данной Web-форме будут располагаться только два серверных элемента управления: текстовое поле и кнопка. После щелчка на кнопке введенная в текстовом поле информация передается серверу, на котором выполняется функция Is Date. Затем результат выполнения функции передается обратно Web-форме. В листинге 12.1 приводится вспомогательный код данной Web-формы datecheck.aspx.vb, а в листинге 12.2 — код самой Web-формы datecheck.aspx.

ЛИСТИНГ 12 1. Вспомогательный код Web-формы datecheck.aspx.vb

Public Class datecheck

 Inherits System.Web.UI.Page

 Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox

 Protected WithEvents Button1 As System.Web.UI.WebControls.Button

#Region " Web Form Designer Generated Code "

 ' Этот код создан конструктором Web-форм.

 <System.Diagnostics.DebuggerStepThrough()> Private Sub _

  InitializeComponent()

 End Sub


 Private Sub Page_Init(ByVal sender As System.Object, _

  ByVal e As System.EventArgs) Handles MyBase.Init

  ' CODEGEN: Этот вызов метода организован конструктором Web-форм.

  ' Не изменяйте его вручную в окне редактора кода.

  InitializeComponent()

 End Sub

#End Region


 Dim Msg As String


 Private Sub Page_Load(ByVal sender As System.Object, _

  ByVal e As System.EventArgs) Handles MyBase.Load

  Button1.Text = "Check Date"

  TextBox1.Text = DateTime.Now.ToString

 End Sub


 Private Sub Button1_Click(ByVal sender As System.Object, _

  ByVal e As System.EventArgs) Handles Button1.Click

  Msg = IsDate(Request.Form.Item("TextBoxl")).ToString

  Msg += "<BR>"

  Msg += Request.Form.Item("TextBox1")

  If Page.IsPostBack Then

   Response.Write(Msg)

   Button1.Text = "Date Checked"

  End If

 End Sub

End Class

В листинге 12.1 нет никаких следов взаимодействия с клиентской частью.

ЛИСТИНГ 12.2. Код самой Web-формы datecheck.aspx

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="datecheck.aspx.vb" Inherits="Novelty1.datecheck" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

 <HEAD>

  <title>datecheck</title>

  <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">

  <meta name="CODE_LANGUAGE" content="Visual.Basic 7.0">

  <meta name="vs_defaultClientScript" content="JavaScript">

  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

 </HEAD>

 <body MS_POSITIONING="GridLayout">

  <form id="Form1" method="post" runat="server">

   <asp:TextBox id="TextBox1" style="Z-INDEX:101; LEFT: 10рх; POSITION: absolute; TOP: 36рх" runat="server" Width="165px" Height="20px">

   </asp:TextBox>

   <asp:Button id="Button1" style="Z-INDEX: 102; LEFT: 14px; POSITION: absolute; TOP: 73px" runat="server" Width="104px" Height="25px" Text="Button">

   </asp:Button>

  </form>

 </body>

</HTML>

В листинге 12.2 элементы управления формы содержат директиву runat=server, которая указывает на выполнение сервером действий, определенных во вспомогательном коде datecheck.aspx.vb. В листинге 12.3 приведен фактически генерируемый HTML-код, который передается клиенту. Код серверного элемента управления никогда не передается клиенту. Клиент получает только HTML-результат выполнения сервером кода данного элемента управления.

ЛИСТИНГ 12.3. HTML-код клиента

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

 <HEAD>

  <title>datecheck</title>

  <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">

  <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">

  <meta name="vs_defaultClientScript" content="JavaScript">

  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

 </HEAD>

 <body MS_POSITIONING="GridLayout">

  <form name="Form1" method="post" action="datecheck.aspx" id="Form1">

  <input type="hidden" name="_VIEWSTATE" value="dDwxNDg50Tk5MzM7dDw7bDxpPDE+Oz47bDxOPDtsPGk8Mz47PjtsPHQ8cDxwPGw8VGV4dDs+02w8Q2hlY2sgRGFOZTs+Pjs+Ozs+Oz4+Oz4+Oz6QlVh6gd6Gbr95VzOdnBWPTkj/8w==" />

   <input name="TextBox1" type="text" value="17.06.2003 7:47:24" id="TextBox1" style="height:20px; width:165px; Z-INDEX:101; LEFT:10рх; POSITION: absolute; TOP:36px" />

   <input type="submit" name="Button1" value="Check Date" id="Button1" style="height:25px; width:104px; Z-INDEX: 102; LEFT: 14px; POSITION: absolute; TOP: 73px" /> 

  </form>

 </body>

</HTML>

В листинге 12.3 демонстрируется, что практически любая прикладная логика может быть сохранена на промежуточном уровне. В следующем разделе описываются способы работы с базой данных с помощью промежуточного уровня. Учтите, что подключение к базе данных и выполнение запроса организованы сложнее, чем проверка введенных данных.

Обработка данных на промежуточном уровне

До сих пор презентационный уровень описывался как визуальное представление приложения для клиента, а промежуточный уровень — как связующее звено (plumbing) между клиентом и основной частью приложения. Теперь пришло время показать роль окончательного уровня n-уровневой технологии, т.е. уровень данных. Обычно уровень данных состоит из базы данных, которая может иметь традиционную реляционную структуру, формат XML или формат файла INI. Далее в примерах этой главы в качестве хранилища данных используется SQL Server 2000.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*