2010-06-04 2 views
1

Мне нужно сделать приложение silverlight 4 в браузере, которое может получать push-сообщения с сервера. Я предполагаю, что использование сокетов - лучший способ, а также позволит подключиться между сервером и клиентом для передачи данных и обновления страницы. Но я беспокоюсь о брандмауэрах и/или прокси-серверах. Возможно ли иметь технологию push или даже сокеты вообще, а за прокси-сервером, который может блокировать все, что не находится на порту 80? Или возможно иметь соединения сокетов на порту 80, которые были бы идеальными, потому что он обошел бы как прокси, так и брандмауэр. Я знаю, что для Silverlight имеется набор портов, поэтому im означает работу.Вывести данные в Silverlight с помощью сокетов через прокси-сервер?

В то время как по теме ... Посылает массовый блок данных из silverlight быстрее через сокеты, ASP.NET AJAX или подключение к веб-службе ASMX?

Спасибо тонну!

ответ

0

Вы не можете подключиться к сокету TCP с портом 80 в Silverlight. Поскольку у вас есть состояние, существует ограниченный диапазон портов (4502-4534), к которым вы можете подключиться, и это.

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

Скорость передачи данных в значительной степени зависит от ее кодирования. (Я не думаю, что AJAX на картинке здесь). В конечном итоге сокеты с двоичным кодированием, как правило, немного быстрее, особенно для частых небольших передач. В то время как HTTP страдает немного более накладными расходами, однако у вас гораздо меньше шансов возникнуть проблема с брандмауэром.

Если у вас нет действительно хорошей причины использовать сокеты, вместо этого используйте протокол HTTP. Если вы достаточно хорошо отлаживаете эту часть своего приложения, вы всегда можете поменять его позже.

Считаете ли вы использование канала WCF для опроса? Это позволяет вам создать «push» из механизма сервера, придерживаясь протокола HTTP. Кроме того, большая часть сантехники сделана для вас.

+0

Спасибо, я буду смотреть на WCF PollingDuplex. Прежде чем я это сделаю, эта статья: http://dotnetaddict.dotnetdevelopersjournal.com/sl_polling_duplex.htm говорит, что она не масштабируема. Это будет использоваться большим количеством людей, поэтому ненужные накладные расходы не являются опцией. Если это правда, есть ли более эффективная опция на основе HTTP? Спасибо. – Matt

+0

@Matt: Определить «большое количество людей»? – AnthonyWJones

+0

Несколько тысяч. – Matt

Смежные вопросы