Вступление:
В этой статье мы рассмотрим, как использовать службу 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 для получения данных и их обработки в соответствии с требованиями. Надеюсь, эта статья полезна для читателей.
Спасибо за чтение моей статьи. Если вам нравится мой блог и вы заинтересованы в получении последних обновлений новых статей, просим вас подписаться на один из этих вариантов.