ГЛАВА 26. Сетевые средства подключения к Интернету
Я зык С# предназначен для программирования в совре менной вычислительной среде, где Интернету, есте ственно, принадлежит весьма важная роль. Одной из главных целей разработки С# было внедрение в этот язык программирования средств, необходимых для до ступа к Интернету. Такой доступ можно было осуществить и в предыдущих версиях языков программирования, вклю чая С и C++, но поддержка операций на стороне сервера, загрузка файлов и получение сетевых ресурсов в этих язы ках не вполне отвечали потребностям большинства про граммистов. Эта ситуация коренным образом изменилась в С#. Используя стандартные средства C# и среды .NET Framework, можно довольно легко сделать приложения совместимыми с Интернетом и написать другие виды про грамм, ориентированных на подключение к Интернету. Поддержка сетевого подключения осуществляется через несколько пространств имен, определенных в среде .NET Framework, и главным среди них является пространство имен System.Net. В нем определяется целый ряд высо коуровневых, но простых в использовании классов, поддер живающих различные виды операций, характерных для работы с Интернетом. Для этих целей доступен также ряд пространств, вложенных в пространство имен System.Net. Например, средства низкоуровневого сетевого управления через сокеты находятся в пространстве имен System.Net. Sockets, поддержка электронной почты — в простран стве имен System.Net.Mail, а поддержка защищенных сетевых потоков — в пространстве имен System.Net. Security. Дополнительные функциональные возможно сти предоставляются в ряде других вложенных пространств имен. К числу других не менее важных пространств имен, 26 связанных с сетевым подключением к Интернету, относится пространство System. Web. Это и вложенные в него пространства имен поддерживают сетевые приложения на основе технологии ASP.NET. В среде .NET Framework имеется достаточно гибких средств и возможностей для се тевого подключения к Интернету. Тем не менее для разработки многих приложений более предпочтительными оказываются функциональные возможности, доступные в пространстве имен System.Net. Они и удобны, и просты в использовании. Именно по этому пространству имен System.Net будет уделено основное внимание в этой главе. Члены пространства имен System.Net
Пространство имен System.Net довольно обширно и состоит из многих членов. Полное их описание и обсуждение всех аспектов программирования для Интернета выходит далеко за рамки этой главы. (На самом деле для подробного рассмотрения всех вопросов, связанных с сетевым подключением к Интернету и его поддержкой в С#, потребуется отдельная книга.) Однако целесообразно хотя бы перечислить члены пространства имен System.Net, чтобы дать какое-то представление о том, что именно доступно для использования в этом пространстве. Ниже перечислены классы, определенные в пространстве имен System.Net. AuthenticationManager Authorization Cookie CookieCollection CookieContainer CookieException CredentialCache Dns DnsEndPoint DnsPermission DnsPermissionAttribute DownloadDataCompletedEventArgs DownloadProgressChangedEventArgs DownloadstringCompletedEventArgs EndPoint EndpointPermission FileWebRequest FileWebResponse FtpWebRequest FtpWebResponse HttpListener HttpListenerBasicIdentity HttpListenerContext HttpListenerException HttpListenerPrefixCollection HttpListenerRequest HttpListenerResponse HttpVersion HttpWebRequest HttpWebResponse IPAddress IPEndPoint IPEndPointCollection IPHostEntry IrDAEndPoint NetworkCredential OpenReadCompletedEventArgs OpenWriteCompletedEventArgs ProtocolViolationException ServicePoint ServicePointManager SocketAddress SocketPermission SocketPermissionAttribute TransportContext UploadDataCompletedEventArgs UploadFileCompletedEventArgs UploadProgressChangedEventArgs UploadstringCompletedEventArgs UploadValuesCompletedEventArgs WebClient WebException WebHeaderCollection WebPermission Помимо этого, в пространстве имен System.Net определен ряд делегатов. Несмотря на то что в пространстве имен System.Net определено немало членов, лишь немногие из них на самом деле требуются при решении наиболее типичных задач программирования для Интернета. Основу сетевых программных средств составляют аб страктные классы WebRequest и WebResponse. От этих классов наследуют все классы, поддерживающие конкретные сетевые протоколы. (Протокол определяет правила пере дачи данных по сети.) Например, к производным классам, поддерживающим стандарт ный сетевой протокол HTTP, относятся классы HttpWebRequest и HttpWebResponse. Классы HttpWebRequest и HttpWebResponse довольно просты в использовании. Тем не менее решение некоторых задач можно еще больше упростить, применяя под ход, основанный на классе WebClient. Так, если требуется только загрузить или вы грузить файл, то для этой цели лучше всего подойдет класс WebClient. Универсальные идентификаторы ресурсов В основу программирования для Интернета положено понятие универсального иден тификатора ресурса (URI), иногда еще называемого унифицированным указателем инфор мационного ресурса (URL). Этот идентификатор описывает местоположение ресурса в сети. В корпорации Microsoft принято пользоваться сокращением URI при описании членов пространства имен System.Net, и поэтому в данной книге выбрано именно это сокращение для обозначения универсального идентификатора ресурса. Иденти фикаторы URI, без сомнения, известны каждому, кто хотя бы раз пользовался браузе ром для поиска информации в Интернете. По существу, это адрес информационного ресурса, который указывается в соответствующем поле окна браузера. Ниже приведена общая форма идентификатора URI: Протокол://Идентификационныйномерсервера/Путькфайлу?Запрос где Протокол — это применяемый протокол, например HTTP; Идентификацион ныйномерсервера — конкретный сервер, например mhprofessional.com или WebPermissionAttribute WebProxy WebRequest WebRequestMethods WebRequestMethods.File WebRequestMethods.Ftp WebRequestMethods.Http WebResponse WebUtility Кроме того, в пространстве имен System.Net определены перечисленные ниже интерфейсы. AuthenticationModule IcertificatePolicy ICredentialPolicy ICredentials IcredentialsByHost IWebProxy IWebProxyScript IWebRequestCreate В этом пространстве имен определяются также приведенные ниже перечисления. AuthenticationSchemes DecompressionMethods FtpStatusCode HttpRequestHeader HttpResponseHeader HttpStatusCode NetworkAccess SecurityProtocolType TransportType WebExceptionStatus HerbSchildt.com; Путь