• Microsoft .NET
  • ASP.NET
  • Создание динамического пользовательского интерфейса ASP.NET, управляемого данными

Microsoft ASP.NET AJAX: получение данных с сервера при помощи веб-сервисов

ОГЛАВЛЕНИЕ

Для разработки интерактивных веб-приложений Microsoft ASP.NET AJAX Framework предоставляет две модели, основанные  на клиенте (клиентская) и на сервере (серверная).  С моделью, основанной на клиенте, разработчики используют стандартные элементы управления ASP.NET - GridView, Button, TextBox и т.д., но при этом располагают их в пределах элемента управления UpdatePanel. Элемент UpdatePanel автоматически преобразовывает постбэки в частичные страничные постбэки и незаметно обновляет внешний вид страницы изменениями, сделанными кодом серверной стороны. С другой стороны, с моделью, основанной на клиенте, разработчик ответственен за написание JavaScript, который выполняет асинхронные вызовы к серверу, также как и скрипт, который обновляет страницу по запросу.

Модель, основанная на сервере, легче в использовании и более знакома разработчикам, имеющим опыт работы с элементами управления ASP.NET, при этом не использующим   JavaScript и HTML. Тем не менее, эта легкость в использовании дается высокой ценой: серверная модель разработки подразумевает кочевание значительного объема данных между клиентом и сервером при каждом частичном постбэке. Вкратце, UpdatePanel посылает состояние внешнего вида страницы при частичном постбэке и получает данный вид (наверняка, модифицированный) обратно в качестве ответа, независимо от того, необходимо ли оно для выполнения логики серверной стороны. Более того, в качестве ответа возвращено полностью обработанное содержимое UpdatePanel, даже если была модифицирована совсем небольшая часть UpdatePanel.

Клиентская модель разработки веб-приложений подразумевает больше работы, чем в случае с моделью, основанной на сервере, а также знание HTML, JavaScript и Document Object Model (DOM). Но использование данной модели может значительно уменьшить количество информации, обмениваемой между клиентом и сервером во время частичного постбэка. В данной статье мы рассмотрим одну из техник получения данных серверной стороны в модели, основанной на клиенте. Читайте далее, чтобы узнать больше об этом!

Основы веб-сервисов

Веб-сервисы (Web Services) - это механизм, благодаря которому два компьютера могут взаимодействовать через сеть. Веб-сервисы чаще всего реализованы при помощи модели клиент/сервер, где сервер производит веб-сервис, который затем будет использован клиентом. К примеру, веб-сайт о погоде может предоставить веб-сервис, который возвращает текущие погодные условия определенного города. Клиентское приложение, будь это настольное приложение или другой веб-сайт, может вызвать данные веб-сервиса, передавая интересующий город. Данный сайт о погоде должен ответить, возвратив текущие погодные условия города, что затем можно отобразить клиентское приложение. Вкратце, веб-сервисы (Web Services) позволяют осуществить взаимодействие между компьютерами, используя стандартные протоколы транспортировки и кодировки.

Многие веб-сервисы посылают и принимают данные, используя SOAP, что является протоколом, основанным на XML, служащим для кодировки сообщений. К примеру, когда клиентское приложение вызывает веб-сервис погоды, оно должно сделать это, отослав сообщение, как это сделано в следующем коде (т.е. ссылка веб-сервиса, как www.weathersite.com/GetWeatherReport.asmx):
<soap:Envelope>
   <soap:Body>
      <GetWeatherReport>
         <CityName>San Diego</CityName>
      </GetWeatherReport>
   </soap:Body>
</soap:Envelope>
Веб-сервис должен ответить, послав текущие погодные условия для города San Diego, закодированные в сообщении SOAP:
<soap:Envelope>
   <soap:Body>
      <GetWeatherReportResponse>
         <Conditions>Cloudy</Conditions>
         <Temperature>56</Temperature>
      </GetWeatherReportResponse>
   </soap:Body>
</soap:Envelope>
Создание и использование веб-сервисов в ASP.NET очень легко, поскольку .NET Framework обрабатывает всю работу нижних уровней, такую, как создание, отсылка, принятие и анализ сообщений SOAP. Чтобы создать веб-сервис, вам всего лишь необходимо добавить новый файл веб-сервиса к проекту вашего веб-сайта. Это создаст класс, где вы можете указать, какие методы будут доступны при помощи веб-сервиса. Аналогично, при использовании веб-сервиса из приложения, вы должны всего лишь сослаться на веб-сервис, и Visual Studio автоматически создаст прокси-класс (proxy class), который будет иметь такой же интерфейс, как и веб-сервис. Чтобы выбрать веб-сервис в клиентском приложении, просто вызовите соответствующий метод в прокси-классе.