Я написал уровни доступа к данным, компоненты персистентности и даже свои собственные ORM в сотнях приложений на протяжении многих лет (одно из моих «хобби»); Я даже реализовал свой собственный менеджер бизнес-транзакций (обсуждается в другом месте на SO).
Инструменты ORM уже давно используются на других платформах, таких как Java, Python и т. Д. Похоже, что теперь, когда команды, ориентированные на Microsoft, их открыли, появилась новая мода. В целом, я думаю, что это хорошо - необходимый шаг на пути к изучению и пониманию концепций архитектуры и дизайна, которые, кажется, были введены вместе с появлением .NET.
Итог: я всегда предпочел бы иметь собственный доступ к данным, а не бороться с каким-то инструментом, который пытается мне «помочь». Никогда нельзя отказываться от контроля над своей судьбой, а доступ к данным является важной частью судьбы моего приложения. Некоторые простые принципы делают доступ к данным очень управляемым.
Используйте базовые концепции модульности, абстракции и инкапсуляции - так что оберните базовый API доступа к данным вашей платформы (например, ADO.NET) собственным слоем, который поднимет уровень абстракции ближе к вашему проблемному пространству. НЕ кодируйте весь свой доступ к данным НЕПОСРЕДСТВЕННО против этого API (также обсуждается в другом месте на SO).
Строго применяйте принцип DRY (Don't Repeat Yourself) = рефакторинг дневного света в коде доступа к данным. Используйте генерацию кода, когда это уместно, как средство рефакторинга, но старайтесь по возможности устранять необходимость в генерации кода. Как правило, генерация кода показывает, что в вашей среде чего-то не хватает - языковой недостаточности, ограничений встроенных инструментов и т. Д.
Тем временем научитесь хорошо использовать доступный API, особенно в отношении производительности и надежности, а затем включите эти уроки в свой собственный уровень доступа к абстрактным данным. Например, научитесь правильно использовать параметры в своем SQL, а не встраивать буквальные значения в строки SQL.
Наконец, имейте в виду, что любое приложение / система, которые добьются успеха, вырастет и столкнется с проблемами производительности. Устранение проблем с производительностью больше зависит от их разработки, а не просто «подгонки» чего-то в реализации. Эта проектная работа повлияет на базу данных и приложение, которые должны изменяться синхронно. Поэтому старайтесь иметь возможность легко (гибко) вносить такие изменения, а не пытаться никогда не менять само приложение. Отчасти это в конечном итоге означает возможность развертывать изменения без простоев. Это несложно сделать, если не «проектировать» от этого.
person
Rob Williams
schedule
12.12.2008