Эта статья была написана в 2002 году и остается одной из наших самых популярных публикаций. Если вы хотите больше узнать о .NET, вы можете найти эту недавнюю статью о комбинировании LESS с ASP.NET очень интересной.
В интернете появился новый игрок на сцене. Он был окружен большим количеством ажиотажа — и даже некоторыми рекламными роликами! По-видимому, эта новая «технология следующего поколения» изменит способ ведения бизнеса в Интернете. Похоже, что в скором времени компании, их приложения или программное обеспечение и любые устройства с подключением к Интернету легко смогут общаться и предоставлять услуги друг другу независимо от платформы или языка. Звучит революционно!
Итак, что именно открывает эти безграничные линии связи? Веб-сервисы, вот что!
Веб-сервисы дают разработчикам возможность использовать четыре открытых веб-стандарта:
- HTTP — протокол передачи гипертекста
Стандартный протокол, используемый через порт 80, который пересекает брандмауэры и отвечает за запрос и передачу данных через Интернет. - SOAP — простой протокол доступа к объектам
Присущий XML протокол, который включает в себя набор правил для описания данных и обработки. Как стандарт, это центральная часть, которая дополняет три других стандарта, упомянутых здесь. - XML — расширяемый язык разметки
Самый распространенный язык разметки, на котором написана вся эта информация. - WSDL — язык описания веб-сервисов
Метод на основе XML, используемый для идентификации веб-служб и их доступа во время выполнения. .NET предоставляет инструмент под названием WSDL.exe, который существенно упрощает создание веб-службы XML в виде файла XML. Он содержит все методы и инструкции, которые имеет веб-служба, и, как правило, использует SOAP по умолчанию.
В этой статье вы узнаете, как создать и использовать управляемый данными веб-сервис .NET XML за 5 быстрых и простых шагов!
Я предполагаю, что вы хорошо знакомы с общим доступом к данным .NET, элементами управления веб-сервером, такой сеткой данных и некоторыми концепциями объектно-ориентированного программирования. Если нет, не волнуйтесь слишком сильно. Если вы завершите примеры и просмотрите результаты, у вас не должно возникнуть проблем с отслеживанием причин и следствий того, что влечет за собой этот учебник.
До .NET существовали и другие альтернативы, которые можно было использовать для доступа к веб-службе, например компонент Microsoft MSXML, который позволял вам взаимодействовать с данной веб-службой через HTTP POST. Однако этот процесс, хотя и приемлемый, просто не является .NET.
Хорошо, начнем!
Шаг 1 — Создайте веб-сервис
Сначала мы создадим функцию или метод Web-сервиса, который вы будете вызывать (или «выставлять») через Интернет, как любой объектно-ориентированный класс. Разница в том, что в этом случае нам нужно будет включить и импортировать все необходимые пространства имен, синтаксис и атрибуты веб-служб, а также наши пространства имен данных. Поскольку в этой статье используется C #, также будут показаны все важные различия, касающиеся VB.
Итак, скопируйте приведенный ниже код в файл с именем sources.asmx. Сохраните его в папку Inetpub / wwwroot, а затем запустите его в браузере, используя http: //localhost/suppliers.asmx. Вы увидите список описаний веб-служб, включая имя веб-службы и открытый метод.
Нажав на ссылку открытого метода, вы увидите три основных протокола, доступных для вашего использования. Как вы знаете, файл с расширением .asmx является фактическим файлом веб-службы, который позволяет среде выполнения ASP.NET возвращать все подходящие методы и информацию веб-службы.
<%@ WebService Language="C#" Class="GetInfo" %>
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Services;
[WebService(Description="My Suppliers List Web Service")]
public class GetInfo : WebService
{
[WebMethod(BufferResponse=true)]
public DataSet ShowSuppliers (string str)
{
SqlConnection dbConnection = new SqlConnection("server=(local);
uid=sa;pwd=;database=Northwind;");
SqlDataAdapter objCommand = new SqlDataAdapter("select
ContactName, CompanyName, City, Phone from Suppliers
where Country = '" + str + "' order by ContactName
asc", dbConnection);
DataSet DS = new DataSet();
objCommand.Fill(DS);
return DS;
dbConnection.Close();
dbConnection = null;
}
}
Директива <%@ WebService Language="C#" Class="GetInfo" %>