Чтение онлайн

на главную

Жанры

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

Салмре Иво

Шрифт:

 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;

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

myHTTPResponseStream = myWebResponse.GetResponseStream;

//Создать локальный файл, в который необходимо направить поток ответа

myFileStream = System.IO.File.OpenWrite(filenameWhereTo);

//Этот размер буфера является настраиваемым

const int buffer_length = 4000;

byte [] byteBuffer = new byte[buffer_length];

int bytesIn;

//Считать файл и направить поток данных в локальный файл

do {

//Считать данные

bytesIn = myHTTPResponseStream.Read(byteBuffer, 0, buffer_length);

//Записать данные

if (bytesIn != 0) {

myFileStream.Write(byteBuffer, 0, bytesIn);

}

} while (bytesIn != 0);

 } catch (Exception myException) //Сбой при загрузке!

 {

//Что-то случилось. Освободить ресурс

attemptCleanup_ThrowNoExceptions(myFileStream, myHTTPResponseStream, myWebResponse);

//Теперь, когда ресурс освобожден, повторно сгенерируем исключение,

//чтобы сообщить приложению о том, что произошел сбой!

throw myException;

 }

 //Загрузка прошла успешно!

 //Закрыть все ресурсы

 try {

//Стандартная процедура закрытия ресурсов

myFileStream.Close;

myFileStream = null;

myHTTPResponseStream.Close;

myHTTPResponseStream = null;

myWebResponse.Close;

myWebResponse = null;

 } catch (Exception myException) //Сбой в процессе закрытия ресурса!

 {

//Что-то случилось. Освободить ресурс

attemptCleanup_ThrowNoExceptions(myFileStream, myHTTPResponseStream, myWebResponse);

//Теперь, когда ресурс освобожден, повторно сгенерируем исключение,

//чтобы сообщить приложению о том, что произошел сбой!

throw myException;

 }

 //Успешное выполнение!

}

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

//Пытается
закрыть и освободить все объекты

//Перехватывает любое вырабатываемое исключение.

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

void attemptCleanup_ThrowNoExceptions(

 System.IO.FileStream myFileStream,

 System.IO.Stream myHTTPResponseStream,

 System.Net.WebResponse myWebResponse) {

 if (myFileStream != null) {

try {

myFileStream.Close;

} catch {} //He выполнять никаких действий.

 }

 if (myHTTPResponseStream != null) {

try {

myHTTPResponseStream.Close;

} catch {} //He выполнять никаких действий.

 }

 if (myWebResponse != null) {

try {

myWebResponse.Close;

} catch {} //He выполнять никаких действий.

 }

} //конец функции

При работе с неоднородными сетевыми топологиями могут возникать трудности

Настольные компьютеры и серверы работают в условиях сравнительно стабильных сетевых топологий, независимо от того, работают они хорошо или плохо, их поведение характеризуется относительным постоянством. Отчасти это объясняется тем, что сети на основе настольных компьютеров существуют уже давно, и в этой области накоплен большой опыт, а отчасти просто тем, что отдельные узлы сети перемещаются сравнительно редко. Некоторые изменения в условиях работы могут чувствоваться при подключении лэптопов к различным участкам сетей Wi-Fi, однако, поскольку технология Wi-Fi призвана имитировать проводные соединения, эти изменения не очень заметны; некоторые наблюдаемые отличия могут объясняться различиями в ширине полосы пропускания, настройках прокси-серверов и конфигурационных параметров безопасности. Использование сетей мобильной телефонной связи для передачи данных может привнести дополнительные сложности, обусловленные уменьшением полосы пропускания и снижением надежности сети. Мобильные устройства, подключающееся к различным местным сетям операторов мобильной связи еще более разнообразят и усложняют результирующую картину. Используя надежно тестированные и повсеместно поддерживаемые Web-протоколы, Web-службы могут быть полезными при абстрагировании многих деталей сетей передачи данных, однако имеется несколько факторов, о которых вы должны всегда помнить, если ваше мобильное приложение предназначено для работы в широком диапазоне сетей различных типов:

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

Поделиться:
Популярные книги

Измена. За что ты так со мной

Дали Мила
1. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. За что ты так со мной

Неудержимый. Книга II

Боярский Андрей
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга II

Большие дела

Ромов Дмитрий
7. Цеховик
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Большие дела

Эксклюзив

Юнина Наталья
Любовные романы:
современные любовные романы
7.00
рейтинг книги
Эксклюзив

И только смерть разлучит нас

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
И только смерть разлучит нас

Черкес. Дебют двойного агента в Стамбуле

Greko
1. Черкес
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Черкес. Дебют двойного агента в Стамбуле

Один на миллион. Трилогия

Земляной Андрей Борисович
Один на миллион
Фантастика:
боевая фантастика
8.95
рейтинг книги
Один на миллион. Трилогия

Ваше Сиятельство 8

Моури Эрли
8. Ваше Сиятельство
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Ваше Сиятельство 8

Третье правило дворянина

Герда Александр
3. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Третье правило дворянина

Ваантан

Кораблев Родион
10. Другая сторона
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Ваантан

Невеста

Вудворт Франциска
Любовные романы:
любовно-фантастические романы
эро литература
8.54
рейтинг книги
Невеста

Романов. Том 1 и Том 2

Кощеев Владимир
1. Романов
Фантастика:
фэнтези
попаданцы
альтернативная история
5.25
рейтинг книги
Романов. Том 1 и Том 2

Кодекс Крови. Книга ХII

Борзых М.
12. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Кодекс Крови. Книга ХII

Бальмануг. (Не) Любовница 2

Лашина Полина
4. Мир Десяти
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Бальмануг. (Не) Любовница 2