Герберт Шилдт - C# 4.0: полное руководство
- Название:C# 4.0: полное руководство
- Автор:
- Жанр:
- Издательство:ООО И.Д. Вильямс
- Год:2011
- Город:Москва -- Киев
- ISBN:978-5-8459-1684-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Герберт Шилдт - C# 4.0: полное руководство краткое содержание
В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки.
Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию
C# 4.0: полное руководство - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
В среде выполнения .NET Runtime протоколы HTTP, HTTPS и FTP определяются автоматически. Так, если указать идентификатор URI с префиксом HTTP, то будет автоматически получен HTTP-совместимый класс, который поддерживает протокол HTTP. А если указать идентификатор URI с префиксом FTP, то будет автоматически получен FTP-совместимый класс, поддерживающий протокол FTP.
При сетевом подключении к Интернету чаще всего применяется протокол HTTP, поэтому именно он и рассматривается главным образом в этой главе. (Тем не менее аналогичные приемы распространяются и на все остальные поддерживаемые протоколы.) Протокол HTTP поддерживается в классах HttpWebRequest
и HttpWebResponse
. Эти классы наследуют от классов WebRequest
и WebResponse
, а кроме того, имеют собственные дополнительные члены, применимые непосредственно к протоколу HTTP.
В пространстве имен System.Net
поддерживается как синхронная, так и асинхронная передача данных. В Интернете предпочтение чаще всего отдается синхронным транзакциям, поскольку ими легче пользоваться. При синхронной передаче данных пользовательская программа посылает запрос и затем ожидает ответа от сервера. Но для некоторых разновидностей высокопроизводительных приложений более подходящей оказывается асинхронная передача данных. При таком способе передачи данных пользовательская программа продолжает обработку данных, ожидая ответа на переданный запрос. Но организовать асинхронную передачу данных труднее. Кроме того, не во всех программах можно извлечь выгоды из асинхронной передачи данных. Например, когда требуется получить информацию из Интернета, то зачастую ничего другого не остается, как ожидать ее. В подобных случаях потенциал асинхронной передачи данных используется не полностью. Вследствие того что синхронный доступ к Интернету реализуется проще и намного чаще, именно он и будет рассматриваться в этой главе.
Далее речь пойдет прежде всего о классах WebRequest
и WebResponse
, поскольку именно они положены в основу сетевых программных средств, доступных в пространстве имен System.Net
.
Класс WebRequest
управляет сетевым запросом. Он является абстрактным, поскольку в нем не реализуется конкретный протокол. Тем не менее в нем определяются те методы и свойства, которые являются общими для всех сетевых запросов. В табл. 26.1 сведены методы, определенные в классе WebRequest
и поддерживающие синхронную передачу данных, а в табл. 26.2 — свойства, объявляемые в классе WebRequest
. Устанавливаемые по умолчанию значения свойств задаются в производных классах. Открытые конструкторы в классе WebRequest
не определены.
Для того чтобы отправить запрос по адресу URI, необходимо сначала создать объект класса, производного от класса WebRequest
и реализующего требуемый протокол. С этой целью вызывается статический метод Create()
, определенный в классе WebRequest
. Метод Create()
возвращает объект класса, наследующего от класса WebRequest
и реализующего конкретный протокол.
Таблица 26.1. Методы, определенные в классе WebRequest
Метод -Описание
public static WebRequest Create(string requestUriString) - Создает объект типа WebRequestдля идентификатора URI, указываемого в строке requestUriString. Возвращаемый объект реализует протокол, заданный префиксом идентификатора URI. Следовательно, возвращаемый объект будет экземпляром класса, призводного от класса WebRequest.Если затребованный протокол недоступен, то генерируется исключение NotSupportedException.А если недействителен указанный формат идентификатора URI, то генерируется исключение UriFormatException
public static WebRequest Create(Uri requestUri) - Создает объект типа WebRequestдля идентификатора URI, указываемого с помощью параметра reques tUri. Возвращаемый объект реализует протокол, заданный префиксом идентификатора URI. Следовательно, возвращаемый объект будет экземпляром класса, призводного от класса WebRequest.Если затребованный протокол недоступен, то генерируется исключение NotSupportedException
public virtual Stream GetRequestStream() -Возвращает поток вывода, связанный с запрошенным ранее идентификатором URI
public virtual WebResponse GetResponse() - Отправляет предварительно сформированный запрос и джидает ответа. Получив ответ, возвращает его в виде объекта класса WebReponse.Этот объект используется затем в программе для получения информации по указанному адресу URI
Таблица 26.2. Свойства, определенные в классе WebRequest
Свойство -Описание
public AuthenticationLevel AuthenticationLevel( get; set; } -Получает или устанавливает уровень аутентификации
public virtual RequestCachePolicy CachePolicy { get; set; } -Получает или устанавливает правила использования кеша, определяющие момент получения ответа из кеша
public virtual string ConnectionGroupName { get; set; } -Получает или устанавливает имя группы подключения. Группы подключения представляют собой способ создания ряда запросов. Они не нужны для простых транзакций в Интернете
public virtual long ContentLength { get; set; } -Получает или устанавливает длину передаваемого содержимого
public virtual string ContentType { get; set; } -Получает или устанавливает описание передаваемого содержимого
public virtual Icredentials Credentials { get; set; } -Получает или устанавливает мандат, т.е. учетные данные пользователя
public static RequestCachePolicy DefaultCachePolicy { get; set; } -Получает или устанавливает правила использования кеша по умолчанию, определяющие момент получения ответа из кеша
public static IWebProxy DefaultWebProxy { get; set; } -Получает или устанавливает используемый поумолчанию прокси-сервер
public virtual WebHeaderCollection Headers{ get; set; } -Получает или устанавливает коллекцию заголовков
public TokenlmpersonationLevel ImpersonationLevel { get; set; } -Получает или устанавливает уровень анонимного воплощения
public virtual string Method { get; set; } -Получает или устанавливает протокол
public virtual bool PreAuthenticate { get; set; } -Если принимает логическое значение true,то в отправляемый запрос включается информация для аутентификации. А если принимает логическое значение false,то информация для аутентификации предоставляется только по требованию адресата URI
public virtual IWebProxy Proxy { get; set; } -Получает или устанавливает прокси-сервер. Применимо только в тех средах, где используется прокси-сервер
public virtual Uri RequestUri { get; } -Получает идентификатор URI конкретного запроса
public virtual int Timeout { get; set; } -Получает или устанавливает количество миллисекунд, в течение которых будет ожидаться ответ на запрос. Для установки бесконечного ожидания используется значение Timeout. Infinite
public virtual bool UseDefaultCredential { get; set; } - Получает или устанавливает значение, которое определяет, используется ли для аутентификации устанавливаемый по умолчанию мандат. Если имеет логическое значение true,то используется устанавливаемый по умолчанию мандат, т.е. учетные данные пользователя, в противном случае этот мандат не используется
Читать дальшеИнтервал:
Закладка: