У кого-нибудь есть реальный опыт CSLA? - PullRequest
50 голосов
/ 19 августа 2008

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

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

Я хотел оценить мнение сообщества SOFlow об этом.

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

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

Ответы [ 23 ]

4 голосов
/ 14 декабря 2010

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

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

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

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

4 голосов
/ 28 января 2009

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

4 голосов
/ 23 сентября 2008

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

3 голосов
/ 05 августа 2010

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

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

3 голосов
/ 05 марта 2010

Я использую 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 ..

** с некоторыми решениями

3 голосов
/ 08 июня 2009

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

Плюсы:

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

Против

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


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


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

2 голосов
/ 10 февраля 2009

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

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

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

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

2 голосов
/ 17 сентября 2009

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

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

2 голосов
/ 23 сентября 2008

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

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

2 голосов
/ 08 мая 2009

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

...