Есть ли у кого-нибудь реальный опыт работы с CSLA?

StackOverflow https://stackoverflow.com/questions/15241

  •  08-06-2019
  •  | 
  •  

Вопрос

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

программисты больше не читают книг

Я хотел узнать мнение сообщества Softlow об этом.

Итак, вот мои вопросы:

  1. Как люди могут использовать CSLA?
  2. Каковы плюсы и минусы?
  3. Действительно ли CSLA не вписывается в TDD?
  4. Какие у меня есть альтернативы?
  5. Если вы перестали им пользоваться или передумали, почему?
Это было полезно?

Решение

Прежде чем я конкретно отвечу на ваш вопрос, я хотел бы высказать несколько мыслей.Подходит ли CSLA для вашего проекта?Это зависит от обстоятельств.Лично я бы рассмотрел CSLA для приложений на базе настольных компьютеров, для которых модульное тестирование не является приоритетным.CSLA отлично подходит, если вы хотите легко масштабироваться до n-уровневого приложения.CSLA, как правило, имеет некоторый недостаток, потому что она не допускает чистого модульного тестирования.Это верно, однако, как и все остальное в технологии, я считаю, что существует Нет Ни Одного Истинного Пути.Модульное тестирование может быть чем-то, что вы проводите не для конкретного проекта.То, что работает для одной команды и одного проекта, может не работать для другой команды или другого проекта.

Существует также много неправильных представлений в отношении CSLA.Это не ORM.это не конкурент NHibernate (на самом деле использование CLSA Business Objects и NHibernate в качестве доступа к данным действительно хорошо сочетается).Это формализует концепцию Мобильный Объект.

1.Сколько людей используют CSLA?
Основываясь на Форумы CSLA, Я бы сказал, что существует довольно много проектов, основанных на CSLA.Честно говоря, я понятия не имею, сколько людей на самом деле им пользуются.В прошлом я использовал его в двух проектах.

2.Каковы плюсы и минусы?
Хотя это трудно обобщить в коротком списке, вот некоторые из "за" и "против", которые приходят на ум.
Плюсы:

  • Легко ввести новых разработчиков в курс дела .Книга CSLA и пример приложения - отличные ресурсы для того, чтобы войти в курс дела.
  • Система валидации действительно мирового класса - и была "позаимствована" для многих других проектов и технологий, не относящихся к CSLA.
  • отмена на n-м уровне в ваших бизнес-объектах
  • Изменение строки конфигурации для n-уровневой масштабируемости (Примечание:даже не требуется перекомпиляция )
  • Ключевые технологии абстрагированы от "реального" кода.Когда WCF был введен, он оказал минимальное влияние на код CSLA.
  • Вы можете совместно использовать свои бизнес-объекты между Windows и веб-проектами.
  • CSLA способствует нормализации поведение вместо нормализации данные (покидаем базу данных для нормализации данных).

Минусы:

  • Трудности при модульном тестировании
  • Отсутствие разделения, вызывающего озабоченность (как правило, в ваших бизнес-объектах есть код доступа к данным внутри них).
  • Поскольку CSLA способствует нормализации поведение, а не нормализация данные, и это может привести к созданию бизнес-объектов, которые называются аналогично, но имеют разные назначения.Это может вызвать некоторую путаницу и ощущение, что вы неправильно используете объекты повторно.Тем не менее, как только сделан физиологический скачок, это более чем имеет смысл - кажется неуместным структурировать объекты "старым" способом.
  • Создавать приложения таким образом "не в моде".Возможно, вам будет нелегко заполучить разработчиков, увлеченных этой технологией.

3.После прочтения этого, действительно ли CSLA не вписывается в TDD?
Я не нашел эффективного способа сделать TDD с CSLA.Тем не менее, я уверен, что есть много более умных людей, чем я, которые, возможно, пробовали это с большим успехом.

4.Какие у меня есть альтернативы?
Доменно-ориентированный дизайн в данный момент получает все большее распространение (и это справедливо - это фантастика для некоторых приложений).Существует также ряд интересных шаблонов, разработанных в результате внедрения LINQ (и LINQ to SQL, Entity Framework и т.д.).Книга Фаулерса ПоЭАА, описывает множество шаблонов, которые могут подойти для вашего применения.Обратите внимание, что некоторые шаблоны конкурируют (т. е.Активная запись и репозиторий) и, таким образом, предназначены для использования в определенных сценариях.Хотя CSLA в точности не соответствует ни одному из шаблонов, описанных в этой книге, он наиболее близко напоминает Active Record (хотя я считаю недальновидным утверждать о точном соответствии этого шаблона).

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

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

Надеюсь, это поможет!

Другие советы

Прочитав все ответы, я заметил, что у многих людей есть некоторые неправильные представления о CSLA.

Первый, CSLA - это не ORM.Как я могу сказать это так определенно?Потому что Рокфорд Лхотка сам много раз заявлял об этом в интервью на .NET - Камни и Ганзельминуты подкасты.Ищите Любой эпизод, в котором у Рокки брали интервью, и он изложит это в недвусмысленных выражениях.Я думаю, что это самый важный факт, который люди должны понять, потому что почти все неправильные представления о CSLA проистекают из веры в то, что это ORM, или попыток использовать его как таковой.

Как упоминал Брэд Лич в своем ответе, объекты CSLA моделируют поведение, хотя, возможно, точнее было бы сказать, что они моделируют поведение данных, поскольку данные являются неотъемлемой частью их.CSLA не является ORM, потому что она полностью не зависит от того, как вы взаимодействуете со своим хранилищем данных.Ты следует используйте какой-то уровень доступа к данным с CSLA, возможно, даже ORM.(Я знаю.Теперь я использую Entity Framework, который прекрасно работает.)

Теперь перейдем к модульному тестированию.У меня никогда не возникало никаких трудностей с модульным тестированием моих объектов CSLA, потому что я не помещаю свой код доступа к данным непосредственно в свои бизнес-объекты.Вместо этого я использую некоторую вариацию шаблона репозитория. Репозиторий используется CSLA, а не наоборот. Заменив поддельный репозиторий на мои модульные тесты и используя локальный портал данных, БУМ! все очень просто.(Как только Entity Framework разрешит использовать POCOs, это будет еще чище.)

Все это происходит от осознания того, что CSLA - это не ORM.Он может использовать ORM, но сам по себе таковым не является.

Ваше здоровье.

Обновить

Я подумал, что стоит сделать еще несколько комментариев.

Некоторые люди говорят, что CSLA слишком многословен по сравнению с такими вещами, как LINQ to SQL и так далее.Но здесь мы сравниваем яблоки с апельсинами.LINQ to SQL - это ORM.Он предлагает некоторые вещи, которых нет у CSLA, а CSLA предлагает некоторые вещи, которых нет у L2S, такие как интегрированная проверка и n-уровень сохраняемости через различные удаленные порталы данных.На самом деле, я бы сказал это напоследок, n-уровень настойчивости для меня превосходит их все.Если я хочу использовать Entity Framework или LINQ для SQL по сети, я должен поместить что-то вроде WCF между ними, и это значительно увеличивает объем работы и сложность, до такой степени, что я думаю, что это многое более подробный, чем CSLA.(Я поклонник WCF, REST и SOA, но используйте их там, где вам это действительно нужно, например, когда вы хотите предоставить сервис третьим лицам.Для большинства бизнес-приложений это на самом деле не требуется, и CSLA - лучший выбор.) Фактически, с последней версией CSLA Rocky предоставляет WCFDataPortal, которым я уже пользовался.Это отлично работает.

Я фанат ТВЕРДЫЙ, TDD и другие современные принципы разработки программного обеспечения, и использовать их везде, где это практически возможно.Но я думаю, что преимущества CSLA перевешивают некоторые возражения этих ортодоксий, и в любом случае мне удалось заставить CSLA работать довольно хорошо (и легко) с TDD, так что это не проблема.

Да, я (эм, мы) широко использовали его для моделирования логики нашего бизнес-процесса, который в основном представлял собой формы с привязкой к данным в приложении Windows forms.Приложение представляло собой торговую систему.CSLA спроектирован так, чтобы находиться на этом уровне чуть ниже пользовательского интерфейса.

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

Его минусы в том, что у него небольшая кривая обучения.

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

Мы также сочли очень полезной возможность использовать CSLA business objects на стороне сервера для проверки объектов, отправленных от клиентов.

У нас также были встроенные механизмы для выполнения проверки асинхронно с веб-сервисом (т. е.проверка диапазона кредитных лимитов контрагента по сравнению с основным).

CSLA обеспечивает строгое разделение между вашим пользовательским интерфейсом, BusinessLogic и Persistence, и мы написали для них множество модульных тестов.Это может быть не совсем TDD, потому что вы используете его из дизайна пользовательского интерфейса, но это не значит, что он не поддается тестированию.

Единственной реальной альтернативой является создание вашей собственной модели \ бизнес-объектов, но довольно скоро вы в конечном итоге реализуете функции, которые CSLA предлагает "из коробки" (INotifyPropertyChanged, IDataErrorInfo, pushState, PopState и т.д.)

Я использовал CSLA для одного проекта, и он отлично сработал и сделал все намного проще и аккуратнее.

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

//энди

У меня был опыт работы с этим несколько лет назад.Это блестящая архитектура, но очень сложная, ее трудно понять или изменить, и она решает проблему, с которой не обязательно сталкивается большинство из нас, разрабатывающих веб-приложения.Он был разработан скорее для приложений на базе Windows и обработки многоуровневой отмены с большим акцентом на транзакционную логику.Вероятно, вы услышите, как люди говорят, что, поскольку веб-приложения представляют собой запрос-ответ на уровне страницы, это неуместно, но с веб-приложениями в стиле AJAX, возможно, этот аргумент не выдерживает критики.

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

Учитывая все обстоятельства, это был бы не первый мой выбор архитектуры.

В защиту CSLA, хотя я согласен со многими замечаниями, которые были сделаны, особенно по поводу модульного тестирования...

Моя компания широко использовала его для приложения ввода данных Windows Forms, причем с большим успехом.

  • Он предоставлял готовые функциональные возможности, на написание которых у нас не было ни времени, ни опыта.
  • Это стандартизировало все наши бизнес-объекты, упростив обслуживание и сократив время обучения для наших новых разработчиков.

В целом я бы сказал, что любые проблемы, которые это вызвало, были более чем компенсированы преимуществами.

Обновить:В дополнение к этому мы по-прежнему используем его для нашего приложения Windows forms, но эксперименты с его использованием для других приложений, таких как веб-сайты, показали, что оно, возможно, слишком громоздко, когда вам не нужна большая часть его функциональности, и сейчас мы изучаем более легкие варианты для этих сценариев.

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

Пара проблем:

Мне не нужен барьер между моим кодом и .NET framework, которым для меня был этот фреймворк.У меня был ограниченный выбор объектов списка, в то время как мне просто приходилось игнорировать объекты расширенного списка в .NET framework.

Это совершенно нелепо, что у нас были эти списки только для чтения, а затем списки не только для чтения.Поэтому, если мне нужно было добавить элемент в список, мне приходилось воссоздавать весь список заново...вы серьезно?

Затем csla хочет управлять состоянием моего объекта, которое в порядке, но на самом деле ничего не раскрывается.Иногда я хочу изменить состояние объекта вручную вместо того, чтобы извлекать его снова, что похоже на то, чего хочет от меня csla.По сути, я заканчиваю тем, что создаю множество свойств для предоставления опций, к которым, по мнению csla, у меня не должно быть прямого доступа.

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

Проверьте исходный код фреймворка, и мне кажется, что он слишком сильно влияет на код отражения.

Причины использования csla:

  • простой .net framework слишком мощен для вас.
  • ваши разработчики неопытны и не могут понять концепцию шаблонов, тогда csla в значительной степени будет размещать всех на одной странице.

    1. Мне не нужен барьер между моим кодом и .NET framework...Я застрял с этими объектами списка.

Мы начали использовать CSLA, потому что думали, что это поможет с нашим модельным уровнем.Это было своего рода излишеством, и в основном все, что мы используем сейчас, - это класс SmartDate, просто потому, что мы уже связаны с библиотекой.

Мы думали, что интерфейс проверки действительно поможет нам обеспечить соблюдение бизнес-правил, но он плохо работал с WCF и сериализацией (мы все еще застряли на версии 2.0.3.0, так что все могло измениться).

Не стоит исключать CSLA из списка, но перед его использованием изучите преимущества и убедитесь, что они действительно применимы.Сможет ли ваша команда правильно / последовательно реализовать это?Требуется удаленное управление и портальный танец?

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

Я подсчитал строки кода, необходимые в определенном домене проекта, преобразованного из CSLA.Между всеми различными объектами CSLA (комбинации только для чтения + редактируемый + root + список) и их сохраненными процессами потребовалось около 1700 строк, по сравнению с реализацией репозитория Linq2SQL +, которая заняла 180 строк.Версия Linq2SQL состояла в основном из сгенерированных классов, для понимания которых вашей команде не нужно использовать book.И да, я использовал CodeSmith для генерации частей CSLA, но теперь я верю в СУХОЙ код с отдельными битами ответственности, и реализация CSLA теперь выглядит для меня как вчерашний герой.

В качестве альтернативы я хотел бы предложить изучить Linq2SQL / Entity Framework / NHibernate в сочетании с шаблонами Repository и UnitOfWork.Взгляните на http://www.codeplex.com/backgroundmotion

Ваше здоровье!

Наша компания применяла CSLA в некоторых своих проектах, и некоторые из унаследованных проектов остаются CSLA.Другие проекты отошли от него, потому что CSLA нарушила простое правило ООП:Принцип единой ответственности.

Объекты CSLA являются самоподдерживающимися, напримерони извлекают свои собственные данные, они управляют своим собственным поведением, они спасают самих себя.К сожалению, это означало, что ваш обычный объект CSLA выполняет по крайней мере три обязанности - представляет модель предметной области, содержит бизнес-правила и содержит определение доступа к данным (не DAL или реализацию доступа к данным, как я ранее заявлял / подразумевал) одновременно.

Мы широко используем CSLA.Есть несколько преимуществ;во-первых, я считаю, что каждый разработчик бизнес-направления должен прочитать книгу Рокки Лхотки о программировании бизнес-объектов.Лично я считаю, что это входит в топ-3 моих лучших книг по программированию за всю историю.CSLA - это фреймворк, основанный на этой книге, и его использование предоставляет вашему проекту доступ к функциональности очень высокого уровня, такой как n-уровневая отмена, правила проверки и архитектура масштабируемости, предоставляя при этом вам подробную информацию.Обратите внимание, я сказал "предоставлять", а не "скрывать".Я обнаружил, что лучшая часть CSLA заключается в том, что она позволяет вам понять, как все эти вещи реализованы вплоть до исходного кода, не заставляя вас воспроизводить их самостоятельно.Вы можете использовать столько или несколько функций, сколько вам нужно, но я обнаружил, что, оставаясь верным шаблонам проектирования фреймворка, это действительно избавляет вас от неприятностей.--Байрон

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

Я использую CSLA со времен vb5, когда это был скорее набор шаблонов, чем фреймворк.С введением of.NET CSLA превратился в полноценный фреймворк, который сопровождался изрядной кривой обучения.Однако CSLA затрагивает многие вопросы, которые все бизнес-разработчики, как правило, пишут сами в какой-то момент (в зависимости от масштаба проекта):логика проверки подлинности, функциональность отмены, грязная логика и т.д.Все эти вещи вы получаете бесплатно "из коробки" в одном приятном фреймворке.

Как заявляли другие, будучи фреймворком, он заставляет разработчиков писать бизнес-логику аналогичным образом.Это также вынуждает вас обеспечить определенный уровень абстракции для вашей бизнес-логики, так что отказ от использования фреймворков пользовательского интерфейса, таких как MVC, MVP, MVVM, становится не столь важным.

На самом деле, я бы сказал, что причина, по которой многие из этих шаблонов пользовательского интерфейса так раздуты сегодня (в мире Microsoft), заключается в том, что люди так долго делали что-то невероятно неправильное (т. Е. Использовали DataGrids в вашем пользовательском интерфейсе, разбрасывая вашу бизнес-логику повсюду.тиск-тиск).Правильно спроектировав свой средний уровень (бизнес-логику) с самого начала, вы можете повторно использовать свой средний уровень в ЛЮБОМ пользовательском интерфейсе.Win Form, ASP.NET/MVC, Служба WCF, WPF, Silverlight **, Служба Windows, ....

Но помимо всего этого, огромной отдачей для меня стала встроенная способность к масштабированию.CSLA использует шаблон прокси, который настраивается через ваш конфигурационный файл.Это позволяет вашим бизнес-объектам совершать удаленные вызовы с сервера на сервер без необходимости написания одного фрагмента кода.Добавление новых пользователей в вашу систему?Без проблем, разверните бизнес-объекты CSLA на новом сервере приложений, измените запись в файле конфигурации и - БАЦ!!Потребности в мгновенной масштабируемости удовлетворены.

Сравните это с использованием DTO, хранением вашей бизнес-логики на клиенте (каким бы клиентом это ни было) и необходимостью писать каждый из ваших собственных методов CRUD в качестве методов обслуживания.ФУ!!!Не говорю, что это плохой подход, но я бы не хотел этого делать.Не тогда, когда есть фреймворк, который, по сути, сделает это за меня.

Я собираюсь повторить то, что говорили другие люди о том, что CSLA - это НЕ ORM.CSLA вынуждает вас предоставлять данные вашим бизнес-объектам.Им все равно, где вы получаете свои данные.Вы можете использовать ORM для обеспечения ваших бизнес-объектов данными.Вы также можете использовать raw ADO.NET, другие сервисы (RESTful, SOAP), электронные таблицы Excel, я могу продолжить здесь.

Что касается вашей поддержки TDD, я также никогда не пробовал использовать этот подход с CSLA.Я выбрал подход, при котором я моделирую свой средний уровень (бизнес-объекты ala), используя диаграммы классов и последовательностей, чаще всего позволяя диктовать варианты использования, дизайн экрана и / или процесса.Возможно, это немного старомодно, но UML всегда очень хорошо служил мне в моих усилиях по проектированию и разработке.Я успешно проектировал и разрабатывал очень большие и масштабируемые приложения, которые используются до сих пор.И пока WCF RIA не созреет, я буду продолжать использовать CSLA..

** с некоторыми обходными путями

Я новичок в CSLA, но я разбираюсь в концепциях, и я уже понимаю, что это не инструмент ORM, так что хватит бить в этот чертов барабан, ребята.Есть функции CSLA, которые мне нравятся, но при их использовании возникает ощущение, что за занавесом находится волшебник.Я думаю, если вы не возражаете, не зная о том, как это работает, то вы можете использовать объекты, и они будут работать нормально.

Существует большая кривая обучения для начинающих, и я думаю, что это принесло бы большую пользу, если бы у вас было 5-15 минут.видеоролики, подобные тем, что есть в Microsoft для изучения основ.Или как насчет выпуска сопутствующей книги с кодом вместо того, чтобы выпускать код и тратить месяцы на выпуск книги?Просто говорю, мистер Лохтка...Мы начали создавать наш материал еще до выхода книги, и я все время боролся.Но, как я уже сказал, я новичок в этом.

Мы использовали CSLA.Мы подгоняли наши объекты под их форму, а затем использовали 10% от того, что предлагал фреймворк.Отмена уровня объекта?Я им не пользовался.Более высокая гибкость?Я им не пользовался.В итоге мы написали достаточно кода бизнес-правил, и я подумал, что единственное, что мы получаем от CSLA, - это сложность.Некоторые "давние на зуб" разработчики, знакомые с фреймворком, использовали его в качестве молотка, потому что у них был гвоздь, по которому нужно было ударить.CSLA была у них за плечами, и я предполагаю, что многие сторонники фреймворка тоже смотрят на вещи с этой точки зрения.

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

Я использую CSLA в качестве фреймворка бизнес-объектов для проекта среднего размера.Фреймворк прошел долгий путь со времен VB6 и предлагает необычайную гибкость и функциональность "из коробки".Мобильные смарт-объекты CSLA значительно упрощают разработку пользовательского интерфейса.Тем не менее, я согласен с другими, что это не самый подходящий инструмент для каждой ситуации.Это определенно связано с некоторыми накладными расходами, но также и с большими затратами энергии.Лично я с нетерпением жду возможности использовать CSLA Light с Silverlight.

Плюсы:

  • Не зависит от информационных технологий1
  • Большая база установок, и это БЕСПЛАТНО!!
  • Стабильная и логичная структура
  • Код доступа к данным может находиться в ваших объектах или в отдельной сборке
  • Проверка и авторизация свойств и объектов

Минусы

  • Поддерживать код может быть очень сложно2
  • Вероятно, нужен генератор кода для эффективного использования
  • Кривая обучения.Структуру объектов CSLA легко понять, но оговорки могут вызвать головную боль.


