CSLA: масштабируемая логическая архитектура на основе компонентов
Параграф в двух словах, описывающий CSLA для меня с веб-сайта, был таким:
CSLA .NET позволяет создавать объектно-ориентированный бизнес-уровень, который абстрагирует и инкапсулирует вашу бизнес-логику и данные. Эта среда обеспечивает бесперебойную работу ваших бизнес-объектов со всеми технологиями интерфейса .NET, включая WinRT XAML, WPF, ASP.NET MVC, веб-формы ASP.NET, WCF, службы asmx, Windows Phone 7, Silverlight, Windows Workflow и Windows Forms.
Почему вы можете использовать это:
Управление бизнес-правилами. Как только вы изучите систему бизнес-правил, она обеспечит способ применения бизнес-логики в аккуратном пакете. Если у вас есть объект с дочерними объектами, который должен сообщить о валидации на самый родительский уровень, есть способ справиться с этим. (см. http://www.lhotka.net/weblog/CSLA4BusinessRulesSubsystem.aspx для получения дополнительной информации о системе правил)
У вас есть бизнес-объекты, которые необходимо поддерживать для отмены N-уровня? CSLA BusinessBase имеет встроенную систему управления свойствами (например, свойства зависимостей) для таких функций, как N-Level Undo (фактически она полностью реализована). (Это также связано с управлением бизнес-правилами. Вы можете запустить проверку при изменении основного свойства, или вы можете изменить свойство на основе значения другого свойства.)
Управление порталом данных. Это была интересная концепция. Если мне нужно выполнить операции с данными локально, CSLA настроен для этого из коробки. Я также могу установить службу WCF, которая ссылается на мои библиотеки бизнес-объектов, и использовать несколько строк конфигурации, чтобы сделать конечную точку WCF для управления операциями с данными. Служба WCF является частью структуры CSLA. Было приятно видеть это в действии. Другие сценарии? Конечно! Библиотеку бизнес-объектов не нужно менять, класс DataPortal определяет, нужно ли выполнять удаленно или локально, в соответствии с вашей конфигурацией.
CSLA действительно вынуждает вас использовать несколько механизмов, которые поначалу могут показаться неестественными. Я думаю, что это в какой-то степени верно для любого шаблона, который вы решите применить. Тем не менее, когда речь идет о задачах внедрения сервис-ориентированной архитектуры, CSLA предлагает многое. Да, у вас будет разработчик уровня архитектора, который будет создавать некоторые из ваших библиотек. Однако, если вы создаете приложение корпоративного класса, разве вы не должны этим заниматься?
CSLA, при правильной архитектуре, поддается тестированию. Мы используем шаблон репозитория, чтобы заменить действительный dal на фиктивный слой и протестировать как по спецификации (используя NUnit / SpecFlow), так и в единичном режиме, когда это необходимо.
Что касается поддержки, включая самого Рокки, то существует сообщество участников, которые гарантируют, что такие вещи, как CSLA.Net для Xamarin, станут реальностью. Есть консалтинговые компании, которые знают CSLA и используют его на регулярной основе в зависимости от объема работы (и нет, не только консалтинга, в котором я работаю).
Учитывая все обстоятельства, CSLA может быть не для вас. Как указали другие, читайте сайт и книги (особенно Expert C # 2008 Business Objects.) Задавайте вопросы, поскольку сообщество CSLA стремится давать качественные советы.