프로젝트 (또는 건축가) 요구하지 않는 한이 앱에 액세스하십시오 서비스 계층의 모든 방법 , 나는 WCF를 불필요하게 사용하지 않으려 고 노력할 것이다. (웹 서버와 백엔드 사이의 모든 데이터는 성능, 데이터의 직렬화와 같은 함축적 의미를 가지며 잠재적으로 수명을 제한한다는 것을 의미한다. 데이터베이스 연결 및 트랜잭션, 지연로드 등을 막을 수 있습니다). 동의하는 경우 비즈니스 계층의 모든 액세스 가능한 인터페이스가 인터페이스에 노출되어 있는지 확인한 다음 BLL 인터페이스를 직접 사용하거나 컨트롤러에 주입하는 것이 좋습니다.
"Model" MVC에서주의해야합니다. - ASP NET MVC는보다 논리적 인 도메인 모델을 나타내는 "엔터티"와 달리 표현 계층에 고유하며 뷰와 컨트롤러간에 전달되는 ViewModels를 권장합니다. 비즈니스 논리에서 사용되며 EF 나 NHibernate와 같은 ORM을 사용하여 데이터 지속성에 연결될 수 있습니다. MVC 프로젝트 템플릿은 View 또는 Controller가 아닌 모든 것을 "Model"에 집어 넣습니다. isn't necessary very helpful.
- 클라이언트 측에서 백 엔드 엔티티를 공유하거나 작업을 수행할지 여부를 선택합니다 : 당신이 WCF 서비스 계층을 통해 BLL에 액세스하도록 선택하는 경우
그러나 여전히 할 몇 가지 디자인 결정이 대신 프록시 된 엔티티를 사용하십시오.
- 컨트롤러에서 WCF 서비스 프록시를 직접 사용할지 삽입할지 선택하거나 다른 외관 레이어 (예 : CAB에서이 ServiceAgent를 호출)를 생성할지 여부를 선택하십시오. 후자는 인터페이스 변경을 수용하기 위해 SOA 측과 클라이언트 측을 따로 떼어 놓은 팀이나 벤더가있는 경우 의미가 있습니다.