Какие вопросы следует учитывать при выборе технологий доступа к данным?

Были времена, когда нам приходилось выбирать между 2 или 3 технологиями / стратегиями для разработки модулей.

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

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

Причина возникновения этого вопроса в том, что недавно нам пришлось работать над проектом, и спецификации для DataAccessLayer были окончательно доработаны с помощью ADO.NET. Примерно на 20% пути в проект к нашему отделу (но не к нашей команде) присоединился новый разработчик. Я считаю его умным, полезным, и нам нравится с ним работать.

Во время проверки кода он лично посоветовал нам использовать LINQ to SQL для модуля, над которым мы работали. Он был убедителен. После положительных дискуссий мы согласились использовать LINQ to SQL.

Однако "менеджмент" этому не обрадовался. Был аргумент, что мы должны были придумать эту "фантастическую идею" перед запуском модуля. Их аргумент состоит в том, что ресурсы уже потрачены на 20% работы, и эта работа будет потрачена впустую.

Учитывая частоту появления новых продуктов / технологий / стратегий, нам трудно иметь всю информацию обо всех этих инструментах и ​​технологиях.

Мы добились успеха с использованием ADO.NET. У нас было представление о LINQ (в целом), NHibrnate и многих других, но мы пошли дальше ADO.NET. Я не против изучения новых вещей, поэтому мы коллективно настаивали на использовании LINQ.

Вопрос. Виновны ли мы в том, что сделали этот выбор тогда, когда мы сделали это?

Существуют ли какие-либо показатели или рекомендации для принятия решения о том, какую технологию выбрать для определенных ситуаций, а когда не переключать промежуточный поток?


person Asad    schedule 26.01.2010    source источник
comment
Менеджмент должен быть счастлив, что вы были достаточно готовы адаптироваться к новым предложениям нового разработчика, сэкономив тем самым время и / или деньги. Если руководство хочет свалить вину на кого-то, оно должно указать на себя либо в отсутствии дальнейшего обучения (для вашей команды), либо в отсутствии контроля и понимания самих себя.   -  person Leonidas    schedule 27.01.2010
comment
Это опрос, тирада, блог или что-то в этом роде?   -  person    schedule 27.01.2010
comment
Кстати, вы знаете, что MS остановила дальнейшую разработку LINQ to SQL в пользу LINQ to Entities / Entity framework?   -  person Doc Brown    schedule 27.01.2010
comment
Вы используете то, что считаете полезным, оценив это. Например, используя привязку модели с MS MVC 2, где вы можете связать свои классы POCO с одноименными представлениями. Вы можете сделать это вручную для того, что у вас есть, и использовать новую технологию там, где и когда она подходит. Что касается NHibernate, команды будут использовать его, если все члены команды его понимают (как и с любой технологией). Вы вернетесь к технологиям, с которыми вы сможете разумно справиться в установленные сроки.   -  person Zachary Scott    schedule 27.01.2010


Ответы (7)


Сроки и риск проекта. Это основы.

Я не очень хорошо знаком с LINQ или ADO.NET, но это не важно.

На высоком уровне я не вижу разницы между LINQ и ADO.NET. Я вижу, что LINQ «лучше», «элегантнее», меньше кода и понятнее. Но, по правде говоря, это не большие риски проекта, если команда уже знакома с ADO.NET и привыкла к ней. Вы по-прежнему будете получать свои данные в базе данных и из нее, и команда уже знает, как работать с ADO.NET «менее элегантно, больше кода, менее понятно» (помните, что это обобщения, а не суждения как таковые) .

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

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

Несмотря на то, что существует множество замечательных новых технологий, и они появляются каждый день, многое можно сказать о борьбе «дьявола, которого вы знаете», против принятия чего-то нового и недоказанного. Вот почему лично я провожу большую часть такого рода исследований в свое время, дома, в «режиме хобби», чтобы я мог быть лучше информирован о новых проектах, когда новая технология может быть подходящей и подходящей по сравнению с нашими проверенными и верными "олдскульные" методы.

В противном случае во время спецификации проекта необходимо выделить время для проверки новой технологии и определения ее пригодности для включения в начале проекта. Часто людям, составляющим спецификации, не дается это время.

person Will Hartung    schedule 26.01.2010
comment
+10. Хотел бы я проголосовать за это более одного раза. Смена технологий в проекте, который уже находится в стадии разработки, очень разрушительна (и убивает сроки). Особенно, когда вовлеченным разработчикам придется осваивать новую технологию на лету, когда они уже отстают от графика только из-за смены технологии. Всегда будут будущие проекты, и намного проще внедрить новую технологию, когда вы уже нашли время, чтобы изучить эту технологию. (При этом LINQ может очень легко сосуществовать с ADO.NET, но все же ... в следующий раз, не в этот раз.) - person Cylon Cat; 27.01.2010

