Я использую CSLA начиная с vb5, когда это был скорее набор шаблонов, чем фреймворк. С введением .NET CSLA превратилась в полноценный фреймворк, который шел с большой кривой обучения. Тем не менее, CSLA обращается ко многим вещам, которые все бизнес-разработчики склонны писать в какой-то момент (в зависимости от масштаба проекта): логике валидации, логике аутентификации, функциональности отмены, грязной логике и т. Д. Все эти вещи вы получаете бесплатно из коробка в одной красивой рамке.
Как утверждают другие, будучи фреймворком, он заставляет разработчиков писать бизнес-логику аналогичным образом. Это также вынуждает вас обеспечивать уровень абстракции для вашей бизнес-логики, так что неиспользование инфраструктуры UI, такой как MVC, MVP, MVVM, становится не столь важным.
На самом деле, я бы сказал, что причина, по которой многие из этих шаблонов пользовательского интерфейса сегодня так широко распространены (в мире Microsoft), заключается в том, что люди так долго делали что-то невероятно неправильное (т. Е. Использовали DataGrids в своих приложениях). Интерфейс, разбрасывающий всю вашу бизнес-логику. Tisk Tisk). Правильно спроектируйте свой средний уровень (бизнес-логику) с самого начала, вы можете повторно использовать свой средний уровень в ЛЮБОМ пользовательском интерфейсе. Win Form, ASP.NET/MVC, служба WCF, WPF, Silverlight **, служба Windows, ....
Но помимо этого, огромной отдачей для меня стала встроенная способность масштабирования. CSLA использует шаблон прокси, который настраивается через ваш файл конфигурации. Это позволяет вашим бизнес-объектам выполнять удаленные вызовы с сервера на сервер без необходимости писать один кусок кода. Добавляете больше пользователей в вашу систему? Нет проблем, разверните бизнес-объекты CSLA на новом сервере приложений, измените запись в файле конфигурации и BAM !! Мгновенные потребности в масштабируемости удовлетворены.
Сравните это с использованием DTO, хранением вашей бизнес-логики на клиенте (каким бы клиентом он ни был) и необходимостью писать каждый из ваших собственных методов CRUD в качестве методов обслуживания. YIKES !!! Не сказать, что это плохой подход, но я бы не хотел этого делать. Не тогда, когда есть основа для того, чтобы по существу сделать это для меня.
Я собираюсь повторить то, что другие люди сказали в том, что CSLA НЕ является ORM. CSLA заставляет вас снабжать ваши бизнес-объекты данными. Им все равно, откуда вы берете свои данные. Вы можете использовать ORM для предоставления вашим бизнес-объектам данных. Вы также можете использовать сырой ADO.NET, другие сервисы (RESTFUl, SOAP), таблицы Excel, я могу продолжать здесь.
Что касается вашей поддержки TDD, я никогда не пытался использовать этот подход с CSLA. Я выбрал подход, в котором я моделирую свой средний уровень (аля бизнес-объекты) с использованием диаграмм классов и последовательностей, чаще всего позволяя диктовать вариант использования, экран и / или дизайн процесса. Возможно, немного старая школа, но UML всегда очень хорошо служил мне в моих усилиях по дизайну и разработке. Я успешно спроектировал и разработал очень большие и масштабируемые приложения, которые до сих пор используются. И до созревания WCF RIA я буду продолжать использовать CSLA ..
** с некоторыми решениями