Читаем Программирование мобильных устройств на платформе .NET Compact Framework полностью

В листинге 15.9 приведен пример неэффективной организации работы с Web-службой с использованием многократных запросов и ответов. В листинге 15.10 представлен пример пакетной организации того же диалога, когда вся необходимая обработка осуществляется при помощи одного цикла "запрос/ответ". При любом удобном случае старайтесь уменьшать количество запросов, объединяя несколько мелких запросов в один более емкий.

Листинг 15.9. Неэффективная организация диалога с Web-службой, в которой используется множество вызовов

//--------------------------

//Создать и обработать заказ

//--------------------------


//0. Установить связь

int sessionID = someWebService.LogOn(userCredentials);


//1. Вызвать Web-службу и создать новый заказ

int orderID = someWebService.CreateNewOrder(sessionID, userInfo, productInfo);


//2. Вызвать Web-службу и передать информацию о платеже

someWebService.ConfirmPayment(sessionID, orderID, paymentInfo);


//3. Вызвать Web-службу и передать информацию о доставке

someWebService.ConfirmShipping(sessionID, orderID, shippingAddress);


//4. Вызвать Web-службу и завершить оформление заказа

someWebService.FinalizeOrder(sessionID, orderID);

Листинг 15.10. Группирование запросов в одном вызове Web-службы

//----------------------------------------------------------

//Создать и обработать заказ посредством группового запроса,

//включающего:

// 0. Начало связи

// 1. Создание нового заказа

// 2. Подтверждение платежа

// 3. Подтверждение доставки

// 4. Завершение оформления заказа

//-----------------------------------------------------------


//Сделать все за один раз

someWebService.BatchCreateOrder(userCredentials, userInfo, paymentInfo, shippingAddress);

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

Листинг 15.11. Код для загрузки файла с Web-сервера

//-----------------------------------------------------------

//Осуществляет синхронную загрузку файла с Web-сервера

//и сохраняет его в локальной файловой системе

// [in] httpWhereFrom: URL-адрес файла

// (например, "http://someserver/somefile.jpg")

// [in] filenameWhereTo: Место, куда необходимо записать файл

// (например, "\\localfile.jpg")

//-----------------------------------------------------------

public void downloadFileToLocalStore(string httpWhereFrom, string filenameWhereTo) {

 System.IO.FileStream myFileStream = null;

 System.IO.Stream myHTTPResponseStream = null;

 System.Net.WebRequest myWebRequest = null;

 System.Net.WebResponse myWebResponse = null;


 //Если файл, который мы хотим записать, уже существует, удалить его

 if (System.IO.File.Exists(filenameWhereTo) == true) {

  System.IO.File.Delete(filenameWhereTo);

 }

 try {

  //Создать Web-запрос

  myWebRequest = System.Net.HttpWebRequest.Create(httpWhereFrom);


  //Получить ответ

  myWebResponse = myWebRequest.GetResponse;


  //Получить поток для ответа

Перейти на страницу:

Похожие книги

Программист-прагматик. Путь от подмастерья к мастеру
Программист-прагматик. Путь от подмастерья к мастеру

Находясь на переднем крае программирования, книга "Программист-прагматик. Путь от подмастерья к мастеру" абстрагируется от всевозрастающей специализации и технических тонкостей разработки программ на современном уровне, чтобы исследовать суть процесса – требования к работоспособной и поддерживаемой программе, приводящей пользователей в восторг. Книга охватывает различные темы – от личной ответственности и карьерного роста до архитектурных методик, придающих программам гибкость и простоту в адаптации и повторном использовании.Прочитав эту книгу, вы научитесь:Бороться с недостатками программного обеспечения;Избегать ловушек, связанных с дублированием знания;Создавать гибкие, динамичные и адаптируемые программы;Избегать программирования в расчете на совпадение;Защищать вашу программу при помощи контрактов, утверждений и исключений;Собирать реальные требования;Осуществлять безжалостное и эффективное тестирование;Приводить в восторг ваших пользователей;Формировать команды из программистов-прагматиков и с помощью автоматизации делать ваши разработки более точными.

Эндрю Хант , Дэвид Томас , А. Алексашин

Программирование / Книги по IT
Разработка ядра Linux
Разработка ядра Linux

В книге детально рассмотрены основные подсистемы и функции ядер Linux серии 2.6, включая особенности построения, реализации и соответствующие программны интерфейсы. Рассмотренные вопросы включают: планирование выполнения процессов, управление временем и таймеры ядра, интерфейс системных вызовов, особенности адресации и управления памятью, страничный кэш, подсистему VFS, механизмы синхронизации, проблемы переносимости и особенности отладки. Автор книги является разработчиком основных подсистем ядра Linux. Ядро рассматривается как с теоретической, так и с прикладной точек зрения, что может привлечь читателей различными интересами и потребностями.Книга может быть рекомендована как начинающим, так и опытным разработчикам программного обеспечения, а также в качестве дополнительных учебных материалов.

Роберт Лав

Программирование, программы, базы данных / Программирование / Книги по IT