Статьи

Работа с использованием службы ODATA в Windows Phone

01 Инструменты загрузкиСкачать исходный кодСкачать в формате PDFПодписаться на F5debug

Вступление:

В этой статье мы рассмотрим, как использовать службу ODATA в приложении Windows Phone 7. ODATA — это открытый протокол данных. Это объектная модель, используемая для доступа к данным в качестве службы REST, которую можно использовать для выполнения запросов, а также для создания, обновления и удаления данных в удаленной службе данных. Служба ODATA позволяет потребителям запрашивать данные по протоколу http и получать результат в простом формате XML. Обычно для разработки мобильных приложений требуются данные, которые доступны в качестве службы, которую можно использовать и использовать по требованию, где служба ODATA играет основную роль. У нас есть ряд услуг ODATA, доступных на рынке, и мы можем создать нашу услугу ODATA, которая также может использоваться в качестве служб данных WCF.

Согласно веб — сайт OData, Open Data Protocol (OData) представляет собой веб — протокол для выполнения запросов и обновления данных , что обеспечивает возможность разблокировать данные и освободить его из бункеров , которые существуют в современных приложений. OData делает это, применяя и опираясь на веб-технологии, такие как HTTP , протокол публикации Atom (AtomPub) и JSON.обеспечить доступ к информации из различных приложений, служб и магазинов. Протокол возник из опыта внедрения клиентов и серверов AtomPub в различные продукты за последние несколько лет. OData используется для раскрытия и доступа к информации из различных источников, включая, помимо прочего, реляционные базы данных, файловые системы, системы управления контентом и традиционные веб-сайты.

У нас есть полный список общедоступных сервисов ODATA, которые можно использовать с клиентских устройств по ссылке http://www.odata.org/producers . Давайте рассмотрим пошаговый процесс использования службы ODATA в нашем приложении для Windows Phone 7 и узнаем, как его эффективно использовать.

шаги:

Откройте Visual Studio 2010 IDE в режиме администратора и создайте новый проект Silverlight для Windows Phone 7 с допустимым именем проекта, как показано на экране ниже.

2012-02-21 11h53_19

Теперь нам нужно спроектировать нашу страницу XAML, где мы хотим показать наш потребленный сервис ODATA, мы можем использовать Listbox и динамически связывать данные, которые мы потребляем. Скопируйте приведенный ниже код XAML, чтобы получить уникальный дизайн в нашем примере проекта, как показано на экране ниже.

2012-02-21 15h40_06

<Grid x:Name="LayoutRoot" Background="Transparent">
 <Grid.RowDefinitions>
 <RowDefinition Height="Auto"/>
 <RowDefinition Height="*"/>
 </Grid.RowDefinitions>

<!--<span class="hiddenSpellError" pre="">TitlePanel</span> contains the name of the application and page title-->
 <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
 <TextBlock x:Name="ApplicationTitle" Text="F5DEBUG WP7 TUTORIALS" Style="{StaticResource PhoneTextNormalStyle}"/>
 <TextBlock x:Name="PageTitle" Text="OData Service" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
 <!--<span class="hiddenSpellError" pre=""-->StackPanel>

<!--<span class="hiddenSpellError" pre="">ContentPanel</span> - place additional content here-->
 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
 <button>OData" Margin="0,507,0,0" Click="Button_Click"></button>
 <ListBox x:Name="MainListBox"  ItemsSource="{Binding}" Margin="0,6,0,106">
 <ListBox.ItemTemplate>
 <DataTemplate>
 <StackPanel Margin="0,0,0,17" Width="432">
 <TextBlock Text="{Binding Path=Name}" TextWrapping="NoWrap"
 Style="{StaticResource PhoneTextExtraLargeStyle}"/>
 <TextBlock Text="{Binding Path=Description}" TextWrapping="NoWrap"
 Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
 <TextBlock Text="{Binding Path=Url}" TextWrapping="NoWrap" Margin="12,-6,12,0"
 Style="{StaticResource PhoneTextSubtleStyle}"/>
 </StackPanel>
 </DataTemplate>
 </ListBox.ItemTemplate>
 </ListBox>
 </Grid>
 </Grid>

После того, как мы разработали страницу XAML, теперь нам нужно использовать службу ODATA, в этом примере приложения мы будем использовать службу ODATA Telerik Video, которая доступна для общественности. Служба ODATA доступна с использованием URI http://tv.telerik.com/services/odata.svc/ . Чтобы добавить службу ODATA, щелкните правой кнопкой мыши имя проекта и выберите «Добавить ссылку на службу», как показано на экране ниже.
2012-02-21 12h04_08

Нажав на ссылку « Добавить службу», вы увидите всплывающее окно, в котором нам нужно указать URI службы OATA, и нажмите кнопку «Перейти», чтобы открыть службу в Интернете. Как только служба обнаружена, нам нужно изменить пространство имен на определенное пользователем имя ODataTelerik, как показано на экране ниже.

