Взаимодействие Silverlight с веб-сервером - PullRequest
2 голосов
/ 05 октября 2009

Я никогда раньше не работал с Silverlight, но у меня есть требование создать довольно динамичную / интерактивную форму для заполнения. Это оставляет мне выбор между двумя технологиями, с которыми у меня мало опыта: JavaScript / jQuery или Silverlight. (редактировать: приложение внутреннее, я могу смело предположить, что Silverlight доступен)

В конце мне нужно отправить некоторые данные обратно на сервер. Я знаю, что с нормальной формой HTTP в ASP.net у меня может быть кнопка и событие onClick - стандартные вещи. Подход JavaScript должен включать некоторую манипуляцию DOM для динамического добавления / удаления полей, но когда я нажимаю на кнопку, текущая DOM подается в мое приложение ASP.net, и я обрабатываю как обычно Это все еще нормальное приложение WebForms.

Но как будет работать взаимодействие с Silverlight? Могу ли я иметь кнопку в приложении Silverlight, которая по существу отправляет HTTP-форму? Или я бы использовал веб-сервис для этого? Было бы замечательно, если бы приложение Silverlight могло вернуть данные с сервера, так что я полагаю, что это веб-сервис?

Ответы [ 9 ]

2 голосов
/ 05 октября 2009

Я не знаю, как написать JQuery, но я знаю Silverlight. Я бы сказал, что если бы все, что вам нужно, это форма, то Silverlight был бы немного излишним, и вы могли бы добиться большего успеха с чем-то вроде JQuery.

Однако, поскольку вы знаете C #, лучше сэкономить время на чем-то ближе к тому, что вы знаете. Если бы я собирался написать его, я бы использовал Silverlight, модель сущности ADO.Net и службы RIA. Используя Silverlight Dataform, вы можете получить довольно динамичную форму очень быстро, и вы можете даже иметь простую проверку, чтобы сохранить ваши данные в чистоте.

проверьте здесь для сообщений Брэда Абрамса на этом.

2 голосов
/ 07 октября 2009

Я предлагаю вам попробовать Silverlight, чтобы почувствовать, насколько мощна эта среда. Лично я думаю, что jQuery - это хорошо, но вы получите гораздо более управляемую и насыщенную среду, если будете использовать Silverlight.

  1. Предполагается, что вы используете загрузку Visual Studio 2008 Инструменты Microsoft® Silverlight ™ 3 для Visual Studio 2008 SP1 . Это позволит вам создавать проекты Silverlight в Visual Studio. Вы также можете использовать Expression Blend для создания приложений Silverlight, но если вам удобно писать XAML без визуального дизайнера, Visual Studio может показаться более зрелым с точки зрения разработчика.
  2. Если хотите, можете попробовать Microsoft .NET RIA Services, июль 2009 г., предварительный просмотр . Это очень мощная среда, позволяющая вашему приложению Silverlight беспрепятственно работать с вашей моделью данных на сервере ASP.NET. В частности, существует очень хорошая интеграция с LINQ to SQL и ADO.NET Entity Framework. Однако, если вы новичок в Silverlight, вы можете найти кривую обучения немного крутой. Вам нужно будет загрузить операции запроса, чтобы выполнить их асинхронно и т. Д. Чтобы начать, ознакомьтесь с документом Word, найденным в месте загрузки.
  3. Как и предлагали другие, вы можете просто скрыть HTML-форму на веб-странице, на которой размещен элемент управления Silverlight, а затем использовать объект HtmlPage из Silverlight для доступа к DOM браузера для отправки вашей формы.
  4. Если вы хотите выполнять операции POST из Silverlight без использования инфраструктуры веб-служб, такой как .NET RIA Services или WCF, вы можете использовать объект WebClient или HttpWebRequest. Silverlight 3 имеет два стека HTTP, и по умолчанию используется стек браузера, обеспечивающий использование в вашем запросе файлов cookie браузера (например, файлов cookie проверки подлинности форм).
  5. Ваша форма имеет сложную логику взаимодействия, и я настоятельно рекомендую вам взглянуть на шаблон MVVM. В Silverlight вы создаете модель представления, содержащую все соответствующие данные для формы. Соответствующие данные включают в себя не только значения полей в форме, но и информацию о том, какие элементы управления включены, информацию о выборе, если это применимо, и т. Д. Затем вы связываете форму (представление) с моделью представления и реализуете INotifyPropertyChanged в модели представления вы получаете сложную логику взаимодействия, если не бесплатно, по крайней мере, способом, который довольно прост в обращении как разработчик. Частичные клиентские классы, сгенерированные для вас в .NET RIA Services, являются особенно хорошими кандидатами для моделей представлений, что упрощает применение шаблона MVVM в этой среде.
2 голосов
/ 07 октября 2009

Вот способ, которым вы можете сделать это через Silverlight, если вы хотите сделать пост формы нажатием кнопки.

