Введение

CSLA NET — это программный каркас, разработанный Rockford Lhotka, который предоставляет стандартный способ создания надёжных объектно-ориентированных программ с использованием бизнес-объектов. Бизнес-объекты — это объекты, которые абстрагируют бизнес-сущности в объектно-ориентированной программе. Примеры бизнес-сущностей включают заказы на продажу, сотрудников или счета-фактуры. Хотя CSLA можно скачать бесплатно, единственной документацией, предоставляемой автором, являются его книги и видео, которые платные. CSLA (Component based Scalable Logical Architecture) изначально был ориентирован на Visual Basic 6 и описан в книге Visual Basic 6.0 Business Objects авторства Лотки. С появлением Microsoft .NET, CSLA была полностью переписана с нуля, без переноса какого-либо кода, и получила название CSLA NET. Эта версия использовала веб-сервисы и объектно-ориентированные языки, поставляемые с Microsoft .NET (в частности, Visual Basic .NET и C#). CSLA NET подробно описана в книгах Expert C# Business Objects и Expert One on One Visual Basic .NET Business Objects, обе написаны Лхоткой. Несмотря на то, что CSLA и CSLA NET изначально были ориентированы на языки программирования Microsoft, большая часть каркаса может быть применена к большинству объектно-ориентированных языков. Текущая информация о CSLA NET доступна в самостоятельно изданной серии электронных книг Lhotka под названием Using CSLA 4.

Умные данные

Бизнес-объект инкапсулирует все данные и поведение (бизнес-логику и правила), связанные с объектом, который он представляет. Например, бизнес-объект OrderEdit будет содержать данные и реализации бизнес-правил, необходимые приложению для корректного предоставления пользователю возможности редактировать информацию о заказе.

Правила двигателя

Фреймворк CSLA .NET предоставляет механизм правил, поддерживающий правила валидации, бизнес-правила и правила авторизации. Эти правила привязываются к экземплярам объектов или свойствам и автоматически вызываются CSLA .NET при необходимости. Правила валидации могут быть реализованы с использованием движка правил CSLA .NET или посредством функции DataAnnotations в Microsoft .NET.

Устойчивость объекта

Создание, получение, обновление и удаление данных (CRUD) выполняются четко определенными методами бизнес-объекта, связанного с тестированием данных. Логика доступа к данным четко отделена от бизнес-логики, как правило, с использованием шаблона репозитория или других распространенных методов объектно-ориентированного программирования.

Поддержание метастазов

CSLA .NET управляет метасостоянием каждого бизнес-объекта. Например, каждый бизнес-объект отслеживает информацию о том, является ли он новым (то есть представляет данные, которые еще не были сохранены) и "грязным" (то есть требует сохранения в базу данных, либо потому что он новый, либо потому что его данные были изменены после последней загрузки). Бизнес-объекты также могут быть помечены на удаление, чтобы их можно было удалить позднее (например, когда пользователь нажал кнопку, подтверждающую его намерение удалить строки).

n-уровня отменить

Эта функция позволяет объекту или коллекции объектов хранить набор состояний. Это даёт объекту возможность легко возвращаться к предыдущим состояниям. Это может быть полезно, когда пользователю необходимо многократно отменять действия в приложении. Функция также позволяет пользователю повторно выполнять отменённые действия несколько раз. Эта функция может предоставить широкие возможности как для десктопных, так и для веб-приложений. Важно учитывать накладные расходы при использовании в веб-приложениях с большим количеством транзакций. Реализация многоуровневой отмены требует хранения предыдущих состояний приложения, обычно с использованием механизма рефлексии. Это распространенная практика в десктопных приложениях, где изменения должны быть "применены". Однако в веб-приложениях дополнительное хранение может привести к ненужным накладным расходам, поскольку изменения обычно отправляются пакетами и не требуют такого же уровня функциональности "отмены".

Отслеживание бизнес-правил

Позволяет объектам хранить коллекции объектов "нарушенных правил". Нарушенные правила остаются в силе для объекта, пока он не перейдет в допустимое состояние, то есть пока не будет готов к сохранению в базу данных. Объекты BrokenRule обычно связаны с логикой валидации, например, с обеспечением того, чтобы в поле номера телефона не вводились буквенные символы. Например, если у объекта Account есть свойство PhoneNumber, и этому свойству присвоен номер телефона, содержащий буквы, свойство IsValid объекта Account станет false (что сделает невозможным сохранение в базу данных), после чего будет создан новый объект BrokenRule и добавлен в коллекцию Broken Rules объекта Account. Правило исчезнет, когда недопустимый номер телефона будет исправлен, и объект Account сможет сохранить себя в базе данных.

Простая создание пользовательского интерфейса

Бизнес-объекты, созданные с использованием CSLA .NET, полностью поддерживают привязку данных для всех технологий пользовательского интерфейса Microsoft .NET, включая Windows Runtime (WinRT), WPF, Web Forms, ASP.NET MVC, Windows Phone, Silverlight и Windows Forms. Элементы управления, связанные с данными, такие как DataGrids и ListBoxes, могут быть привязаны к бизнес-объектам вместо более общих объектов базы данных, таких как наборы данных и таблицы данных ADO.NET.

Распределенный доступ к данным

CSLA .NET Framework реализует концепцию мобильных объектов или мобильных агентов, позволяющую объектам перемещаться через сетевые границы с использованием WCF, веб-сервисов или других технологий. В результате, доступ к данным обеспечивает независимость от местоположения, что означает, что логика может выполняться как на клиентской рабочей станции, так и на сервере, в зависимости от конфигурации приложения. Также возможна настройка на использование ручных транзакций базы данных или распределенных двухфазных коммитов. Логика доступа к данным четко отделена от бизнес-логики и может быть реализована с использованием любой технологии доступа к данным, доступной на платформе Microsoft .NET. Примеры включают ADO.NET Entity Framework, ADO.NET (прямой доступ), nHibernate и другие.

Поддержка веб-сервисов

Бизнес-логика, разработанная с использованием фреймворка CSLA .NET, может быть легко предоставлена как веб-сервис для удаленных клиентов. Это можно реализовать с помощью серверных технологий Microsoft .NET, таких как Web API, WCF и веб-сервисы asmx.