2012-02-21 15h24_54

После успешного добавления ссылки на службу ODATA в проект мы можем увидеть список файлов, добавленных в папку ссылки на службу. Теперь, когда мы готовы к использованию сервиса, наш следующий шаг — написать некоторый код, который будет выполнять необходимый процесс для получения данных из сервиса и отображения их в пользовательском интерфейсе, который мы разработали. Добавьте нижеприведенные 2 пространства имен, которые требуются для использования и получения данных от службы ODATA, как показано на экране ниже.

Код позади:

using System.Data.Services.Client;
 using F5debugWp7ODataConsule.ODataTelerik;

После того как мы добавили 2 вышеупомянутых пространства имен, нам нужно начать с нашего кода для использования сервиса, скопировать приведенный ниже код и добавить его в класс Mainpage. Этот код создает экземпляр ссылки, которую мы добавили в проект, и получает URI службы ODATA, который используется для создания ссылки при использовании службы, как показано в приведенном ниже коде.

2012-02-21 15h27_17

Код позади:

private ODataDataSource TelerikEntity;
 private static string strODataURI = "<a href="http://tv.telerik.com/services/odata.svc/%22;">http://tv.telerik.com/services/odata.svc/";</a>
 private readonly Uri tURI = new Uri(strODataURI);
 private DataServiceCollection<Video> videos;

Теперь в событии нажатия кнопки нам нужно вызвать службу ODATA и получить данные, необходимые для привязки к элементам управления, которые мы разработали в нашем начальном процессе. Как только мы создали экземпляр, мы можем запросить данные из DataServiceCollection, просто используя запрос LINQ, как показано на экране ниже. Просто скопируйте и вставьте приведенный ниже код в событие нажатия кнопки, чтобы перейти дальше.

2012-02-21 15:30 30

Код позади:

private void Button_Click(object sender, RoutedEventArgs e)
 {
 TelerikEntity = new ODataDataSource(tURI);
 videos = new DataServiceCollection<video tabindex="0">(TelerikEntity);</video>

var queryvideo = from vid in TelerikEntity.Videos
 select vid;

videos.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(videos_LoadCompleted);
 videos.LoadAsync(queryvideo);
 }

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

Код позади:

void videos_LoadCompleted(object sender, LoadCompletedEventArgs e)
 {
 if (e.Error == null)
 {
 if (videos.Continuation != null)
 {
 videos.LoadNextPartialSetAsync();
 }
 else
 {
 this.MainListBox.DataContext = videos;
 }
 }
 else
 {
 MessageBox.Show("Error while fetching the data!!!");
 }
 }

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

Код позади:

using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Net;
 using System.Windows;
 using System.Windows.Controls;
 using System.Windows.Documents;
 using System.Windows.Input;
 using System.Windows.Media;
 using System.Windows.Media.Animation;
 using System.Windows.Shapes;
 using Microsoft.Phone.Controls;

using System.Data.Services.Client;
 using F5debugWp7ODataConsule.ODataTelerik;

namespace F5debugWp7ODataConsule
 {
 public partial class MainPage : PhoneApplicationPage
 {
 private ODataDataSource TelerikEntity;
 private static string strODataURI = "<a href="http://tv.telerik.com/services/odata.svc/%22;">http://tv.telerik.com/services/odata.svc/";</a>
 private readonly Uri tURI = new Uri(strODataURI);
 private DataServiceCollection<Video> videos;

// Constructor
 public MainPage()
 {
 InitializeComponent();
 }

private void Button_Click(object sender, RoutedEventArgs e)
 {
 TelerikEntity = new ODataDataSource(tURI);
 videos = new DataServiceCollection<Video>(TelerikEntity);

var queryvideo = from vid in TelerikEntity.Videos
 select vid;

videos.LoadCompleted += new EventHandler<LoadCompletedEventArgs>(videos_LoadCompleted);
 videos.LoadAsync(queryvideo);
 }

void videos_LoadCompleted(object sender, LoadCompletedEventArgs e)
 {
 if (e.Error == null)
 {
 if (videos.Continuation != null)
 {
 videos.LoadNextPartialSetAsync();
 }
 else
 {
 this.MainListBox.DataContext = videos;
 }
 }
 else
 {
 MessageBox.Show("Error while fetching the data!!!");
 }
 }
 }
 }

 

Теперь создайте и выполните приложение, просто нажав клавишу F5 на клавиатуре, и мы увидим ожидаемые результаты, показанные на экранах ниже.

Экраны вывода:

образ

Вывод:

Итак, в этой статье мы увидели, что такое служба ODATA и как использовать службу из приложения Windows Phone 7 для получения данных и их обработки в соответствии с требованиями. Надеюсь, эта статья полезна для читателей.

Спасибо за чтение моей статьи. Если вам нравится мой блог и вы заинтересованы в получении последних обновлений новых статей, просим вас подписаться на один из этих вариантов.