Мы собираемся взять на себя выполнение Rocky Lhotka CSLA в качестве платформы разработки приложений для наших решений Visual Studio 2008. Я бы хотел протестировать воду на SO и особенно интересуюсь мнениями разработчиков о подходах по сравнению с другими ORM, такими как Entity Framework или nHibernate.
Кроме того, какова кривая обучения, и как легко (как я слышал) поддерживать приложения, написанные в этой методологии?
Также было бы очень интересно услышать от любого государственного сектора (особенно правительственных учреждений), которые внедрили это.
Спасибо,
MaS
Кривая обучения CSLA не так уж плоха, но будьте готовы потратить некоторое время на чтение в книге. Мы позаботились о большой кривой обучения для вас, создав для вас DAL (поддержка параметризованных SQL или хранимых процедур), поэтому он добавляет ORM в CSLA только потому, что он управляет DAL для вас, если вы выберете. Но вы можете полностью использовать его как просто набор шаблонов BO. Я считаю, что активное поколение упрощает обновление до более новых версий CSLA, а также добавляет функциональность, не требуя особого промежуточного класса.
Спасибо -Blake Niemyjski (автор CodeSmith CSLA Templates)
CSLA не является структурой ORM. Это среда для реализации бизнес-объектов. Тем не менее, есть генераторы кода, которые могут генерировать код доступа к данным для вас. Структура CSLA основана на шаблоне Active Record. Эта модель не будет масштабироваться для крупномасштабного проекта. На мой взгляд, вы должны реализовать прототип. Целью прототипа должно быть:
Если ваша оценка кажется положительной против вышеуказанных пунктов, то идите на нее. Короче говоря, должно быть надлежащее обоснование использования такой структуры. Вы не должны идти с каким-то советом, а попробуйте сами.
CSLA - это платформа бизнес-объектов. Существует множество стратегий обращения с доступом к данным - между ORM и доступом к данным существует много совпадений. У меня был большой успех с использованием Linq-to-SQL на уровне доступа к данным, чтобы упростить разработку. Я думаю, что это подход, который будет работать для вас - особенно учитывая (на основе ваших комментариев) вашу потребность в поддержке SQL Server и Oracle.
Использование отдельного DAL хорошо документировано в Rocky book и сэмплах на www.lhotka.net
Что касается TFS - это инструмент ALM для управления версиями, управления проектами и автоматизации сборки. Вы хотели бы поставить Source CSLA Source под контроль источника, как и любой другой код. Самый простой подход - включить CSLA в ваше решение.
Другим подходом было бы скомпилировать его отдельно и использовать ссылку на файл в ваших проектах в CSLA.DLL. В TFS Automated build есть группа свойств, которую вы можете поместить путь к этой DLL на ваш сервер сборки.
Наконец Рокки продает обучающие видеоролики CSLA на своем веб-сайте в http://download.lhotka.net/default.aspx?t=Core38
Мне нравится CSLA.
Я использовал его для реализации некоторых приложений ASP.NET 2.0, некоторые из которых очень большие. Легко понять (после того, как вы поймете объекты Root, Child и Switchable), но вы будете сильно полагаться на генерацию кода (например, CodeSmith).
Главный вопрос: вам нужна CSLA? Какая функция вам нравится или вам просто нужно использовать ORM? Сегодня я пишу новые приложения с ADO.NET Entity Framework, и это более продуктивно, чем CSLA.
Имейте в виду, что CSLA не является методологией, а всего лишь инструментом: вам нужно понять это и, если необходимо, настроить его.
Вы можете проверить мысли Rocky на SOA в следующей трансляции:
http://www.slickthought.net/post/Minneapolis-Developer-Roundtable-Podcast---Talking-REST.aspx
Главное, что вам нужно понять, это то, что CSLA - это бизнес-структура. Несмотря на то, что ORM могут дать вам основные функции проверки (и другие), они не IMHO действительно компенсируют отсутствие сплошного бизнес-уровня. Разумеется, вы можете использовать ORM с CSLA (есть пример использования EF в примерах CSLA, а NHibernate используется в качестве примера в проекте CSLA Contrib, который, как я полагаю), но технологии просто бесплатны.
Кривая обучения... хорошо, что зависит от вас. Мне было очень легко начать работу. я думаю, если у вас есть хорошее представление о OO, вы должны быть в порядке, чтобы быстро получить что-то основное. Недавние выпущенные видео также очень хороши, чтобы начать yuo.