2010-11-01 5 views
7

Я новичок C# developer. Когда я только начал изучать программирование, тонкости были довольно простыми, вы видите проблему, вы разрабатываете решение, проверяете его и все работает так просто.Как получить доступ к данным. Рабочий практик

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

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

У меня нет руководителя команды или соседа супер-опытного программиста, поэтому я должен попросить у вас совета.

Как вы понимаете доступ к данным в своих реальных приложениях, написанных на C#?

+0

Ну сначала вы бы решить, что ваше приложение/делает, какой клиент ему нужно поддерживать, какие требования к трафику/нагрузке, какая инфраструктура и т. д. Является ли это конкретным вопросом или общим? – RPM1984

+0

Очень хороший вопрос мужчина :). Я не буду отвечать, но мне просто нравится делиться с вами, что я чувствую себя точно так же. Одно замечание, если вы когда-либо делали Конкурсы программирования? –

+0

- RPM1984. Это общий вопрос. Предположим, что у нас есть MS SQL SERVER 2008 на удаленном ПК. База данных похожа на Северный. Я должен разработать бизнес-приложение, которое будет получать и обновлять данные в таблицах на основе набора правил и т. Д. ... для Gunner, я не знаю, что вы имеете в виду. – v00d00

ответ

2

С очень общей точки зрения, я всегда скрывать и детали реализации доступа к данным за интерфейс, как это:

public interface IRepository<T> { /*...*/ } 

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

  • NHibernate
  • Entity Framework
  • (API, низкого уровня, такие как IDataReader могут по-прежнему имеют место в ограниченных сценариях)
1

Часто бывает трудно увидеть выгоду абстракции, не видя преимуществ, которые она предоставляет в реальном мире. Лучшим советом, который я могу дать, является ознакомление с принципами SOLID, а затем при написании приложения попытайтесь подумать о том, как клиент может прийти к вам и сказать «Теперь мне нужно это сделать», что может быть тонким изменением функциональности или серьезное изменение. Подумайте, как это повлияет на ваш код и сколько мест вам потребуется для внесения этих изменений. Как только вы внесете эти изменения, насколько вы уверены в том, что не сломали что-то еще?

Еще одна идея - загрузить одно из примеров приложений. Один из моих любимых фаворитов - Data Access Platform sample, предоставленный на Codeplex. Попробуйте выполнить этот код и посмотреть, как реализация абстракции и шаблонов минимизирует влияние на код в целом, когда приходит время для изменения.

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

1

Некоторые вопросы для рассмотрения на DAL: (примечание: очень самоуверен, но ответы на этот вопрос должен быть)

  • Encapsulate логики за Repository
  • Использование сопрягаемые на основе кодирования
  • Использование инъекции зависимостей
  • Используйте зрелый ORM, такой как NHibernate/Entity Framework 4.0 (но знаете, когда использовать SPROC для работы с интенсивным дБ)
  • Используйте Единица работы шаблон
  • Предотвращение SQL Injection атаки с использованием параметризованных запросов (или LINQ-Entites, как указано выше)
Смежные вопросы