Главная » Silverlight » Сокеты

0

До сих пор обсуждалось исключительно извлечение информации посредством про­токола HTTP. Первоначально, на заре Интернета, протокол HTTP был разработан для загрузки простых документов HTML. Однако он до сих пор, на удивление, хорошо справ­ляется с невероятно возросшим количеством задач, включая обмен документами XML, обслуживание запросов и ответов веб-служб и т.д.

Тем не менее протокол HTTP не лишен ряда существенных недостатков. Во-первых, это высокоуровневый стандарт, основанный на протоколе TCP. По этой причине он не может обеспечить такое же быстродействие, как низкоуровневые сетевые соединения. Во-вторых, в HTTP используется модель, вынуждающая клиентское устройство запра­шивать данные. Сервер не имеет возможности обратиться к клиентскому устройству при появлении новой информации. Поэтому HTTP плохо приспособлен для решения за­дач в реальном времени, таких как игры, мониторинг биржевых данных и т.д. Для их решения рекомендуется прибегнуть к мощной клиентской платформе WPF или приме­нить встроенные в Silverlight средства поддержки сокетных соединений.

и TCP

Строго говоря, сокет (socket) — это всего лишь конечная точка сети, определяемая двумя числами.

•   Адрес IP — код, идентифицирующий компьютер в локальной сети или Интернете.

•       Порт. Номер порта идентифицирует приложение или службу, сообщающуюся с другим приложением, сервером или службой посредством сети.

В каждом соединении участвуют два сокета: на клиентской стороне (например, при­ложение Silverlight) и на стороне сервера, на котором выполняется серверное приложе­ние. Два сокета определяют одно соединение (рис. 20.7).

Рис. 20.7. Структура сокетного соединения

Примечание. Номер порта не означает что-либо физически. Это всего лишь число, идентифицирующее конечную точку приложения. Довольно часто приложения одинакового типа имеют определенный, закрепленный за ними, номер порта. Например, если на компьютере установлен веб-сервер, то, скорее всего, ему присвоен номер порта 80. Другое приложение может использовать порт 8000. Приложение Silverlight может открывать соединения посредством любого порта от 4502 до 4532.

В Silverlight используются потоковые сокеты (stream sockets). Это означает, что сокет использует соединение TCP. В протокол TCP встроены средства управления по­токами, коррекции ошибок, обработки очередей и т.п. Благодаря им вам не нужно беспокоиться о решении многочисленных сетевых проблем, связанных с разбиением информации на пакеты, передачей пакетов разными путями, сборкой пакетов и т.д. Вы можете просто писать данные в поток на одном конце соединения и читать их из потока на другом конце.

Для создания соединения TCP приложение должно выполнить операцию "привет­ствия" (handshaking), т.е. подтвердить установление связи. Эта операция состоит из трех этапов.

1.     Сначала сервер переходит в режим прослушивания. В этом режиме сервер не за­нят. Он ждет запроса.

2.     Клиент применяет адрес IP и номер порта сервера для открытия активного сое­динения. Сервер отвечает сообщением подтверждения в предопределенном фор­мате, содержащем параметры клиента.

3.     И наконец, клиент отвечает подтверждением. С этого момента соединение готово для передачи данных в любом направлении.

Для реализации данного примера необходимо довольно много сетевого кода, однако результат стоит усилий: возможности приложения выходят далеко за рамки обычных страниц HTML.

В следующих разделах платформа Silverlight используется для создания клиентского сокета, а платформа .NET — для создания серверного сокета. В результате будет соз­дано приложение чата, позволяющее многим пользователям, зарегистрировавшись, передавать и принимать сообщения. На рис. 20.8 показаны два клиента, вовлеченные в разговор.

Рис. 20.8. Клиентское приложение чата на основе сокетного соединения

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии