Pergunta

Eu estou lendo A Arquitetura Microsoft .Net Soluções para a Empresa e eu tento figura de um par de coisas sobre o Apresentador e a Camada de Serviço.

Primeiro, o meu Apresentador precisa chamar métodos que residem na Camada de Serviço, como initialize(), save (), etc.Mas onde eu colocar uma referência para a camada de serviço?Deve ser em nível de classe no Apresentador, ou deve definir um novo serviço no apresentador métodos de si?

Segunda - isso não é muito claro no livro - é assim como o processamento do Apresentador para a Camada de Serviço funciona?:

public void ProcessPrediction()
    {
        //Get the data from the View
        string selectedForPolePosition = predictionPageView.DriverPolePosition;
        string selectedForSecondPosition = predictionPageView.DriverSecondPosition;
        string selectedForThirdPosition = predictionPageView.DriverThirdPosition;
        string selectedForFourthPosition = predictionPageView.DriverFourthPosition;
        string selectedForFifthPosition = predictionPageView.DriverFifthPosition;
        string raceTitle = predictionPageView.RaceTitle;

        //Prepare for sending to the Service Layer
        PredictionDTO prediction = new PredictionDTO();
        prediction.RaceTitle = raceTitle;
        //More Filling of the DTO here....
        //...
        //...

        IPredictionService predictionService = new PredictionService();
        predictionService.ProcessPrediction(prediction);
    }
Foi útil?

Solução

 IPredictionService predictionService = new PredictionService();

Isso realmente vai depender de uma série de fatores:

  • Duração do serviço e o tempo de vida do apresentador
  • Se você estiver usando qualquer ferramenta de DI
  • Se o serviço precisa ser descartado
  • Se o serviço tem qualquer limite de tempo inactivo (por exemplo, se é um O WCF proxy)

Então, em essência, ele não é necessariamente um projeto arquitetônico, é mais decisão de design.

Se você usar um DI ferramenta, você teria:

 IPredictionService predictionService = diContainer.Resolve<IPredictionService>();

Ou, melhor ainda, nenhum dos acima e simplesmente declará-lo como propriedade e DI ferramenta pode preenchê-lo, quando ele cria o apresentador.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top