Выбрать главу

 End Sub

 ' Переопределение метода Dispose для очистки списка компонентов.

 Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)

  If disposing Then

   If Not (components Is Nothing) Then

    components.Dispose()

   End If

  End If

  MyBase.Dispose(disposing)

 End Sub

 ' Код, созданный конструктором Web-форм.

 Private components As System.ComponentModel.IContainer

 ' ЗАМЕЧАНИЕ: Код, созданный конструктором компонентов.

 ' Его можно изменять только с помощью конструктора

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

 Friend WithEvents Label1 As System.Windows.Forms.Label

 Friend WithEvents Button1 As System.Windows.Forms.Button

 <System.Diagnostics.DebuggerStepThrough()> _

  Private Sub InitializeComponent()

  Me.Label1 = New System.Windows.Forms.Label()

  Me.Button1 = New System.Windows.Forms.Button()

  Me.SuspendLayout()

  '

  ' Label1

  '

  Me.Label1.Location = New System.Drawing.Point(8, 16)

  Me.Label1.Name = "Label1"

  Me.Label1.Size = New System.Drawing.Size(248, 16)

  Me.Label1.Tablndex = 0

  Me.Label1.Text = "Label1"

  '

  ' Button1

  '

  Me.Button1.Location = New System.Drawing.Point(264, 8)

  Me.Button1.Next = "Button1"

  Me.Button1.Size = New System.Drawing.Size(72, 24)

  Me.Button1.TabIndex = 1

  Me.Button1.Text = "Test It!"

  '

  ' Form1

  '

  Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)

  Me.ClientSize = New System.Drawing.Size(344, 54)

  Me.Controls.AddRange(New System.Windows.Forms.Control() _

   {Me.Button1, Me.Label1})

  Me.Name = "Form1"

  Me.Text = "Form1"

  Me.ResumeLayout(False)

 End Sub

#End Region

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

  ByVal е As System.EventArgs) Handles Button1.Click

  Dim GRC As New Novelty1.GetRowCount()

  Label1.Text = "There are " & GRC.GetRowCount.ToString _

   & " rows in the table."

  GRC.Dispose ()

 End Sub

End Class

В код, созданный конструктором форм, добавлены только объекты Label1 и Button1. Текст надписи будет задан только во время выполнения приложения. Теперь можно приступить к созданию Web-службы.

Доступ к объектам с помощью Web-служб

Итак, мы приступаем к работе на совершенно новом уровне, т.е. с использованием Web-служб. С самого начала Web-среда рассматривалась как способ передачи данных между двумя точками. Именно эта исходная концепция способствовала развитию и популяризации Web-среды. Однако она обладала несколькими ограничениями и только недавно консорциум World Wide Web Consortium (W3C) начал реализовывать стандарты технологии обмена данными. Реализация Web-служб на платформе .NET основана именно на этих стандартах и использует язык XML для идентификации и передачи данных.

Допустим, что компания Jones Novelties, Incorporated решила предоставить другим компаниям быстрый доступ к своим данным без необходимости создания пользовательского интерфейса. Для решения этой задачи прекрасно подходят Web-службы.

Прежде чем приступить к решению этой бизнес-ситуации, следует привести основные сведения о Web-службах. Читатели с опытом создания Web-служб могут пропустить остаток этого раздела без ущерба для понимания остального материала или освежить свои знания, бегло познакомившись с ним.

По определению Web-службы – это объекты, которые обмениваются данными с помощью протоколов Internet, например HTTP. Причем для определения данных или набора выполняемых сервером инструкций используется XML. Эти инструкции также могут возвращать данные. Например, для включения нового пользователя с фамилией Doe и именем John в базу данных можно послать некому воображаемому Web-серверу www.someserver.com следующий запрос:

http://www.someserver.com/sevices/dataserver.asmx?op=AddUserToDB&FName= John&LName=Doe

В данном примере используется протокол HTTP и запрос GET для вызова службы dataserver, которая имеет функцию AddUserToDB с двумя параметрами – FName и LName. Было бы просто замечательно, если бы у нас был способ доступа к Web-службе и информирования о выполняемых действиях. К счастью, Microsoft вместе с несколькими другими компаниями предусмотрела эту возможность и создала язык определения Web-служб Web Services Description Language, или WSDL (эта аббревиатура произносится как английское словосочетание wiz-dull). WSDL способен анализировать код Web-службы и находить ту информацию, которую нужно сообщить пользователям (людям или машинам) о данной Web-службе и выполняемых ею функциях. Пример такой функции приводится далее, в разделе о программном способе доступа к Web-службе. 

Как уже отмечалось, доступ к Web-службе осуществляется с помощью HTTP-протокола (методы GET и POST). Основное различие между ними заключается в том, что при использовании GET параметры запроса передаются в URL-указателе, а при использовании POST – инкапсулируются внутри самого запроса.

Кроме того, для взаимодействия Web-служб разработан протокол объектного доступа Simple Object Access Protocol (SOAP), который позволяет Web-серверам обмениваться сообщениями с инструкциями запросов, заключенными в конверт (envelope). SOAP-конверт имеет формат XML, как показано в приведенном ниже примере.