Czy ktoś ma jakieś realne doświadczenia z CSLA?

Główna aplikacja internetowa mojej firmy woła o sprytny zestaw bibliotek, aby uczynić ją w jakiś sposób utrzymywalną i skalowalną, a jeden z moich kolegów zaproponował CSLA. Więc kupiłem książkę, ale jako:

programiści nie czytają już książek

Chciałem ocenić opinię społeczności SOFlow na ten temat.

Oto moje pytania:

  1. jak ludzie mogą używać CSLA?
  2. jakie są plusy i minusy?
  3. czy CSLA naprawdę nie pasuje do TDD?
  4. jakie są moje alternatywy?
  5. jeśli przestałeś go używać lub zdecydowałeś, dlaczego?
Author: alex, 2008-08-19

23 answers

Zanim konkretnie odpowiem na twoje pytanie, chciałbym odłożyć kilka przemyśleń. Czy CSLA jest odpowiedni dla Twojego projektu? To zależy. Osobiście rozważałbym CSLA dla aplikacji desktopowych, które nie cenią testów jednostkowych za wysoki priorytet. CSLA jest świetny, jeśli chcesz łatwo skalować do aplikacji warstwy N. CSLA ma tendencję do trochę flack, ponieważ nie pozwala na czystych testów jednostkowych. To prawda, jednak jak wszystko w technologii, wierzę, że nie ma jednej prawdziwej drogi . Jednostka testowanie może nie być czymś, co podejmujesz w konkretnym projekcie. To, co działa dla jednego zespołu i jednego projektu, może nie działać dla innego zespołu lub innego projektu.

Istnieje również wiele nieporozumień w odniesieniu do CSLA. To nie ORM. nie jest konkurentem dla NHibernate(w rzeczywistości używając Clsa Business Objects & NHibernate, ponieważ dostęp do danych bardzo dobrze do siebie pasuje). Formalizuje pojęcie obiektu ruchomego .

1. Ile osób korzysta CSLA?
Bazując na forach CSLA , powiedziałbym, że istnieje sporo projektów opartych na CSLA. Szczerze mówiąc, nie mam pojęcia, ile osób faktycznie go używa. Używałem go w przeszłości w dwóch projektach.

2. Jakie są plusy i minusy?
Chociaż trudno jest podsumować w krótkiej liście, oto niektóre z pro / con, które przychodzą na myśl.
Plusy:

  • łatwo pozyskać nowych programistów za szybkość. Księga CSLA i próbka aplikacja to świetne zasoby, aby być na bieżąco.
  • [25]}Framework walidacji jest naprawdę światowej klasy - i został "zapożyczony" dla wielu innych projektów i technologii spoza CSLA.
  • N-poziom Cofania w obiektach biznesowych
  • zmiana linii Config dla skalowalności n-warstwowej (uwaga: nawet nie recompile is necessary)
  • kluczowe technologie są wyodrębnione z" prawdziwego " kodu. Kiedy WCF było wprowadzony, miał minimalny wpływ na Kod CSLA.
  • jest możliwość współdzielenia obiektów biznesowych między oknami i projektami internetowymi.
  • CSLA promuje normalizację zachowania zamiast normalizacji Danych (opuszczanie bazy danych w celu normalizacji danych).

wady:

  • trudności w testach jednostkowych
  • brak oddzielenia obaw(zazwyczaj obiekty biznesowe mają w sobie kod dostępu do danych).
  • jako CSLA promuje normalizację zachowania , zamiast normalizacji danych , a to może skutkować obiektami biznesowymi, które są nazwane podobnie, ale mają różne cele. Może to spowodować pewne zamieszanie i uczucie, że nie używasz ponownie odpowiednio przedmiotów. To powiedziawszy, po podjęciu fizjologicznego skoku, to więcej niż ma sens - wydaje się niewłaściwe układanie obiektów w "stary" sposób.
  • budowanie aplikacji w ten sposób nie jest "w modzie". Możesz walczyć o programistów, którzy są pasjonatami technologia.

3. Po przeczytaniu tego czy CSLA naprawdę nie pasuje do TDD?
Nie znalazłem skutecznego sposobu na zrobienie TDD z CSLA. To powiedziawszy, jestem pewien, że jest wielu mądrzejszych ludzi niż ja, którzy mogli spróbować tego z większym sukcesem.

4. Jakie są moje alternatywy?
Domain-Driven-Design jest w tej chwili coraz większy nacisk (i słusznie - to fantastyczne dla niektórych aplikacji). Istnieje również szereg ciekawych wzorce rozwijające się od wprowadzenia LINQ (i LINQ do SQL, Entity Framework itp.). Książka Fowlers PoEAA , zawiera wiele wzorów, które mogą być odpowiednie dla Twojej aplikacji. Zauważ, że niektóre wzorce są ze sobą konkurencyjne (np. Active Record i repozytorium) i dlatego są przeznaczone do użycia w określonych scenariuszach. Chociaż CSLA nie pasuje dokładnie do żadnego z wzorców opisanych w tej książce, najbardziej przypomina Active Record (chociaż uważam, że jest krótkowzroczne twierdzenie o dokładnym dopasowaniu dla tego wzoru).

5. Jeśli przestałeś go używać lub zdecydowałeś, dlaczego?
Nie do końca polecałem CSLA dla mojego ostatniego projektu, ponieważ uważam, że zakres aplikacji jest zbyt duży dla korzyści, jakie daje CSLA.
Ja bym nie używał CSLA w projekcie www. Uważam, że istnieją inne technologie lepiej dopasowane do budowania aplikacji w tym środowisku.

Podsumowując, podczas gdy CSLA jest czymś innym niż silver bullet, jest to właściwe dla kilka scenariuszy.

Mam nadzieję, że to pomoże!

 72
Author: Brad Leach,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-18 22:32:10

Po przeczytaniu wszystkich odpowiedzi zauważyłem, że sporo osób ma błędne przekonania na temat CSLA.

Po pierwsze, CSLA nie jest ORM . Jak mogę tak powiedzieć? Ponieważ Rockford Lhotka sam wielokrotnie wypowiadał się o tym w wywiadach na podcastach . NET Rocksi Hanselminutes. Poszukajjakiegokolwiek odcinka, w którym Rocky był przesłuchiwany, a on powie to bez żadnych wątpliwości. Myślę, że jest to najbardziej krytyczny fakt dla ludzi, aby zrozumieć, ponieważ prawie wszystkie błędne przekonania na temat CSLA wypływają z przekonania, że jest to ORM lub próby użycia go jako jednego.

Jak wspomniał Brad Leach w swojej odpowiedzi, obiekty CSLA modelują zachowanie, chociaż dokładniejsze może być stwierdzenie, że modelują zachowanie danych, ponieważ dane są z nimi integralne. CSLA nie jest ORM, ponieważ jest całkowicie niezależny od sposobu, w jaki rozmawiasz ze swoim magazynem danych. Powinieneś użyć jakiejś warstwy dostępu do danych z CSLA, być może nawet ORM. (Tak. I now użyj Entity Framework, który działa pięknie.)

Przejdźmy do testów jednostkowych. Nigdy nie miałem żadnych trudności z testowaniem moich obiektów CSLA, ponieważ nie umieszczam kodu dostępu do danych bezpośrednio w moich obiektach biznesowych. Zamiast tego używam jakiejś odmiany wzorca repozytorium. repozytorium jest zużywane przez CSLA, a nie odwrotnie.Zamieniając fałszywe repozytorium na moje testy jednostkowe i korzystając z lokalnego portalu danych, bum!To proste. (Gdy Entity Framework pozwala na wykorzystanie z POCOs, to będzie jeszcze czystsze.) Wszystko to wynika z uświadomienia sobie, że CSLA nie jest ORM. Może pochłonąć ORM, ale sam nim nie jest. Zdrówko.

UPDATE

Pomyślałem, że zrobię jeszcze kilka komentarzy.

Niektórzy mówią, że CSLA jest gadatliwy w porównaniu z LINQ do SQL i tak dalej. Ale tutaj porównujemy jabłka do pomarańczy. LINQ do SQL to ORM. Oferuje pewne rzeczy, których nie ma CSLA, a CSLA oferuje pewne rzeczy, które robi L2S nie, jak Walidacja zintegrowana i n -trwałość warstwy poprzez różne zdalne portale danych. W rzeczywistości, powiedziałbym, że ostatnia rzecz, n - tier wytrwałość, przebija je wszystkie dla mnie. Jeśli chcę używać Entity Framework lub LINQ do SQL przez sieć, muszę umieścić coś takiego jak WCF pomiędzy, a to mnoży pracę i złożoność ogromnie, do tego stopnia, że myślę, że jest to dużo bardziej gadatliwe niż CSLA. (Teraz jestem fanem WCF, REST i SOA, ale używaj go tam, gdzie naprawdę potrzebujesz go, np. gdy chcesz udostępnić usługę osobom trzecim. W przypadku większości aplikacji biznesowych nie jest to naprawdę potrzebne, a CSLA jest lepszym wyborem.) W rzeczywistości, w najnowszej wersji CSLA, Rocky dostarcza WCFDataPortal, którego używałem. Działa świetnie.

Jestem fanemSOLID , TDD i innych nowoczesnych zasad tworzenia oprogramowania i używam ich wszędzie tam, gdzie jest to praktyczne. Ale myślę, że korzyści z CSLA przewyższają niektóre obiekcje tych ortodoksji, a w każdym razie mam udało się zrobić CSLA działa dość dobrze (i łatwo) z TDD, więc to nie jest problem.

 22
Author: Gregory Higley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-03 21:57:12

Tak, ja (um, my) używałem go szeroko do modelowania naszej logiki procesów biznesowych, która była przede wszystkim formami databound w aplikacji Windows forms. Aplikacja była systemem handlu. CSLA jest zaprojektowany tak, aby znajdować się na tej warstwie tuż pod interfejsem użytkownika.

Jeśli myślisz o standardowej złożonej aplikacji biznesowej, możesz mieć formularz z wieloma polami, wieloma regułami dla tych pól( w tym regułami walidacji między polami), możesz wywołać okno modalne, aby edytować jakiś obiekt potomny, możesz chcieć aby móc anulować takie okna dialogowe i powrócić do poprzedniego stanu. CSLA to popiera.

Minusy są takie, że ma trochę krzywej uczenia się.

Kluczową rzeczą do zapamiętania jest użycie CSLA do modelowania interakcji użytkownika z formularzami w niektórych aplikacjach. Najbardziej efektywnym sposobem dla mnie było zaprojektowanie interfejsu użytkownika i zrozumienie jego przepływów, zachowania i zasad walidacji przed zbudowaniem obiektów CSLA. Nie ma projektu interfejsu użytkownika CSLA objects drive.

My również bardzo przydatna jest możliwość używania CSLA business objects server side do walidacji obiektów wysyłanych od klientów.

Mieliśmy również wbudowane mechanizmy do asynchronicznie sprawdzania walidacji przed serwisem internetowym (np. sprawdzania zakresu limitu kredytowego kontrahenta względem master).

CSLA wymusza silną separację między interfejsem użytkownika, BusinessLogic i Persistance, a my napisaliśmy mnóstwo testów jednostkowych przeciwko nim. Może to nie być ściśle TDD, ponieważ jeździsz nim z UI design, to nie znaczy, że nie da się tego przetestować.

Jedyną realną alternatywą jest stworzenie własnego modelu \ business objects, ale wkrótce w końcu implementujesz funkcje, które CSLA oferuje po wyjęciu z pudełka (INotifyPropertyChanged, IDataErrorInfo,PushState, PopState itp.)

 19
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-18 22:50:26

Miałem z tym doświadczenie kilka lat temu. Jest to genialna architektura, ale bardzo złożona, trudna do zrozumienia lub zmiany, i rozwiązuje problem, który większość z nas tworzy aplikacje internetowe niekoniecznie. Został opracowany bardziej dla aplikacji opartych na systemie windows i obsługi wielopoziomowego cofania, z dużym naciskiem na logikę transakcyjną. Prawdopodobnie usłyszysz, że ponieważ aplikacje internetowe są odpowiedzią na żądanie na poziomie strony, jest to niewłaściwe, ale z aplikacjami internetowymi W Stylu AJAX może ten argument nie trzyma tyle wody.

Ma bardzo głęboki model obiektowy i może trochę potrwać, zanim naprawdę owinie się wokół niego twój mózg. Oczywiście wiele może się zmienić w ciągu kilku lat. Chciałbym usłyszeć inne ostatnie opinie.

Biorąc pod uwagę wszystko, nie byłby to mój pierwszy wybór architektury.

 11
Author: Eric Z Beard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-18 21:48:44

Użyłem CSLA dla jednego projektu i to działało świetnie i sprawiają, że rzeczy znacznie prostsze i schludniejsze.

Zamiast mieć zespół piszący obiekty biznesowe w ich własnym stylu, wiemy, że mają wspólny standard pracy przeciwko.

//andy

 11
Author: Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-30 11:35:45

W obronie CSLA, choć zgadzam się z wieloma uwagami, które padły szczególnie w sprawie testów jednostkowych...

Moja firma używała go szeroko w aplikacji do wprowadzania danych Windows Forms, z dużym powodzeniem.

  • to zapewniło po wyjęciu z pudełka funkcjonalność, że nie mieliśmy czasu ani wiedzy, aby napisać sami.
  • ustandaryzował wszystkie nasze obiekty biznesowe, ułatwiając Konserwację i zmniejszając krzywą uczenia się dla naszego nowego deweloperzy.

Ogólnie rzecz biorąc, powiedziałbym, że wszelkie problemy, które to spowodowało, były bardziej niż przechytrzone przez korzyści.

Aktualizacja: co więcej, nadal Używamy go do naszej aplikacji windows forms, ale eksperymenty z używaniem go do innych aplikacji, takich jak strony internetowe, wykazały, że jest to być może uciążliwe, gdy nie potrzebujesz dużej jego funkcjonalności, a teraz badamy lżejsze opcje wagi dla tych scenariuszy.

 8
Author: Simon Keep,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-23 08:56:59

Dołączyłem do zespołu, w którym CSLA jest obowiązkowe. Nie korzystamy z portalu zdalnych danych, co jest jedynym powodem, dla którego mogę wyrazić zgodę na korzystanie z tego frameworka. Nigdy nie wierzyłem w ideę CSLA, więc może dlatego mam z nią tylko problemy, przepraszam.

Kilka kwestii:

Nie potrzebuję blokady drogi między moim kodem a. NET framework, który jest tym, co ten framework dla mnie. Miałem ograniczoną opcję listy obiektów, podczas gdy po prostu musiałem zignorować bogatą listę obiektów w. NET framework.

Ii jest całkowicie niedorzeczne, że mieliśmy te listy tylko do odczytu, a potem nie tylko do odczytu. Więc jeśli musiałem dodać element do listy, musiałem odtworzyć całą listę...mówisz poważnie?

Następnie csla chce zarządzać moim stanem obiektu, który jest w porządku, ale nic nie jest tak naprawdę narażone. Czasami chcę ręcznie zmienić stan obiektu zamiast pobierać go ponownie, co wydaje się być tym, czego chce csla. I w zasadzie kończy się tworzenie wielu właściwości do expose options csla uważał, że nie powinienem mieć bezpośredniego dostępu do.

Dlaczego nie mogę po prostu utworzyć instancji obiektu? W końcu tworzymy statyczne metody, które tworzą instancję obiektu i przekazują go z powrotem...żartujesz sobie?

Sprawdź kod źródłowy frameworka i wygląda mi na to, że kod odbicia jest dla mnie ciężki.

Powody używania csla:

    [17]}prosty Framework. Net jest dla Ciebie zbyt potężny.
  • Twoi programiści nie są doświadczeni i nie mogą pojąć koncepcji wzorców wtedy csla będzie miał prawie wszystkich na tej samej stronie.

    1. nie potrzebuję blokady drogi między moim kodem a. NET framework...Utknąłem z tymi obiektami listy.
 7
Author: Batman Beyond,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-02-22 09:07:48

Zaczęliśmy używać CSLA, ponieważ myśleliśmy, że to pomoże z naszą warstwą modelu. To był rodzaj przesady i w większości teraz używamy klasy SmartDate, tylko dlatego, że jesteśmy już połączeni z biblioteką.

Myśleliśmy, że interfejs walidacji naprawdę pomoże nam egzekwować reguły biznesowe, ale nie działał dobrze z WCF i serializacją(nadal utknęliśmy na wersji 2.0.3.0, więc coś mogło się zmienić).

 6
Author: slolife,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-18 21:34:26

Aby nie brać CSLA z listy, ale przed użyciem, Zbadaj korzyści i upewnij się, że naprawdę mają zastosowanie. Czy twój zespół będzie w stanie poprawnie/konsekwentnie go wdrożyć? Remoting i portal dance potrzebne?

Myślę, że poza całą teoretyczną refleksją, chodzi o czysty/utrzymywalny/rozszerzalny / testowalny kod zgodnie z podstawowymi sprawdzonymi wzorcami.

Policzyłem linie kodu potrzebne w konkretnej domenie projektu przekonwertowanego z CSLA. Między różnymi CSLA objects (readonly+editable+root + list combinations) i ich stored procs zajęło około 1700 linii, natomiast implementacja repozytorium Linq2SQL + zajęła 180 linii. Wersja Linq2SQL składała się głównie z wygenerowanych klas, których zespół nie musi spożywać, aby zrozumieć. I tak, użyłem CodeSmith do wygenerowania części CSLA, ale teraz wierzę w suchy kod z pojedynczymi bitami odpowiedzialności, a implementacja CSLA wygląda teraz dla mnie jak wczorajszy Bohater.

Jako alternatywa I chciałbym zaproponować spojrzenie na Linq2Sql / Entity Framework / NHibernate w połączeniu z wzorcami repozytorium i UnitOfWork. Zobacz http://www.codeplex.com/backgroundmotion

Zdrówko!
 6
Author: Johannes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-06 07:01:39

Nasza firma praktykowała CSLA w niektórych swoich projektach, a niektóre z dotychczasowych projektów pozostają CSLA. Inne projekty odeszły od niej, ponieważ CSLA naruszyła prostą i prostą zasadę OOP: zasadę pojedynczej odpowiedzialności.

Obiekty CSLA są samowystarczalne, np. odzyskują własne dane, zarządzają własnym zachowaniem, ratują się. Niestety oznaczało to, że przeciętny obiekt CSLA ma co najmniej trzy obowiązki-reprezentując model domeny, zawierający reguły biznesowe i zawierające definicję dostępu do danych (nie DAL, ani implementację dostępu do danych,jak wcześniej stwierdziłem / sugerowałem) w tym samym czasie.

 6
Author: Jon Limjap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-22 02:57:25

Używamy CSLA już od ponad pięciu lat i uważamy, że świetnie sprawdza się przy konstruowaniu aplikacji biznesowych. W połączeniu z generowaniem kodu można tworzyć obiekty biznesowe w stosunkowo krótkim czasie i skupić swój wysiłek na meat aplikacji.

 4
Author: mattruma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-23 14:22:51

Używamy CSLA szeroko. Jest kilka korzyści; po pierwsze, uważam, że każdy twórca biznesowy powinien przeczytać książkę Rocky ' ego Lhotki o programowaniu obiektów biznesowych. Osobiście znalazłem go w moich najlepszych 3 najlepszych książkach programistycznych. CSLA jest frameworkiem opartym na tej książce, a korzystanie z niej daje dostęp do bardzo wysokich funkcji, takich jak cofanie na poziomie n, reguły walidacji i architektura skalowalności, zapewniając jednocześnie szczegóły dla Ciebie. Zauważ, że powiedziałem "dostarczając" i nie "ukrywanie się". Odkryłem, że najlepszą częścią CSLA jest to, że pozwala zrozumieć, w jaki sposób wszystkie te rzeczy są zaimplementowane do kodu źródłowego bez konieczności powielania ich samodzielnie. Możesz użyć tak wielu lub kilku funkcji, jak potrzebujesz, ale odkryłem, że pozostając wiernym wzorcom projektowym frameworka, naprawdę trzyma cię z dala od kłopotów. -- Byron

 4
Author: Bob Par,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-28 13:33:45

Jestem nowy w CSLA, ale rozumiem pojęcia i już rozumiem, że to nie jest narzędzie ORM, więc przestań bić tych cholernych bębnów. Są cechy CSLA, które lubię, ale korzystanie z nich wydaje się trochę tak, jakby za kurtyną znajdował się magik. Myślę, że jeśli nie masz nic przeciwko, nie wiedząc o tym, jak to działa, możesz użyć obiektów i działają dobrze.

Istnieje duża krzywa uczenia się dla początkujących i myślę, że byłoby to bardzo korzystne mając 5-15 min. filmy takie jak Microsoft ma dla nauka podstaw. A co powiesz na wydanie książki towarzyszącej z kodem zamiast wydania kodu i poświęcenia miesięcy na wydanie książki? Tylko mówię, Panie Lohtka... Zaczęliśmy budować nasze rzeczy przed książką i cały czas walczyłem. Ale jak mówiłem, jestem w tym nowy.

Użyliśmy CSLA. Dopasowaliśmy nasze obiekty do ich formy, a następnie wykorzystaliśmy 10% tego, co oferował framework. Cofnij poziom obiektu? Nie użyłem go. Większa elastyczność? Nie użyłem go. Skończyło się na tym, że pisaliśmy wystarczająco dużo. / align = "center" bgcolor = "# e0ffe0 " / cesarz Chin / / align = center / Niektórzy programiści "long in the tooth", którzy znają Framework, używali go jako młotka, ponieważ mieli gwóźdź, który wymagał uderzenia. CSLA był w ich pasie i moim zdaniem wielu zwolenników frameworka widzi rzeczy z tej perspektywy.

Myślę, że nasi doświadczeni programiści są szczęśliwi, ponieważ to wszystko ma dla nich sens. Myślę, że jeśli Twoja organizacja nie ma początkujących programistów, a Wy znudzisz się pisaniem wydajnych i prostych obiektów POCO z dobrze uformowanymi wzorami, a następnie do dzieła. Użyj CSLA.

 4
Author: Joe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-13 23:00:40

Używam CSLA jako frameworku obiektu biznesowego dla projektu średniej wielkości. Framework przeszedł długą drogę od dni VB6 i oferuje niezwykłą elastyczność i funkcjonalność "po wyjęciu z pudełka". Mobilne inteligentne obiekty CSLA znacznie ułatwiają tworzenie interfejsu użytkownika. Zgadzam się jednak z innymi, że nie jest to odpowiednie narzędzie w każdej sytuacji. Na pewno jest trochę nad głową, ale także dużo energii. Osobiście z niecierpliwością czekam na użycie światła CSLA z Silverlight.

Plusy:

  • Data technology agnostyk 1
  • Duża baza instalacyjna i to za darmo!!
  • stabilny i logiczny framework
  • Kod dostępu do danych może być w Twoich obiektach lub w oddzielnym zestawie
  • Walidacja i autoryzacja właściwości i obiektów

Cons

  • kod może być dużo do utrzymania 2
  • prawdopodobnie potrzebujesz generatora kodu, aby efektywnie używać
  • krzywa uczenia się. Na struktura obiektów CSLA jest łatwa do uchwycenia, ale zastrzeżenia mogą powodować bóle głowy.


Nie jestem pewien co do test driven design. Nie mam unit test lub test driven design (wstyd mi), więc nie wiem, czy testy jednostkowe są inne niż TDD, ale wiem, że najnowsza wersja frameworka zawiera testy jednostkowe.


1 dobrze, ponieważ technologie dostępu do danych nigdy nie pozostają takie same na długo.
2 to jest coraz lepsze z ostatnich wersje frameworka.

 3
Author: Spirit of '76,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-08 04:54:53

Używam CSLA od vb5, kiedy to był bardziej zbiorem wzorców niż frameworkiem. Ze wstępem of.NET, CSLA przekształcił się w Pełnowymiarowy framework, który przyszedł z dużą krzywą uczenia się. Jednak CSLA odnosi się do wielu rzeczy, które wszyscy programiści biznesowi mają tendencję do pisania się w pewnym momencie (w zależności od zakresu projektu): logika walidacji, logika uwierzytelniania, funkcja cofania, logika brudna itp. Wszystkie te rzeczy dostajesz za darmo z pudełka w jednym ładne ramy.

Jak stwierdzili inni, będąc frameworkiem, zmusza deweloperów do pisania logiki biznesowej w podobny sposób. Zmusza to również do zapewnienia poziomu abstrakcji dla logiki biznesowej, dzięki czemu nie Korzystanie z interfejsu użytkownika, takiego jak MVC, MVP, MVVM, nie staje się tak ważne.

W rzeczywistości, chciałbym argumentować, że powodem, dla którego tak wiele z tych wzorców UI są tak hyped up dzisiaj (w świecie Microsoftu) jest to, że ludzie robią rzeczy niewiarygodnie źle przez tak długi czas (tj., używając DataGrids w interfejsie użytkownika, rozsypując swoją logikę biznesową wszędzie. tisk tisk). Zaprojektuj swoją średnią warstwę (logikę biznesową) poprawnie od samego początku, możesz ponownie użyć średniej warstwy w dowolnym interfejsie użytkownika. Win Form, ASP.NET/MVC, serwis WCF, WPF, Silverlight**, serwis Windows,....

Ale poza tym, ogromną wygraną dla mnie była wbudowana zdolność do skalowania. CSLA używa wzorca proxy, który można konfigurować za pomocą pliku konfiguracyjnego. Pozwala to obiektom biznesowym tworzyć zdalne połączenia z serwera na serwer, bez konieczności pisania jednego kodu. Dodawanie większej liczby użytkowników do systemu? Nie ma problemu, wdrożyć CSLA business objects na nowym serwerze aplikacji, dokonać zmiany wpisu pliku konfiguracyjnego i BAM!! Natychmiastowe potrzeby skalowalności spełnione.

Porównaj to z używaniem DTO, przechowywaniem logiki biznesowej na kliencie (niezależnie od klienta, który może być) i koniecznością pisania każdej z własnych metod CRUD jako metod usługowych. Rany!!! Nie mówię, że to złe podejście, ale ja nie chciałbym tego robić. Nie, gdy istnieją ramy, które zasadniczo robią to za mnie.

Powtórzę to, co mówili inni, że CSLA nie jest ORM. CSLA zmusza cię do dostarczania danych obiektom biznesowym. Nie obchodzi ich, skąd masz swoje dane. Za pomocą ORM można dostarczać dane swoim obiektom biznesowym. Możesz również użyć raw ADO.NET, inne usługi (RESTFUl, SOAP), arkusze kalkulacyjne excel, mogę dalej tutaj.

Jeśli chodzi o twoje poparcie dla TDD, ja nigdy nie próbowałem używać tego podejścia z CSLA albo. Zastosowałem podejście, w którym modeluję mój średni poziom (Ala business objects) za pomocą diagramów klas i sekwencji, najczęściej pozwalając na dyktowanie przypadków użycia, ekranu i/lub projektowania procesu. Może trochę stara szkoła, ale UML zawsze służył mi bardzo dobrze w moich działaniach projektowych i rozwojowych. Z powodzeniem projektowałem i rozwijałem bardzo duże i skalowalne aplikacje, które są używane do dziś. I dopóki WCF RIA nie dojrzeje, będę kontynuował użyj CSLA..

* * with some work around

 3
Author: Aaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-05 06:09:21

Wiele osób zaleca używanie generowania kodu z CSLA. Polecam sprawdzenie naszego zestawu obsługiwanych szablonów, ponieważ znacznie zwiększą one zwrot z inwestycji.

Dzięki - Blake Niemyjski (Autor CodeSmith CSLA Templates)

 3
Author: Blake Niemyjski,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-08-05 16:11:14

Użyłem go do projektu kilka lat temu. Ale kiedy projekt został zakończony, nie mogłem nikomu powiedzieć, co CSLA zrobił dla mnie. Jasne, odziedziczyłem po jego klasach. Ale udało mi się usunąć ten spadek z prawie wszystkich klas bez restrukturyzacji. Nie przydały nam się rzeczy N-Tier. Cofanie na poziomie n było tak powolne, że nie mogliśmy go użyć. Więc myślę, że w końcu to tylko pomogło nam modelować nasze zajęcia.

Powiedziawszy to, inne drużyny zaczęły go używać (po strasznej próbie zespołu stworzyć własny framework). Więc musi być tam coś wartościowego, bo wszyscy są mądrzejsi ode mnie!

 2
