2013-08-24 3 views
0

C#/Net/ASP.NET MVC 배경에서 스칼라/Play2.1.3을 배우고 있습니다.Play framework SOLID 원칙

기본적으로 의존성 삽입 지원이없는 이유는 무엇입니까?

Play 샘플에서는 모든 데이터 액세스 방법이 도메인 모델 클래스에서 정적입니다. 그들은 주사 대신에 공장을 사용합니다. 유닛 테스팅을 위해 데이터 액세스 메소드를 모의하고 싶다면 어떻게해야할까요?

즉시 사용할 수있는 상위 수준의 ORM이 없습니다. 사실 그들은 ORM을 사용하지 못하게합니다! SQL DB에 관해서는 조인을 마지막으로 기록 할 때 기억하지 못하는 조인을 다시 작성해야한다고 생각할 수 없습니다. 뒤로 물러서 아닌가?

저는 Play 프레임 워크 (완전히) IMO에서 관찰되지 않는 SOLID 원칙을 사용하는 방법을 배웠습니다.

다른 프레임 워크를 사용하는 것이 좋습니다.

+0

DI를 설정하고 그 정적 컨트롤러 메소드를 제거하는 것은 꽤 쉽습니다. 나는 그들이 당신에게 무언가를위한 특정 틀을 사용하도록 강요하지 않으며 자신을 선택할 수있게 해주는 것이 좋다고 생각합니다. 프로젝트에서 더 이해가된다고 생각 될 때 문서가 당신에게 낙심한다고 말하면 그냥 듣지 마라. – Kapep

+0

그러나 내가 Play (또는 다른 것)를 처음 접했을 때 제작자의 가이드 라인과 권장 사항을 따르는 것이 더 나은가? –

+1

물론 당연히 가이드 라인을 따라야합니다. 기본 설정의 일부 항목은 _every_ 상황에 대한 최상의 솔루션 일 필요는 없습니다. DI가 좋은 예입니다. 제가 말하고자하는 것은 문서에서 권장하는 도구와 프레임 워크에 대한 대안을 찾는 것이 좋습니다. – Kapep

답변

1

맞습니다. 대부분의 샘플은 의존성 주입을 사용하지 않습니다. 그러나 2.1 버전 이후로, 컨트롤러와 그 의존성을 주입하는 것이 가능합니다.

종속성 삽입의 경우 dochow to unit test (마지막 단락)을 확인하십시오.

정적 호출이 많기 때문에 일부 정적 참조로 끝날 수 있으며 코드를 단위 테스트 할 수 없습니다.

하지만 Play는 훌륭한 프레임 워크라고 생각합니다. 팀은 점점 더 많은 프레임 워크를 모듈화하여 SOLID 원칙에 대해 더 낫고 나아질 것입니다.

+0

이제 프로덕션을위한 준비가 되셨습니까? 프로덕션에서 사용할 수 있습니까? 아니면 더 성숙해질 때까지 기다려야합니까? –

+2

예, 제작 준비가되었습니다. 예를 들어 [Linked In] (http://engineering.linkedin.com/play/play-framework-linkedin)에서 사용합니다. –