2012-02-23 4 views
1

내 개발 팀은 프로그래밍을 단순화하기 위해 .NET에서 사용할 수있는 다양한 프레임 워크를 평가 중입니다. 그 중 하나는 CSLA입니다. CSLA가 Spring.net이나 Windsor와 같은 의존성 주입 프레임 워크와 함께 사용되는 이점을 누릴 지 여부에 대해서는 다소 혼란스러워합니다. ORM 임무를 처리하기 위해 Entity Framework와 같은 두 개의 DI 프레임 워크 중 하나를 결합하면 CSLA를 모두 사용하는 필요성이나 이점을 무효화 할 수 있습니까?CSLA를 의존성 주입 프레임 워크와 함께 사용해야합니까?

저는이 모든 프레임 워크에 대해 다양한 수준의 이해를하고 있으며 엔터프라이즈 아키텍처와 객체 디자인에 가장 큰 이점을 줄 수있는 큰 그림을 얻으려고합니다.

감사합니다.

답변

3

CSLA는 비즈니스 엔티티를 생성하기위한 프레임 워크이므로 IoC 컨테이너 또는 ORM과는 별도로 우려 사항이 있습니다. 엔터프라이즈 응용 프로그램에서는 세 가지 모두의 이점을 고려해야합니다.

특히 모델에 데이터 바인딩, 더티 검사, N 레벨 실행 취소, 유효성 검사 및 비즈니스 규칙뿐만 아니라 n 계층의 쉬운 구성을 허용하는 데이터 포털 구현을 원하면 CSLA를 고려해야합니다 배포.

+0

개체 모델에서 데이터 바인딩이 유용 할 수있는 방법에 대해 자세히 설명 할 수 있습니까? 모델링되는 실제 객체에서 바인딩을 분리하는 것이 가장 좋지 않겠습니까? 우리 팀의 특별한 상황에 대해서는 CSLA를 주로 SOA 아키텍처로 사용하고 CSLA는 데이터 바인딩이 상주 할 것으로 기대하는 클라이언트 측이 아니라 서비스 측에 있다고 생각했습니다. 물론 데이터 바인딩 사용에 대한 오해는 물론 CSLA의 큰 측면과 이점을 간과 할 수도 있습니다. 당신의 도움을 주셔서 감사합니다! – Derek

+0

데이터 바인딩은 MVVM 디자인 패턴이 널리 사용되는 WPF/Silverlight/Windows Phone 7 애플리케이션을 빌드하고 뷰 업데이트가 데이터 바인딩을 통해 수행되므로 뷰의 변경 사항이 모델에 영향을 미치고 모델 변경이 전망. Rocky의 CSLA 속성은 데이터 바인딩을 지원하므로 모델에 INotifyPropertyChanged를 구현할 필요가 없습니다. 이것은 CSLA의 가장 큰 이점은 아니지만 유용합니다. – devdigital

+0

알았습니다! 위대하고 유용한 답변을 주셔서 감사합니다! – Derek

0

짧은 대답 : 예.

긴 대답 : 긴장된 작업과 몇 가지 실험이 필요하지만 CSLA를 근본적으로 손상시키지 않고도 수행 할 수 있습니다. StructureMap과 저장소 패턴을 사용하여 작동하는 프로토 타입을 작성하고 the BuildUp method of Setter Injection을 사용하여 CSLA 내에 주입했습니다. here과 비슷한 메서드를 사용하여 개체를 serialize 할 때 내 비즈니스 개체가 다시 주입되도록했습니다.

또한 StructureMap의 레지스트리 기본 클래스를 사용하여 내 구성을 프레젠테이션, CSLA 클라이언트, CSLA 서버 및 CSLA 전역 설정으로 구분합니다. 이렇게하면 Visual Studio의 링크 된 파일 기능을 사용하여 CSLA 서버와 CSLA 글로벌 구성 파일을 서버 측 데이터 포털에 포함 할 수 있으며 구성은 항상 두 위치에서 동일합니다. 이는 CSLA의 데이터 포털 구성 설정을 2 단계에서 3 단계로 변경할 수 있음을 보장하기위한 것입니다.

어쨌든, DI를 사용하는 데있어서의 단점이있는 잠재적 인 이점에 대해서는 여전히 무게가 있습니다. 그러나 지금까지는 고급 사용법을 사용하는 것에 회의적 이었지만 테스트가 훨씬 쉬울 것이므로 사용 방향에 기대고 있습니다. 차단 (interception)과 같은 DI의 특징. Mark Seemann이 책 Dependency Injection in .NET을 읽고 인터넷에서 많은 잘못된 정보가 있기 때문에 DI를 사용하는 올바른 방법과 잘못된 방법을 이해하는 것이 좋습니다.