Несколько случайных ответов ...
Я не думаю, что MEF особенно хорошо подходит для Silverlight. Это в первую очередь для настольных приложений и может быть адаптировано для других целей, где подключаемые модули находятся в локальной файловой системе относительно приложения.
MVVM требует, чтобы вы понимали роли. «Представление» - это ваш XAML и код. Выделенный код должен обрабатывать события из пользовательского элемента управления, но это немного больше.
ViewModel содержит данные, к которым будет привязан пользовательский элемент управления. Как правило, ViewModel привязывается к View как его DataContext, так что все в форме может связываться со свойствами в ViewModel. ViewModel должен реализовывать INotifyPropertyChanged и вызывать события изменения свойств для каждого свойства, к которому привязана форма.
Возможно, вы захотите создать коллекцию ObservableCollection, используя EntitySet в качестве источника. Это будет обрабатывать INotifyCollectionChanged для привязки данных. Если сущности в EntitySet также обрабатывают INotifyPropertyChanged, то вы в хорошей форме для привязки данных для коллекций.
Вы можете создать свойство для отдельной сущности и привязать к нему данные, предполагая, что уведомление об изменении также реализовано (как для элементов сущности, так и для свойства сущности).
Службы RIA будут восстанавливать DomainContext при каждой сборке, что немного помогает в синхронизации. Тем не менее, он предназначен для предоставления уровня обслуживания над ORM, поэтому ваше ORM или другое отображение данных все равно придется поддерживать другими способами.
Я не смотрел финальную версию RIA Services, но бета-версия меня не сильно впечатлила. Я предпочел бы иметь хорошие классы сущностей, определенные на сервере, и поделиться ими с проектом Silverlight. Тем не менее, это не так просто настроить, и требует некоторого нетривиального WCF, который не зависит от ссылок на сервисы. (Окончательный выпуск RIA Services, возможно, уже кое-что исправил, но ссылка на собственный сервис WCF в Silverlight довольно злая, в основном потому, что он не создает автоматически воссозданные сгенерированные классы и жестко кодирует URI для службы на стороне сервера. .)
Метаданные были еще одной проблемой в бета-версии RIA Services. Атрибуты метаданных проще прикрепить непосредственно к вашему классу DataContract и отдельным свойствам DataMember, если вы управляете источником сущности. Опять же, это может означать, что вы не используете RIA Services. Написание отдельного класса метаданных, как это требовалось для беты RIA, не было хорошим решением.
В итоге я не использовал RIA Services для Silverlight 3 и не пожалел об этом. Вот отличная статья о WCF и Silverlight . Несмотря на то, что в нем написано Silverlight 2, он все еще на цели для любого выпуска Silverlight.
Я рекомендую MVVM Light. Источник доступен на Codeplex, если это проблема. Он обеспечивает поддержку обмена сообщениями и командования, а также ViewModelLocator; хотя для понимания последнего требуется немного усилий, это действительно хорошее расширение базовой модели MVVM.
Надеюсь, это поможет .....