다른 ASP.NET MVC 응용 프로그램을 수행하는 경우와 완전히 똑같을 것입니다. WCF 서비스를 호출하는 리포지토리의 구현을 제공하면됩니다.
public interface IProductsService
{
IEnumerable<Product> GetProducts();
}
Product
및 IProductsService
당신의 WCF 서비스에서 오는 도메인 객체 : 당신이 당신의 서비스를 가져올 때 그러니까 기본적으로 저장소 인터페이스를 가지고 작업 계약을 수 있습니다. 이 인터페이스의 구현에서는 호출을 서비스 자체에 위임합니다. 지금까지 응용 프로그램의 나머지 부분에 관한 한, 당신의 컨트롤러는 정말 그들이 약하게 결합으로 상관하지 않습니다
public class ProductsController: Controller
{
private readonly IProductsService _productsService;
public ProductsController(IProductsService productsService)
{
_productsService = productsService;
}
public ActionResult Index()
{
var products = _productsService.GetProducts();
var productsVm = Mapper.Map<IEnumerable<Product>, IEnumerable<ProductViewModel>>(products);
return View(productsVm);
}
}
꽤 표준 물건과 당신의 컨트롤러가 데이터의 출처에 상관없이 같이하는 방법입니다 . 추상화를 통해 항상 응용 프로그램을 설계하는 경우 알 수 있듯이 컨트롤러와 ASP.NET MVC 응용 프로그램 관점에서 주입되는 IProductsService
의 구현을 매우 쉽게 전환 할 수 있으므로 아무런 차이가 없습니다. 보기 모델은보기에 강하게 묶여 있기 때문에 웹 UI의 일부 여야합니다.
서비스 계약과 도메인 모델은 서비스 계층으로 이동합니다.
내 두 센트는 DAL이 아닌 WCF를 통해 BL을 사용할 수 있어야합니다. –