Является ли Codesmith жизнеспособным инструментом ORM (или я должен придерживаться настоящего ORM) [закрыто]

StackOverflow https://stackoverflow.com/questions/583232

  •  06-09-2019
  •  | 
  •  

Вопрос

Я покупаю инструмент ORM.Я мучаюсь из-за покупки либо CodeSmith (который в настоящее время доступен со значительной скидкой), либо инструмента ORM.

LINQ to SQL исключен из моего списка;SubSonic 2.x исключен из списка (я не хочу вкладывать деньги в этот тупик, зная, что скоро появится SubSonic 3.0.NHibernate кажется излишеством, как и LLBLGEN.Я лишь кратко оценил EF, но не сразу получаю от этого теплое и размытое ощущение.

Я сумасшедший, думая, что CodeSmith - это рациональная альтернатива готовым ORM?Окупит ли CodeSmith себя другими способами?

Пожалуйста, обратите внимание, что я никоим образом не связан с какими-либо поставщиками, и это не дешевый вариант, поэтому вопрос просто ради создания шума о продукте!Я ищу честные советы и мнения о CodeSmith как инструменте ORM (с предоставленными им шаблонами или доступными сообществу).

Это было полезно?

Решение

На самом деле, hibernate - это хороший инструмент ORM.Но на этом все заканчивается!

Возможности Code smith могут быть чем-то большим, чем просто специалист по реляционному отображению!Я использую code smith для создания некоторых форм пользовательского интерфейса, бизнес-уровней (шаблонов), уровней доступа к данным, шаблонов и так далее.Но для работы с code smith вам может понадобиться хороший опыт в системном проектировании или использовать их шаблоны, которые я не люблю использовать, но которые мне нравятся в качестве примера.

Подход Code smith имеет один особый недостаток;сначала вы должны спроектировать свою систему с учетом реализации базы данных.В настоящее время, при подходе объектного анализа, люди успешно внедряют бизнес-логику и сущности непосредственно перед внедрением любой базы данных – они забывают об этом.

Принять решение непросто;Я постоянно читал важные имена, такие как Скотт У.Эмблер, Кент Бек, Роберт К.Мартин и люди из серии Pragmatic Programmers, которые рекомендуют инструмент ORM для ускорения разработки.Они сказали, что разработчики инструментов ORM озабочены всеми проблемами базы данных (объединение в пулы, подключения, особенности поставщика базы данных и т.д.).Поэтому, когда нам нужно спроектировать уровни доступа к данным, мы также должны учитывать все эти аспекты.

Я считаю, что эти инструменты ORM поставляются вместе с избыточной нагрузкой.Я пока не знаю, как эти инструменты будут вести себя в малобюджетных проектах (я имею в виду не очень хорошие хостинг-серверы или какие-либо общие ресурсы).Я видел, как неопытные разработчики не принимают это во внимание, пытаясь проповедовать свои любимые инструменты.Но в проектах java hibernate уже является широко распространенным и хорошо известным инструментом.Я не сомневаюсь, что отличные проекты были реализованы с использованием этой технологии, но я видел кого угодно, и снова разработчикам java, возможно, потребуется научить нас (разработчиков .net), как создавать отличные решения.(Извините, мы должны признать.)

Единственное, что я бы порекомендовал, - это учитывать ваш контекст.Вы создаете новую систему?Вам нужна работа по шаблону?Вы когда-нибудь пытались рассмотреть такой генератор кода и инструменты ORM в целом?

Я действительно предпочитаю code smith, потому что я генерирую целые решения сразу, а не только уровень доступа к данным.Генерация кода очень важна, и не менее важно, что Microsoft имитировала подход code smith в visual studio.net 2008 и так далее.

Удачи

Другие советы

Code Smith - это не ORM, это просто IDE-генератор кода.

Вы можете сгенерировать DAL с помощью code smith на основе вашей базы данных, но это разрушило бы (одну из) целей использования ORM, которая в основном заключается в том, что она генерирует DAL динамически, поэтому вам не нужно писать код.

Если вы действительно пытаетесь сравнить их, то, возможно, вы могли бы получить некоторую выгоду, используя code smith, потому что у вас был бы абсолютный контроль над генерируемым кодом, но я не уверен, что эта выгода перевесит недостаток того, что может оказаться потерей месяцев на написание шаблонов code smith для генерации DAL на основе вашей базы данных.

И затем, учитывая, что происходит, когда вы вносите изменения в свою базу данных, вам, скорее всего, придется запускать code smith и выполнять сборку каждый раз, когда вы это делаете.Хороший ORM позволит вам настроить изменения вашей базы данных в схеме, а затем она будет генерироваться динамически, так что вам не придется беспокоиться (так сильно) о внесении изменений в базу данных.

NHibernate ( ГИбернация ) это тот путь, по которому нужно идти.Это ORM корпоративного уровня.И с автоматической конфигурацией на основе соглашений из Свободное владение библиотека, конфигурация смехотворно проста, если вы придерживаетесь единого соглашения (вы можете указать соглашения или существуют значения по умолчанию).

С NHibernate объекты вашего домена являются чистыми объектами C #.Никаких странных базовых классов.Никаких закодированных файлов, которые нужно обновлять каждый раз, когда вы решаете внести изменения.

Я пользуюсь NetTiers ежедневно, и мне это нравится.Документация для этого отстой, но для меня это была такая экономия времени в офисе.Многие люди жалуются на объем кода, который он создает, но из того, что я видел, код, который он создает, намного быстрее, чем кодирование большей части вручную.Он также генерирует все sprocs, которые вам понадобятся для вашего базового CRUD-материала.Методы доступа, которые он создает, также довольно хороши, получая доступ ко всем вашим уникальным ключам, внешним ключам и первичным ключам.

Я думаю, что использование Codesmith является жизнеспособным.Но вам следует присмотреться к фреймворкам, которые его используют. Чистые уровни это платформа приложения, на которой можно построить хороший DAL.

Почему что - то вроде LLBLGen должно быть излишним ?Мы используем его на работе, и после несколько крутой кривой обучения это очень приятно :).Вы должны, по крайней мере, попробовать это и nhibernate.

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

Используйте NetTiers и .netMVP .NetTiers - очень хороший DAL, а .netMVP - это фреймворк, который я только что выпустил для поддержки абстракции на уровне пользовательского интерфейса.:)

http://community.codesmithtools.com/CodeSmith/m/templates/42499.aspx

Я использовал LLBLGen несколько лет назад.Я надеюсь, что то, что я видел, было исправлено.Мы просмотрели встроенный SQL, который был создан, и увидели, что для выбора одной строки данных с первичным ключом, переданным в:

SELECT DISTINCT * FROM TABLE WHERE primark_key_id = @primarykey.

Действительно, ОТЧЕТЛИВЫЙ?Я всегда умолял вместо этого заняться обработкой магазина, но руководитель проекта отказался.Я не уверен, сколько времени было сэкономлено за счет написания неэффективного кода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top