WCF с ASP.NET MVC - справочные проекты - PullRequest
1 голос
/ 05 сентября 2011

в проекте ASP.NET MVC уровень доступа к данным будет реализован в WCF.Причина в том, что в будущем эти службы WCF будут использоваться несколькими другими клиентскими приложениями.

Могу ли я узнать, есть ли какие-нибудь хорошие эталонные проекты, на которые я могу взглянуть.Важные вещи, на которые мне нужно взглянуть:

  • Как структурированы проекты
  • Любые рекомендации, которым необходимо следовать
  • Как объекты домена /POCO, DTO, ViewModels должны быть организованы и общаться между собой
  • Подходы модульного тестирования

Все ваши предложения / советы по этим вопросам высоко ценятся

Большое спасибо.

1 Ответ

2 голосов
/ 05 сентября 2011

Вы бы поступили точно так же, как если бы вы делали любое другое приложение 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);
    }
}

Довольно стандартные вещи, и именно так должны выглядеть ваши контроллеры независимо от того, где находятся данныепроисходит от.Как вы можете видеть, если вы всегда разрабатываете свои приложения с абстракциями, вы можете очень легко переключить реализацию этого IProductsService, который будет внедрен в ваши контроллеры, и с точки зрения приложения ASP.NET MVC это даже не будет иметь никакого значения.Модели представлений должны быть частью веб-интерфейса, поскольку они тесно связаны с представлениями.

Контракты на обслуживание и модели доменов переходят на уровень обслуживания.

...