2010-01-07 4 views
0

У меня есть код на моем сервере, который работает очень хорошо. Он должен сканировать несколько страниц на удаленных сайтах для правильной работы. Я знаю, что некоторые пользователи могут захотеть злоупотреблять моим сайтом, поэтому вместо запуска кода, который использует webclient и HttpRequest, я бы хотел, чтобы он работал на стороне клиента, поэтому, если он злоупотребляет, пользователь может иметь свой IP-адрес в черный список вместо моего сервера. Как я могу запустить эту клиентскую часть кода? Я думаю, что Silverlight может быть решением, но я ничего не знаю об этом.запустить код C# на стороне клиента в веб-приложении

+0

По симметрии, не очень ли просто, чтобы ваш код злоупотреблял машиной вашего клиента? Особенно, если вы получаете (как хотите) доступ к файловой системе клиентской машины. – Tarydon

+4

Silverlight запускается внутри «песочницы», то есть существует множество ограничений по нему по соображениям безопасности (даже в версии 4 вы можете сохранить файл на диске пользователя, но единственная информация, которую вы даете, - это имя файла без пути и экземпляр FileStream). Очень маловероятно, что вы сможете выполнить сканирование веб-страниц из Silverlight, особенно с его междоменной безопасностью. – Rory

+0

@Rory: +1 Совершенно верно. Жаль, что вы не ввели это в качестве ответа. – AnthonyWJones

ответ

2

Да, Silverlight - это решение, позволяющее запускать ограниченный набор .NET-кода на компьютере клиента. Просто зайдите в Google для silverlight limitations, чтобы получить дополнительную информацию о том, что недоступно.

Я не знаю, какой сценарий вы пытаетесь реализовать, и нужны ли вам результаты в реальном времени, но я думаю, что кеширование результатов сканирования может быть хорошей идеей?

Если вы после web scraping, вы должны быть в состоянии найти пару фреймворков JavaScript, которые для вас.

+0

Похоже, я мог делать некоторые вещи, которые мне нужны, но мне нужно изменить свой код, чтобы он не стоил того. Ответ правильный и accepeted, похоже, что я напишу/скопирую-вставку в настольное приложение. – 2010-01-07 09:00:06

0

Я думаю, что ваши варианты здесь Silverlight или somesort настольного приложения

Если возможно, не является библиотекой JQuery или другой язык клиента сценариев, которые могут сделать те же вещи

0

Это интересный запрос (не каламбур). Если вы используете Silverlight, возможно, вместо того, чтобы портировать свою логику, создайте в нем простой класс Proxy, который получает запросы от вашего серверного приложения и перенаправляет его для грязной работы. То же самое с входящими ответами: попросите прокси-сервера Silverlight вернуть его на серверное приложение.

Таким образом, вы можете запускать свое серверное приложение через прокси-сервер Silverlight в некоторых случаях и самостоятельно (без прокси-сервера) в других сценариях. Плагин silverlight должен обеспечивать совместимый API для программирования независимо от того, в каком браузере он работает.

Если вы используете прокси-решение в веб-браузере, вы даже можете пропустить Silverlight в целом и использовать вызовы JavaScript/AJAX. Конечно, такого рода вещи, как правило, чреваты проблемами совместимости с браузерами, и это наверняка будет неясной реализацией push/pull, но я думаю, что JavaScript может обращаться к доменам и URL-адресам и (в некоторых случаях использования) не ограничиваться тем, возник из.

Если защита Silverlight стоит на месте, вы можете посмотреть на другие виды программируемых плагинов для браузера, таких как Java, Flash и т. Д. Если память правильная, для плагина Java она может общаться только по сети с помощью домен, из которого он произошел. Такая защита слишком ограничительна для ваших потребностей сканирования.

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