8

저는 .NET 4.0을 사용하여 Silverlight, RIA Services 및 Entity Framework를 실험했습니다. 그 스택이 곧 출시 될 프로젝트에서 사용하기에 적합한 지 알아 내려고합니다. 이러한 기술이 애플리케이션 개발에 매우 ​​생산적 일 수있는 것 같지만이 스택의 상단에있는 애플리케이션을 어떻게 구성해야할지 결정하는 데 어려움을 겪고 있습니다.RIA 서비스 계층에 비즈니스 로직이 얼마나 포함되어 있습니까?

주요 문제는 대부분의 데모에서 비즈니스 로직의 대부분이 RIA Services 도메인 서비스 클래스에서 DataAnnotations 및 사용자 정의 유효성 검사로 끝나는 것입니다. 이것은 나에게 부적절한 것 같습니다. 도메인 서비스는 기본적으로 클라이언트에게 정보를 푸시하기 쉽게 만드는 영광스러운 웹 서비스입니다. 그러나 내가 본 것의 대부분은 도메인 서비스를 응용 프로그램의 비즈니스 로직의 주요 소스로 설정하는 것 같습니다.

그래서, 내 질문 :

  • 이 스택을 사용하여 응용 프로그램의 비즈니스 로직 (규칙, 검증, 행동, 권한 부여)에 가장 적합한 위치는 무엇입니까?
  • 이 스택을 사용하기 위해 아키텍처 수준에서 게시 된 지침이 있습니까?

내 질문은 크고 복잡하며 수명이 긴 응용 프로그램에 관한 질문입니다. 분명히 단지 몇 개의 스크린만을 사용하는 경우에는 이것이 덜 우려됩니다.

편집 : 내가 언급하는 의미가 다른 것은 클라이언트에 밀려 분명히 도메인 서비스 클래스 바보 만들 수 있습니다,하지만 당신은 (예를 들어, 검증)을 자동으로 자료 엔티티 많은 정보를 잃을 것입니다. 그런 다음 RIA 서비스를 사용하는 데 문제가 있습니까?

+1

나는 똑같은 것을 알고 싶다! RIA 서비스의 모범 사례에 대한 내 머리를 깎기 위해 정말 고심하고 있습니다. 너무 많은 상세한 비즈니스 애플리케이션 예제가없는 것처럼 보입니다. – Banford

+1

나는 아직도 나 자신을 위해 이것을 알아 내고있다. 하나는 생각했지만 심지어 DomainService를 가능한 한 바보처럼 만들었더라도 변경 내용을 일괄 적으로 서버에 제출하고 클라이언트 측에서 변경 내용을 추적하기 위해 DomainContext를 쉽게 사용할 수 있습니다. 이 IMO는 RIA 서비스를 여전히 가치있게 만듭니다. – joshuapoehls

+0

좋은 지적 digiduck. 확실히 뭔가 가치가 있습니다. – RationalGeek

답변

1

Google 팀에서 RIA 스택 위에 Silverlight 앱을 구현하는 중입니다. 우리는 RIA 엔터티 위에 도메인 모델을 구축하기로 결정했습니다. 또한 UI 상호 작용을 모델링하기 위해 MVVM 패턴을 따르기로 선택했습니다.

지금까지, 나는 다음과 같은 이점을 발견했습니다

  1. 도메인 클래스 복잡한 검증을 포함하여 비즈니스 로직을 넣을 수있는 좋은 장소입니다.
  2. 도메인 클래스는 RIA 엔터티 및 컨텍스트를 데이터 저장소의 인터페이스로 사용합니다.
  3. 도메인 클래스는 비즈니스 관심사를 모델로하며 RIA 엔터티와 일대일 관계가 필요하지 않습니다.
  4. 간단한 UI 유효성 검사는 ViewModels에 살 수 있습니다.

또 다른 주목할 점은 동시성에 대한 자체 ID 맵을 구현하고 RIA 컨텍스트에 대한 더티 추적을 푸시했음을 나타냅니다.

실제로이 아키텍처는 약간의 코딩 작업이 필요하지만 가독성과 유지 보수성으로 시간을 절약합니다. 간단한 CRUD 애플리케이션이라 할지라도 나는 이러한 관행을 따를 것이다. 문제 공간을보다 정확하게 나타내는 도메인 모델을 구축 할 수있는 능력이 갖는 것이 큰 장점입니다.

0

일반적으로이 기술로 작업하는 것보다 기술로 작업하는 것이 더 생산적입니다.

비즈니스 로직이 DataAnnotations 및 사용자 정의 유효성 검사에서 종료된다고 말하면 시스템의 첫 번째 버전에서 비즈니스 생산성이 "최고의"장소가 될 수 있습니다.

복잡한 기술을 사용하면 Silverlight 응용 프로그램과 RIA 서비스 사이에 별도의 비즈니스 계층이 생길 수 있으므로이 기술은 빠른 속도로 응용 프로그램을 구축 할 때 강력합니다.

아직 실제 빌드를 시도하지는 않았지만 잠시 사용 해본 후에 그 해답을 알고 있습니다.

관련 문제