Чтение данных SQL Server через интернет
Веб-службы ASP.NET
Как и конечные точки HTTP, веб-служба ASP.NET также использует формат WSDL, но в качестве службы представляет не хранимую процедуру, а логику приложения, написанную в виде компонентов.
Веб-службы ASP.NET размещаются и выполняются на сервере Microsoft Internet Information Services (IIS). Чтобы просмотреть код этого раздела полностью, откройте файл Solution1.sln в папке 3tiers в файлах примеров. Отдельные компоненты находятся во вложенных папках.
Чтобы реализовать доступ к SQL Server через интернет, но с подключением через веб-службу ASP.NET в среднем уровне, выполните следующие действия:
Создаем компонент доступа к данным и интерфейс службы
- Начните с написания компонента доступа к данным для подключения к SQL Server. Откройте Visual Studio 2005 и создайте новый проект, выбрав шаблон Class Library (Библиотека классов) в окне New Project (Создание проекта). Дайте проекту имя DepartmentDataAccess, как показано на рисунке, и нажмите кнопку ОК,
- Замените программный код в файле Class1.vb следующим кодом (не забудьте изменить строку соединения, чтобы данные соответствовали вашей среде). Этот пример находится в папке 3tiers\DepartmentDataAccess.
Imports System.Data.SqlClient Public Class DepartmentDataAccess Public Function GetAllDepartments() As DataSet Dim result As New DataSet Dim connectionString As String Dim selectCommand As String connectionString = "server=(local);database=AdventureWorks;uid=sa" selectCommand = "SELECT * FROM HumanResources.Department" Dim connection As New SqlConnection(connectionString) Dim adapter As New SqlDataAdapter(selectCommand, connection) adapter.Fill(result) Return result End Function End Class
Класс DepartmentDataAccess, в качестве примера, реализует единственный метод, который называется GetAllDepartments. Этот метод возвращает объект DataSet, который содержит все отделы компании Adventure Works.
- В меню Build (Построение) в окне Visual Studio 2005 выберите Build (Построить) DepartmentDataAccess. Visual Studio 2005 скомпилирует проект в сборку. Эта сборка представляет уровень доступа к данным.
- Давайте продолжим и создадим служебный интерфейс при помощи проекта веб-службы ASP.NET. В Visual Studio 2005 выберите из меню File (Файл) Add, New Website (Добавить, Новая веб-страница). Этот пример находится среди файлов примеров в папке 3tiers\webservice.
- Выберите шаблон ASP.NET Web Service (Веб-служба ASP.NET) в окне New Project (Создание проекта), как показано ниже. Оставьте для остальных параметров значения по умолчанию. Нажмите кнопку ОК.
- В окне Solution Explorer (Обозреватель решений) щелкните правой кнопкой мыши проект Web Service (Веб-служба) и выберите из контекстного меню команду Add Reference (Добавить ссылку). (Если Обозреватель решений не отображается, можно выбрать соответствующую команду в меню View (Вид).)
- В окне Add Reference (Добавление ссылки), которое показано ниже, перейдите на вкладку Projects (Проекты), выберите проект DepartmentDataAccess, а затем нажмите кнопку ОК,
- Под функцией HelloWorld, созданной шаблоном Visual Studio, введите следующий код:
<WebMethod()> _ Public Function GetDepartments() As System.Data.DataSet Dim departmentsDL As New DepartmentDataAccess.DepartmentDataAccess() Return departmentsDL.GetAllDepartments() End Function
- Нажмите клавишу F5, чтобы скомпилировать проект веб-службы ASP.NET и запустить его. Если Visual Studio выведет запрос о запуске отладки, выберите параметр Run Without Debugging (Запуск без отладки), как показано на рисунке:
- Internet Explorer откроет веб-страницу, на которой можно протестировать веб-службу, как показано на следующем рисунке: Выберите службу GetDepartments.
- Internet Explorer перейдет на страницу GetDepartments, показанную на рисунке. Нажмите кнопку Invoke, чтобы выполнить веб-службу.
- После вызова веб-службы код ASP.NET вызывает компонент доступа к данным, извлекает результаты в виде набора данных и, наконец, трансформирует весь ответ в формат XML:
Конечно, клиентское приложение не будет выполнять веб-службу с помощью той же пробной веб-страницы, которую мы с вами только что использовали. Чтобы написать клиентское приложение, которое будет потребителем веб-службы, можно выполнить те же действия, которые были описаны ранее в разделе "Создаем ссылку на конечную точку HTTP из клиентского приложения".