Совместное использование общего DAL между WPF, Silverlight и ASP.NET

Каков наилучший метод / технология для совместного использования одного и того же уровня доступа к данным между WPF, Silverlight и ASP.NET?

Я использую платформу ADO.NET Entity и думал о создании DAL с использованием шаблона Repository, а затем использовал RIA Services в качестве фиктивного посредника для соединения Silverlight и ASP.NET. Это надежный план или есть другие лучшие решения?


person CrazyTn    schedule 05.10.2010    source источник


Ответы (2)


Одно из решений, которое мне нравится использовать, следующее: - Иметь проект, хранящий только сущности (например: Player, Game, Entity) без каких-либо ссылок на базу данных. - Имейте проект, реализующий шаблон репозитория (репозиторий, репозиторий и т. Д.) - Используйте первый подход кода ADO.NET Entity Framework для сопоставления с базой данных (он создает динамический дочерний объект ваших сущностей, содержащихся в вашем проекте, см. Блог ScottGu для объяснения того, как его использовать)

Подключить Silverlight к вашему шаблону можно с помощью служб Ria или классических служб WCF. Обычно я стараюсь использовать WCF, когда это возможно, поскольку Ria Services не совсем совместимы с разработкой MVVM.

Если вы хотите использовать WCF и делиться своими объектами DAL с Silverlight, вы можете создать проект библиотеки классов MyDal.Silverlight Silverlight и добавить символьную ссылку вместо копий всех объектов, которые вы хотите поделиться с Silverlight. Затем, когда вы добавите ссылку на службу с Visual Studio, она будет достаточно умен, чтобы не создавать копии Player, Game и User для вашего проекта Silverlight.

Если вы хотите использовать Ria Services, он все равно создаст копии ваших сущностей.

надеюсь, это поможет

Джон

person John Thiriet    schedule 05.10.2010

Услуги РИА

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

Модель проверки (с использованием украшения атрибутов и настраиваемых валидаторов) очень сильна и отлично подходит для применения бизнес-правил.

RIA успешно сосуществует с ASP.Net, так что это еще один плюс. За кулисами это просто еще одна служба WCF. Мы успешно используем службы RIA с MVVM и Prism.

Модель ADO.Net EF

Это испытанная модель с богатым набором функций. Единственные проблемы, которые я обнаружил, связаны с отношениями «многие ко многим». Опять же есть обходные пути.

DAL

Поскольку наборы изменений RIA управляются для вас во всем, включая POCO, это та область, которая потребуется самое внимание. Считается «плохим» предоставлять вашу модель EF напрямую RIA, и это, конечно, не защитит вас от изменений данных.

Я пока не могу особо рекомендовать какой-либо один шаблон (все еще экспериментирую), но убедитесь, что ваш выбор совместим с IQueryable. Функция разбиения по страницам и добавление к запросам Linq для выполнения на стороне сервера - это функции, которые вы не хотите терять!

person Gone Coding    schedule 05.10.2010