Здравствуйте, igor-booch, Вы писали:
IB>>>Вот и всатаёт вопрос. Хочу использовать EntityFramework, с ним разработка быстрее и качественней. Но возможно ли что-то предпринять сейчас, чтобы потом безболезненно перейти на web сервис, оставив при этом максимум плюшек от EntityFramework, максимально заюзать уже написанный код. Или сразу отказываться от EntityFramework? Может есть какие-то готовые ORM или кэши не завязанные на БД, по функциональности похожие на EntityFramework?
_>>Идея хорошая, и посещала уже многих. Но есть серьезное "но". Методы EF — синхронные. Не знаю, может сейчас это исправили. И это ставит(ставило) крест на EF как унифицированном клиенте.
IB>Насколько я понимаю, ты описываешь следующую проблему. На декстопе я могу
IB>1) считать данные IB>2) показать форму IB>пользователь вводит данные IB>3) записать данные
IB>1 и 2 я могу делать параллельно, то есть считывать данные асинхронно. IB>1 и 3 я могу сделать в одном контексте
IB>В веб приложении считывать данные и одновременно показывать форму затруднительно. IB>В веб приложении каждый запрос делается в отдельном контексте, поэтому 1 и 3 будут в разных контекстах (решается через отсоединённый сущности).
IB>Правильно?
Нет. Не важно какие там контексты, это технические мелочи. EF — имеет методы, вызов которых сводится к вызову апи DB, т.е. IDbConnection и других таких же типов.
И это работает синхронно. Т.е. по стеку неразрывно. В вебе же все асинхронно, и в стеке нельзя зависнуть в ожидании результата. Так было.
IB>В моём случае веб сервис может потребоваться в первую очередь для мобильного приложения на Xamarin. В нём можно сделать как на десктопе.
Все мобильные клиенты как правило асинхронные и я не слышал там о применении EF.
IB>PS: в EF6 появились асинхронные методы
Если появились то надо копать, здесь я не осведомлен на сколько сложно EF пропустить через веб.
Ну а вообще надо задать себе вопрос — а действительно ли так надо EF или другой ORM? Я понимаю только одну его сильную сторону — ссылочная целостность. Но она нужна на толстых клиентах
с тотальным кешированием, сложной логикой. Клиенты для соцсетей например вряд ли нуждаются в применении ORM.