2010-11-14 3 views
2

Я немного запутался здесь.Entity framework/WCF - безопасный/умный для отправки объектов entityObjects клиенту Silverlight?

У меня есть классы POCO, созданные с помощью рамки сущности, моделируемой из базы данных.

Очевидно, что я хотел бы использовать эти классы в клиенте тоже (и любой бухгалтерию на них было бы неплохо, если бы я хотел, чтобы отправить их обратно и вновь присоединить)

Я посмотрел через классы сгенерированный для ссылки на службу WCF, и кажется, что несколько сообщений передается через Интернет, но не похоже, что есть что-то опасное в безопасности.

И все же я не могу найти что-либо в Интернете об этом. Я иду по совершенно ужасному пути?

Помогите?

EDIT: Я полагаю, что они технически не являются классами POCO, если я создал их с помощью EntityFramework из базы данных; просто чтобы устранить любую возможную путаницу.

ответ

2

Это сложный вопрос для ответа, не зная подробностей о вашей системе, но в конечном счете, зависит от того, подвергает ли ваша организация EF в контракте службы WCF правильный путь или нет, сфера охвата и требований приложения, которое вы разрабатываете ,

Возможно задать себе следующие вопросы, которые, мы надеемся, направлять свое решение:

  1. Это, вероятно, ваша реляционная модель и модель объекта нужно будет расходиться? Это может быть обусловлено рядом факторов, но чаще всего требования к отчетности могут привести к определенному дизайну в вашей схеме базы данных (для производительности), которую вы не хотите отражать в своей объектной модели приложения. Использование созданных с помощью БД объектов EF во всех прикладных слоях может привязать вас к этой базе данных.
  2. Вы обеспокоены тем, что изменения в схеме базы данных могут потребовать от ваших клиентов восстановления своих ссылок на службы? Опять же, используя объекты EF по всему ваших уровней приложений означает, что любые изменения, внесенные в вашей БД схемы (будь относятся к клиенту или нет) может пузыриться к интерфейсу сервиса, потенциально разорвать клиент совместимость с этим интерфейсом
  3. Является ли производительность проблемой? Как вы упомянули, сгенерированные классы являются подробными. Скорее всего, вы будете перевозить ненужный багаж через провод, который можно было бы оптимизировать.
  4. Вы заинтересованы в том, чтобы разоблачить детали реализации схемы базы данных и механизм сохранения на проводе и ваших клиентов? Учитывая, что вы создали модель из базы данных, скорее всего, будут объекты, которые предоставляют информацию о вашем механизме схемы и стойкости, которые избыточны с точки зрения клиента.

Таким образом, может быть ограниченное число случаев, когда подверженность объектам EF может быть приемлемой, но, как правило, я планирую изменить и реализовать какой-то шаблон, в котором вы наберете свои объекты EF на легкую «стойкость», невежественных "POCOs на вашем уровне repository. EF 4.0 предоставляет возможность кодировать контекст, который возвращает POCOs, но в моем текущем проекте мы используем контекст codegen'd, а затем используем automapper для сопоставления объектов EF с нашими контрактами данных. Вне уровня хранилища ничего не известно об объектах EF, и я чувствую, что это позволяет создать более удобный и надежный дизайн.

 Смежные вопросы

  • Нет связанных вопросов^_^