Преобразование приложения MVP ASP.NET в Silverlight 3 - помогите выбрать архитектуру - PullRequest
3 голосов
/ 07 октября 2009

Меня попросили преобразовать приложение MVP ASP.NET в Silverlight. Это будет мое первое приложение Silverlight, и я изо всех сил пытаюсь определить, как лучше организовать архитектуру.

Приложение является стандартным приложением CRUD LOB. Я также буду использовать компонент ГИС, но я не думаю, что это имеет значение для общей архитектуры (пожалуйста, исправьте меня, если это так). Я буду использовать Subsonic в качестве DAL, но опять же я не думаю, что это имеет значение для моей архитектуры.

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

Чтение в Интернете немного сбивает с толку того, что считается «лучшими практиками» для архитектуры приложений Silverlight 3 LOB. Microsoft, похоже, продвигает эту платформу RIA - но она только в предварительном просмотре ... Готово ли это к производству? У меня сложилось впечатление, что Microsoft продвигает разные архитектурные рекомендации с Silverlight 3, но я изо всех сил пытаюсь выяснить, что именно представляют собой эти архитектуры!

Существует также Prism и проект Caliburn.

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

Я был бы очень признателен за дружеский толчок в правильном направлении.

редактировать в ответ на ответы до сих пор

  • Решением будет 100% полноэкранное приложение Silverlight. Я не заинтересован в смешанном интерфейсе Silverlight-Asp.net.

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

  • Решение должно исходить от Microsoft или, по крайней мере, иметь хорошую поддержку.

  • Если RIA подлежит изменению перед выпуском, это полностью вне конкуренции.

второе редактирование

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

Я обновлю тему, как только посмотрю Prism и CSLA.

Я люблю вас всех.

Ответы [ 4 ]

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

Так много вариантов :-) Ваш выбор, вероятно, зависит от нескольких факторов:

  • Сколько вы хотите повторно использовать текущее решение
  • Хотите ли вы полноэкранное SL-приложение или просто замените части сайта на «более богатый» контент
  • Как ваше текущее приложение структурировано, визуально и что возвращают ваши ActionMethods
  • 1010 * Временные рамки *

Службы RIA могут подходить, так как это позволит вам по крайней мере повторно использовать вашу модель и проверку (если вы используете аннотации данных), но до выхода она может измениться и, скорее всего, изменится.

Другой вариант - это базовое приложение Silverlight, для которого я бы порекомендовал взглянуть на PRISM и MVVM для его структурирования (хотя бы для того, чтобы снизить первоначальную полезную нагрузку!). Возможно, вы могли бы повторно использовать вашу модель, и в Silverlight есть поддержка аннотаций данных, но вы не будете слишком далеко от нее, создавая новое приложение.

Третий вариант, который вы можете любить или ненавидеть, - это создание «островков» с богатым функционалом в SL для областей вашего сайта. Вы можете использовать существующее приложение MVC и, возможно, ActionMethods возвращать JSON (или XML, если хотите), которые ваши SL-области могли бы использовать и визуализировать. У вас было бы достойное повторное использование кода, и вы могли бы расширить области сайта в изоляции.

Открытый ответ на открытый вопрос: -)

РЕДАКТИРОВАТЬ : Судя по вашим ответам, если бы это был я, я бы создал приложение PRISM. Если в настоящее время это веб-приложение, оно должно "хорошо" сидеть с моделью региона (хотя на самом деле вы не будете повторно использовать какой-либо код представления), а динамическая загрузка XAP поможет с вашей первоначальной полезной нагрузкой, если вы хотите одно полноэкранное приложение , Если это приложение на основе CRUD, то вы можете взглянуть на XAML Power Toys , чтобы быстро собрать данные вместе.

В случае данных вы можете либо повторно использовать свою модель и выставить ее через WCF или ADO.Net Data Services, дождаться стабилизации служб RIA (в зависимости от ваших временных масштабов) или по-прежнему использовать методы действия MVC, но вернуть JSON из них для приложения SL потреблять.

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

Мы шли уже пару месяцев. Мы используем сервисы Prism и RIA. Я думаю, что есть некоторая кривая обучения, но я наслаждаюсь Призмой, и есть некоторая поддержка этого онлайн.

Службы RIA немного более сомнительны, но я думаю, что их стоит использовать. Мы начали пытаться использовать его вскоре после июльского предварительного просмотра, и в Интернете было мало документации для просмотра. по прошествии этих нескольких месяцев нам удалось заставить ее делать то, что мы хотим, и в Интернете есть еще примеры и решения, которые помогают. Microsoft настаивает на этом, и я думаю, что они в конце концов пройдут.

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

Я лично проголосовал бы за призму для значительного приложения, у RIA действительно есть лицензия, но я бы только поверил в это. Помните, что вы можете смешивать и сочетать.

Выезд http://compositewpf.codeplex.com/

и http://www.sparklingclient.com/prism-silverlight/

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

Возможно, вы захотите взглянуть на среду CSLA, хотя она не для всех, это хорошая, простая и мощная среда.

Автор, Rockford Lhotka, также написал версию только для Silverlight и предоставляет серию видеороликов о том, как создавать приложения с использованием CSLA и Silverlight, чтобы помочь разработчикам быстро освоиться.

Некоторые ссылки для проверки:

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