Книга: Обработка баз данных на Visual Basic®.NET

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

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

В листинге 11.1 из главы 11, "Web-формы: приложения на основе ASP.NET для работы с базами данных", показан простой пример использования промежуточного уровня для подключения к базе данных, выполнения запроса и возвращения объекта в виде HTML-таблицы. Этот код никак не влияет на возвращаемые данные, а только отображает их. На самом деле запрос выполняется в базе данных. В листинге 12.4 повторяется код подпрограммы ShowCustomers из листинга 11.5, который в следующем примере используется в другом контексте.

ЛИСТИНГ 12.4. Код подпрограммы ShowCustomers

Private Sub ShowCustomers()
 ' Это простой пример использования функции,
 ' которая извлекает данные из таблицы tblCustomer
 ' и отображает их.
 ' Инициализация объекта подключения строкой
 ' подключения.
 Dim conn As New SqlConnection (connString)
 ' Затем инициализация объекта-команды
 ' строкой выполняемой команды SQL.
 Dim cmd As New SqlCommand("exec sp_GetCustomersOrders", conn)
 conn.Open()
 Dim dReader As SqlDataReader = _
  cmd.ExecuteReader(CommandBehavior.CloseConnection)
 While dReader.Read
  Response.Write(dReader.GetString(0))
  Response.Write(" " & dReader.GetString(1))
  Response.Write(" "& dReader.GetDateTime(2))
  Response.Write("<BR>")
 End While
 dReader.Close()
 conn.Close ()
End Sub

Обратите внимание на использование хранимой процедуры sp_GetCustomeOrders, которая является типичным примером размещения прикладной логики на уровне данных приложения. Это сделано просто потому, что кратчайшее расстояние между двумя точками определяется прямой линией. Код, расположенный на сервере баз данных, компилируется для наиболее эффективного выполнения сервером. Поэтому в результате хранимая процедура, которая располагается на уровне данных, будет выполнена быстрее, чем хранимая процедура, которая располагается на промежуточном уровне.

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

Оглавление книги


Генерация: 0.125. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз