Следует ли использовать CSLA со структурой внедрения зависимостей? - PullRequest
1 голос
/ 23 февраля 2012

Моя команда разработчиков оценивает различные среды, доступные для .NET, чтобы упростить наше программирование, одним из которых является CSLA. Я должен признать, что был немного смущен относительно того, выиграет ли CSLA от использования в сочетании с инфраструктурой внедрения зависимостей, такой как Spring.net или Windsor. Если мы объединили одну из этих двух структур DI с, скажем, Entity Framework для обработки обязанностей ORM, сводит ли это к нулю необходимость или выгоду от использования CSLA в целом?

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

Спасибо!

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

CSLA - это инфраструктура для создания бизнес-объектов, поэтому она имеет отдельные проблемы, нежели контейнер IoC или ORM.В корпоративном приложении вы должны учитывать преимущества всех трех.

В частности, вы должны учитывать CSLA, если хотите, чтобы привязка данных была встроена в ваши модели, грязная проверка, отмена N-уровня, проверка и бизнес-правила, а также реализация портала данных, которая позволяет легко настраивать nразвертывания.

0 голосов
/ 07 августа 2012

Краткий ответ: Да.

Длинный ответ: Требуется немного кропотливой работы и некоторые эксперименты по настройке, но это можно сделать без существенного нарушения CSLA. Я собрал рабочий прототип, используя StructureMap и шаблон репозитория, и использовал метод BuildUp Setter Injection для внедрения в CSLA. Я использовал метод, похожий на тот, который был найден здесь , чтобы гарантировать, что мои бизнес-объекты повторно вводятся при сериализации объектов.

Я также использую базовый класс реестра StructureMap для разделения моей конфигурации на презентацию, клиент CSLA, сервер CSLA и глобальные настройки CSLA. Таким образом, я могу использовать функцию связанных файлов в Visual Studio для включения сервера CSLA и глобальных файлов конфигурации CSLA в портал данных на стороне сервера, и конфигурация всегда будет одинаковой в обоих местах. Это должно было гарантировать, что я все еще могу изменить параметры конфигурации портала данных в CSLA с 2 уровня на 3 уровня без каких-либо нарушений.

В любом случае, я все еще оцениваю потенциальные выгоды с недостатками использования DI, но пока я склоняюсь в направлении его использования, потому что тестирование будет намного проще, хотя я скептически отношусь к попытке использовать любые из расширенных функций DI, таких как перехват. Я рекомендую прочитать книгу Mark Seemann Внедрение зависимостей в .NET , чтобы понять, как правильно и неправильно использовать DI, потому что в Интернете много дезинформации.

...