Некоторые личные мысли и опыт:
- используйте nhibernate в качестве orm или дождитесь EF v4. У Tekpub.com есть хорошее руководство по использованию NH. L2S и EF - это своего рода черный ящик: они много чего делают, у них хорошая документация, но у них нет точки расширения. Если вы хотите подключить некоторые новые функции или изменить поведение, вы можете сделать это только с NH. EF в v4 будет в состоянии, в котором NH был 2 или 3 года назад.
- просмотрите как можно больше примеров приложений MVC. Многие из них вы можете найти на codeplex. Например: CodeCampServer, WhoCanHelpMe, Storeddd
- если вы думаете о создании фреймворка (или помощника) для решения некоторых инфраструктурных проблем, сначала зайдите в Google; очень вероятно, что кто-то еще умнее вас (ну, в моем случае, умнее меня) уже имел такие же проблемы и написал хороший кусок кода в виде фреймворка (объектный маппер, валидация, обмен сообщениями, ...) или просто написал об этом в блоге.
- Использование точной архитектуры или fubuMvc решает большую часть работы инфраструктуры, но остальная часть приложения зависит от вашей бизнес-модели.
- TDD заставит вас писать хороший и поддерживаемый код. Старайтесь как можно чаще использовать шаблоны проектирования Gang of Four и принципы SOLID.