Симон Робинсон - C# для профессионалов. Том II

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "C# для профессионалов. Том II"
Описание и краткое содержание "C# для профессионалов. Том II" читать бесплатно онлайн.
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Эта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
Именно эту сторону картины мы кратко рассмотрим сейчас. В частности, будут представлены средства базовых классов .NET для использования различных сетевых протоколов, например HTTP для доступа к сетям и Интернету в качестве клиента. Мы обсудим следующие вопросы:
□ Запрос данных из Web и получение ответа от серверов
□ Отправку данных HTTP POST
□ Извлечение информации заголовка HTTP из ответов серверов
Коротко коснемся средств, существующих для прямого доступа к службам нижнего уровня, таким как отправка и получение пакетов TCP и ожидание приема на определенных портах.
Пространства имен System.Net и System.Net.Sockets содержат большинство базовых классов .NET, которые связаны с работой в сети с точки зрения клиента. Пространство имен System.Net обычно связано с операциями более высокого уровня, например загрузкой и выгрузкой файлов и выполнением запросов Web с помощью HTTP и других протоколов, в то время как System.Net.Sockets содержит классы, связанные с операциями более низкого уровня. Они более полезны при работе непосредственно с сокетами или такими протоколами, как TCP/IP, и используются по большей части для сокрытия соответствующей функции API Windows.
В этой главе используется достаточно практичный подход: представлен ряд постепенно усложняющихся примеров в сопровождении соответствующей теории и с обсуждением сетевых концепций.
Мы начнем с простейшего случая, когда необходимо просто послать серверу запрос и сохранить или обработать полученную информацию.
Класс WebClient
Если необходимо выполнить запрос файла по определенному URL, то, скорее всего, самым простым классом .NET для использования в этом случае окажется System.Net.WebClient. Это класс максимально высокого уровня, созданный для выполнения базовых операций с помощью одной или двух команд.
Загрузка файлов
Существует два способа загрузки файлов с web-сайта с помощью WebClient, в зависимости от того, хотим ли мы файл сохранить или обработать его содержимое файла непосредственно внутри приложения. Если нужно просто сохранить файл, то вызывается метод DownloadFile(). Этот метод получает два параметра: URL, из которого необходимо извлечь файл, и имя файла (или путь доступа), в котором мы хотим сохранить файл.
WebClient Client = new WebClient();
Client.DownloadFile("http://www.Wrox.com/default.htm", "index.htm");
Более часто приложению приходится обрабатывать данные, полученные с web-сайта. Чтобы сделать это, используется метод OpenRead(), который возвращает ссылку типа Stream. Затем можно извлекать данные просто из потока.
WebClient Client = new WebClient();
Stream sfrm = Client.OpenRead("http://www.Wrox.com/default.htm");
Пример: базовый клиент Web
Первый пример продемонстрирует использование метода webClient.OpenRead(). В этом случае содержимое загруженных данных просто выводится в окне списка. Проект создается как стандартное приложение C# для Windows, в него добавляется окно списка с именем listBox1, в котором выводится содержимое загруженного файла. Затем в конструкторе основной формы делаются изменения:
public Form1() {
InitializeComponent();
System.Net.WebClient Client = new WebClient();
Stream strm = Client.OpenRead("http://www.wrox.com");
StreamReader sr = new StreamReader(strm);
string line;
do {
line = sr.ReadLine();
listBox1.Items.Add(line);
}
while (line != null) strm.Close();
}
Для упрощения URI в программе жестко закодирован.
Акроним URI (Uniform Resource Identifier) — Универсальный идентификатор ресурса — означает любую короткую строку, указывающую на некоторый ресурс. Следовательно, строка вида http://www.wrox.com является URI. В прошлом для идентификации таких адресов традиционно использовался термин URL (универсальный локатор ресурса), но термин URL больше не используется в новых технических спецификациях, теперь предпочтение отдается URI. URI имеет приблизительно такое же значение, как и URL, но более распространен, так как URI не обязательно предполагает, что используется один из известных протоколов, таких как HTTP или FTP.
Отметим, что в этом примере использованы два потока — StreamReader и соединенный с ним сетевой поток. Это обычно позволяет получать данные из потока как текст и использовать методы более высокого уровня, такие как ReadLine(), которые доступны в классе StreamReader. Это прекрасный пример сделанного в главе 14 замечания о достоинствах перехода от концепции перемещения данных к концепции потока. Выполнение примера создает следующий результат:
Выгрузка файлов
Класс WebClient обладает также методами UploadFile() и UploadData(). Различие между ними состоит в том, что UploadFile() выгружает указанный файл, заданный именем файла, в то время как UploadData() выгружает двоичные данные, которые поставляются как массив байтов:
WebClient client = new WebClient();
client.UploadData("http://www.ourwebsite.com/NewFile.htm", "C:\WebSiteFiles\NewFile.htm");
byte [] image;
// код для инициализации изображения, поэтому он содержит все
// двоичные данные для некоторого файла jpg
client.UploadData("http://www.ourwebsite.com/NewFile.jpg", image);
Классы WebRequest
Класс WebClient очень просто использовать, но он имеет ограниченные возможности. В частности, нельзя использовать его для предоставления полномочий аутентификации, так как существует не много сайтов, которые будут принимать выгружаемые файлы без аутентификации. Можно добавлять в запросы заголовочную информацию и проверять всю возвращаемую заголовочную информацию, но только в очень общем смысле, потому что нет специальной поддержки для какого-либо протокола. Причина этого состоит в том, что WebClient является классом общего назначения, созданным для работы с любым протоколом, для которого можно послать запрос и получить ответ (HTTP, FTP и т. д.). Он не может обрабатывать дополнительные свойства, специфические для какого-то одного протокола, такие как cookies, специфические для HTTP. Если желательно воспользоваться этими свойствами, необходимо выбрать семейство классов на основе двух других классов в пространстве имен System.Net: WebRequest и WebResponse.
Начнем с рассмотрения того, как загрузить страницу Web с помощью этих классов — тот же пример, что и раньше, но использующий WebRequest и WebResponse. В процессе изложения мы немного коснемся иерархии вовлеченных классов, а затем покажем, как воспользоваться дополнительными свойствами HTTP, поддерживаемыми этой иерархией.
Следующий код доказывает модификации, которые необходимо сделать в примере BasicWebClient, чтобы он использовал классы WebRequest и WebResponse.
public Form1() {
InitializeComponent();
WebRequest wrq = WebRequest.Create("http://www.wrox.com");
WebResponse wrs = wrq.GetResponse();
Stream strm = wrs.GetResponseStream();
StreamReader sr = new StreamReader(strm);
string line;
while ((line = sr.ReadLine()) != null) {
listBox1.Items.Add(line);
}
strm.Close();
}
Этот код начинается с создания экземпляра объекта, представляющий запрос Web. Необычно то, что это делается не с помощью использования конструктора, а с помощью вызова статического метода WebRequest.Create(); в следующем разделе будет показано, почему так это сделано. Класс WebRequest представляет запрос информации, который посылается по определенному URI, и поэтому необходимо передать URI с помощью метода Create(). WebResponse представляет данные, присылаемые назад сервером. Вызов метода WebRequest.GetResponse() в действительности посылает запрос серверу Web и создает объект Response, который можно использовать для проверки возвращаемых данных. Как и для объекта WebClient, можно получить поток, представляющий эти данные с помощью метода WebResponse.GetResponseStream().
Другие свойства WebRequest и WebResponse
Здесь кратко будут упомянуты пара других областей, в которых WebRequest и WebResponse и связанные классы предоставляют хорошую поддержку.
Информация заголовка HTTPВажной частью протокола HTTP является возможность послать значительную заголовочную информацию с помощью потоков запроса и ответа. Эта информация может включать данные GET и POST, cookies, а также данные определенного пользователя, посылающего запрос. Как и можно было ожидать, предоставляется полная поддержка заданию и доступу к этим данным. Однако эта поддержка не является частью классов WebRequest и WebResponse, она реализована двумя производными классами: HttpWebRequest и HttpWebResponse. Как скоро будет показано, при создании объекта WebRequest с помощью обычного механизма, если предоставленный URI был URI HTTP, то получаемая ссылка в действительности указывает на объект HttpRequest, и можно при желании преобразовать эту ссылку в такой объект. Реализация HttpRequest метода GetResponse() возвращает объект HttpWebResponse через ссылку WebResponse, поэтому снова можно выполнить простое преобразование для доступа к свойствам, специфическим для HTTP.
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "C# для профессионалов. Том II"
Книги похожие на "C# для профессионалов. Том II" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Симон Робинсон - C# для профессионалов. Том II"
Отзывы читателей о книге "C# для профессионалов. Том II", комментарии и мнения людей о произведении.