Я хочу знать, рекомендуется ли использовать службы самообучения (в Entity Framework) со службами WCF?
Это зависит от того, кого вы спрашиваете.Если вы спросите MS, они скажут вам «Да», потому что им просто нечего предложить.STE были ответом на это очень старое предложение MS Connect .Проблема в том, что EF сама имеет ужасно плохую поддержку для объединения изменений между двумя графами сущностей (вы должны сделать это полностью самостоятельно), и разработчики, работающие на платформе MS (иногда включая меня), имеют общие черты поведения:
- Им лень разрабатывать собственное решение проблемы, и они ожидают некоторой магии непосредственно в API, предоставляемых MS.
- Большую часть времени они не обучены / опытны / компетентны в технологии, которую ониприходится использовать, потому что им приходится слишком часто переходить на новый.
- Единственные API, которые они знают, являются частью .NET Framework.Они не ищут других вариантов и не сравнивают функции.
Первые два пункта являются результатом стратегии MS, где RAD становится синонимом для дизайнера (или недавно также шаблоны T4).
Я разделяю @Richard мнение о STE.Я бы добавил еще один недостаток STE - они перемещают большие наборы данных между участниками.Если вы решите получить граф сущностей с сервера, измените единственную сущность на графе и отошлите данные обратно, они снова передадут весь граф.Передача только измененных объектов приводит к борьбе с основной логикой STE.Я также боюсь, что они отслеживают изменения полностью на уровне объекта, а не на уровне свойств.В случае модификации объектов с большими двоичными или строковыми данными это может привести к передаче слишком большого количества ненужных данных между службой и базой данных и между службой и клиентом.
В любом случае для простого приложения с низким трафиком данныхи малые предприятия, они могут хорошо выполнять свою работу и позволяют быстро создавать приложения, но без строгого разделения интересов.Вы будете получать объекты из службы и привязывать их непосредственно к пользовательскому интерфейсу WPF, и они смогут отслеживать изменения для вас.Позже вы вернете сущности обратно в сервис, и они смогут сохранить изменения.Ваш клиент и сервис будут тесно связаны, но в некоторых случаях это может быть достаточно хорошим.