На странице aspx, на которой размещен элемент управления Silverlight, добавьте div, в моем примере я назвал его formDiv. Переменная formData - это ваша форма, которую вы создали для публикации.

        var doc = HtmlPage.Document;
        var el = doc.GetElementById("formDiv");
        el.SetProperty("innerHTML", formData);
        try
        {
            el.Children[0].Invoke("submit");
        }
        catch (Exception)
        {
            throw new LogicException("Error launching post");
        }
2 голосов
/ 05 октября 2009

Звучит так, как будто вы ищете веб-сервис с Silverlight. Фреймворк относительно надежен и прост в реализации - после того, как вы окунетесь в него, не должно возникнуть никаких проблем с быстрым запуском вашего веб-сервиса.

http://silverlight.net/getstarted/

Хотя ваше приложение Silverlight может публиковать окружающую его HTTP-форму, вы должны убедиться, что это правильный путь реализации вашей проблемы.

1 голос
/ 07 октября 2009

В двух словах, он использует веб-службы через реализацию клиента WCF Silverlight, а Silverlight предлагает несколько способов доступа к веб-службам.

  1. Вот краткое руководство по добавлению простой службы WCF с поддержкой Silverlight на ваш сайт

  2. И сравнение с простыми службами ASMX

  3. «Горячая» новинка - .net RIA services , вот учебник вы также должны проверить блог Брэда Абрама , у него есть много информации об этом.

Видео silverlight.net также прекрасно, есть несколько примеров.

1 голос
/ 07 октября 2009

Учитывая, что ваш проект является внутренним И если вы можете убедиться в том, что Silverlight установлен, И учитывая, что все ваши варианты выбора могут дать вам то, что вы хотите, то ответом может быть предпочтение или зуд (то, что вы лично хотите играть). 1001 *

Вы не указали срок выполнения проекта. С Silverlight, если вы хотите получить результат, подобный RIA-дизайнеру, вам, скорее всего, понадобится Blend (о котором вы не упоминали, если у вас был доступ), далее вам придется потратить немного времени на изучение того, как использовать Смешайте (сколько усилий зависит от того, насколько богаты ваши потребности в RIA).

Разбивка, как я ее вижу:

Веб-сервисы: если вы начинаете заново, вы должны использовать RIA или WCF, если у вас нет веских причин использовать веб-сервис (как будто он уже существует, у вас нет выбора, и так далее).

WCF: заменяет веб-сервисы, однако вам часто придется самостоятельно строить большую часть сантехники.

RIA: предназначен для реализации служб данных для Silverlight (ожидается, что в будущем он будет расширен за счет ASPX). RIA Services еще не совсем в бета-версии. Вам следует помнить, что могут произойти критические изменения, и будет ли приложение не работать, пока вы не исправите эти изменения, слишком сильно повлияет на вашу компанию?

Вы исключили ASPX без объяснения причин. Это может быть, что ваше представление о динамике отличается от многих. Мне интересно, неужели ASPX и AJAX (при условии, что вам даже нужен AJAX) не решат вашу проблему лучше всего?

jQuery, безусловно, справится с этой задачей, поэтому мяч на вашей площадке. Сколько у вас есть времени и чему вы хотите научиться и насколько динамичным вы действительно хотите / должны быть?

Обращаясь к некоторым другим пунктам этого шага. Обучение Silverlight не должно быть таким крутым. Если вы не изучаете анимацию, то Blend IDE, вероятно, занимает больше всего времени. Фактически, если вы в основном используете VS для кодирования, тогда Blend будет в первую очередь использоваться для разметки. Для простого RIA вы могли бы даже пропустить Blend (но я бы не рекомендовал делать это).

Наконец, вы можете подумать о работе над некоторыми спецификациями (поведение / дизайн / БД), а затем спросить, что люди будут использовать.

1 голос
/ 05 октября 2009

Silverlight - мощный инструмент, но в зависимости от требуемого уровня динамичности путь наименьшего сопротивления может заключаться в простом создании страницы ASP.NET и ее динамичности с использованием jQuery.

Если вы используете jQuery, вы будете изучать Javascript и библиотеку jQuery. Если вы используете Silverlight, вы будете изучать WPF, WCF и их взаимодействие с кодом сервера .NET.

Если вы уже строите сайты в ASP.NET, вы на 80% с маршрутом jQuery. Если вы пойдете по маршруту Silverlight, я думаю, что кривая обучения будет круче.

Если вы продолжите использовать опцию Silverlight, у Тим Хойер есть несколько примеров обмена данными из Silverlight с веб-сервисами Asp.net .

1 голос
/ 05 октября 2009

Не могу поверить, что все поддерживают ваше предложение Silverlight. Используйте вместо этого jquery! Вы можете создать довольно динамичную форму и быть уверенным, что у вас будет доступ к пользователям на разных платформах. Я веб-разработчик, и у меня не установлена ​​среда выполнения Silverlight. Я настоятельно рекомендую jQuery!

1 голос
/ 05 октября 2009

Да, у вас может быть кнопка в приложении Silverlight, которая будет отправляться на сервер как форма ASP.net. Это та же модель, что мы можем использовать элементы фреймворка .net в Silverlight (хотя и в ограниченном количестве)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...