Статьи

Создание клиента Twitpic с использованием ASP.NET и OData

Open Data Protocol (OData) — один из новых HTTP-протоколов для обновления и запроса данных. Это простой протокол, использующий другие протоколы, такие как HTTP , ATOM и JSON . Одним из сайтов, который позволяет использовать свои данные по протоколу OData, является Twitpic — сервис изображений для Twitter . В этой публикации я покажу вам, как создать простой клиент Twitpic с использованием ASP.NET .

Исходный код

Вы можете найти исходный код этого примера в репозитории экспериментов Visual Studio 2010 на GitHub.

Исходный код @ GitHub Репозиторий исходного кода
GitHub

Простой редактор изображений принадлежит решению Experiment.OData , имя проекта — Experiment.OData.TwitPicClient .

Образец заявки

Мой пример приложения прост. У него есть несколько имен пользователей, которые пользователь может выбрать. Существует также текстовое поле для фильтрации изображений. Если пользователь вставляет что-то в текстовое поле, то строка, вставленная в текстовое поле, ищется в части сообщения на рисунках. Результаты показаны как на следующем скриншоте.

Мой твитпик клиент
Нажмите на изображение, чтобы увидеть его в оригинальном размере.

Максимальное количество изображений, возвращаемых одним запросом, ограничено десятью. Вы можете изменить лимит или удалить его. Слышно просто показать вам, как можно выполнять запросы.

Опрос Twitpic

Я написал это приложение для Visual Studio 2010. Чтобы получить там данные Twitpic, я ничего особенного не сделал — просто добавил ссылку на службу Twitpic OData, которая находится по адресу http://odata.twitpic.com/ . Visual Studio понимает формат и генерирует все классы для вас, чтобы вы могли сразу начать использовать сервис.

Теперь давайте посмотрим, как запросить службу OData. Это метод Page_Load моей страницы по умолчанию. Обратите внимание, как я построил пошаговый запрос LINQ здесь

protected override void OnLoad(EventArgs e)
{
var uri = new Uri("http://odata.twitpic.com/");

var user = Request.QueryString["user"];
if (string.IsNullOrWhiteSpace(user))
{
user = "gpeipman";
}

var client = new TwitpicData.TwitpicData(uri);
client.IgnoreMissingProperties = false;
client.IgnoreResourceNotFoundException = false;

var images = from u in client.Users
from i in u.Images
where u.UserName == user
select i;

if (!string.IsNullOrWhiteSpace(filterField.Text))
{
var searchString = filterField.Text.ToLower();
images = from i in images
where i.Message.ToLower().Contains(searchString)
select i;
}
images = images.OrderByDescending(i => i.Timestamp);

picsByLabel.Text = user;
imagesRepeater.DataSource = images.Take(10);
imagesRepeater.DataBind();
}

Мой запрос состоит из следующих шагов:

  • создать запрос, объединяющий пользователя и изображения, и добавить условие для имени пользователя,
  • если текстовое поле поиска было заполнено, добавьте условие поиска к запросу,
  • сортировать данные по отметке времени в порядке убывания,
  • сделать запрос, чтобы вернуть только первые десять результатов.

Теперь давайте посмотрим на запрос OData, который отправляется в службу Twitpic OData. Вы можете нажать на изображение, чтобы увидеть его в оригинальном размере.

Мой запрос OData в Fiddler2
Нажмите на изображение, чтобы увидеть его в оригинальном размере.

Это запрос, который наш сервисный клиент отправил в сервис OData (я искал белград по моим фотографиям):

/ Users ( ‘gpeipman’) / Изображения ()? $ = фильтр substringof ( ‘белград’, ToLower (Message)) & $ OrderBy = Отметка% 20desc & $ топ = 10

Если вы посмотрите на строку запроса, то увидите, что все условия, которые я установил через LINQ, представлены в этом URL. URL не очень короткий, но имеет простой синтаксис и легко читается. Ответом на наш запрос является чистый XML, который отображается на нашу объектную модель при получении ответа. Там нет ничего сложного, как вы можете видеть.

Вывод

Работать с нашим клиентом Twitpic было чрезвычайно просто. Мы не сделали ничего особенного — просто добавили ссылку на сервис и написали один простой запрос LINQ, который мы дали ретранслятору, который показывает данные. Как мы увидели из мониторинга отчета прокси-сервера, тогда ответ немного грязный, но все же простой XML, который мы можем прочитать, используя некоторую библиотеку XML, если у нас нет лучшего варианта. Вы можете найти больше услуг OData на странице производителей OData .