Author: Joe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-23 14:16:36

Jestem facetem od PHP. Kiedy zaczęliśmy budować aplikacje na stosunkowo dużą skalę z PHP, zacząłem badać wiele frameworków aplikacji i ORMs, głównie w świecie PHP, a następnie w Javie i. NET. powodem, dla którego przyjrzałem się frameworkom Java i. NET, było nie ślepe używanie jakichkolwiek frameworków PHP, ale najpierw spróbowałem zrozumieć, co tak naprawdę się dzieje i jakie są architektury na poziomie korporacyjnym.

Ponieważ nie używałem CSLA w realnej aplikacji, nie mogę skomentuj jego plusy i minusy, ale mogę powiedzieć, że Lhotka jest jednym z niewielu myślicieli -nie mówię tylko ekspertem - w dziedzinie architektury oprogramowania. Chociaż nazwa Domain Driven Design jest ukuta przez Erica Evansa -swoją drogą jego książka jest również świetna i pokornie radzę ją przeczytać - Lhotka stosowała domain driven design od lat. Mimo to, cokolwiek myślisz o jego ramach, skorzystaj z jego głębokich pomysłów w tej dziedzinie.

Można znaleźć jego rozmowy na dotnetrocks.com/archives.aspx oraz filmy z dnrtv.com/archives.aspx (Szukaj Lhotki).

@Byron Jakie są pozostałe dwie książki, które Ci się podobały?

 2
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-10 04:12:42

John,

Mamy zespoły pracujące w CSLA od 2 do 3.5 i uznaliśmy, że jest to świetny sposób na zapewnienie spójnego frameworka, więc wszyscy deweloperzy robią to w ten sam sposób. To świetnie, że większość kodu o niskiej wartości jest generowana i wiemy, że kiedy uruchamiamy testy jednostkowe, działają one po wyjęciu z pudełka dla wszystkich rzeczy CRUD. Przekonujemy się, że nasze TDD naprawdę wchodzi w grę z refaktoryzacją, którą wykonujemy przy projektowaniu, a CSLA nie przeszkadza nam w tym.

Chris

 2
Author: ChrisSlee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-06 14:05:59

Ostatnio próbowałem używać CSLA w czasach epoki kamienia łupanego VB6. Z perspektywy czasu byłoby to bardziej skuteczne, gdybym użył generowania kodu. Jeśli nie masz skutecznych narzędzi do generowania kodu i strategii dopasowania ich do swojego obiegu pracy, powinieneś unikać takich frameworków jak CSLA, w przeciwnym razie funkcje, które otrzymujesz z CSLA, nie nadrobią czasu, który spędzasz na pisaniu n wierszy kodu na tabelę, n wierszy kodu na kolumnę itp.

 2
Author: MatthewMartin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-08 10:51:59

I ' ve used CSLA.NET w kilku projektach, to było najbardziej skuteczne w aplikacji Windows forms, która ma bogate bazy danych compatabilities (które asp.net aplikacji nie ma).

Głównym problemem jest obsługa TDD, jak ludzie wskazywali, jest to spowodowane zachowaniem czarnej skrzynki dla funkcji Dataportal_XYZ i niemożnością umożliwienia nam wyśmiewania obiektów danych. Podjęto wysiłki, aby obejść ten problem z to jest najlepszym podejście

 2
Author: armannvg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-17 12:44:03

Chciałem go użyć, ale mój ówczesny główny programista miał pomysł, że za dużo "magii" jest w to zamieszane...

 1
Author: leppie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-23 14:19:23

CSLA jest najlepszym frameworkiem aplikacji, jaki istnieje. Rocky LHotka jest bardzo, ale bardzo inteligentnym facetem. Pisze historię rozwoju oprogramowania jak Martin Fowler, David s Platt, ale moimi ulubionymi pisarzami są Rod Stephens, Mathew mcDonalds Jeff Levinson thearon willis i Louis Davidson alias dr sql. :-) Plusy: wszystkie wzorce projektowe są stosowane. Wady: trudne do nauczenia, i kilka próbek.

 0
Author: Luis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-03-02 06:51:27