Я не уверен насчет тестируемого дизайна.Я не занимаюсь модульным тестированием или тестируемым дизайном (позор мне), поэтому я не знаю, отличаются ли модульные тесты от TDD, но я знаю, что самая последняя версия фреймворка поставляется с модульными тестами.


1 Это хорошо, потому что технологии доступа к данным никогда не остаются неизменными надолго.
2 Это стало лучше с последними версиями фреймворка.

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

Спасибо -Блейк Нимийски (Автор книги Шаблоны CodeSmith CSLA)

Я использовал его для одного проекта пару лет назад.Но когда проект был завершен, я никому не мог рассказать, что CSLA сделала для меня.Конечно, я унаследовал его от своих классов.Но я смог удалить это наследование почти из всех классов без какой-либо реструктуризации.Нам не нужны были материалы N-уровня.Отмена на уровне n была настолько медленной, что мы не смогли ее использовать.Так что, я думаю, в конце концов, это только помогло нам смоделировать наши классы.

Сказав это, другие команды начали использовать его (после неудачной попытки команды создать свой собственный фреймворк).Так что там должно быть что-то стоящее, потому что они все умнее меня!

Я специалист по PHP.Когда мы начали создавать сравнительно крупномасштабные приложения на PHP, я начал исследовать множество фреймворков приложений и ORM, в основном в PHP world, затем в Java и .NET.Причина, по которой я также изучил фреймворки Java и .NET, заключалась не в том, чтобы слепо использовать какой-либо фреймворк PHP, а в том, чтобы сначала попытаться понять, что происходит на самом деле и какие существуют архитектуры корпоративного уровня.

Поскольку я не использовал CSLA в реальных приложениях, я не могу комментировать его плюсы и минусы, но что я могу сказать, так это то, что Лхотка - один из редких мыслителей - я не говорю просто эксперт - в области архитектуры программного обеспечения.Хотя название Domain Driven Design придумал Эрик Эванс - кстати, его книга тоже великолепна, и я смиренно советую прочитать ее, - Лхотка применял domain driven design в течение многих лет.Сказав это, что бы вы ни думали о его фреймворке, извлеките пользу из его глубоких идей в этой области.

Вы можете найти его выступления на dotnetrocks.com/archives.aspx и видео с dnrtv.com/archives.aspx (найдите Lhotka).

@Байрон Какие две другие книги тебе понравились?

Джон,

У нас есть команды, работающие в CSLA от 2 до 3.5, и мы сочли это отличным способом обеспечить согласованный фреймворк, чтобы все разработчики "делали это одинаково".Здорово, что генерируется большая часть малоценного кода, и мы знаем, что когда мы запускаем модульные тесты, они работают "из коробки" для всего, что связано с CRUD.Мы обнаруживаем, что наш TDD действительно дополняет рефакторинг, который мы проводим при проектировании, и CSLA не мешает нам делать что-либо из этого.

Крис

Последний раз я пытался использовать CSLA во времена каменного века VB6.Оглядываясь назад, я понимаю, что было бы эффективнее, если бы я использовал генерацию кода.Если у вас нет эффективных инструментов генерации кода и стратегии для их внедрения в ваш рабочий процесс, вам следует избегать таких фреймворков, как CSLA, иначе функции, которые вы получаете от CSLA, не компенсируют количество времени, которое вы тратите на написание n строк кода на таблицу, n строк кода на столбец и т.д.

Я использовал CSLA.NET в настоящее время в нескольких проектах, наиболее успешным он был в приложении Windows forms, которое обладает широкими возможностями привязки данных (которых у asp.net приложений нет).

Основная проблема заключается в поддержке TDD, как указывали люди, это из-за поведения, подобного черному ящику, для функций Dataportal_XYZ, и это неспособность позволить нам издеваться над объектами данных.Предпринимались попытки обойти эту проблему с помощью это быть лучшим подходом

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

CSLA - это лучший фреймворк приложения, который существует.Рокки Лхотка - очень, но очень умный парень.Он пишет историю разработки программного обеспечения, как Мартин Фаулер, Дэвид С. Платт, но мои любимые авторы - Род Стивенс, Мэтью Макдональдс, Джефф Левинсон, Теарон Уиллис и Луис Дэвидсон, он же доктор sql.:-) Плюсы:Применяются все шаблоны проектирования.Минусы:Трудно выучить, и образцов мало.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top