В чем плюсы и минусы использования классов, сгенерированных из WCF против создания собственной модели dll? - PullRequest
2 голосов
/ 22 февраля 2012

На данный момент мой проект сильно зависит от WCF, который связан с базой данных. мы используем классы, сгенерированные из базы данных, которые являются ORM, если вы собираетесь выполнять обработку в нашей системе.

Я знаю, что используя DataSvcUtil, мы можем легко извлечь все классы и скомпилировать их как DLL для совместного использования в других наших системах.

Но в нашем текущем проекте мы создаем еще одну DLL, которая отражает класс таблицы, сгенерированный WCF, вместо непосредственного использования этих классов.

  1. Итак, мой вопрос, есть ли лучшая практика в подобных вещах?
  2. и в чем плюсы и минусы этих двух методов?
  3. есть ли другие методы?

спасибо

Обновление:

Кажется, что консенсус заключается в том, чтобы создавать собственные пользовательские классы, а не полагаться на те, которые созданы WCF.

В настоящее время я следую этому методу, и на данный момент просто использую расширение для создания метода для преобразования в модель и еще один для преобразования его обратно в тип.

А наличие собственного более простого класса хорошо для расширяемости и прочего:)

Ответы [ 3 ]

1 голос
/ 22 февраля 2012

Я бы предложил по-прежнему использовать WCF, но использовать в качестве клиента скомпилированную dll вместо ссылки на сервис.Таким образом, вы по-прежнему можете поддерживать согласованность вашего интерфейса, даже если вы решите изменить базу данных в будущем.Преимущества использования DLL:

  1. . По мере роста вашей службы пользователи могут иногда получать тайм-ауты при попытке создать ссылку на службу
  2. . Вы будете в безопасности от людей, имеющих неправильную ссылку на службу.При создании ссылки на службу некоторые свойства могут быть изменены, поэтому пользователи могут генерировать потенциально мертвую ссылку на службу
  3. . Вы будете защищены от других сред IDE, генерирующих слегка отличающиеся ссылки.
  4. Немного проще быть обратно совместимым иЧтобы точно определить проблему, вы будете на 100% уверены, что способ использования клиента одинаков для всех пользователей.

Недостатки использования DLL:

  1. У вас будут дополнительныессылка
0 голосов
/ 22 февраля 2012

Лучше иметь отдельную dll, как в текущем проекте - разъединение - это лучшая практика, однако генерация WCF-данных из базы данных почти наверняка не очень хорошая идея - ее можно использовать для первого выстрела, но последующие изменения в вашей базе данных не должны напрямую отражаться в веб-сервисе.

Одним из преимуществ использования WCF является то, что вы можете легко добиться развязки через уровень обслуживания, если вы будете распространять dll, скомпилированную так, как вы описываете, вы по сути будете связывать всех клиентов с вашим представлением базы данных.

Разделение позволяет настроить вашу ORM / базу данных как нужную без необходимости перекомпиляции всех ваших клиентов.

С другой стороны - разъединение, как это, немного медленнее реализовать заранее - поэтому, если у вас очень маленький проект, это может быть излишним - но если вы работаете в кросс-команде или каким-либо образом распределены, это важно.

0 голосов
/ 22 февраля 2012

Я не очень знаком с WCF - но я использую Linq To Sql, который, как я предполагаю, генерирует те же типы классов (как и любой инструмент ORM).Я всегда создаю свои собственные классы POCO, которые описывают мою модель предметной области.Я знаю, что здесь требуется немного больше работы - и вам будет поручено сопоставить ваши классы POCO с вашими сгенерированными классами.Но я считаю, что это лучший способ сохранить чистоту классов моего домена.Сгенерированные классы могут быть несколько сложными с атрибутами, описывающими таблицы и столбцы, которые будут использоваться для их заполнения.Мне нравятся сгенерированные классы, потому что они облегчают мне взаимодействие с базой данных - но мне всегда нравится разделение наличия простых классов предметной области - это также дает мне гибкость в замене реализаций базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...