Г. Шилдт - С# 3.0 Полное руководство. 2010 (1160798), страница 184
Текст из файла (страница 184)
Они и удобны, и просты в использовании. Именно поэтому пространству имен зуэсеп.нес будет уделено основное внимание в этой главе. 916 часть Н. Бибяиотека С» Члены пространства имен Бузят. Не~: Пространство имен Буясев.мес довольно обширно и состоит иэ многих членов. Полное их описание и обсуждение всех аспектов программирования для Интернета выходит далеко за рамки этой главы. (На самом деле для подробного рассмотрения всех вопросов, связанных с сетевым подключением к Интернету и его поддержкой в СФ, потребуется отдельная книга.) Однако целесообразно хотя бы перечислить члены пространства имен Буягев.
Мет, чтобы дать какое-то представление о том, что именно доступно для использования в этом пространстве. Ниже перечислены классы, определенные в пространстве имен Буягев. Мет.. АпгпепгасаС1опмападег Соокае СоокаеСопгатпег Сгебепгьа1Саспе ОпяРегвгявьоп Оояп1оабвагясовр1есебвчепгйтов Оочп1оабзгт1пссовр1егебкчепгАгаве епбротпсреввтявтоп Гт1еиеЬКеяропяе ГСРИеЬКевропяе НССрваягепегваятстбепгтгу НССРЬ1вгепеткхсергтоп НССр11ягепегвеячевг нссрчегвтоп НССРИеьвеяропве 1РЕпбРоапт 1РНояСЕпггу Метиотхсгебепгса1 Орепитсгесовр1егебкчепгйтсв Бегчтсеробпг Боскегйббгеяя Босхегкегвсвв1опйггг1Ьпге ОР1оабкт1еСовр1егебЕчепСАгсв Ор1оябэгтспосовр1егебЕчепгйгда ИеЬС11епг ИеЬНеабегСо11естаоп ИеЬРегваяяаопАССгтЬпте Иепвеяпеяг ИеЬКеяпеягиегпобв.Г11е Иепвеяпевгиегьобя.НССР Аогпогаяагаоп Соотьесо11есттоп СоохаеЕхсерт1оп ОпяРегвгяяьопАССгтЬоге Оочп1оабргодгеввСЬапдебЕчепгйгся ЕпбРоапС Г11еиеЬКеяиевг ГСРИеЬКеяпевг НССРЬьвгепег НССрЬавтепетСопСехг НССрдаягепегртевахсо11есгтоп НССрвавтепегвеяропяе НССриепвеЧ еяг 1РАббтеяв 1РЕпброспССо11есгаоп тгОАЕпбРоапг Орепаеябсовр1есебвчепгйтсв Ртогосо1уто1агтопЕхсертаоп Бегч1сеРотпСМападег Босхегрегвтввсоп Ор1оабвясасовр1есебечепсйгчя Ор1оабргодгеяяспяпсебЕчепгйгде Ор1оабуя1пеясовр1егебвчептйтся ИеЬЕхсергаоп ИеЬРегвьяьаоп ИеЬРгоху ИеЬКеяиевСМетпобв ИеЬКесг1еягиегьобя.ггр ИеЬРеяропяе Глава 25.
Сетевые средства подключения к Интернету 917 Кроме того, в пространстве имен БуяСею. НеС определены перечисленные ниже интерфейсы. йоСЬепглсаглоомооа1е 1Сгеаеогла1я 1иеЬРгохузоглрг 1сегС111оагего11су 1сгеоеогла1явуНояг 1ыеьнецоеяССгеаСе 1Сгеаеогла1Ро11су 1неЬРгоху В этом пространстве имен определяются также приведенные ниже перечисления.
Песояргеяялопмегьоая Нссраеяроояенеааег Бесг г1СуРгогосо1туре йогьеоглоаглопзсьенея нссрнеяоеяснеанег несхогвлсоеяя НеЬЕхсерглооБСагоя ГСРБСагоясоце НССРБСагоясосГе тгапярогстуре Помимо этого, в пространстве имен 5 уяСе?и. Нег определен ряд делегатов. Несмотря на то что в пространстве имен Буягет. Нег определено немало членов, лишь немногие из них на самом деле требуются при решении наиболее типичных задач программирования для Интернета.
Основу сетевых программных средств составляют абстрактные классы ХеЬНецпеяС и ИеЬНеяропяе. От этих классов наследуют все классы, поддерживающие конкретные сетевые протоколы. (Протокол определяет правила передачи данных по сети.) Например, к производным классам, поддерживающим стандартный сетевой протокол НТТР, относятся классы НссрнеЬНецоеяс и НссрнеЬНеяропяе. Классы нссрнеьнецоеяс и нссрнеьнеяропяе довольно просты в использовании. Тем не менее решение некоторых задач можно еще больше упроститгь применяя подход, основанный на классе неЬС11епс.
Так, если требуется только загрузить или выгрузить файл, то для этой цели лучше всего подойдет класс иеЬс11епс.. Универсальные идентификаторы ресурсов В основу программирования для Интернета положено понятие универсальною идентификатора ресурса (()К1), иногда еще называемого унифицированным указателем информационного ресурса (()КЕ). Этот идентификатор описывает местоположение ресурса в сети. В корпорации М1сгозо(с принято пользоваться сокрашением ()К1 при описании членов пространства имен Буясею. Мес, и поэтому в данной книге выбрано именно это сокращение для обозначения универсального идентификатора ресурса.
Идентификаторы ПК1, без сомнения, известны каждому, кто хотя бы раз пользовался браузером для поиска информации в Интернете. По существу, это адрес информационного ресурса, который указывается в соответствующем поле окна браузера. Ниже приведена общая форма идентификатора ()КЕ Протокол://Ниенти$икационний номер сервера/Путь к Яайлу?Зяороо где протокол — это применяемый протокол, например НТТР; идентификационный номер сервера — конкретный сервер, например МЬрго1еяя1опа1.
сот или НегЬБсЬ11ПС.сож Путь к файлу — путьк конкретному файлу Если же путь и файлу не указан, то получается страница, доступная на указанном сервере по умолчанию. И наконец, Напрос обозначает информацию, отправляемую на сервер. Указывать Бапрос необязательно. В языке СФ идентификаторы ()К1 инкапсулированы в класс Нг1, рассматриваемый ниже в этой главе.
918 часть». Библиотека Сз Основы доступа к Интернету В классах, находящихся в пространстве имен нузсет. нес, поддерживается модель взаимодействия с Интернетом по принципу запроса и ответа. При таком подходе пользовательская программа, являющаяся клиентом, запрашивает информацию у сервера, а затем переходит в состояние ожидания ответа. Например, в качестве запроса программа может отправить на сервер идентификатор УК1 некоторого веб-сайта. В ответ она получит гипертекстовую страницу, соответствующую указанному идентификатору ()К1. Такой принцип запроса и ответа удобен и прост в применении, поскольку большинство деталей сетевого взаимодействия реализуются автоматически. На вершине иерархии сетевых классов находятся классы иеьнес)вез с и иеьнезропэе, реализующие так называемые подхлючаемтие протоколы.
Как должно быть известно большинству читателей, для передачи данных в сети применяется несколько разнотипных протоколов. К числу наиболее распространенных в Интернете относятся протокол передачи гипертекстовых файлов (НТТР), а также протокол передачи файлов (ГТР). При создании идентификатора ()К1 его префикс обозначает применяемый сетевой протокол.
Например, в идентификаторе ЬССрь //иии. НегЬясЬ11с)С. сов используется префикс Ьсср, обозначающий протокол передачи гипертекстовых файлов (НТТР). Как упоминалось выше, классы неЬНек)иеэ С и ИеЬНез ров эе являются абстрактными, а следовательно, в них определенны в самом общем виде операции запроса и ответа, типичные для всех протоколов. От этих классов наследуют более конкретные производные классы, в которых реализуются отдельные протоколы. Эти производные классы регистрируются самостоятельно, используя для этой цели статический метод Недбзте грге ббх (), определенный в классе ИеЬНес)иезк.
При создании объекта типа ИеЬНес)иеэг автоматически используется протокол, указываемый в префиксе ()К1, если, конечно, он доступен. Преимушество такого принципа "подключения" протоколов заключается в том, что большая часть кода пользовательской программы остается без изменения независимо от типа применяемого протокола. В среде выполнения .ХЕТ Кппйше протоколы НТТР НТТРЯ и РТР определяются автоматически. Так, если указать идентификатор ()К1 с префиксом НТТР, то будет автоматически получен НТТР-совместимый класс, который поддерживает протокол НТТР А если указать идентификатор ()К1 с префиксом ЕТР, то будет автоматически получен РТР-совместимый класс, поддерживающий протокол РТР.
При сетевом подключении к Интернету чаще всего применяется протокол НТТР поэтому именно он и рассматривается главным образом в этой главе. (Тем не менее аналогичные приемы распространяются и на все остальные поддерживаемые протоколы.) Протокол НТТР поддерживается в классах нссриеЬнес)аеас и нссриеЬнеэропзе. Эти классы наследуют от классов ИеЬНес)иеэг и ИеЬНезропзе, а кроме того, имеют собственные дополнительные члены, применимые непосредственно к протоколу НТТР. В пространстве имен н уз секс.
нес поддерживается как синхронная, так и асинхронная передача данных. В Интернете предпочтение чаще всего отдается синхронным транзакциям, поскольку ими легче пользоваться. При синхронной передаче данных пользовательская программа посылает запрос и затем ожидает ответа от сервера. Но для некоторых разновидностей высокопроизводительных приложений более подходящей оказывается асинхронная передача данных. При таком способе передачи данных пользовательская программа продолжает обработку данных, ожидая ответа на переданный запрос. Но организовать асинхронную передачу данных труднее. Кроме того, не во всех программах можно извлечь выгоды из асинхронной передачи данных.
Например, когда требуется по- Глава 25. Сетевые средства подключения к Интернету 919 лучить информацию из Интернета, то зачастую ничего другого не требуется, как ожидать ее. В подобных случаях потенциал асинхронной передачи данных используется не полностью. Вследствие того что синхронный доступ к Интернету реализуется проще и намного чаще, именно он и будет рассматриваться в этой главе. Далее речь пойдет прежде всего о классах Иеьнег(иевь и Иеьневропве, поскольку именно они положены а основу сетевых программных средств, доступных в пространстве имен Бувьев.неь. Класс ИеЪВеЧиеа~ таблица 25.1. методы, определенные а классеиеькеоиевс Метод Описание ривььс вкакьс Иеькециевк СгеаСе(вгг1пд иг1) Создает объект типа иеьнечиевс дпя идентификатора 0Й(, указываемого в строке игу. Возвращаемый объект реализует протокол, заданный префиксом идентификатора 0Й(. Следовательно, возвращаемый объект будет экземпляром класса, прнзводного от класса иеинециевС. Если затребованный протокол недосчупен, то генерируется исключение носзиррогсес1ехсерсьоп.
А если недействителен указанный формат идентификатора 0В(, то генерируется исключение ПгьгопиаСЕхсерС1оп риЬ11с вгагьс Иеьнециевг Сгеаке(игь игз) Создает объект типа иеькециевг дпя идЕнтификатоРа 0В1, уКаЗЫВаЕМОГО В ВИДЕ ОбЪЕКГа игз, ВОЗВращаЕМЫй ОбЪЕКт рЕа- пнзует протокол, заданный префиксом идентификатора 0В(. Следовательно, возвращаемый объект будет экземпляром класса, прнзводного от класса иеькечиевс. Если затребо- ванный протокол недоступен, то генерируется исключение Ноквиррогкег(кхсерС1оп риЬ11с чьггиа1 БСгеав Яеснечиевсзсгеав 0 Возвращает поток вывода, связанный с эапрошенным ранее идентификатором 0В! риъ11с ньгсиа1 ИеЬНевропве цекаевропве 0 Отправляет предварительно сформированный запрос н ожида- ет ответа. Получив ответ, возвращает его в виде обьекта класса иеЬНеропве.
Этот объект используется затем в программе дпя получения информации по указанному адресу 0В! Класс иеьнес(иев С управляет сетевым запросом. Он является абстрактным, поскольку в нем не реализуется конкретный протокол. Тем не менее в нем определяются те методы и свойства, которые являются общими для всех сетевых запросов. В табл. 25.1 сведены методы, определенные в классе Иеьдес(иевь и поддерживающие синхронную передачу данных, а в табл. 25.2 — свойства, обьявляемые в классе Иеьнег(ив в с. Устанавливаемые по умолчанию значения свойств задаются в производных классах. Открытые конструкторы в классе Иеьпес(иевк не определены.