Реализация бизнес-объектов C # (CSLA)

Мы собираемся реализовать CSLA Рокки Лхотки в качестве платформы разработки приложений для наших решений Visual Studio 2008. Я хотел бы протестировать воду на SO, и меня особенно интересуют мнения разработчиков о подходе по сравнению с другими ORM, такими как Entity Framework или nHibernate.

Кроме того, какова кривая обучения и насколько легко (как я слышал) поддерживать приложения, написанные по этой методологии?

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

Спасибо,

MaS


person miPwn    schedule 19.01.2010    source источник


Ответы (5)


Кривая обучения CSLA не так уж и плоха, но будьте готовы потратить некоторое время на чтение книги. Мы позаботились о значительной части процесса обучения для вас, создав для вас DAL (параметризованный SQL или поддержка хранимых процедур), поэтому он добавляет ощущение ORM в CSLA только потому, что он управляет DAL за вас, если вы выберете. Но вы можете полностью использовать его как просто набор BO-шаблонов. Я считаю, что активная генерация значительно упрощает обновление до более новых версий CSLA, а также добавляет функциональность без особой потребности в промежуточном классе.

Спасибо, Блейк Ниемайски (автор шаблонов CSLA CodeSmith)

person Blake Niemyjski    schedule 01.02.2010
comment
Спасибо и отличная работа над шаблонами. Мы стремимся продвигать их вперед в нашей среде SQL 2008 / Oracle 10g / Visual Studio 2008 / TFS 2008, и поэтому, если у вас есть дополнительная информация о том, как лучше всего интегрировать CSLA в эту установку, я был бы очень благодарен. - person miPwn; 02.02.2010
comment
Спасибо! Мы планируем в одном из этих выпусков, возможно, текущем, добавить поддержку Oracle и MySQL. Было бы очень легко реализовать поддержку Oracle (самое большее - небольшая часть дня). Если вы заинтересованы в помощи, дайте мне знать. - person Blake Niemyjski; 02.02.2010

CSLA не является структурой ORM. Это фреймворк для реализации бизнес-объектов. Однако существуют генераторы кода, которые могут сгенерировать для вас код доступа к данным. Инфраструктура CSLA основана на шаблоне Active Record. Этот шаблон не подойдет для крупномасштабного проекта. На мой взгляд, вам стоит реализовать прототип. Целью прототипа должно быть:

  1. Определите схему наслоения
  2. Единичная тестируемость классов
  3. Как фреймворк хорошо сочетается с другим фреймворком
  4. Как это сочетается с другими инструментами для картирования ИЛИ
  5. Кривая обучения

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

person Anand Patel    schedule 19.01.2010
comment
Хороший совет. Мы уже находимся в процессе разработки прототипа. Мы также используем CodeSmith для создания шаблонов. - person miPwn; 19.01.2010
comment
Эта структура плохо сочетается с методологией DDD (Domain Driven Design). Подумайте о DDD (Domain Driven Design) + NHibernate для ORM. - person Anand Patel; 19.01.2010
comment
Рокки Лхотка считает, что объекты связаны с поведением, а не с данными. Этому он следовал от Дэвида Уэста в его книге «Объектное мышление». Хотя Active Record и CSLA имеют функции вставки, обновления и удаления, они никак не связаны с одной и той же концепцией. в Active Record объект - это данные или фактически представляет собой таблицу базы данных. - person Ricky Supit; 05.02.2010
comment
Вот ссылка, по которой он рассказал об объектном мышлении lhotka.net/weblog/ObjectThinking.aspx - person Ricky Supit; 05.02.2010

Я люблю CSLA.

Я использовал его для реализации некоторых приложений ASP.NET 2.0, некоторые из которых были очень большими. Это легко понять (после того, как вы разберетесь с объектами Root, Child и Switchable), но вы будете во многом полагаться на генерацию кода (например, CodeSmith).

Главный вопрос: нужен ли вам CSLA? Какая функция вам нравится, или вам просто нужно использовать ORM? Сегодня я пишу новые приложения с помощью ADO.NET Entity Framework, и это более продуктивно, чем CSLA.

Имейте в виду, что CSLA - это не методология, а всего лишь инструмент: вам нужно понять его и при необходимости настроить.

person Rubens Farias    schedule 19.01.2010
comment
Спасибо, Рубенс, вы вообще использовали CSLA с TFS? - person miPwn; 19.01.2010

CSLA - это структура бизнес-объектов. Существует множество стратегий работы с доступом к данным - между ORM и доступом к данным много общего. Мне очень удалось использовать Linq-to-SQL на уровне доступа к данным для упрощения разработки. Я думаю, что этот подход сработает для вас - особенно с учетом (на основе ваших комментариев) вашей потребности в поддержке как SQL Server, так и Oracle.

Использование отдельного DAL хорошо описано в книге Рокки и примерах на сайте www.lhotka.net.

Что касается TFS - это инструмент ALM для управления версиями, управления проектами и автоматизации сборки. Вы хотели бы поместить исходный код CSLA в систему управления версиями, как и любой другой код. Самый простой подход - включить CSLA в ваше решение.

Другой подход - скомпилировать его отдельно и использовать в ваших проектах ссылку на файл CSLA.DLL. В TFS Automated build есть группа свойств, в которой вы можете указать путь к этой DLL на вашем сервере сборки.

Наконец, Рокки продает обучающие видео CSLA на своем веб-сайте http://download.lhotka.net/default.aspx?t=Core38

person fuzzbone    schedule 25.02.2010

Вы можете проверить мысли Рокки о SOA в следующей трансляции:

http://www.slickoughtt.net/post/Minneapolis-Developer-Roundtable-Podcast---Talking-REST.aspx

Главное, что вам нужно понять, это то, что CSLA - это бизнес-фреймворк. Несмотря на то, что ORM могут предоставить вам базовые функции проверки (и другие), они, IMHO, на самом деле не компенсируют отсутствие надежного бизнес-уровня. Конечно, вы можете использовать ORM с CSLA (есть пример использования EF в примерах CSLA, а NHibernate используется в качестве примера в проекте CSLA Contrib, как я полагаю), но технологии просто дополняют друг друга.

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

person WhiteWaterCoder    schedule 19.01.2010