Для разработки интерактивных веб-приложений 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, служащим для кодировки сообщений. К примеру, когда клиентское приложение вызывает веб-сервис погоды, оно должно сделать это, отослав сообщение, как это сделано в следующем коде (т.е. ссылка веб-сервиса, как wwwweathersite.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), который будет иметь такой же интерфейс, как и веб-сервис. Чтобы выбрать веб-сервис в клиентском приложении, просто вызовите соответствующий метод в прокси-классе.