Принимая во внимание все современные технологии, при запуске нового проекта становится все более сложной и все более сложной задачей.

Я стараюсь всегда следить за тем, что является передовым, чтобы знать, что там есть. Для этого нужно читать много блогов, посещать конференции и оставаться в курсе.

При этом вы не хотите всегда использовать все, что находится на переднем крае. Мое практическое правило - оценить дату отгрузки продукта. Я стараюсь использовать любую новейшую технологию, которая получила хотя бы один «пакет обновления» или обновление к дате, когда мы собираемся его отправить. Конечно, здесь много догадок, поскольку даты выпуска неизвестны, но опыт (в наблюдении за индустрией) очень помогает.

Есть искусство делать обоснованные предположения о том, какие технологии будут популярными, а какие со временем отпадут. К сожалению, это действительно вопрос опыта. Если у вас есть разработчик с многолетним опытом, который также всегда в курсе текущих технологий (важно), то они - хороший ресурс, который поможет в принятии этого решения.

person Reed Copsey    schedule 26.01.2010
comment
ИМХО вам редко следует использовать то, что находится на переднем крае. Дата отгрузки - это одно, но передовые технологии, как правило, иногда оказываются просто большой шумихой и часто очень быстро исчезают с рынка. - person Doc Brown; 27.01.2010
comment
Вот почему я говорил, что изучайте передовые технологии, но нацелитесь на то, что будет иметь хотя бы одно обновление (чтобы оно не было передовым по времени доставки). - person Reed Copsey; 27.01.2010

Существует множество факторов, которые могут повлиять на то, какая технология «подходит» для данного решения или проекта разработки.

Много раз вы будете иметь множество внутренних и внешних влияний в отношении вариантов, того, что кажется «правильным», что популярно и что может быть самым интересным.

Принятие «правильного» решения, как я вижу, - это выбрать наиболее стабильное, задокументированное и работоспособное решение. Теперь, чтобы сделать это, вам нужно идти в ногу с технологиями и знать, что там есть. Поэтому необходимо поддерживать LINQ, Entity Framework и т. Д.

Настоящее «искусство» - это решить, что подходит для вашей среды, и каждая среда индивидуальна, у вас есть много разных вещей, которые нужно учитывать. Это только для внутреннего использования? Если нет, то какой у вас контроль и влияние на окружающую среду? Можно ли использовать самую последнюю версию VS и т. Д.

Я НЕ являюсь поклонником использования «передовых технологий» только потому, что это именно то, что нужно. Для использования новых инструментов необходима техническая база.

person Mitchel Sellers    schedule 26.01.2010

Переход на Linq-to-SQL после того, как проект уже начался, и когда не все были готовы, вероятно, было ошибкой, да. Даже если вы должны использовать его с самого начала, лучше придерживаться того, что вы знаете после запуска проекта. Другое дело - обратное: если вы пробуете что-то новое в начале проекта, и все идет плохо, может быть, лучше вернуться к чему-то более знакомому.

В случае Linq-to-sql маловероятно, что это даст вам преимущества, которые стоит перейти на него mid-project. Это была авантюра, и, к сожалению, похоже, что она не сработала.

Варианты доступа к данным .Net сводят многих из нас с ума. Ты не одинок. Даже пытаться узнать обо всех технологиях становится сложно. Чтобы правильно оценить, вы должны иметь опыт и тщательно исследовать. Вы определенно не хотите пробовать последнюю версию, потому что она кажется изящной. Некоторые из наших старых знакомых технологий (например, ADO.NET) работают нормально.

person Patrick Karcher    schedule 26.01.2010

Имея 1-летний опыт работы, вы не виноваты в том, что изначально не выбрали правильную технологию. Подобные решения трудно принимать, и они приходят с опытом.

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

person joerage    schedule 26.01.2010

В половине случаев кажется, что это больше связано с использованием ресурсов, которые у вас есть (то есть, какие языки знают люди?) И на что у нас есть лицензии?

person Matt    schedule 26.01.2010

Использование «LINQ» не обязательно является «фантастической» идеей, будь то в начале или в конце проекта. Если ваша команда имела опыт работы с ADO.NET и успешно завершила проект с использованием этой технологии, то это действительно была технология, которую вы должны были использовать.

Дело в том, что если у вас есть команда, которая "знает" VB6 от и до ... ну угадайте, что ... вам больше нравится писать код на VB6.

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

person Community    schedule 26.01.2010