Объекты самоконтроля и объекты POCO

Мы начинаем новый веб-продукт, на котором мы планируем разоблачить нашу бизнес-логику через службы WCF. Мы будем использовать ASP.NET 4.0, C #, EF 4.0. В будущем мы хотим создать приложения iphone и приложения WPF на основе сервисов. Я много читал об использовании POCO vs Self Tracking Entities (STE), и я понимаю, что STE не работают с веб-сценарием. Может ли кто-нибудь пролить свет на эту проблему?

Для меня STE – абсолютно неправильная концепция. Это просто еще одна реализация DataSet.

  • В приложении ASP.NET вам нужно будет хранить STE где-то среди запросов. В первом запросе вы запросите свой источник данных, чтобы получить STE и предоставить данные на странице. В следующем запросе (postback) вы захотите изменить STE с возвращенными данными из браузера. Для поддержки отслеживания вам придется использовать тот же STE, что и в первом запросе => вам нужно будет хранить STE в viewstate (если вы хотите использовать ASP.NET WebForms) или сеанс.
  • STE бесполезна для SOA или совместимости. Логика отслеживания является частью STE = она работает на клиенте. Если вы обнаружите STE в сервисе, вы сразу же ожидаете, что клиентская сторона будет использовать те же функции отслеживания, которые включены в логику STE. Но эти функции автоматически не предоставляются другой стороне. В .NET у вас есть они, потому что вы делитесь сборкой с STE. Но на другой платформе вы должны объяснить разработчикам, как реализовать логику STE, чтобы заставить ее работать на вашей стороне. Это будет, вероятно, самым ограничивающим для вас случаем из-за приложения iPhone.

Self Tracking Entities прекрасно работают в среде MVC с сценарием WCF. Я участвовал в двух проектах, использующих их (один в производстве, один почти).

С помощью POCOs вы потеряете отслеживание изменений по проводу, что создает большую дополнительную боль, потому что EF теперь должен повторно запрашивать информацию о состоянии. Если вы используете EF и WCF STE, решаете множество проблем и делаете весь ваш упорный конвейер действительно гладким.


Можете ли вы привести цитату из этого требования? «STE не работают хорошо с веб-сценарием»

См. http://msdn.microsoft.com/en-us/data/jj613924.aspx , поскольку STE больше не рекомендуется! Корпорация Майкрософт рекомендует использовать любой из ASP.NET Web API, WCF Data Services или Entity Framework API (сложные операционные системы)

Если эта услуга будет потребляться любым приложением, у вас нет прямого контроля, вам, вероятно, следует подумать о том, чтобы развести что-либо с EF (или nHibernate или Linq2Sql или любым другим решением управления сохранением данных) от ваших служб и ваших данных переносить объекты. Это изолирует внутренние изменения от взлома клиентов. Нарушение клиентов, как правило, плохо.

  • Служба имеет нулевые приложения (неинфраструктурные) конечные точки
  • Как я могу вернуть пользовательский код состояния HTTP из метода WCF REST?
  • C # - WCF - межпроцессное взаимодействие
  • WCF + REST: Где данные запроса?
  • Служба WCF Максимальная квота длины массива (16384) превышена
  • Ошибка WCF. Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт UserService.UserService.
  • DataContract Сериализация XML и атрибуты XML
  • Управление сложными файлами Web.Config между средами развертывания
  • Как установить HTTP-прокси (WebProxy) на клиентском прокси-сервере службы WCF?
  • WCF и интерфейсы по контрактам данных
  • Лучший способ поддерживать данные «application / x-www-form-urlencoded» с WCF?
  • Давайте будем гением компьютера.