Пространство имен System.Net

90

Пространство имен System.Net содержит сетевые классы для поиска IP-адресов, сетевой аутентификации, разрешений, отправки и получения данных. Рассмотрим эти классы, рассортировав их по группам.

Поиск имен

Чтобы получить IP-адрес из DNS-имени хоста или получить имя хоста из IP-адреса, можно использовать класс Dns. Класс DnsPermission представляет разрешение, необходимое для поиска имени. DnsPermissionAttribute — это класс атрибута, позволяющий отмечать сборки, классы и методы, нуждающиеся в этих полномочиях.

IP-адреса

IP-адреса обрабатываются в классе IPAddress. У одного хоста может быть несколько IP-адресов и алиасов. Вся эта информация содержится в классе IPHostEntry. Когда мы ищем имя, класс Dns возвращает объект типа IPHostEntry.

Аутентификация и авторизация

В классе AuthenticationManager есть статические методы, предназначенные для аутентификации клиентского пользователя. В этом классе-утилите используются модули, реализующие интерфейс IAuthenticationModule. Класс AuthenticationManager обращается к этим модулям, чтобы идентифицировать пользователя. Модули аутентификации получают информацию запроса и данные о личности пользователя с помощью интерфейса ICredentials и возвращают объект Authorization для авторизованных пользователей, которым разрешается использовать ресурс.

Приложение-клиент может передать данные о пользователе на сервер экземпляром класса NetworkCredential. Эти данные о пользователе могут быть занесены в кэш BCredentialCache:

Схема аутентификации и авторизации пользователей

Запросы и ответы

Абстрактные базовые классы, предназначенные для отправки запросов на сервер и получения ответов, называются WebRequest и WebResponse. В пространстве имен System.Net имеется несколько специальных реализаций этих классов для HTTP и доступа к файлам: HttpWebRequest, HttpWebResponse, FileWebRequest и FileWebResponse.

Классы HttpXXX также используют еще один класс из пространства имен System.Net: класс HttpVersion применяется для указания версии HTTP. У классов HttpWebRequest и HttpWebResponse есть свойство ProtocolVersion, определяющее версию HTTP - HttpVersion.Version10 или HttpVersion.Version11. Версия HTTP 1.0 использовалась на заре Интернета и продолжает использоваться некоторыми Web-серверами, текущая версия HTTP 1.1 включает некоторые дополнительные возможности, например, может поддерживать открытое соединение для нескольких запросов.

Разрешения, необходимые для классов запросов и ответов, определены в классе WebPermission и классе атрибута WebPermissionAttribute.

Класс компонентов WebClient облегчает использование WebRequest и WebResponse из Visual Studio .NET. Этот класс порожден от класса Component и поэтому может использоваться с функцией буксировки мышью из панели Toolbox. Однако по умолчанию он не сконфигурирован для использования Toolbox. С классом WebClient нетрудно копировать файлы с сервера и на сервер.

Управление соединениями

Классы ServicePoint и ServicePointManager играют важную роль для НТТР-соединений. Для ресурса экземпляр класса ServicePoint связан с URI и может обрабатывать несколько соединений. Класс-утилита ServicePointManager управляет объектами ServicePoint, создавая новые или отыскивая существующие объекты.

Пропускную способность приложения, которое одновременно запрашивает множество данных с сервера, можно повысить, увеличив число соединений на базе приложения. Чтобы ограничить выделение сетевых ресурсов, по умолчанию максимальное число соединений с одним и тем же сервером устанавливается равным двум.

Записи cookies

Cookies — это хранящиеся на стороне клиента наборы данных, которые используются сервером для запоминания некоторой информации между запросами. Когда для запросов данных с сервера используется такой Web-браузер, как Internet Explorer, он сам управляет приемом и сохранением записей cookies и посылает их обратно Web-cepвepy. При создании специального приложения, запрашивающего данные с Web-сервера, посылающего записи cookies, можно их считывать в объект класса CookieCollection, возвращаемый свойством Cookies объекта HttpWebResponse.

С помощью класса CookieContainer передаются записи cookie серверу. Сама запись cookie представлена в классе Cookie.

Сокеты

Вместо Web-классов используются классы сокетов, при этом мы, приобретая дополнительные возможности и гибкость, сталкиваемся с определенной сложностью. Большинство классов, которые используются в программировании сокетов, можно найти в пространстве имен System.Net.Sockets.

Программирование сокетов не только позволяет осуществлять связь, ориентированную на соединения, как в случае с HTTP, но также и реализовывать связь без установления соединений, которая используется при групповой рассылке или широковещательной передаче с UDP. Программирование сокетов — чрезвычайно гибкий механизм, позволяющий пользоваться самыми разными протоколами: GGP, ICMP, IGMP, IPX, SPX.

Обзор наиболее важных классов из пространства имен System.Net закончен, и теперь более детально рассмотрим некоторые из этих классов.

Пройди тесты
Лучший чат для C# программистов