Итак, мы рассмотрели общие моменты по проектированию и построению баз данных. В этом разделе мы будем коснемся вопросов работы с внешними ресурсами-сервисами через различные API.

Обычно мы используем API для получения каких-либо данных извне (например, получить курс рубля, или получения списка населенных пунктов), реже – для внесения изменений (регистрация где-то, оформление заказа и т.д.).

Для API чаще всего используется один из 2 форматов: XML или JSON.

Вам нужно знать их оба.  XML более распространенный. Работать с ним можно через Xpath. JSON более гибкий и удобный, работать с ним лучше через JS (это нативный формат для JS). JSON гораздо компактнее, чем XML.

Отдельный случай – это использование веб сервиса, когда вам предоставляется объектная модель с удаленного сервера (в этом случае используется XML протокол SOAP).

Для подключения такого веб сервиса нужно выполнить в SolutionExplorer команду Add Web Reference и указать URL адрес этого сервиса.

Для просмотра методов сервиса вы можете указать URL этого сервиса просто в браузере, и там вы найдете методы сервиса, их краткое описание, а также у вас будет возможность их попробовать в деле. Итак важные моменты:

  1. Научитесь обрабатывать приходящий JSON и XML. JSON можно десериализовать с помощью JavaScriptSerializer + работать с ним как с объектами Dictionary<string, object>. Обработка XML происходит через загрузку в XMLDocument с дальнейшей обработкой через Xpath или другие средства. При использовании внешнего API разумно выделить его в отдельный класс, чтобы в дальнейшем можно было легко использовать этот API в другом проекте.
  2. Скорость отклика. Если вам нужна хорошая производительность, а сервис работает относительно медленно, то используйте кеширование вывода сервиса. Это снизит нагрузку на сервис и позволит выдавать данные пользователю более оперативно.
  3. По возможности грузите информацию из сервисов асинхронно через Ajax – это также субъективно ускоряет процесс загрузки для пользователя. Этот прием часто используется для работы туристических порталов, когда подгружается информация о турах. Все настройки, связанные с сервисом желательно выносить в настройки – таким образом администратор системы сможет в случае необходимости переключить параметры сервиса, не привлекая разработчика к этому. Настройки по сервисам лучше выделять в отдельную вкладку, чтобы случайно не вывести неосторожными действиями работу сервиса из строя.
  4. Не рассматривайте всерьез проекты, основанные на постоянном парсинге других сервисов. На мой взгляд, в долгосрочной перспективе это ненадежная модель. Парсинг можно использовать для начальной загрузки каталога, но никак не для постоянного обновления. Для парсинга можно использовать библиотеку HtmlAgilityPack (C#). У нас есть дополнительная оболочка под эту библиотеку, которая упрощает решение некоторых задач по парсингу.

Далее рассмотрим принцип CMS.