Вступление:
В этой статье мы рассмотрим, как использовать службу 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 с допустимым именем проекта, как показано на экране ниже.
Теперь нам нужно спроектировать нашу страницу XAML, где мы хотим показать наш потребленный сервис ODATA, мы можем использовать Listbox и динамически связывать данные, которые мы потребляем. Скопируйте приведенный ниже код XAML, чтобы получить уникальный дизайн в нашем примере проекта, как показано на экране ниже.
<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, щелкните правой кнопкой мыши имя проекта и выберите «Добавить ссылку на службу», как показано на экране ниже.
Нажав на ссылку « Добавить службу», вы увидите всплывающее окно, в котором нам нужно указать URI службы OATA, и нажмите кнопку «Перейти», чтобы открыть службу в Интернете. Как только служба обнаружена, нам нужно изменить пространство имен на определенное пользователем имя ODataTelerik, как показано на экране ниже.
После успешного добавления ссылки на службу ODATA в проект мы можем увидеть список файлов, добавленных в папку ссылки на службу. Теперь, когда мы готовы к использованию сервиса, наш следующий шаг — написать некоторый код, который будет выполнять необходимый процесс для получения данных из сервиса и отображения их в пользовательском интерфейсе, который мы разработали. Добавьте нижеприведенные 2 пространства имен, которые требуются для использования и получения данных от службы ODATA, как показано на экране ниже.
Код позади:
using System.Data.Services.Client; using F5debugWp7ODataConsule.ODataTelerik;
После того как мы добавили 2 вышеупомянутых пространства имен, нам нужно начать с нашего кода для использования сервиса, скопировать приведенный ниже код и добавить его в класс Mainpage. Этот код создает экземпляр ссылки, которую мы добавили в проект, и получает URI службы ODATA, который используется для создания ссылки при использовании службы, как показано в приведенном ниже коде.
Код позади:
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, как показано на экране ниже. Просто скопируйте и вставьте приведенный ниже код в событие нажатия кнопки, чтобы перейти дальше.
Код позади:
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 для получения данных и их обработки в соответствии с требованиями. Надеюсь, эта статья полезна для читателей.
Спасибо за чтение моей статьи. Если вам нравится мой блог и вы заинтересованы в получении последних обновлений новых статей, просим вас подписаться на один из этих вариантов.










