카테고리 없음

[씨#] Entity Framework 4 및… DTO와 함께 WCF 서비스를 사용하십니까?

행복을전해요 2021. 1. 12. 06:51

"순수한 방법"이 무엇인지 정의하지 않으면 대답하기 어렵습니다. SOA 순수 또는 WCF 순수를 말하는가?

WCF 프록시는 서비스 계약에서 비즈니스 논리를 가져 오지 않기 때문에 이미 DTO입니다. WCF에서 생성 된 프록시 클래스 위에 또 다른 DTO 계층을 만드는 것은 중복 된 것처럼 보입니다.

대답하고 싶은 가장 큰 질문은 "이 솔루션의 SOA는 무엇입니까?"입니다. SOA를 준수하려는 경우 서비스 경계를 ​​넘어 POCO 엔티티를 공유 할 수 없습니다. SOA는 서로 다른 계약에 관한 것입니다.

모든 SOA 기반으로 이동하면 웹 계층이 대부분의 시간에 작업 할 클래스가 어리석은 프록시이기 때문에 많은 기능을 잃게됩니다. 많은 논리를 반복해야하며 MVC 2가 제공하는 "메타 데이터, 구성에 대한 규칙"기능을 잃어 버렸습니다.

SOA 전문 용어를 파쇄기에 넣으면 ( http://soafacts.com/ ) 계층간에 비즈니스 논리 및 메타 데이터 정보를 공유하는 데 훨씬 더 쉽게 시간을 할애 할 수 있습니다. 웹 서비스의 유일한 소비자가 본인 인 경우이 방법이 최선의 선택 일 것입니다.

여기에서 DTO를 사용하여 POCO 엔터티 대신 유선을 통해 전송할 수 있습니다. 유일한 단점은 다시 반복되는 논리와 아무것도하지 않는 많은 보일러 플레이트 의식 코드입니다. 프로젝트의 크기에 따라 다릅니다. 작다면 DTO는 잊어 버리세요. 20 만 명의 개발자가 20 만 LoC로 작업한다면 DTO는 만들 가치가있을 것입니다.

-------------------

jfar가 말했듯이 그것은 당신이 서비스를 소비하는 유일한 사람이 될 것인지 아니면 프레젠테이션 계층이 당신만을위한 것인지에 달려 있습니다.

나중에 수행하고 서비스를 사용하는 경우에만 wcf 서비스 경계를 ​​넘어 POCO를 직렬화 할 수 있습니다. 이것은 내가 최근에 한 일이며 작동시키는 것에 대한 블로그 게시물 을 작성했습니다. 이렇게하면 앱 계층과 프레젠테이션 계층에서 동일한 엔터티를 사용할 수 있습니다.

도움이 되었기를 바랍니다.

-------------------

EF와 함께 WCF를 사용할 때 DTO를 권장하는 가장 강력한 이유는 EF 데이터베이스 우선 클래스가 구현 종속성을 프록시 클래스로 끌어 오기 때문입니다. POCO 클래스와 함께 코드 우선을 사용하는 경우 구현 종속성이 없어야합니다.

POCO 클래스 만 반환하고 생성 된 프록시 클래스를 자세히 살펴보십시오. EF 인프라의 일부인 클래스에 아무것도 없는지 확인하십시오. 프록시 클래스가 깨끗한 경우 모든 설정이 완료되어야합니다.



출처
https://stackoverflow.com/questions/2006142